diff --git a/.gitignore b/.gitignore
index cd531cf..ebdd23d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,54 +1,14 @@
-# ---> C
-# Prerequisites
-*.d
-
-# Object files
-*.o
-*.ko
-*.obj
-*.elf
-
-# Linker output
-*.ilk
-*.map
-*.exp
-
-# Precompiled Headers
-*.gch
-*.pch
-
-# Libraries
-*.lib
-*.a
-*.la
-*.lo
-
-# Shared objects (inc. Windows DLLs)
-*.dll
-*.so
-*.so.*
-*.dylib
-
-# Executables
-*.exe
-*.out
-*.app
-*.i*86
-*.x86_64
-*.hex
-
-# Debug files
-*.dSYM/
-*.su
-*.idb
-*.pdb
-
-# Kernel Module Compile Results
-*.mod*
-*.cmd
-.tmp_versions/
-modules.order
-Module.symvers
-Mkfile.old
-dkms.conf
-
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..686003e
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+Container
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..245a82c
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..5e80d59
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..c83a369
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..9c83340
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..3378229
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..43ed7fb
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..3543521
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..44062f4
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,140 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+ buildFeatures {
+ dataBinding = true
+ }
+
+ defaultConfig {
+ applicationId "qianmu.container"
+ minSdkVersion 22
+ targetSdkVersion 24
+ versionCode 6
+ versionName "V2.0.7.26"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
+
+ ndk { abiFilters "armeabi-v7a" }
+
+ javaCompileOptions {
+ annotationProcessorOptions {
+ arguments = [AROUTER_MODULE_NAME: project.getName()]
+ }
+ }
+
+ lintOptions {
+ checkReleaseBuilds false
+ abortOnError false
+ }
+
+ signingConfigs {
+ android_studio_app {
+ keyAlias 'key0'
+ keyPassword '123456'
+ storeFile file('keystore.jks')
+ storePassword '123456'
+// v2SigningEnabled false
+
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ signingConfig signingConfigs.android_studio_app
+// signingConfig signingConfigs.release
+ }
+ debug {
+ signingConfig signingConfigs.android_studio_app
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ }
+
+ packagingOptions {
+ exclude 'AndroidManifest.xml'
+ }
+
+ sourceSets.main {
+ jni.srcDirs = []
+ jniLibs.srcDir "libs"
+ }
+
+ repositories {
+ flatDir {
+ dirs 'libs'
+ }
+
+ }
+
+}
+
+configurations.all {
+ resolutionStrategy {
+ force 'com.android.support:support-v4:27.1.1'
+ }
+}
+
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation fileTree(include: ['*.aar'], dir: 'libs')
+ implementation 'androidx.recyclerview:recyclerview:1.1.0'
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation files('libs\\ymeeting.jar')//亿晟
+ implementation project(path: ':playerview')
+ implementation files('libs\\Msc.jar')
+ implementation files('libs\\zckjAPI-2.2.jar')//卓策
+ implementation files('libs\\jna-min.jar')
+ implementation files('libs\\toolbox_kit.jar')//灰度主板 罗湖寻车机
+ implementation files('libs\\shockman.jar')//指路机
+ implementation files('libs/signway.jar')//欣威视通
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+ implementation 'com.squareup.retrofit2:retrofit:2.5.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.1.0'
+ implementation 'com.lzy.net:okgo:3.0.4'
+ implementation 'org.greenrobot:eventbus:3.1.1'
+ implementation 'com.alibaba:arouter-api:1.5.0'
+ implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'jp.wasabeef:glide-transformations:3.0.1'
+ annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'
+ implementation 'org.java-websocket:Java-WebSocket:1.5.1'
+ implementation 'com.google.android.exoplayer:exoplayer:2.11.4'
+
+ implementation 'com.yanzhenjie.andserver:api:2.0.4'
+ annotationProcessor 'com.yanzhenjie.andserver:processor:2.0.4'
+ implementation files('libs/java-unrar-1.7.0-8.jar') // rar解压
+ implementation files('libs/commons-compress-1.19.jar')
+ implementation 'com.loopj.android:android-async-http:1.4.11'
+
+ implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
+ implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
+ implementation 'org.bouncycastle:bcpkix-jdk15on:1.59'
+ implementation 'com.android.support:support-v4:30.4.1'
+ //加载json动图
+ implementation 'com.airbnb.android:lottie:4.2.2'
+
+ implementation 'com.jakewharton:process-phoenix:2.1.2'//软件重启
+
+ implementation 'cn.hutool:hutool-all:5.8.26'
+
+ //清除页面缓存
+ debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.3'
+ releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
+
+ //检测内存泄漏
+// debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
+
+}
diff --git a/app/keystore.jks b/app/keystore.jks
new file mode 100644
index 0000000..2616050
Binary files /dev/null and b/app/keystore.jks differ
diff --git a/app/libs/Msc.jar b/app/libs/Msc.jar
new file mode 100644
index 0000000..e4ed582
Binary files /dev/null and b/app/libs/Msc.jar differ
diff --git a/app/libs/QtAndroid.jar b/app/libs/QtAndroid.jar
new file mode 100644
index 0000000..c59e111
Binary files /dev/null and b/app/libs/QtAndroid.jar differ
diff --git a/app/libs/QtAndroidBearer.jar b/app/libs/QtAndroidBearer.jar
new file mode 100644
index 0000000..76ef673
Binary files /dev/null and b/app/libs/QtAndroidBearer.jar differ
diff --git a/app/libs/SdkApiJar_V1.250217.0851.aar b/app/libs/SdkApiJar_V1.250217.0851.aar
new file mode 100644
index 0000000..3498f8d
Binary files /dev/null and b/app/libs/SdkApiJar_V1.250217.0851.aar differ
diff --git a/app/libs/armeabi-v7a/gdbserver b/app/libs/armeabi-v7a/gdbserver
new file mode 100644
index 0000000..4309247
Binary files /dev/null and b/app/libs/armeabi-v7a/gdbserver differ
diff --git a/app/libs/armeabi-v7a/libQt5Concurrent.so b/app/libs/armeabi-v7a/libQt5Concurrent.so
new file mode 100644
index 0000000..bc64110
Binary files /dev/null and b/app/libs/armeabi-v7a/libQt5Concurrent.so differ
diff --git a/app/libs/armeabi-v7a/libQt5Core.so b/app/libs/armeabi-v7a/libQt5Core.so
new file mode 100644
index 0000000..0110c34
Binary files /dev/null and b/app/libs/armeabi-v7a/libQt5Core.so differ
diff --git a/app/libs/armeabi-v7a/libQt5Gui.so b/app/libs/armeabi-v7a/libQt5Gui.so
new file mode 100644
index 0000000..1ceda10
Binary files /dev/null and b/app/libs/armeabi-v7a/libQt5Gui.so differ
diff --git a/app/libs/armeabi-v7a/libQt5Network.so b/app/libs/armeabi-v7a/libQt5Network.so
new file mode 100644
index 0000000..d26d278
Binary files /dev/null and b/app/libs/armeabi-v7a/libQt5Network.so differ
diff --git a/app/libs/armeabi-v7a/libc++_shared.so b/app/libs/armeabi-v7a/libc++_shared.so
new file mode 100644
index 0000000..574c3bd
Binary files /dev/null and b/app/libs/armeabi-v7a/libc++_shared.so differ
diff --git a/app/libs/armeabi-v7a/libcrashhandler.so b/app/libs/armeabi-v7a/libcrashhandler.so
new file mode 100644
index 0000000..94bb4b4
Binary files /dev/null and b/app/libs/armeabi-v7a/libcrashhandler.so differ
diff --git a/app/libs/armeabi-v7a/libgdbserver.so b/app/libs/armeabi-v7a/libgdbserver.so
new file mode 100644
index 0000000..e6756d6
Binary files /dev/null and b/app/libs/armeabi-v7a/libgdbserver.so differ
diff --git a/app/libs/armeabi-v7a/libjnidispatch.so b/app/libs/armeabi-v7a/libjnidispatch.so
new file mode 100644
index 0000000..0683481
Binary files /dev/null and b/app/libs/armeabi-v7a/libjnidispatch.so differ
diff --git a/app/libs/armeabi-v7a/libmsc.so b/app/libs/armeabi-v7a/libmsc.so
new file mode 100644
index 0000000..3cb79b5
Binary files /dev/null and b/app/libs/armeabi-v7a/libmsc.so differ
diff --git a/app/libs/armeabi-v7a/libnvcommon.so b/app/libs/armeabi-v7a/libnvcommon.so
new file mode 100644
index 0000000..3cee9b4
Binary files /dev/null and b/app/libs/armeabi-v7a/libnvcommon.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_bearer_libqandroidbearer.so b/app/libs/armeabi-v7a/libplugins_bearer_libqandroidbearer.so
new file mode 100644
index 0000000..7983346
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_bearer_libqandroidbearer.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_imageformats_libqgif.so b/app/libs/armeabi-v7a/libplugins_imageformats_libqgif.so
new file mode 100644
index 0000000..22280e4
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_imageformats_libqgif.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_imageformats_libqicns.so b/app/libs/armeabi-v7a/libplugins_imageformats_libqicns.so
new file mode 100644
index 0000000..1f506fe
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_imageformats_libqicns.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_imageformats_libqico.so b/app/libs/armeabi-v7a/libplugins_imageformats_libqico.so
new file mode 100644
index 0000000..00e3d46
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_imageformats_libqico.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_imageformats_libqjpeg.so b/app/libs/armeabi-v7a/libplugins_imageformats_libqjpeg.so
new file mode 100644
index 0000000..a11d44c
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_imageformats_libqjpeg.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_imageformats_libqtga.so b/app/libs/armeabi-v7a/libplugins_imageformats_libqtga.so
new file mode 100644
index 0000000..383eb0f
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_imageformats_libqtga.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_imageformats_libqtiff.so b/app/libs/armeabi-v7a/libplugins_imageformats_libqtiff.so
new file mode 100644
index 0000000..4bf8436
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_imageformats_libqtiff.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_imageformats_libqwbmp.so b/app/libs/armeabi-v7a/libplugins_imageformats_libqwbmp.so
new file mode 100644
index 0000000..886d3d2
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_imageformats_libqwbmp.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_imageformats_libqwebp.so b/app/libs/armeabi-v7a/libplugins_imageformats_libqwebp.so
new file mode 100644
index 0000000..e7d2753
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_imageformats_libqwebp.so differ
diff --git a/app/libs/armeabi-v7a/libplugins_platforms_android_libqtforandroid.so b/app/libs/armeabi-v7a/libplugins_platforms_android_libqtforandroid.so
new file mode 100644
index 0000000..c5c4f8f
Binary files /dev/null and b/app/libs/armeabi-v7a/libplugins_platforms_android_libqtforandroid.so differ
diff --git a/app/libs/armeabi-v7a/libsqlite.so b/app/libs/armeabi-v7a/libsqlite.so
new file mode 100644
index 0000000..b1d3ea0
Binary files /dev/null and b/app/libs/armeabi-v7a/libsqlite.so differ
diff --git a/app/libs/armeabi-v7a/libviplexcommon.so b/app/libs/armeabi-v7a/libviplexcommon.so
new file mode 100644
index 0000000..9d66038
Binary files /dev/null and b/app/libs/armeabi-v7a/libviplexcommon.so differ
diff --git a/app/libs/armeabi-v7a/libviplexcore.so b/app/libs/armeabi-v7a/libviplexcore.so
new file mode 100644
index 0000000..c70e4fb
Binary files /dev/null and b/app/libs/armeabi-v7a/libviplexcore.so differ
diff --git a/app/libs/commons-compress-1.19.jar b/app/libs/commons-compress-1.19.jar
new file mode 100644
index 0000000..5c9f52a
Binary files /dev/null and b/app/libs/commons-compress-1.19.jar differ
diff --git a/app/libs/java-unrar-1.7.0-8.jar b/app/libs/java-unrar-1.7.0-8.jar
new file mode 100644
index 0000000..04b6a41
Binary files /dev/null and b/app/libs/java-unrar-1.7.0-8.jar differ
diff --git a/app/libs/jna-min.jar b/app/libs/jna-min.jar
new file mode 100644
index 0000000..5a76c47
Binary files /dev/null and b/app/libs/jna-min.jar differ
diff --git a/app/libs/jna-platform.jar b/app/libs/jna-platform.jar
new file mode 100644
index 0000000..c7451a2
Binary files /dev/null and b/app/libs/jna-platform.jar differ
diff --git a/app/libs/shockman.jar b/app/libs/shockman.jar
new file mode 100644
index 0000000..c854370
Binary files /dev/null and b/app/libs/shockman.jar differ
diff --git a/app/libs/signway.jar b/app/libs/signway.jar
new file mode 100644
index 0000000..f9af7f5
Binary files /dev/null and b/app/libs/signway.jar differ
diff --git a/app/libs/toolbox_kit.jar b/app/libs/toolbox_kit.jar
new file mode 100644
index 0000000..69639a9
Binary files /dev/null and b/app/libs/toolbox_kit.jar differ
diff --git a/app/libs/ymeeting.jar b/app/libs/ymeeting.jar
new file mode 100644
index 0000000..b818c0a
Binary files /dev/null and b/app/libs/ymeeting.jar differ
diff --git a/app/libs/zckjAPI-2.2.jar b/app/libs/zckjAPI-2.2.jar
new file mode 100644
index 0000000..07dac54
Binary files /dev/null and b/app/libs/zckjAPI-2.2.jar differ
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..6e7ffa9
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.5.13.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.5.13.apk
new file mode 100644
index 0000000..85aaa30
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.5.13.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.5.16.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.5.16.apk
new file mode 100644
index 0000000..59eaf84
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.5.16.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.1.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.1.apk
new file mode 100644
index 0000000..1d6c0b6
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.1.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.10.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.10.apk
new file mode 100644
index 0000000..4437c49
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.10.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.11.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.11.apk
new file mode 100644
index 0000000..b856d84
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.11.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.12.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.12.apk
new file mode 100644
index 0000000..43fa558
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.12.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.16.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.16.apk
new file mode 100644
index 0000000..76bbafd
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.16.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.19.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.19.apk
new file mode 100644
index 0000000..0edc520
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.19.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.2.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.2.apk
new file mode 100644
index 0000000..2d26f54
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.2.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.21.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.21.apk
new file mode 100644
index 0000000..01211a4
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.21.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.22.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.22.apk
new file mode 100644
index 0000000..ba37cd5
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.22.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.23.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.23.apk
new file mode 100644
index 0000000..d5dd0e7
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.23.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.24.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.24.apk
new file mode 100644
index 0000000..3af9cc6
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.24.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.26.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.26.apk
new file mode 100644
index 0000000..4d4cd2a
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.26.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.4.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.4.apk
new file mode 100644
index 0000000..8af54c8
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.4.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.5.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.5.apk
new file mode 100644
index 0000000..6f76313
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.5.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.6.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.6.apk
new file mode 100644
index 0000000..77e1490
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.6.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.8.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.8.apk
new file mode 100644
index 0000000..d03438b
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.8.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.9.apk b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.9.apk
new file mode 100644
index 0000000..17fcac0
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器_V2.0.7.9.apk differ
diff --git a/app/release/app_andorid_V2_亿晟iot分屏容器(mqtt密码改)_V2.0.7.25.apk b/app/release/app_andorid_V2_亿晟iot分屏容器(mqtt密码改)_V2.0.7.25.apk
new file mode 100644
index 0000000..f05a60b
Binary files /dev/null and b/app/release/app_andorid_V2_亿晟iot分屏容器(mqtt密码改)_V2.0.7.25.apk differ
diff --git a/app/release/app_andorid_V2_卓策iot分屏容器_V2.0.5.15.apk b/app/release/app_andorid_V2_卓策iot分屏容器_V2.0.5.15.apk
new file mode 100644
index 0000000..ea67bb4
Binary files /dev/null and b/app/release/app_andorid_V2_卓策iot分屏容器_V2.0.5.15.apk differ
diff --git a/app/release/app_andorid_V2_卓策iot分屏容器_V2.0.7.12.apk b/app/release/app_andorid_V2_卓策iot分屏容器_V2.0.7.12.apk
new file mode 100644
index 0000000..294cfbd
Binary files /dev/null and b/app/release/app_andorid_V2_卓策iot分屏容器_V2.0.7.12.apk differ
diff --git a/app/release/app_andorid_V2_无固定iot分屏容器_V2.0.7.1.apk b/app/release/app_andorid_V2_无固定iot分屏容器_V2.0.7.1.apk
new file mode 100644
index 0000000..322d6b8
Binary files /dev/null and b/app/release/app_andorid_V2_无固定iot分屏容器_V2.0.7.1.apk differ
diff --git a/app/release/app_andorid_V2_无固定iot分屏容器_V2.0.7.12.apk b/app/release/app_andorid_V2_无固定iot分屏容器_V2.0.7.12.apk
new file mode 100644
index 0000000..b06b443
Binary files /dev/null and b/app/release/app_andorid_V2_无固定iot分屏容器_V2.0.7.12.apk differ
diff --git a/app/release/app_andorid_V2_无固定iot分屏容器(网口ip)_V2.0.7.13.apk b/app/release/app_andorid_V2_无固定iot分屏容器(网口ip)_V2.0.7.13.apk
new file mode 100644
index 0000000..2ff6e46
Binary files /dev/null and b/app/release/app_andorid_V2_无固定iot分屏容器(网口ip)_V2.0.7.13.apk differ
diff --git a/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.5.13.apk b/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.5.13.apk
new file mode 100644
index 0000000..3bbc6d2
Binary files /dev/null and b/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.5.13.apk differ
diff --git a/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.5.16.apk b/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.5.16.apk
new file mode 100644
index 0000000..1f845f7
Binary files /dev/null and b/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.5.16.apk differ
diff --git a/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.7.22.apk b/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.7.22.apk
new file mode 100644
index 0000000..2935291
Binary files /dev/null and b/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.7.22.apk differ
diff --git a/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.7.25.apk b/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.7.25.apk
new file mode 100644
index 0000000..ed8ca88
Binary files /dev/null and b/app/release/app_andorid_V2_欣威视通3399iot分屏容器_V2.0.7.25.apk differ
diff --git a/app/release/app_andorid_V2_欣威视通3399iot分屏容器武汉恒隆固定_V2.0.7.25.apk b/app/release/app_andorid_V2_欣威视通3399iot分屏容器武汉恒隆固定_V2.0.7.25.apk
new file mode 100644
index 0000000..ed5d3f5
Binary files /dev/null and b/app/release/app_andorid_V2_欣威视通3399iot分屏容器武汉恒隆固定_V2.0.7.25.apk differ
diff --git a/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.5.16.apk b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.5.16.apk
new file mode 100644
index 0000000..c5cda72
Binary files /dev/null and b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.5.16.apk differ
diff --git a/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.16.apk b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.16.apk
new file mode 100644
index 0000000..705d074
Binary files /dev/null and b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.16.apk differ
diff --git a/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.17.apk b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.17.apk
new file mode 100644
index 0000000..af81c05
Binary files /dev/null and b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.17.apk differ
diff --git a/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.18.apk b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.18.apk
new file mode 100644
index 0000000..fd9b71f
Binary files /dev/null and b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.18.apk differ
diff --git a/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.20.apk b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.20.apk
new file mode 100644
index 0000000..697f56c
Binary files /dev/null and b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.20.apk differ
diff --git a/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.21.apk b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.21.apk
new file mode 100644
index 0000000..77d88dd
Binary files /dev/null and b/app/release/app_andorid_V2_灰度双面屏iot分屏容器_V2.0.7.21.apk differ
diff --git a/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.12.apk b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.12.apk
new file mode 100644
index 0000000..b02c763
Binary files /dev/null and b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.12.apk differ
diff --git a/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.14.apk b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.14.apk
new file mode 100644
index 0000000..c662870
Binary files /dev/null and b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.14.apk differ
diff --git a/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.15.apk b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.15.apk
new file mode 100644
index 0000000..d2307d2
Binary files /dev/null and b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.15.apk differ
diff --git a/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.16.apk b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.16.apk
new file mode 100644
index 0000000..769ce5b
Binary files /dev/null and b/app/release/app_andorid_V2_诺瓦设备iot分屏容器_V2.0.7.16.apk differ
diff --git a/app/release/app_andorid_V2_颐堤港定制touch亿晟iot容器(新导视语音版)_V2.0.3.37.apk b/app/release/app_andorid_V2_颐堤港定制touch亿晟iot容器(新导视语音版)_V2.0.3.37.apk
new file mode 100644
index 0000000..42e5868
Binary files /dev/null and b/app/release/app_andorid_V2_颐堤港定制touch亿晟iot容器(新导视语音版)_V2.0.3.37.apk differ
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
new file mode 100644
index 0000000..da50a03
--- /dev/null
+++ b/app/release/output-metadata.json
@@ -0,0 +1,18 @@
+{
+ "version": 2,
+ "artifactType": {
+ "type": "APK",
+ "kind": "Directory"
+ },
+ "applicationId": "qianmu.container",
+ "variantName": "processReleaseResources",
+ "elements": [
+ {
+ "type": "SINGLE",
+ "filters": [],
+ "versionCode": 6,
+ "versionName": "V2.0.7.26",
+ "outputFile": "app-release.apk"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/app/release/更新说明.txt b/app/release/更新说明.txt
new file mode 100644
index 0000000..7419358
--- /dev/null
+++ b/app/release/更新说明.txt
@@ -0,0 +1,16 @@
+V2.0.3.26
+1、增加注册获取楼层楼栋接口加解密
+
+V2.0.5.8
+1.深业上城要求加密。多接口及导视接口
+
+V2.0.7.1
+1.双面屏
+2、上报固件版本,硬件信号
+3、无网与有网状态切换,超60分钟后,重新联网10秒后拉取节目列表。
+
+V2.0.7.12
+1、增加摇臂机屏保页面轮播。
+
+V.2.0.7.19
+1、增加下发节目通知导视重置倒计时
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..aa159c7
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/touch01.json b/app/src/main/assets/touch01.json
new file mode 100644
index 0000000..74f08b2
--- /dev/null
+++ b/app/src/main/assets/touch01.json
@@ -0,0 +1 @@
+{"v":"5.7.13","fr":24,"ip":0,"op":120,"w":400,"h":600,"nm":"画板","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"t2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[199.684,501.8,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":30,"s":[98,98,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":60,"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":90,"s":[98,98,100]},{"t":120,"s":[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],[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":[[-89.684,-7.68],[-82.264,-7.68],[-82.264,11.2],[-78.104,11.2],[-78.104,-7.68],[-70.673,-7.68],[-70.673,-11.2],[-89.684,-11.2]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.84,-1],[-2.28,0],[-1.83,0.98],[-1.05,1.75],[0,2.2],[1.05,1.75],[1.83,0.99],[2.29,0],[1.83,-1],[1.04,-1.77],[0,-2.18],[-1.05,-1.77]],"o":[[1.83,0.98],[2.29,0],[1.83,-1],[1.05,-1.75],[0,-2.2],[-1.05,-1.75],[-1.83,-1],[-2.28,0],[-1.84,0.99],[-1.05,1.75],[0,2.18],[1.04,1.75]],"v":[[-63.576,10.05],[-57.406,11.52],[-51.225,10.05],[-46.906,5.92],[-45.335,0],[-46.906,-5.92],[-51.225,-10.02],[-57.406,-11.52],[-63.576,-10.02],[-67.895,-5.89],[-69.465,0],[-67.895,5.92]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[1.2,-0.68],[1.5,0],[1.19,0.66],[0.69,1.19],[0,1.5],[-0.68,1.2],[-1.19,0.67],[-1.49,0],[-1.19,-0.68],[-0.68,-1.22],[0,-1.49],[0.68,-1.22]],"o":[[-1.19,0.66],[-1.49,0],[-1.19,-0.68],[-0.68,-1.22],[0,-1.49],[0.69,-1.22],[1.19,-0.68],[1.5,0],[1.2,0.67],[0.68,1.2],[0,1.5],[-0.68,1.19]],"v":[[-53.374,6.878],[-57.404,7.868],[-61.434,6.878],[-64.253,4.068],[-65.273,-0.002],[-64.253,-4.032],[-61.434,-6.852],[-57.404,-7.872],[-53.374,-6.852],[-50.553,-4.032],[-49.533,-0.002],[-50.553,4.068]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[-1.73,-1.75],[-3.09,0],[-1.7,1.73],[0,3.24],[0,0],[0,0],[0,0],[3.77,0],[0,4.39],[0,0],[0,0],[0,0]],"o":[[1.73,1.73],[3.1,0],[1.73,-1.75],[0,0],[0,0],[0,0],[0,4.39],[-3.8,0],[0,0],[0,0],[0,0],[0,3.24]],"v":[[-38.531,8.93],[-31.301,11.52],[-24.1,8.93],[-21.501,1.44],[-21.501,-11.2],[-25.6,-11.2],[-25.6,1.28],[-31.26,7.87],[-36.96,1.28],[-36.96,-11.2],[-41.12,-11.2],[-41.12,1.44]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[-1.81,-1],[-2.26,0],[-1.51,0.64],[-1.04,1.21],[0,0],[2.37,0],[1.22,0.66],[0.68,1.2],[0,1.52],[-0.69,1.19],[-1.21,0.66],[-1.53,0],[-1.62,-1.75],[0,0],[1.52,0.64],[1.84,0],[1.83,-1],[1.04,-1.75],[0,-2.2],[-1.03,-1.75]],"o":[[1.84,0.98],[1.83,0],[1.54,-0.64],[0,0],[-1.62,1.77],[-1.53,0],[-1.21,-0.68],[-0.69,-1.19],[0,-1.51],[0.68,-1.2],[1.22,-0.68],[2.37,0],[0,0],[-1.04,-1.21],[-1.51,-0.64],[-2.26,0],[-1.82,0.99],[-1.05,1.75],[0,2.2],[1.04,1.75]],"v":[[-11.458,10.05],[-5.309,11.52],[-0.288,10.56],[3.581,7.78],[0.902,5.22],[-5.089,7.87],[-9.219,6.88],[-12.059,4.06],[-13.089,0],[-12.059,-4.06],[-9.219,-6.85],[-5.089,-7.87],[0.902,-5.25],[3.581,-7.78],[-0.258,-10.56],[-5.279,-11.52],[-11.419,-10.02],[-15.708,-5.92],[-17.279,0],[-15.738,5.92]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"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":[[23.311,11.2],[27.471,11.2],[27.471,-11.2],[23.311,-11.2],[23.311,-1.95],[11.732,-1.95],[11.732,-11.2],[7.572,-11.2],[7.572,11.2],[11.732,11.2],[11.732,1.6],[23.311,1.6]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"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]],"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":[[62.861,-3.65],[62.902,11.2],[66.831,11.2],[66.801,-11.2],[63.382,-11.2],[54.641,3.65],[45.742,-11.2],[42.322,-11.2],[42.322,11.2],[46.292,11.2],[46.292,-3.46],[53.652,8.64],[55.501,8.64]],"c":true},"ix":2},"nm":"路径 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"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":[[89.684,11.2],[89.684,7.71],[77.044,7.71],[77.044,1.54],[87.863,1.54],[87.863,-1.89],[77.044,-1.89],[77.044,-7.71],[89.234,-7.71],[89.234,-11.2],[72.883,-11.2],[72.883,11.2]],"c":true},"ix":2},"nm":"路径 8","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,0.800000011921],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"t2","np":10,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"t1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[199.728,448.76,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":30,"s":[108,108,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":60,"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":90,"s":[108,108,100]},{"t":120,"s":[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],[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":[[-69.526,-8.306],[-55.516,-8.306],[-55.516,8.354],[-88.776,8.354],[-88.776,-8.306],[-75.336,-8.306],[-75.336,-22.416],[-69.526,-22.416],[-69.526,-18.196],[-52.346,-18.196],[-52.346,-12.866],[-69.526,-12.866]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-83.352,3.076],[-61.322,3.076],[-61.322,-3.024],[-83.352,-3.024]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[2.54,-2.54],[0,0],[-1.34,3.46]],"o":[[-1.39,3.84],[0,0],[2.35,-2.11],[0,0]],"v":[[-83.208,11.66],[-89.448,22.22],[-94.728,19.68],[-88.728,10.32]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0.03,0.55],[0,0],[0.01,0.16],[0,0],[0.01,0.16],[0,0],[0.01,0.16],[0,0],[0.04,0.33],[0,0],[0.08,0.45],[0,0],[-0.19,-1.19],[0,0],[-0.03,-0.17],[0,0],[-0.02,-0.16],[0,0],[-0.01,-0.15],[0,0],[-0.02,-0.36]],"o":[[0,-0.46],[0,0],[-0.01,-0.15],[0,0],[-0.01,-0.16],[0,0],[-0.02,-0.16],[0,0],[-0.04,-0.33],[0,0],[-0.07,-0.48],[0,0],[0.24,1.09],[0,0],[0.02,0.17],[0,0],[0.02,0.16],[0,0],[0.01,0.15],[0,0],[0.03,0.41],[0,0]],"v":[[-79.896,22.082],[-79.936,20.562],[-79.976,19.702],[-80.006,19.242],[-80.076,18.312],[-80.116,17.832],[-80.206,16.852],[-80.256,16.362],[-80.366,15.362],[-80.496,14.372],[-80.636,13.402],[-80.856,12.002],[-75.436,11.472],[-74.786,14.932],[-74.626,15.952],[-74.556,16.452],[-74.426,17.452],[-74.376,17.932],[-74.266,18.882],[-74.226,19.332],[-74.156,20.202],[-74.086,21.362]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[0.46,1.39],[0,0],[0.7,1.59],[0,0],[-0.4,-0.92],[0,0],[-0.37,-1.58]],"o":[[-0.22,-1.02],[0,0],[-0.6,-1.74],[0,0],[0.41,0.82],[0,0],[0.9,2.16],[0,0]],"v":[[-67.704,21.836],[-68.744,18.136],[-69.064,17.196],[-71.064,12.046],[-65.834,10.896],[-64.614,13.536],[-64.224,14.456],[-62.184,20.396]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0,0],[1.45,2.35],[0,0],[0.65,0.9],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.94,-2.21]],"o":[[-0.64,-1.75],[0,0],[-0.65,-1.02],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.89,2.67],[0,0]],"v":[[-55.42,22.076],[-58.81,15.556],[-59.36,14.676],[-61.32,11.756],[-56.18,9.936],[-55.88,10.336],[-55.88,10.336],[-55.26,11.176],[-55.26,11.176],[-54.63,12.046],[-49.9,19.966]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"ks":{"a":0,"k":{"i":[[-1.86,0.6],[0,0],[2.79,-0.58],[0,0],[0,0],[0.05,4.36],[0,0],[-0.38,-4.23],[0,0],[0,0],[0,0],[-0.53,-2.44],[-1.25,2.3],[0,0],[3.12,-3.12],[-1.44,0],[-0.29,0.96],[0,0],[0,0],[0,0],[-0.01,0.06],[0,0],[-0.01,0.07],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.54,-0.63],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.01,-0.1],[0,0],[0.02,-0.1],[0,0],[0.05,-0.17],[0,0],[3.14,0],[2.07,4.7],[3.08,-1.58],[1.39,1.3],[-3.32,2.73],[0.57,4.71],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.41,0.07],[0,0],[0,0],[0,0],[1.92,-0.91],[3.21,-0.02],[0,0],[0.16,0],[0.81,1.58],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.77],[0,0],[0,0],[0,0],[0,0],[0.21,-0.04],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.24,0.05],[0,0],[0,0],[0,0],[0,0],[0,0],[2.45,-0.29],[0.63,1.3],[-1.19,0.19],[0,0],[-2.02,0.44],[0,0]],"o":[[0,0],[-2.4,0.72],[0,0],[0,0],[-0.38,-4.32],[0,0],[-0.09,4.46],[0,0],[0,0],[0,0],[0.38,2.88],[1.73,-2.06],[0,0],[-2.16,3.88],[1.3,3.69],[0.44,0],[0,0],[0,0],[0,0],[0.01,-0.06],[0,0],[0.01,-0.07],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.25,1.35],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.02,0.11],[0,0],[-0.02,0.1],[0,0],[-0.05,0.18],[0,0],[-1.1,3.73],[-3.5,0],[-2.78,2.3],[-0.81,-1.34],[3.7,-1.68],[-1.06,-3.8],[0,0],[0,0],[0,0],[0,0],[0,0],[0.41,-0.07],[0,0],[0,0],[0,0],[0,3.12],[-1.65,0.81],[0,0],[-0.15,0],[-0.24,-1.59],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.87,0],[0,0],[0,0],[0,0],[0,0],[-0.22,0.04],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.24,-0.04],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.59,0.43],[-0.24,-1.39],[1.16,-0.16],[0,0],[2.13,-0.37],[0,0],[2.41,-0.56]],"v":[[-26.854,-22.08],[-23.014,-17.23],[-30.844,-15.31],[-30.844,-8.83],[-21.624,-8.83],[-22.204,-21.98],[-16.204,-21.98],[-15.724,-8.83],[-2.664,-8.83],[-2.664,-3.41],[-15.144,-3.41],[-13.754,4.7],[-9.194,-1.82],[-4.154,0.34],[-12.124,10.85],[-7.894,16.75],[-6.814,15.36],[-6.734,15.06],[-6.734,15.06],[-6.654,14.72],[-6.624,14.54],[-6.544,14.16],[-6.514,13.95],[-6.444,13.52],[-6.444,13.52],[-6.384,13.05],[-6.384,13.05],[-6.334,12.55],[-6.334,12.55],[-6.274,12.01],[-6.274,12.01],[-6.224,11.44],[-6.224,11.44],[-6.184,10.83],[-6.184,10.83],[-6.144,10.19],[-6.144,10.19],[-6.104,9.5],[-6.104,9.5],[-6.074,8.78],[-6.074,8.78],[-1.364,12.05],[-1.454,12.82],[-1.454,12.82],[-1.554,13.55],[-1.554,13.55],[-1.644,14.25],[-1.644,14.25],[-1.754,14.91],[-1.804,15.23],[-1.924,15.84],[-1.984,16.14],[-2.104,16.7],[-2.244,17.23],[-2.384,17.74],[-8.424,22.56],[-16.684,14.98],[-25.564,20.83],[-29.354,16.22],[-18.644,9.46],[-21.094,-3.41],[-30.844,-3.41],[-30.844,2.06],[-29.614,1.84],[-29.614,1.84],[-24.674,0.94],[-23.444,0.72],[-23.014,5.9],[-30.844,7.49],[-30.844,15.7],[-33.434,21.26],[-40.714,22.37],[-41.614,22.37],[-42.074,22.37],[-44.084,16.61],[-43.154,16.65],[-43.154,16.65],[-42.544,16.67],[-42.544,16.67],[-41.934,16.69],[-41.934,16.69],[-40.774,16.7],[-40.774,16.7],[-39.724,16.7],[-39.724,16.7],[-38.824,16.69],[-38.824,16.69],[-38.124,16.67],[-38.124,16.67],[-37.754,16.66],[-37.754,16.66],[-36.604,15.65],[-36.604,8.69],[-42.564,9.9],[-42.564,9.9],[-44.554,10.3],[-45.194,10.42],[-46.584,4.66],[-41.524,3.86],[-41.524,3.86],[-39.474,3.52],[-39.474,3.52],[-37.334,3.15],[-36.604,3.02],[-36.604,-3.41],[-45.674,-3.41],[-45.674,-8.83],[-36.604,-8.83],[-36.604,-14.3],[-44.284,-13.25],[-45.914,-18.05],[-42.384,-18.57],[-40.964,-18.81],[-34.684,-20.03],[-33.344,-20.33]],"c":true},"ix":2},"nm":"路径 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[0,0],[-1.39,-2.25],[0,0],[2.59,2.3]],"o":[[2.54,2.21],[0,0],[-1.25,-2.21],[0,0]],"v":[[-10.152,-21.072],[-3.052,-13.442],[-7.652,-10.222],[-14.472,-18.142]],"c":true},"ix":2},"nm":"路径 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"ks":{"a":0,"k":{"i":[[-1.68,-0.24],[4.04,-0.45],[0,0],[0,0],[0,0],[0,0],[0,0],[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,4.28],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.75,-0.23],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.08,0.01],[0,0],[-0.07,0.01],[0,0],[-0.36,1.55],[0,0],[-0.01,0.06]],"o":[[-0.65,3.87],[0,0],[0,0],[0,0],[0,0],[0,0],[-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],[-5.22,-0.56],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.05,1.16],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.08,0],[0,0],[0.07,-0.01],[0,0],[1.8,-0.19],[0,0],[0.01,-0.06],[1.39,0.77]],"v":[[44.516,-6.388],[38.356,-0.588],[37.826,-0.538],[37.826,-0.538],[37.266,-0.498],[37.266,-0.498],[36.676,-0.468],[36.376,-0.458],[35.736,-0.438],[35.736,-0.438],[35.076,-0.428],[35.076,-0.428],[17.526,-0.428],[17.526,-0.428],[16.756,-0.438],[16.756,-0.438],[16.016,-0.458],[16.016,-0.458],[15.296,-0.478],[15.296,-0.478],[14.616,-0.508],[14.616,-0.508],[13.966,-0.548],[13.966,-0.548],[13.346,-0.598],[13.346,-0.598],[12.746,-0.648],[5.736,-7.248],[5.736,-21.168],[39.436,-21.168],[39.436,-8.208],[11.736,-8.208],[11.736,-7.348],[11.746,-7.108],[14.036,-5.188],[14.396,-5.148],[14.396,-5.148],[14.786,-5.118],[14.786,-5.118],[15.206,-5.088],[15.206,-5.088],[15.666,-5.068],[15.666,-5.068],[16.426,-5.048],[16.426,-5.048],[17.266,-5.038],[17.266,-5.038],[17.876,-5.038],[17.876,-5.038],[34.466,-5.038],[34.466,-5.038],[34.966,-5.048],[35.206,-5.058],[35.646,-5.068],[35.856,-5.088],[36.246,-5.118],[39.046,-7.448],[39.116,-7.788],[39.146,-7.968]],"c":true},"ix":2},"nm":"路径 9","mn":"ADBE Vector Shape - Group","hd":false},{"ind":9,"ty":"sh","ix":10,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[33.816,-13.102],[33.816,-16.272],[11.736,-16.272],[11.736,-13.102]],"c":true},"ix":2},"nm":"路径 10","mn":"ADBE Vector Shape - Group","hd":false},{"ind":10,"ty":"sh","ix":11,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[2.26,-0.72],[1.73,-0.1],[0,0],[0.15,-0.01],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.76,1.44],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.72],[0,0],[0,0],[-1.34,-1.87],[0,0],[3.12,2.21],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,2.97],[-1.2,0.37],[0,0],[-0.14,0.01],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.29,-1.53],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.96,-0.05],[0,0],[0,0],[2.55,1.92],[0,0],[-1.53,-2.35],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[35.306,3.314],[45.146,3.314],[45.146,8.644],[35.306,8.644],[35.306,16.564],[32.326,21.604],[27.956,22.264],[27.136,22.304],[26.706,22.324],[25.826,22.344],[25.826,22.344],[24.896,22.354],[24.896,22.354],[23.426,22.364],[23.426,22.364],[22.396,22.364],[22.396,22.364],[20.476,17.234],[21.376,17.274],[21.376,17.274],[22.616,17.314],[22.616,17.314],[23.856,17.344],[23.856,17.344],[25.596,17.364],[25.596,17.364],[28.106,17.374],[28.106,17.374],[29.396,16.364],[29.396,8.644],[14.806,8.644],[21.336,14.734],[17.206,18.624],[8.956,10.754],[11.256,8.644],[2.616,8.644],[2.616,3.314],[29.396,3.314],[29.396,0.624],[35.306,0.624]],"c":true},"ix":2},"nm":"路径 11","mn":"ADBE Vector Shape - Group","hd":false},{"ind":11,"ty":"sh","ix":12,"ks":{"a":0,"k":{"i":[[-0.2,1.73],[0,0],[0.4,-1.09],[0,0],[0,0],[0,0],[0,0],[0.15,-0.68],[-0.18,4.24],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.04,-0.07],[-0.19,0],[0,0],[-0.09,0.14],[-0.05,0.24],[0,0],[-0.01,0.05],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.2,-0.43],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.05,-0.24],[0.58,-0.58],[0.92,0],[0,0],[0.77,0.81],[0.17,0.96],[0,0],[0,0],[0,0],[0.01,0.07],[0,0],[0,0.09],[0,0],[0,0],[0,0],[0.01,0.12],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.01,-0.13],[0,0],[4,-4.21],[1.3,0.62],[0.67,-0.39],[1.7,-0.09],[0,0],[0.11,0],[0,0],[0.12,0],[0.62,1.29],[-0.2,-0.01],[0,0],[-0.1,0],[0,0],[0,0],[0,0],[0,0],[0,0.57],[0,0],[0,0],[0,0],[0,0],[0,0],[0,-0.13],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.07,-0.14],[0,0],[-0.22,-0.63],[0,0],[0.63,1.45],[0,0],[0.13,0.28],[0,0],[0,0],[2.88,-4.56],[1.15,0.53],[-0.18,5.09],[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.39,1.15],[0,0],[0,0],[0,0],[0,0],[0,0.92],[3.21,-3.73],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.03,0.18],[0.09,0.14],[0,0],[0.19,0],[0.08,-0.1],[0,0],[0.01,-0.04],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.92,0.77],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.05,0.38],[-0.29,1.1],[-0.67,0.52],[0,0],[-1.1,0],[-0.45,-0.48],[0,0],[0,0],[0,0],[-0.01,-0.07],[0,0],[0,-0.08],[0,0],[0,0],[0,0],[0,-0.11],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.01,0.14],[0,0],[-0.28,5.46],[-0.91,-0.87],[-0.28,0.62],[-1.01,0.62],[0,0],[-0.11,0],[0,0],[-0.12,0],[-0.15,-1.39],[0.2,0.01],[0,0],[0.1,0],[0,0],[0,0],[0,0],[0,0],[0.53,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.13],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.07,0.15],[0,0],[0.36,0.82],[0,0],[-0.3,-1.11],[0,0],[-0.14,-0.29],[0,0],[0,0],[-0.19,6.04],[-0.91,-0.82],[2.47,-4.01],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.48,-1.92]],"v":[[58.06,-22.56],[63.77,-21.65],[62.58,-18.28],[61.99,-16.7],[61.99,-16.7],[68.62,-16.7],[68.62,16.7],[68.42,19.06],[72.64,6.29],[72.67,5.53],[72.67,5.53],[72.69,4.78],[72.69,4.78],[72.7,4.05],[72.7,4.05],[72.7,-6.29],[89.06,-6.29],[89.06,15.35],[89.06,15.35],[89.07,15.76],[89.07,15.76],[89.08,16.12],[89.08,16.12],[89.1,16.42],[89.1,16.42],[89.12,16.67],[89.21,17.04],[89.64,17.23],[90.22,17.23],[90.74,17.04],[90.93,16.55],[90.98,16.29],[91.01,16.14],[91.08,15.6],[91.08,15.6],[91.12,14.64],[91.12,14.64],[91.18,12.68],[91.18,12.68],[91.22,10.46],[91.22,10.46],[94.73,12.43],[94.7,13.37],[94.7,13.37],[94.68,14.02],[94.68,14.02],[94.63,14.98],[94.63,14.98],[94.59,15.61],[94.59,15.61],[94.55,16.22],[94.55,16.22],[94.5,16.79],[94.5,16.79],[94.45,17.33],[94.45,17.33],[94.4,17.82],[94.25,18.77],[92.9,21.22],[90.26,21.94],[87.96,21.94],[84.89,20.74],[83.98,18.78],[83.93,18.42],[83.93,18.42],[83.88,18.02],[83.86,17.8],[83.83,17.33],[83.82,17.07],[83.8,16.53],[83.8,16.53],[83.79,15.92],[83.78,15.59],[83.78,-1.34],[77.98,-1.34],[77.98,3.74],[77.97,4.51],[77.97,4.51],[77.96,5.29],[77.94,5.69],[77.91,6.51],[72.41,22.61],[68.18,19.73],[66.79,21.22],[62.79,22.18],[62.13,22.21],[61.79,22.21],[61.07,22.22],[60.7,22.22],[59.26,17.38],[59.87,17.41],[60.48,17.43],[60.78,17.43],[61.6,17.44],[61.6,17.44],[62.9,17.42],[62.9,17.42],[63.67,16.66],[63.67,2.4],[57.38,2.4],[57.38,2.79],[57.38,2.79],[57.34,4.36],[57.34,4.75],[60.46,3.46],[60.85,4.26],[60.85,4.26],[61.26,5.1],[61.26,5.1],[61.67,5.97],[61.67,5.97],[62.07,6.83],[62.27,7.26],[62.64,8.11],[63.53,10.32],[59.98,11.95],[58.48,7.94],[58.09,7.07],[57.69,6.21],[57.29,5.38],[57.29,5.38],[53.35,22.85],[49.08,20.06],[52.38,5.49],[52.41,4.45],[52.41,4.45],[52.43,3.41],[52.43,3.41],[52.44,2.4],[52.44,2.4],[49.37,2.4],[49.37,-2.16],[52.44,-2.16],[52.44,-16.7],[56.95,-16.7]],"c":true},"ix":2},"nm":"路径 12","mn":"ADBE Vector Shape - Group","hd":false},{"ind":12,"ty":"sh","ix":13,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.48,-1.72],[0,0],[0.23,0.7],[0,0],[0.46,1.08],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1,2.02],[0,0],[-0.15,-0.56],[0,0],[-0.4,-1.17],[0,0],[0,0],[0,0]],"v":[[63.674,-12.288],[57.384,-12.288],[57.384,-9.838],[60.604,-11.088],[63.144,-4.708],[59.594,-3.218],[59.024,-5.128],[58.724,-5.988],[57.384,-9.458],[57.384,-2.158],[63.674,-2.158]],"c":true},"ix":2},"nm":"路径 13","mn":"ADBE Vector Shape - Group","hd":false},{"ind":13,"ty":"sh","ix":14,"ks":{"a":0,"k":{"i":[[0,0],[-0.27,-0.6],[0,0],[-0.36,-1.17],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.87,2.02]],"o":[[0.27,0.54],[0,0],[0.66,1.54],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.58,-1.92],[0,0]],"v":[[81.764,-22.848],[82.574,-21.118],[82.974,-20.208],[84.604,-15.938],[81.244,-14.878],[93.814,-14.878],[93.814,-9.888],[69.384,-9.888],[69.384,-14.878],[78.744,-14.878],[76.294,-21.408]],"c":true},"ix":2},"nm":"路径 14","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,0.800000011921],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"t1","np":16,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"map1","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.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[490.751,249.794,0],"to":[-66,0,0],"ti":[66,0,0]},{"t":120,"s":[94.751,249.794,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":[[-8.07,-0.53],[0,0],[-3.68,-4.07],[0,0],[-0.7,3.36],[-5.07,-15.85],[0,0],[-5.61,-0.79],[0,0],[19.32,-12],[0,0],[-1.45,-5.44],[0,0],[-5.8,3.45],[-0.16,0.1],[0,0],[0,0],[0,0],[-0.96,0.5],[-5.99,0.94],[-0.36,-0.01],[0,0],[-5.3,-5.76],[0,0],[-3.65,0],[0,0],[-2.93,-11.52],[5.89,-6.47],[0,0],[2.45,2.23],[-2.23,2.45],[0,0],[1.16,4.57],[6.4,0],[0,0],[4.69,5.08],[0,0],[4.1,-0.43],[0,0],[0.21,0],[1.95,-0.65],[0,0],[1.01,-0.52],[0.28,-0.17],[0,0],[0,0],[0,0],[0,0],[0,0],[0.65,-0.39],[3.79,14.21],[0,0],[-9.51,5.58],[11.74,1.66],[0,0],[3.13,9.79],[0,0],[1.03,-4.02],[0,0],[8.89,9.81],[0,0],[2.36,0.16],[0,0],[2,-3.14],[0,0],[-4.94,1.15],[0,0],[2.98,-9.75],[-0.06,-0.15],[-0.28,-0.18],[-0.2,0],[-0.33,0.29],[0,0],[-6.4,-5.73],[0,0],[17.21,-0.43],[0,0],[-2.72,-4.76],[0,0],[15.26,3.31],[0,0],[3.07,-2.7],[1.53,-3.64],[0,0],[8.68,-3.47],[4.75,3.44],[2.5,5.15],[1.49,10.32],[1.02,1.96],[0,0],[0.08,3.89],[0,0],[6.56,0.92],[0,0],[-0.3,-2.18],[0,0],[6.26,0.71],[0,0],[6.52,-3.19],[0,0],[1.79,-3.23],[0,0],[2.9,1.61],[-1.6,2.9],[0,0],[-5.53,2.7],[0,0],[0.21,2.26],[0,0],[-6.06,-0.61],[0,0],[1.41,1.27],[0,0],[3.26,-1.63],[0,0],[8.85,5.49],[0,0],[4.28,-1.45],[0,0],[3.48,16.12],[0,0],[-3.59,6.38],[0,0],[0.57,3.93],[0,0],[-4.84,-6.91],[0,0],[-2.85,-1.04],[0,0],[-2.66,-6.51],[0,0],[-3.22,-1.38],[0,0],[1.21,-10.57],[0,0],[-2.95,-2.67],[0,0],[0,0],[-0.19,-12.45],[0,0],[-0.99,-1.9],[0,0],[-0.51,-3.51],[-4.26,-8.76],[-2.05,-1.49],[-2.11,0.85],[-1.5,3.6],[0,0],[-4.66,4.1],[0,0],[0,0],[0,0],[-6.81,-1.49],[0,0],[2.68,4.7],[0,0],[-14.43,0.31],[0,0],[4.88,4.37],[0,0],[1.95,-1.68],[0,0],[-3.88,12.7],[0.94,-0.22],[0,0],[-8.51,13.34],[0,0]],"o":[[0,0],[5.47,0.35],[0,0],[2.3,2.55],[3.4,-16.29],[0,0],[1.73,5.4],[0,0],[22.76,3.21],[0,0],[-4.85,2.85],[0,0],[1.74,6.52],[0.16,-0.1],[0,0],[0,0],[0,0],[0.75,-0.49],[3.57,-1.86],[0.37,-0.06],[0,0],[7.79,-0.82],[0,0],[2.42,2.72],[0,0],[11.89,0],[2.16,8.47],[0,0],[-2.23,2.45],[-2.45,-2.23],[0,0],[3.17,-3.48],[-1.59,-6.2],[0,0],[-6.93,0],[0,0],[-2.73,-3.07],[0,0],[-0.22,0.02],[-2.27,0.39],[0,0],[-1.6,0.57],[-0.24,0.13],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.57,0.39],[-12.64,7.52],[0,0],[-2.84,-10.65],[10.23,-5.99],[0,0],[-10.18,-1.43],[0,0],[-1.29,-4.04],[0,0],[-2.71,12.96],[0,0],[-1.59,-1.75],[0,0],[-3.71,-0.24],[0,0],[-2.73,4.27],[0,0],[9.93,-2.3],[-0.13,0.43],[0.07,0.19],[0.28,0.18],[0.16,-0.01],[0,0],[6.51,-5.62],[0,0],[12.96,11.6],[0,0],[-5.48,0],[0,0],[7.82,13.69],[0,0],[-2.07,-0.5],[-2.91,2.56],[0,0],[-2.66,6.66],[-6.24,2.5],[-4.39,-3.19],[-5.05,-10.4],[-0.34,-2.37],[0,0],[-1.8,-3.45],[0,0],[0,-6.62],[0,0],[0.96,1.94],[0,0],[0.91,6.75],[0,0],[0.67,7.23],[0,0],[-3.32,1.62],[0,0],[-1.6,2.9],[-2.9,-1.6],[0,0],[2.98,-5.38],[0,0],[2.04,-1.01],[0,0],[-0.61,-6.55],[0,0],[-0.25,-1.88],[0,0],[-3.61,-0.5],[0,0],[-9.32,4.66],[0,0],[-3.85,-2.38],[0,0],[-15.47,5.71],[0,0],[-1.55,-7.16],[0,0],[1.95,-3.46],[0,0],[-1.22,-8.34],[0,0],[1.74,2.49],[0,0],[6.62,2.43],[0,0],[1.26,3.27],[0,0],[9.81,4.2],[0,0],[-0.52,3.94],[0,0],[0,0],[12.37,1.72],[0,0],[0,2.14],[0,0],[1.73,3.32],[1.42,9.84],[2.15,4.43],[1.69,1.23],[5.39,-2.15],[0,0],[2.09,-5.25],[0,0],[0,0],[0,0],[4.48,-3.68],[0,0],[5.25,1.27],[0,0],[-7.2,-12.63],[0,0],[6.55,0],[0,0],[-1.91,-1.71],[0,0],[-10.05,8.68],[0.28,-0.92],[0,0],[-15.41,3.57],[0,0],[4.36,-6.82]],"v":[[-188.811,-117.657],[-142.961,-114.677],[-128.701,-107.787],[-122.251,-100.677],[-115.031,-102.637],[-83.741,-104.267],[-71.511,-66.047],[-59.501,-55.917],[-47.031,-54.157],[-37.471,-9.097],[-38.061,-8.747],[-43.821,5.273],[-36.961,30.993],[-21.941,37.113],[-21.471,36.823],[-20.981,36.503],[-20.981,36.503],[-19.111,35.223],[-16.521,33.673],[-1.181,28.783],[-0.081,28.703],[18.539,26.743],[39.349,34.603],[39.639,34.923],[49.179,39.203],[52.209,39.203],[77.399,58.783],[71.429,82.713],[53.189,102.743],[44.709,103.143],[44.309,94.663],[62.559,74.633],[65.779,61.743],[52.209,51.203],[49.179,51.203],[30.969,43.233],[30.669,42.893],[19.789,38.683],[0.879,40.673],[0.239,40.703],[-6.191,42.343],[-7.001,42.623],[-10.981,44.313],[-11.761,44.763],[-12.201,45.043],[-12.201,45.043],[-12.681,45.373],[-12.681,45.373],[-13.941,46.223],[-15.801,47.423],[-48.561,34.083],[-55.421,8.363],[-44.131,-19.097],[-48.711,-42.277],[-61.171,-44.037],[-82.941,-62.387],[-95.171,-100.607],[-103.231,-100.397],[-103.281,-100.187],[-131.151,-92.617],[-137.591,-99.737],[-143.741,-102.707],[-189.591,-105.687],[-198.841,-100.997],[-204.821,-91.637],[-198.781,-83.087],[-191.331,-84.807],[-175.681,-68.037],[-175.691,-67.227],[-175.171,-66.627],[-174.411,-66.387],[-173.681,-66.727],[-163.561,-75.457],[-140.981,-75.257],[-97.871,-36.697],[-110.111,-3.297],[-110.631,-3.297],[-116.831,7.383],[-103.511,30.743],[-123.101,57.503],[-123.571,57.393],[-131.341,60.283],[-138.311,70.243],[-138.491,70.703],[-155.021,86.773],[-171.851,84.683],[-182.031,71.373],[-191.621,37.013],[-193.651,30.493],[-195.381,27.173],[-198.241,16.013],[-198.251,15.483],[-209.691,2.333],[-224.521,0.273],[-222.611,6.483],[-220.271,23.733],[-231.391,35.163],[-230.511,44.763],[-240.231,62.073],[-249.821,66.773],[-257.661,74.223],[-280.001,114.613],[-288.151,116.953],[-290.501,108.803],[-268.161,68.413],[-255.091,55.993],[-245.501,51.303],[-242.451,45.873],[-243.591,33.613],[-232.541,22.603],[-234.511,8.093],[-237.081,3.213],[-243.191,-2.327],[-253.731,-0.597],[-258.071,1.573],[-287.311,0.233],[-296.141,-5.257],[-308.981,-6.727],[-309.351,-6.587],[-345.251,-26.297],[-346.191,-30.637],[-343.031,-51.657],[-328.481,-77.607],[-326.361,-89.007],[-327.471,-96.587],[-313.001,-102.327],[-307.591,-94.597],[-300.541,-89.177],[-299.771,-88.897],[-285.211,-74.847],[-285.041,-74.427],[-278.031,-67.157],[-273.491,-65.207],[-259.031,-40.307],[-259.071,-39.927],[-255.191,-29.377],[-237.881,-13.697],[-208.041,-9.547],[-186.251,15.103],[-186.251,15.483],[-184.741,21.623],[-183.011,24.943],[-179.741,35.293],[-171.241,66.123],[-164.811,74.963],[-159.481,75.633],[-149.761,66.543],[-149.641,66.263],[-139.271,51.273],[-139.011,51.053],[-139.011,51.053],[-138.491,50.613],[-121.141,45.643],[-120.741,45.733],[-113.931,36.683],[-127.261,13.323],[-111.071,-15.287],[-110.631,-15.297],[-105.871,-27.747],[-148.981,-66.317],[-155.721,-66.377],[-165.841,-57.647],[-187.161,-71.537],[-188.631,-73.117],[-196.071,-71.397],[-214.941,-98.097],[-208.961,-107.457]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-7.92,-0.36],[0,0],[0,0],[-3.65,-3.86],[0,0],[0,0],[-0.7,3.36],[-5.37,-15.36],[0,0],[0,0],[-5.47,-0.9],[0,0],[0,0],[19.32,-12],[0,0],[-1.28,-5.35],[0,0],[0,0],[-5.8,3.45],[0,0],[0,0],[0,0],[-0.09,0.06],[0,0],[-1.24,0.64],[-5.99,0.94],[-0.52,-3.28],[3.27,-0.52],[2.49,-1.25],[0,0],[0.28,-0.17],[0,0],[0,0],[0,0],[0,0],[0,0],[0.65,-0.39],[4,13.92],[0,0],[0,0],[-9.51,5.58],[11.45,1.91],[0,0],[0,0],[3.23,9.58],[0,0],[0,0],[1.03,-4.02],[0,0],[8.95,9.43],[0,0],[0,0],[2.24,0.23],[0,0],[0,0],[2.03,-2.97],[0,0],[0,0],[-4.83,0.94],[0,0],[0,0],[2.98,-9.75],[-0.06,-0.15],[-0.28,-0.18],[-0.2,0],[-0.28,0.21],[0,0],[0,0],[-6.4,-5.49],[0,0],[0,0],[17.21,-0.43],[0,0],[-2.49,-4.72],[0,0],[0,0],[15.26,3.31],[0,0],[3.07,-2.7],[1.53,-3.64],[0,0],[8.68,-3.47],[4.75,3.44],[2.5,5.15],[1.49,10.32],[0.89,1.84],[0,0],[0,0],[0.08,3.89],[0,0],[6.4,1.05],[0,0],[0,0],[-0.32,-1.98],[0,0],[0,0],[6.17,0.53],[0,0],[0,0],[6.32,-3.26],[0,0],[0,0],[1.79,-3.05],[0,0],[0,0],[2.9,1.61],[-1.44,2.86],[0,0],[0,0],[-5.31,2.72],[0,0],[0,0],[0.11,2.18],[0,0],[0,0],[-5.96,-0.43],[0,0],[0,0],[1.26,1.25],[0,0],[0,0],[3.15,-1.48],[0,0],[0,0],[8.77,5.25],[0,0],[0,0],[4.28,-1.45],[0,0],[3.71,15.82],[0,0],[0,0],[-3.39,6.28],[0,0],[0,0],[0.46,3.79],[0,0],[0,0],[-4.9,-6.61],[0,0],[0,0],[-2.69,-1.07],[0,0],[0,0],[-2.66,-6.51],[0,0],[-3.06,-1.41],[0,0],[0,0],[1.21,-10.57],[0,0],[-2.77,-2.66],[0,0],[0,0],[0,0],[-0.19,-12.45],[0,0],[-0.86,-1.8],[0,0],[0,0],[-0.51,-3.51],[-4.26,-8.76],[-2.05,-1.49],[-2.11,0.85],[-1.5,3.6],[0,0],[-4.66,4.1],[0,0],[0,0],[0,0],[-6.81,-1.49],[0,0],[2.46,4.65],[0,0],[0,0],[-14.43,0.31],[0,0],[4.64,4.41],[0,0],[0,0],[1.94,-1.51],[0,0],[0,0],[-3.88,12.7],[0.88,-0.12],[0,0],[0,0],[-8.02,13.27],[0,0]],"o":[[4.28,-6.7],[0,0],[0,0],[5.32,0.35],[0,0],[0,0],[2.3,2.55],[3.37,-16.13],[0,0],[0,0],[1.69,5.3],[0,0],[0,0],[22.76,3.21],[0,0],[-4.76,2.8],[0,0],[0,0],[1.74,6.52],[0,0],[0,0],[0,0],[0.09,-0.06],[0,0],[0.86,-0.58],[3.57,-1.86],[3.27,-0.52],[0.51,3.27],[-4.54,0.72],[0,0],[-0.24,0.13],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.57,0.39],[-12.51,7.45],[0,0],[0,0],[-2.84,-10.65],[10.12,-5.93],[0,0],[0,0],[-10.04,-1.41],[0,0],[0,0],[-1.29,-4.04],[0,0],[-2.68,12.84],[0,0],[0,0],[-1.52,-1.67],[0,0],[0,0],[-3.6,-0.23],[0,0],[0,0],[-2.69,4.21],[0,0],[0,0],[9.93,-2.3],[-0.13,0.43],[0.07,0.19],[0.28,0.18],[0.14,-0.01],[0,0],[0,0],[6.41,-5.54],[0,0],[0,0],[12.96,11.6],[0,0],[-5.4,0],[0,0],[0,0],[7.82,13.69],[0,0],[-2.07,-0.5],[-2.91,2.56],[0,0],[-2.66,6.66],[-6.24,2.5],[-4.39,-3.19],[-5.05,-10.4],[-0.31,-2.18],[0,0],[0,0],[-1.8,-3.45],[0,0],[0,-6.52],[0,0],[0,0],[0.88,1.78],[0,0],[0,0],[0.9,6.66],[0,0],[0,0],[0.66,7.11],[0,0],[0,0],[-3.18,1.56],[0,0],[0,0],[-1.6,2.9],[-2.83,-1.56],[0,0],[0,0],[2.89,-5.21],[0,0],[0,0],[1.97,-0.97],[0,0],[0,0],[-0.6,-6.46],[0,0],[0,0],[-0.24,-1.77],[0,0],[0,0],[-3.46,-0.48],[0,0],[0,0],[-9.17,4.59],[0,0],[0,0],[-3.85,-2.38],[0,0],[-15.32,5.65],[0,0],[0,0],[-1.51,-6.99],[0,0],[0,0],[1.87,-3.33],[0,0],[0,0],[-1.2,-8.26],[0,0],[0,0],[1.67,2.38],[0,0],[0,0],[6.62,2.43],[0,0],[1.22,3.16],[0,0],[0,0],[9.81,4.2],[0,0],[-0.5,3.82],[0,0],[0,0],[0,0],[12.37,1.72],[0,0],[0,1.99],[0,0],[0,0],[1.73,3.32],[1.42,9.84],[2.15,4.43],[1.69,1.23],[5.39,-2.15],[0,0],[2.09,-5.25],[0,0],[0,0],[0,0],[4.48,-3.68],[0,0],[5.18,1.25],[0,0],[0,0],[-7.2,-12.63],[0,0],[6.47,0],[0,0],[0,0],[-1.85,-1.65],[0,0],[0,0],[-10.05,8.68],[0.27,-0.88],[0,0],[0,0],[-15.26,3.54],[0,0],[0,0]],"v":[[187.039,-107.457],[206.769,-117.687],[207.189,-117.657],[253.039,-114.677],[266.989,-108.127],[267.299,-107.787],[273.749,-100.677],[280.969,-102.637],[312.099,-104.737],[312.259,-104.267],[324.489,-66.047],[336.169,-55.967],[336.499,-55.917],[348.969,-54.157],[358.529,-9.097],[357.939,-8.747],[352.099,4.973],[352.179,5.273],[359.039,30.993],[374.059,37.113],[374.529,36.823],[374.529,36.823],[375.019,36.503],[375.279,36.323],[376.289,35.633],[379.479,33.673],[394.819,28.783],[401.679,33.773],[396.689,40.633],[385.279,44.183],[385.019,44.313],[384.239,44.763],[383.799,45.043],[383.799,45.043],[383.319,45.373],[383.319,45.373],[382.059,46.223],[380.199,47.423],[347.559,34.513],[347.439,34.083],[340.579,8.363],[351.869,-19.097],[347.639,-42.217],[347.289,-42.277],[334.829,-44.037],[313.199,-61.977],[313.059,-62.387],[300.829,-100.607],[292.769,-100.397],[292.719,-100.187],[265.119,-92.327],[264.849,-92.617],[258.409,-99.737],[252.579,-102.677],[252.259,-102.707],[206.409,-105.687],[197.329,-101.267],[197.159,-100.997],[191.179,-91.637],[197.009,-83.037],[197.219,-83.087],[204.669,-84.807],[220.319,-68.037],[220.309,-67.227],[220.829,-66.627],[221.589,-66.387],[222.209,-66.637],[222.319,-66.727],[232.439,-75.457],[254.729,-75.507],[255.019,-75.257],[298.129,-36.697],[285.889,-3.297],[285.369,-3.297],[279.049,7.173],[279.169,7.383],[292.489,30.743],[272.899,57.503],[272.429,57.393],[264.659,60.283],[257.689,70.243],[257.509,70.703],[240.979,86.773],[224.149,84.683],[213.969,71.373],[204.379,37.013],[202.579,30.953],[202.349,30.493],[200.619,27.173],[197.759,16.013],[197.749,15.483],[186.619,2.383],[186.309,2.333],[171.479,0.273],[173.299,5.933],[173.389,6.483],[175.729,23.733],[164.859,35.193],[164.609,35.163],[165.489,44.763],[156.099,61.913],[155.769,62.073],[146.179,66.773],[138.559,73.843],[138.339,74.223],[115.999,114.613],[107.849,116.953],[105.389,109.013],[105.499,108.803],[127.839,68.413],[140.409,56.243],[140.909,55.993],[150.499,51.303],[153.559,46.103],[153.549,45.873],[152.409,33.613],[163.199,22.573],[163.459,22.603],[161.489,8.093],[159.169,3.443],[158.919,3.213],[152.809,-2.327],[142.679,-0.797],[142.269,-0.597],[137.929,1.573],[109.119,0.493],[108.689,0.233],[99.859,-5.257],[87.019,-6.727],[86.649,-6.587],[50.859,-25.817],[50.749,-26.297],[49.809,-30.637],[52.719,-51.207],[52.969,-51.657],[67.519,-77.607],[69.689,-88.577],[69.639,-89.007],[68.529,-96.587],[82.849,-102.537],[82.999,-102.327],[88.409,-94.597],[95.089,-89.317],[95.459,-89.177],[96.229,-88.897],[110.789,-74.847],[110.959,-74.427],[117.639,-67.307],[117.969,-67.157],[122.509,-65.207],[136.969,-40.307],[136.929,-39.927],[140.549,-29.617],[140.809,-29.377],[158.119,-13.697],[187.959,-9.547],[209.749,15.103],[209.749,15.483],[211.059,21.243],[211.259,21.623],[212.989,24.943],[216.259,35.293],[224.759,66.123],[231.189,74.963],[236.519,75.633],[246.239,66.543],[246.359,66.263],[256.729,51.273],[256.989,51.053],[256.989,51.053],[257.509,50.613],[274.859,45.643],[275.259,45.733],[282.169,36.883],[282.069,36.683],[268.739,13.323],[284.929,-15.287],[285.369,-15.297],[290.299,-27.597],[290.129,-27.747],[247.019,-66.317],[240.469,-66.537],[240.279,-66.377],[230.159,-57.647],[208.839,-71.537],[207.489,-73.137],[207.369,-73.117],[199.929,-71.397],[180.809,-97.697],[181.059,-98.097]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-5.3,-5.76],[0,0],[-3.51,-0.1],[0,0],[0,0],[-2.93,-11.52],[5.66,-6.44],[0,0],[0,0],[2.45,2.23],[-2.06,2.45],[0,0],[0,0],[1.17,4.56],[6.26,0.14],[0,0],[0,0],[4.68,5.08],[0,0],[3.97,-0.31],[0,0],[0,0],[0.35,3.3],[-3.18,0.46],[0,0]],"o":[[7.79,-0.82],[0,0],[2.34,2.63],[0,0],[0,0],[11.88,0],[2.13,8.33],[0,0],[0,0],[-2.24,2.45],[-2.39,-2.17],[0,0],[0,0],[3.17,-3.48],[-1.55,-6.1],[0,0],[0,0],[-6.93,0],[0,0],[-2.65,-2.98],[0,0],[0,0],[-3.3,0.35],[-0.34,-3.22],[0,0],[0,0]],"v":[[-377.461,26.752],[-356.651,34.602],[-356.361,34.922],[-347.191,39.202],[-346.821,39.202],[-343.791,39.202],[-318.601,58.782],[-324.261,82.372],[-324.571,82.712],[-342.811,102.742],[-351.291,103.142],[-351.851,94.862],[-351.691,94.662],[-333.441,74.632],[-330.231,61.752],[-343.461,51.212],[-343.791,51.202],[-346.821,51.202],[-365.031,43.232],[-365.331,42.892],[-375.851,38.652],[-376.211,38.682],[-395.121,40.672],[-401.721,35.332],[-396.601,28.762],[-396.381,28.742]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[2.71,2.68],[1.96,-3.65],[0,0],[0,0],[-0.8,-4.16],[0,0],[0,0],[-8.55,2.96],[0,0],[-7.03,-4.2],[0,0],[0,0],[-5.51,2.61],[0,0],[0,0],[-1.16,0.41],[0,0],[0,0],[-0.87,7.7],[0,0],[4.81,2.21],[0,0],[0,0],[2.48,6.08],[0,0],[3.36,1.34],[0,0],[0,0]],"o":[[-0.33,4.09],[0,0],[0,0],[-2.08,3.7],[0,0],[0,0],[1.92,8.89],[0,0],[7.7,-2.84],[0,0],[0,0],[5.2,3.23],[0,0],[0,0],[1.1,-0.56],[0,0],[0,0],[-5.76,-5.21],[0,0],[0.69,-5.28],[0,0],[0,0],[-6.06,-2.59],[0,0],[-1.31,-3.38],[0,0],[0,0],[-3.62,-1.33]],"v":[[81.729,-83.995],[78.269,-72.255],[77.989,-71.735],[63.429,-45.785],[61.449,-33.605],[61.539,-33.175],[62.479,-28.835],[82.199,-17.745],[82.489,-17.845],[105.779,-15.695],[106.179,-15.445],[115.019,-9.965],[132.199,-8.985],[132.559,-9.155],[136.909,-11.325],[140.309,-12.775],[140.999,-13.015],[132.759,-20.485],[124.979,-41.045],[125.029,-41.475],[118.069,-54.055],[117.789,-54.175],[113.249,-56.125],[99.929,-69.675],[99.759,-70.095],[92.439,-77.495],[92.099,-77.625],[91.329,-77.905]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[2.71,2.68],[2.13,-3.79],[0,0],[-0.93,-4.29],[0,0],[-8.55,2.96],[0,0],[-7.1,-4.41],[0,0],[-5.59,2.79],[0,0],[-1.4,0.46],[0,0],[-0.87,7.7],[0,0],[4.98,2.13],[0,0],[2.48,6.08],[0,0],[3.52,1.29],[0,0]],"o":[[-0.35,4.28],[0,0],[-2.15,3.83],[0,0],[1.92,8.89],[0,0],[7.85,-2.9],[0,0],[5.31,3.3],[0,0],[1.32,-0.67],[0,0],[-5.76,-5.21],[0,0],[0.7,-5.38],[0,0],[-6.06,-2.59],[0,0],[-1.35,-3.5],[0,0],[-3.62,-1.33]],"v":[[-314.271,-83.995],[-318.011,-71.735],[-332.571,-45.785],[-334.461,-33.175],[-333.521,-28.835],[-313.801,-17.745],[-313.511,-17.845],[-289.821,-15.445],[-280.981,-9.965],[-263.441,-9.155],[-259.091,-11.325],[-255.001,-13.015],[-263.241,-20.485],[-271.021,-41.045],[-270.971,-41.475],[-278.211,-54.175],[-282.751,-56.125],[-296.071,-69.675],[-296.241,-70.095],[-303.901,-77.625],[-304.671,-77.905]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"map1","np":7,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"c1","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,251,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":[{"d":1,"ty":"el","s":{"a":0,"k":[214,214],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.959999952129,0.959999952129,0.959999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"r1","parent":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,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":[[-26.75,1.76],[-23.1,-17.7],[-5.7,-28.54],[14.52,-25.22],[27.55,-9.39],[26.91,11.09],[12.92,26.08],[-5.36,26.13],[-3.66,-0.98],[0.74,-3.71],[-10.43,-21.04],[-23.83,-9.83],[-24.4,8.32],[-12.86,22.33],[5.05,25.28],[20.46,15.68],[25.72,-1.69],[17.54,-15.41],[2.67,2.67],[-2.82,2.52]],"o":[[29.04,-1.91],[23.1,17.7],[5.7,28.54],[-14.53,25.22],[-27.54,9.39],[-26.9,-11.1],[-11.9,-24.02],[0.77,-3.71],[3.66,0.97],[-4.53,22.92],[11.44,23.1],[23.83,9.83],[24.4,-8.31],[12.87,-22.34],[-5.05,-25.27],[-20.46,-15.68],[-23.43,1.54],[-2.85,2.5],[-2.68,-2.68],[19.91,-17.76]],"v":[[-7.88,-119.74],[73,-95.24],[117.68,-23.5],[103.99,59.89],[38.72,113.58],[-45.75,110.94],[-107.53,53.27],[-117.55,-24.14],[-109.35,-29.05],[-104.27,-20.62],[-95.24,47.18],[-40.52,98.26],[34.3,100.6],[92.1,53.05],[104.23,-20.82],[64.66,-84.36],[-6.98,-106.06],[-70.15,-79.85],[-80,-80],[-79.87,-89.56]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-4.97,0],[0,-4.97],[4.97,0],[0,4.97]],"o":[[4.97,0],[0,4.97],[-4.97,0],[0,-4.97]],"v":[[-99,-64],[-90,-55],[-99,-46],[-108,-55]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"r1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"f2","parent":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[16.292,-169.35,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.25,1.32],[0,0],[0.94,-1.6],[0,0],[-2.29,-0.04],[0,0],[0,0]],"o":[[0,0],[-0.34,-1.82],[0,0],[-1.17,1.98],[0,0],[0,0],[-1.33,-0.13]],"v":[[-20.987,1.962],[-22.787,-7.748],[-26.477,-8.398],[-33.607,3.722],[-31.077,8.242],[34.023,9.392],[-18.317,4.402]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.721568644047,0.568627476692,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"f2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"f1","parent":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-7.547,-155.303,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":[[-2.42,2.01],[0,0],[-0.43,-2.24],[0,0],[-1.33,-0.13],[0,0],[3.34,-0.74],[0,0]],"o":[[0,0],[1.75,-1.46],[0,0],[0.25,1.31],[0,0],[3.41,0.32],[0,0],[-3.07,0.68]],"v":[[-55.596,19.196],[-3.826,-23.814],[1.034,-22.084],[2.964,-12.074],[5.634,-9.654],[53.974,-5.134],[54.344,0.786],[-53.036,24.436]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.529411792755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"f1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"c0","sr":1,"ks":{"o":{"a":0,"k":0,"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":120,"s":[-720]}],"ix":10},"p":{"a":0,"k":[200,251,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":[{"d":1,"ty":"el","s":{"a":0,"k":[214,214],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.768627464771,0.768627464771,0.768627464771,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/app/src/main/assets/touch02.json b/app/src/main/assets/touch02.json
new file mode 100644
index 0000000..4bafee3
--- /dev/null
+++ b/app/src/main/assets/touch02.json
@@ -0,0 +1 @@
+{"v":"5.7.13","fr":24,"ip":0,"op":96,"w":600,"h":600,"nm":"Frame 4","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Ellipse 1","sr":1,"ks":{"o":{"a":0,"k":0,"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":96,"s":[360]}],"ix":10},"p":{"a":0,"k":[300,300,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":[{"d":1,"ty":"el","s":{"a":0,"k":[40,40],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","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":"填充 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":"变换"}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"“TOUCH ME”轮廓","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24,"s":[90]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":48,"s":[95]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[90]},{"t":96,"s":[95]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[302.5,343.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":24,"s":[98,98,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":48,"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":72,"s":[98,98,100]},{"t":96,"s":[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],[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":[[-121.213,-25.428],[-121.213,-21.839],[-111.062,-21.839],[-111.062,4.698],[-106.94,4.698],[-106.94,-21.839],[-96.788,-21.839],[-96.788,-25.428]],"c":true},"ix":2},"nm":"T","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"T","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":[[5.318,0],[2.597,-3.719],[0,-4.074],[-2.365,-2.953],[-4.635,0],[-2.68,3.5],[0,4.498],[1.996,2.666]],"o":[[-5.086,0],[-2.024,2.899],[0,4.512],[2.652,3.063],[4.963,0],[2.283,-2.98],[0,-4.156],[-2.557,-3.418]],"v":[[-80.772,-26.249],[-92.297,-20.67],[-95.332,-10.211],[-91.785,0.986],[-80.854,5.58],[-69.39,0.33],[-65.965,-10.888],[-68.959,-21.122]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[3.596,0],[1.688,2.292],[0,3.339],[-1.969,2.141],[-3.117,0],[-1.853,-2.162],[0,-3.544],[1.606,-2.579]],"o":[[-3.787,0],[-1.689,-2.292],[0,-4.173],[1.969,-2.141],[3.213,0],[1.852,2.162],[0,3.352],[-1.607,2.579]],"v":[[-80.362,1.95],[-88.575,-1.488],[-91.108,-9.934],[-88.155,-19.406],[-80.526,-22.619],[-72.928,-19.376],[-70.149,-10.817],[-72.558,-1.919]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"O","np":5,"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],[-1.002,-1.996],[-5.104,0],[-1.839,3.637],[0,3.705],[0,0],[0,0],[0,0],[0.675,-1.285],[3.486,0],[1.226,2.188],[0,2.188],[0,0]],"o":[[0,0],[0,3.705],[1.825,3.637],[5.103,0],[1.001,-1.996],[0,0],[0,0],[0,0],[0,2.174],[-1.254,2.365],[-2.908,0],[-0.827,-1.449],[0,0],[0,0]],"v":[[-60.818,-25.428],[-60.818,-8.509],[-59.316,0.042],[-48.923,5.498],[-38.51,0.042],[-37.008,-8.509],[-37.008,-25.428],[-41.13,-25.428],[-41.13,-6.807],[-42.143,-1.619],[-49.254,1.929],[-55.455,-1.352],[-56.696,-6.807],[-56.696,-25.428]],"c":true},"ix":2},"nm":"U","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"U","np":3,"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.77,0],[2.513,-3.092],[0,-4.446],[-3.095,-2.804],[-3.46,0],[-2.365,2.584],[-0.352,3.172],[0,0],[0.819,-1.217],[2.955,0],[1.618,2.196],[0,3.531],[-1.793,2.087],[-2.914,0],[-1.323,-1.135],[-0.443,-1.941],[0,0],[2.081,2.01]],"o":[[-4.419,0],[-2.324,2.846],[0,5.856],[2.351,2.121],[4.014,0],[1.973,-2.146],[0,0],[-0.403,1.983],[-1.544,2.311],[-3.21,0],[-1.619,-2.196],[0,-4.31],[1.793,-2.087],[2.39,0],[1.322,1.135],[0,0],[-0.23,-2.556],[-2.081,-2.01]],"v":[[-18.243,-26.249],[-28.641,-21.611],[-32.127,-10.673],[-27.485,2.317],[-18.768,5.498],[-9.2,1.622],[-5.713,-6.356],[-9.692,-6.356],[-11.525,-1.557],[-18.274,1.909],[-25.516,-1.385],[-27.944,-9.975],[-25.255,-19.571],[-18.196,-22.701],[-12.627,-20.999],[-9.979,-16.384],[-6,-16.384],[-9.466,-23.234]],"c":true},"ix":2},"nm":"C","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"C","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],[0,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":[[-0.34,4.698],[3.782,4.698],[3.782,-9.391],[19.265,-9.391],[19.265,4.698],[23.387,4.698],[23.387,-25.428],[19.265,-25.428],[19.265,-12.98],[3.782,-12.98],[3.782,-25.428],[-0.34,-25.428]],"c":true},"ix":2},"nm":"H","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"H","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":[[0,0],[0,0],[0,0],[0.041,1.511],[0,0.738],[0,0],[0,0],[0,0],[0,0],[0.027,-1.422],[0,-0.615],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-0.711],[-0.041,-1.511],[0,0],[0,0],[0,0],[0,0],[0,1.627],[-0.028,1.422],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[41.455,4.698],[45.351,4.698],[45.351,-13.083],[45.29,-16.415],[45.228,-19.789],[45.228,-20.711],[53.911,4.698],[57.955,4.698],[66.556,-20.711],[66.515,-16.138],[66.474,-13.083],[66.474,4.698],[70.371,4.698],[70.371,-25.428],[64.565,-25.428],[55.964,0.042],[47.301,-25.428],[41.455,-25.428]],"c":true},"ix":2},"nm":"M","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"M","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":[[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":[[76.933,4.698],[99.102,4.698],[99.102,1.109],[80.912,1.109],[80.912,-9.104],[97.441,-9.104],[97.441,-12.59],[80.912,-12.59],[80.912,-21.737],[98.795,-21.737],[98.795,-25.428],[76.933,-25.428]],"c":true},"ix":2},"nm":"E","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"E","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"“点我导航”轮廓","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[90]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":48,"s":[90]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[100]},{"t":96,"s":[90]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[302,280.667,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":24,"s":[104,104,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":48,"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":72,"s":[104,104,100]},{"t":96,"s":[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":[[-113.287,-25.546],[-83.703,-25.546],[-83.703,-17.231],[-113.287,-17.231]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,-3.416],[0,0],[0.967,4.318]],"o":[[0.838,4.447],[0,0],[-0.064,-3.416],[0,0]],"v":[[-109.999,-5.179],[-108.646,8.421],[-100.847,7.454],[-102.652,-5.888]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-0.645,-3.416],[0,0],[1.934,4.061]],"o":[[1.869,4.189],[0,0],[-0.773,-3.416],[0,0]],"v":[[-96.722,-5.114],[-92.275,8.099],[-84.734,6.165],[-89.632,-6.726]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[-1.354,-3.738],[0,0],[3.158,4.125]],"o":[[3.029,4.318],[0,0],[-1.611,-3.803],[0,0]],"v":[[-83.574,-5.501],[-75.646,8.421],[-68.169,5.521],[-76.677,-8.015]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[3.158,-2.771],[0,0],[-1.869,5.156]],"o":[[-1.869,4.705],[0,0],[3.352,-3.48],[0,0]],"v":[[-120.57,-7.499],[-128.691,5.134],[-121.537,8.614],[-113.158,-5.63]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"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":[[-120.699,-32.7],[-120.699,-10.077],[-75.775,-10.077],[-75.775,-32.7],[-94.724,-32.7],[-94.724,-38.759],[-71.521,-38.759],[-71.521,-45.978],[-94.724,-45.978],[-94.724,-51.714],[-102.587,-51.714],[-102.587,-32.7]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"点","np":9,"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.611,-3.029],[0,0],[3.48,3.029]],"o":[[3.48,3.223],[0,0],[-1.869,-3.094],[0,0]],"v":[[-21.121,-45.978],[-11.968,-35.214],[-5.716,-39.532],[-15.32,-49.909]],"c":true},"ix":2},"nm":"我","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[2.385,-2.707],[0.516,3.932],[0,0],[0,0],[0,0],[-0.129,6.059],[0,0],[-0.516,-5.865],[0,0],[0,0],[-3.287,0.967],[0,0],[9.023,-1.16],[-0.322,-1.869],[-3.48,0.516],[0,0],[0,0],[0,0],[0,0],[0,0],[3.674,-0.516],[0,0],[0,0],[0,0],[1.096,0],[3.609,0.193],[-0.322,-2.127],[-2.578,1.225],[0,4.189],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.418,-5.092],[5.092,-2.32],[-1.096,-1.869],[-3.738,3.029],[-4.705,0],[-1.225,11.344],[1.676,1.805],[1.289,0],[1.74,4.963],[-2.9,5.221]],"o":[[-1.676,3.158],[-0.709,-3.287],[0,0],[0,0],[0,0],[-0.516,-5.736],[0,0],[0.064,5.93],[0,0],[0,0],[3.803,-0.773],[0,0],[-6.574,2.191],[0.838,1.74],[3.287,-0.387],[0,0],[0,0],[0,0],[0,0],[0,0],[-5.092,0.838],[0,0],[0,0],[0,0],[0,1.031],[-1.16,0.064],[1.096,2.127],[5.285,0],[2.578,-1.225],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.773,6.316],[-4.447,3.738],[1.934,1.74],[4.189,-2.191],[2.771,6.316],[5.865,0],[-2.062,-0.838],[-0.322,7.67],[-1.998,0],[4.189,-4.254],[0,0]],"v":[[-14.031,-23.935],[-20.218,-15.104],[-22.087,-26.062],[-5.201,-26.062],[-5.201,-33.345],[-22.861,-33.345],[-23.505,-51.198],[-31.562,-51.198],[-30.789,-33.345],[-43.357,-33.345],[-43.357,-42.046],[-32.658,-44.688],[-37.943,-51.263],[-63.66,-45.849],[-61.468,-39.339],[-51.156,-40.692],[-51.156,-33.345],[-63.337,-33.345],[-63.337,-26.062],[-51.156,-26.062],[-51.156,-17.296],[-64.562,-15.169],[-62.693,-7.37],[-51.156,-9.626],[-51.156,-0.28],[-52.638,1.073],[-61.21,1.009],[-58.503,8.808],[-46.773,7.325],[-43.357,-0.216],[-43.357,-11.237],[-32.722,-13.493],[-33.238,-20.454],[-43.357,-18.649],[-43.357,-26.062],[-30.08,-26.062],[-26.792,-8.659],[-41.359,0.558],[-36.138,6.745],[-24.15,-1.118],[-12.999,9.065],[-3.46,-5.114],[-9.841,-9.562],[-12.226,1.202],[-17.962,-6.726],[-7.263,-20.97]],"c":true},"ix":2},"nm":"我","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"我","np":5,"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],[-1.998,-3.094],[0,0],[3.48,2.578],[0,0],[0,0],[1.354,0],[3.932,0.193],[-0.387,-2.062],[-3.029,0.967],[0,3.996],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[4.125,3.029],[0,0],[-1.805,-2.514],[0,0],[0,0],[0,0.967],[-1.225,0],[1.031,1.934],[5.994,0],[3.094,-0.967],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[9.622,-6.919],[20.708,3.716],[26.379,-1.569],[17.549,-9.755],[37.208,-9.755],[37.208,0.751],[35.467,2.04],[25.155,1.847],[27.733,8.808],[41.139,7.776],[45.264,0.944],[45.264,-9.755],[58.477,-9.755],[58.477,-16.909],[45.264,-16.909],[45.264,-20.647],[37.208,-20.647],[37.208,-16.909],[1.049,-16.909],[1.049,-9.755],[12.715,-9.755]],"c":true},"ix":2},"nm":"导","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-12.568,0],[-3.094,0],[-1.031,6.51],[1.934,1.031],[4.963,0],[3.287,0],[0,2.707],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,7.477],[3.029,0],[9.217,0],[-2.256,-0.322],[-0.58,3.416],[-4.189,0],[-6.896,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[5.303,-46.106],[5.303,-31.282],[21.739,-22.001],[44.426,-22.001],[57.639,-29.993],[50.356,-32.185],[43.717,-28.253],[21.61,-28.253],[13.424,-31.411],[13.424,-32.507],[50.743,-32.507],[50.743,-49.974],[5.303,-49.974]],"c":true},"ix":2},"nm":"导","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.424,-43.399],[43.137,-43.399],[43.137,-39.146],[13.424,-39.146]],"c":true},"ix":2},"nm":"导","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"导","np":6,"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.709,-2.578],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.418,2.965]],"o":[[1.225,2.643],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.773,-2.514],[0,0]],"v":[[99.725,-50.296],[103.012,-41.53],[90.379,-41.53],[90.379,-34.763],[123.444,-34.763],[123.444,-41.53],[106.428,-41.53],[111.004,-42.948],[107.202,-52.294]],"c":true},"ix":2},"nm":"航","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[3.996,-6.51],[-1.225,-1.16],[-0.322,8.121],[-0.645,-2.385],[0,0],[1.547,2.965],[0,0],[0,0],[0,0],[0,0],[0.709,0],[2.127,0.129],[-0.193,-1.869],[-1.934,1.16],[-0.387,0.902],[-1.225,-1.16],[0,7.928],[0,0],[0,0],[0,0],[-1.031,-1.16],[-1.547,0],[-0.967,0],[-0.902,0.709],[-0.387,1.482],[-0.064,3.094],[1.225,1.096],[0.129,-1.16],[0.129,-0.258],[0.258,0],[0.129,0],[0.129,0.193],[0,1.418],[0,0],[0,0],[0,0],[5.285,-6.059],[0,1.225],[0,0],[0,0],[0,0],[0,0],[0.58,-2.578],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.064,7.863],[1.611,0.709],[3.867,-6.188],[1.354,2.9],[0,0],[-0.838,-2.449],[0,0],[0,0],[0,0],[0,0],[0,0.773],[-0.709,0],[0.838,1.74],[3.738,0],[0.838,-0.516],[1.74,0.902],[6.381,-6.703],[0,0],[0,0],[0,0],[0,4.77],[1.096,1.096],[0.838,0],[1.289,0],[0.902,-0.773],[0.322,-1.547],[-1.611,-0.58],[-0.064,3.287],[-0.129,1.096],[-0.129,0.193],[-0.258,0],[-0.322,0],[-0.129,-0.258],[0,0],[0,0],[0,0],[0,6.445],[0.193,-0.902],[0,0],[0,0],[0,0],[0,0],[-0.258,2.32],[0,0],[0,0],[0,0]],"v":[[63.374,-24.321],[63.374,-18.134],[67.563,-18.134],[62.987,5.714],[68.788,9.452],[74.137,-14.073],[77.682,-5.243],[82.516,-7.435],[78.327,-16.716],[74.202,-14.976],[74.266,-18.134],[82.645,-18.134],[82.645,1.073],[81.678,2.104],[76.715,2.04],[78.713,8.614],[86.963,7.261],[88.768,5.198],[94.504,9.13],[102.045,-16.329],[102.045,-23.226],[109.909,-23.226],[109.909,-0.731],[111.327,6.616],[115.581,8.228],[118.61,8.228],[122.155,7.261],[124.024,3.974],[124.669,-4.599],[119.899,-7.306],[119.706,-0.345],[119.319,1.589],[118.61,1.847],[117.836,1.847],[117.192,1.589],[117.063,-0.925],[117.063,-29.929],[94.891,-29.929],[94.891,-16.458],[89.09,4.296],[89.348,1.202],[89.348,-43.979],[80.454,-43.979],[82.838,-50.683],[75.104,-51.907],[73.686,-43.979],[67.563,-43.979],[67.563,-24.321]],"c":true},"ix":2},"nm":"航","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.516,-2.191],[0,0],[1.289,2.771],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1.16,2.771],[0,0],[-0.645,-2.32],[0,0],[0,0],[0,0]],"v":[[82.645,-37.985],[82.645,-24.321],[74.266,-24.321],[74.266,-34.118],[77.167,-25.739],[82.001,-27.802],[78.649,-36.438],[74.266,-34.827],[74.266,-37.985]],"c":true},"ix":2},"nm":"航","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"航","np":6,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"eyes","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.333],"y":[0]},"t":-1,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":3,"s":[-15]},{"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":11,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":19,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":23,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":27,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":39,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":43,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":47,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":51,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":55,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":59,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":63,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":67,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":71,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":79,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":83,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":87,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":91,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":95,"s":[0]},{"t":99,"s":[-15]}],"ix":10},"p":{"a":0,"k":[0.925,-16.073,0],"ix":2,"l":2},"a":{"a":0,"k":[-7.299,4.336,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":[[-2.252,1.485],[0.912,1.383],[1.383,-0.912],[1.879,-0.198],[1.662,0.007],[0.343,0],[0,-1.657],[-1.657,0],[-0.314,-0.002],[-1.936,0.204]],"o":[[1.383,-0.912],[-0.912,-1.383],[-1.108,0.731],[-1.577,0.166],[-0.338,-0.001],[-1.657,0],[0,1.657],[0.288,0],[1.661,0.008],[2.321,-0.245]],"v":[[7.651,1.505],[8.504,-2.651],[4.348,-3.505],[-0.135,-2.156],[-4.978,-2.003],[-6,-2.006],[-9,0.994],[-6,3.994],[-5.095,3.997],[0.495,3.811]],"c":true},"ix":2},"nm":"路径 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":"填充 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":-21.337,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Vector 30 (Stroke)","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"et","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2.84,-238,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":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-1,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":3,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":7,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":11,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":23,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":27,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":31,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":39,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":43,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":47,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":55,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":59,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":63,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":67,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":75,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":79,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":83,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":87,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":91,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":95,"s":[{"i":[[-3.812,7.311],[3.095,3.886],[0,0],[-1.388,0.822],[0,0],[0.61,0.921],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.511,-0.979],[0,0],[-1.466,-0.673],[0,0],[3.057,-5.006],[-4.551,-6.875],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[37.627,18.495],[40.565,-0.386],[5.502,0.093],[5.693,-0.32],[40.478,-0.869],[35.512,-22.083],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]},{"t":99,"s":[{"i":[[-1.905,1.693],[0.907,1.011],[0,0],[-1.388,0.822],[0,0],[0.851,0.704],[7.713,3.003],[8.563,-2.588],[5.144,-7.319],[-0.466,-8.933],[-5.877,-6.744],[-8.786,-1.683],[-7.953,4.094]],"o":[[0.826,-0.734],[0,0],[-1.466,-0.673],[0,0],[1.182,-1.631],[-3.227,-2.667],[-8.336,-3.245],[-8.563,2.588],[-5.144,7.319],[0.466,8.933],[5.877,6.744],[8.786,1.683],[7.359,-3.789]],"v":[[27.002,31.495],[26.065,28.864],[3.627,1.593],[3.443,-1.945],[26.978,-27.119],[27.637,-29.833],[16.671,-37.275],[-9.411,-38.29],[-30.566,-23.001],[-37.786,2.083],[-27.997,26.279],[-5.367,39.286],[20.468,35.564]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.876157641411,0.722320437431,0.527761459351,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"et","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"c1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":4,"s":[100]},{"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":16,"s":[0]},{"t":20,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[119,-207.846,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":8,"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":16,"s":[0,0,100]},{"t":20,"s":[-100,-100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":30,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"c2","sr":1,"ks":{"o":{"a":1,"k":[{"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":16,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24,"s":[0]},{"t":28,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[206.846,-120,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":16,"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":24,"s":[0,0,100]},{"t":28,"s":[-100,-100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":60,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"c3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[0]},{"t":36,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[-239,0,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":24,"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":32,"s":[0,0,100]},{"t":36,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":-90,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"c4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":40,"s":[0]},{"t":44,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[-206.846,-120,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":32,"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":40,"s":[0,0,100]},{"t":44,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":-60,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"c5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":40,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":48,"s":[0]},{"t":52,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[-119,-207.846,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":40,"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":48,"s":[0,0,100]},{"t":52,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":-30,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"c6","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":44,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":48,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":56,"s":[0]},{"t":60,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[1,-240,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":48,"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":56,"s":[0,0,100]},{"t":60,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":"变换"}],"nm":"c6","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"c7","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":52,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":56,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":64,"s":[0]},{"t":68,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[121,-207.846,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":56,"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":64,"s":[0,0,100]},{"t":68,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":30,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c7","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"c8","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":64,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0]},{"t":76,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[208.846,-120,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":64,"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":72,"s":[0,0,100]},{"t":76,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":60,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c8","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"c9","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":68,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[0]},{"t":84,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[-241,0,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":72,"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":80,"s":[0,0,100]},{"t":84,"s":[-100,-100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":-90,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c9","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"c10","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":88,"s":[0]},{"t":92,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[-208.846,-120,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":80,"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":88,"s":[0,0,100]},{"t":92,"s":[-100,-100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":-60,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c10","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"c11","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":84,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":88,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":96,"s":[0]},{"t":100,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[-121,-207.846,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":88,"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":96,"s":[0,0,100]},{"t":100,"s":[-100,-100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":-30,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"c11","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"c12","sr":1,"ks":{"o":{"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":8,"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":92,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":96,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":104,"s":[0]},{"t":108,"s":[100]}],"ix":11},"r":{"a":0,"k":180,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[1,-240,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":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":8,"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":12,"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":96,"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":104,"s":[0,0,100]},{"t":108,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[17.481,10.58],[-15.824,18.173],[-14.172,-9.197],[10.005,-20.765]],"o":[[-16.156,-9.778],[14.396,-16.533],[13.262,8.607],[-9.57,19.862]],"v":[[-25.713,31.132],[-28.178,-21.202],[21.304,-30.551],[35.021,14.658]],"c":true},"ix":2},"nm":"路径 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":"填充 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":"变换"}],"nm":"c6","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/app/src/main/assets/touch03.json b/app/src/main/assets/touch03.json
new file mode 100644
index 0000000..c67c163
--- /dev/null
+++ b/app/src/main/assets/touch03.json
@@ -0,0 +1 @@
+{"v":"5.7.13","fr":24,"ip":0,"op":192,"w":600,"h":600,"nm":"Frame 5","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"hand","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":92,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[100]},{"t":172,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":92,"s":[-33]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[0]},{"t":172,"s":[-33]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":92,"s":[517]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[427]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[427]},{"t":172,"s":[517]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":92,"s":[560]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[477]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[477]},{"t":172,"s":[560]}],"ix":4}},"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":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[-0.595,-2.255],[-1.997,-0.035],[0,0],[-1.33,-0.584],[-0.994,-1.059],[-0.499,-1.365],[0.077,-1.451],[0,0],[31.29,0],[7.281,5.763],[0.618,0.624],[0,0],[-0.166,3.145],[-2.308,2.143],[-2.905,0],[-2.102,-2.004],[0,0],[0,0],[-2.069,2.125],[-2.965,0.047],[-1.321,-0.591],[-0.991,-1.055],[-0.507,-1.356],[0.055,-1.446],[0,0],[-1.616,0.151],[-1.516,-0.579],[-1.104,-1.189],[-0.464,-1.555],[-2.094,0],[-1.834,-1.441]],"o":[[1.648,-1.128],[0,0],[1.453,0.015],[1.33,0.584],[0.994,1.059],[0.499,1.365],[0,0],[0,21.401],[-9.231,1.007],[-0.762,-0.438],[0,0],[-2.07,-2.373],[0.166,-3.145],[2.102,-2.004],[2.905,0],[0,0],[0,0],[-0.032,-2.965],[2.069,-2.125],[1.447,0.036],[1.321,0.591],[0.991,1.055],[0.507,1.356],[0,0],[1.382,-0.85],[1.616,-0.151],[1.516,0.579],[1.104,1.189],[1.782,-1.098],[2.332,0.044],[1.834,1.441]],"v":[[31.737,-11.366],[37.341,-13.046],[37.341,-13.034],[41.559,-12.126],[45.083,-9.635],[47.346,-5.961],[47.985,-1.694],[47.985,20.985],[13.809,59.791],[-11.961,52.37],[-14.043,50.768],[-45.014,18.825],[-47.983,10.221],[-44.126,1.978],[-36.327,-1.145],[-28.527,1.978],[-21.723,8.835],[-21.723,-48.66],[-18.543,-56.608],[-10.683,-60],[-6.489,-59.051],[-2.986,-56.557],[-0.717,-52.905],[-0.033,-48.66],[-0.033,-23.659],[4.525,-25.181],[9.285,-24.531],[13.267,-21.843],[15.651,-17.672],[21.573,-19.352],[27.994,-17.062]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":127,"s":[{"i":[[-0.595,-2.255],[-1.997,-0.035],[0,0],[-1.33,-0.584],[-0.994,-1.059],[-0.499,-1.365],[0.077,-1.451],[0,0],[31.29,0],[7.281,5.763],[0.618,0.624],[0,0],[-0.166,3.145],[-2.308,2.143],[-2.905,0],[-2.102,-2.004],[0,0],[0,0],[-2.069,2.125],[-2.965,0.047],[-1.321,-0.591],[-0.991,-1.055],[-0.507,-1.356],[-1.935,-3.183],[0,0],[-1.616,0.151],[-1.516,-0.579],[-1.104,-1.189],[-0.464,-1.555],[-2.094,0],[-1.834,-1.441]],"o":[[1.648,-1.128],[0,0],[1.453,0.015],[1.33,0.584],[0.994,1.059],[0.499,1.365],[0,0],[0,21.401],[-9.231,1.007],[-0.762,-0.438],[0,0],[-2.07,-2.373],[0.166,-3.145],[2.102,-2.004],[2.905,0],[0,0],[0,0],[-0.032,-2.965],[2.069,-2.125],[1.447,0.036],[1.321,0.591],[0.991,1.055],[0.507,1.356],[2.568,4.223],[1.382,-0.85],[1.616,-0.151],[1.516,0.579],[1.104,1.189],[1.782,-1.098],[2.332,0.044],[1.834,1.441]],"v":[[31.737,-11.366],[37.341,-13.046],[37.341,-13.034],[41.559,-12.126],[45.083,-9.635],[47.346,-5.961],[47.985,-1.694],[47.985,20.985],[13.809,59.791],[-11.961,52.37],[-14.043,50.768],[-42.764,18.825],[-45.733,10.221],[-41.876,1.978],[-34.077,-1.145],[-26.277,1.978],[-21.723,8.835],[-35.695,-42.16],[-32.515,-50.108],[-24.655,-53.5],[-20.462,-52.551],[-16.959,-50.057],[-14.69,-46.405],[-10.068,-37.848],[-0.033,-23.659],[4.525,-25.181],[9.285,-24.531],[13.267,-21.843],[15.651,-17.672],[21.573,-19.352],[27.994,-17.062]],"c":true}]},{"t":144,"s":[{"i":[[-0.595,-2.255],[-1.997,-0.035],[0,0],[-1.33,-0.584],[-0.994,-1.059],[-0.499,-1.365],[0.077,-1.451],[0,0],[31.29,0],[7.281,5.763],[0.618,0.624],[0,0],[-0.166,3.145],[-2.308,2.143],[-2.905,0],[-2.102,-2.004],[0,0],[0,0],[-2.069,2.125],[-2.965,0.047],[-1.321,-0.591],[-0.991,-1.055],[-0.507,-1.356],[0.055,-1.446],[0,0],[-1.616,0.151],[-1.516,-0.579],[-1.104,-1.189],[-0.464,-1.555],[-2.094,0],[-1.834,-1.441]],"o":[[1.648,-1.128],[0,0],[1.453,0.015],[1.33,0.584],[0.994,1.059],[0.499,1.365],[0,0],[0,21.401],[-9.231,1.007],[-0.762,-0.438],[0,0],[-2.07,-2.373],[0.166,-3.145],[2.102,-2.004],[2.905,0],[0,0],[0,0],[-0.032,-2.965],[2.069,-2.125],[1.447,0.036],[1.321,0.591],[0.991,1.055],[0.507,1.356],[0,0],[1.382,-0.85],[1.616,-0.151],[1.516,0.579],[1.104,1.189],[1.782,-1.098],[2.332,0.044],[1.834,1.441]],"v":[[31.737,-11.366],[37.341,-13.046],[37.341,-13.034],[41.559,-12.126],[45.083,-9.635],[47.346,-5.961],[47.985,-1.694],[47.985,20.985],[13.809,59.791],[-11.961,52.37],[-14.043,50.768],[-45.014,18.825],[-47.983,10.221],[-44.126,1.978],[-36.327,-1.145],[-28.527,1.978],[-21.723,8.835],[-21.723,-48.66],[-18.543,-56.608],[-10.683,-60],[-6.489,-59.051],[-2.986,-56.557],[-0.717,-52.905],[-0.033,-48.66],[-0.033,-23.659],[4.525,-25.181],[9.285,-24.531],[13.267,-21.843],[15.651,-17.672],[21.573,-19.352],[27.994,-17.062]],"c":true}]}],"ix":2},"nm":"路径 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":"填充 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":"变换"}],"nm":"hand","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"e1","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":192,"s":[1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[105,105,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":96,"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":144,"s":[105,105,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[31.578,127.099],[-152.691,6.678],[-22.831,-105.761],[138.017,-44.904]],"o":[[-29.184,-117.464],[138.909,-6.075],[21.365,98.971],[-132.016,42.952]],"v":[[-244.917,12.25],[-22,-228.702],[243.13,-41.308],[102.856,220.322]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,0.800000011921],"ix":3},"o":{"a":0,"k":80,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 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":"变换"}],"nm":"e1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"e2","sr":1,"ks":{"o":{"a":0,"k":90,"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":192,"s":[-1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":0,"s":[102,102,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":48,"s":[102,102,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":96,"s":[102,102,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":144,"s":[102,102,100]},{"t":192,"s":[102,102,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[130.689,11.751],[-43.129,145.547],[-107.632,-13.014],[2.146,-144.221]],"o":[[-120.782,-10.861],[39.236,-132.409],[100.722,12.178],[-2.053,137.95]],"v":[[-70.883,238.273],[-227.045,-49.527],[36.439,-237.433],[238.967,-20.496]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,0.600000023842],"ix":3},"o":{"a":0,"k":60,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 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":"变换"}],"nm":"e2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"e3","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[720]},{"t":192,"s":[720]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[105,105,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":96,"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":144,"s":[105,105,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-54.156,119.954],[-120.023,-83.416],[47.68,-97.813],[132.381,44.33]],"o":[[50.05,-110.86],[109.189,75.887],[-44.618,91.533],[-126.625,-42.403]],"v":[[-203.602,-136.021],[113.744,-199.055],[199.829,104.852],[-67.487,232.453]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,0.300000011921],"ix":3},"o":{"a":0,"k":30,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 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":"变换"}],"nm":"e3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"“t2”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[302.5,343.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":0,"s":[102,102,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":24,"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":48,"s":[102,102,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":72,"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":96,"s":[102,102,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":120,"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":144,"s":[102,102,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":168,"s":[100,100,100]},{"t":192,"s":[102,102,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],[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":[[-121.213,-25.428],[-121.213,-21.839],[-111.062,-21.839],[-111.062,4.698],[-106.94,4.698],[-106.94,-21.839],[-96.788,-21.839],[-96.788,-25.428]],"c":true},"ix":2},"nm":"T","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"T","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":[[5.318,0],[2.597,-3.719],[0,-4.074],[-2.365,-2.953],[-4.635,0],[-2.68,3.5],[0,4.498],[1.996,2.666]],"o":[[-5.086,0],[-2.024,2.899],[0,4.512],[2.652,3.063],[4.963,0],[2.283,-2.98],[0,-4.156],[-2.557,-3.418]],"v":[[-80.772,-26.249],[-92.297,-20.67],[-95.332,-10.211],[-91.785,0.986],[-80.854,5.58],[-69.39,0.33],[-65.965,-10.888],[-68.959,-21.122]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[3.596,0],[1.688,2.292],[0,3.339],[-1.969,2.141],[-3.117,0],[-1.853,-2.162],[0,-3.544],[1.606,-2.579]],"o":[[-3.787,0],[-1.689,-2.292],[0,-4.173],[1.969,-2.141],[3.213,0],[1.852,2.162],[0,3.352],[-1.607,2.579]],"v":[[-80.362,1.95],[-88.575,-1.488],[-91.108,-9.934],[-88.155,-19.406],[-80.526,-22.619],[-72.928,-19.376],[-70.149,-10.817],[-72.558,-1.919]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"O","np":5,"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],[-1.002,-1.996],[-5.104,0],[-1.839,3.637],[0,3.705],[0,0],[0,0],[0,0],[0.675,-1.285],[3.486,0],[1.226,2.188],[0,2.188],[0,0]],"o":[[0,0],[0,3.705],[1.825,3.637],[5.103,0],[1.001,-1.996],[0,0],[0,0],[0,0],[0,2.174],[-1.254,2.365],[-2.908,0],[-0.827,-1.449],[0,0],[0,0]],"v":[[-60.818,-25.428],[-60.818,-8.509],[-59.316,0.042],[-48.923,5.498],[-38.51,0.042],[-37.008,-8.509],[-37.008,-25.428],[-41.13,-25.428],[-41.13,-6.807],[-42.143,-1.619],[-49.254,1.929],[-55.455,-1.352],[-56.696,-6.807],[-56.696,-25.428]],"c":true},"ix":2},"nm":"U","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"U","np":3,"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.77,0],[2.513,-3.092],[0,-4.446],[-3.095,-2.804],[-3.46,0],[-2.365,2.584],[-0.352,3.172],[0,0],[0.819,-1.217],[2.955,0],[1.618,2.196],[0,3.531],[-1.793,2.087],[-2.914,0],[-1.323,-1.135],[-0.443,-1.941],[0,0],[2.081,2.01]],"o":[[-4.419,0],[-2.324,2.846],[0,5.856],[2.351,2.121],[4.014,0],[1.973,-2.146],[0,0],[-0.403,1.983],[-1.544,2.311],[-3.21,0],[-1.619,-2.196],[0,-4.31],[1.793,-2.087],[2.39,0],[1.322,1.135],[0,0],[-0.23,-2.556],[-2.081,-2.01]],"v":[[-18.243,-26.249],[-28.641,-21.611],[-32.127,-10.673],[-27.485,2.317],[-18.768,5.498],[-9.2,1.622],[-5.713,-6.356],[-9.692,-6.356],[-11.525,-1.557],[-18.274,1.909],[-25.516,-1.385],[-27.944,-9.975],[-25.255,-19.571],[-18.196,-22.701],[-12.627,-20.999],[-9.979,-16.384],[-6,-16.384],[-9.466,-23.234]],"c":true},"ix":2},"nm":"C","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"C","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],[0,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":[[-0.34,4.698],[3.782,4.698],[3.782,-9.391],[19.265,-9.391],[19.265,4.698],[23.387,4.698],[23.387,-25.428],[19.265,-25.428],[19.265,-12.98],[3.782,-12.98],[3.782,-25.428],[-0.34,-25.428]],"c":true},"ix":2},"nm":"H","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"H","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":[[0,0],[0,0],[0,0],[0.041,1.511],[0,0.738],[0,0],[0,0],[0,0],[0,0],[0.027,-1.422],[0,-0.615],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-0.711],[-0.041,-1.511],[0,0],[0,0],[0,0],[0,0],[0,1.627],[-0.028,1.422],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[41.455,4.698],[45.351,4.698],[45.351,-13.083],[45.29,-16.415],[45.228,-19.789],[45.228,-20.711],[53.911,4.698],[57.955,4.698],[66.556,-20.711],[66.515,-16.138],[66.474,-13.083],[66.474,4.698],[70.371,4.698],[70.371,-25.428],[64.565,-25.428],[55.964,0.042],[47.301,-25.428],[41.455,-25.428]],"c":true},"ix":2},"nm":"M","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"M","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":[[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":[[76.933,4.698],[99.102,4.698],[99.102,1.109],[80.912,1.109],[80.912,-9.104],[97.441,-9.104],[97.441,-12.59],[80.912,-12.59],[80.912,-21.737],[98.795,-21.737],[98.795,-25.428],[76.933,-25.428]],"c":true},"ix":2},"nm":"E","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"E","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"“t1”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[302,280.667,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":24,"s":[104,104,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":48,"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":72,"s":[104,104,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":96,"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":120,"s":[104,104,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":144,"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":168,"s":[104,104,100]},{"t":192,"s":[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":[[-113.287,-25.546],[-83.703,-25.546],[-83.703,-17.231],[-113.287,-17.231]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,-3.416],[0,0],[0.967,4.318]],"o":[[0.838,4.447],[0,0],[-0.064,-3.416],[0,0]],"v":[[-109.999,-5.179],[-108.646,8.421],[-100.847,7.454],[-102.652,-5.888]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-0.645,-3.416],[0,0],[1.934,4.061]],"o":[[1.869,4.189],[0,0],[-0.773,-3.416],[0,0]],"v":[[-96.722,-5.114],[-92.275,8.099],[-84.734,6.165],[-89.632,-6.726]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[-1.354,-3.738],[0,0],[3.158,4.125]],"o":[[3.029,4.318],[0,0],[-1.611,-3.803],[0,0]],"v":[[-83.574,-5.501],[-75.646,8.421],[-68.169,5.521],[-76.677,-8.015]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[3.158,-2.771],[0,0],[-1.869,5.156]],"o":[[-1.869,4.705],[0,0],[3.352,-3.48],[0,0]],"v":[[-120.57,-7.499],[-128.691,5.134],[-121.537,8.614],[-113.158,-5.63]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"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":[[-120.699,-32.7],[-120.699,-10.077],[-75.775,-10.077],[-75.775,-32.7],[-94.724,-32.7],[-94.724,-38.759],[-71.521,-38.759],[-71.521,-45.978],[-94.724,-45.978],[-94.724,-51.714],[-102.587,-51.714],[-102.587,-32.7]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"点","np":9,"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.611,-3.029],[0,0],[3.48,3.029]],"o":[[3.48,3.223],[0,0],[-1.869,-3.094],[0,0]],"v":[[-21.121,-45.978],[-11.968,-35.214],[-5.716,-39.532],[-15.32,-49.909]],"c":true},"ix":2},"nm":"我","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[2.385,-2.707],[0.516,3.932],[0,0],[0,0],[0,0],[-0.129,6.059],[0,0],[-0.516,-5.865],[0,0],[0,0],[-3.287,0.967],[0,0],[9.023,-1.16],[-0.322,-1.869],[-3.48,0.516],[0,0],[0,0],[0,0],[0,0],[0,0],[3.674,-0.516],[0,0],[0,0],[0,0],[1.096,0],[3.609,0.193],[-0.322,-2.127],[-2.578,1.225],[0,4.189],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.418,-5.092],[5.092,-2.32],[-1.096,-1.869],[-3.738,3.029],[-4.705,0],[-1.225,11.344],[1.676,1.805],[1.289,0],[1.74,4.963],[-2.9,5.221]],"o":[[-1.676,3.158],[-0.709,-3.287],[0,0],[0,0],[0,0],[-0.516,-5.736],[0,0],[0.064,5.93],[0,0],[0,0],[3.803,-0.773],[0,0],[-6.574,2.191],[0.838,1.74],[3.287,-0.387],[0,0],[0,0],[0,0],[0,0],[0,0],[-5.092,0.838],[0,0],[0,0],[0,0],[0,1.031],[-1.16,0.064],[1.096,2.127],[5.285,0],[2.578,-1.225],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.773,6.316],[-4.447,3.738],[1.934,1.74],[4.189,-2.191],[2.771,6.316],[5.865,0],[-2.062,-0.838],[-0.322,7.67],[-1.998,0],[4.189,-4.254],[0,0]],"v":[[-14.031,-23.935],[-20.218,-15.104],[-22.087,-26.062],[-5.201,-26.062],[-5.201,-33.345],[-22.861,-33.345],[-23.505,-51.198],[-31.562,-51.198],[-30.789,-33.345],[-43.357,-33.345],[-43.357,-42.046],[-32.658,-44.688],[-37.943,-51.263],[-63.66,-45.849],[-61.468,-39.339],[-51.156,-40.692],[-51.156,-33.345],[-63.337,-33.345],[-63.337,-26.062],[-51.156,-26.062],[-51.156,-17.296],[-64.562,-15.169],[-62.693,-7.37],[-51.156,-9.626],[-51.156,-0.28],[-52.638,1.073],[-61.21,1.009],[-58.503,8.808],[-46.773,7.325],[-43.357,-0.216],[-43.357,-11.237],[-32.722,-13.493],[-33.238,-20.454],[-43.357,-18.649],[-43.357,-26.062],[-30.08,-26.062],[-26.792,-8.659],[-41.359,0.558],[-36.138,6.745],[-24.15,-1.118],[-12.999,9.065],[-3.46,-5.114],[-9.841,-9.562],[-12.226,1.202],[-17.962,-6.726],[-7.263,-20.97]],"c":true},"ix":2},"nm":"我","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"我","np":5,"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],[-1.998,-3.094],[0,0],[3.48,2.578],[0,0],[0,0],[1.354,0],[3.932,0.193],[-0.387,-2.062],[-3.029,0.967],[0,3.996],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[4.125,3.029],[0,0],[-1.805,-2.514],[0,0],[0,0],[0,0.967],[-1.225,0],[1.031,1.934],[5.994,0],[3.094,-0.967],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[9.622,-6.919],[20.708,3.716],[26.379,-1.569],[17.549,-9.755],[37.208,-9.755],[37.208,0.751],[35.467,2.04],[25.155,1.847],[27.733,8.808],[41.139,7.776],[45.264,0.944],[45.264,-9.755],[58.477,-9.755],[58.477,-16.909],[45.264,-16.909],[45.264,-20.647],[37.208,-20.647],[37.208,-16.909],[1.049,-16.909],[1.049,-9.755],[12.715,-9.755]],"c":true},"ix":2},"nm":"导","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-12.568,0],[-3.094,0],[-1.031,6.51],[1.934,1.031],[4.963,0],[3.287,0],[0,2.707],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,7.477],[3.029,0],[9.217,0],[-2.256,-0.322],[-0.58,3.416],[-4.189,0],[-6.896,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[5.303,-46.106],[5.303,-31.282],[21.739,-22.001],[44.426,-22.001],[57.639,-29.993],[50.356,-32.185],[43.717,-28.253],[21.61,-28.253],[13.424,-31.411],[13.424,-32.507],[50.743,-32.507],[50.743,-49.974],[5.303,-49.974]],"c":true},"ix":2},"nm":"导","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.424,-43.399],[43.137,-43.399],[43.137,-39.146],[13.424,-39.146]],"c":true},"ix":2},"nm":"导","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"导","np":6,"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.709,-2.578],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.418,2.965]],"o":[[1.225,2.643],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.773,-2.514],[0,0]],"v":[[99.725,-50.296],[103.012,-41.53],[90.379,-41.53],[90.379,-34.763],[123.444,-34.763],[123.444,-41.53],[106.428,-41.53],[111.004,-42.948],[107.202,-52.294]],"c":true},"ix":2},"nm":"航","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[3.996,-6.51],[-1.225,-1.16],[-0.322,8.121],[-0.645,-2.385],[0,0],[1.547,2.965],[0,0],[0,0],[0,0],[0,0],[0.709,0],[2.127,0.129],[-0.193,-1.869],[-1.934,1.16],[-0.387,0.902],[-1.225,-1.16],[0,7.928],[0,0],[0,0],[0,0],[-1.031,-1.16],[-1.547,0],[-0.967,0],[-0.902,0.709],[-0.387,1.482],[-0.064,3.094],[1.225,1.096],[0.129,-1.16],[0.129,-0.258],[0.258,0],[0.129,0],[0.129,0.193],[0,1.418],[0,0],[0,0],[0,0],[5.285,-6.059],[0,1.225],[0,0],[0,0],[0,0],[0,0],[0.58,-2.578],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.064,7.863],[1.611,0.709],[3.867,-6.188],[1.354,2.9],[0,0],[-0.838,-2.449],[0,0],[0,0],[0,0],[0,0],[0,0.773],[-0.709,0],[0.838,1.74],[3.738,0],[0.838,-0.516],[1.74,0.902],[6.381,-6.703],[0,0],[0,0],[0,0],[0,4.77],[1.096,1.096],[0.838,0],[1.289,0],[0.902,-0.773],[0.322,-1.547],[-1.611,-0.58],[-0.064,3.287],[-0.129,1.096],[-0.129,0.193],[-0.258,0],[-0.322,0],[-0.129,-0.258],[0,0],[0,0],[0,0],[0,6.445],[0.193,-0.902],[0,0],[0,0],[0,0],[0,0],[-0.258,2.32],[0,0],[0,0],[0,0]],"v":[[63.374,-24.321],[63.374,-18.134],[67.563,-18.134],[62.987,5.714],[68.788,9.452],[74.137,-14.073],[77.682,-5.243],[82.516,-7.435],[78.327,-16.716],[74.202,-14.976],[74.266,-18.134],[82.645,-18.134],[82.645,1.073],[81.678,2.104],[76.715,2.04],[78.713,8.614],[86.963,7.261],[88.768,5.198],[94.504,9.13],[102.045,-16.329],[102.045,-23.226],[109.909,-23.226],[109.909,-0.731],[111.327,6.616],[115.581,8.228],[118.61,8.228],[122.155,7.261],[124.024,3.974],[124.669,-4.599],[119.899,-7.306],[119.706,-0.345],[119.319,1.589],[118.61,1.847],[117.836,1.847],[117.192,1.589],[117.063,-0.925],[117.063,-29.929],[94.891,-29.929],[94.891,-16.458],[89.09,4.296],[89.348,1.202],[89.348,-43.979],[80.454,-43.979],[82.838,-50.683],[75.104,-51.907],[73.686,-43.979],[67.563,-43.979],[67.563,-24.321]],"c":true},"ix":2},"nm":"航","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.516,-2.191],[0,0],[1.289,2.771],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1.16,2.771],[0,0],[-0.645,-2.32],[0,0],[0,0],[0,0]],"v":[[82.645,-37.985],[82.645,-24.321],[74.266,-24.321],[74.266,-34.118],[77.167,-25.739],[82.001,-27.802],[78.649,-36.438],[74.266,-34.827],[74.266,-37.985]],"c":true},"ix":2},"nm":"航","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"航","np":6,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"ccccc3","td":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]},{"t":192,"s":[-1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[101.5,101.5,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":96,"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":144,"s":[101.5,101.5,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-118.189,0],[0,121.503],[118.189,0],[0,-121.503]],"o":[[118.189,0],[0,-121.503],[-118.189,0],[0,121.503]],"v":[[0,220],[214,0],[0,-220],[-214,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.768627464771,0.768627464771,0.768627464771,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"r3","tt":2,"sr":1,"ks":{"o":{"a":0,"k":40,"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":191,"s":[-720]}],"ix":10},"p":{"a":0,"k":[312,300,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":[{"d":1,"ty":"el","s":{"a":0,"k":[528,446],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":60,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"r3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"ccccc2","td":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]},{"t":192,"s":[-1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[101.5,101.5,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":96,"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":144,"s":[101.5,101.5,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-118.189,0],[0,121.503],[118.189,0],[0,-121.503]],"o":[[118.189,0],[0,-121.503],[-118.189,0],[0,121.503]],"v":[[0,220],[214,0],[0,-220],[-214,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.768627464771,0.768627464771,0.768627464771,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"r2","tt":2,"sr":1,"ks":{"o":{"a":0,"k":60,"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":192,"s":[720]}],"ix":10},"p":{"a":0,"k":[284,300,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":[{"d":1,"ty":"el","s":{"a":0,"k":[520,460],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":-30,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"r2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"ccccc0","td":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]},{"t":192,"s":[-1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[101.5,101.5,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":96,"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":144,"s":[101.5,101.5,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-118.189,0],[0,121.503],[118.189,0],[0,-121.503]],"o":[[118.189,0],[0,-121.503],[-118.189,0],[0,121.503]],"v":[[0,220],[214,0],[0,-220],[-214,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.768627464771,0.768627464771,0.768627464771,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"r1","tt":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":192,"s":[1440]}],"ix":10},"p":{"a":0,"k":[300,300,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":[{"d":1,"ty":"el","s":{"a":0,"k":[512,480],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"r1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/app/src/main/assets/touch04.json b/app/src/main/assets/touch04.json
new file mode 100644
index 0000000..1fc0399
--- /dev/null
+++ b/app/src/main/assets/touch04.json
@@ -0,0 +1 @@
+{"v":"5.7.13","fr":25,"ip":0,"op":100,"w":600,"h":600,"nm":"Frame 2","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"text2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":25,"s":[60]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[60]},{"t":99,"s":[80]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[304,339.833,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],[0,0],[0,0],[0,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":[[-96.304,-19.445],[-96.304,-16.711],[-88.57,-16.711],[-88.57,3.508],[-85.429,3.508],[-85.429,-16.711],[-77.695,-16.711],[-77.695,-19.445]],"c":true},"ix":2},"nm":"T","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"T","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":[[4.052,0],[1.979,-2.833],[0,-3.104],[-1.802,-2.25],[-3.531,0],[-2.042,2.667],[0,3.427],[1.521,2.031]],"o":[[-3.875,0],[-1.542,2.208],[0,3.438],[2.021,2.333],[3.781,0],[1.74,-2.271],[0,-3.167],[-1.948,-2.604]],"v":[[-63.892,-20.07],[-72.673,-15.82],[-74.986,-7.852],[-72.283,0.68],[-63.954,4.18],[-55.22,0.18],[-52.611,-8.367],[-54.892,-16.164]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.74,0],[1.286,1.746],[0,2.544],[-1.5,1.632],[-2.375,0],[-1.412,-1.647],[0,-2.7],[1.224,-1.965]],"o":[[-2.885,0],[-1.287,-1.746],[0,-3.18],[1.5,-1.632],[2.448,0],[1.411,1.647],[0,2.554],[-1.224,1.965]],"v":[[-63.579,1.414],[-69.837,-1.205],[-71.767,-7.64],[-69.517,-14.857],[-63.704,-17.305],[-57.915,-14.834],[-55.798,-8.313],[-57.634,-1.534]],"c":true},"ix":2},"nm":"O","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"O","np":5,"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.763,-1.521],[-3.888,0],[-1.401,2.771],[0,2.823],[0,0],[0,0],[0,0],[0.514,-0.979],[2.656,0],[0.934,1.667],[0,1.667],[0,0]],"o":[[0,0],[0,2.823],[1.39,2.771],[3.888,0],[0.763,-1.521],[0,0],[0,0],[0,0],[0,1.656],[-0.956,1.802],[-2.216,0],[-0.63,-1.104],[0,0],[0,0]],"v":[[-47.089,-19.445],[-47.089,-6.555],[-45.944,-0.039],[-38.026,4.117],[-30.093,-0.039],[-28.948,-6.555],[-28.948,-19.445],[-32.089,-19.445],[-32.089,-5.258],[-32.86,-1.305],[-38.278,1.398],[-43.003,-1.102],[-43.948,-5.258],[-43.948,-19.445]],"c":true},"ix":2},"nm":"U","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"U","np":3,"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":[[2.872,0],[1.915,-2.355],[0,-3.387],[-2.358,-2.137],[-2.636,0],[-1.802,1.969],[-0.268,2.417],[0,0],[0.624,-0.927],[2.251,0],[1.233,1.673],[0,2.69],[-1.366,1.59],[-2.22,0],[-1.008,-0.865],[-0.338,-1.479],[0,0],[1.585,1.531]],"o":[[-3.367,0],[-1.771,2.168],[0,4.461],[1.792,1.616],[3.058,0],[1.503,-1.635],[0,0],[-0.307,1.51],[-1.177,1.76],[-2.446,0],[-1.233,-1.673],[0,-3.284],[1.366,-1.59],[1.821,0],[1.008,0.865],[0,0],[-0.175,-1.948],[-1.585,-1.531]],"v":[[-13.051,-20.07],[-20.973,-16.537],[-23.629,-8.203],[-20.093,1.694],[-13.451,4.117],[-6.161,1.164],[-3.504,-4.914],[-6.536,-4.914],[-7.932,-1.258],[-13.074,1.383],[-18.592,-1.127],[-20.442,-7.672],[-18.394,-14.982],[-13.015,-17.367],[-8.772,-16.07],[-6.754,-12.555],[-3.723,-12.555],[-6.364,-17.773]],"c":true},"ix":2},"nm":"C","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"C","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],[0,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":[[2.189,3.508],[5.33,3.508],[5.33,-7.227],[17.127,-7.227],[17.127,3.508],[20.268,3.508],[20.268,-19.445],[17.127,-19.445],[17.127,-9.961],[5.33,-9.961],[5.33,-19.445],[2.189,-19.445]],"c":true},"ix":2},"nm":"H","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"H","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":[[0,0],[0,0],[0,0],[0.031,1.151],[0,0.562],[0,0],[0,0],[0,0],[0,0],[0.021,-1.083],[0,-0.469],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-0.542],[-0.031,-1.151],[0,0],[0,0],[0,0],[0,0],[0,1.24],[-0.021,1.083],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[37.233,3.508],[40.202,3.508],[40.202,-10.039],[40.155,-12.578],[40.108,-15.148],[40.108,-15.852],[46.724,3.508],[49.805,3.508],[56.358,-15.852],[56.327,-12.367],[56.296,-10.039],[56.296,3.508],[59.264,3.508],[59.264,-19.445],[54.841,-19.445],[48.288,-0.039],[41.688,-19.445],[37.233,-19.445]],"c":true},"ix":2},"nm":"M","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"M","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":[[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":[[65.864,3.508],[82.755,3.508],[82.755,0.773],[68.896,0.773],[68.896,-7.008],[81.489,-7.008],[81.489,-9.664],[68.896,-9.664],[68.896,-16.633],[82.521,-16.633],[82.521,-19.445],[65.864,-19.445]],"c":true},"ix":2},"nm":"E","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"E","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":100,"st":-24,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"text1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":25,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[70]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":75,"s":[100]},{"t":99,"s":[70]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,290,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":25,"s":[102,102,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":50,"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":75,"s":[102,102,100]},{"t":99,"s":[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":[[-84.965,-19.159],[-62.777,-19.159],[-62.777,-12.924],[-84.965,-12.924]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,-2.562],[0,0],[0.725,3.239]],"o":[[0.628,3.335],[0,0],[-0.048,-2.562],[0,0]],"v":[[-82.5,-3.884],[-81.484,6.316],[-75.635,5.591],[-76.989,-4.416]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-0.483,-2.562],[0,0],[1.45,3.045]],"o":[[1.402,3.142],[0,0],[-0.58,-2.562],[0,0]],"v":[[-72.542,-3.836],[-69.206,6.074],[-63.55,4.624],[-67.224,-5.044]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[-1.015,-2.804],[0,0],[2.369,3.094]],"o":[[2.272,3.239],[0,0],[-1.208,-2.852],[0,0]],"v":[[-62.68,-4.126],[-56.734,6.316],[-51.127,4.14],[-57.508,-6.011]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[2.369,-2.079],[0,0],[-1.402,3.867]],"o":[[-1.402,3.529],[0,0],[2.514,-2.61],[0,0]],"v":[[-90.427,-5.624],[-96.518,3.85],[-91.152,6.461],[-84.868,-4.222]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"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":[[-90.524,-24.525],[-90.524,-7.558],[-56.831,-7.558],[-56.831,-24.525],[-71.043,-24.525],[-71.043,-29.069],[-53.641,-29.069],[-53.641,-34.483],[-71.043,-34.483],[-71.043,-38.785],[-76.941,-38.785],[-76.941,-24.525]],"c":true},"ix":2},"nm":"点","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"点","np":9,"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.208,-2.272],[0,0],[2.61,2.272]],"o":[[2.61,2.417],[0,0],[-1.402,-2.32],[0,0]],"v":[[-15.84,-34.483],[-8.976,-26.41],[-4.287,-29.649],[-11.49,-37.432]],"c":true},"ix":2},"nm":"我","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[1.789,-2.03],[0.387,2.949],[0,0],[0,0],[0,0],[-0.097,4.544],[0,0],[-0.387,-4.399],[0,0],[0,0],[-2.465,0.725],[0,0],[6.768,-0.87],[-0.242,-1.402],[-2.61,0.387],[0,0],[0,0],[0,0],[0,0],[0,0],[2.755,-0.387],[0,0],[0,0],[0,0],[0.822,0],[2.707,0.145],[-0.242,-1.595],[-1.934,0.918],[0,3.142],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.063,-3.819],[3.819,-1.74],[-0.822,-1.402],[-2.804,2.272],[-3.529,0],[-0.918,8.508],[1.257,1.354],[0.967,0],[1.305,3.722],[-2.175,3.916]],"o":[[-1.257,2.369],[-0.532,-2.465],[0,0],[0,0],[0,0],[-0.387,-4.302],[0,0],[0.048,4.447],[0,0],[0,0],[2.852,-0.58],[0,0],[-4.931,1.644],[0.628,1.305],[2.465,-0.29],[0,0],[0,0],[0,0],[0,0],[0,0],[-3.819,0.628],[0,0],[0,0],[0,0],[0,0.773],[-0.87,0.048],[0.822,1.595],[3.964,0],[1.934,-0.918],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.58,4.737],[-3.335,2.804],[1.45,1.305],[3.142,-1.644],[2.079,4.737],[4.399,0],[-1.547,-0.628],[-0.242,5.752],[-1.499,0],[3.142,-3.19],[0,0]],"v":[[-10.523,-17.951],[-15.164,-11.328],[-16.566,-19.546],[-3.9,-19.546],[-3.9,-25.009],[-17.146,-25.009],[-17.629,-38.399],[-23.671,-38.399],[-23.091,-25.009],[-32.518,-25.009],[-32.518,-31.534],[-24.493,-33.516],[-28.457,-38.447],[-47.745,-34.386],[-46.101,-29.504],[-38.367,-30.519],[-38.367,-25.009],[-47.503,-25.009],[-47.503,-19.546],[-38.367,-19.546],[-38.367,-12.972],[-48.421,-11.377],[-47.02,-5.528],[-38.367,-7.219],[-38.367,-0.21],[-39.479,0.805],[-45.908,0.757],[-43.878,6.606],[-35.08,5.494],[-32.518,-0.162],[-32.518,-8.428],[-24.542,-10.12],[-24.928,-15.341],[-32.518,-13.987],[-32.518,-19.546],[-22.56,-19.546],[-20.094,-6.494],[-31.019,0.418],[-27.104,5.059],[-18.112,-0.839],[-9.75,6.799],[-2.595,-3.836],[-7.381,-7.171],[-9.17,0.902],[-13.472,-5.044],[-5.447,-15.727]],"c":true},"ix":2},"nm":"我","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"我","np":5,"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],[-1.499,-2.32],[0,0],[2.61,1.934],[0,0],[0,0],[1.015,0],[2.949,0.145],[-0.29,-1.547],[-2.272,0.725],[0,2.997],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[3.094,2.272],[0,0],[-1.354,-1.885],[0,0],[0,0],[0,0.725],[-0.918,0],[0.773,1.45],[4.496,0],[2.32,-0.725],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.216,-5.189],[15.531,2.787],[19.785,-1.177],[13.162,-7.316],[27.906,-7.316],[27.906,0.563],[26.601,1.53],[18.866,1.385],[20.8,6.606],[30.854,5.832],[33.948,0.708],[33.948,-7.316],[43.858,-7.316],[43.858,-12.682],[33.948,-12.682],[33.948,-15.486],[27.906,-15.486],[27.906,-12.682],[0.787,-12.682],[0.787,-7.316],[9.537,-7.316]],"c":true},"ix":2},"nm":"导","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-9.426,0],[-2.32,0],[-0.773,4.882],[1.45,0.773],[3.722,0],[2.465,0],[0,2.03],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,5.607],[2.272,0],[6.913,0],[-1.692,-0.242],[-0.435,2.562],[-3.142,0],[-5.172,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[3.977,-34.58],[3.977,-23.462],[16.304,-16.501],[33.32,-16.501],[43.229,-22.495],[37.767,-24.138],[32.788,-21.19],[16.207,-21.19],[10.068,-23.558],[10.068,-24.38],[38.057,-24.38],[38.057,-37.48],[3.977,-37.48]],"c":true},"ix":2},"nm":"导","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.068,-32.55],[32.353,-32.55],[32.353,-29.359],[10.068,-29.359]],"c":true},"ix":2},"nm":"导","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"导","np":6,"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.532,-1.934],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.063,2.224]],"o":[[0.918,1.982],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.58,-1.885],[0,0]],"v":[[74.794,-37.722],[77.259,-31.148],[67.785,-31.148],[67.785,-26.072],[92.583,-26.072],[92.583,-31.148],[79.821,-31.148],[83.253,-32.211],[80.401,-39.22]],"c":true},"ix":2},"nm":"航","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[2.997,-4.882],[-0.918,-0.87],[-0.242,6.091],[-0.483,-1.789],[0,0],[1.16,2.224],[0,0],[0,0],[0,0],[0,0],[0.532,0],[1.595,0.097],[-0.145,-1.402],[-1.45,0.87],[-0.29,0.677],[-0.918,-0.87],[0,5.946],[0,0],[0,0],[0,0],[-0.773,-0.87],[-1.16,0],[-0.725,0],[-0.677,0.532],[-0.29,1.112],[-0.048,2.32],[0.918,0.822],[0.097,-0.87],[0.097,-0.193],[0.193,0],[0.097,0],[0.097,0.145],[0,1.063],[0,0],[0,0],[0,0],[3.964,-4.544],[0,0.918],[0,0],[0,0],[0,0],[0,0],[0.435,-1.934],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.048,5.897],[1.208,0.532],[2.9,-4.641],[1.015,2.175],[0,0],[-0.628,-1.837],[0,0],[0,0],[0,0],[0,0],[0,0.58],[-0.532,0],[0.628,1.305],[2.804,0],[0.628,-0.387],[1.305,0.677],[4.786,-5.027],[0,0],[0,0],[0,0],[0,3.577],[0.822,0.822],[0.628,0],[0.967,0],[0.677,-0.58],[0.242,-1.16],[-1.208,-0.435],[-0.048,2.465],[-0.097,0.822],[-0.097,0.145],[-0.193,0],[-0.242,0],[-0.097,-0.193],[0,0],[0,0],[0,0],[0,4.834],[0.145,-0.677],[0,0],[0,0],[0,0],[0,0],[-0.193,1.74],[0,0],[0,0],[0,0]],"v":[[47.53,-18.241],[47.53,-13.6],[50.672,-13.6],[47.24,4.285],[51.591,7.089],[55.603,-10.555],[58.262,-3.932],[61.887,-5.576],[58.745,-12.537],[55.651,-11.232],[55.7,-13.6],[61.984,-13.6],[61.984,0.805],[61.259,1.578],[57.537,1.53],[59.035,6.461],[65.223,5.446],[66.576,3.899],[70.878,6.847],[76.534,-12.247],[76.534,-17.419],[82.432,-17.419],[82.432,-0.549],[83.495,4.962],[86.685,6.171],[88.957,6.171],[91.616,5.446],[93.018,2.98],[93.501,-3.449],[89.924,-5.479],[89.779,-0.259],[89.489,1.192],[88.957,1.385],[88.377,1.385],[87.894,1.192],[87.797,-0.694],[87.797,-22.447],[71.168,-22.447],[71.168,-12.344],[66.818,3.222],[67.011,0.902],[67.011,-32.985],[60.34,-32.985],[62.129,-38.012],[56.328,-38.93],[55.265,-32.985],[50.672,-32.985],[50.672,-18.241]],"c":true},"ix":2},"nm":"航","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.387,-1.644],[0,0],[0.967,2.079],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0.87,2.079],[0,0],[-0.483,-1.74],[0,0],[0,0],[0,0]],"v":[[61.984,-28.489],[61.984,-18.241],[55.7,-18.241],[55.7,-25.589],[57.875,-19.304],[61.5,-20.851],[58.987,-27.329],[55.7,-26.12],[55.7,-28.489]],"c":true},"ix":2},"nm":"航","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"航","np":6,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":100,"st":-24,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"e1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[90]},{"t":99,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[-20]},{"t":99,"s":[340]}],"ix":10},"p":{"a":0,"k":[300,300,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.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[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]},"t":50,"s":[105,105,100]},{"t":99,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[31.578,127.099],[-152.691,6.678],[-22.831,-105.761],[138.017,-44.904]],"o":[[-29.184,-117.464],[138.909,-6.075],[21.365,98.971],[-132.016,42.952]],"v":[[-244.917,12.25],[-22,-228.702],[243.13,-41.308],[102.856,220.322]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,0.800000011921],"ix":3},"o":{"a":0,"k":80,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 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":"变换"}],"nm":"e1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":100,"st":-24,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"e2","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]},{"t":99,"s":[-360]}],"ix":10},"p":{"a":0,"k":[300,300,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.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[98,98,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":50,"s":[102,102,100]},{"t":99,"s":[98,98,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[130.689,11.751],[-43.129,145.547],[-107.632,-13.014],[2.146,-144.221]],"o":[[-120.782,-10.861],[39.236,-132.409],[100.722,12.178],[-2.053,137.95]],"v":[[-70.883,238.273],[-227.045,-49.527],[36.439,-237.433],[238.967,-20.496]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,0.600000023842],"ix":3},"o":{"a":0,"k":60,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 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":"变换"}],"nm":"e2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":100,"st":-24,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"e3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[80]},{"t":99,"s":[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":99,"s":[720]}],"ix":10},"p":{"a":0,"k":[301,300,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":[[-54.156,119.954],[-120.023,-83.416],[47.68,-97.813],[132.381,44.33]],"o":[[50.05,-110.86],[109.189,75.887],[-44.618,91.533],[-126.625,-42.403]],"v":[[-203.602,-136.021],[113.744,-199.055],[199.829,104.852],[-67.487,232.453]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,0.300000011921],"ix":3},"o":{"a":0,"k":30,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 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":"变换"}],"nm":"e3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":100,"st":-24,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"e0","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":99,"s":[360]}],"ix":10},"p":{"a":0,"k":[287,307,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.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[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]},"t":50,"s":[106,106,100]},{"t":99,"s":[100,100,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":0,"s":[{"i":[[27.956,114.953],[-137.503,5.429],[-20.16,-95.641],[124.435,-40.023]],"o":[[-25.836,-106.239],[125.092,-4.939],[18.866,89.5],[-119.024,38.283]],"v":[[-220.576,10.025],[-18.966,-206.782],[219.047,-36.432],[91.768,199.384]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[{"i":[[28.852,126.892],[-137.503,5.429],[-20.16,-95.641],[124.435,-40.023]],"o":[[-24.372,-106.573],[125.092,-4.939],[18.866,89.5],[-119.024,38.283]],"v":[[-218.054,2.069],[-2.868,-212.752],[208.481,-41.979],[94.685,203.147]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[{"i":[[29.749,138.831],[-137.503,5.429],[-20.16,-95.641],[124.435,-40.023]],"o":[[-22.908,-106.908],[125.092,-4.939],[18.866,89.5],[-119.024,38.283]],"v":[[-226.475,24.765],[-18.966,-206.782],[219.047,-36.432],[91.768,199.384]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":75,"s":[{"i":[[28.834,126.648],[-137.503,5.429],[-20.16,-95.641],[124.435,-40.023]],"o":[[-24.402,-106.567],[125.092,-4.939],[18.866,89.5],[-119.025,38.283]],"v":[[-212.446,88.299],[-32.297,-206.147],[229.748,-32.17],[77.394,198.16]],"c":true}]},{"t":99,"s":[{"i":[[27.956,114.953],[-137.503,5.429],[-20.16,-95.641],[124.435,-40.023]],"o":[[-25.836,-106.239],[125.092,-4.939],[18.866,89.5],[-119.024,38.283]],"v":[[-220.576,10.025],[-18.966,-206.782],[219.047,-36.432],[91.768,199.384]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.876157641411,0.722320437431,0.527761459351,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"e0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":100,"st":-24,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/app/src/main/assets/touch05.json b/app/src/main/assets/touch05.json
new file mode 100644
index 0000000..eedb157
--- /dev/null
+++ b/app/src/main/assets/touch05.json
@@ -0,0 +1 @@
+{"v":"5.7.13","fr":24,"ip":0,"op":96,"w":600,"h":600,"nm":"画板","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"hand","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[100]},{"t":80,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[-15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[0]},{"t":80,"s":[-15]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":16,"s":[451,518,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":36,"s":[391,463,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[391,463,0],"to":[0,0,0],"ti":[0,0,0]},{"t":80,"s":[471,534,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":16,"s":[80,80,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":36,"s":[100,100,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]},"t":60,"s":[100,100,100]},{"t":80,"s":[80,80,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"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":36,"s":[{"i":[[0,0],[1.64,-1.12],[1.84,1.44],[2.33,0.04],[1.78,-1.1],[1.1,1.19],[1.52,0.58],[1.62,-0.15],[1.38,-0.85],[0,0],[0.51,1.35],[0.99,1.06],[1.32,0.59],[1.44,0.04],[2.07,-2.12],[-0.04,-2.97],[0,0],[0,0],[2.91,0],[2.11,-2.01],[0.16,-3.14],[-2.07,-2.37],[0,0],[-0.76,-0.44],[-9.23,1.01],[0,21.4],[0,0],[0.49,1.36],[1,1.05],[1.33,0.59],[1.45,0.01]],"o":[[-2,-0.03],[-0.6,-2.25],[-1.83,-1.44],[-2.09,0],[-0.46,-1.56],[-1.11,-1.19],[-1.51,-0.58],[-1.61,0.15],[0,0],[0.05,-1.45],[-0.5,-1.36],[-0.99,-1.05],[-1.32,-0.59],[-2.97,0.05],[-2.07,2.13],[0,0],[0,0],[-2.1,-2.01],[-2.9,0],[-2.3,2.14],[-0.17,3.15],[0,0],[0.61,0.62],[7.28,5.76],[31.29,0],[0,0],[0.08,-1.45],[-0.5,-1.37],[-0.99,-1.06],[-1.33,-0.58],[0,0]],"v":[[37.34,-13.05],[31.74,-11.37],[27.99,-17.06],[21.57,-19.35],[15.65,-17.67],[13.27,-21.84],[9.28,-24.53],[4.52,-25.18],[-0.03,-23.66],[-0.03,-48.66],[-0.72,-52.9],[-2.99,-56.56],[-6.49,-59.05],[-10.68,-60],[-18.54,-56.61],[-21.72,-48.66],[-21.72,8.83],[-28.53,1.98],[-36.33,-1.14],[-44.13,1.98],[-47.98,10.22],[-45.01,18.82],[-14.04,50.77],[-11.96,52.37],[13.81,59.79],[47.98,20.99],[47.98,-1.69],[47.35,-5.96],[45.08,-9.63],[41.56,-12.13],[37.34,-13.03]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":48,"s":[{"i":[[0,0],[1.64,-1.12],[1.84,1.44],[2.33,0.04],[1.78,-1.1],[1.1,1.19],[1.52,0.58],[1.62,-0.15],[1.38,-0.85],[0,0],[0.51,1.35],[0.99,1.06],[1.32,0.59],[1.44,0.04],[2.07,-2.12],[-0.04,-2.97],[0,0],[0,0],[2.91,0],[2.11,-2.01],[0.16,-3.14],[-2.07,-2.37],[0,0],[-0.76,-0.44],[-9.23,1.01],[0,21.4],[0,0],[0.49,1.36],[1,1.05],[1.33,0.59],[1.45,0.01]],"o":[[-2,-0.03],[-0.6,-2.25],[-1.83,-1.44],[-2.09,0],[-0.46,-1.56],[-1.11,-1.19],[-1.51,-0.58],[-1.61,0.15],[0,0],[-1.158,-1.528],[-0.5,-1.36],[-0.99,-1.05],[-1.32,-0.59],[-2.97,0.05],[-2.07,2.13],[0,0],[0,0],[-2.1,-2.01],[-2.9,0],[-2.3,2.14],[-0.17,3.15],[0,0],[0.61,0.62],[7.28,5.76],[31.29,0],[0,0],[0.08,-1.45],[-0.5,-1.37],[-0.99,-1.06],[-1.33,-0.58],[0,0]],"v":[[37.34,-13.05],[31.74,-11.37],[27.99,-17.06],[21.57,-19.35],[15.65,-17.67],[13.27,-21.84],[9.28,-24.53],[4.52,-25.18],[-0.03,-23.66],[-8.655,-38.347],[-13.22,-47.15],[-15.49,-50.81],[-18.99,-53.3],[-23.18,-54.25],[-31.04,-50.86],[-34.22,-42.91],[-17.845,6.205],[-22.655,3.855],[-32.83,0.485],[-40.63,3.605],[-44.48,11.845],[-41.51,20.445],[-14.04,50.77],[-11.96,52.37],[13.81,59.79],[47.98,20.99],[47.98,-1.69],[47.35,-5.96],[45.08,-9.63],[41.56,-12.13],[37.34,-13.03]],"c":true}]},{"t":60,"s":[{"i":[[0,0],[1.64,-1.12],[1.84,1.44],[2.33,0.04],[1.78,-1.1],[1.1,1.19],[1.52,0.58],[1.62,-0.15],[1.38,-0.85],[0,0],[0.51,1.35],[0.99,1.06],[1.32,0.59],[1.44,0.04],[2.07,-2.12],[-0.04,-2.97],[0,0],[0,0],[2.91,0],[2.11,-2.01],[0.16,-3.14],[-2.07,-2.37],[0,0],[-0.76,-0.44],[-9.23,1.01],[0,21.4],[0,0],[0.49,1.36],[1,1.05],[1.33,0.59],[1.45,0.01]],"o":[[-2,-0.03],[-0.6,-2.25],[-1.83,-1.44],[-2.09,0],[-0.46,-1.56],[-1.11,-1.19],[-1.51,-0.58],[-1.61,0.15],[0,0],[0.05,-1.45],[-0.5,-1.36],[-0.99,-1.05],[-1.32,-0.59],[-2.97,0.05],[-2.07,2.13],[0,0],[0,0],[-2.1,-2.01],[-2.9,0],[-2.3,2.14],[-0.17,3.15],[0,0],[0.61,0.62],[7.28,5.76],[31.29,0],[0,0],[0.08,-1.45],[-0.5,-1.37],[-0.99,-1.06],[-1.33,-0.58],[0,0]],"v":[[37.34,-13.05],[31.74,-11.37],[27.99,-17.06],[21.57,-19.35],[15.65,-17.67],[13.27,-21.84],[9.28,-24.53],[4.52,-25.18],[-0.03,-23.66],[-0.03,-48.66],[-0.72,-52.9],[-2.99,-56.56],[-6.49,-59.05],[-10.68,-60],[-18.54,-56.61],[-21.72,-48.66],[-21.72,8.83],[-28.53,1.98],[-36.33,-1.14],[-44.13,1.98],[-47.98,10.22],[-45.01,18.82],[-14.04,50.77],[-11.96,52.37],[13.81,59.79],[47.98,20.99],[47.98,-1.69],[47.35,-5.96],[45.08,-9.63],[41.56,-12.13],[37.34,-13.03]],"c":true}]}],"ix":2},"nm":"路径 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":"填充 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":"变换"}],"nm":"hand","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"t2","sr":1,"ks":{"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":24,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":48,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[100]},{"t":96,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[298.811,334.8,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":24,"s":[98,98,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":48,"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":72,"s":[98,98,100]},{"t":96,"s":[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],[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":[[-82.264,-7.68],[-89.684,-7.68],[-89.684,-11.2],[-70.673,-11.2],[-70.673,-7.68],[-78.104,-7.68],[-78.104,11.2],[-82.264,11.2]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.29,0],[1.83,0.98],[1.04,1.75],[0,2.18],[-1.05,1.75],[-1.84,0.99],[-2.28,0],[-1.83,-1],[-1.04,-1.75],[0,-2.2],[1.05,-1.75],[1.83,-1]],"o":[[-2.28,0],[-1.84,-1],[-1.05,-1.77],[0,-2.18],[1.04,-1.77],[1.83,-1],[2.29,0],[1.83,0.99],[1.05,1.75],[0,2.2],[-1.04,1.75],[-1.83,0.98]],"v":[[-57.406,11.52],[-63.577,10.05],[-67.896,5.92],[-69.467,0],[-67.896,-5.89],[-63.577,-10.02],[-57.406,-11.52],[-51.227,-10.02],[-46.906,-5.92],[-45.337,0],[-46.906,5.92],[-51.227,10.05]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-1.49,0],[-1.19,0.66],[-0.68,1.19],[0,1.5],[0.68,1.19],[1.2,0.67],[1.5,0],[1.19,-0.68],[0.69,-1.22],[0,-1.49],[-0.68,-1.22],[-1.19,-0.68]],"o":[[1.5,0],[1.2,-0.68],[0.68,-1.22],[0,-1.49],[-0.68,-1.22],[-1.19,-0.68],[-1.49,0],[-1.19,0.67],[-0.68,1.19],[0,1.5],[0.69,1.19],[1.19,0.66]],"v":[[-57.404,7.868],[-53.374,6.878],[-50.555,4.068],[-49.535,-0.002],[-50.555,-4.032],[-53.374,-6.852],[-57.404,-7.872],[-61.434,-6.852],[-64.255,-4.032],[-65.275,-0.002],[-64.255,4.068],[-61.434,6.878]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[3.1,0],[1.73,1.73],[0,3.24],[0,0],[0,0],[0,0],[-3.8,0],[0,4.39],[0,0],[0,0],[0,0],[1.73,-1.75]],"o":[[-3.09,0],[-1.73,-1.75],[0,0],[0,0],[0,0],[0,4.39],[3.77,0],[0,0],[0,0],[0,0],[0,3.24],[-1.7,1.73]],"v":[[-31.301,11.52],[-38.531,8.93],[-41.12,1.44],[-41.12,-11.2],[-36.96,-11.2],[-36.96,1.28],[-31.26,7.87],[-25.6,1.28],[-25.6,-11.2],[-21.501,-11.2],[-21.501,1.44],[-24.1,8.93]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[1.83,0],[1.84,0.98],[1.04,1.75],[0,2.2],[-1.05,1.75],[-1.82,0.99],[-2.26,0],[-1.51,-0.64],[-1.04,-1.21],[0,0],[2.37,0],[1.22,-0.68],[0.68,-1.2],[0,-1.51],[-0.69,-1.19],[-1.21,-0.68],[-1.53,0],[-1.63,1.77],[0,0],[1.54,-0.64]],"o":[[-2.26,0],[-1.81,-1],[-1.03,-1.75],[0,-2.2],[1.04,-1.75],[1.83,-1],[1.83,0],[1.52,0.64],[0,0],[-1.63,-1.75],[-1.53,0],[-1.21,0.66],[-0.69,1.19],[0,1.51],[0.68,1.2],[1.22,0.66],[2.37,0],[0,0],[-1.04,1.21],[-1.51,0.64]],"v":[[-5.309,11.52],[-11.458,10.05],[-15.738,5.92],[-17.279,0],[-15.708,-5.92],[-11.419,-10.02],[-5.279,-11.52],[-0.258,-10.56],[3.581,-7.78],[0.902,-5.25],[-5.089,-7.87],[-9.219,-6.85],[-12.059,-4.06],[-13.089,0],[-12.059,4.06],[-9.219,6.88],[-5.089,7.87],[0.902,5.22],[3.581,7.78],[-0.288,10.56]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"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":[[27.471,-11.2],[27.471,11.2],[23.311,11.2],[23.311,1.6],[11.732,1.6],[11.732,11.2],[7.572,11.2],[7.572,-11.2],[11.732,-11.2],[11.732,-1.95],[23.311,-1.95],[23.311,-11.2]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"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]],"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":[[62.902,11.2],[62.861,-3.65],[55.501,8.64],[53.652,8.64],[46.292,-3.46],[46.292,11.2],[42.322,11.2],[42.322,-11.2],[45.742,-11.2],[54.641,3.65],[63.382,-11.2],[66.801,-11.2],[66.831,11.2]],"c":true},"ix":2},"nm":"路径 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"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":[[89.684,7.71],[89.684,11.2],[72.883,11.2],[72.883,-11.2],[89.234,-11.2],[89.234,-7.71],[77.044,-7.71],[77.044,-1.89],[87.863,-1.89],[87.863,1.54],[77.044,1.54],[77.044,7.71]],"c":true},"ix":2},"nm":"路径 8","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,0.800000011921],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"形状","np":10,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"t1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300.24,283.76,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":24,"s":[105,105,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":48,"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":72,"s":[103,103,100]},{"t":96,"s":[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":[[-83.376,-3.072],[-61.346,-3.072],[-61.346,3.118],[-83.376,3.118]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,-2.55],[0,0],[0.72,3.22]],"o":[[0.62,3.31],[0,0],[-0.05,-2.55],[0,0]],"v":[[-80.928,12.098],[-79.918,22.228],[-74.108,21.508],[-75.458,11.568]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-0.37,-0.95],[0,0],[-0.21,-0.63],[0,0],[-0.17,-0.93],[0,0],[0.87,2.12],[0,0],[0.27,0.61],[0,0],[0,0]],"o":[[0.38,0.85],[0,0],[0.23,0.65],[0,0],[0.38,1.22],[0,0],[-0.36,-1.57],[0,0],[-0.27,-0.65],[0,0],[0,0],[0,0]],"v":[[-71.04,12.144],[-69.91,14.874],[-69.55,15.834],[-68.88,17.754],[-68.58,18.694],[-67.73,21.984],[-62.11,20.544],[-64.1,14.704],[-64.51,13.724],[-65.34,11.834],[-65.76,10.944],[-65.76,10.944]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.18,-0.29],[0,0],[-0.72,-2],[0,0],[2.02,2.79],[0,0],[0.2,0.27]],"o":[[0,0],[0,0],[0,0],[0.18,0.28],[0,0],[1.67,2.63],[0,0],[-0.99,-2.34],[0,0],[-0.21,-0.28],[0,0]],"v":[[-61.248,11.854],[-60.978,12.244],[-60.978,12.244],[-60.418,13.054],[-59.868,13.904],[-59.308,14.764],[-55.348,22.224],[-49.778,20.064],[-54.858,11.674],[-55.488,10.804],[-56.108,9.984]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[2.35,-2.07],[0,0],[-1.39,3.84]],"o":[[-1.39,3.5],[0,0],[2.49,-2.59],[0,0]],"v":[[-88.798,10.368],[-94.848,19.778],[-89.518,22.368],[-83.278,11.758]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"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":[[-88.896,-8.4],[-88.896,8.45],[-55.436,8.45],[-55.436,-8.4],[-69.556,-8.4],[-69.556,-12.91],[-52.276,-12.91],[-52.276,-18.29],[-69.556,-18.29],[-69.556,-22.56],[-75.406,-22.56],[-75.406,-8.4]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"ks":{"a":0,"k":{"i":[[0,0],[-1.2,-2.25],[0,0],[2.35,2.14],[0,0],[0.11,0.1]],"o":[[2.59,2.4],[0,0],[-1.21,-2.01],[0,0],[-0.11,-0.1],[0,0]],"v":[[-14.4,-18.286],[-7.58,-10.276],[-2.93,-13.486],[-9.04,-20.286],[-9.74,-20.916],[-10.08,-21.216]],"c":true},"ix":2},"nm":"路径 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[0,0],[1.78,-2.02],[0.39,2.93],[0,0],[0,0],[0,0],[-0.1,4.51],[0,0],[-0.38,-4.36],[0,0],[0,0],[-2.45,0.72],[0,0],[3.46,-0.72],[0,0],[2.78,-0.36],[-0.24,-1.39],[0,0],[-1.85,0.28],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.82,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.24,-1.59],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.46,0.7],[0,3.12],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.06,-3.79],[3.79,-1.73],[-0.82,-1.39],[-2.79,2.26],[-3.5,0],[-1.06,5.05],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.02,0.13],[0,0],[-0.01,0.13],[1.25,1.34],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.5,0],[1.3,3.69],[-2.16,3.89]],"o":[[-1.25,2.35],[-0.52,-2.45],[0,0],[0,0],[0,0],[-0.39,-4.27],[0,0],[0.04,4.41],[0,0],[0,0],[2.83,-0.57],[0,0],[-2.53,0.84],[0,0],[-2.82,0.54],[0.63,1.3],[0,0],[1.82,-0.22],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.77],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.81,1.58],[0,0],[0,0],[0,0],[0,0],[0,0],[2.62,-0.1],[1.92,-0.91],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.58,4.7],[-3.31,2.78],[1.44,1.3],[3.12,-1.63],[2.06,4.71],[3.55,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.02,-0.12],[0,0],[0.02,-0.13],[-1.53,-0.63],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.3,1.41],[-1.49,0],[3.12,-3.17],[0,0]],"v":[[-9.122,-1.874],[-13.732,4.706],[-15.122,-3.454],[-2.542,-3.454],[-2.542,-8.884],[-15.692,-8.884],[-16.172,-22.174],[-22.172,-22.174],[-21.602,-8.884],[-30.962,-8.884],[-30.962,-15.364],[-22.992,-17.324],[-26.932,-22.224],[-36.162,-19.844],[-37.562,-19.564],[-46.082,-18.194],[-44.452,-13.344],[-42.312,-13.604],[-36.772,-14.354],[-36.772,-8.884],[-45.842,-8.884],[-45.842,-3.454],[-36.772,-3.454],[-36.772,3.076],[-42.152,3.956],[-42.152,3.956],[-43.992,4.246],[-43.992,4.246],[-45.692,4.506],[-45.692,4.506],[-46.752,4.656],[-46.752,4.656],[-45.362,10.466],[-36.772,8.786],[-36.772,15.746],[-37.872,16.756],[-38.572,16.776],[-38.572,16.776],[-39.622,16.796],[-39.622,16.796],[-40.652,16.796],[-40.652,16.796],[-41.502,16.796],[-41.502,16.796],[-42.402,16.776],[-42.402,16.776],[-43.322,16.746],[-43.322,16.746],[-44.252,16.706],[-44.252,16.706],[-42.242,22.516],[-41.312,22.506],[-41.312,22.506],[-40.432,22.496],[-40.432,22.496],[-39.592,22.476],[-33.502,21.406],[-30.962,15.796],[-30.962,7.586],[-23.042,5.906],[-23.422,0.716],[-30.962,2.066],[-30.962,-3.454],[-21.072,-3.454],[-18.622,9.506],[-29.472,16.366],[-25.582,20.976],[-16.652,15.116],[-8.352,22.706],[-1.872,16.256],[-1.752,15.656],[-1.752,15.656],[-1.632,15.026],[-1.632,15.026],[-1.532,14.356],[-1.532,14.356],[-1.432,13.656],[-1.382,13.286],[-1.292,12.536],[-1.252,12.146],[-6.002,8.836],[-6.052,9.906],[-6.052,9.906],[-6.092,10.576],[-6.092,10.576],[-6.152,11.506],[-6.152,11.506],[-6.202,12.086],[-6.202,12.086],[-6.262,12.626],[-6.262,12.626],[-6.312,13.136],[-6.312,13.136],[-6.372,13.606],[-6.372,13.606],[-6.442,14.036],[-6.442,14.036],[-6.512,14.436],[-6.512,14.436],[-6.582,14.806],[-7.772,16.846],[-12.052,10.946],[-4.082,0.336]],"c":true},"ix":2},"nm":"路径 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"ks":{"a":0,"k":{"i":[[0,0],[-0.47,-0.37],[0,0],[-1.16,-1.79],[0,0],[2.59,1.92],[0,0],[0,0],[1.01,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.29,-1.54],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.15,0.01],[0,0],[0,0],[0,0],[-0.13,0.01],[0,0],[-0.96,0.3],[0,2.98],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0.46,0.34],[0,0],[2.5,2.05],[0,0],[-1.34,-1.87],[0,0],[0,0],[0,0.72],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.77,1.44],[0,0],[0,0],[0,0],[0,0],[0,0],[0.15,0],[0,0],[0,0],[0,0],[0.14,0],[0,0],[1.33,-0.11],[2.3,-0.72],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[8.828,10.796],[10.228,11.866],[10.938,12.446],[17.088,18.716],[21.308,14.786],[14.738,8.686],[29.378,8.686],[29.378,16.516],[28.078,17.476],[25.558,17.456],[25.558,17.456],[23.488,17.426],[23.488,17.426],[22.238,17.396],[22.238,17.396],[21.298,17.366],[21.298,17.366],[20.398,17.326],[20.398,17.326],[22.318,22.516],[23.818,22.506],[23.818,22.506],[24.768,22.506],[24.768,22.506],[25.668,22.486],[26.108,22.476],[26.948,22.456],[26.948,22.456],[27.748,22.416],[28.138,22.396],[28.888,22.346],[32.308,21.746],[35.378,16.656],[35.378,8.686],[45.218,8.686],[45.218,3.356],[35.378,3.356],[35.378,0.576],[29.378,0.576],[29.378,3.356],[2.448,3.356],[2.448,8.686],[11.138,8.686]],"c":true},"ix":2},"nm":"路径 9","mn":"ADBE Vector Shape - Group","hd":false},{"ind":9,"ty":"sh","ix":10,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-4.87,-0.62],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.11,-0.01],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.1,0.01],[0,0],[0,0],[0,0],[-0.62,3.86],[1.44,0.77],[0,0],[1.87,-0.18],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.14,0.02],[0,0],[0.04,0.01],[0,0],[0.06,0.81],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,4.22],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.11,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.1,0],[0,0],[0,0],[0,0],[4.07,-0.44],[-1.68,-0.24],[0,0],[-0.35,1.71],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.17,-0.02],[0,0],[-0.05,-0.02],[0,0],[-0.81,-0.3],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[5.616,-21.264],[5.616,-7.344],[12.136,-0.714],[12.696,-0.644],[12.696,-0.644],[13.286,-0.594],[13.286,-0.594],[13.906,-0.544],[13.906,-0.544],[14.556,-0.504],[14.896,-0.484],[15.586,-0.464],[15.586,-0.464],[16.316,-0.444],[16.316,-0.444],[17.066,-0.434],[17.066,-0.434],[35.096,-0.434],[35.096,-0.434],[35.766,-0.444],[35.766,-0.444],[36.396,-0.454],[36.396,-0.454],[37.006,-0.484],[37.296,-0.504],[37.856,-0.544],[37.856,-0.544],[38.386,-0.594],[44.596,-6.384],[39.166,-8.014],[39.106,-7.654],[36.266,-5.164],[35.876,-5.134],[35.876,-5.134],[35.456,-5.104],[35.456,-5.104],[34.986,-5.094],[34.986,-5.094],[34.486,-5.084],[34.486,-5.084],[17.156,-5.094],[17.156,-5.094],[16.316,-5.104],[16.316,-5.104],[15.566,-5.124],[15.566,-5.124],[15.106,-5.144],[15.106,-5.144],[14.686,-5.164],[14.686,-5.164],[14.306,-5.204],[14.306,-5.204],[13.956,-5.244],[13.486,-5.314],[13.206,-5.374],[13.076,-5.414],[12.836,-5.484],[11.676,-7.084],[11.666,-7.314],[11.666,-7.314],[11.666,-8.254],[39.456,-8.254],[39.456,-21.264]],"c":true},"ix":2},"nm":"路径 10","mn":"ADBE Vector Shape - Group","hd":false},{"ind":10,"ty":"sh","ix":11,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.664,-16.368],[33.794,-16.368],[33.794,-13.198],[11.664,-13.198]],"c":true},"ix":2},"nm":"路径 11","mn":"ADBE Vector Shape - Group","hd":false},{"ind":11,"ty":"sh","ix":12,"ks":{"a":0,"k":{"i":[[0,0],[-0.53,-1.92],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.66,1.55],[0,0],[0.13,0.29],[0,0],[0,0]],"o":[[0.91,1.97],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.36,-1.17],[0,0],[-0.14,-0.31],[0,0],[0,0],[0,0]],"v":[[76.272,-21.502],[78.722,-14.972],[69.312,-14.972],[69.312,-9.932],[93.932,-9.932],[93.932,-14.972],[81.262,-14.972],[84.672,-16.032],[83.052,-20.312],[82.652,-21.232],[82.242,-22.132],[81.842,-22.992],[81.842,-22.992]],"c":true},"ix":2},"nm":"路径 12","mn":"ADBE Vector Shape - Group","hd":false},{"ind":12,"ty":"sh","ix":13,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[2.64,-4.29],[-0.91,-0.87],[-0.39,5.28],[0,0],[-0.01,0.19],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.07,-0.14],[0,0],[-0.27,-1],[0,0],[0.52,1.15],[0,0],[0,0],[0,0],[0.07,0.14],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.53,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.14,-1.39],[0,0],[-1.31,0.79],[-0.29,0.67],[-0.91,-0.87],[-0.36,5.29],[0,0],[0,0],[0,0],[-0.01,0.13],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.04,-0.22],[0,0],[-0.19,-0.31],[0,0],[-0.07,-0.08],[-1.15,0],[0,0],[0,0],[-0.67,0.53],[-0.29,1.1],[-0.04,0.29],[0,0],[-0.01,0.09],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.92,0.81],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.03,-0.06],[0.2,0],[0,0],[0,0],[0.09,0.14],[0.01,0.13],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.04,-0.63],[0,0],[2.98,-3.42],[0,0.91],[0,0],[0,0],[0,0],[0,0],[0.43,-1.92],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.14,5.39],[1.2,0.53],[2.44,-3.91],[0,0],[0.01,-0.18],[0,0],[0,0],[0,0],[0,0],[0,0],[0.07,0.14],[0,0],[0.55,1.31],[0,0],[-0.29,-0.86],[0,0],[0,0],[0,0],[-0.07,-0.15],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.57],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.63,1.29],[0,0],[2.38,-0.03],[0.62,-0.38],[1.3,0.67],[3.84,-4.04],[0,0],[0,0],[0,0],[0,-0.14],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.03,0.27],[0,0],[0.11,0.48],[0,0],[0.06,0.09],[0.82,0.82],[0,0],[0,0],[0.96,0],[0.68,-0.57],[0.04,-0.2],[0,0],[0.01,-0.08],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.2,-0.43],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.03,0.13],[-0.09,0.14],[0,0],[0,0],[-0.24,0],[-0.03,-0.05],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.01,0.61],[0,0],[-0.29,3.99],[0.14,-0.68],[0,0],[0,0],[0,0],[0,0],[-0.19,1.73],[0,0],[0,0],[0,0]],"v":[[49.202,-2.164],[49.202,2.446],[52.322,2.446],[52.312,3.466],[52.312,3.466],[52.292,4.496],[48.912,20.206],[53.232,22.996],[57.062,8.266],[57.132,7.136],[57.162,6.576],[57.212,5.476],[57.212,5.476],[57.602,6.306],[57.602,6.306],[57.982,7.166],[58.182,7.596],[58.552,8.466],[59.852,12.046],[63.452,10.416],[62.192,7.316],[61.792,6.456],[61.792,6.456],[61.382,5.586],[61.172,5.156],[60.752,4.306],[60.752,4.306],[60.332,3.506],[60.332,3.506],[57.262,4.796],[57.312,2.446],[63.552,2.446],[63.552,16.756],[62.832,17.516],[61.592,17.536],[61.592,17.536],[60.682,17.526],[60.682,17.526],[60.182,17.516],[60.182,17.516],[59.662,17.496],[59.662,17.496],[59.132,17.476],[59.132,17.476],[60.622,22.366],[61.392,22.366],[66.772,21.356],[68.112,19.826],[72.382,22.756],[77.882,7.386],[77.932,6.556],[77.932,6.556],[77.972,5.746],[77.982,5.346],[77.992,4.556],[77.992,4.556],[78.002,3.796],[78.002,3.796],[78.002,-1.344],[83.852,-1.344],[83.852,15.736],[83.852,15.736],[83.862,16.346],[83.862,16.346],[83.882,16.896],[83.882,16.896],[83.902,17.406],[83.902,17.406],[83.932,17.866],[83.932,17.866],[83.962,18.276],[84.062,18.996],[84.132,19.306],[84.582,20.456],[84.712,20.626],[84.912,20.876],[88.082,22.076],[90.332,22.076],[90.332,22.076],[92.972,21.356],[94.372,18.916],[94.492,18.166],[94.542,17.686],[94.572,17.436],[94.622,16.886],[94.622,16.886],[94.672,16.306],[94.672,16.306],[94.732,15.376],[94.732,15.376],[94.782,14.416],[94.782,14.416],[94.822,13.456],[94.822,13.456],[94.852,12.526],[94.852,12.526],[91.292,10.516],[91.242,13.696],[91.242,13.696],[91.212,14.656],[91.212,14.656],[91.202,15.056],[91.202,15.056],[91.182,15.406],[91.182,15.406],[91.152,15.696],[91.152,15.696],[91.102,16.076],[91.102,16.076],[91.052,16.386],[91.052,16.386],[91.012,16.646],[91.012,16.646],[90.962,16.856],[90.862,17.136],[90.332,17.326],[89.762,17.326],[89.762,17.326],[89.282,17.136],[89.222,16.866],[89.202,16.656],[89.202,16.656],[89.192,16.386],[89.192,16.386],[89.182,15.886],[89.182,15.886],[89.182,-6.334],[72.672,-6.334],[72.672,4.046],[72.672,4.046],[72.662,4.766],[72.602,6.636],[72.562,7.406],[68.352,19.156],[68.542,16.846],[68.542,-16.804],[61.922,-16.804],[63.692,-21.794],[57.932,-22.704],[56.882,-16.804],[52.322,-16.804],[52.322,-2.164]],"c":true},"ix":2},"nm":"路径 13","mn":"ADBE Vector Shape - Group","hd":false},{"ind":13,"ty":"sh","ix":14,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.06,-0.14],[0,0],[-0.22,-0.92],[0,0],[0.96,2.07],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.05,0.13],[0,0],[0.45,1.25],[0,0],[-0.48,-1.72],[0,0],[0,0],[0,0]],"v":[[63.552,-12.336],[63.552,-2.156],[57.312,-2.156],[57.312,-9.456],[57.642,-8.666],[57.642,-8.666],[57.962,-7.836],[58.122,-7.426],[58.422,-6.586],[59.472,-3.216],[63.072,-4.756],[60.572,-11.186],[57.312,-9.986],[57.312,-12.336]],"c":true},"ix":2},"nm":"路径 14","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"形状","np":16,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"c1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[301,303,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":0,"s":[90,90,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":30,"s":[105,105,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":48,"s":[90,90,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":78,"s":[105,105,100]},{"t":96,"s":[90,90,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-91.13],[91.13,0],[0,91.13],[-91.13,0]],"o":[[0,91.13],[-91.13,0],[0,-91.13],[91.13,0]],"v":[[165,0],[0,165],[-165,0],[0,-165]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"c5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":78,"s":[50]},{"t":90,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[301,303,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":52,"s":[65,65,100]},{"t":90,"s":[110,110,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[436,436],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.92549020052,0.811764717102,0.666666686535,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"c4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":56,"s":[20]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":68,"s":[20]},{"t":86,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[301,303,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":56,"s":[50,50,100]},{"t":96,"s":[120,120,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[550,550],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.984313726425,0.886274516582,0.760784327984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"c2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[50]},{"t":42,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[301,303,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":4,"s":[65,65,100]},{"t":42,"s":[110,110,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[436,436],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.92549020052,0.811764717102,0.666666686535,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"c3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":8,"s":[20]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[20]},{"t":38,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[301,303,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":8,"s":[50,50,100]},{"t":48,"s":[120,120,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[550,550],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.984313726425,0.886274516582,0.760784327984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"miaobian3","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]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":58,"s":[60]},{"t":92,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[301,303,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":54,"s":[90,90,100]},{"t":92,"s":[180,180,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[332,332],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 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,"bm":0,"nm":"描边 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":"变换"}],"nm":"miaobian1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"miaobian2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":24,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":34,"s":[40]},{"t":68,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[301,303,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":30,"s":[90,90,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]},"t":68,"s":[180,180,100]},{"t":92,"s":[180,180,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[332,332],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 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,"bm":0,"nm":"描边 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":"变换"}],"nm":"miaobian1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"miaobian1","sr":1,"ks":{"o":{"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":[80]},{"t":44,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[301,303,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":6,"s":[90,90,100]},{"t":44,"s":[180,180,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[332,332],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 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,"bm":0,"nm":"描边 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":"变换"}],"nm":"miaobian1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":96,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/app/src/main/assets/touch06.json b/app/src/main/assets/touch06.json
new file mode 100644
index 0000000..6991f84
--- /dev/null
+++ b/app/src/main/assets/touch06.json
@@ -0,0 +1 @@
+{"v":"5.7.13","fr":24,"ip":0,"op":72,"w":600,"h":800,"nm":"画板","ddd":0,"assets":[{"id":"image_0","w":204,"h":210,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_1","w":420,"h":420,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_2","w":420,"h":420,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAYAAAB+TFE1AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOy9bdSt13UVNud+9nPeq6srm1hOxTCxrxXsAShNOtqEr4RAQxLLoekoTbGBjJRRCBQITUhIiK0MUssNI5KDE8DhI7QkdFBIqJSm7aAkkmNq2nwAIQwGSa1SbCJfObioWHJkXUn3Pc9+9uyPtdbe+znvqw/bkqyPs37c97znnOfzPXfPM9eaay7iGMd4mYUkfvgf/IVX5tNrrwZ145rSq7nixkrdSOFGJdxI6dUCXgnxBMSO0k7giaATQrPACwR2BHYVOCEgAHsIeyXsAZwmYS/wFNCe4DURC6DTBP5KFR4i8ZCAh5L4kCY8NNX6MYgPlZMLH3v9f/jNj5DUZ/peHeMYz2fwM30CxzjGsx364HtO/vWVq5dr5esF3lyly4RuVuXrSV2uwGdTSADsf0As+0SJXeDMi/0XCSQPHxOA+CltD2QAIOMNAIgVwsdIfFjClZR4P8grhO5PSR/+NZcvXeEbv+n0WbtpxzjGCyCOgHSMF2VI4pX3vvv1icvnV6UvAPTrasXrE/V6Aa/xRT1iGQBjfKVDEbBg+MXeRH+T/HnGYxJQ37g9/+lsn/u1NcAazpMANEMduAh8VOD9JK4A/H8S6y9Uzb94+U3f9uEjuzrGizGOgHSMF3w8/JN3vvJR4PNV9QUiPl+rPh/A55O4BAECCgkAlKRD9rJsSdD4uAFE2RzQt4faW0bM6c9hi27Pwvb5vHMdn5MwHzAy+XUCQoYh3VUAv8iJv0jhF5n4CzcAv/iqr3z7I8/8rh/jGM9/HAHpGC+o0Affc3Lllx7/QkBfIumLJfz7JF5rKy88rUYdLNulPYpnSUgCiCUW/4MjyakGJS2JAJBQVZGYIIgEBVQA/ff4ae8bt/n0txc421Wyn+8AXvYr88jGDmIGRrCiIM2gPVOFjzDhnxH8WYA/c/lzL/7TY9rvGC+kOALSMT6j8dH3v/vVZdl/8Vr1xUL6EkJfRHCWfftfsMWZsk2HtaW5bBZufyxpIdkAAAASDQDieUnF1n+HOyMwgVYGDgZswXRgp+Cg0fDj2does9O8oHtnzl9UPrxW/zkHEB9Qs006MBGTDNX3EH9+mvAzhH42z7uffc2XfdvHnt2/8DGO8czjCEjHeF7jgfe+6zUr6pso/TaAXyzp1/lLBdui/9lUm7OdlubyNZfgIoiSFKwD8FRe8CR0fHCAAASoCxkwaAq4ebcDyeFzDWqeze2FuefqAty2W4cIYgOsEEFMfuGH92juu7Q99tQf6LvNjvT/ksTPiPzpCem9r3vT2z767Pzlj3GMp48jIB3jOQ39/F+bf/nhR764qLwZwJspfL4v0AeptxEYCFHLYQ2GYhnSW7EQx/uAVnJpoLP4kxuAGJ5bzqvYBGLEcy39d5AUtF+e/e0FzBxuzJnzF+a2ObbMK9ilgXMCUC0V2BikkTeCs5qsAoCDXIN++e/EL4C4JzPf8zmveuXP8ov+6IJjHOM5iiMgHeNZj3997/e+tmh5s6hbhfrlqHyFAZDVN1x4sIzVfTkg+bItgmVcWGWL5BJf+4dU13IeS4ELHQIINrI2xJFSESrojMqerTCgY8upWd0nQah+jIQ4gedme+RDYDt7/sgHfM/2bcKGDsxQAymraflxIu3XWWYeUqDBoBB/M0CzgEcBvm8C782c7/k1t37rR57yg3CMY3yScQSkYzwrceXeO76wSm8V+VVJ+jx19VukpxbgHGXbUO8BALZ1PMAHYx1mOctyFJJuOxEXKgDY90V4XM7b4xKVGw4oZmIAA4wzr1uCy8QC2PQs0S9yFM3lp9keT3P86WnOfx4O365f4Jzst5YWBDi3OlbPFM4AugiDXmfqAopWd/K9x+8kMEmgEj9A4seTcPflW2/7p0/22TjGMZ5pHAHpGJ9y/PI9d/57BfWtAN4q4XP90zT2/PQ60Kh2MxBao+ZjAgDvAwqKZIAxrtelL8ubNNgSTMN2HUo2SwmOSTIMW8FrVl1dgPHwZ2J4vp1XXOSZlFpLjEFy4Bj3Oxz0KY6v+anPPxR59ny/fmNX2G4IOKNCu72+vYx+sQFOUwUOaT7bnn5FDk52BGdSFfillHBXrumuz3nz2//5ObfwGMd42jgC0jE+qXjg3j/3765a3gLx94J6I7oYYQtAaKACYxupAMM3cqnE8khIFVi3AKQypq0ipdcK+ACSixm8FmVVJtt4GXJmwAEekCheveHB6+3n8EI8Xw53BGy36lnE8fVQvVldSNhUj57y+GosaHv+6MCSn+T6s73RUoXnMyrkUWyBjeRcEjQnl6u72m/2CldjV+2vZyq+OP+ZwL8UcNfE+e7X3fqn/y8c4xjPMI6AdIynjY/cc8cbKvi1FXorpN8QqTjY6rWcBSALgkvIlUkDpPNqP2zigrFWwtIXQADQ6nsdWUMTQhxQjbHRtbEYP5Y0ABK38NGf26AGlyoRCUiiqsREChSrXR4S/fkEVCMZQAUSJes1Epmakg3P6PjSfO75D4v/edcfQGXg3f4a8/adNW/hUwCY+zlxbmRPIMksiPKa1CF7Gi5hbgBprOo+incn6Idf++bbPoRjHOMp4ghIxzg39MH3nFz5V4//Z0L9wwR+h9fWg3ksvRakZYCCIs8oeSrO+4jo7+sLLokS6betuECCUGLJHVbnBQdMYgDD1n5DQPUAGDdlHKEkSpVkkjWuVnUoS+zPJUpCKrYGtyIVHE36c5b20vZ9EQ6B3T1i/uSOz/k84ILxonze9W9SahhAY8gtei1ris2FCpJ5MDTqvUu2WY79ScomN5eqALIzJmzBKTuHmiWACf8ASj94+dde/J+ODbnHOC+OgHSMTVz53+/8vLrHHwbrfw7hs6StMIEkqtQW/Gg+lSSCZdS7qTsotJQXCd/eVGdWtNcKUUPpY2Pl46vqpqbkLMHqTpuaP6Dq2zeWYuzFXy5o1ju+9xFcBsAhuQDCQHiQQFSo/Q5/Tt4v1N/X93W4vaW4nv74/moez78xMLvsfN71M9Jx7S9htazDdKMxKSDSfSCyYZp9OSCV40uDwHm4/x10bKfzUA8c03mh3MshsKCdx8fB9D+kGX/98u98+wdwjGN4HAHpGPjoz/+1i6cfe+j3kvx6SL9Vg9EogLJRxg2CBAAgWYbv4RsVHByQ/Jmlq8a0AtSw3UaxhqEWFURJ/lzfn0Bo2bILSeJ6hqX4gh9AF6AyAJsBhoBEf41c+l5kNIcpRBVet6kgU1CfXssBm5b9ybaXqfCe9PjAUJayZlltwGpgXOP1g6S0YSmxWR6zkAdMKiL3a4vf44bXHDsKcBrub9gTScCugRONZVGcB7ujxt4MEPmPAf31k1ff+D++5ov+6OM4xss6joD0Mo777333ryf231SFr03AJYHFV7tizSk08QEAeGOqCwr28O/i57GgHhxTcQ4yIkDfvkUTRow1nlg2W5rNwWeTSgNsyXb4ElR6V8+WzbCdX4CDhnMIG4Qu6ZZEygZVqFYwuQPE+DhcfuK5Wo3GPJPtrUZ09vjDedF+nzvrMkwxNkZImsfrD8ASkEc2Fem/DQoPNSgc1KT86DNC/t7qUgkBTvFVoMoFGzFKo5emZhehtJrTgRdfHC+D+gTAHwF277n51m/7FzjGyzKOgPQyjI+893t+R1nXbwX0H6kJFIimPqNCgt2MRwUSwkKiKeJ8d6UthsGWvA7U6xXxPt/rsP2YepPXQiguB3WUcpjWCiA8J3VWNuxF1RJpEiEuwgAcAJBSAwgHl4VB/6QOEL4NSYkiqoHFaDsXQPRJbU/OB8eX/NzYzy33fQFAf0wYWMX1Awj21xhN+1sCeQT2lvLrMdvdbQlAN2sF4TJ0fx0VCrBhPxYa8xv2Jx9oaCILb8j1nYa7eZwrAWSIfy9P0/e+9k3f/n886Yf4GC/JOALSyyT0/vfnD+//8e9RrX8qEV+owTsuGBGIxVJhySXOIsAlvlLL6zie0wll3DIUMcqgIBgUcDKwA73Eg5XDCCHJU2le0BdS2dRRvKm2128CeEzBFgu0ajW2ltJYyLFFHShIqQ+o8BOzZZBsYOFycz+uA8cWBkiwjs8PA/c6U3lm2xPI2+MDcMDaAFwIB2qFOa4OwEXOHawqnDLmNNSwbD/YqONITQAwAlQQU7+aUXZ+0E+lOep+2PREafZ39L4nH4thf/+aN+CETUovt/sJZBH/lEzf9/rdb/5RftmXHbDvY7wU4whIL/H4tz/9rhuuXl2/HsKfJPHaKgeDw9oQAJoqDkCF1AQKQ10oFms5OJ1JxQXTQfLtMNSFYAcBZTLqICpWrwkl2pb9eC5qDdZjp0IhTFHHXFYAkg+nU7AKyz2e8WA7h3P4e+ILPoc2Ii/PKLKTBDfv3BZVPsnt83guZ86zO3RbtnFkZJYizJt7USvANNSD2s9MgGcAyjgRvabkXwwA0QYC2t9sUPShN/z6tbd+KKsvSR2YztScfMggB2l6S13mzT3p1/0RAH/x0qXpBz/7t73t0fPu0TFeGnEEpJdo3P/+7/nVOC3fIuC/JPAKdOeC0uTarqnuablUIskWbAhPpo4Tw9pnbIwtgOVwqjZpPZAogzpsAAcC3pO0BSB0xmBy8laPMVzSsqkhSRQY/VGIlc4PMoytQJSnbFEP0AAKFM96rYSReRt+jzXUF//NeX0629PTZV2+7Se/Aa/c2VjnKgBySwualTdFznRZOTwdmMippxjddBUtRcfzAKop/OiGr/3EMvvGXRzh4gmRsxQqSnNzkJ11gFN46UFSPpwHRTJ74jOAKVfgEwT+W5zkP3/zl337v3km/w+O8eKKIyC9xOKj73/3q/f75dsl/QkCJ7LFvQELBqVczNmxplVJwhpqKRDFsCl6hOisqtWFQswwMqFyRohARtrKQcgAyFtgB7GBf5Mnl1ZT6UKBAnpDLL0WdG5FJYAnVjp7IGJp7EGDiB1oICFp8fWcEjXqEyrQClUHugVneH2bT3V7iFMDsj6copuaGwg31jE2QRn4bO+FbznB04EwVjVv7qtt3piUuTNs0qLNgJVQjgbfxCGF2FN7gZDZEdVTeqEobMq9OViTfxqEJp7oTuXW2yQRaZPOgwHaEyD/ym43f89xftNLK46A9BKJKz91x2fpMXxrlb6JxPXo9jnBRjZAJKgp2bpSLoxKAUFnUnICl+EDY8yoKeIsFQfAXAmIwfSUIFRaH47VqjiCEGC1nkQuajUUgKIElLZEn0mtxRmxNGOCcTirJCYDzwYepCKzlRJ6vUtW8E9jM9EIXtuGou1rz8L2qp4yS9vsW8cO5Li2zqysqTVt1GtRImszj7wuozw2MoWoop9/LPp2lynNtafsev3JoHIOgQTpNSJF+s6ACW1nmLvFEWf/gpPj7xfpP/aRF/46mis5W89UA78ZwFWS38+L+N7LX3rbx3GMF30cAelFHg/9o/e84hMff+xbRH1zAm5w6fZYs1l6Wi6hzw8ypmJ7aYX8ZfA/Wwigqo9xIGkpOQChtDMQS1sQMh1ZS8vZt20s8H4cCMUSRxTogBdQA5RtPUVDrYs2lDt5em1MfQEFB8zDGAsXUBxZxwY06A292OAF05BurI6sB02xTIA2JaxPc3tjJHH7I71nLCPOP0DrQNcAJmRUYJMuFObOplrCMiTbkdLMm/vvAKVakVKKxlgXSVhKtaf3TG5OMDfm5NLyJmTwNF3D3nh+k9JrzM/Vds2dHISsWZeYPGHYmJKloJUr8CjFv/CKz7r+z9/4W77pE8/gv80xXqBxBKQXafybe//c9U9g/UaofhuAz4KxCGwYEYAORJ6CG0Y4sNn3sDEkW3/QUnLoTapnhQmUsxUDIRKLp+BaHcgAKJUNMwBKU7u52GBQpC2bOoqwtFSbM4NELmM6zBfKLnIYxhFJWA5BYgADsl1TwAOanLt1+mz6lZ4knqXtCeTBEcKBrJ+zvNbUADaYZEyR9X8cjGdIGu8f1E1WPe2XN/cfyq0mR9veTPyc/fi1yFV81QEpuKukuQMT4/Dj7KbeezSwJj+nAJvRmXyyH0NPk78njF39TmQQHwfSu6/D9P2/+tY//djT3vNjvODiCEgvstD735+vnP6jP1aB7yT0avRxD71GhBGIwmtOASalNwex2BqH4l/n3Xtu83jp6RhzRmi9QYMgwXZNZ0F2/F6vQPHUGw4Vb3R/vE4omgmrol500DYEScuGSZCkDAzj/AN81GtnHSiGILXUSqbkHnKVTACQJHs+fg6vJ5Ob16rzX/80tpc4j+C2PVeqSjs4SGFgXIrFfJS0k3MD7iYo2YIUqWm8/xJnu8cQoumWlh6sQw3K2JOCO7d6EiP9Rk6belPji5uUG9BSegCsH4nGmFr7bnZGFoMHd73GFNtsfs4AP0bguy6f/JYfOMrFX1xxBKQXUTzw3jvetFZ8H6TfgDaBFWV0VIgUWjAisavlWreQgZgBg30CGpiFkkreUzT2CElahzRNkVUmSpMiA6VZXSd/bKtbY0GWirM0HEZ1m7MfiIt/IXf1sqXioi3H6lQa0mDAhukMQXKpNTzgKFSxDo8FGfuqJFL0NNnKnZBQUdtPIN7nyrXqiUyhpBTvBeTNps90+/OOT6RsYEWdd/5Rs/GbZkxMddMIu2FU4/0D8ghS5kA+1KWaISoOVH0AyLk393pDrz8fYB+Ma6w5hVovBA6jEMKPEwKHLACCZv+2sTFqdZYVjumz0+Ucqbw4Z78PM8D/e0r4U697023vfbr/W8d4YcQRkF4E8ZH3fs8bSy3vhvDV4DmMaPCXC8Uculy7SNt5QgMjamk5xGrmIoUYucDBjNSEDk2X671DXRVnAOdGncHUCKaKvRhrF1SlNRawTfotAEhdnCAH3mjyVBx3iMZyINMM+uIu1NIXfgeb1nBaQcWMIw6WClbYgh/NZwKJsFETTGw1J7MEUhR5wu6bQgOX+bzt3X5pqB0dHF/IvTB19vwFzluwMpbFxOnw3vhi3+9f1Kn8BM4A1IZBYfb8nPzv14QICNsjY0y5sWFXxwVr2prJCoRyE0JYjAo9S895nWkAppFRxWTb2VeveavK48C27PVE/t3E6U+/9k3f/kEc4wUdR0B6AcfDP3nnKz9R8Gcq6jcNWi6r6bhYIZpZ5QPvFG4KrT7U5NYEqsurDaRcpDC8B61fyIDI2JCA0us0poyTtFiqrI0eNzVcuBE00BNALm0RpKUIffEjqKXVfRyAor6TQg04RLCelCRUGmNIQ9OrsxBbxmoJcDFThAEckBbC8o8tHQiHvDiZ4TWGGtAZYEVFOtR0AwcSOaCahVFmpDIbeNnPJzs+gNlNgM6cfyLnWp0rBeMCQKQcLGr4e27sgbxG1WtoNDHE0CM198big/QelAdH3NyqUlJnSM6WGmA1OTmgoc+J5l+3MYLlgUIvGBNaKg/oJq9bxiQoe4ra2VZ3Go9PYWJ6zysS/uyrvvLtj+AYL8g4AtILMCSlB+5919dX1u9CxWd7eu4c+bakbt3jYoU2d6h0NtSSdb0u5D+dCgx1FgzbOxuytKBqrWXoY7GUHLFYxg7OiiwzI0+1+RDTIp+y3WpAZNjnLMCByMDJgh1Tq9VkBlshq2FYKqw6iCIWdF9Mq4iEJaaeElSASK3ee1Wr77eLA2qtLT2GRBnAef0MAFoqzetD/pzdvYR4riX/qjWssiKPKbzUGpLOP77EGf7+w/NXVd4yNgOhiSnXEd2CTY33T5vZRbFgD/ff7IQgNoNWBxqxIvsjkZjlf+sK7EKIMjhK2LgLN5F1wMquYhCEHby/qVkXpZbOG9JvIPq4dYjmoUdidgWgWxFZqk6qUUtzxwjOltJGNkUeH5rAP/O6W9/2g+QGu4/xAogjIL3A4iP3fvdvLsIPAPgCDMq5gRX1PiKLAyBKxRYyLn0hs4ZR9ibWBQRUUXptCP5N3BZ3js7d0oJoUO25nSYZH+tB4QQwbt+k1623qPcoyQC21UOsJmPpqCnRhQp9iadSiXqNnScFYI00WWS2JJQBFdr2SMnAZajNVK/hWN1qTHn5Mdu1Am1a7BBVsmF7CU8ZJHKzfH0Gx2dK+bzzR63gZK/ZPbB0ISrmrY1f8prWcP8qZwzpvsN6VDCLxp4AtAbXihx9XOY/Z/WkqBeZyIENEOzmVADIrsfP8UUD7mDO7tigkI8PfU3hn5f9pmyUedbPhByA47etMSSFWeshwFlK8J9n4o+/9tbv+MdP/Vc7xvMZR0B6gcT/9/6/fOmx00e/i6jfOCjDhp8SkUpzVnAJ98H7toq63hzbBBAAIKIkdVCLlJxN//S0nGrUmYwNSeP2pA3mUztXdzsI1wJL+fl3WHCFCxAOVW+xz1rloDoU+73RNlJctsBYqk3ubUcZAI9ptForpjSASIgGnN2sVWsitek6jfceAI6LRAhUVSQmn1qEVGWAkGgK9wntNVRViKm5E/TtjRH4MZ7m+AEIh+dfzf4iNwY3Xj85qx3XGlDH+0fQUn6tnoZBRCEJ0zwq/CLFB4OlOST10Q/VJOfRhOzMCcPEWURdKkDMupGzpyS91uSAYZrJqQGTRVPmNRcIu8bww9vIxaPBNpSHUV9CHx4YLuSTMP2l609u+M5/58v+xFUc4zMeR0B6AcSH773zq6D1Lwu8DGBhuG8PpqcGRF1qDQR4ANIZ+fZGNacYK6EmdFg8jx/zgbo8/CnZkG8vqFIr/Xu4iQrQFHHusLDYogxpw5ZQQnxg1xaMqG5Sb3ZWLIQxjy7YM3COVFpT9nmarS3Y1HIem7FjajFwsfDlXAYu4/tQDAgqoSRMsBqV1B/3C7PnVhi3SHGOZ7cn6vRMji/V+bzzd8fvGaMc0a+fwUY6G82b+2fMaArBhn8eLNWXkoscuuhCHGs8zNEbRWGOP1QII1r9SSTMyDXU3s60NDe/vWY91PqKJmfviKZbUnNXAgLowgbvTdLsn5Y8Ch80GLiakILZ//8cSsVnr1M9QKZveP2tb/+JM/f6GM9rHAHpMxjuO/fnVfW1tuiLtFQbQCwUjRGBxdtEzzAi/4a4BYyoDQVACcUXc2cckZaLviEKbOm2mAfUwApgaSlDq6VTLkYY+4JcEWc4QS7R/U+gRE1GAXRRiBfK8O29qd4a+3FmEKk2AAhJNNBB1k7VuRtqSWBjNAaMU9TuF9ABAkADkRFg/Pq3/UTbXqiDUo0ti75Aj6892faNYTzJ8eM1VuXx/Efg4lYWDUgUUt7UthLF6kBQTYA+sigHqRwAZWnFgT3VADhxC05tmiyEGtLx2ep+LkhgN44dUmZxrvMoH+99TS1F54xGkBC9USOQqJo1EhD7bf1ONc7NVIGyJl0CIzDFqAuzVxJmJv7wbjd/y9Ef7zMXR0D6DMWV9975dbXW7wXwSnShAeBMxYGJMNBojMh6Wn0Q3tBH5NqnofnVUnPhfhCMyIe3tcmpEkoYmHI7D6g5ZJtwoUu0mzpOPSXXmFAXJCytbwbGuhKAda0lOSAZELG0lJJqSUMaSt4ka7Jm36eddtgMtZRaxYpIkQlpjYbZuMxY8OUmqsCTAIwZtK2JSZWVcZe672kSWemCDU+tkUlJq5tTUOQz2j7GPRwcHy5Y2LgtjOyMwS7r5Fu161eAD3r6zxiQqfQsLWdMIQQQI0ARLpiA9VKN7ElVc+vhGsBJwGx//96cK7ca8tezJIbfHkE4mIh9HlTMYsp2R9msjxSCBWpOoiq0cxBpAOWff+9RstRgIrN/IAKg5pjHBHijrTCH44Pv65GU0rdeftPb/xaO8bzHEZCe5/jo33/35dNl/wMQ3uTquUi1DTOJzptHpAXg4n2KYedzWGta+j7idQ2MyMAuXBQAIGYIKbG4f5wNx4t+H1FMIdM2dRyM+pSQD7dzb5LsgQl5Kq4teIml1i5xtqbZhKZkezL2gzHVFvUcQElmDdSaSwGtztSGVJWnlBb/0t4AIimpqnLoibXrBABMWLFichpjRCYoDbDWxClVARPWqva4uSY9zfYi5/OO34DOzzW548Lmmnz7Loaw61flDAenuFfNSSFYzyFAVc5xfE6efkNnT61mp860RvWeFFLrPqVWZkHkdSU7/8aaHGw2rMmbbpFStv1H7YciBgEEgumI1hQr4LBHqUm9Q2mHeXhtM48pBBMmgjDgpIHVe0/m3R97zZd/2xUc43mLIyA9j3HlvXd+3VrrXyJ4AUONCNAikK6MW2AV2808IpDFzChRjDXBhQMwA1R4fYaSkAoGg9PGiNwFwXNXrbHVT8/fgyVW60jLhVu22/Nwk5KDp8Gs/lBaLUIokfpJOS02N5sK1hapOAGl9w1t3B0opqULBgx8Wl3G13z69gZkXvJCV9gl9gXfeqZGcLDojydQWlZWboEFOPx9UtLqDOj8x89s+wTk8fgGYMDKxEnVgbkDRoDoihVQB4W4flXkxqb8Pon2vi6NVx4FFaKxmWq+UFPU54wFuvTbnC1y//hE824Ca80+c2l0bJiTf8jDfy9Yk+C9T/bL7LxvVozMiH6mmOcUhq/unxdsRuHLx6bCO7QlynDhQyKzZGzO/1+FgCLLWVNqfU/MVibDE1NK/9WRLT1/cQSk5yEe/sk7X/nIuv4ViL9PZuEjFy4cuCywNCA6nEd0diDeCpOBm7hBWyCy/7i1CRUEtNEOFFWJdbTxUQMilGG2jze/NtPUjTgB6CkuQDKRhTVvwqXYbEIJWzS7iMHScoPjgwSWSDb5V+/GyGAXXUbWo4oihm9RZz1VWiZf3OEsZgWQU1rWWjkCiMWEKXndbBWBqhWJU6jmJgqrs6LheQMSS7EBVZgmfCrbV3KekrRWB7WUNJ7neaCFmpiofN71qxqIIJqY61C7YSXBydJ8VpOSsIsUqIGXmhSdCOZivVF2/ysSUm/cFXauVJijbmaefHZ8ygxj3biV/fwcnERGw6sIm+0UyrxNOi+m4GLynK2JFojZPv9WK4KU0cBJO7giz+/Adh6TScAHtwfA3zuC2+vKlU0AACAASURBVN955ZS+4dhQ+9zHEZCe43jgfd/zpetS/iaI1wAw0LH1tZhMml4/2ooWdGYeUasTRcOqK+yakKFsGFGMcujD2ApqPZuac8CL+lAs+v7tuKUU43ooYyShbkspQao+viE1mXak4iqC1Vl6qEmu0VNwgH9ZDtNVFx1EqjAEA1RaKisjzWWptVEVsKJim+aLxV1imSYKqwwgAGBdDSAmal1FqtrxpwysBdOUsa4FmIx0rAfPtffE0Vc/9Ce5vai8rjKgmiasq9o5xXO11k1Da1xbpOhGBiZxDmYoSskZ1gDkeVQE9nqPCUCI1MULQ3rPpOap9UEZGxXZGUtnTa7W44EQwjK//r4BBAzA5A4PBMYR5hIjlTf2M3XGxRz1JUFt/IWr9gZF3ti/RGdP2DTV9sm1Z7zx/t8p5z/wuq/49p86/Dsc49mLIyA9R6H3vz9f2f/Dd6jiNtCmtlqtqI0OjwbXBT1154KCLuOOeURwdwW5dRDD4ufAWcEBr9WJKC3jmAc6EwJSMR1BBzTw/NqQNau6X5obkkaDKtGZjaX4BmeDqCeNThDQEqoxJS1DucVSar59pN5GBpAwlTGlRdVlw3aUlKZgOWwy7BUONlPGhKp1rTQgKS2LVsES4JUnEx+stXJKJkKQklgrlVITMpR1xeS/x3s/1e1V13maklZUTgjQsvOfpgzVko2BrWhMbKK4Io/XD1aqptnqWf6pIudgULZmG9PpjbUDQE2w5tmhb6rtR5pbehWcI/UqTx0KXa0n1jwCUxpYE60pll0IkSBqRkjHLV+YzwOmqPmgG7oOoOJpvJC7+7UJoKRM+3+XQUR9K7z5Wu0pptZiO38p2FImccfl3W9959FF/LmJIyA9B/GRe+54Q6H+FoXfKAOSYuNm5I4JXMx7zliRACaz4GnpOfu/M4gezFV720tkhmiL5+VjbMMSTMq/DjeFnQAE8wq1marVW1oKbqgP0Xt+lFDC8sb6iIwNNU82d0VQNZWc1xiKORhISlNptYeoA5nsqmwmolaURKuPJExlrSJS1WTbnmE+ZdXamYR/4R9YjqW4DIDSlIsksVbCAaMBBSsrUCaXghcUZGSsrJSq4nG8bu8BYvsMbF7/VLa3vqIVUgCW1aEkS+XN05QDpAKwtuzK8eQApAKwtyA1oWLNoQ4UO/sK8UGaTCgx9kwNSjRnTmaf1EQR0hyS/QTMQIJUs2lWEnTAmnqdyRR0/lwegSnGY7RUngsrwtAV4f5w6F3nUvGqTX3pwCOvsyWNU2stpT6rj8HoSjwDvH+Sxa977Ztv+9CTrQHH+NTiCEjPctx/z3f/QQB/EcDOM+DGgAipqtBydHtPwYV6Duiy7xUGWN4IG/UkYxcSV7hNjy8STTkHwFwVADRGFPOGvIeoKebQgGgLaIi0nNekDlRyiNqQkqfpLCW3YULWZb/vKi+XYaMfP44ZijfRajgTJqwUM7Hf1FH8eloNZppQxYIh/QUAaWKJhTwYSQKKvWpAEYBhzxQk5YLJe39W56OThJXc/IzXJwnral/Kz3v9U9y+1nXuQGZAVdo5AwnIAWLBxOqqPF6/sak695qWpSXzxAmrA6fR3TnqUUmcRwk7wwEcDhBNLaccrhPqrgeQTA6+Vs0phBJqYoiNSi+lZH1L9qWo7cPTee7C0Otgqn581Ow9Ti751hz1su78ANCnz4bDOFHzMI/JvfEsjefA5G4PXZnnAptMDg21LhGHsyUJexJ/8uY3f8ffeLK14BiffBwB6VkKffA9J1d+6er3q+LrQS6engOanFuL9dUIOJByw+1+CGMCqQ2tO89zznqF6HZCaOPAo/7CVkfyb4EtNUe6qs4KwC2NGNaach85ayxN3jMEAGkJzzSz8/EeIZccR13IhvZ5qR4+RsLPreKsEMHEB10+PbKgqPlEPaWWtUS9JmovtTuNs6wr5pSWAl9ZsqFQhqkQbdfxBd8fOzBUzCVPPcUFAGVNzFNVWSvz5MxnTQQK8pRUVlNzzLm/99Pdvq6czz1Pf6yU5klJnV1VARkTOZd1RQaglCSu88iiVhQkThmrBiFFnc9nT2iqvsaeIrVHzilJdYVLsq3mZDUrnxYb4pWo+ZCz+yk6a6rm/mDp3wkpWfovpu0GMPgcJ6bGpnI4QACCqfA6Y0KNuhSyJR4wO6OxWhN7/9JBfWl2RV3ux+cwFJAhVzdVXncgn11K+UOXf+2lb+Qbv+n0vHXhGJ9cHAHpWYiP/uSdr7u21h9NwH9Q7fvuWNcpoaCzdDVazWgULmBUz9nPoo3DAv39CDUefJtCyVVzEsBCDr1BcEbU3Le3jOhsfSh1dmVKQILYt2bVZA2vo+Ho6PcWbCj2n1z1Fs2iBWsJuXUAUNRekrQEA6rOtqbJIEWrVg31mjmldvyCAjKR5H7LQAAgY5WW2df1pQDxGHCwinW/FCA7kiE3LMiqKkw8fNziWdy+pjRnpdbKOQJXXdcZ02SfsAGsKku2Ob6WHiwoSMjh4xaj92YDcqtTJU4ZANZVzBOnkY0KyPE32tSfgNyHG1rdSZVzePiprmGiip6Wcx+5Snaj15gqm1yUUHPMs5KLHDbAFL1MAJrjuNd9mtNCV+XNkDMwaB7nMWkYrx61JVjvkTMzTvblcHR66HOW4OeKeGzHzgB+/mRKb3nNV779ARzj04ojIH2aceW97/rydV1/hMQrAMBFBVsPOrCErY4v3sVz0z5CAoWesqvASvsf0FwWenoOZnzKpp4r3WuuCyJCNQd05ZozIsRx6AKEVteBg5PJpMwlQlxi2indNSGaRrtDgosRABcmOPD18RNKQInmUSar8UwpSavWrngDqjoLsm16TSUBZUxl1aSlpccQ6bpp6czE2YiSgdsh6XDsOAVL9n6fUhLn2W7QDPsZr9FBRA4oqdYFnDhrHYYxAeBEaNWU0vxU22dZ08/4nlIST2blTbEsfslArWkeWVdcY9pYCLltXKrOpuyCJ68TtZrZqtzuNTVIBcXKQcjQwGmCWA/AyWtJLgwZ+53YjE1HYEJ4I84CtWFM9hlr85yGOpOB1pOm8tq55saWRu+8g3lMo3FriCGIZkOUjRjVPEysbS4PgGYFOHmdqVZFH9Unpmn6/Zff9La/j2N8ynEEpE8j7v/xO96GpO+yRhSfPWQNp54y49jkunjR1QxDoVXgQmdFwWrYUmLh64aSQIBYYh7RVjknICaYjum5A9UcgYUxX6hNGPXGVzZvuyLzB1hQxWBD8GPa+bCcVxeKRsdIoyWgNIs2TAVYMSlJE0rUNai6TFOS9eQUJLAEABl76uIA1ro0djBJdU1rnqqWYumrPDnwFCBPzkJKwZrnMgNYFiDnLRis1cBxnndYln37eSYcZABgEovmSVxW7gHM8youU/t/pHkSsMeyTJznSbWUedw+gG7z3MHx0yCVLkwcz1/kvAHVqWov7AKg4p5MHNkUkIjc61EFE9PcwJ6cV5QmlkhEU/RVcg65X4DT6ttYSm/NAN1KyVkKALHONmCRM8xVYQp/PQOzZDJxF0BU9HlOBHL4HZoyz0a0txqTM6YugMDIWIRBFh7zmFydJ4Q/HhE2RDMxNueaGWvMXfI/WaT3MtAUe62uJGB2xezEyj9z8++67V3PfBU5xhhHQPoU4t/+9LtuePSx+jdY9Z+Cgzu3G6ICXrCHBlYUwgWthlHtu+8CV9C1seE2/6hEmi5YUXPgVvtS3nqJIk12qJwbp66Gv5yS9QhJtYzzhExV56O/4/0eUR8ipoLk743aQrK0JAAkB5+xHpRSWqIWRLFEH05a16KURJKrlgVNahB1n4iCCpZx0W2vD+kuTtNSmBgUZwaQal0WAPNsi3oAwQygBrhwpTRpWVbuzvl77wHsAKScl/1SuJuz2k+cAstEzKt2APbL1F6P7SuRd7GfHbDf2/4AA7DD469UnucdlrI2BhbnP6U0L0HhYOzKQGqbJrS+pYyobW3rUwWJltKLehSVJvjjCuUpSIazpXUVTdRgkJRMSYEK5EgLjnJyDe4K9rmx3qYqcUqcrEk65T4yQ22ekzlHJKzVLYkag9r2MYX4gi1dt+1hYmJu85gYknPM5ufIbCk8ytOCob5rKUOzFkqZ50ypbSlDKttsKMFv7izwf77hUvqDn/3b3vboOR+nYzxFHAHpk4z77333rweWH4P0uf5ULJy90VVY0GYVqfQUHYqkQiuUdkfuc6Tc5mAAA40AIbf6aYIJtwJSjVqTORscKufkIx8ijUamIkiCSkI0tiYwaYnRDUAAKdBcEyZAa3dLCG+4aFBdsYJAmVJy1wMvoScWcy+opKYlFrCKUpqCTCij4iyh13bKmpjqfrH6jD0XjK2UxJyrpowyAk78vVax7OAL/7IyAGC/B1Jelx1OAAD7pRDzqg24xE6Wicu6LhdO4okLAK7h2ikwPnft9BounFwATq8BJxhev4CV1/IOJxgBDADOO/60m6ZlWTnPHaTi/FcqH14jAK89GfOTBiYFu1/rihy1s7ImJizZGNTqDCrnVotzcALg/VFexyNn+5smVipPG8l4l5KPzhB0lV6Xj1etws6BwNJx1cZIiIhR75NCHp6iTtXrSyEXN9HCMNl2UOT50bMJEkhVT8MROUQMm94lNOAzFV23GJqjjuSvNcFDG5tOZRpTQmwP8JfA+WtuvvXb/gWO8YzjCEifRFx53x1fsRb9KIELaL09PuTOwKi5bFuKDKg6I1wA0KTgXXTgtSLAngNcFCFrRIW651zMI0p9xMMCe9C2A3DGVYFex6rw0d4xT6nWguT9REBLFybA/eMqpdRALqTaZFqiLtTk2c6GmNIS7gRpslQcrXFlidTRyIJG4UFZbT95uGGUlkhfSc6QaKmyOa9alZdIozWWswNSNVZjIHNiC39dNe1QDFgsDEziNwOc+FnAcmGddW1aCADj47bFOc8dvl6m/dyBK45z/vEnKo9sLM6/ljJrTBM6cq5D3WeedzhdyxypPszAVNToZ1ZVTWm2GhQAFKQpTSGWCPa0srKuyNHoK3KO3i6Rs7GmlFs6ttWpvF402BiFO0SIIMZhhZaio7wh15R5iULFXFHNMqj2YX5MnDwl14FkFD6IM/o8pt57FI4PqpnmyDhMpK3ZtDoYp9WOfUvDMEChCx7i9Wqpy2BJRqWeSJm/5/JX3Pa+J/tcHGMbR0B6hvHhe+/4Q7Xqr7IPADAWZHMTDIyaEi7qLV4TsrtcGitqfUV0EIraEhq42dvQLICajFswFjQYn9LnHImpQDFyuxow1VDSmVihDlNWmcydm00qzs3xwz3B6k0oSaGS29r0JGkJ9wCmtKxrAdO0hFNBBQq9MbSLEQrSNPWprkJpAFQATgZAeQSfVnMBru3tXIPJXPB0GgAE+5iEoprFVLhlNReQd3XBE8C1aeEhmFxY7cvutWnhVMoCXASnhVpnAY8DFy8Cj/ubLwJ4/HHEex4HcN0a5Pci7I19+5nK16aFF3aznur4V8t+vnACnHf+8zTNkS4M1pXLNMfN2AOYOAodAHBiQpqABcVW9DzWotKMHADV2RNZWbKRnIO03mr7T3nK4R5Rm9N4996rQJ5cEBFNt2ENZQA2NQGEaO4PhNWLJqaYzWT9S6zZxnZwTmdcxk340NJ4JtVmEicv8M6syvQZTCauSANbotWdEnJzeSCyd4/NaNZDjUWhPRbg7uEbU1c4spH8htffetsP4RhPG0dAepqQxCvvveO/UcV3wBjFArtvSwMOpoKW3rIUndCduV1WWqKONNr+SCjJtNxDii6UavQUmxYDrISWFvR5RM5mXLRgIKXkgOPAU+HsxupQ9noN4DIgqlhBpehlanOD5LL1UMpVdE+baFZlyiV83JimxRevZT0DQkCatDR1WK1L1D3Y62LYqNjypFV14bISXn9JwawceLBMnPK64BTQnMWUGcwG2LKXC+usksqqk1kGJBgAZvv7yUVv/l33euyJPW+4dAmPXr2KGy5dQjxv17Tjo1ev4vrrdvb7Ezs+iu37xu1P5nl+Jsdf834+9/ynNAPOqgDgxBkVToFTAMnqWDWVGfsh3ZfSbFqaiZXKowKwOkAdiiQSlCOVqlTnUOklIEtJkdJrYgjAhRAWUWuK3qbGmNQFEMZsvM7k03CtH67Jq2O20myTheP16ik3k3EDQIy9aOq85pGHeWPcCpjbwwBK9n8BuaXwbLzFWQfxzSBAblJ4cT0wkIOgGUJmwndfftNt/zXPmwB8jBZHQHqK0Afu2t3/wId+iMTvR7MAAuTiBZNGY+mSbiw+cC5EC2NvUZNW87yBeaRNY0UMyvMeI+uRX5t6LqFEei7Uc7Hf5Ok5rbUwUTZ7qAPTYQ+R7wOT144ChMb6UKU5Z1esZVTJYZoQAoVwRxibU1OA0CTVta55Sqb+mnptKIElUkpJLCE2WLCt/az7dT0DPgDG1FrBaUv/BcNZrmPB48Fo+mK/v/p4AYAACOASbriE9hi4inzhwpKuXmO9dEHxEwDi8WcBeCSfsJZTpavXCABP9t7znivXrs1PdXwA2F26mM87//kJY1njZzXjJNu96LGWaR7rYhN3OdKa01CLmmE1qE16D/43WpFLqBiB3Gp8lfPqrClsjupaMqbsMnJ3iACn0bE8XCFGw9dpMhuiDgph1mqNtvJUno3CSFCVgYKPyxjtiLqFUHcWN0Wc5GBjabUzDbWmxGvuFGiqvQwizFqz/TdHFsJzTxshhB2/QmSrK0ltVPqP3Py6N/whft5bz5FyHgM4AtKTxkfu+b5XFV37MQBfauo1959DpNq0ICx5RlNUqfnQuUghHnfLHpOmhrrOUn5A2Talbt27JXdJMOPIJfzmRsFCsmECMda80Kewyvd9RrotFkvLxWC93sRaE8uk7p6QxIJBJTdNSVUsa63eW2QlimBDpopzhdeQjgsQynlQyuGs+KAIZTdnAadYFfWeDj5jWu3COmsRS0ufXbwIni48XRYHrr7g33DpEp4opbGxzwLwcX88gs2+TgUAHgRw0zmfjwcffBC46Sbc5I9vusne9SAexE3DFk+2/WNpzU91/EfyCfdXH8nnnf/p4zVHKtDiccwXr8vX9mP67zpkPD6k7bZ1qZWneVmmJpiopcwhO68ptfrTNBs4ZJhasKkcgYx1ZYghotfJak3uFAF3iACGdF5X502YINW5jSZxtVz0M2kAJqRk49Rdji3INByTsSqm5CauDBPWOcZeTMnrR+Q0uD1YSk2yMRn2cwa8cVaIXqNcJYKYzeA1AM2AyoDJ0nPq7g1EeOeZM8QsS+1lJPxU1oWvee2b/9TD53wsXvZxBKRz4sr77vjcuurvQbgZnp6Du3Q7MzL/OK8XWUsQQv1GCUv3oWNRlQ/OY9SCjDWRSzS4Uq1B1i2HTMrNhKLae4q6FNzZVpiVEnv3DPNeIhRAUuWakqTVJOObPiJYvWgDRGJBqiLMbFSw5tVawiwtg1JLyx0q5AKIqlDClWBMx41quKnWJaTQpZribb8UTuu64KSr1qLeA/S6DqeZkfY6uXipjGmxuu61PLpf66ULSvkaa7nQ0iTX16mMoBGAMT730COPLbtLr+L+6sPaXXoV33D5Yd33AeCWzwM+dKU/DwBvuPywDp+Lx0+3/Q3TaT7v+PH4wQcfxCtee2kezz9A67qcZ6CDVF33WqY883Sh1kVPTDNfUfM01qu2oooLWMsyj8q+SIuui8vOlz2mlGbFoMCVc9Scakpzb8rNOI81xdylw3TepKQi7KZEjco8Syuz9RnhXEUe55CKx0fKhmnZaAxWzRqaahEycZsYNbPtv6niMsiZ4WZhG2YCJkUXdgJyODxgmJPkrAfdHYKhAJzk5+T9UlHnMufypH/FKX315a+47Zc+qYXpZRBHQDqIB953x28sBf8boVduzFFhMmj3o1vsNXNdiHqRjLmESm4xqu/bjIPzfJ/NbUHj/gAgFdFGcw9SbmuuZUKMdiC0xDyiBkQbCXdPz236iOSjLdAVffTprI0RhVrOxzYkrKaUG3zzgg1FXShPVXXprgiruyBUobQFbmaJPpyS1wWuFpvyvETKKWo/gKXfluv898cBTsF8LuH66/ZK046nv3LVaj1DWuy6i9cvwOFCD1xcTwrwQQBvxAgigAHJLZ8H4JahB+qdAN7RH999yy18y1vu0+Frd9/9Ab7lvs+z598BPJPt77sb+bzjf+jKqxjn+Pj0QD4ETwDYpTV/3K+1be86uhtwCY/i6jblB7RU34XdrGv7hflUGSfGPCO9twNQyzSHWjHUe/O8w1r2udWb7A+Fmurc6k1TnYI1AXBnB1dXult5YpoxUbXWeZznFBZF0csUEu6Qi4/Ch2RftBowmSKvztIgEz8QPYQ3HqhZzoiC2SCAwkZcNLcHSnN1wUJvtO1j071B1lV2XRreJeOcA5T8TzTIyvlIzvjq133Fbf8Ex2hxBKQhHrj3zt9eav27JC7AvgUVV9K1ia5ortxYBS3sTa4FgMwZ21R0rV4UvUWmqBOEgo3tDwDbZhFFl3MvMBnqErWibT+RKe0O5xHZ9NbULH7MKHUyJjQB8vRcCCesRuTOCMM8oaq6WDrPRAqrQoZdXFSQkSYtSzE1G7LJiU85rRtpNrbuBmVdl92JNZBOeV2iV6eARessTguzWLQuipTUycXkDGjH66/b61SpJK/fAMDVOpXD1NlNn/PY8qErxk5GVvK3f+7h5R0YgOGdfvffAbzzncDtt99en8OP2JnQ7ben8fjveAdw99238C333Se8A8B9yOP5B2g9+MvXz4ABLhxyIw041qkAbBjUqAgsVI7UZ5n2cyj6Ojid4Fopc6T1plLmBeb6QCYuCzBxySFMiV6naMK1dJ5ZNNWCbMDEaV0rA5hiVMZYY2riBzjLGYHJ/fJCKcfE6XAeU6jzVBlec25BRPPNE5msrjQFSCHk3EIbb5FSyhLgbClb3bdmgbMQAOZNuHQG1Mele2cxZmwn0oYdESVcyyn9x6+79e3/5/PwUXtRxBGQPB74yTtvXdf6Y7AccPEehiJpSUze2zM6JJxxXWg9RoQWq7OigNhbSwJK1IAAN0QdjFgBFtJcsTmwokTuFbOJXLRAY0QCsJ43j0gripKDlDe0UkMNC0A0s1afW5DEMs4TCqHCqmXZ2Pcgo2ItzarHI4FlAVw5Z18D68wirZp0UlrtQqdl098T39bFYik4YD4py2NP7HjDJVOonSqVw/pOS2shWE/EB7G/eqNueQvK3Xffwvvuu09tkX/LfSKfX8D5dOP2229P4/nH88GuAnAB4IbpNAOdFT6xy3OAdrp6jY1BjWq/dRYuAuveFX27WVcfNcn5pqF3KQzHibSb87LsXUq+Tk1G7hFCiIQpj6m8ST72wsdmjPOc6EzsEJiIEC30+hJgwgcbqa4z85gIH3khzs1R/JAtHfQt0cQJQACGtdrNkJRSyjjX4UHz4ByeWwqvOTaMzbXNXmge3jdDKFNOX/O6r3z7vc/yR+dFGUdAAnD/ve/63arr3yGB0eGaYrF5KCHr9qF6GhR3Dkz2Yds6dI/1oiYR9xSdH7qxomh8NRseFNtFd1qI3ib6bCKCRUI5bx6R1ZqqlFias0LzmLOpqwFM0UMUNaIORFpGkQImaS0oDEl27im5JtOGsSHsAGnSJJY9TjHpQokemnzSm0yn3W6JlNL+6uPl+ut2loLDVGo5VRT8re4DwBdaq/E8xEi73fIWlJHp3H33LXzrW98as2hfkiE5s4qU4DuB+27pKcD91Yd14yuvn0fgvpTWPCr+rruW53qd1d52PuYBFy9i3U/zhbXo2rSwnCpfiLQekTf1JvSUXtSISJOKF+9tQnEZuM+DSpVzQYFqmsd5TqmWQTI+IcHYXgVymLna/jmfSeMdzmMy8JkMlMwXr9dwhtHnxNxk6IMvHolZPtpCzQ8PGVCm1Y67NNycHxxskAHtvKU8RlvARRJZULaWDUww5R1k6UIwTb/v5lvf9r88hx+ZF0W87AHpw/fc+bVi/e8hVkKbsQ7ehApnRsWcF+jgIALcO+h4X9JW0i2i2f0c+tC1mpN9s1tHBZ0ai4n0mhYDlgQkLN7DVACrBR3OI2JKCwYZt89CWtaamtt2koFWFco0ZSzrWjKA1R0SxhlCaXIwkzmmmaihm5OGQAEwOx6EOCGvy6iKG0GI08ycuQ8hwhOlNJn19QcKt0fXB8obLt+oD115Fd/wVQ8vUYu577779A4AfJ7TbC/UkG5PAVBR0/rQb3rVDHwQb7h8o3qaD9sUX1P0meR8ly7mJ6aF162zxl4o63/qwIR5VS3TvHMhRJxHXdM8m1B7A1aWygMsO2xiiYScSXIjGUd48fU+JmLKzQliU1/azmOiNxSAckfxOod7OCvbYxPYWc9RAyRpJmk9S+NYi9EPD/beUYVn/U02Sl3NkmhouLVwZweTpPs4i3jNUoBI/8Xr3/z2H34OPhovmnhZA9KVe+78IxX1rwIozSA1POnCtYDBTtyFwZwXmn8dQtrNcEwIAGMJh4aND90wwZWNAXUPOg5gJNQyKugq0hJjI0bRQoyC6PsxAJmYlsraBuFVoGwY0SBWEOsqVcX01BSmCWvijmU/quXG2hCw7RWadKGEDU6IE6ZSlmj2tHTcngDw2RcuLI8MIBQ1oIceeWyx4r6xoL/9cw8v73AWcASfTy7uuuuuKdKWH/qJh+b91RtdyPFB3DC9rqX4XvH4pTl6puYbdlP8jSyttwgXL2KGclfrWUS9KadplszSqLOmOZMrkyytl4gc86jqus7mGGQu5OE+nsjZxA82g77WOgvmMk5MOSbcVgCc4IP+6hTzmFpTrRuzOogYWyKa08NQW7K0Xij9mqDCJ89aM+1k3/2QYfUzVGkOdwdSk4kyrN4EG/3odSXOGMxZEco/0HuZmH3dmQklYvqGy29++3/3/Hw6XnjxsgWk++/57m8m8L21sRqMRhY1ZAAAIABJREFU9j0dgLrBaAFqkbj4FJ5FMbto2IcDWwmxgqnsUFzFs4Ske3RcaNY/5lPnzapcKgBI0WwbTMv7mrhYnjttjjO6fVNpWbEip7TYADwWwBpmraE1F0ou3fYp386IypqYUl3CxodMXL15NUQK635dAaDXhrYKuWBD+4oSrgXnMSEgRAgGQG/4qoeXVjM5gtCzFnfdddfUxBLvBIw9mXT9F375+nlU8D3i6r0ApxsuXcL+9HSWsyZjvJnR67QSrdaUiYwdkBblUQQRbhChzBsZU2XOGaaiqw5ApdZ5QhWnKa+1T7ZVNNc2xwVkUrnaSJMZpMK9Ibzw6D50Ys0JPkbdhwZyNFmlsSS5Hx7ct25wD7fRGE0ajoyoLUGz14sDeID+eKazMthIDoAYRQ4A2j6/9eY3f8dfeA4/Ci/YeFkC0v333nEbpD8LbGpBQ5rOFXaWwitmxKgFg20QOMwuEtcm6QYWG+uAUNAVWoJ5GetFTN0+qDMlrwXVWqzHyGtFDCshNaeFjd1PSLG9ViSgTHBAogNR9BINfUSr0gIUJJ8JFz1EqdYlGFFhYrgopGwGpiHX3s2rypoXpsxwSpha0+nFxoZ2l15Zorg+9gHd9DmPLfd9ANhdslRcpJmOAPT8hG6/Pb0Tpuz70E8YOO2vPqxy7ep800034UE8iNemV+dwpDhhzY89seMuXc1PTDOvG7z5MpRDBIFTYHdygpXKo2VRInJhYhi9BmOaHFiMLZmwAQBU1xkTkOpWkSdvqjWBgs1j6mPR6wQYC7LnYpw6YGAES+W1eUp1HJVhbAkGjDGdNpk9kKvmzqsrgRrEDtUGAg7ODpxt6F+br9RAyetKo9VQOJR/58233nbH8/qBeAHEyw6Q7r/nu78ZwvcKndVgTNM5+4H50BVrarMakje4FXi9CAhAYZF95Slw8EBCUVWxgWE+goLSufUiRo8TyjCnyNiDulEqGfOSnBW12tJWtBD9RBLL5EA0TdmaX8c+Im9orWtam4lpBtaFJex8Zq265i4KMQ8oakPANeR1t4wmpPuaCtzHLfqDPnHx+sWaP7d9QGM96KUuQnihxyg//9BPPDQDbwRgyr2x5nS23oTMaWauNli2p/O88RZ9HlSMzqhFGTMwNcZkozMqexoPsD4mrFaLCkVeTLQ9M4/JR15ME/JauxIPsJqRRidxUECd5S7iBGe4w0Oo6Nq8paGuBFPokVUZKYWsuzfRmsu3++Aht21gIGsAZU4RrsDLRsAszQeE0IEZZtT6smNKLytAunLPnX+kqv7AYJIKwGpE7qIgGyGuBRj6gxyEnHIXESXJBt81AUKA2uC6AHdUiBRdzCwSuCZzcWhNt/JaE0HW5k9Xy5RobttaF1MLaYlprXHsiWkRUM6bR1SFEuMfEkyUkFywsGpa5txrQodihZTzsiwrk1CsPoSWlmt+cV5HOqmp1Ov2Wqbr1t4f9LEC3ISL60mxPpqH+Iafu3G5+xbrszkyoRdmNHACgLf0PqhQ7UW9CQCi1ymacNec5/hshGN5qzOVadY8qa7aNcZUEsOeyOTivcG20hqcRkuiVI1bHc5jkozxtBoQAFK5GbQ6WxKQk49Qp/ctBWClJAnTLNXc+po2jbqumiPnJEyyHc9IQxMttmPSXeJNOOCggZIZs2J0Cz8Y9kcgE+mPv5xqSi8bQPrwPXd+rVD/JgajUzSw4QJb4b0viO6+0Fy8wyTVJNmUhBQ2P02Y0FJvYPFUHKIhttYu6banm7zbxkBISxcuRIrO5yHBGJRJXVFI7G3yawBJWigt580jWta15AlYVZdIzcXsofCYOx0cFYAuVgg/uVUsOL2GctLdsxexPDEt/FUnJwtgtaHRAw4AHh3Z0M89vOAdwIutD+jlHiEvH10lHv/YAzkakJ/Y5Rm/8kirNe3SxTz2NQFu/Hp6DdOFk7xfCqfdOnGZLJUHIJzHI3VW61hjsgbbimisnfJ585gE5CTOiQ5SPrW2ycWbRJwzkyYTC7kwAdUUd8NYC4K52vS/zGQjLeL9FGzK7OjAYNZBDAVeA0d1dwb0MRZTNNBWwc9BIjhbuq8LHSBMZPoDLxf13csCkO6/912/G1jvglDhNaMKlOTMyGnzAmANcIJQgkkZsDBScIPggQuwNUe192iB2OtFCJHBVtJto8KtPtX7n1y4kLjYmPBqwOSWPyFcoNIib2rlIFo4nEcUxqfBipKmpU6dEW16iGYW7N3SB32e0HwhlWv7hVPZLTEPKByzdwXlPIHCfR8AbnkLyjvfaW0yRzb04o677rprCpFJSMkfn16XIxV7ydN5J1jzo1ctlRfzoML4NUN5nOcULhChypsCoIoyUJBmAyKsK5XSPMkcxw/nMREw0QPTPMn88dDcG3r/0mjWGkIGTsnABnWmYqzFtmeJgrlHAJltKq2igXZuM5a8+bZLv7uzA7xJ1l+bq/cuobEmzK7QnaNPyW99FpDI6a0vhz6llzwgPfCTd95aSv1f3XOqSbvDsdvBaaWxpt4jdOC+4F5yxXsPnBnJFHZDsyuFRbRxEW0/Pi6igZEJFpbarYNWuTM3hxERm4F54bag1IxN6c+XVWuvFZkhaggaWNMSMm4bBV6XnI0Vjc2se3gP0Skw7ayR9VC2HQ7aUR+qly7oav1YGQUKgAERcGRDL9UIcLrvblvUd5dexcen0ww8iEvp1TlcIW64dAmnqM1Pb92bOi/mOa28lgEgu3deDBWsKc3h/LBlS1aPinlMAUpimqeJIpDXFeZvB+TKSgI5ptVaH9IKtvSeN9MOKbwYS2GpNlk6LdwdEIo+r1FRk6xnie70kF3q3YEMAMnJh/cFKDWmBMBqSPKak60vjSkBkToEck7/yUvd0eElDUgP3Hvnb6+qP16tyW0rYPAJrz0lZ2m6BC7GnrCcbXgNsBp6kWotIBdZC/ciyOYZ+ewimaS7DdCrlTSHcBMwxP6tiKoulogUndQUeaCWUbQAmAlqFUtLz8GaWwGrFSVpKaxM1RR1a57LOIV1rXXZwdJzMWcor7sF2M4TCieFcNEORvTo+kAB3oh/dvVXl7C2OQLRyyMaa0Ko9Ky3aXSFmG/YTWna8fTxq80JIkxeY4bTWqY5nyBjDyR2qfiTKfIq0STicjuhCYCo3Btqkd0aKydy7lNkbYS6wLlKnBKnsB6ySbE+2ZaRwtMgIQfo7g6WvrN5SDgUO/g0WpoM3JkS8nmgJG/kTVRu6T3hQH3XWFdJTL/rpex995IFpAfed8dvLIveR+LEmA3h84xC0ODSblfN2aCUAnBPWt8QgKWNGXe3bronXZsIO5qjgl28gGG0uPcXIdGcFUxFZ+MohIKkVlOyFN1kbCxJWp2ZJfg8I/Ofaw2uWssEm01kooUu406TlqgLxRyikwt5WZY9Uq7Lsky8kPNi9j4owAXktS7XmsHprH19vACXsLtkdj4BRNG8ilssLfd8m5Ie44UVuv32hHf0WlP46j3mwHTyqy7lR69exTrPc8jFAVPlXTsFrm/1JbMlOpSKn8A+1LWmOUas18o5w+yFYnKtaskxTj3sh2Jarcm4OSNJrFvBA6sxI6lmAHOCjUwnbM4SU8pUzTbAGV0GTs2J7EyJmGBAyWTihtZAa3JxG5EuIEZVZLkpq7s6tPSdAajcFYJe59JpzvyKl6pL+EsSkK68747PXQv+IaFXdgcGOdOxOUUa03Q20CjECyZgoAkKbFqrD9RzWfc4NgJWSzLvuuSD9IC9wBUw92+Ci2qNOlKpBnTej6Slmr3C0ly73XGBxF7QmpRUsJbe4KqFyXuHXMq9allGIDp0WDh03o6m1pBwb4FoUcwYWqb9Woul5kbF3Adwy/piNCs9xnMb0Xz7od/0qjmUeUC3KSrX8nz9dXuVop1OZgVbMs+8Q0XeqrrOTZEX85iaGg9Wa1JKM5WmccyFmOZxWm11AEnkHNZDArINqsSuTZ41h+9MyJRxws6/MGZjSswVAmmybWNT3Y1BhCnwyFk+br3XlNCn0PqUWSlSgGpCh9Y8a1Ly3ZntEz6eJn7xS3Ge0ksOkD5yz/e9qvDaz0C4eZxnRPjEV45pOiwwNFrcpcEYDW0ons0SUndwkBYbe1ydGdmkWEElkUutxoYmcgn1HWnzkBKA1UaLl3Dopo8OJ8OqyKa4tqZZoIzjIVJKSx8NYQ2uYfETPUUJKAE+h/OIru2Xkppy7rTgFE05txfLdeuifUW5AZfwxAVzVPjExavLTbgJj64n5Q2XH9bdHzgC0TGePg7VedHP9Ap3IA9gWiYbNNjrSzZEMKbbTrtpimm2h/OYEpGjtpRmmKGrp+XgoDShqpJz9C3JASkED6N7eLMT8rEVClBiF0gInKHqzgx91pE5O1R3XGDUonKAEqMPSe53x24jZD+HmtLQPEvrb5w93dcVe8T9WRe+5KU2eTY9/VtePKH/n733jbE0O877nqpz3nu7e3q54nKZoShqKTNDwJpFAlhxLCcQExmxLDHWN2tXEWIjiCIhBgQTlgVDouOAQ8jQLhkmFghFThDADmARATiGPwWwSEpewHIiaROYQYCdfCApcpYSlYm5Y+5Mz0zfe+rUkw9V5723Z1cmtTt/drlvAftnuu+93f3e6VNvVT31e1749Mp4+o9BvA+IpVUMMzwyl15naneo2rJ6kJgZheXE3tLsSEYcySiql5R4C0A0MDA/Imwl8EAzeYExj4KTTas2ghS6MSXgwt4INyobOTvKGoRN5C4GHQBRbEVL03hdMxicZlrYuu2SkZBN3ZsTVigWsm8YvLNzY4Yjs7VYMWvFVq201qb1qtWDg7axEzvxYodH59q//Z7jdrOv7cLz1xsuwp5++um+JKMlvlmIXHKRS37xCuzzJ79lL718qx31td346h+0Ey+2Oi62odrUrW1PbluxVWu8YwYxw8Y6N3njtJ3//hbCunuTQaInrJNNC5s3s+xsm6KbaGmhMC2Im7xsd5MNwhbK1eiCjO4EexBS+Iq2upsPZJf3vGmV4F+ScSOaytpstdkAKg9iC5FnRjCMcoY8r4DE3iPDcRqQ3GEM406O82c3bgCI9xlP/zFf+PTq4bzD9ye+bSokkvLlzz77D8X5EwNcOt7Iu/yMLN9wIvyM5uVUCFpURnvEbngD1aDYq4xgGEw64Rn0T4gXhO7s+Rdwm/3hbPEpCLedk6snP69AhG3w5xTFHD1sxAtMmPw5iKEAndqGlNshUT1hzJlCst2kiJa2HX5EQ7QwFltNrQ/31dVxMXzjZRwenWvXcA1H/QkDMINNlyS0xOuJIYAYiKLhhLs/YwKAzW2vOxzRup5uTuf5kgtqkbBXv7taitlStPDicToBBQKfDQF99lwqdd86XcSDGwFUARMzxElUYz+IIdseXDw6ZzjrvgJvVEHR3oPswKxylvyQarr8/Ny+w45rVwOdtyd0eKWfUgUwkfK//Ikf+YW/Eh3IN3982ySkr3zml34RxIcZi6/2rfgZYb7joABBzSalA7uF1qQvzPBSjGSUVdI879nfMYo7nTa8iwB0J1tw6qTv3Fwl7tAQQNWhoutCqYLtmBe5VkPuFu2ECzCHWKXSC2xAUEtdWbMuWmQ7uHPDj+huzM+gKxxR7ateDHuJaFlkXeJ+xKc//VQJW4zAE+0nprV41bKSgLg2DurDvu3FTHswm6YJ6JZtNxvKvDAGHEo832vhqaC6SFqnRxJy9DrTw/OxO0BrqOBC4BDJangsxaxpz/RvxhTJtGvfCYBQ5O3oETLF3OjsnlImGSAEDRO+BT8lEpMKCgTPfM8P/63/+iG8nfc8vi0S0lc+88xP0vk/7bXaZuk092gLZ/2MXm3p9V8/M8qqC9hLVrEylC2/AUeF2+zQqmJ3ixdE2eBhFzEWXYdnEYAzHDqhWOs9cEDiXVK+7ZiMdJYCGwo6Lbu9ojOUhUxGpta5nrg9uW3DgwgI4CmAeU6Ei7AlES1xP+PTn/50eRJXyr4d+53bt6Zhvf7I8TE2t32mPszwVmuz3cXwYCqqU2tAmVjPei8F5aG5T0XD2iII4kKXna3FPFdKRBBlzxJ9L+kEB4+VEIJYzW60kEnolYIpiSxVZlo4gFygpcjg4g3+3WDtTaMSulsSfref0lDegWP2FK8FkZ/+nh/+8N9/YG/gfYo3fUK6+hvP/Hk3/K9R5WQyEpCkCYOU/c38jPbVdLk828DcE1IY6KGwA4ChpkuLh9GmCwwQyf0l2SR1E/uU7r39omx6O7MyShadDnk3u2mpRg6xghlKOSNcUIh194Zsz0krWRXtuHPsE+uh2PAjOqLacGIFkA6sj8nSnlviQQZ5SS9ffkGexJNldfyYDCTRTpF3Og0/pl7rtG+vXmRd3SwXbAPaquglqqWkPKTnkovV4jpRlSqchQzuPunwWAroagEokZSyjUefRKXAKdmem1tso303dpVSrBBW65QpJd4TBmponxSO4N9xr303EhW+iZ/SWJwVYNheVAJSqvzF9/75D//Gg38n7128qRPSVz73se/13n9bAj09J5mxOxR4nz3a9qv4GYFor/BDGrtFd6npxp6RKBLjIz1nRrt5EHXeaxqVETASV1pGoOxeJxYb2rzoSjFPDh3RrXOH/hn2EM5o0WkN2kKgHsQO7qJxGzY27CDWR8cG7PyIbhydtDPtOSx4nyUeTgyY62jjPVI29c7tWxOw82NaHR9V2TSpXosVnbA5RS9lpjeUPfyQ71MeqHTpk0qtPQgnZWcCuD9XQhWUoDtklTTLwjHacIDAK5LsoMB01k+JE4Gz86W7zP7uloTvzYPSjwkDa7RXGeW8KCsoQCYyFH57rb5K4FRL+fe+54d+/v+5/+/a/Yk3bUL6l//8Y4+cnPjvAnwfk4SAHYVhJ1SIBDOqln+tn9E8E4oHzQKGaOul4OHuZMRsxak0oZtDG+AxRxoYIMAoO9QPe7zO2C/aiSLEhN5KiUVXh1lFTWI3GwzwksqgpHJr9SatyL41RO2rhkOg3b5jODrCGmr77bkhWrjw3uv86GXYstS6xBshPv3pp8qTeLIAwCCLDz+m7cnLdaWoZ0kPrH2LCi1hCoiolmb7it4nnWq1rqJoOVeq8CR+9725ErATOwAAks4wkEME6x9FDFeRqadDbcjFh8U5uZspscZuPqYxqwqiQ1Q835qfEsa8idG+8xRRxPNzFv6l42P9/nf+wM/ffBjv4euN+s0f8saMm7f8HwhC3q0zly7k3ACECIdW5ywciGIkhQn0kFiKSGKEvCG4dIC75ZKqETuBA+bZlMRrECYKFASt26ExD+pqY44EkT0lXQgeVLS5u1Bi2ZWdHXA6aVrEWicmFQOrOfaICyVbdKRNdIBixArGbu10Y8M2nMMS4ujYbp4AfmAtEhHgfW1H2IQXERbCwhJvnHj66cudfDJRRGs5whPYYoMbW8PbDNhW4BEoNnSU1Qq23aKugk9qckq3Mq0o1kFM0wouJk5C3eEqUAZdWQUguigETkLDDoIuHZptOiB+txmQ1cZ02XRASoiTIplBLFl2ENXqAWAOTLJITaVv7t6zznNod8k9JQtBLxnfBScAxhhijR0lxhkHagyZaoodjOE8Gzkqvtd/8+aJ/wMAP/ZQ3sTXGW/KCunLv/7Mz4P8pbFjFHOguxV1s2bf8s5hIIFe4Wc024Gnn9EgMAA4q6YLAUObn5PGeVHx5MJrzqz2mXTDv2gsutK1F3UKtbGMxdZMnCLSyaZ3z4vM0DmZlpgXRXXU2wprxF7RTsrNXHCtBwe7qujaNRw9vrHhR7QY4i3xRo7Zk+kp1Gu/f266du0ajr/z8QoAh7VOg423r8TrclrRyrxMC4Ty7sxcCajoIi6ompRwBevZJdoURgAVlEmC5E2mqGFm4CHEC+HH6aGeQ6CJ5pkSGFQID2wQAiU0KOR1+CnF+RMzpFfxUwr4apzWdU8EEV8PjsQgpTBCCh3/1Z/4jz/8sQf8tr3ueNMlpKuf/dh/5N7/CSCeAoSZiJ1YoHR3pSX88GxyEqSE+4/wMzrT7pPdnhFJgcbrZpuuqLRYpKPFwqua6H4yEqOyzYo7wERiz0iGkg6AqDa/i7ow8D+q3vaJC4H+6SxcWx++RdjYQZ/YDsWGgm7zjRPDdzyKw621m4n7WSjcS7yZYn93aWCI7lbibTebyYR1R3kI/FAVVKyA3liHIy1FJvcw+ysik06ove/I4VrLPHuKZKVSVQolgasljPzEew3uXQgXQqzAeabE4Vib/LsUNMztOyELo+CaRJNf9yp+SqJSgx6EiWRVkeTvpTttJJ9MWvF87OZNWrT8yHv/ws//5sN5915bvKkS0tc+9+wTm+7/B4nveDV6NwFTQSMJYJZpj/8KgDak4DPaZzwfUeV4igxCkLCrjChj6TVxP8M+vGpzz92juwz1qFH1xOPjcz2/pqo2t277CKBhF3H3vAgAHKV39zYlh25/yXXeKzpSu9sW4qWXb7WLV2BLVbTEmzV46ZJevnhR/tTxb9XbZT3vLQGAndZppScVOEKv22kmiM87S51uOhXViSxkt8l1WFqE2MEA0H2aSkl0EOOQF586gIpS56Q0dpX2vJUI1CI6A1IDyooav/dShJwoCNNAzOy6Wbgwz5R2xoDI5doJWclxRgzNnLto2+WsK9qD8XzO7TvcOKj6p9/9Q7/w4kN4215TvGnQQfzCJ9en3f8RgEdFMpNG8mnRpkMTpIUdNGY8UXH0VKG0kGAHnkeRSWO06UQaCSqwBdSGG2tCTtuQdgMalU5YRrRE1ZtoIEjgnr3dJHlDBJKfQ0lZt5hkdTOSkcWX2vZEGXnuF5W6MieseKB/CrdW6tQMYrWv2vAq2vptu2PWhjXEUd/Yzb62F/BCB4AlGS3xZg25dMmfeuoKP3/yARsoq7GyUA+sDQVpMWu1ezOIFcKMsL4tXWtt3b05vEthW6k2J0xZmmtgiEaXAnCKirHAHLCCAqIbPfcFB0os10BilUONdCOEDm+yhwyjs8/k/91pa0hXaQBwosPdYi/RW3LzchdynGMEdmeaYf76ICXQaOP5o8oQwaOn3f8Rv/DJ9YN5p15/vGlEDVe/dOtXFPg+T5vxsIRAD4EBMZR20YpjI2kS+m7OijqGfDvvQAyiJvS0fAjaggt78OkA7vyMLMQPkWxidqUmoIAeiUrSTE+LDaqDYLdjFBggUouaWzdAoaWakOZpZa6AYY+6oKQ138aia1ZEnbDavVmBmFrfNhhOFCuDHeYv6fn33Grn8Q7g4nV7v1x24PJDeteWWOLexGgzk5d44YXr9YvHj9kj2AAA7nzjRNbfcYybJwCOBQd3pgqgoW7RBbVv0V1ECnotgPU4Laa46QOcEEWKHTrFYRWhjBUB2QWiQjhBVZnc2aSA4pK+RWykhpIqHGibkKQKFF7dxZAbr6JRgamihTFAzIogCnE3iGaXjhNEmPNo5FkW3kj0piIkMnXFYmzcKENAYSy7BMnh+65+6davAPjpB/uOvbZ4U1RIX/71X/rPAf4kIaY544k2W7oWRXXUsEPxQEQwqA10GMk++HQq0hjVzE64wLSXoDRVIFpss7oOKfc0CeiiORwYiYevRAEN+oIC5ugGFAwmHRCV0aiGUMhZSWeGXsUcpY/9Iq21FR7EXR/EGqNNFxy6uEs8PDrXgFhyxUXY5RcuLhDUJb7tQuSS4ynYp56/3s6/51YDgBs3T9ods/bI8TGmbq0diplaH5VSqT27C2KYVnDutcIT0ApY/L96c4iVUiHqO9ERylDd5u9vnCGEGNyT6h9VTh6qPaqm0WnRHA9E5eMec+sw9ESbqTBkrKTszbfjZnhW+Voo9gAgnx9YtAYInI48Y2zcuBP8yThD3/jxhp8hffXXn7nQyH8hghVGuSogiASjJjOOO5M9EmOmFFSGaKu1udxOPh3ggfXJ51CGSV/4GYnIFtEXDj8jkRZzplDz0X1W6IlgGzOjgQyCOXfgVc3ko0WMfCUGSN1br2ITgO7ehnihb0svtbfTDXBcV224uK6Pjud50TkvNmgLnz95ly3tuSXeCkFeUlxB/eLVx+R2ebGOnaWp3yk3jKvDJDxUsJ5ugOlgj4XXuXJhrXQWkcn7bh/JxWoRncjADVFYpcdOEsMGveqwnUhL84EByqXX3FMiFTqNmdJYrh1Eh3kpNgTfFZBYunUPmgO9CnRiMPQqoKAwFHfYe76IgB5+TSJ1LM0C5Hg+wE2F/jvf/SMf/uJDe8O+hXhDV0h87rnaBf9QRFZzpQKMO4A2FHRxtyCROCCz2k4E0FC3hGhBZFhHBIWBUW157C8JKM0ZPWEBItEMrySB0Sl0ihC7ZASAoo3Qzr6npstkVFSpqk20mmhpQIECJq4NhQxStzetoaQbyWgLoG9LLz1txddRGa2htnXYgVm7cXTSznmxm31tq+PH5MLz19uSjJZ4q4TIJcfFOBeO+hP2VS92Y2ut3dz20lpbHx1bMWsGsYP1AcZcqbUuxb2pexNR2UBiZluiUlJWE2oTcfHgVZqBvbuLo0el5LsbT+rwM4vOR6pym0Ak1Lcwgeb5M2bQUWFFJeSIuTfjeQpLG3QjssqhdCfH9NwAmJMGsJNxxx0szBB4CaSFao/5eDkw8Nf43HNv6DHNGzohXd3+9kfo/DOIriiQ1Q3JXSkcF3wkp6Y79R1i+XV4DOWuUSA7muhc1lJEyOE/JGgeXLzZz0hyYKlVGwRbUZkrH0H6qZBN04rcKSZpB8EebTonm7hLZ2tOM8/FW01/l9aifTDAqFp7K7W3WldtKOm2ruZ9y3pw0LZeZhXdheevtwsfvN4W9M8Sb7UQueTj7399+VY7D+Dw6FyrBwft5skJtg7bUmyIHVRle1B7s+ET5t4qnb0FhktLaQ4xp5kwfocV3YTeVLWBSgfMVXattz6SUips43xpoLQhfvDR3k8/JU9LmlTxNggpcczFmTXwZUglsASiTOjzx1Vtus3tAAAgAElEQVSlAbKdzUczchk3kpKgSRrBAfh3r25/+yMP4G15zfGGTUgv/sbHPwDiw7n8Oru+qihygMewd8CgIBiQZuOpiMuPN0fyFrI950Rn2kGO52fS6gCgItv5+Wm+B6Czu0URQ4mBY6rpdMyMwlpiZx0RxmCtdxMREdWmrGeYdFJKM1HRKlZyXoSpc8yLAKDYKpVEJzii2sD/3Oxru3gFtthELPFWDrl0yS9fvigXn4Ld7C/aNVzDOS+2On7Uzh2uWFprptYBoGvvnQeGqdMI64w50zQBGyndidj5g5gT5jCzDmip5tZNc6ZUBVsRbUU0Zs6EEdpjpgS4U6iD4K9RLdGNqmOO1LKuMUmzQEqcP0JwqOlINxGhJhyaiOcjzjhBlEx51oW6WJLxQFDozJ3M6BrR8eEXf+PjH3g479Q3jzfkDOn655599GXz/4vAu0X2CN5OO0tiCKM9yfI1SuIxJwqTvXxsH4w7hkqP4/l3wVJtSLqJvSFj+hmJSkNajs+VVw4xXWZlnQEFSmuuNekLLp3aVNm8a690eoF1xF0ZMMQLvaEVKXVqtfvsXbT2Y7tzsGPRxbzoJbnwwXe0JREtscQuyEu6v0g7DAC3FXWlqDuyw3bqVsLKwsrU9+CsClaXHa1BXSZPRbKKTHSb500EqiaVAcAeMDWsK9IDbRp+ShrLuRh+Sq8ghM8WF3twVZGcG7GCWGEw8RQVOwO/saMkCLvzglyoFZEp5+5p9Mc/eFspf+qxH/qFlx/om/MtxBuyQnq5+69C8G6R7J0BEEYyCuVJ8KJyYzkXYhOESmnuQHjX0wD02XI8doqS/i0zSBUIqsKYM1HZVBXsHs+ntBLlsYiEn9GgNwAhD9ddpQZVxswok5FQm9LMu/ah5tG9ZFSmIHVHMurNsLEban1URvvJ6GZf28Ungc+ffGDxLFpiibtC5JJf+OD1tjp+TM6/51Y758X8+ID14CBmSqudVXrrva0AjPYdEIKiTZPZ3sW796iUYOHD2WNNg2KFumvRp7IWJMdMSUSaOyW4lnGWkB62Nc4+5k0kDJTQMZBtj50Zo3F3Qz5/7C5FVTZTaEZlZHkmMi12mojmPAkY6jxC3v2y+68+2HfmW4s3XEK6+tln/7IAP47oec425AwL8KQICpzcb9U1BlAVyYBqo+cKkUbPc5ts8w6TkEPezXR7DaoCBZ77Q6oNIg1KujM9jObvhUF3CDUdUFCoJMXcen4szPZc2bSUVotzJdj2mh5GSDM9723bTFrv87zosDdu/bZtcGLASEYv2qeev95wEYuSbokl/ogYcyVchN3sazs8PW16cip3zNrUg2pSbNXqWmy/fafV2zSF0aWMlQxUBFsyzgdSs523k4RDnSKxWCsKQx+S7qDHQIUI87TmY8FeSYfI7Kcm2W1RICzUdwg0iHB0a5giKxLNKTkems/Kkcha6sLzk0zWZ0rMIYDjP7n62Wf/8gN/c75JvKES0td+8xPvdfdfiXaY7CTeABB+Ijaqm+F5FJ8BAASte1RMCdClO1Rkv8UmAk3BQ1RU892I6hggRmWkgLtjVE6xf0SBixADFRTeRY5uLLCq2jTujkTjeVsFzLqLM9p061LnyijuzmJXoq7FKiUsI46ObWWwG9uTdpKV0edPPmAfwTIvWmKJbxZD4HPh+evtO98HOzw61855sQ3V1kdqwG1Uihk28+9f4dp8iBBQ+mipTzV+v0elVAsgWppQTFXz/OgYe0qjGwMARbAd5AZorL9L7jueUQ4DTTKBxQghnn+mCsrn75Mc6HN1RMRN+Zl5EsJsNME2QIgcaBA0d/+Vr/3mJ977oN6TbyXeUAlpY9v/AcBBkBeIyCgyz42GBDvK0ll5l3cX4y8CGKkIs6wSknOjqFjnuZFwCB6AvedvATRCOMsynTGshFNU2+75bB0djmDTCcV6N1CVnWyuiQXqKvF5tkJYa0FfUO9NVbZhpidWVqvG3jh1a3dS1n0e53HU13bhg9fbU1eucFHSLbHEtxYilxwfAS6/cLHvix3uWOCG2CcOWTgQc1zz3rR6AzvHbqASVotSs1Lq9JgLd0O6TZvn7FjI5pJIMqY7NMRi7szECpEYc+09Z4DAaMa5RWFDzsFFICDbWJolpCkk7tEFbaiBEWdbtuUcGKBpSQA0IznNd/jAwdba33sY780fFW8YUcPVz/7SX/GO/zl3fvZ7ow3Zkhs0hj2Cd3xeBEKfqyDIXD2lnl9mmwqQHZSGUMZkqy5EDGT2gaHzmxwqmT0KQ1ZFTs95UvgZecoxtUh+fs/htcF6urvO1hF5V4b4xlLWDQOOUdO/CABu9rVdeH6RdC+xxOuJsUR77ffPTQBw5/ataVtDOLCepimcaIMWPuzRu+o0sbOnhYUKZrM/lVrpPjlYS6kYQgdFqemnBNGwPKf7JNB5cVbcayCGfBJILN8iF1vTqA8a0FUn00FWKsgJqkC60Ia9BSoFk3AWQUwYH8cO4spIdhWCdMJFZb6mFv3P3vsXfuHXHvib8irxhqiQvvbcJx7vjv8WgqYytPNsJInAMuWCKudklC3SEBX4Tg5JwNyDTyfhjJUChOEIKxzJCGHO16ihqBMVEmKdHrBUGeTuHRLIyeaSyYjaCJjTG0qFaGljZgQYKiMZDatxANAi25GMTjcjGa3a2o/t3OGKq+NiJ/51uwbMO0ZLMlpiidcXY4n2pZcTN5S7SgCwaa21w4AVAwfopxvT2psW2TYApa5szJRqcQIVTpsxQ70bXKsp2RzdRNhUlM5wBBAUm3eU0vomBVONoDgchEYVJWIUtJCOA7G8r3GTLtKEgbCbq6u4oZ6rLABgGAmOs3Ioj2MAn7PvmFHRINJ69//ua8994vEH/668Mt4QCel0235ZgLchtYlx6TTM9mTm1KUiLtaHVPNCyzDLYwtVvjCwQDAXdGBH5gXOihjc2eEUzYGjqOSGtZo7xUmJwWTfZ1jF9jZgBnZ0StmzkBD3hi6ipTQtseegZSdg6Nve2x59oVJsfaTmh1seUe1wa+2oP2FHfW0v4GJfktESS9ybELnkF5+KpHSUxPDV8aN2hoGHjWF9gE5Y3/YenmNbjPnvjn1XoaymJXBggassUNXmgBGxexhfN9p68zmkZHRf1OJmNzo57iICzlQZUdg4ocesyImOGX0mosnnHK07AElqyK8c+5cGMMYaopY3+qmIoAB49PR0+8sP/A15lXjoCekrn3n2g+L8ieyVRh80qqGkLwy1SKCBANkC6OSexHtH+44BH5l3E6AQhJAQ9oCs7iSVqkJq2I/HkmsMDlUTNySaFIZcfhNtLgOeqq1A6HvmekOVo4XNm9kGYrU6WwsBg9baWu/tYH2Aulq1Yqu2aet28+QEG6ptU7xw4b3XuWCAllji3sdISsAXcP49t9rhNua1t+5sZQ2dqQ6nG6DU3rT3droVgxSpLBSylT3MkLi2Tm2OsJTpnaLUJoyzA8I2EENDpSuEqQrhjli815Z+a+aemy6CJkScP8KGObnlDqW7perOPJ+gihR+DZgAm1Aa4QM2zX20UJqPtlyv+YmvfObZDz6kt2WOhzpD+v+e+++Pb29e/r8JfBeitGwh7dbw95CcJ3E22QuJZGC7480a6rmQd+dy7I7KwP3lV+TcaIBREYkLQA8Rg5uo5OBR5r2i2cBPtM3kbroJvYmW2c9Ila0brBRYb2IhIa2tM/l0zXLP6MjKqqcEFWg3t/3G0blWs51w8SksO0ZLLHEfg7ykVy7H3GUs0K7FKwC0Uqe+DbO/bm23PKs6KXoRUXGwakf1GouzBkCBqsJqjpXkoq2iVEeP5dm0Qh8wVhHU7pxihiQUMN1nZRIJ63IR1H23WcAT5io1lmk5xZ9jbiRgGAjyrKkfwUlFalif5/Jufo/ChMMSf3ju4NF/69/4cz9z8pDelodbId1qN/4OifcyM0yUkZGM5lZdKE2GMoR5kVtUO9KZiQop5wYjGSFsxXfafpLzvhGCupCLtiIqFIGVORm5KZyq5C4ZhaIOAJTWRLVpqTZsxzU8jayky2utHiodeuvb3rfYYLdndLNtT26blpVsqHZ4dK4d9bWtjl+SJRktscT9D5FL/gIu9tXxSzIM/zZUu3VnJduT2wll3VjrQU+xnCkVwkhnH0DW7IyIuChg7OxCb5p7iB0dimJDeacFADxm1c5eknkXLkaU2ewzZt+NMeuWnV3FcLGOqknyCB837IQGuHUnKWfwhYTD223YViAQaqkYhwB44la78Xce+JuxFw+tQvrqZ37p+83xv4WxHcfuULbqwnJcsvScq6Ph7+EwDcWCjQSDaLdZon4su6ONHrr+eQEty2W6W/y/jtI1WnbuYbKXrT8RbUS3LipCb+EEG5UREKZ6Q9698zOaYpPbvWntDViHpBQb21LssE+c1tY2yaV76eVb7eKTAC4uyWiJJR5kjErp4pPAtd+PSslOT6f1NE3sEydhHZih1VTpZlMXVk3lHQD0jlok7NAdqN1dplIqhdXdJwVqFxV11qG8E2eq4ID884R4vQKRSZwTVKICglQOVR1DOSeJD8LAD6lWyf8nMcUe7VDbYQJCySciAzcEEGFXEdYXAyukReQHvvuH/9bvPoz346FUSCTViL9HoAcGaPQ3gchDGOZ6DQgLYES1FN+0kKT0gKJKS++isA/PUosQG8lIiKYi2/nru8dAUcVIt/E1AUDS8VUk9glcXACgOrYaw8TEcMQdkScSyFtWSjW8jYp7s9rbthXp3Fjt3opZO1xHMmo3t/2cFzv/nvAxwuUlGS2xxIOOUSldeSFWLM55sXpw0FbrdQNuw9R6Xa1a671tsUEQHWobi7MwYF3SDp0wiveiGiUH2XTsKNFJIekw9j0Qa34XMQqP8QFmbmZ42USnJ0YUMvaTxrJriLiM7nlzHtbo7lH37G7suRVImwUOObR3OvbOv0aId+JXST6U3FAexhf9yX//4KcJ/Bci6ALxmTnH3BVKZIZABUAHEHQ6pC9RXPSwlABFRHp29WILGWphJ4FE/IgzHthAdApMVBopEBWne9IfcklNXEhxgdCzYnOga1EoxCHSFGKubE70WkAqPKShtOFnJF1Zem9WxXhQDW3CelI7ddpRXQex+1+9ixc+eL3Jn1uS0RJLPIy4fPkyf/Cpd+Id20fk5sGqvJ3qt9lxsD4Q256qTysXcakA6Fq6s0ykA0QpKh3QDi2lsMMdKoo45rWAXaUUBymx4igFhEqBisM58JpQIVwhqgLQQagOi3IpAIpQCgTOJHkLEN6gpIomCA1wyQkIOKQQKPmPAlII+mAOiejgD0l8Hgrgu2586X//2i//2m/8iwf3LkQ88Cx4/XPPPtqJX8TYLIbHBjOEAxMkcUW5t8U8cOsz0DQTPMZGNMg2Fl0BRArz2CEaC64z5cGB2WgPSQEfdysl1HRIf6QhbChwevoa+WjPdRFSY/F1D8iIFbDvZwQAuH0bW1e7Y9ZOcun1qG9i6XWpjJZY4qHG009f7pevwI76iwYAJ0l02DrszqbJQZ+476eEVTyvp5+ZqrcWxhQYiKHWAzfUO6Vo+iil8k4IQwEUTsItluxjhg3E+Zd34fO4Id2pGeeaAiJNFVtEdyitKuLZI4YnEpLakMaB3D2IdHg8bg840OG/eP1zzz76QC7+XjzwhHTD8LcFfBzI7poIFIoUJ8TeEM/MjTjkDgBigSw+t29JLowMJiKJ/NFk0g2jKxcJWyyYaCSWQWkYF2J2fSWbolh3lcI9x9eUdwenPtxeS0kKQxWbptWMH3k1P6NBYDiPWHr9/MkHbNkzWmKJN0ZcunTJL3zwHe2lNPob7btX81OK3/H8/U56/ywHL2QFoAUWzDtv7OzAKFNKGHYSRorF7W7cIIsyIa1jPynWU4Bo3Q3/pDT2k/RECg6nIlt3HkIswILUCmAkIJldCbZjzSZu2il7rTsK8M4bjr/9gC79HA80IX31sx9/v4v/NWDXlhsGUsGqy86ozKo6IFlMQjRJLLtz79KJMDeYZ3n48DfSXEzm8DdiAlLJFojCyAVDGj4z6kQE6BD1Frh5mendADBEDKpxdxQv0tmZSCAezIu4jXdsnZXR+NhLL99qF59aiN1LLPFGizFTGkQHAFgZbNNaK/k7fLo5ne3QtdbWAJDOQXPwrt2VrTBmSVqCDq7ZXenoEIrMgGdlK8HQhLuIqqJ3N2jQGTgWZUXoCDekofwF9yofJhU8Z1IhApPZ0C//ydkSZQ8I3pAMPSDB0kBz+l/76mc//v4HcNnneKAJydw+kSnHsslJPVtiWgzsZqVcg8Dm3VgObXjKGnePC36dUDxbdURKwvOuI8peEVHhTMslG+Hx/IIkvDP+YuXyq2i10QWkhDfKvqIOAMIbJSgMwac73SGBXs3P6MoiYFhiiTdqPP300/0FvND/KD+l4xqIodZ7K9xamaJdb6ICA1S9edfuNAu4cryuaA2HaYSH0pwSXIQqORtno7upamoaGE6zcIOzS1LBw4kASOYdMDpKHDfesGQGzIfrXgdqdtPO5wkECDfuYa8dtAdz+8QDu/B4gAnp6mc+9kMgfnSo6TxEC0YkyXveMM594jl7CwaziYKQhcu8qRwMBoRkAZTRqkvcUP6AjmQSJkl33F2oAigASeGuVReGeroz72OZsUB9r1LqdbJSV6ZFtkYYpk7gALWvWsBSb8+V0hk/o4/c/+u9xBJLvPZ46sqTvNtP6ebJSSCGcoXjYA1sWxHz3soUvMpexWCGWpxaQnkn6k2TeVfgOQLwOFNG+81FFJ4zdEmig+eCfvopqTAslLJjNKzPozOErHsEkjP1ZHUOrFAuHO2MLaJNZ/P5mr5JiHN2XIofvfqZj/3Qg7ruDyQh8bnnqtP/broYxj+BvRhLWQi8EgWADUZdtOp8GOKJzkKQIXeUGTo4W03s/VBzq274IQkMA82BEDwUZQJSow3XndLFBaC8QsSAiqkCnmZdSjHfNmutC6bOmBttrB2KrY+ODTjGEDEsfkZLLPHmiVfzU1oZ7NadrayPNBdnj6zU3lZYY7sN+wqlWK9TVEzdBYVUwmKRXs6IHGK3UVuRsLShzj5wcBdJyUOcXYxOzjjjRhDhyxaw1OTlkckRojjnAdLweRs2FVkQxGdl9lOiSMzG5irK6X+Xzz1X8QDigSSkq5vf+asgvxe5NRw+HiLR/5wXYTPbe8vHEQSc4WQU1ZEHUDV6teEnEnlM0rsq0UB5ZwAmI0rCoMIdcz92b24UdsAiQEGtsW/kjPlQdxcRF4TJYxvJyFE62MmpU9Nkb9hI4PZt3Dw5mW0kjvragC9g8TNaYok3Tww/pS9efUxu9hftxtFJWxnM+5Z3yiTFeqt91TrFDmptKwDDR0nIph5VEMYeKpUayaVZEh06OpwuCiBEDsm7EzZqzLoFFAfge92dUSXlrDzHSmnoJ0jVXXSeBGIQUGeFciAhoiJiWvoM4g2a08cOE7JD9b1XN7/zVx/INb/fX+D//cx/c+427fdAfsfwOYplVo5M3yQM9mbJ4UxkABKDwTEnIhle9PseR6m0mx0XgaiOikoj3RzahoKlO7tILrdq4uHThjxeR0zUW0EF0dPbyMwR7pAVwKaJrYs3p5jV3goPrPYgerdDse3JbVtZ3FUBwPn33GoLhWGJJd6cwUuX9It/5rHpdtnU8wCC5lCn1bHX6Q7raWliG9ZzB6huZerC6qpTQfLsBNW7TC6oRWTybhWlQoVVgGqGlagXUKZSULsHwUHAyuGHJDLRWUVkEpVCMh8Tfkh0VFFUMPyQkvoQHkqxQhNEB8EUPLt8XHgtTQhaw/g4BFKJ+NoM76SXj6S+710//Ddv3c9rfd8rpDuwDwn4+ExiEETvMv4US6fk2SEbQ8gQGZ3QFEDAYQpsqbFtjNlGAoDktrMoQtMf8kmHxnxKSXdGkYz0JenYIYIAK6osANDjbqTTMxlNxlTMdLJpFTudkxEMOMVpadJ4x9ZQqwcH7cbRuXYN13D+Pbfa5Rde6EsyWmKJN2fIpUv+qeevt6M919l6YG3Mkw76xIP1AW6d7pR3o0qCAdZV+uw2y6alhl1F7+juEvOkYpAUX5ENg5upqZwTbFW1QbCVPdUdgHlGHhYV42xkOhWwIdy1AwNKGSs0u90ksIXlOUeVhFzinJc+FXzHHdiH7vu1vp8v/tLvfPJtN75x8nskHrnLBXaLVHeooJHhQ5Qa+bAk92zhnamA0leenmWmGOChsBuSb9kpTHLHqO0r7WbnV4TXSFRhaTNRYG7dhutrFxfxMOFS19ar2LrU1nnapBUxwkqdmmGz5/gaMtHDo3PtZlqPL8loiSXe/EFe0i/+k8em219/sR5/5+P1sNYJADaISsnKdhpuswDQVSc31jIF+857us7CQNdpKiVcZ4WVQBDBgZo2ElU8KNxMRl0pWuEeFY4CdJlEtZI+CVgG9ftMleQOqFYQVcCJxCTCkhy9PXfZXdWUWzX1FZ8XnLzt0eP3vePPfujG/brG97VCuvGvbv2sAN8Ry62pJ4w+5hglNWe6wA4vJIk2XZi3yliKHaZ7wOh5Surmw/eoKQCIwj0cGFMSHuDUbNURYgonxOeebNiSRzISipVSQSpt9jopTVXbcH1tbQtpRbTWFlYSkYyAIzxyfIyVwW4cnWsvvXyrXfjg9fbRj97PK7zEEks8yLjw/PV29PgTdi5JDjdPANy+jVDeifXsnHAqBDu1RKXkjKVZV7aKiqLKcJrVpsONWmPp1R3RpUGckXGTHS6zniMOIKsnOjRl2mMOD4mdzSSCc1jPRgcpITW73SSLMxgGCeHXrMaDEPtoHMfbT75x8tfv5/W9bwnp6m8983Yq//qsfc85kOx8hmZERpaUQP70w6k1H9cZluQ2WnUCzOJFkHRA4s3oswHW3dvHo1VHionojgSh2roHQLV3w1DbKWGDxABLDbkU6RQzhhNs7at20Cfi6Ahbv213zNqNmyezlcTlyxfl0iJiWGKJb4vY73Tc7Gs78a9bPbAWilrgoE+s3VvhgRWKlSnoLSP2dxhD8l0auqEHsxNVsJ1n2bPKTbOLlX05KJguswGJ5g6XRjJzT9zOx/gjwNMid73uHBzAu/RXAoYSDzBA+oweElgHfvbqbz3z9vt0ie9fQuIt/JwQb8Oeso6c3TcGtzsTk7Q5SXEnahhKRFENmXcYw4KC4MzpnOCSeadALpQNeu7g4RE+G/X5+GvlKt1dwlJCQriAIHijlPgWDOhZHWmRrc77RmNuJLY9UVsZ7JwXO3/+PMLx9R2L4+sSS3ybhVy65Beevx5iJZzHOS+2+caJrY/UGsVOSxPgFFtsYBtYp7dSVzEXMsOQgg8yuGgJbzWKdXcpKDNDQdJDKVZWwponzUP3nBE011twFisUZyhEgr+aVVLclAvGftJuDWdOQmrz8Qxi2J2PDwjwNt7Cz92v63tfEtIf/rNPvpPghwCZJd2ITD1UcFkuciwFcWCDVMKDT4Nz18Cojlyi0sKs08cg/0BEqCqU3G9SDSED4fOdgKLMbPMyrMjVm6q2qtj2bqgFUQ6hwrt2VW1SQr4JKSKtCxDsqlh+XbWt37Z6YM2PDwgEFggXsTDqllji2zSGyOH8ewIv5McHvGPWdvtJYoUHtpoqW+vS2haO0jsnU9WQgheSVEYScvrstcZ5YRb7JwgpcMrgb+4v+WtqDwZWKCDhIlHZhMAhvOJ0ViED2ckbf4j/pM3SDh8UN/yyP/83Jz/0h//sk++8H9f2viSkzZ1bfxPAucgxe7Ojefk3crfMC6cIzM/sAjvcXkeZioFjiGcP0z3JZOfsdA8hw/AWAQAVjtkRU1VHhxm6wbMU7vHAgCBqU1bTEvTeSqdIPE6LbK32VurUal8FbPEov0xdy4l/3W72tb2Ai4uiboklvs3j0qVLjouwgRcCgJsnJ5AyyXCbvXW6Mc32PthZa5AYvAXvbizMEhrg1SLs4tIBCMdN8zAKxVZEGuBIOneO1R3hB8dwmIXEfqawpdtBfMNMTDiCAC5ZdcUKTiSfKCDY950X9nirHP9WwVGe8fc87nlC+vJzH38XyZ/BcHoVNkXYhUPQVHY24llSRkjMeSAIZygRQtTO7hxJw2DPRYw7g/AOCapCzpCivB3QwtkZRKNQEg3YoagYezetg0yXZTWAjZTe3dvMqRv2EocA1xOnbm1lsMOttaP+hG1PrvOpK1f2uLBLLLHEt218dCzN7oz9Nq01HMWd6sH6AKX3dlBrK5ScHYmhArU4BxVcyKA4WA9+ZgwKIAzrchTAwy/JiNivBKWN/UqoMMgOCOFwUFiHU/ZYpemD+Rk5KlZfnZSZ0sAckSTJASkJT2+6OL9Vho36z3z5uY+/615f0nuekGTb/waAA+BMJzK2j/KHFoyZ245CG+Rb2liIDdO8fH5OnoJ7mj4hCQgcO0edbgRN7/qpPNQPs2x8oICUYigFvRuoGhMoZdMSqrqxaT2/0NQJALV7a7fF1lDbUM2PD3gNAPAFXL6ytOqWWOKtEmOedOG91+eb0Hpw0NYYrbuNYQ1smwmnwgl7/klD4KBsaUCEUpIOTjFRjSonvZNiN6lgpi0ohl9BcOs0947GHqfsHicYhFCA7kC6yzIhBNmSC7+lEKCJzHMqAEhnWY6kBQhwgI397D2/pvfyxf7lP//YIzdP+osCHA5FR5SPsySxRdKQlj/tvHeUlITMxmyQFDzs7RxRBk0BFpbxsEH+TrO9YOSl0dWMBwIs8EAadhKARXVUZ4ZdmGrFHQrM0OtkSjEtbVu4DjknNlZWYbg3aAw3js61o762z5+8a7GTWGKJt2CM/aRHyqbe0l7X4rWVOsmmSfVarGynbiVJDUlxMFbUHcWB6pMC1XvuLIlMdJ0GwSEXXytFJgGrCCohE4mq8Im5wxQfRw3gEGeCgxC5o8Rpt5eE3HPCJCpJdUB8Lob6ewQHSUlhehQAACAASURBVGrDHr1BcOeRc+WJd/7Az9+8V9fynlZIJ7f8pwR4G3AmvWIH7yMkzPiAPWlhzI7QmMQGQnpmcsw5U+YWKJDJiCl9DDwQWrCe1EYjcDxcNXaObC8ZucKIvpM/FrIO/5I6mbq34t766AHjFAd9IgBM3Vo9OGiHR+dazX2jpVW3xBJv3bjw/PX20ssxT2rlsE/dGtdTngkHKLU3rWHqp+6tp7nfLDGgklRqEROtecPsswnpECCMA9udMs4+YBAckvQg+0o5hAx8FjZrVEnjBj4rI+EeuSFm8xgHLpPZ4Jz/jFzYedvJLf+pe3kd71lC4nPPVZAfwh6SIpa61DBb4w667O5pwKxbSMW9UCgUVcMer270RCW9PjAEjwooNM3gFarhZySDyKCR8BTYCRlQUBALsIPkrYB5idK4u7dpWsXwqRUBTjGEDNuTaNWd82LXrl3DxSeBy5cvytKqW2KJt2YMCOvq+DG5BuBwa63d3PbtyW1rh9FZAZBnSYTWOJ+8xL6jpncSqezY7SYVFIiwFdEQOGgu8iNmR+HtRiGC8D2WZbNrlIajnPeQQDYVaXHyk5lsxAecdU9xl9/p8KVrImrDEn1GvTk/dC9J4PcsIX1l+7s/JsB3z5a6Au4ZQeS/HbJvvjeqHCLBqElsELbRrByljmbD1Hf5uVF1J4EUGBMPFE/Zdc9mXX8KGVy77S/AopDWVWAGS1Xd6bbZQa2t1Km1vmrtUIx94rnDLcdW2NHjT9jlF17oS6tuiSXe2iEyeHdru4ZrGGsgsmkyS8Frb5ZVEtg5zppanECdnaiFYXuuqs3RrQNwurgD3gF3FY29TCM0wdCSlj6ZgPbCfVi+AWMWD3eD6Bk823BHANAY7tr5Oow5/qiS0oMu5AB44ivb3/2xe3Ud712F5P5zMavJqobow5ocM5VhZ28YJeFuhuUgRDQuFilj74jckb93s6b0it/zNoL7SPpJeSgzxVsBm4UMWR0BQPgeAQpkGR1zo0IxJWzbTLA5xWF+ifVRVEdbL/bSy7fa50/eZU899eTSqltiiSXwkY8Anz95lx31QAutDFarbHePOAAAzABWinWk+q6woXdJfqaUUtE7RclWVZtkhTRaeAK2WOOMc4/DcM8p7oEGyrFGE8mqaLaZEJNwTtidnzukUGggZBzOY0l3zPplrpJUpeXY5J4tyt6ThPTlzz3zgwJ8H2bpYGQVzOWfyBAcYJR6AlPIVubsPBZok2HH3NISiggFe+1LVVKgxiHzlvnimwi2CmdWoxSKdJnxG3QN0z2tOwdYJwwVmCZgeBytpsrWe7O1WLTqAg2kJ6dyDdewOn5MnrpyhcvO0RJLLAFElfTUlSvcnoTqzo8PeES19dGxFVu1wAoF6UVaF7CzMneTCHNMJiLbrt6Cs+kNpaC7CNDBeek1toEoO2XdEHGNWZJqHJy5QhO7mdmhG/QGCVTQGaSQQraMlZ2W/7UUmGHAC/YVdyKgCL7vy5975gfvxTW8NxWS42/MvCNgz5pcJKogcr86GmnZ5wwtCHsJxx7nzkjpkdl1O6ojSUSQz9/9PIDKnSQVJqSQCO8jyS1oJ6wA6O6JJwwHWCB2AcbO0VDV1XUMHtknPnJ8DAA4PDrXjvomKN7L3GiJJZbYC7l0yS8+Fdbn57zYy2l9Ppbog+IQNhVndpPS9hxdpKJCJKokp5hqrqqMThGGIKvMfDuPHhMFcdS6U9zZ51nSuOHPKmmvOIjvO5INcy9pdK9mXujeTwiRV9IbtPOeSMBfd0L68mc+8Sfh/Ivz7AgjgxJAuB8COl+AkHlLiBOGEV/Y78oZhQO4gwUK8xoBUM6IINy1BCtIW4k+9005fEUKnCihttMSvLpRHQnZSs03ZwVsscFQ1ZVEgtyxcH996eVbDXg/8NHXe+WWWGKJb8v4KHDhvdf50su32o20Pt/3TgIOgKmTUyEQu0m9TuYtBA6ubJ3anAz4aqeUVADvqiSlzJy7sQ7jaWEuTZRN9VWQQrLXpxPJQkEIoM+7nbmXBCC6R2CSHIZ3Uu4lzXZJoAM/+uXPfOJPvt5L97oTkmD7oVywigsGQEWHXEPuLovGcqyTAkI0C6jZ74g7S3MIe1RFMu8fuYuEFTlFIPPdANzhUAHJgK7C6No9Kq24E+mSSpYYIoqoVAAmKq0BIcmsrfDADNmqc9jNk93Puzp+TD71/FIdLbHEEq8eklih1fFjcn7v41tXa4dio3XXt70HERyodM4Ehy5SAVC8OyTxQrmygjK7W0NE5gNchRok8KiSoICLpD9c4549xT69ATqqnDE9iipp/CgxS9pt8YyOl4bpuojIeGYDtq/bwO91LcZ+7f/8H49Ov/7S1ySmdTtqLEMmiB2JIazJgXmTeFRHOZDb+SE5QyVCaYNcKxCjaKhA3E0EaUvutluOlZnckFVVLrxq0/Q6CkqD2eDVeYMNknehGFaAbWCl9lb7qjWKTWtrQ+Z9s79oF55/x5KMllhiiW8a5CW9chnVHj03vW1Vp+3Jy3WlqL3WqYK1C2q1Mm0BFGEtqpMjF2OBqi6TA5XeJxV9hZEfAEhBFWcsyUour4YZX4VwklymJTAJY6FVRCaEvXpFmv9pLMtOAECwCuI1MRv1pQV62JlPQlSR/cdIBXi6fvwd7373n/4vb7/Wa/a6KqTN11/6cYUcYyS22WIi/yi7fwM7VZ1mFpJIy5GM3EMjD2wBNerolUoPsYNHJZRzI0nDKdWRvTtmIUP2Wz0wGN2tG3s3indNWXjw6gyVzrFzZN6bqmwNYo0SSPmb237iX89e6/tfz+VaYokl3kJx+fJFWR0/JsA1HG6De7l1WE0zv3YKs9rbcEwinZVO6y7oXfZ9k1yTBo408hvzn4RDA7mXGYIyISgKhY9TeKzGzIWDmAhiP0k1AANB0mG05KIBhT3cWxy+eQSLwIl0A8qJCvHI5usv/fjruWavr2Un8lNpvBfzIYqJSPYZaT6syXd7R1Hcha87BTJ7Q43ZESVRd3eh0aP0jFlR8JvSRXHYkqPkxaaMvSMgZkelVFCVo1UXNG9tWqdABm2bKWGFMFGT6PPexs2TUMqcx3mcf8+tdmFp1S2xxBLfYjz99NP9wvPX21F/wq4BuZt0DPYgpx2sDzALHKYYK2ykdHVtWkoDAINBcgmmRApASWWeKmIBVrOLRBidPc5cbaTboDfkt8RgUCf5e8z9w+YcKfUWgAG6zimMSHxvyJkVwaDqiJpQ0nxVEtwqr4vc8JoT0tV/+uyTcP5ZDHuJ3admqXeO08YHBQMTlPtJHEZ8ZJtVH6kICSpDWpMDsXM0BHUAoOQY2g2Z90AERXVUTFWbE3vVUd2hgszAfGM5Fa6mSuAANZdg10fHVg+snXixm31tX7z6mOAjr/VqLbHEEm/lOErV3cpObOuwYtZqT3jz1LndAtO0mmdJ1lUAgxIm1KalmmvOwwFzYdjlIJdlBwhAhfsdpPmEl6DZDOECKI1jrCLSdsDVAWhlp+85e6fmbrTCRGIzNmJ4C1GE/P6r//TZJ1/rdXrNCckbfiorkn0ZIeYWncye7KMGOrNAOtTwdN9ZQ8TTZXCbwo0Xs1siKA2qQfZ2SVUIZz8RxEtJ/KEDveNsdWRwdPMG0zpZqcGp69veb51uzLAJx8fbuxboeYRi5lPPX2/LztESSyzxx4lBBN+eXE9XAODc4YpSJjktTWpftcID09qbb5s5SheGH1tnaUDIf0ly5JxCJVzF6ZF0RCTA0WJ0dtHZsqcJNSuonjN7IWTPxC+8GERk34U2QtOUQfDKmmMsNIXabmdzTqD7Fq+5SnpNogZ+4ZPrr/zeyR+AOE7kzyvEDHtU7wagzzy6PVRFWIqHJHx8PL+pqKQEsz15UWm9u4nuIzJSzKDZytunMqi2IWSYfewLm3UVVW8dOzGDERbGe94axdaududgJ/O++BRsSUZLLLHEaw3ykuIK6rXfPzfd0l7ttE4rPdkJHKxMZVWKm02uOhWwuvtUqXSRaRY6iEyU+JwClZRJNP8LL0EADyI3RCYABSITnVOSwEOQoKh01CgGgvitgkJygiQ5HFIFPoQL+THOn0OIGWYKePwZFYKT73nf8XfJ+z+0+eNep9dUIV390u2/JMTbo13HXTUkY96zkwrO+0kjv8ou0wp0XrraCeb3fTqCRFtUWtAVkmqrKQOHmMI59o7ORAf6aJ1WIHh1LiuxbfiRBCIoXGB7M2ys8U484Xj3MgFPfeF1qRGXWGKJt3h8NMz8rl2LOumRYwA4QrTuVq3U3vrpNrFlaWWu2pJyBgMg7oKcI4XNaHA63QHoOEfTCTZN/Agx2ZsliQQdhzkWifM3iAtn90BHzECDaHVRsvO1s6L1M17rAhBvv/ql23/ptVym15SQKP5TO6wEWgy2YLmFmrDUXWLB8DyKBVjMpuTR1BwqkFcgLiCK2C/yrA8BuIg7BYnFIIPKIJoafQx7CTFFNYeZNzN0kVqUJiomKmAY7q2wxmBM4egIW789L8He7Gv76GXY009fXuCpSyyxxGsOuXTJL3zwejt6PDh3d3LhHjjCaWmxOaMlwHcJXq0AWmiCMdudd3ahmNJmesMg2OyPLnaKZJ8dtYMEThmLsgAyA8gQk0nc2ZM7LiiNDoPIoH4Phd9WZKzzyG7lJy0tKK/NluKPnZC++uvPXBDiP8CQ+o0Ytq4CYNeQjBBAEzablU1DAFJniwkK2o6rJD0uRO4ZzURvNuhO6j3n5aQy9JnwrYJuQB9/DmWdNzO9q1U3ZkfFrOH2bTxyfAyta7mGuJNZdAxLLLHEPYmku4yzBScAcBtlFZy71nvTVNype9skZsgh4UiAoAX1bkCJCmmccJlH4tgViqqEkC4Zd87Y4UxRQ7or7ERmwnlGn+dvkHTm752zo1IOlPa1zDnjmiXgEDj+w6/++jMX/riX6I+dkFzwn2bukd03yDH5CqtyphwhQvZ+EpmTWAzVRpKKD2kqEGeIqlBV9wpCkd1FjbKWgFF3dwqq2ly9aRHrqq1iZ9VRa91d4RWAqfNgPT5whK0f2x2zdri1/5+9t+mx9ErOA5+Ic96bWVlJsZtFIAVbarYNcgxXSz3jkWFgJC+MGUAjzXqKG/8HwwvvWVxZY8sb7fwDZqP6AUbLi1mMVw0DAix0AUYT06qGNDMJNSmRzMrKvOfj8SIizvverCJZ1R8SK3UeNKsyb96P995qnMiIeD7KSftWnTTviYmJnxeiS/rur5yWuz3VZ8e17DuqXBe5SkWOj4Dd0ogbjLuclGhNRFSEWkRTsS7JfoHvrk8yZjILRW08pyyqajqaTtkSFrZdUuiLABMdCY2MZtOqA57B6jrkHuPjO1FELAVsfYMu+Oev+hm9ckEi+L8HgwNGZGgC7M2WwnzrhOJ5Gi68CiqhoIzMo943JqobksMwATR0U2gZK6T3jYkqhregedYlJCpbo5hGVplhLrrhWdfIEt2RWQShVkhNtRZJRe7e2TPcvN995xPO9mhiYuLniQ99lwQA3wTwxqnpkjKl5rYrjce15lau9mUYr2rvRVMq0nupqGi9y7ZLgnb66I1mJ9QPBlQd3T1YSY04Ce+Swg0nhLJu2VZAWpKsuOcoh+vO8LSz+65fcxi22tiuEw9e9fN5pYL04+/9219jx/1tjoYMF/I13ki8FkfHZD0PzbcuNkgiFO/voNFyjlsQeR4Q7BmiL6jPSj0NlmsabEerTKhZtSDlVXKbyOHoPWIowkDVd0c4wXUp5Zpazc37W/XRD+63yaybmJj4eeKhd0kff/q07Huq139luiS2Qtsl2V57twMWmHtDbSrmLGMktux1SCjGJgb8PDSjVarUEMoGmcHOTHfAGSGm6/kLsaEbBWLhDHZm90Oj78N2SXRtkkjrkg7uzX/44+/92197lc/nlQpS5/79DVHBNUAjZdCvlluz8jHTjGEeYNojiliiFM0n1V3UbVwnQpuBhomq5yFthbCuV7JJps9TG6W1alESZIkERiVqK1IjXsJSG49rbr0ct4VhDW/dEbC/+IQPHj8++C1jYmJi4ueCD9e483567NE2dgjl1svTq+uqPZeWc+lE1WyFR8miRG30lcTBnhzoYqmyCKFsN7u1MbYDCShWQwGLj/WIJfcJsvM3llJOFRhMaQ7yACUYeqZJwqZL4sYtvL7/Kh/NKxUkUt+XbYn08uE/HS4LYZQK2UaUG1ODCKWwu3p75jut4ynxcwGqiFZVLaY76iOEimq/CcTFt2727CkJkTJa75IBoNnV1gr7dQMAdsGsA65SkcJn9Qha8/Fx+ezkbjlpR/X+A9S5O5qYmPhFYDDu2lG96D+p17ioy1Etqe5K7JL2pYqUJtElAUCsw8dePK378QaMaAo7P1MVTTUs19YuaQ0zpTPk6M4NG0PsCtXDiHOxdFhbwaAC698a5IfRJQ2nAyHwiylIP/qjf/M/AHwPbjdnNuV9NT8aRZRuxmelU8Vq7rBsIBlc94isMHdup3yLwqaeHURw7HXsjoBOo34D3R29RXupbqJq32vprEb/Lv4bRnRHvZV9qRJ5R8AJPr+4gF5cCYL98uGrfIQTExMTr4gPbRJzhjP0ekx9thPAHWKujdxQcytXlJryrorvwTXFPlyLkKUrxtjOpTd1lc54Gm0Xsf2RtUQKo4APMnR3+VHfjOR6R4TR6ZZRbWw7MRvXlW1Hq0J0glsMyQjyPasdL4eXLkjS64O1onafV+rGPRZr5YxOSJxSaPoju021gt3zOKSNcR2D+97tA4RC4Hkffb3QyDyKNI7WbS9kAXwZJGm/N2RUUUHGhrsIoCQprZUKqZ9pbUcnWncV9bPPL4xZN5NgJyYmfsGQhw/7D3C/RbJsMO5S3ZV6JLURFSV5fdiPx9XWBcnOOJEuCXkE+CUASjUCWALCBRxYkxIElO6jPIYmyXf4Tq8D3N/Ozmo7w4czjnVWRTU0SWrO4WDpRANNlwq7v+lUUV+a3PAqI7v3vQJi0Ae9NFozZBbeQHRMq3uC/WV7IAnRKwAIOcZ1nnkUdMVIhKWwiLK0zjbIDIpq0eQsor1o/KYAVM2WBqvuB5Xd0h3iorOl8fjoGMe7hXfawuHofWZRWo8e3Z+uDBMTE79wxJ46PO7eOD3Fs1TkuC28ugZ2S+ayNJayErK0a+mtN0u81sLWqrAXJjOUJsxCjQ2VaondNrbTytZrB4qIO4R7eF9EnHtDUUc31DtoBqGjS1JZM845WGthZACLpRikcsbTvPTY7qUK0pPv/evfIPH3cdP7ToxxYAZ84heGteJ47tHNVxtcur6O6wAA7J7poV7gVu68ujNDoLNLA5BU2aBO9SZrrQDymLd2Sa0TNfVeImKiQmuBhe9l96yLeIn3339/ujJMTEz8whHGq7ZLMveGX8qyL3ek5iNx4+fUNOfSei9qjggIth1QQVUm3yUlNXMAoZ+nNmkaXRKCOQaFeX/3+IlvU4TYNgyqEM+46MZoEE9dknVEB+CgEbGR4LBlBUSIv//ke//6N17mM3mpgtTJqHA+amPxNs6tgiRy1yvstiKQIrYo2w8SA1e+OsEaUeNCWc1S1So5oJ55FAu5XoFOTRvfuq7SereR3SAzZGxkTOAmgA+L2QUdt2osk7QbxXLGS0xMTPy1w8+ciDp/+mwnuITvt6+ApVFK84KxiTnH2jU1AGiU1rskpOGhYGy6zvC34yZPjp6YMCLO3RJI1OzgjKTmkypBFQtS3dMcw/cI0+yhP7UxHYFG0g2wTY8EOaghX4qXKkgU/G+Q9ZR3vjljNGeFcmPcABjVOyiBACgeN0Hr7cSTJwCvvnD/JbdqkNXpwS80gWrc+iRauvi4TrVkxb6TZVE1qndKJajeNwP4Ig12abWEZ935uQthJyYmJv6asb+ws+duTzUf17Lvl7VqbdWtgzTnEgF+Cvu7kUV6N1IXWTo9UZZB9EJli2YB5hnqeyQfXBFK9k4LrwA4dkk8EITGF+ITOulkuKvawoZAJKqK91Gb6FU4O+93X+az+MqC9Off+3e/Kh33sTGu8wwMu8DgV6wQYO1i1K6O9i7FRnz+GHVBFg5GgSLhFG4fWDx3H3kgDQ1wMsM2wte+d6o3gJwPd0fra1xC005Cd3Ty9rcqHs2IiYmJib9eiBi54eNPnxYA0Hwkd+/seInokky8TyYCTtCq0R1ZVlIc/ikJm3QZOwc15wZ/Aoa/3TCrdrYd4QxnACKUldvA1c9tnc4x9kgcp/d6ZnN4ItiLir0Shbz/59/7d7/6VZ/HVxakyvI7ca3r+xzLIbpXwzam3G3Oh+O3/Ux11SCJlCAzENIkHmPRuNYKkoWdTSRic7UFrTGo3koWUalszcgMyhK0SNiLCti4A7AyVgCjekc8ueHR/RkxMTEx8dePBw8ecwhl6zX12U7utMWcG66vAAAxtlsAIAOqvWgyoayQRZPUXtuBcwM7m2XOsVCTaY8sibtCUUYOXe/hGF46pYhGNp0MvShEXdNkeiZPky3i1kG2srGaYEXJ1kxOggMB2dSSL8RXFqSO/js+rlv3R+QB3ftwVrc+60FKRlAuGG2eGCViY6T6RY91K3SuvnUAkICU0Jot9jZro3i9or2XFgF8TvVO1Vri3WmqEcBnZIYZMTExMfHXDxETyuZPn5a7PdXrelH3/bKmuis57+wMy60kmtuMkGVIYhMtHbUBKemL1w5962/nuUndSGO994P0hBcWBFXTJDnrwW8KhEUrAU9usDoReyeXA6F09J+tIPE///sFwv95eP/AuyOPtY0A3O28DQDUmRpGFewWD+Gtoz2RmHOSbi7ALS7QV/FWtIsR09s7nEGSjFHS3O5CujTpEuM61GrdkSRZlsbdkomjNfPojdNT9HpNwAL4JplhYmLibxKPHt2X3amZrvbTYwKnEPe2A66A4qsH2OSnVqA2FbRm0a0pIVYXiUpznvZf9JUca41OY8pB/Iz13b14MBK2eyTAKHYdogpze4PAgia4YXoDG0a0jPEZXSg0Ktb/wv/878Mz54X40oL0Z598+ptCeYNWGb0d42D70Qd29rWPEO0KfYxIW2hpt5jyEMh6qxjsOmslWbqP4EQ8B96+H07gEBYRtRbUHRnMil2LiOw11Mx5MWeG3ksjaqPU3HpJtZYj6EEA3+MfvNz/YSYmJiZ+UXjw+DH3F58whLL5uJbrUkrhM0skyK2od0kx+VHtRZnKmmhAD0tli/Oz0yzX7Mx17ZG6MTVYQfEzlivbTs1KqINVRCyxgSy996rDpceNd8Y7cNmPuCIpasOGHqHA6Z998ulvftnn8KUFqbL+TjeaQPgcNcD95rZjPKCqB+2t0RNSaWrfdf5mKRnjlYNdFxfhZdcWb05m6FAJU9VY3rXeBY0WwgfAuqMmwfguxfJE9oDvjnwOmxb5/GJ9f/uLT3j/8SQzTExM/M1CHj7s9x+gBtvXrMwAnJysd9rswZcFZtI5/O0AGbEUwpDDCD1pG8AB+SucVbuz77Y3u2RJJFzg3HxVRIZrg++psK5u3KMUhV7YSNZIE4dTwivrl47tvnyHRPzOyt2LRdWW6keBe9cF79sqJ0exsU97MDAARrbR5sXVxVQQCiiW3zEcaYHmci7qmgrrRqoiXcx8MFvcbzZ2XSmr3QZ75lUqwrbw7p09v+m3707fkklmmJiY+DogspLOce5jO0Cu7dwCzLmBzhY2TVIeVkJNugyR7MYB3A9OInkr4LZB6N1jzf3ZOgUi7PQ8Py9iY2yH4AEE2w7sKzt81IQg2Q1KuNWILXf8f/2yz+ALC9KP/+j/+DsAvotNV2YzQQy6t4jZmkvslBDLLt8f0cRGYhfrlgv+ZEKGVRDd7kIgw0023GkZYlqg1s4mLsQdRqrUom46mNLK00+LmPaotbJQa9rtytGJ1mtq3TuZ4Y8vfrlOMsPExMTXAQ8fPux/fPHL9aR9q97tqe4qas6yzz62azSPu8RVk6SqpjtyTRKB2jVXpdTu52onPCkh0hVsTGfrlDVdVnwNMiQ5XFlyZnAdLg8G9dBYP983POyY2DkJTSR+KCT+e68tL8QXFqSG/tuD1r1S2WNGSEBdjYsNs8KiJmAZSSV2RTC6QdkmwxLSwipIN1ZBfZMKq+iMVFi7WmOKJHQmN1Kt8LbIEVbt+z1Me3RkMRO4BHpbE2F3p2/JzDyamJj4OiF2SYCRG54+24ukRQDg6trIDVwSIUnoPp1reJ+d0WY0LQzDVXFCGLhmx/UuYt2Sp8lCrXNiB4nCjtEMyMZpB4JK+EqGMCcdQVVdk2RhRtsEwMNoc2udGvpvf9H7/8KCJOQ/JdAErATNCgiypXt7ZdzMH10rG4pe8UrijqweHEsBRRSHNG8LkHLmx5hp6oHINsWfKaHBZqajGPlVVbfT2GqPIoTv6bO94Btv4iyMOia7bmJi4uuED4Dd6cc2TLq4EuAUMbI7thg3lNJkYWMVldpMIBv0b5EuDV1aozGPkUZOErA98IPk7f9t6N9en0YjEMe3Oe0MvjSsAiiGxarfYmM6txEC3Vpos2si/+kXvf0vLEgkfguDtA7ZZh9JrLnovgrBrkNfx4Vig8hYjEX2ESme/07bkUFdOeyPc6oi0a1CN2N9dGHpQFVWi74gS9NelNUyQhKqJBalVM25aG6ltFZy25XPtLal1ZKPj8tn+z8vn7ej+u73PymTzDAxMfF1gsjD/u7375WzX3laPju5KPm4lqMTranWMth2RL26wbbrrTdVOyOFqQjDOIBFkXwlEmw7qUEHVwA2lYpAJPVdkzUCIib5GSDpsRUAaJyBzfLIWNhW2MRrGeNH8QzAb33R+39hQfp//6/ffxvAf4eb7t4IuwiLmzC/Op/rEfAll+caUYY7g1gLKOGx5MmwvbOxs4Xhn2wy4IG0WhL16I6ABhWgs/UuOZvrbW1dhvaIYUZ4hOOjY1ylIneO7DeMbwI4w5l5R83uaGJibSi64QAAIABJREFU4uuID4zcEJOcLTMYOAa6u89IksVVPaQSTSRRKdLF0mRX8+kBEQE6SVR2aUbzFl+/aHX6t++ZIvRPKsA1IymKC+H2b/6dtSwcyiTfIwX9e1wB8Z7XmOfwwoJUy/43fX80GBXiPY61X1oFRu9GuDUwoselEmIWQDa4HB9EJBlqpFOoWMDGgUgruA/dKriSKsptEF+DSlJlDTP2pETOZqvh3nV7XGOkwl6as/dfAoj90UyFnZiY+Friw9Vw1XCBgz2SukiWjeFtt8QaPUdxMvo3qASa7ZEAgGT3VYgqaUYEYkmvndJ9XdItc8L+E44uyeZdZiNkPAFPddiM5DZ7pAL4E60xRCQgtexfqEd6YUFqwG+NZRZQ2c1GnIIaczv3XjAaeLyU6XJpUz0bQoYNH9EtgYMifTh5W19oVO9oHek2FiqW5yHS0JCc0ICUkOzCqyqLDhYJLTMklf2Bs/cdyz06djHsd3/ltPzxxS/XmQo7MTHxdURoklaR7HG5LqVkSj3Nu5LyYszinIv2XjQ76y6x9G5u3wCARoH0MWV6fo+EdV3i1UrDGsj/WPdI7rKD4AGEv6qP7Q7u5g4+dodGitkIbYpWg7x8QWKLGZ+1RM6UGNxyV0kR2DRig5xgbRuj2AQDUCxuQtXFVwCiZYRqEUFNKq4g7pYMK6Y+VqRq+yOWTqndBFkm2fXfDCIbREqSA2fvy8uD7uijJ5NdNzEx8TWHT3DOcT5EsmzFDFdxhd2SKWKGq2X7uCZSAYim0lXtF3agxllqKxMzrG6dLakUd2uoFFSqHriC2pDLtUUEvRj5jmjjGrc6Mng0xcgG50iRxehEyPZiYsNzBYk//IMjCH4DY163vqD9bdVvpJfHusqmc2I7LHP3hkiBsfQqGBoim0sKWUY31PuBYGvsjzpg/VBDsOsSzKmhrmQ/oNYRxMclcYcjhG17OHtrPpLJrpuYmHgd8Oj+fQF+iIjue+P0FMDq2rDHtUlbAGSXuoRINiNcbSqQbPveRGUkySZbiaiICWKVvjaBxZYTlaJVGK48tqaB75OCHNF9baRig7GQJFlnsLU4ZRQvH68JRPE/8od/cHTzfT9XkH78o6t/rJDVAG8M5MYiC54EW6PAqDhxwe2FhszXLsSZdkIIGXTv7nkcxoxY8zi6bJxpVdi95Uwk0cynIaky8kAAwMgNQCl7iDRpV9e14rqmagyVfFzLZ/s/L2e/8rS8+7uTXTcxMfH1xvvvv9/+z+/fKyftqN45uVueeUpB2u1KbruSeFx3fl8RFVTfpTfxX9YbEpRwA2pzn/MzfJMhZ1RvkdXfTUSVBK2nGc5v5tJg2UYiFFUIzA+PlObU7gKgdbKCvTrJzhLwTMPqbQwB4ujHP7r6xzff9wtGdv23nEf+wrhyQOqGe2fudB2bwmUXa5XWlL4kh/J33R9h7I9EhWZjIVa1od4WUrq3nBVspk72PKSuI/voGlI7LHteeytbZ+/ezCoouqNHj+4/xxycmJiY+Lrhgw9WckOM7eS6CO4AwBXqxmxVs9RebI+kzFWohWDrtFRt8XMznns0AN0mUQKRNUV2dDdiJDR4xyPGrR47I4mfscvq9G1fCuGsPeuytMphbBGA/hz9+7mC1Hv/n7C5cN/MrPujlU+OSDNSEbqQaGRRrOmwZiTU17CNmPRViue7t24X3vraEgKVHTXo3qY+DneGDWq1lpWNwB6AdYHBrnv6bC+fujvDR0/eksdzfzQxMfGa4P537O+IpGArxDMAOMYOR+CSrDUpQE59nG2RkQQArVGSWiRF37gvEFKFrYiaC4N1O5uz3053+2akHlnydwhkGf/r68EeiFjz1VtIsakf1WvNAZ7fIRH/COvyyYdnYz448o9oY0OjCNI87pyEDvYeeRoVlEKxZZoM6yBUROaR/9e7yErpcGWxAqvRnApahfQuGTBlclNBziP7SNyZ4er6ClepiKQid+/saMmwZwB+iA/m/mhiYuI1wKNH9yXicaxDugBOThDEhn2pUkqTBeb+HS41sUfKKSElZRru3w0SBjrR+ahbBqnanqebtCf2SAQru0dSRHyQiIRAlr4XMndwDNqbbYrsPA9ig2Esl0jgH918zwcF6ZP/+HtviuBXcZPQMDokQqC2yvKnjYwNCgqd2heEBm5fhGS0iap0t4YgumO4e8c19/VHjqB9AxUVaM2WdrVCey+t91JzK41S89FJTdXyRK6p9W5P9ezTp+Xd79+b+6OJiYnXAu+//367/9jo35+d3C35+LgcYevasBTNrXRPkkV1YoMz7dAaWjMboaRKWx1h8Ma2B2HvHURYDK17JGwfM6gB4VFqOUreWRWx7ivmdaNDoguCOsf38Jryq5/8x997c/ueDwrSheh3ve+iS2yN8m031jET5Bpf7gZ1UfSMJWdMDa9YnmvE1fLV3qHPLA9iYwHLmrAPRkUpQFVVC95Lebh7d1gIn6RUIElW77orAM/wzIVkI1fkO8FcmZiYmHhN8AFgbDtjCm9dG66ur8yz09kNLUtV360rUZtq0SRVtPuYLlVs2GMreUyhUKjGauXGHmnlO6znZ8SaiyKMDvyM9yBWuPZIqwtkR56dwbjkF6Lf3b7dg1LQW/t1H8xVSqQPDuWtpRw5JyN2St1EvO6+QHrvNvZHgFXXoT/aUA3F0mclipzZVqTKZrbpHAl8Dbjh7p2T5YGI2wVhB3P3xjGO28I7zRu0bwB9/5RTfzQxMfG64dGj+7K/uMczAL1e8+6dPYP+fXwE7EsS0ty/MzsjpBSozkFOxrYDADR0WT3tqOJ7JLqVWx+WdmG0CgAQ75yE67nuseYgpfvwzEx3bBbHg5OWYIT3raF+hYD01n59e8+DgkTi1+PtBGtOPKjcvtbR4zh5b1S87vlIoeIdXhORbR76I5gAFpRCSIXZTvhzOBURUU0TbBlnXnYiG3dv2Ffx4P0e2DmhwfZHiwCn6PWYf7G7K+/+7idlujNMTEy8ToixHWDTnqfP9oITJ2251rKUJmBjrWr79fUPkGSM7YDVExQAsHZBUCUlMug2kh4BLKcOAOj6HUKC2DCeywP7fDLmnDy7Av/56GQ2qBR8cUGCrIF8BNDZw9Bu7KE29UgEoImiDiwlCEERooAwMoOiqtEB2btlHo24cvW0Qqy7Jqgw0mFtGafSUEEqt4SGWk0Utiw7HOds+6PWS+yP8rHZBZ20owNi3sTExMTrgkf378vn7cf1s5OLsquoS6vlM60tt15UZa/OjFsWSzUv3iFVVLTeJaWM5PlIAMDoeEjG2C6IDZbaLdymdndADvKRhKUTLRJkB3UBY3IWTYhHUQxCnhHZZHUhEvLFBYmksPPXODqjdea3Ur7jBdY6R4g5w8Kog8Y0WLnf8JftzhgMj6T4y4qRqa86GjQB6JTOLinqeRImZFgComuRtJfmHk4dpYaZqjFQTvDG6enYH0VO/cTExMTrBls1vAfgDPjGm3j6bC93jhZepSKi1X6Zz7m0bmdiSqgdUpW5LqqltYrIR2pdN+eq/dVJgQrhIzuCosF8hq9ahjWc2Xv76G447wC03ZFs/OTEz3a4i5C5D8VgD4Cgd/z6QaZefPHkj37/2ypy91ASRc+zGDXJE2FtBujqXLiFhKc7xVOaPLf3uDAvahoJsV6FoYN1pxD2LtLFfOxEWZRaxP3rDujedbXM2O8BlCRX1/FuLvH5xQX66THPYVbuH3740/7fYWJiYuJvDo/u/0D2F5+MPdIbp6fA5aWP7WC+dsV87RYAw7XBQ/s0Sc2KvaqWnLGvna2TBc3WJCpCdDO4pmUIPdchDSmObKqHCG2NI4xh3HbUB8hewIJNZl7M+cL2R4DTJ3/0+9+OpxwFSbV917sfxsNFtELCRlzKGA4GocH8viVyYVeHhvBYFbkxFETvIk4xFBGt1HgDvmQjS3gutS6CtNUiAWgi9OWduP5oBwBLYyQq4uQEwKn71xmm/GhiYuJ1xIMH3xkTHr24kt6M2GDToGPsS7VYcwBxNgIAmsj4snU/U7tAO4UioluBrE+3yGIeBzp2TLpVARmtwfdCIhTnDHjfYg3I4BfEhKzCRbcimzwlLyeqbTDtRrno3QgNAqkUOhtijAMxOqDotQAoxVhzwEpoUEVQ58zxG8FflxjtiaACWoIiDqxxE6o2WLQi1Ixh1+pKGUy0AKr48Nm4RxAabMm3v7is+biWO/taPv70aXn3+5PQMDEx8XpC5GH/Ae632COVz/dt3y+rdUhXwOKhpJIkfO2G77Tv3lNyzp0qExJUlEHxtuw5z5pQRYeac4OySNSBTZ5SLIDCtQEQH8lZwzTaH/+T6JYsLqDfKSyESieq1x4AB6QG/gMAMaMT0x+FAQNd5MSV4GDqIsR40cszB6sOqOqpg+Jdli3O7GUjA2mlF7YYNVIocpgQCxN5SRcTxNqH2yMThKiN14PQ8AZOx7vanb41tUcTExOvNR48ONwjvXF6isJnNYxWNeeiSfat9wIL0gYAZP+iwfdIvUsT29H7DzCMVp2wbYQz3yNZI7K67LifKbm68gxjHwHNOHxDMhAbAXo6hKWxrg5zvoviP4i7rx0S+PdcPesUvuGYSrvd9lHeh/HArsEwAv2Ajd2cOTTYG1YSUBCWp6S61kNF8iUbZbjSwtyXUspoqkVE9h2eJQ+pkCTFZ6eAxZXj5ASfY1WPzbjyiYmJ1x4f2lkWe6TPLyxF1sZ2wL5UEbcRErL0gtrRalcP7GvuBwog+e5dFc85NoRhge2Rbjjo8ECPVCgwuxyRciCO3VLIGG7iPNgjAaPaeO0xjIogHd/2R/v+SA47C1kTmOwuAD0vg/C48lFgBObsbReoEN80qXdTlI7DDKSOBnSzDBKKdKTh0MDWqohZYgDZ/ufjutgfmUMDgMtLe2P5SIDVnHBiYmLidcWj+/dld/rxOIHv3tmRTmq4urbAPsAjGkQl54ijsF/YNeXaFZWU2oFK4UgJOqR+G41bRiSFnelGbFhrgngbBViXRJuCVXdpWDWqso7s/JFw9x8y8pSId+J5Tfrzwz84EsEvWykQm9QZVlWsmel5SBMqZEPvjv2SXdjKEh81ii6w9Yh2z0ACLHJCNFWhFvFEwy4ssT9KKYOqJDtHA1aN0LAs5u+9ZdhJWuTunR3xV5/i/NwcviN9cWJiYuJ1xOPHj/nuO/dWckPaDYHs8dExTPYChGNDReiRMiq8K3F2WKKSXS0wtaESuuGNRTZd7P838eQxudrEDYkIYeQ2z02CGLMOkY9UgeGPACA87YYmCAD+ToT1KQD8+ZOLd4LaveYwWasV5nkA2zaxNl599ESqTrrw4rgRX/kFjZ6OoFhsrlkGdX9nHbAFnBPkG1TacPgOvoh1SGG5HiFVx0dmGcS2sHy+b3dO7paTt79VJ6FhYmLidcfDhw87HpnR6t2e6nGtBZeXw/kbJRnTjo3h+i2yTZD1oFMATboktcA+S1UgZaMnFT+TVRVYR3YSTg2eSwHA3A6M2LDukTZjOwFAdU87uEZVg5ftz0tYDQK8IHXq3zuY+5nX0fCwczHU1qXBO5+IABSOPAzcdIdQdCukxTurPaDFHGQjsjwMVUlhl9bNnTYlJzykII1kY9ZV59sD4JKYcisV17XwWd33ywoA5y/7Lz0xMTHxOuAD2yOdA/g0H8m+o6ZaLUE2t+LzokMtUmuCbL/oI2VEakJEmsfx24F1hWLEs9LYLZfOnCDoPtq+/3GQRO/WjMSkLkS07ttjcqIobCwxaYtnAL0GYbj14NvOjPAL4MpmAAbDzh9vuyQKMfIweFizTFQrvl8ykVS3mSTdULVHYt/YrInYIE4J7Zbf0SgpKWuLCl+xZHO1bb2XRKmJUoPubfojC7MK/dGc1k1MTNwW7E7fkgOB7EaP1PapNY+iaFlqbSpIibbiEEGrQLLpU2LfjLe6RDaSqjBMVtUddFSFEkw7RcVIAg+qt0b+nQCErv6lPswLYkO8ngSxwQqTeA3C6JD6t2Huq6tl0EaCFNUGG9MGc/mOqmiLLbHqWUlpW9NUADBrCgSpwcP5NpM0d3Xo0gWilnCYhK11WZxh15hKJ2o4NABAWAZZQuylWQblIzn3HmkS7CYmJm4F/LfrONuMTHzpPzQ90g4YeyTVXrSa3Vozl+1NeizW41eVGMQGkRFD4XcIr9E1DokFIm4VFLIdsVOZkBvs643Jqu1zBGSM7fwexWsQfPCGb28p3wKxLZJ4ttJaOMYLBVkhuqiVo851f9QPH7NWSc9Acg2SAkCy5yTJxM7a2HptVZNEBIWJvsZT2czUdkgbyvfFBXq95hnOzMNuVqSJiYlbgDXP7Qyar6RvoigAACXJHgDYGGdl9d0RYEw7US1sqK3rKq/pIiNpQc3PwKZYvkdasZ6/HG1LhbHr7BnEpUnRLmG1eRg0hufHeIK+6ZAA+faW8t3Zx32tDxv7I7sHzGBBIpudLFahvMdaDRjiSkYGEiHmDtv7hsHRiS7SyaIwxl0a7yNhm4GU2W1pR1Mn70sSXK+U7xDFmofdx/Lo0Qzlm5iYeP3x4PFjrlqkYz4XRREdEtzFBgCQR6Q5SSZ0IgGivSg8mjzizH2H1C1MiLHnVy8G6qy30CLReHcWROHyHwGqJ0CssN7I7RzgwtkgzflWSLHZIVl1WimFoiGhlaDruc+drY8YfPNBNfc7jvWS5bYHmYIRLzFuMGqhDhe8SrIkJLRurrQAJUL5QnZcm0ptmy4pPv2j+Ec5AU6BiJx493fvlffff//ACm9iYmLidYQ8fNgj0vyi/6TaDgnAHQC4Mvs0PxOjQ8rsQ4sk0uUg0lxUnIy2NhWeHivg8CiNc7pvGQs91jvOF+gdMtx9tFJQuZYFCHSzRZIRZ75KhMRYdiSFwrfdjWF1adjyGkycRNieKSqgJQX6BUdwE0GIxU1gVF5Zl2USbAioG/qxQOytdKcjJtr+CM3yPILQEImImZ2QJPs9gG4psYVSj060Pqu1nJ+f4913PuF0+J6YmLhV+CAcG87wrNaytFqKB+jtS7X0WHiHVOuNsD5j2iUYaSxxQ/1OgER6rLIwXH5Ub2qRjJkn4rpYAqoQrwE9brN6U1SlmE61hxRWANrAz8Wpxnrg2yRFf/yffu8bEt3Y1scuFkj2TjwjHYCI2UOMZdbg+HE8RGM5FcSLlU5ozrKoNwwrjMdHEkho4lU8mfqIVA6HBgC1qizu0pB2qBXXNSIn9OJKzs7O8NGTt+T+/Tmum5iYuD149Gh1bPgmgKfP9iLXRYL6HTEUVVSQQ7u5OrklYDDtDtAsjw6A2esY1dtu2O76D74QjBLhOUM3N07epBTTIm2NHmQEuwoAFciP/9PvfUP1Ke6B0RDF9USHRFfbeoSFz+sw3BfcTML9fuLJxw4pLPUACEwEG1VXPRCqQ9esDQBbDVJrFVRlzgCSzQ5rBTRLvaLUmlsBfFx3coK7d3bEN97EOaxDsmCriYmJiduBCOs7B/CXfhubhfVdXQM1DKd7L2sdyiM9trUKeJx5AzC0SNJFIeykmOF1N2K3x1JINCBj6sVV/to7ZGsbFxiaoMGxq1ZTYmS32jcQEH2KewrhPZvKOX0bgIjZgxuNItxaPelP4DxzgSCUu7rhRAAQi5Gwtm4Iqzxr0NgVEZm76aTM5Ts0SABSypbf4R+suXtLHR52Jclg2F1e4umzvQTD7qMnb8mj2SFNTEzcJnywmqzqxZW8cXqK1ULoMKxPPVE7HpphZ2pQvBPSKgWlMsL6LClW7XyPfT+6W8ZZASNpCbBiqqBw/e4+ZQNwID3aNEcAWETE1VFieiUbB97Tpvo2Vu2tOXbbPaLs0IqUDJfvTnt89wJJu0KPvIAzMFiExlO3iuvWQCAt98jt7wBX+4ZC2NvJ1tBQkVTZWWtv5rdEdg4POzdVDUJDxJafw/7RzLJ9YmJi4pbgwzVSp58e8/MLYLUQsrC+vd+1wPbtmliUuVKVrdU10sctGnoHvDYBMOp3Rw/PUVsIeVgfXRwr4kQCy4BgdEjqPATjGWzJdqvRj2uJfGrGGo4OTfVtlYZ7zryriNhy2Ra4tczFTskZ3uKkh3ExnobkyYMiHn1rPHAVF8PaginEVorO1ceObMMBMEGRqwIVKTGnVQxbqqfEAsA1EBbsve0ZLg2700n5npiYuN24e2dPnJzYL+XXV0Bfqd8LfJfkoPQmmsqaNQcMUkMDTH7TneqN4aoTPqvAWrT8jDdnb5GIirUqhMEzAJxpZ8XNZmQ+FbM+zXSvFQCk4Z5S+9sWIS4roSGo3s7XEKw3DdsgMcfuUa6sKFUOFgYZ0bd9tQ2ipZx7E0hKh4qq3W7BfAmqWnpt1WKlKix2AkCtCA0SABvZeWy5pCJPn+0lOqR337k3O6SJiYnbhQ+Ady8+MZJBPpKnz/YC+C/lRwA0HXRIqEBt3QdfnSJdOntR1YKuEkbW1hSoDPsgAKLGtFO/zdNhMay77fSvET3kFDYBCBUJ/gBlLJtGeKvN9azNCjJ3pfa3FV3esjGe76c8Tm8w7BDXu/ZKnRwjO5slsjgTD0Jh7I820iYPfqKwWxIhVKiRWtFWIa3486SUURuw1SAh542pauNuscIULt9vnJ4OH7uPnrwlItPle2Ji4vZA5GH/6PRjOT8/R6/XdsBeXuJ4d0McK8kCICIXCRlrYgKA1iDaiyXHykj6Hh2Smo8du++QOsVp3YJBhBiFqaD36v6lLhWiHBYRO/8PvB6i2fHvQXlLTYO05eNtKwn9ieIB9kXokDxdohx4F/nSC/A2TyKm3FJiRYV9M5OMkR2ERYTFY8oBWP57aJDC5buMl0nm0oAY2TntOx/Jx58+LX988X+vXMeJiYmJW4J3v3+vnLz9raoXVzYTS4vgGbCNoVhyYs7rmgOJPDwQI6KCheAwD+iy3e93tw7qI4bCwlYjWshKhY/KCJEivsnpnv6wkQ7Rqd4OI05ArIMCAIJvqwD3hseCWNUixn4IMbLDKFqrDomQIjaD2+hob/jYEaPiskeHhHGHDhURlm1C7chBki5mgZHN7TuvsRPYw0kN5vT9LC2Sj4/LZ/tadqdvyYMH35njuomJiduHD+yvz04uyq6i8sho3wCwW8xSrZS9rTeiCsXaI0Z0SWgmq5ZhLoqq6NSwees9WHYE1NcuQHRIALDS3ozSxt5BbBx8os4Aqyxow0gweVHIYyHScU8JvDlGdiSCnL2F+RBxWAmpuB25GMNOXBQrNHq4XwA3OU4IS3PGNsqJEEKW3gGljjIdS7ftyM7aTqweTTtghyNcXRvLLpVSACBiJ2buxMTExK2En21nOEM/Peb+wjLg2DOxsQ8KWAzF6mcHAGiU1rs0NEScOelG1pZhZwxrbyB0DepzBZEIhn8Cxs7F90hVZUS1OobtXXy/iTK356XiTQXlyHh1grV+eZe0DvIYtG/rmdhif+TfGz/QW7ewlrBgPqN9q6ontKv/ycGuUHXboFGKOpEyckqIyIzwsKuisiw7kIn7UuX4CCh3pAblGzDK93T5npiYuJVwLdJ6wykypYpmp2YnLohpUkVOndEhSe9yqEWy033VjUqFWjwQQXl+xbKmMliCrNecsA+CNR2uWbpB+7YyZ4xvxrBvHb1BjlQEu+CU+90kGAlRurzohHNdxeZ1Rr1jkCck1E7065beLZDPNE3uJhvR5YAtz7aUb6iFSbX43py+USsWAKXsEeKv3HYFgMVOnB4TcJ7+7JAmJiZuIz40Wct6wwXYCnPrZV+qiDRxix0A2Vh2iayoQALaJqgvTtjVWQeQztbRIbqxh3OWnUt5Rrhf1BwhR5sVeyT27drKNU1BwxMf9mElLAiwU3YeDdGS62GHeMlfkusrj+WXbvdLW9sICU+Hw5Am21+JiAqTSumkqFdpDMq3IwlTymYbtGGG5JwHqQE7oDSzDpJrm58G5Rv4IR7d/8HUIE1MTNxSvIfzczvttsmxKbeCPbAsu9WM2qPMD/LkGiVRmYBVXJQAoMEkPVp7D2cdax0IkZDyeNQ4x3SMo83ioVsDtkVp08qsjt9WKgQkjxTGXo9ccsZLHXC2vToJXIELcZcGEai6sRBWp6FNtTWv1ViMdZAsvdMsKqAyWHm6qXatWRUH0MSqO2DDu0iL1Z7L8ZEx7NjKAeV7f3GPDx5PUsPExMQtxAcA8EOcnZ1BL66ktz0lFYlcpJpbKWWPGNqVCgAZiUpz/AaQhBbzk0BuxbHWFqiSwl7hMea9U0BLSnLTA1AYfY4lPrh9kHdAm/lamKGaVw8AgLQdEiPiiGIdkq/AzOvbueKArB3SmBJWjCniIUgLWY97rjokL2vuWaeHVubYLsssPMo/kJSQUl5Zdq2JibsMiVItuvzYb7Gk2MDudPrYTUxM3F7sL+6NX7ifPtsLW1mZdjhCWqRWaYIKLD5kap4em5B9HRInbnrOPij87Ih1PAf4z51FLZsfuKkpAIQ1UDDxIBbeJwc/hxPGV7ADtkOKO/iuyMqVq2nHTknCx85+ZCM7p2dsY279JrOb8M/MUwg7egHc6Rtmd96bPVwoAiQkJaNDImNkl63tdKcGLolmrOo+dp7ie+BjN52+JyYmbiM+tF+6z2F+djGyM1xhf32N/R5jZGeEMHdqcMdv87NraGjo7CbFMUcdondrFNSJZ+49unVqiNTYaETWeiSMDkllODOY+BZDYOQ0OnKVFQkAHCmJo5VMBxoVL/JlBV4ly0H3A3+ZwwoHhHPDmhbrDAzxUaDeaLDWXA4LuG3m7r3pkOyn1RZzOUMptTihYVz2dZG7d3YHPnaTZTcxMXEr4Wfb2cGNl24yDeyOjrAD0JFMOJNMy2lx5odZSLFDCpPrsA8yr1FvatTSGbZODX534bCoszgh85WzDqk7j8DnZOZXt9EhwXnj3goBwE6F2GFTWYhh+WA+q6sw1joOiqfF2iWJOaWONyjx7vr6mBBaKUyP1LeAsCpnAAAgAElEQVQuDWnEKcnNHRKpTtPIHtIHgI27HYCl8eo6dkgL9dluvNX9xT1Olt3ExMRtxKNH9+Xddz7hOYzU8PnFBXASHdIx9ri2NAQ2mpfdoQ4ppYwEsWRumAY0Go3V8dsSvns3kY4inBrAOPLFa8+ICd9epIDKbYdkDO6RGksMYSxtMCgKLCqCI0v1QzRSwbWLOd1BN9JJ2Sys1grpVzGcGrYdkt21WPaGDhsKQMXaQeuQVhdaFaQMEZHg2MUc1DRIjTsc4fjId0gnQL+z5zf9vrvTt2aHNDExcSvx+PFjfvTkLTnDGTQfWSbSiKAw+6DhZ5eBbWKsTZ2sEWjSpXWV4WeXVlfvcNcx6WqvccYH7Tt4Al5pzBZBFZBIjQ31kIEbw59B+147qKB3H2sHdnKgK2IkJq3GEPFMcB+7UWdsrhjF0fkUEpx241CYMFZg7Lve+yA2dDRvB71DclpighCtojZ3+94IY02DlPwCruwvD+f7NNv08d13Ppkd0sTExK3EB86yOweAv/rUCV1rh4SlkUsi2JjZabTvGLMp1zwkIGk3mU6nNQfxAxUaD8C6pBDGws50m5A5P876FhvpgRHot/rZCVa/uiEpCtkrhrcQBNipF5zYK70wD8l5DlGSAK5+dOx9vJrbDw3jvW0ekhEG/XFrmBPhpAYVZWInqGzeleWUzKH2Rh4SdsC+VLm6XuPLAaDXa56fn+OjJ7NDmpiYuJ2wnLf3AJxvSA2eetArUZKU0gSSZJuHtLLsgOY6pAbrVEZQqmtDg00X2tGbeUhGggDcDC4YdTQHoPVO28yHL8lDAkB0mkSobLkPL8xDEolJ4RjZrZImN1cd7qwvzkOSEd60ziMBleA19CAwSJeUoit7Pg9pAbDfW1Tv8dHxCOeLf5Szs7PZIU1MTNxaBIP4zGkNn18AkopcpSKiVeCxPMvYIR3mIbVWkVyHlAAz81a4z+pGPNut3Aj4HMsOwJD2iJgOKdgNWweeYa3qtQRAWPoc5iFZ7bpWANcvk4d083un7jEYFmEs/oV5SMROtyy73m1k59erNOfZWLR9UR4SFnMONB3SOrL7/OLCad/WIU0d0sTExK3EByZtOQfwTVhqLJ1hd3VtOqTdzq2DviQPKcAh1ZHhntMHH05B0fyleUgAnP2AtZu5US/E10Hrrc/nIQn2SsEem2LzojwkrN+sL2BbJnNSfck8pD5uxFqSm12b+dg1fFUeErDHMnRIxzhuCyUtcvfOjm+eHvMMZ248+AgTExMTtw6uQzoD8JcANO0EuAQAHB8Zyw77G4/5gjwkYCUXGNnMb+/2/bAOepk8JH+29RWGbbdrhL4iD0mwVwiuXyIPKSM2SAc6JGdWvGQekl3l5iOJcL7th4Ivz0PqTZdSmuyWTFxfGe37aKGmnfwlgHPYP9bMQ5qYmLiV8P34Oc6hF1fy+YXlwZkOyVh2ewBddXnZPKSwDoqplSppKd+mIX3ZPCTAWXYCdo7ZmwAeZLvRId3MQwJxrQKuI7svyUPC0CGtHuCvnIeEvmwWVJbh7iaxr5qHtC9VcOSkhksM66CZhzQxMXGr4Wdb5CEBF7jTFj77gru/bB6S4VA4i96XV81Dulk/DF+dhyTCawV1/zJ5SHCnPqt6kJ82DwldpHfKyld/9Tyk492SR1rsHQAnRmqYeUgTExO3Hh88n4ckqYg4wQtL47Ew/zR5SABWM1UFfto8JEA8kBUAkPEyeUjUvXdIL5eHNPAz5CFBuKxedo6fIg8p12Sft/9aMPOQJiYm/lbgwxfnIYXbd9a0/Cx5SLaJEYoEC+Kny0Oy+IrAy+Qh8VpJ2Q/noK/IQ0L4meNny0Ni5/LzyENqcpUBzDykiYmJv2X4gjwkuco/jzwkQpafSx7SpmZsBnwAXpCHJLJXKPbAy+chQZCBnz4PqXv4UVJJP0se0n5v9MaadJl5SBMTE39r8AHwojykes28L0m4JP4seUgiyOE9+rPkIa0d1svmIfFaAV4D1hN9RR4SnH0Hkpuqh1fLQzrI0OjLT5OHtCw7LEvivlQBrrCc3MkzD2liYuJvC27mIeWe0/GRfS/DpeHV85CEfbH9kbqT6k+Xh0TBsvo3UF4mD4nEXhXyV3EHLzbOGYeP7tyGHPFcxi8XYsEr5iERVonNH0kEImRnftU8JPOza7JbGtkzr/ZFdnqSZx7SxMTErceHh3lIu9OTbI414WPXho/dq+QhSZfFzA4sSqJ3s3v7KfKQcjRDImMk5zTuL85DEsGn2ol1O/YFeUhB1XbBkDHtjAhx0CkBX56HxE5hX33wxqMoy8vmIR2+4BFEq9/nEvuM/EuXT5eZhzQxMXFr4Wfbr2rL9epqketyoEGSkmRZdoid0cvkIRHIwzmnU4wl4Garr5CHJNuaIDZfI1Zyw5flIZHyExXgY2DtnV6UhzRGgIdrJghAVc0vm4cEHxlCPTW2d4QWSUWWHqKjL8lDIjshJvwy+6DVYPXunR3xjTdxmY4yHm99MiYmJiZuBz76D28tl+k6/6V/z7bwKhW5uvbvfYcU7jZflodEysKODOmiEHYaww4+0SKEL5uHBNF8oEHyOhJl46vykAT4WCn4+KvykMRpC6T1WxoKXRM6CVS9/Mrq1HAzDwkhuaUAVnFjt+T7JgpFFMhflockogI2k/26fdBVKhIRFL1e8wxn+OjJW/KHf/iHN1ReExMTE68vyIe6v/iEZzBW8Runp8CJ/VJ+fGSm0+KJ2iL6pXlIFFksow4AlR0qKkJzZbAOifA4iS/JQ4LQihooBwy7LdF6M4YbtO+beUiCj1UpHwvWbuJFeUjGp/MnootjwbEjGvxzwfJFeUhwF1jCLCkOtEj0PA4FjOXBrL3mF+UhkZ3L4lZNSyNw5dG9J0McO/ZID+YeaWJi4hbB90eA7Y8+v8AmnO8Y+1IlbOwKjJV8Mw+pdux674t7BQ1Cw2pUQHaYbtS0QqswFnamb/OQskQ4H1wOJKB6uMOGqj2ocdEhHeQhEYtSPlYmfOzVK+ML8pDGU2LDouPwuxsX4xm1SUSWm3lIUGv94I7f3UP6ws/Oa9gqjk0JS0o5iS4385BK9UREAPAYcwDobc+gfu9OPxbLDZmYmJi4nbh7Z0+cnNgv5ddXQPfpEYz0vc1DovSFvS1rMjdA2VK+u5MZbM9v0zFasKo/ZihOKUs0MhSxlcyIGBo8A7urjdb4RXlIfqlgwseaev9JvAaIxYpJ2M3ZnzK+jj2SEBJOQXGlXpQsOskqpzeM1gJuWHa+c+ruZ6dqt5s41j+uZqWJVGqXpbe2BMsOtLwPlCQIqmMq8vTZXqJDevede7NDmpiYuF34AHjXbYM0H8nTZ3sB/JfyIwCaDjokVKA3WbogmwZptQ1C1/W8FTFvUd/vd5htEGG2b8Gyo2BhRyb6OppzprULfQQgVITR+8jQwz6Xh7SAWOish9T7TxQ2sguqN3z2lgE5ILTJhvzdyTGyY0RQuOO3jfrMP8gGjl6Yus0jjWVnVhTqJhC9DW8+HNgHYWuYnqFLzgm0qrw07jyI6rgtZFsOxLEfPXlrdkcTExO3Co8e/UA+Ov1Yzs/P0eu1nfOXlzjemW0QFu+QJEkCsy7WFIh0ad0D+ZLlziXt7Oxixm/eckSHZPocsNNXLbIg9KfWPKwDOWfYmd7IB2kyyHFY7zTykBaSOSzojKoAgPKx1qPjn2AIlfzSR2AtsgiW0NbG69t8EE7fFqM/uOO3bY3EbffIsDMSZRJBft6sb42gsA9EJak5fycoRUQqgHBrsNdH7m3Zdfezs5Gdh/TlIzm3tHl8+OEr/3tPTExMfG3x4MF3uL+4x3BpAABJi5in5xWypqUJcxLmzM6tBinOVTTPnUOCyW1WgWqX7X6/Q8RGc7HvsTthNT6AfR0/3PrYEeuax/RAyCQWWNckG3shEQHr0fFP9Nv/7F9+2sOG1Z6REWNOn/+Z3ihGk6sOyZndlkTrRcUeFUsvM3YAYmwHoGMR0RxTSWsTbWRHIZN2th4x5iqk0RXXPA8HG7kktpqWDOZnabE9krPsgB/ig6lFmpiYuEV49Oi+hLFqPz3mG6en4NHCmnRpgrzfA8ti5K8qKtnz5MITNDokQ3NDAgBiabHGsqMIkRVYghE9YoUA534Pipqgdxz42B2S7EwoK7Ks5j/B5raWiUab4Lf/2b/8VMXix/8C0SAZLzzoeC6IdVkusIDMakZB8exWDnv4FMVcz/7bMjcAtbcAQFQzyUV6y9iM7AYa0GJkl2GJh61LeNlBkkhpIz9+J8w7Ra5XVwtgO6RX+HeemJiY+Nrj8ePHjLOtXl0t15cXeXnGDFwB18AORvoaD3D+dAUg3SnfAMI2aGQhKcnOheQiqnlISTcmPKFOXW2DLDdcRIhtHDgpKjI6IrrUJ54BGHpXkzAJKMRfyIgkUnkCL2jEUMRuPIfMNA/xFoSLiCSj+DmRXRXcJAmGFmmNmBjEBhFYHAWcBE+RRUSWqNbJDQDT9tNsIjkpq6hsiQ07HAE4tvudnAAAnmrL5392d/noP7y1PHz48OAjnZiYmHgdQT7Uf/5P3lrO/+zu8lRb3rp8A8croYHNuiOEsaqnb6uyoUtrlKSkudgliPRFuiyD0NC7W9mpp8nGRM6mX8M2aFwXV+ocABEmgktwCsL4Z7wRJxqs7wviNcjrX+efwkuYiZScFhE7K++QMLS3RmygWShkkIv5j481lDzX8ahVUacTOgV8cye7wkyRpSp2wbIbSGSJhokrBdzcGlyLdHlpWqTNHmlO7SYmJm4FfCceZxsuAODSf3h1QGjI7KwIv+/V6SYhI6GTvS9kXxr7AlVG59S7iKr6xMrXKi7RidM6zvaDERSRSWQhlpvRQ9GljIUOGBZ19nMReg1y81aVH7mC1q0UzK1BQr60Fo7xQur2QaOLYrAwuLo19MPHrFVSPXpwk62R1iTCxM4usqgwqzjb72aeh5jNui223K3h5MSC+nyP9O47Mzl2YmLidmBNMDiD5ivpd/YETtY7lLVDirOyypqSoCJL7X3pIkvrakQ5wFK8oa4xjZEcxdjcN2d2jqAlkItNuIwXDfEUiuB/eycDYNQpjrXQml4OlR8Bw+BHngBcwj7IPIai2YGLmtZLAaJKhqG4cBjsQbIAmRv3B/iizDyHfE7Yu5v4ASbIWu2DDjojAB3IKjkrSm4NOUZ2UprsSxJcX9kdLy/xBk4BAOcAPnoyxbETExO3Aw8eP2bYBvV6zKfP9hK2QQeUbxipQQVZkXKXmlPvS2sVKaLLtXNEl5urzqB8WzKDMAwMDnzs7AhfABpjLrqIDeVbN4xwuxi4jx1W26Dw7zYLuqSyGdkJ+CN/giwiWUUR7VGM+jZEB0CAA2KDrPZBlh5o8UyiyAImcf66jjyM8EcK328zWI0c98EBaZQI6jNkLBlIYFZBbqpLFmQcYdgH4RT4JoAzAMB7mDEUExMTtwGP7t+X+99Zv7cdEoA7AHCFXtPSVJeuulBkiehyc/kGUspYT1fcICx0BhdAoRBEKgMtfA9YKFhIWQTDqscYdgCc9CYgJVwaRv0Qa13WQZ6lxYpI7uTi2561Q1K1+R0GzbtnQc9ikU3BOTe+g5s9dBmMPSLia1WtFzP3V2/dzEJIBJnoTv9DUnUH2RhIbkZ20SElNwEcfhChRaoYJqtcGltNS037peX9cn15MVxw9xdzZDcxMXE78ODxY3705C05xzn04kquL3tenjHXvS5JjvIOwMhBgrncoImIdKkNlsKdnDSGBKUSbmcwRnYgnXGXSWRCFkKW6I6io/LD3zJd7Ua56WMHd2lw5WxobxeyZxFZ3KWOkLUGKQD83XdOnwSNYWWQjxncAvYMyHIgvPWR3dgh9T7aKbtaCYs7j9vwr7qnBwoyuyySNCuAoH6bfZDBQqTyyshoTWozB9syLsSa1KvrNYaiXl0tzy6fLvfeNKYdJ9NuYmLiNQb5UPEA+Y10nU/17bzPp3m7PtrjGhFaXqs62y0MqZV5HKqUSI7t7BL6UOnM40ymLNZf+LFpVgYCRrrDSmjYLJWGBsk6pO2PmQSSYf9hS2gI/N13Tjcju/f+xTUF//94CeuB4D52jOBy45UzA1jMp261jhgGqxKEce+QaG4NEnskZ9gF9x0ACGaGIliRIxcpoRPNKIvm+p0RJqvxW4Alx2YeHxn1W66L3L2zYz895jnO8e47n/DR/R/MPdLExMRriw8/tJ14dEfAxcbl24L5liWxSJKct2dkRc7eLSVgsOnQMoEsCZloeRWMuoS0m+foSvl2/VCkkQ93Ooaxqrc01mwIEfPBDKz3t7bKWha7QQDi/5P3/sW1v/x4uf/HKhF97WQd0nopgxK+XpxgEWIRcqF7GUm4i5MiYumC6nlKgFVdo30DgEjHxkIorV2SArlLXjSn3M0REAAQ4tgqKpAk2AH7UuXq+gpXqQjbQk070YsrsVykj+XBg+/MPdLExMRrC9s8vIcznKGfHhMAwp0mCA1SmoQGCdg4fVeAvS0qKXeRhRYZYT1EF9vMOKHBU1+9v7jhjjOyk2JdBIm9E4AkIkZmWzWsB48302/XIPkKynStxrDzlzCIMe3sTgKan91GjATZqKM8hsJdvzsAVc0UWXxHZBkZIrRdFwFZRVcSpIbh8ODEhm4fEiX2SA1oDWgVSZZFBVmTpj2xS2AGG61PbTx21+9nqcjnFxfjH21/cY/B35+YmJh4HWGU7x9i7ZCAOy1sRq/MIGAHQJKkyqwNWcHcxSZOyX+nT6pMSFDR4dCgG0KDERjMiBS62fEDMrKTrCvJKt4BETkIDc53wPZPmieeOTK4Bskqi62aVPCn8SKbYZ78V3hDBUJszieI2KNwaxh7pCGV4noN5OoaG4wMkYVgFvbcRwifjqK0toQtKi+f3yNhNQRsTYJRroLchDnXtCQ5yvma+Zd6TkH9BtYwq4mJiYnXFRal8x6AM+Abb+KN01MswpyvmVtNy1WtSyvMimYGNz5TCg+7hmqs5d6lCcVcvuE5SBtCA0hz8rFUBislltgg6v8Z5dtYbn3j4iOgusvPSqiLxPFY5CBmfvZjoyH817j7KEgq/b/AsikWAJnC7LM7mmjW+HPehxnPfKvIJcW2XWsyINC3FRWqktjFWBZg3oqu1LyC4NZEY8SW0JlSBtWoH9s90lYouy9VcGTO39facxAbLtOP80f/ZBIbJiYmXk+QDxWPkS/Tj/MvXT5d9hef5mv0PDKQAOxcgFRFZZvaU902CA2rBsn376qwad32xboIO7MQuXUuYh2Wy3LgERPBjhMJJapGNNLq1+MXH7ZBHBokRGcFLCAWlf5f4u7jkO5c/sQY3qvJqkAyiIVGYli2E0FiFcdaT7UVx7rvw+pKjm6UcolXpVXNzC4LBZmgfd1tvtmi2KSEBmNF5I3WFtUs1QGAS+JuyQSOnWlnHH0b25kiaVU5T0xMTLxe+OjJW3LmZxkAy0CKkd3SaC7fOyMyZCBiJ4AMNNcgpVWDRCHZnVXXmzHsIAul5/Cl0+GkYxFD0LBCEJh/XLhnO8OOnumHsUMKDnam5evZf2vshBEsuPxJXNcoSO/89r/6U5o70ji4u/Hj3OPViBvhwiDAIgrvojZV8SDbyKtwX188bhfz3ZMI1xg/s2yNrGAmkHvviwpzbzWPwl8B5DyWdiJNwtPuKhXB5eV4ujMA777zCR9PgezExMTriA9NU+kOdrh7Z0dJixjDDivDruxtahQHZUoU6dLBzF6zwJ0bALNk88iJcWaPc1moaqF7Ya8dLt8GF+5ojOzEWyAhRRfAh4bECHqNqdqN2AkhcPHOb/+rP41n3pIaCOJP4ANBAlBRyPD+lnEpWL+B2YtbgQKR0Xv2H2GYrDqlbryg+VS4PYUOYoOiD/GV0pZvSd0UMGUokKl96dIWFeRUmZPqooUZxSzXQ4v0+cUFLM78HB89eUtmNtLExMRriQ82u/BvvImnz/bCo4XDMghAb9ypIPfK3LUvipK1yyLUhJTRoLY/6rTY8iHJUcu26zIsg2y/b/F8L2w0fIHDjhwBfiB2Lhq1OyDajMOOyS2E1rGf4k82+X430i6EfxJsvf/G3vv9anpd933f79prP+fMzBnSHjIZWzZJO5FvyCsBhuKL+IIBLDp/AHtj9NpNAhhILMuSUYMj1GiBAK5buS2CwLlK4cIzyVWD0DYCFEZstwbqFrGtiRENkkoWAg1M0qZ45sx53/fZa/Virb2f5wxFiT9mhqT1LEiamTPnx3veM9r7XWt9v59vfygh1ctPlckV61ZDUkVnuTOCCLrSDvBcgkGxFqLnl+5oipXWfZAtgvXd0Cxw6a3NoBn7mK4bZN3NDwCM0LaHzmVf235fJ4HuFXoiT+vVstNNabfVVlt9HOvWrS+z749qu18muaxtn3QanqsR2uN4YquhFz6+YNkfQcwbWpz8JZsABFRVZOQRXfh4A+gGBb3SPfY/HAghXzY3yzZqfUlktqz3UVtmKCEuNv/j9dd64EKSP4Z77Uq7bmDiQEBY/+TjC5jHWyRdSsjNVzzG+G5yKFeZ8RJd2ACEEs/Mae6Br1gRG5oJi4uXwiFs0OwGu7ABiMHkNAGQi13SYD0BuPPpa9V9EzZstdVWH5+6ceOGfOrk+7T7jxag6uzAMSYcoUdO9BVGT4ntRIbggcbfFcTZaoakfGe0hJFwTBaxFLFbEon1jEOjz6B3VindUzOQjYUjGHZRaZ310SN5XlmRRt6hPl5J+TYXkvCPchg35oDuXoHkDoHufaKXX7ovsRIb4dkhLe5ZjL2X9/tTJL+ZjJUlRIuwsBMb0rwlzPTyByGr5UKThgOAffqRIopCibMzvHV6Ot7nk6dvbH6krbba6mNV3RDb90dXT05WhIaeBwesGXYzhSjuJTOQgitgXlzcuzG2dC1AJHc7TB3JqgMp4o5+YvetSv4xva25trFBkZPAagMhYEuid36Mp3ANnncLFcg7Z1UXLqSrwB/n8se7QTb8SA6ASqI6JDub3BldlHqzm12XhxaXU96eHF/WwjU7spFGtTBrCSCMJ5B0FS0qZHVaNWO1xtoa0oxbOAGIPdI5gPvDxdxNZHhhU9pttdVWH7N6BQC+AgAQPeJby2tsnO/OoztKybeTAQ+AqwhrFy8IXY2ss2NaUvZS0AAMwvcI5hP3zrhDGmLjd6s9kkgIGigXJN+JDFIS1eLy6c3NAsnujxbwq8A7d0jXfuLzbzrxZ+mhXQUpZQrGsOOOyjhzLwz/UsHobhbOueVqSVKJ0bORuIozN8txH8oArQJAMyfypm9tDlAgAGBG1f5NtNJEaplaaXOpcxpkJ7msR99zoj3S/FMn/1a3SPOtttrq41DuN+TOq9fqlfZU6f6jSU61qVaF65XjI7W51HYIcRfmGT1yYl6n9rTg3hQxdya2rQsa0AnfnV2HB2LLgRG4ykwFd6+wIHYzVjzqYQtSH5rwtP/0WRlTCrFsl9yAr1/7ic+/uf6e33Y4C/H/phEWeRM5vNuK1k/WAhJKuqt3JQVF+tJJARvChmDfhdkqbl0Bc5EWYzy5kB5rboSYlxJju1JWy7pSPLT2/QE1P3SlXRpkcRmwtl+N935kS6PYaqutPja1P33D/3y6QqDnHyXie5cwgCx3c2giGjJygrQLq45mMnygq1+izFJmJvBY0VSCSnhxZ1B3Ojgh8pEulPiFEFeGWFvynojhWGgSOgi83zUPfJ4H30DK/8mY9QE9+3zlRRrJf/1tq8eQwoaw9A4GUkgiLJ614ZfqJiw3VwyhQ2KGzNUNSmEpAJqRpdC70m7GDDRSi/kArSI719r8fAccT9VxdoZ79/cUPWL/4W430lZbbfVxqC9+MeTe1wHYybFb2/tIiD06xlQjD67WaXgytZijuLuLL4TvfhGZCxM+kEg3T0MsKQqEoKEnxBrioOcqdhVIwkFvmVJ+bd63PB2ASu89incbUjY3eWdUgL//4PesD77BHb+bhqUaELzs0joiIr7iAflVCcBD/Ycepc7cC7l1dZ/nu5BGXw8i0aUPBkOREF8YpN93dGcVthj7aYlvs2UH1QgUQQnkuTc4dC4oR20+3x+opRJ2BJt3DhQ8/wKwRZpvtdVWH4d6/vnnCXwDdwE8cXrOewoeVed5cSqOYHOpRlfKXMt8UKmq1mKPRFolijqLGk0FJaEGhpGqgOUEtpRDs/QMpEUonUHgnR1HWHQ6Ky4QJAMdsuPIkCVUc1R6JJFDoAR7hBEA/t6D3/PbOqTn/sblP4RwxwwETEPtaIayBeuLqtKzL9xD1k0wvmnrtiqPDmkRbKTuPZzAETBL764kc2c3yJoh+7GCstojaSlhRl6p7QZqfQIaoQpXNS2TnOol1dr3SC/gdrl58+Yqx3errbba6qNVfuOGvIDb5azswn90dSqTXFY1LYojbTxXryXP5BzX5XRuBuAu3tqc8NTwdUYgH0LQILaQvM2C0CB0WKfnxMNYp8QCCEdrFzQAhUnu8eE9TXV2KLTTHhSR5YvcG3Rg/9zfuPyHD37fbx/Z/cjP7Nzxh57ovGTaZSh5JzYMYQO7cVZS8mDB3KsQybhyhkE2w/ecQXZw9yqr/PZQdjiFjGVb7pFK10b0X0okyIYenOx7pC553O+BTm0IaeRlrJUp08k1bhihrbba6iNdryzjulGX40wLdd0ReGgc/qN5znnXDAVAs9i5Xzw+R56RmRAi6SyNjLp+Drsz9kdEdcYqBUy5NlndTEVEOQLI0QddQ20dcKFhSxrfwkJZ4P/dQ/nW9S0VZwR+r+coRWeUTLve8SQ1ddFLdMpr5qpf2CPlO3HZI8nyPagzOy1PI5azsu+RCHU2JaDznKYtm/ttHE9+McecHVKXf+ceKeoMwCnWe6QNI7TVVlt9pOuLAPAV3L17F3Zy7FIm4iz2Rz0dew8s/iPVBKoqZgAGV6erNah0IAGgbsh07ogsp+kU97UAACAASURBVI0zOHb4FmerdfCCIdR1K4MRU9SQOyaXFfoH+V4czVC6YpMP1NXbJN42rgPe4UIq4r+PkHFXQqqTif9hxcDaxd4GK5NsjPc8ZnQZL+jdswuDIC6u7g5GH+1lNpKZjVjzHtgHkA0NRVIzX6Jnclrt4VMmVgsiC6TnI105PlLFkTbVwAidvqn3z+7V+ckr9c6rG7Vhq622+miW+w258+nX69XyrD5x9aQe0XQH06b7wAXNh2rzXAtdhXHBRHipFeOshRYv2JsTSWsYoGtcPPQNcf4iu4UuaOjM0f4xDqDfSrEs6jnmDlucQPlu6PhVAFIdrgBUwgyrQmgRf5ug4cHHNkrr9PvxheMqgYPWaXxAhVtE1cInZKYFhRpZSnETg9Blj0SQ9At+JCDic/MRMAOhYoYZjCWRaLS6DmK9R0JDkG1bGyKFeRZWxCuHTv/uGCEglCrXkdSGrbbaaquPYn0R+ORzT8UL89EdXYybABC4oDnjyluchQqF93MS/cws8BxaSQGQhlgzRgyr0CUPZnsgtjzz99hZcoGiY/EEqrr31IfewAzYtpqjLkrt0CR0P2u/Yx6sb3khfeLFz75GwX9YU1hTVsHxJ3CYnxDLr/Hb/JWAKNwz0jweOBECiD6uC7k3Uv7tlcISuCLhOjiqUdgYoFUAGdgn8bx0REYN+d9CbVjqAtfu5HV+ccMIbbXVVh/FeiXyj/of3zoFlriJ4Nd5bQ5vMceac3UBxYwZLfdHpdCDZ9dAxuUTVG+hE0qYkqJurmHBYRVh6Z5Rz70/EukG9woRXcFSU1Qx5N69iSF6JMWyYwrhXdwi/+ETL372tW/1rX+7sdXvIR2xsS8K0R3ys3eOxAgsX/5qMWut+8R1jiCHWyodwaHwYP5ehN79SJ1rR7cigDLbVCFrybFdIas0aEE4lhtdldBG6FykVrjuzk5XKbJH+lMbbHWrrbb6iNXNmzfL7VvQq2Wn96TpJdU6iaW6zrXNh9roaq1OJlLL7GoyJSYIWlirwHU2q2xQN6lE0d7VRPfiGusQSasOBx7IwaURGN0RMnecqwsoodrxtjW0jj3zKP48pnnLx77D/gj4NheSk78LIIyqyNwLuhJUpLTb11+PiAfHsCWBdIosqy1fzx9Jye8hMEKZwRGLpHgbco/k4WG6YF/KFNkFI7RE97qb15oLv0Mhduc43x/Yx3b4nicxkhe3Lmmrrbb6CNXLt297zz6S03N2M+wI4wNwODQuYoY0wzYy5N7uWHdHYm5uSU5YH/i27I9gEJFoDtwCcGCLIg9AjtpyV5RCub4/yu4oj/q0JmU4n7upwyvTKpQ7r999p+//HS+kAvntIZBL0GraqNIxxerwivAgKR1q8OqJlwj0RNLCu0bdUeF5U4eMMJBBSGIseprfAw9LFj9S59oFwSGpDam20xLUhsMc47qpqvfM+UiRPYHNu5G8uFEbttpqq49U5Zl0FxhxE/d3B479kT2wPxrQujgHmxkLMPxHAWpInuhqf9SBqp6YUsNC13F6dUDNvYJxpgtRIKJwCzp4nvPkyLtLD6pXsvcJ3hkROWULz1CB/PY7ffvveCE9+5mf/88U/FF8Mr+gpcuRoWfIOvKK5KpbSjKD9zZoUWgwqRMhKh9SQzqrADVQFv2btkqG/FsymVBotcu/aykqUBWGQ3nvmLra7piuJnPtJtmWre98fl6fOLtXz8rX9M6r16pvsNWtttrqI1ABU3299jC+S6kQnug6F6mFR6ql1OOpqqCVUn3QGVykFkqVjCs3WnWTain1JlmbsXZOnZsp6BWGCrLSWH2kv4YZlhCQTENPH+vFLgoc8J5OZxjTMu9IBbBff6E6CJbQHz/7mZ//z+/0HHzbw9iB34xPFg/APCeOy2NYbEZ5b+XbLggSIH0GCSdkKDdkNXqExE1NOHv7OPTtFqSHSJHNWPMc240q7prdEyk8ADm3A4DjVKic4erJSartLljOttpqq60+3PoiAPwIehjfOs8NOB/ZR4fDHl1d1+kMnV0XAGphEfFulekNwJIOu5Bx2Kne+aulJNosNQBZdPf+5xGNehHoEHO7SO0bkvDVe+QnijvlnerbXkhK/U0A1UGFo67y06sDFbCQd8Pzz9HCearqQqUhywN3LFgK6aF+y4NgYoSie+SyR0pvUrf+NjOiOZEk20YL+bcCmIHDAah1WvZIOI/PX+qFPJH96RuOl6EbSmirrbb6MCu8R9fqJ58LS8rIceu7b+CCcrimuq7TSDudobUZKPRmlmKERbAwIKtAem/c3ZzdajPenPsjMnP2kLv/OIDDUMv1uI5KMsP3TAEUoJtvF6QQgZp3yjvW2+Cq6/rBa0/+/n967fW3CD8mUnThNkjfK47eqjfq0PG8ed1rbrzgDD+SpxowCXnxySw+jdBg7KsxuplRDI4SUFVncwFgdEgpTifMBR73npsYixnabF4IlImY78Mx7aHTBG+nvj8H7h0f46knr+DOV4/mlzeU0FZbbfUh1q1bz/MF3Pa7X79S70nTWaGTXNa239dipZRS9MBZG11NpBLLuM44KymVhcWNlQ1FCCWKQmzQGZB0bxj7ZVJZRB1WuhUHRPUM2YOjRmRQ7I+I4IgDhJmPVY0H7ZTrhNiQ0y3w7Bx/vfXctSe/pf+o17ftkPijP30Q8t/kn/roDmNctzYieafcZba6x8MZ7yKC5EmEG3Y0ShxtZLcHS1qEO9sOQAIB+5fNsV1ztvH1xcMkq4AqyDDJupcUNhyH2g6XL3iSttpqq60+7Ap13esEgO9F+iYzaoIyc3+YOU2rD5jTDAugezFbC0FDo7GZcMBUV9WPUMs/2eqt/e9ixLeSe/cPDk1AqPXIJf+uRzoMOgOWhVKPrIje5d/wR3/68O2eh++40Kfzt7r7FqGkqO6WGCEUwrT3SZ6/ZLZ6eKQilIkwC0RrJitJKj/62M4sSA0OXxQfI7VQEr4aLWhDi7FdoZeAEUVAOxQ9I8ng2gi1ea4qpRa6zjvXpvu6O1sI4GevfU3vbJ6krbba6kOqPq67Wp7Ve9L0jKa7M9N63zVQQaUqoe0Q3VGZXYfcuwRoupthAfPisT8a6bCr6HAzZ5d7W/JGF5sN2FMWRjosEhI30EIA4MgYodB+o8/KqL27Ikwdph1BB4cW5299p+fiOx7Cyvqb7jlD7B+0asXi4THk30hIHxjJgo6JcYmlZNBrRt1Wd9YiYdJyoIokjiJmjqH86IoQuLrF/ooCVRQVFA21XeR+GKBGRAsrUuPnkCihfaQrHncJeBLAvxfA0DZsnqStttrqQ6hbt57n/vQNv4vYHd27v+cF71FHBSEW9VDAzKo1Vkt1nHSYKlmdViNHjtUL1NF0wFRFtFDiz0UizVt6XET6TSXGdWaYelw56ONc71FDQNh7UkOgI7AoXKlY3YQOxl3ynZ6L73gh/cBLP/tnLvwyh/MW7vAVd4HwJCBxfUvlXw1le/aOowVMtlKo7YKRFLDVcPo66JHxniM9mPdgKUscRvFU27UZpHFITrLczQdKKH+ox606y4HAKf4CwHVcx1nZRZe0ScC32mqrx1juN+TlF26Xp568UoG7wPc8iSuXJu9kbwDAofBC9hEALTK6o26GRVt0x0KJ87UBkgenWXRFPsRj6ft0QMAM2RugVZBJZ5DFfzrk3rka6uO6FSIh/y77LeRHAX/yAy/97J99p+fjXR3AJP51EBricfpIXoorkJDxcLl2LK0wQuOxBlTCRwquZLgF6WYkxFP6DYhcfHhuTKUfI+ed/RWCVGuuxaRKdkmSSCFrUmVyLZy08EjnIjWC+y7rJdV6f9J6HVu8+VZbbfX469at53nnq9d49+5dPCNP6/70TT0UrUH2Tu9Rrh5MpDpZW8szTrI7IqvYrEZWAdSd6eHMMxIYCDeRboYNew3GuC5VZKT3U73v/OORplDcQfEBLl0pChIolDdZXnT9/FcIX303z8e7upDEcSvREzEfZAY4OdQs5N9BXmB19Mjazk3KX8kKiApRnKjh6o2/J7zAPfKQjGGONY8k2pQZNo9GJ1AWTqF42JEbSnZPKGWEVOV/oGp+OABkUMHPd+ejFX7r9BT4yzdxF8B08jq3ePOtttrqcdbLL9/2Tz73hl+/fh1v6hGvnpxgIXufY7/bhX2FherFMWNMg+YZQGuRflAKgsuQZG8AkPAeEZ45c1B3U1nZczyl23RUuFc6u3Q7MulWku04i710A637cr4D3QrE6nEfjPRYeL9DvnO9qwvpuZe+8IcG/EfggY6HSD1dp3+PRD+Oz77ukjpntac9dVpFHzW6Za8l2VY6eysopF/I8XBjA1BEvEGIFq3rPM/xPHR4RWaFxEJwrleOkTlJ+zoJtF6dSpAbntUXcLvc2MZ2W2211WMov3FDbt+Cdql3bffL7uxUm2odYoYSgiyjq3POYNJ+1s9w6WZYoIh7Q1u4nwFQzfO3w+niv9HvDGBbeo0iYGIc8yKgxEjPBq1HkJ4ekuvBWF/ZuEu+T9dlO/Efn3vpC2+LK/9W9a4PXwFuohP6xgapXySr3w/BXX6/HbaaSyN35+CGBxM9blnGoqzfvvQUPHhg0Zldk5PVLT5GIk63BgFcqlurxWQJ7jOrI00WIQHfP2CUvXd/TyC0DdPJ69zSZLfaaqvHUbeef55d6r2IGS4vuyMAXovXOkHdHPMME6tSrHSyt1urs3WcmlVx1vVkyuG6cEVNBVbdTZt5dZQ6jK4pbgBRhxTADH3RDyBpPb6c7/0iw4UNEjNVqZMaXAQ33+1z8q4vJIXcHIQGR3WYMlq7dOJ6SMFjzDaoDTGaoxKoIqJdbRfvb+reKd/rXVJ0RmuNvCFDaIHoTIUuHbTq4ij0UhQuSQBvpBbxYf1lIQ8xtis80nnn2ndJ9epU7knTq+VZvX0LuknAt9pqq0dZN26EmKFLvfcKnU4uX5B6T1X9cGg8HPYRRqrZGbXGGXOKGRArCwB9XPeg1BvAgKnG77PP8Z45kSM+Z6aAM9XOogxDbJB3Vpl2iFM4Sd6Wcm9Wd1dHKqST8KMmD/9C+sGf/Py/A/iVsc5C5GnkPcigFYVRqO+8HIDR8+98rMJIBqwvk2SZEewSmgeKuIvEGzsevas8DEiSrdNp1QCdJeTlTleJJZ7K6JLkYrw5oXvscHx0nLukM0iZxg9vOrnGTQK+1VZbPcp6/vkUMwAQPeKVS5MDKfUOZB0ad1okhVrzIXLg4BoZcJJihqJGjcBTtypdxIBQJps7Q6ns/frJF//rniZ8Rh7/s/hgYYB7NAbEYIuux2MEV25YD7oQO7rOAfIrcXe8u3pvnQD9N9b3rrmtpnbJuQOLkGMRxoinqHBMEVfhEU1hvuApUvTgcKVbqERyJAegkKJEju3cqjOED90oW9yC3ZQLPvYc+UZqyiT72A4TMOEIPd68qdYdbDHKdgn41iVttdVWj6Dcb8inTr6hneq9P236zdmnet/1uFXH0TGmqs5DIbz5PLqjKIUCDWhtRoOHBWYVU05aXFBgLRI4ITgmWPiTGKmvXdSQY7sUKgBJAbc4kz2nXI4eN9SjyoeYweIMj94qzEjsceWA/8Z7eW7e06FbWG8xWzWS+YAt9z39TgwxQiYD+vgqY5fkAyUEYGjd7e1fLvoii89nqaMPyWELlBCQX2n9IIFulBVCja2a9WRFqe3gej7Ptc2lzmVfj1t1nKXiDotPduuSttpqq0dSebZ0qjdwikut+n0AMa471PN5ri3TsQvi186tM0Ajo3w9rgsPUpyqBbIwubsC2+PI7TqELuNekRl8kHFyL8RMMFoh3LpyDUzRWdw67PuqGNf1hkQL67tS160e6ruvZ1/6uT9x8E8zPTA+QfpyY2zXfbnJleiEVYvvIK2xRCbJxudBJshizD2DMuuV5ilP9JGHFKIHUcJK5LwzM5WkGlmFRXuX1GhEKa4lkhWRFKXFKHsMXAJwGTiqtS5dUuCENgr4Vltt9TCrY4LOytf0/tm9Op+f1+nksrIcyBWZYQIALnTv4NbNUGicbW3GOPNQtPuRQtBgxREeJE+B2JI1F/QbBKAtzt5k1/XMOqRJ1LuAgfBYvQADctfz8HpjBEIoyRKK7ojkv3/2pZ/7k/fy/LznsZSAN4UoCKGCOqndk4TsnCAXkOOh4CALM1UQHuYtSteqh949qLSo5vHzWGahccMH266LHFYodQBFzIuIt+YsJWCDxcXNWl2MsgctIrXRVedS23yop2/ta9vvq7eDW9u7nJ7zOq5jf/qGv/zyRgHfaqutHl7duvVl7k/fGHlsfXekpmXeuba5VJVSW5d6N1azUNZZBOwESDpfKhcPP6aPTmcl9c6pUk6t1vFG6Oo678mw6T1CXGITfIgXQszQCeDZ/UTUhI8z3j28RxJ/X/Osf9dihl7v40LyX8/Z4NLDZR7sGCH6Siq4Eomj8x36V85P0d+xA1cl30mELiKr53HJ43C3SljpF150ST1hdhE36CphQ1UxULMTgNp8zbc7FK17hd6Tpk89eaXi9qa422qrrR5O3bx5s3zq5Md1fvJKvT/dq/XqVA47rdwdeF4OPD4Cptoc+8hzU4/JjpZIMiCFTqturYpJVbA4Y6cOZ2Vy63xlhBUREIzco5WQoYNUAfRQPQAINIPTgRQzXKTtcPnNmmca3VHfHQHsjqVff6/P0Xs+bJ/5yS/cAfE749F0lNAqSTZMsks2hgMwdybbKG/XBKkubWV1gxaJEV3cul7dvEbLaZHTIe49lsIgI90QgiVBtruXkeF9xT3mr9Ajb6XvkqJLKlWTAo6zM1xFRFPcBXDnqxu9Yauttno49fLt2x7dEWDzsXeIqpoWxVGmE0R31Oa9BhotYsgBRclU2AAy0BuNQIFnekIcgNE6iXSpc8CpA6TKQslJVQepkknaCfuOkxW0QdEBAGG/uGIiR6QCL8d1TBRRjPGAvBp+55mf/MKd9/ocva9X/4T8GletGdgjKTo+IhASeamo9C4mvunORAqCeEJXPQh/I5mwu4chPrLbibelG2KYwCwo4MsuKbhPdClmrEDMYZcMEeQyCcBRBxlexr7u6nx+Xp84u1evJr1hg65utdVWH6T67mh+8kq9f3avHtH0qNYgL1wCgPNQ/+aZxFQFq5ujNQqhvTtyk9ynS3W32KNnCN/IOwpKA/oaXxDREynjDkqdk/1iSVlcsutISWg36cUjamic7V1R7f38BytijTN8qoT82vt5nt7XQfvc37z8L53+l0jFBdEjKXqXFJ4k73yJvEolO6mwLnkG5PaYXCIjZYsbBsfOnZXJtwNQIuEwR3RwFZiDIYowGotEHggKHW1GM2NnP6mbS4WW2WOXdHAtUytdcdc0dklXLk1uJ8d+F3cxnVzjree3Lmmrrbb6YDW6o5NjlzLRW/V633XeB0TV5rm2Qyrq4NoacuOQXGsXR1EUhM2leGYeCYDSX6B78ulMnaaApeUGKsJCUAkvJCvoZVHWIXYmwQp1S3mCObkc430PEzbS3jHFmwYqyEl/47m/eflfvp/n6P11SD/yMztA/vkabWduWMgNIXTAWtveb1b60LFHZ+WVwlyYBbkBHbk0uqQQM7g53Zxd1rCuIYrwyAMxs+qUKqUoXYpQ1djq3IRQLLukfElyvsPwJR12Wi+p1ifOTurVstOXX7hdtl3SVltt9X7Kb9yQO69mdzRpnc/P6w4Wa4KsPQKiWgHMs6TaWNhXDcvuyBZlnS8qYzTA+tLCnBEokerlXHO4Ow3OLpSLaVRm1AE6vEdgZY8vJ1SA4r50R0jvETIPKROFvKvrHOV/jTvivdf7PmSl4tcYuKBBALcLEoX8lpe35E1KXyTgefuscnZHvHkPUspdEs2UJZEVQwKeMkY0RTfDrr6jAnOkBHwO9jekWOm+JOlYd0JrKfV07v9AzvDW6SmiSwLufPUaN6TQVltt9V7Lb8Sobtkd7XxN9J7LvpZU/RZmImz6j6RYAWaorpV1i+9oeDBj+lYJGVCBPlGK5ARWyd2RIPKMEirgY1x3oVVC+EZT9BCy7q5gCC14746EAhCFiZATQmXC+xrXAR/gQnru73z+y07+wVqXHkqLkRqIC8i9qOr0Snq2jlJBrxBZSQp9pBYyd07LIxWwSxghgJHmHl5dFxcAvUsSQI1aRYsaigpUhVA00lO9QgrBwu5LOj4CFK5NtU4nkZd0Ik2vlp1iq6222uq91ivxy/zkaZ2k6SXVuhC9pQLH2B/miwF8/bRppFDVW3ZHLJEImysLIatkMGs3wgZ2TSASG6D+MHI3BGeIx0CvJDLB2wNYvRaYOapTejJs9yQBuWNB/32EteZlRjj4fz33dz7/5ff7dH2wV/zuv4YxkmOgJbjWrK8yMWJM5/AMhY0tU3waszGWjF41NfW2DOY6mdZXJi/Cep5SUMDzB+R0j+a1RYpim4OxBADFvWQkhc2h9V98SaUCxyFwODsb9Ia7AJ568kq98+rrW6rsVltt9a7KPeIlzspOr+M6/gKAtb3j8mUcT5F3FNESMakpGcDXOZwAEBDVdcSEeEEZibB5Dq6MsIH7iWQEU1rYZMCUgKUij+Rg/NCZaanxkj+4de4YsQzRHBjCr+QB0a7s3qVsJhjepPfdHcXX/wB19PRTvwHimxgidiR/od+ly/8Co/XLRNyIqeg57giuXXG4olNls0sioPAwea07JQNGxDkyEAmgC1kvKu6ghlljt9QVd4vQodYJewBlKqXtz3UuUptq7fSGE2n5muVHPsjTtdVWW30X1a1bz3M6uUbgLnp3dNhpbftS573URmijaxf7upurm8/NiNboYrVkrI7TtUdMhPfIYnrUgG6EjSy5SNx2OAUyIKr0kHZ73zl53/Wn1HuJq3CA0TSM9sADopp+paTqRE/GNKGGEPyto6efek/sugfrA11In/jRnz6D43/LDi5uTTJuTu+LLwtZ4IIsjxs8LqBp7YrtbeViuAISjZ4Xmbtb8vMSJ+SWsFZIdklezYCGhiL04usAv0BDGKGCoiZTdbLuWrw64aEREnlJx626H1W3tvcHkUJbl7TVVlt9u/Iba4DqSf3z8/Ma3RFw3GYHzoFD4eHQKAzVr5PVRGoQvVW776iUgKkGlSF8R5nVk12RJxggfEU9bbuZ1+FHAkZ3hNw9XYgoH1HlHBlJEROEImROwUw9z2+mbiDOea+IzuPXP/GjP332QZ63D36wcvpSoIQWSSAgAFfwhtC6h7C9f+Gk2GF8DHS9S2JSwN3Z43bjZs9HnRi8+Fqy2sc1gCXD+zxeSYwAP7bqtKoAUDwYd0itvzeXqWqZSik8ii5pv6+Hnda3TgMR33Efdz79et2SZbfaaqtvVd1zBHwFHdd89eQE0R3tw2JCZIyE6wG5OwJwmAEkr+5gtnRH5NIZpXChkxZgFkZYASxRNwApQg9iA6M74ro7cqV55tOZYiRyO8x9nQjbx11cpAE96SHOb0bchILTlz7oc/eBD9Uffumzf+rkvwZ6X0Pawu5O8xQV8IJlnxTdjHfmkdSFQrESQvTU3e6d7e+S0RQCy10SMwwwBBFd/eh0bzYifD2kkUECd/dpYdzFrxGE1bjPQJKQge/rJKa13c8Qv53uT5/y5zdv0lZbbfWt6ovxy9lrR/rEdK/uFbo7O9XKyA493wE4pJgKQBGpvjqLjLMKoLWwjN3RuHzygyJIrhKuXkptCaIWSO0ezpDSAX13tDhlHM4IPO0APESwXqxI2Pl0UMJjdxTgg05v6FF+Aw8nxL/64Zc++6cf9Kl7KK/yleWXMZJjl2yNvF3yIlkumv4cSe7VOpHCzQAzBT1eAaQiZL1LoogC0gHiEeBn3ZkcWvwecy5kpVgJxR2raNGO7w7zrPvcjDOAvkzsSKFC17lIxFNcxgjxuz9pferJK/VTJ9/QbXS31VZbravLvK+WnT5x9aTafBzn3+XLAADFkV45PlLN/VERqQZfITeD6O0ucULaHLsjshJFe2KrAzoiJswgIojjM17Fi9DzRX9kHnXlclp1aK5xtnbDZx7VzoEpQFC8+/mN/iuXFcxIDBfR//5hPH8P5UB95jOf+x13/D/rt0WX1HsmYKXOUFsjKOjF8wkmodESrR5W/6337jG5SuYhGU+tfTiToYTo+OjxiqCgSMSdu80abTCrGKsUKcIVgRUApjCqxaUUNPDd2anO51pt3vnd/n6vxD/AD/r8bbXVVh//unHjhnSZ910EkWE+P6+t1jqiyffnCuwGIsjdHDPQlXVCXRBBdO1sOqDB3MYFkbqwnBAlmw6uLKHT6o9pQQml9LsL50SQLVIXM4RaOUP4zDsWCBqBq93O4/4AlMDd8YfPfOZzv/MwnsOHdphS5G1dUv9zKunQg3NzmeQxi4y3JDuJ/ZmDh4OY47JKqkMmzkLcJekNcYcJOucuJI8pA2dkws8zJjOrKAURT+EBJ2wt3NC2SC57l7Q/zDxPvzFL5SSmnXN3Vr6md169Vr/FU7HVVlt9F9YrrwB3Xn299iTYS6p1EuilVv08s46moyPYXAJbNoQMVq2xonWCQiCC0JxpZtWebeT0IWQA+gEuMYTLNb6IexAUEIKHMbWKXRLISk9G6AjqA83HFCuNOXmeelx+cemx0xqiO3JUijyU7mj5fh5C/dD0t/4F4V9Fv29CDjicvl062L+ZAeFjUr3h6r7kcZB09tvck+jNRXHnzjE3NbOh3HNnBT2MYonMMA/GnSPf12Z1tjTPJi2qxCuVbpZtdFVC6zFUcaRqWoAzXD05gZ0c+3Vcx9Wy09vPbwSHrbb6bi+/EZ6jq+VZ7Umw3cfYdF8VnjTvSIIFEl82zxEvUdyNYU0RsorNanSdaXUo64BMyrY00fo4AxF4H3VjdZQOsR7dFOieWO6IP3VWuNdld8SSn2dpJLBMjrKB8Iwayq8PkP7VH5r+1r94WM/jw+uQXnxxdvBLCAZCobM6W4gSkgAAIABJREFUPQQHXTlHVL/4YekuzgeTsnd6zD/hXs0wAa4UKICpL9wyb8MhgEASfyfx6gCJFDKrfZ9FFMUQOBSUnNMKVF2sWmtVapplZ9fuTcIhZOABX9W6Q3RJ96d79e7du3j+hfAbbJfSVlt9d9bNmzcLXgGmk2u8C+Beeo4muaxNtWp2M3GWRBWRWuaDSlW1FuuDYlLdxRtmtDwNCwo60buTFML8ygoJZVwG8LHvjhBo1BCNcSjyqgET4RHI1/PLwz2axJuxO8IQTfepV7DrptXvqxDFwS/xxRfnh/VcPtRD9OSk/DMXfDPmjR20l+C90GnHdx/vPm7jvnjzoC5U0HTw7QSgB63JGb8DAHq2sbaKvqB1blM+qTl/FXd3qyosDqjRqjPGeqQFSggakksFCg/a5r0WuuoRtO3jlcLxFASHSS7r/hT6zPc/rXe/fqW+gNtly03aaqvvznr59m2/8+q1evZajOqOaLo7Ox3dhZt64ZFaChlsCBk0DPol1gcu4tEdQUnPUZ1Vipd+f6wRQbTIkwNQCkVpltOmZNb1MmBh1g0qQzQLjkC5SaqfY3KlfVfFrkBjfgYMX5Mb8dbJSflnD/O5fKgX0l/72z//Fh3/dNyg0ckUd68Mc1UFvM8gLz4QX6s5SIgAIiqOErskKtNl3HOVwN5aAY7YKQWXKd6P8MBqGGug74x9RYjWIGa1c+7CE9CqmVSogowc9nZwtRJYoXkvtfKS4nJED7+pR7x/dq8+9eSVuhHBt9rqu6/cbwheDjzQyfc/rfieJ3Hv/p4slU33VXeuVuba0UDjA2fATKqgqFnktkXWUey5o0pGk6fEe6CBYlQHeqVEGqx1j0zuhJxBu+ncOvfYHaXZNa8rAqSb94ygqAQ0xM7JoeheJngFul2HSsc//Wt/++ffepjP58M/QI/0V0jcR79KHWSqv7tRNtdkxJregHjScllXAKibBdQvgzaG09jdnah0Uwrjwonkw+qgQ9xF3GEGgzAczat4ipSBo9ALzEmjAhCqSrHSWuaR5H5pmoCpqp/vYnRX77t+c/Zpf/qm2knIOu989RrvvLpRHLba6rul+t7ozlev8ToAOT3n/vRNnQSqR1rmnSuOsIzqvLlJJA0EkeGgxlkVQDNjeI7M2ULIYGgqq1EdRndEF4nwPTfXUiR2R+6VbupwDSsM4HQyRN0xXRIBgrQQSbKwbqvJhgEaIoZFJT0cO6maCMOs73Ckv/Kwn9OHfnj+8Iuf+wbI/wU5jst9TyGo8HWirGjO8lb0BibZISZ7JIMEHuD18CV5qOfGF/TMRzKDM6LOmRgNZ6mEq6EB6VOCxG0Xr0yCDcU0y84A0MiazXZHebSDq81zvXJ8pMAxzsuBl46qTyeXxz7prHxNP/ncG95ln1tttdVf8cr/r18tO70nTfcKnU4uK3AZ5/sDj4+O0eZSjVCZIlLiaHiOcj8ADQ8kXNdEhkjZCfNqX1MMgOoQMtjoeBZEEMO2KitlHaJLShFDHWO4iFZFHLfLW5yeH8c8w23IwRcxGv/nH37xc9942E/pI3k1P031H7vjHlZdUqImei4s8llWsofzRZdE+irUL7DfvqY30J09sheecMBY9MWsVFIlHzgNpjeJsBIa/Q4TbGmOLWhtzn8UCIFD5npgxoCvNnoqZM5VcaT1vivOAttk87E/cXZS/+jrp3Xrkrba6q9+9e7oqSev1HvSVE7PeeXS5NwdWOkaqrpzNUKPp6qHQwTvzWNU52qc1c2qtVlD5t3G5yfyrMpYCFpTd68h5JKEMNBTSrfKQfLafZ2Z/oqAtCVmLTZJua+Pi4buPY1BI56cfaDnEe9NrndHTtybpvqPH8Xz+kgOzk+8+NnXRPglZgsYhIVMkU08OiJZliuCgwOZ1efIQHRUSb4dx8sJ1AUSSA7waugmqtOiSyqi33JXFTkhpXdaZqxOqWgzaMbi4mgMb1L6BHZtXj7PoTCI4PsLRPC1FPzOp6/VbZ+01VZ/NetG0hieevJKdCen56xXp3IoWuckvBQe6aKq20MILdXVxGoE7ylUFZq+yJB554tiDw5njyaP19mdNNdFXCEPp7GaOdlZdDaSyBl5clSKq3vunOB1EL0z8KfvUQazOxV6AOvSMLD60Ab4lz7x4mdfexTP7SM7NHkZv2zAN4G8aZJ7xAW5gKA3jEyNaA+j1Qw1HBzuluO4fnE5kIo8z6wPpnGsS78ddDNDZzqR0OaY3KKzApxC8WC3N2hhES3KUiKigtAOX1U3LwgTW6NrmUoJIniw7ma6BsXhvN6ftALAJ597w7eE2a22+qtXfuOG/FSCU+8CuH8WrLoOTo33OsceO2jCU9s8Ih6g+YI38tiCzuB5GcUyocDDbxlZR5YEBc+UbDclGLg0WMdW6wAJSGKF4gwFEGAFRghSIlz7vik/LjukAAMElSHuKR8Q1bGHAt7kFfnlR/X8PrID87kf/8JfkPwfsKI3hEqjzydDKZdSwi6xc3cEbdYRkkSwgkkBJ3uGxxj89XiKMbozy/dDZr3H+0m+gnBa7qFiNOeANov489ZmECyFVsVYrbHuHRPmNLGx0Oa56hG0zRF5Hqy7y5jk8gCw3v36lTqdvM5bt57nzZsvF2y11VYf+7p58+b4//LV8qyeSNN6dSqxN4oXqMVKaXOpNpfaRGqt0/h4M6nGVl0y08haRVs8R4IWQobunTTW7s5cSNMCglqKZATEECPEWRg3WUQhEBWU4UNigghIX0+OVq/1I86uB/AB4WPqIz4AFc7/8bkf/8JfPKrn+JG+gn/iySu/QvgbvlBhY46ZG7S+NHNIpg2iEvGkCRme4iT+XUAKASPqPOSQ0D66CzhRdEfxyiK8SWSkKEbceZBve5BfFziIFm0QuovPCL6UFCkmVsvsKmilAtjvASW0llI7647lwHv395zPe3bSs/qpk2/oy7df8Hd4erbaaquPUb18+7bf+fS1elZ22gP37t3fx4tZjVgJM586/aV68zbvtSPJpFgRqrqLoyFGdVqUdHWT2mPJuwUzthcxbuvdkcCqu6kBQ6gloPd4ieB7JpnbXOGevqOMgI0tvq+pDAkuWPiiQxRO78q6BDW88cT3Xnnoyrp1PdIL6akf+5lvOssvr7/5EC5QSZTlG4+k1/yw2CXBJ3dfnjCywln7LDXg5x5djwVc0IEqXQYO0lbfYuyXvI64c0DNAHNjy7wKM6uSWKHSlXytUYu4rQK0Cl29Np9qcwCYd656pGU6uaxXLu39exEpKFfLTvHyNrrbaquPe928ebPc+fTr9WrZ6XUAfwHgrdPTmIzcDxEDcAzU5hOCxLBrCx9zbsLBqjOrLCw9Bba4eBEbO3SWrpBz7aIsSOfRIGAB1mHSUI/gPI1rJ5TKK6tMKOtiZ18T01ZTUTcQQD2bIt9WYy1yAbRaneWXn/qxn/nmo3yeH/lBeQnlVx18DSvncJDAybyVNZZvQ7jQ3+Y9niLjkBzEEDgYMA21CCP7MHovMttYpUMFqE4o4N4JDgJzctH3y9D5A8h02fwa6iLVWqudymsI+aa1OtlcaiP0+OgYuA+0/b7Os09nNL1/Fmihu1+/UnEbugX6bbXVx7P8xg15AbfLWXlWgRUa6OSyVrqelwPPd0Chq0qJXTNdj7SNEZ8UK8YgLwhcAWFr0XzMgsm6+IustEQNmWWsjsHTX+QJi75gfWHulELSnRy6LvdmjUlTF3bnh2BYcBTS91MpZFjwQWN35MSfX0L51Uf9XD/yQ/L7Xvq5ewL8NxgXDRU9L8k9wasAQDrGM1E7Goj0QlBjlxR/6R4QoZz75aUUBFwGRmhlHnMXWIVjcuukXFbLTxSqux74BzW6OqW2NoM00qUINUL86iqmwps3BhW8zYfas5O8VT8UrXuFPnH1pN7FXdz56jX+1BZ9vtVWH7vq+UbTyTUCkYc2n5/XHUxxdobzcqDCtZa4iNrBtVbA3XymUBoGq04CTBafl65aWARFxVyFy5lkEPqY5JiSEi+szRmJBn3qk1lHg+YN7TxqmGGM6tzj/HPUUDvnTt89Hklu4dM8C4ApC0+quKPS+Uvf99LP3XvUz/djOSCfO/qxf0LydvDsvDt9SVKZVAYEoUEF60M/H2JE6ip9SS4cAgfCSY6MWk/z1hqvEZ8qdPiEFxJKt9qD/MwAcfEWXy04UixqHYqYLF1rrK1BvXFgQLwWH1HENG26r9wFan6v0BN5OlNmwzS7dUpbbfXxqPWovUdK1Ha/AAB3BzbVOu+S4k0oAscMa0sCrLFVIGywNCNhRTRwQW5WG1pcCZbeowdGdQs8lc4iSnjp0RJMC0xPQshxXU9MyHFeiBkWQveqSyIDhB12mh4bpJknu7wn+e+fO/qxf/Lon/HHdCHxxRdnIX52UL/jCSoOZ94UKfQgIy53KEeqIUUMY3QXnLu82UIbHzd45dLGRs8lorRQ30mKJWCkmROkxz7JKjOrXjw+PgyzgJhUoethb9XdJ2BGVcDEqs2Z9jjPdQKwP8w080nhqhb7pKsnJzii6T1p+tSTV+qdV1+vr7xy8R/6Vltt9dEr9xty69bzvP089GrZ6RNnJ3Wv0Hv395xOLqualp7+ikPhNAGFx3EJzQc1sTo3IUrxEU2eXU9rziLuQIGihKquC7QG9scjP48BAOjKuz6qEyBMsfmxdNRYY3jtQgZ378y2QK0x4NVjVBcdEAcdZ/GEFvoieCiCf/Qwid7frh7bwfjsZ77w2yL834fE2/us00d+O2BKCECy3+QE0L1JESNBhWfu0Tq5kO4Pxp3DLb9DSZCTj3h078gN0CHiQX6IH/gsmAgoCr01o5SidCnGaL/VJR5t7pMaPV4h1ebAMeYitd533SHHh6fnDOXdUYT6ffFxPetbbbXV+6ovAp86+YbOT57W+2f3qp0c+5VLk08nIWKYS3iOut+oHVy7oi4Mr+ICV7MWFpM2KwC05tTC4mbV3Wpzix33iuTtJTscxnknyGjyPO889z0hDY/pknfvkAg89utjJ58Wmpw8DW5Q/1N0Rh4qvrDmYHIg8474r579zBd++zE964/vQgIAYfm5fCaUCVnNDCQAXQYeZtm+nEOwk9DfIWgWMYpzWwxhcFSns//cRtqsB/spXMokM0OEIgM5RGNFGQ5nF3N1Y40se6nRcAOFdbThZlIx59tTeadzqYXnGvlJcSn1fRIAPDH9QO3Ku7WnYauttvrolHvsjc6yM+pR5PPsU9uHvBs4RuO5dr+RNakzhZiB/sI1RvlS5yQCCaWGxDvXBVxC9/pum4xLRgYeyOmEUkQdJSjbcIUk1Ub66UmFe4WZSrx4z53UsNwAWJ2pedYixA8EAaFks5RKO8SZ/Xie9ajHeiE985nPfUUcX8Kgenecuumi7mCaZYcMfJhqB6MJwMj1EEGPqBCyrAKpRovVieCRl+RKSuQt9chzuDIpDjL+obRln5T8O3f3GXNQwRHhWvF2854y25V3wDnOy4Ftv6+TQOdzrTbvvCvvPnXybzc5+FZbfcTKPRh1ZynvxvcARzSdTi6rHmk5bpEx2l+AHk9V4c1rBUqO6gyxU4qDqqAmCcbo4/wSF+8kb8JKjOoMllESOTGKGB3LiY4bLGyZ9AFMTdNqqukgAs/3C2QbFIvtRnEBERSjOhmJC6Y5qlM4VCBfeuYzn/vK43z+H/uB+ITKLzn5GjAWRxAKRsjeoIF3KeJgDuWrgWDieerrEe/To/vyxYLnTDbC/3omYM9LAqw6JV519HwQmMflwiqDKF5QRJylqFtGC49/Z8Wt9S6KVRASzyZSQ3lXquJIj1v1yks6nZheUq0n3/+0AkAf322X0lZbfTTK/YbceTUYddcRWKDapnLYhfn9fH/gXPa1zamoE6k4BKfOZlepqoKiaCRp7KM6N6tmFvtpAO7MUV36IXtWdokzqaSqjhRFwlQBwJE5RBJdFFfHN90dGUvuGbznKXrgxW+zm1/VV6bYYDSE1C76Mr72hOKXHssTv6rHfhhe+4nPv1mIX0Qo4Ub3I4lTZWq5PV4LqGSwH3POGVG7DontksNNI6IiQ6hgSk/VXWz1QpFCJDcvWHeE0x2Rp5Q/xJ7K2Dl5hqZuVpuRpdDdZvWQZ6oIKzDDXbxfSkWkwpt7bR7pkAFhPS8H4gwI5l2QHK7jOs7KTjfm3VZbffjVL6OzstO7d+/iXmKBDkUrSw2/0M61zaWWqRQeGsP6kRzNmubX4m6cY+fcXEWLdvyP9xVCyrT73ohJY/AETxssdkZmYejPC4Twgr6WIBkjNw9V3aA00LuQQUL5lS/wo+tJfFsPmRtOG5JV4oW+Eq4F/K+v/cTn33zcP4cP5SB89jOf/zUA/25MPyONUBkigOTVUbvqIxds7NTwlHbnk5vfAulClJA9XlTd9TjfaH8H9TaXhc5lnxQqmL5PIkl3VkFTyyTHAsCtVW9WhapFoYAC8wzL4C2bJQhWh8LolFyb7itwGUd1V+fz83r/7F69ns/HFlmx1VYfXt28ebPcvgX95HNv+HUAJ9//tF5SrfPsEwBcUNQBOBwaJaPIvaWydwYEBxVjdZMqZI3APcDoKiiqKLqcuA19b9QvKZj1ZqiWTCsIcKoh10mEe424cdflnAS69rsj2NzRc+MWoyuB7KqqpYqukxuQHqaw5uCPnn3p5x9qNPm7rQ/lECRpSvw9wkos1eKSThJtfzdFIjHySS4jbDbNrByXUvclIbC0cAA28kScAw4IZBZ9v4DKg/skt0rz1ceGPDNQQ1bdZi1FozMCNAxvB7X0JZWV8q5MpaA2b3MJv4Luq7eDH9UaEtKUg3/yuTf8zmac3Wqrx17uN+TlF26X6eQa/+jrp/X+pPWIprszU28HD0Wd1MZzBYAylRLkf2iZD4rof9QYIoaclHhrM9xmJaCCog0N5saRbyQstJYmfneBwCkKSygAoD10LyZEXmIfxJRkez5+J8wCDJBTon5JpZbbPYRheVZanzg5AO9Chjx1VYiigr/HTl57zPWhHYDPvPQLf+As/xPRR22L2zizN8iwDhOQIV9EPrnm4WGSeMoJtzCVmacknNHWjsvLc/fEivR85cC0Iv+BuHsVMpzSqe9HZpNEymz8w/Pk3ZHGRmNEn0vpJIeZQhOp1nyyuVQAqMeI0C7V6u3gAHBJtd6ftN79+pW6P81LaRvfbbXVY6mbN2+WO69eq3e+eo1nr31Nn5GndX/6pkqZiMtAUw148nyoAGDzXAulClqZKYRqELwba0SRa6h0yRoiBq2eu6P+ArqLGMyEEIkuyZYcN4MhFHbOUNUl0Ts9ktElYTHAhpihJloNINxiIjd28sECXWTfg1cHTN04610iDvnVZ176hT94/D+NqA/18LsyXf1FB76WORsAgFDTmZIo7gMeCIxLHN6J4D03KWayYQSDCGJ0l0RwQ5Bxw9tUu9eIEHVauIlAp7OGyIE5zjOHuOfybxjSiogbWYVFrblKi+jzHldhJrXMrurmlkwrIxSHwsIjjU5J6ySX9a3TU+xP2+iUgG18t9VWj6P8RnRGAHBWdnry/U/ruWq9enKC3dnpAKa2PXSq6p1R1+a9zhT2SUgkvyIuo8gTqm6ubFAgsM0dTdbVvwbhoDEM435ESxRKdkcsTH4dLETF3qdGRABTI4Uv6WspZEgDLJIHiv7qG2R2TpkOS0Wck2OeR+BrV46u/uLj/2ks9aEefH/9xX9wSsrfxyozCYj2tRMcVooQxeIyXsImUqpo7pVgcTN15viNQa3tr04g+Q3H5dWBgvnKJMxnFB8iBxrrYEh06bdF3n1rHiFbcC20OgNAcZdixSREDhUrjxKh+8PM4yNAcaRNQw5+5dLeL2mPrPiabp3SVls92gpy97V6+8sLEmg+P6/W9r47O9XeGQHHgISdox2CzAIARwhKtyGDPAEYoKGom7XB2Wjsu6TmVjNJj06rdBtoM4OBcFoYZdXNQuDgHmnYceN0WHTHpREisGDUKeGdZ1cktca53aiAT0A3z+bZecGa1L2eXkH5+3/9xX9w+lh/GA8Uv/O7PPr6/37rv/vn7v5f5FJuduLg5jPJGZGN138Fgdk8/47s73cgMKf2fob7geTBgZnEwZ0tSQ4zBTMd8XeOGUIfvwcO7pgpfgAAd8yEHxzS3H18fdIPBszinFHo5pwFmOl+CCb4DCnlYB5vKzrNh8Meonpo+9aKtgMAzOBc5umwN5mvngD35/lwxcp8/QfvHQAAz2Mmb3wos9yttvqrWO43BLegd06u8WrZ6T1pOp9rvXoC7M6CRanJsOyKukKph5R39zgJSzGDJMGbKOqMjzOzJYocUJGMyKEPoUIXUzH9RszOKOLIewo2at85ReTRQmhwdol3xE50oVf/WIv1Q76Q74o85urDc3QYYjJ3UIQ3f+ilL/yXH95PJuoj8Sp8muo/dMebK6wQyWwxfci2a0AGndm0FHqHEEZrm2p9hwg61ylfJSh82ScNlV7+w4iI9MipD/Msqw2F3yLTTAoRiBL/ePIfYIG5tTnjz2cFFJZwRSfrrs11pM0SWnik5zugq+8mOdW3Tk/RO6W7X79S73492Hfb+G6rrR5OdWn33Sev1LPXvpaX0Xm9cmnv/TKad8tlpITaPNfDYY/S89As4mhC3g09mFWCpbUZrTnZAhC9jodw9jSC5W2xs4YabCX1dooEIm0txPIIHI2zLL2SQWPtx2V2UNIhAqhc70EQFyHS4xkWm8iGzU36X05T/YeP42fwneojcdh94sXPvlaK/CMMrEU8sdax6PHsJZtJOpk2kqgAGDgxnnQlJNrYTJxN9Z1GjEWnPFz0JxGsHYsnkOrLKxQ195j3wkon6DY0hEm2pPIOUzyOooU1LyXgMEdscUGkzQKATK6NgasHjtGFDpPgwqUEAGevHemmvttqqw9eN27cENwOUOpd3MUTV0/qJdUgcc8+VcbO6PjoGI1QTaUsWNiBqUIoMAOluLtPZZVtJBENrrNHthEQlw67aCEVdSOFwDEJrHJhSyvjvJm8pwxY+IOY2UZxfllcUGSl91Fd7o1yGZSxEg9mzXlycNzpSkg3zlYR+dlPvPjZ1z6EH8vb6iMxsuv1n37zv30VwIuhsItRncf4bXZgJnAAODsMAh7G6A44OGMUB8RYzckDcozmwLx8Ts5OPzDedkD0s4cxnnPMFM6Mn+tMibc5OAMNRInHlKM7oMDQZnfOdDsAgBTOdDmYYxb3AxTo4ztDafDmxTnP2g7Fj2fgPMd38wG4jCOT+f5xjO/u4i4ut2fnT/7dNw74IsAb2whvq63ebfmNG4JXQizUcUB9TDfJqeLyZbT9viqOFDhHIRL/FblGbY5ux8yqFvEx+TCrBg8LSCa/9uictfmVsLIWMXTza4zxguLdzGsftQGx+46d0Yo3F+zUgAAgonhCJAH27ogONSBy3eA1PEcWQi0yJ0lMug1qpG7j//jhl37h7354P6GL9ZF65X1Up//KgXOurklKzD05IilMGaqSZXSXFAeGWQwAV6IFD1l3drD07JQ8VCkYTuWUZZYg7Gamrbr5/8/e28faml73Qb/fep53n3PvPeNxxkFDq3TGTqd/dEZCiqAWEaRSqGM7lApoe6OWtpQGitqKAgLU2FaEZ/jw2BVUgBBFrUgLtLSaaRBQQezYVSVc0SqkilTJF6RMY880ajtqPMSZM/ees5/nWYs/1lrP++5zz/XneD73kkb3zD7765x3n/f3rrV+H0sy71wKpSU9osy4jK3nHVEjfwvqnP6qHEsffgV1rcVQ6BsqrHbeqACwD/Gsd0qP4qFwdDjmKR3rWN98JTHIweilDRhdLCfL5QLcxBo/foGxxzRLBYDLyDVSlQlGyl6dzFCAApj2CUYDIb6XZAejKmwFI03fTgAKN4h2RrHvnuC7oEnCik7JDBSiuCONht2Zn+fIzHdDdlEwGL3zCvEsGU7eG8mLc78vTuruj7zRx+Xr1VuqQwKAF3/207/fVP+8GoYIm5k2Qro5WQHgluRgA2D+P0A0UycyEOiWHZbT6zqcmNAB9lgSdr8/m5HdVLsIzVQ7GV0RsYeSFh2RgT2IE+YECWkG9KFGijYRadpHl8IOFAxrTQxdsfRa1NTQB9hFtYGFQ7WJEypQ6tLqTlu7e6/j5k2cQPq93hsA3NLSXx0v9Sd+9H3eBR7JDsc61gMr84yewp3yvodvzQiJfnGx7M5uVty9i1Gru6iEVnCO6QCoyHICq5cDdanAtjNCAXR4sjTDhWGoUcI8lUCVAuSojuG6AFW4P53vjQxcRDzRdbU3Syq4UYJ0AMMCkepMPZusY+OMlcjdVN38lxqkAj/Pr6F9AXpS5A8+/uGP/YU3/ug8uN5ygAQAX/ncp/6iGX7XNaO7ZsAgrMUVgoMMfZwXo7nuMRIJSvTv++gOZhikNSQzT4Et885Hd+ju94SuQKNJp1jzz0OM9oQdSm7HdxRpQ5Vi7GraBOwmYgJ0FWujo5NCUW3D2E9OtbUG5PgOAIqd9g7ppb/acPMmltFbe3U/9OzUzvVX+s3xWN+fv2JP3j4y8I51rOvqueeeK0/B3Rec1u0REifU2kpdVjA6qYMXdYcTXPS+FFpdlh109MXNUlE9TsJdGHwSokyPOlVdiokZgwK+sSvznfPKqEsGnCAMn8UBazLq4IJ+P3etozoAFW7OmSmySzDj/HUYchjfm1ePlXC/Oh/VoRBcjAFsmFOhn/7ARz/x+968o3R9vSXHP+8R+WMA/gFXS4sc3e3CyaEGB86QByQYJP4BAOZsFQejuyCfeGqt6RqXnpYbpBuuigi2SbOmtgAprg2NUkRc5PguVdlKv3pSWCWVTXVR5VLohqyyoJbF6uj++jm+c/HsRa24W0etD8xTevIpH0Mcx3fHOtZh2dNPyw+cfbE6GF2fZ7TwRl3BCFBxMAKA0fdVYdMKTIPm7WBEKkoVHoKRhaOLBHnNWW+pRJVsAAAgAElEQVQbejekklKdMCUVAlC5bBl1MFLcdNM1Q+nMQBLxeAejiK+Qdc0wx3IBRPATY4z+mF51mLnkhn/wcJE/9iYcnm9Yb8kOCQBe+sKf/KHR+l8HMRBaJIJNTXGoT2IHchQHA/z+BJvBOsFufhiGd1ObEV883swaJUgO0ZV5N6adJt1gRmG3od2EDWr07/v4zsyaCKBmTVA6zdqgUkQajV3NGlVJkaZiTeL11dAF7GZqijKktP3Yl4FlWDH0Dvoor/e217MOnKOenrZbWjoAvDpO+i+cf7HfvvOUHckOx3o313PPPVfu3Lljv++Dvi8CHsWZjHqj1kXH3lqpywKruAf0sl8K3ShVe18GXfRqbrqzyEBFBXSMxUQWmhSqMhOidTVtDrH8qjXKGPLcC2XemwCLM7VXsCJQ/SYLNh4q1mBSwGzJvRHBxROMJiFhMpIjOGIBWPI2GJYAKQLmXZJfoBepyz/32If+xBffhMP0DestC0gA8JXPfeo/hvHjG2DpBmuEdMCaJUPOv59AE/ukFM2GCDZvN2sQcfGs75nW3RPQjeg+8cvxXY73jBYjQt8nscGMRmnJ5ANy/OfCWQCQEMv6TgkYJk0MXYq1PoQi2hiiWzX0srCL1rZvnaUurQ5n7rUb7CeQ/ur5OXYd/ddunrdH8SheHSf9iZ97xfdKR1A61ruwUhbxwge/ujxUHquAZxnt61m9dWNv7XK/jKB4z53RMqxKWaRZHQkeTAKDTjZdUrglXFpSe5hgRPhEJsWqNF18kBIOM0wfTWOKX5Nw5axurJRu3+14lxRylZC4ID0/SRbzYL4KP39ftzcypMPN4aiukvjU+z/yiTfVHujr1Vt65PP47gefMdjPA2A4gnsLepAwaxlfsfgs1SoQPuqMq4lpHuiiWVN1Y0Jn5yUpJdgxVvKsLsJi4ALXFgBA8QVlmB2SRh3+QSzrVZK6eroWS987H9+ZiRV18awOdwkfwz/I3eeEy2hWBy/rNk+pF1nGfr9c3j2vwBmWh3blPXfPlpcB3P2Vl+oLH3xkeeGDjyzPPXf7GIt+rHdVPf20x42/8MFHlofKY/VlOJNuX92Wq5W6JHlhm2dUe4m/NdRON1NWlUWKlkx8VaAOVUaKdKV3ILBNZxTZQkt2RiDNUqwfYnuCtMhjy0BQdQO6aur07szRswQX1eqREkYmIYFWDLZMvdEErBC9umWQAWkWoNkpAaCR/LnHdz/4zJtwmL7peksDEn/4h3sFf78ZLnOJ599IV/Dp7ZSx50XIbGWX7P9IFgctt9uITBAP9SO8xfacCdcOhDuEhWuuC9ykmhpNjYVS517KI4NnZIUIIBZq6mjtlVZNZTEdC0qBe1x5jlKpqG7I2qqZ2jZPKZNngQtUnNSFN+rJcrm0y7rs61n9DTLq2a/73vpQuaz781fs9lNPlaMH3rHeLWX2tNx+0juIu8WdF9KXbnd2s+bOyGndp7h1elLrCeo2zwiIyJiBKmgVgxTlUqgLqZTilkCquqQ/XUWJWIkgJgCVmhRtSw/MhaB7IoT7i1/EClIEW2S6K0BIN4Q2W2BcIIJMP0gSg5onusa5rwq2Lt6G6JoWIl0hHIrMrBpsXwx/gD/8w/3q7/GtVG/pkV3Wlz/7qT9E4M+6ONU6Ym8D4Mo+aVLBbRXS+hjORbOEj/dW1h7MOPdKhgbaMHdn7Rb0cQCgWTNBh7EBGAYaV4Gt3+eK7x3o+yIFejExK+jaRy+lQs2aovekfCvYRaWh+mtp3D6MXQy9jdFOT4A6dq1LHzaaLSe79tq9PXOvNEW0xxHesd7B9dxzz5Xbd+7YnSdR3/fwreVlAO+5+9qyPLQrUnb0ScJNLLSaJqmDF7WG4BUsFIxiYyyoFdObrpiZ2Y4mxXSEV12pykM2nZDLwZgu9EJb4SsAeMdkiwWBwQOsV486wAlRsOmmUI2kqVZ6CnYYn4LeHa3R4/DuCEZLJ4dFgGLAzsyMwvm88Pv/Gx/46Cf+3JtwuL6lelsAEgB85bOf+jMG/OtYjVZjX0Q/+QexIQEnb+d0cbBmkO4AhH26P/hzKAJoOjYgFKarLTVIqmQRNjVrsdOi76q003dTSKKD/z+QOiWKtaFKM/Yq2A8oBewKdKo0FHN6eAIR6OatG1eHHU4wjL0ObRelcW/s7z05acBqzAo42QEAfuH8H+8/9mM/Nt7Aw3SsY31Xy+xpufM86i7MUQHfFy0P7cpr9/bcyc1IZwYqTmqh1X3rLLtStPdlWXYYfT+95lTF7X+KmSgn4AwAcnVnFKJX9x7zTmiYLpJjugj+jGjXuD/LapjKarSVBBGCe3WSQoGP7WpOgNy7DnaVxICI4HFyRDw+9Ebr+iJdvFEp+O/e/5FP/Jtv/NH61uttM955/Dee/XEz/G24r12kxCJcF3yoasDiIzuWXAYaABqqURanfsMIMK3b4RYdqV6e+6Z5BQQLnUBxERt8/6Sqi3dJm7yk8L0zDHfZVcA4KoHaO3YC1FpYumKH4eI6GT6v3uYpoQOlt2neOmi1iov3fK8ky+lusfdoLZfQenn3vPaLi+Xeri737r623I0R3g+cfbE+/fTTcvTCO9bbvZ577rlyFYxek1GdvIDaLutysizLqPvldCzWLz2LbH95CSWqDo8j34LRNs9I1EfsQi5jdIj2qiF0nWy6OC+YjZ0pF4NVoZ8DfExnSyhVioVzgothvasx24ARItsIkVtkxgzbC7NU89XTZOzNlFcCi0b6q+q8PcSvE4wqQAPx849//9kff5MO27dcb5sOCQD+/uc//dhF158n8XAIYd25wTB83IbmI711NBedUkN0MzQ2MxvBvjN3bUCHavfRnSFum24PnvwXfnoM2nd0St4RGWHWKGw2tB90SrQW4NZJacCAonQzPfC+Gyb+tVjToaMWsQNaeDDw9ntADL3UpV1cXuCs7lq7wY67wHLS26VJl/ML3rh5qwFYWXifPLo7HOvtWdf50aXzwip2BRZabdRKqSy0qtIX7P2CTkWWBYD23B11SJGiOpbq147VdCyliHXFjrH3LUJTjCrGBTNGwsEIeNCYLnbcatwYNS/A+viwBQqzZy5QraBU+AUwpxPDJC4YV6EsFx/nGfw2Lk6i4AFTz4BfOy3yT/36H/nYS2/CYfu26m0FSADw4s9+5reNMT5LctAzkHr8EG6yiqBqg81Hr4dODiBA40oFJ5rlHmkFpalTMmOj2w7ZCjJsLnhDN1oTkWZqhIV2yXdSDkqhcVK3eWiC0h2Urs9TAgC13qWU1odSVNqo7DVBydj3AE5rbcM4jVkBILOVUq8k5xf8tZvn7eZ4rD/x+CuG59GPwHSst0uZPS14Bnjhg48sTzz+iv2dXz5ftkJXT3fVzYguJwruSbfDCkbV1GyMRWX1pTNZd0PX5RmFcfIDd0Y+clO3BlKjwULAmiarlhlFC8ydE9L6Bz6qWahhmGq2kLTMOMrxXjDqlpme7a9vSIp3ODRM8WvaChlKKeWjj3/4J/7aG37gvoN6241yHv/wT/w1Gn/SR2OWJoRGXw5Vn6W6q4OTK+dByjksPFLCM5TUprp5OukCrHRroppGiSC5Yd8t4mLZZN9VA82p4yxmto7vqEvmoYhxMbqbg2HNUxLtdeYpAVVYgxbu9iUFVgu56JBFdkstdGp44UXNWPTT3WKZrbQ7u+mCwLNTOxNn4b38y7eWFz741eX557/EIxPvWG/1eu6551zCcBvz83sm31sBoF9cLDtBTTA6HYulvmgQtfayFJFlhOFx/v3IUqugVB1jUfZKk5J5Rkar2zyjQaGZLjDOv98DMApqNylVVWFq1dm3GlZBmz2Q146CKt7RALC6gpFWbMDId0fmnjIxfvOQvtlBOAkiwEhNc2ZXbRXF/uTbDYyAt2GHlPVLn3v2r0Dtd9AVZy6YtYypMNPpeeciWmdFHsZVeN4IgqCABq6MOjUMAfYgaNO01Zo3XZjsOjdjtQFiT2E3NTrpQTptNCXJEM8CLpxVZ/iRJk0xvFOCmkrt4gzA6X+HQUqxpq13oGLU1Zi1qLY9fISXLLyMsbhXFr6nci9lx3u9t3P9lQ48ipvjpO/PX7Ev4clx+/YdO3ZLx3orVTLoXvjgI8v+/BV738O3FmB16QbOsJPzyrKwM526VxYddsBo7km33ReNgVo4FqBC2WthWAMNq0JZADUlF1NZKFoiILSYYQczy7RXYB3TOYDQ3J/O3bSd5h0XwLCSEeRUVDBdulfhq6lnG8EvpBfSvJsic8c9GXU4IDb4ezHTGAEivO+MpPxv7//Ix26/oQfudar6je/y1qyHbskfeu1c/5bBnlC1RRheCma5vwk/p7h6IHp+GJhhVbSmtl55uM+TdrcLUSoIwlqYJtLcGqIzxWY0qFoHUAtpqv7aQiwwN54v7uZrrr21ZkZvww1dOaqgQDkAEKIdagCcFg5RorMDo0JFWMsU/FqnETTbGTvodviDw6oZeq3YwdDKYrh7jq7Ae/oZ9WzYLVwCD9/CD4x/yDvPw8yePpq0HustUfb004Kn7pSMF8fDt/CajPo9ALTW5VJuVpZL1pMb5WLfWC+tjlIWoKGyVFuKaeuLiiyj7w9sgEAuylpJpVgtClaMDqMEk44QoKqw0EizsPFJcAjtkIKEamVhVaMJdDFKGKO6c7cnXVuFEJZA5GSrdUxHTjDa2AEVGC1dvIPebYS7SABWVycGwxpFnvc1A/h3b93ij7+pB/I7qLdthwQAX/n8Z36zaf+/YLyBA3+61BRFYB/dpy5ICmk51AE01w4xHzvDAE0VvmNiPM7gBAffP4kANBx445mqa57AbqAxAv5UyYyuEKiZsVM8+sIY3RDQYWJS0GnsY3Qo2CnSagVUnexgJlYcc3DZ2KU4MWIYu4zRdidODV9D/3btXml8T+X+tXs71tPDOIv9+fvsyTvH3dKx3rxK0oIz6L7Kh8pjNVOT112Rh+kt91ZtUaHVPS6hvUxzVBVPaEYHZIkR/XC37gpsyAserMeBOqj0UDtUGklxBwUHgQE3Rw2jVGEJurbvjAyuGYKP4Rlie++qphvMYpOAkIJ8UshiqTWCEyIyatzduwHMbsg7sLiYXjaed9lUVNDuASc/+IGP/Af/7xt28F7nelsDEgC8+IVnPzSG/R90F8GmTlaYrLjUJ5GAmnUBI2bCpqh2Rk6Q5uw8a6D0ELLtEQQIb2ysC9nMjVo5dUqGrgAo1mAb7ztiT6BvQQnwsWCSHQh0NfZg9HjKbClIY9ahSinoVG3OJh8HItpi6G07wqujFUMHTpGapWrsNhbb692+6+h6dmoupgVuhm7piR995Zi1dKw3rLbjOQBIXdFrMqqcX/DkvWc1Ra6HxIV1RLcHcEqrjYVKqw5GHSqyCMrUFxm5+KRiLKaylBjRJXnBiQ2HvnTuxOB5Rqpk7owAl3zIpIIbKVLN1POJGGBkXEgrZuABgQEAnKQQbD2CtASvGvZB9BgJN0ylj3zSiSE96ohVr4RS+dsf/9DHv/AmHMrXrd72gAQAX/ncsz9uan8Wcx9kHYT5Tsk2GUrA3CmtRqyGcBI3WHdVNFvulEwVDIcGEs0MhKGZYA3qm5Tw6IacvbcnjA/KU/JY43AKB6B0g9aCEgy83lAKMuzPTMydHWpPEa2z8LSNukwW3rLsoGi9qwtpX7u47KcnDkzNPPhvGb29dm/Pq8BUv/Za2509wqOg9ljf7TJ7Wl74mXVP9DKAsw0QpUP3Nkjv4hJYShij9rLIzmpr3hU5i46Lii5AhRQtGGTui8zETMdi3IJRqQPDrb6i08gRGKD2wDyjIDC5A4OtRqpO+SaMC8wK6DHhGYinZktkTFRDjPZ8Cp+EqwPDVMPKyMPaDe1AFBh4QGIQ/uH3f+TjP/UmHc7Xrd4RgAS4M7gZPoGNi0OQGmBO424xugNWi6F9dD5Edkp0i6G0DkKOAlW7CcOCyABIt3D5zvHddPyOMd8Y2kUAQJpZ6JPUaeFqxkLsc3y3apWC+p1jQGOnaMMApNROs9bhRIZh1pbqX3eEu4NqBP05Pdw1Sx7+t42zYFlYK/ev3dtzd/Zwv7H3Ud6j3/dae+HFr/IXzv/hMdbiWK97banc+/NXrD98a1mjxesCnGMnN+u90vgereWiNE46dy9LJeoeQBFZYMOEqIVcOlzoCkS664LaO1Coi8IqBiBzXwSYygJRqyjOblWAxRNhCTnQGLnA3cEIUKQrA8IOKOnXU6ckOabLnDXXHBk5QYThwuDdDhaaVUNmuOWYztZxXIzp6C4RbsgaabKUt7aD97dS7xhAMjN++bPP/o8kfi/Swy5HbT7PTa+7tAxCju/i/jSgYYJSWAel750IXKeEhjixXx3f5Z4KcFC6Lk8Jwcq7qlWK8MC9qY2DvRIiwkJqx+iglDZUuYhMvzsp4X3XO7bdEgCUhb3fy93SZb+4BOpJANNu104gXcfeMpU2PfH+ie87C2D6oX7nzh17+ghMx/oOKoHozpP32/7o2akd5Bbd8xPx9KHbX9TdyZrqCjj4dApzX6TiTt3ZFYmvjCDkEkKPZRuqR5SqpnNfBJKZ8goEGOk0T742zwhwd5jJpgvRq4/pQsjqsRWVMg2dE2wcrGRGTBBAITC7NWxiyJmsOk+SndZARv6lD3z4Y3/AyXxv/3rHABIA2Jee2734yy/8rBn/6bBtb07Ztk5KEBfmuC52QJYi2exMBhJYSDMzF7peoYS7sSqhMBfTRodjXJ9r5il5B9XtCtnB6eK0CUol7qfo6YM3MFBFWh82CgA1bTnCM+ooJpZCWmDtliS6JXeCZd8B6Ibu4X+n4YdXWXaj4S6w17sdAHZnD/eH+6Xtwxfvq197rT35FIAn0Z9//kkeR3nH+lZqzSryPVE6Lbwmo0o94f58VO+KcGVXdFJHbwuWYVPkGl2RiiylW60V2KuG0HUswuoEheGsUwWqaPeuKSjdRdTcid9MGCO5AUxat8V4TpLI4GQDYQICZoREahvTJuygM4qd0eEokHXujICqsB2D9atzbMfFoBCyqoVhqq8RpkddjPiMxN96/Pue+DCf+rH9G31cv1v1jgIkAPh7n/1Tjwze+xtm/P64KcZ3bOZgRKzjuzRgnUarBMwZb4fjOxBNVTtFDkHJaEaOHLXZtBNCd+NeGwQ6xAzGRmFXVZASu6QVrCIBuVHcCSLdwgeFNG1JdrjqGF5Rse2WRLV1CmnWOoVp0iq1trEfI0EJuEAdu3ZRGkvfNdwE9ud3+60bO7s0B/DVsDUYebfR8QyOTuLH+rplTz8tzwD4fRvCwst4Gem0cKPW5dXzAKKbNzH2K2nh4hK4dXpS97j0CJbNeK5TWLpVVO+SFPDIiBzXAVVodQz120qBKhfBqAOY+6LMLiOt+j7XgrodEeTGBVAAWGhcIGactzsYpXtCpEXPnRBixBbAhtV9AQFGGmF+qNHWxA6KQd22ZTLywqMOuVcKMALx5Wqn/8xv+Oi/98obeFi/6/WOAyQAePELz37/6PibhL13et7FTsmc1IBNV9QAEmYtupse0fM+8jP3t/PuJ3zwjAasNkMEYbFDig96t+yokHHo7ipOP9E3CGBjQws3aybageJMvWTlTWp46YrRgeJ+d7Zh65Ec1ppHWVR4Gq1HqOd9SkVvzUd46Ye3W6oNu5xsPMCTaXEXOLnpgHT5q+fXMPJ+EU/86PuOjLxj3VfpAvLCz2yByOMhDoDo7GYFgOWe1YvS2C+tnp74nmi3VNPewwDVasNK564AlKh9KJNFl5ERQOp1Okxl4RWnbqGP64yoUKWhVIHaMOwoLDPfiKiR2lmNqIBubsfiRt1YWXlXx3QZPe6/kGkF5H6pSN+7ELZa3cSPA1eEr874s9l5wUkVv1oqfvDxD338l77bx/ONrnckIAHAS1949reMbp8HcBrMO2DmIEl3DVnumqx7aN86zguDQu+szAYCpAiu7LuNBglT+3SYpyT5PGZNnYLTSN8rGaw7QCnSuHVLdkA+Vlb3BgDBwgujVkF3wgP7MG2kkOQeY1Cs+G4p6OG9C6W4y8NQbctSrFhGq7NfXF6gnrCfjsWasQN3sVf0h87OcK876eFcf6U/ikfx6Pe91u58CTh2TMcCricrAC/jTL63yvkF13gIVJaFVWsBck/kQJSx4mZlA0iopFB7qwfZRehwbVEYo5ILRseB6wJQCxykzMwmm44kRYt1iyA8VFMu6qOyBUCxjIwQqapGERbkqO4BeUYAMHdG/k1nyl0TI+Es7tgDIUNDQ2s0kwqsUpgEBgCsZnZZF37osQ99/P9+447uG1fvWEACgJc+9+nfOlR/JiibQfue4XxbV/AGoMVV0ZYSDtzHvrNuoVOaz6fWSaePu/t4ao4OgwEPgvyILskANDaI3Ud2EAAm1mhbFp7vlZI8Iebi2TE6BOwmsgKXoc9uKXRLW/dwsLBUbdgDfWqXVjZeapdwE0EV33HX144JWLOX/uLPvdI++Un/hRy7pndHpd/c7dt37LqMIrz3YezPv1bT7gc3bwJYu6KKk2DPtaXsSmEbHHTbn8vR3Z0bK4kBSJFrrxUV7gtZQKCO0SG1VFX3ihSgDhVWYTlk0XGRoHQDDlZUVIhrh8JYFUapVFsQ7gsGVHEtyZLuC4Rgk2dkAVgVMaY73BnpFL3C53qLj+aik4LWpI9nKmzujOLiuAIYhfKjj33kY//nG3F834x6RwMSALz0+U9/pHf9X/0Yr6AUnU+P30CE87F7I2UNhzTxft/OiWzhL9UnMYKhUSJaLDk92dbI+8gOEt52hq6QFh5Y3RTdtQ25V3JnB2fxWYPvrUha27LwUkgL4HC3JNYwBhVLr0VN29oxbVNpJ+kBQKmjJRsvuyWWRhuLLSe9yb0d720cH3yU91IHfhMA4JhY+86u7IZwG/WFFx/hE4+/Yi//snvObWMhsiMCboKlsdPq6VisF1mACwyi7uDsuUlaALBNcx0DdakORPd1RToWlArRPndFwMCh64IV80hxOqis+iLAR3RB6QaCpKBQzH0RadN9QcONgVzco2zuehDuC6kbMqdsb9l0rEHtBrY7ISdfhQ/dyqQjZ+Ir4r4oRf7Fx37kY597I47xm1XveEACgC9/7jP/ktl4zj2gMIkNZtaEHlPhIGSRn5T/fyienVHoBnqekuucMk+J4fSAyFOandJKC3dQYuiRkDHsDkr+deyPxNpQG+IhXc2EHeqglHsqDSIFN8BEkQYIVwPXVbcEBOkhmHhp+Frqrre2h9TagD3GvgzfL0WndMXtgaVxd3LSdOwt85d+7eatBrwMvAzc/N7HOvCL+IXzH+rA8zjqmd7+Zfa0PP/8k9w6K9wtL1UAeBSPIq1+TqhV7u14KVpZGu1kscOO6MLHcwDKrhQAKJSltf3sgh6U5jqopEkYn0ZXRFTNwD3gfuKCi1Tt0Kmbsf9ReFyE0XQG4WECFqeOqGCjIXIMcW1RuDpwzTNSEDEaNExBbRAVEPukACQnMNw3pkvvPJ+sLAaQLD/2gY/8xP/yRh3vN6veFYAEAF/57Kf/FWD892rU7fhuOjS4vepKCcdk3zUAI2a+7vDtPqvX5ykBWDOVCBhWiyC6C/gkVRhclzSthxQi0myo2xDFXgkADNoFNAr7GIhxHrqYmAFBeACSyKB9dJQapAflMGmycQ8HgG1c+gJgqLYFwEUAkWxo4ltG3ulYrN1g52XjZWsNOMN2lPdy/HLTWXx39giPXdPbs9JnDndQ73wJ2J09wqRuA4c2P5OsEGF5+VnZdkRohUrUqzTuB43nttHiQIBVjOcwjFuhq+TXs6NANV1ZdC5wzfGbADRPfQVASp02QFwZcdGtzDwk95ALXzoP1sOD8ozU/Lmw2RmlzshgFLKuBIfDMR3gYCg0AcoffP9HP/Y/vUGH/E2tdw0gAcCLn/30H1bof+td0DaEzxrBDm5Aiexmiu1OabLvFF3ogX0BTAYX3naYNZiRwhjxTUZf98mdd1kJOGboAjMTByW3vWI3eOCfs/CMqYsi2E2sYTjhIW2HfG9UQLM2qJzhf310AbuP9NYAQJSy7ppa76gVA2sQ4Dbe4rTWtm+d7vhwio7Lfjqc9HMd+eF7AHytnvDGvretV553Tf+w3779lD3zDHAU2741a3ZDt+8Y7vhYDjj0msv79ouL5daNnbXLuuDmuh8CbqDirgMDT+q+ddYAmnFV3BqEBVVdzMTKJmK8Ayiqi+uKuqe4FtrWFHUAuOq4AI3Yh01XBFVQpNJ8LAfFEhrB+8gLfv3oHdHstDx/LQGvwoyZZzSjJ4Ka7Y+JDmpjB5Q6o3VMl47e3ilhI4qFoQrljzz+0Y/92e/yIX/L1LsKkADgy5/91L9L4D9zf7uVEr4lOgCeMgvDdnzX3PDhQXlKZgAGyOb+d9Jh2iwMWGFO9U7nh6sjPGI4JV2NIPYAhjmydajChI0bUgQgtPTCcx1Eo5Fq7BA1Am7SCqFGVDqlRLcUbDyVBnQowt2hrOJfUjj0kJE3bN/RCj176RTAOs4rvTfcvIl0fsgcJqkXvLG/1V7Gy9jmMe3OHuETP/pKwzPA808eBbdvdmUn9PzzT/Ip3Cm7s0e4zSN6+QpjTsqOAHB593yy5uZY7vICOHED1OyIlsWZc8sCjB7MuY3LQjVnxgFAkhbU9zXU0SeADQgrWLphl/HiDJcE38NyIbQAQtNRlWQRlux+SvFAPYEsSelm7JGA650XwNQgpSs3Zs7SxiTV8OA8I8DjLKqfT9K5mzXYvkv40y1087t83L//gY9+4r94Iz8Hb3a96wAJAL78uWc/DrP/BHAwyS5m7ZQArJ54wb5DN7ARri2y0DWpkeldpzAkLdxbeTdljZedeyWjuROEx6KPJDus4zl0M/XuB+JAJA5EinSXCMIDZEDMkokHSnRLHpNexEd6Yxhp2lJQS1UO0XZVVAscjvK2pq0X+9Z3O0C0NgDY40AZ3JIAACAASURBVBI5zuvY0MVvAqll0rG3myb9a+cX3LLzAHeB2J351fcvnH+x377zlAHHsd4bVXMcB9cN7c9fsSefApKgAGDmEX3t/IL7ipqx4X6M3fgUcGcF4AKFqPtWmFoim0DkgXkTiBAdUOqJ4PoiwP3nzMSEXJI9N4ZxqysCUgSbQXW5K0rmnVUz84wi5YLoWARYFLk7UnfxjtclUEd2N06KWGBmcO1QCFK5QDWYdKiM6HD/PkMLZVfzjJYUvR7okJwUlfuiaimqBRaQP/mBj3z82e/i4X9L1rsSkADvlGD4z7E1UIXveMzBInRK1v2q5fo8JQBY91BYx3Phf7e6OoSruMHMgWq4M1GAIAAj3U4IcHEsBDa0U1bLoVCM97QdcpAyUiKVVkm7RreUwIQxoIZeSkUbw41bUSExxsMgFXRGnqGjA1KdKl4MfVoRBTDtcQkAKIZuWm3IGACwaplWYNrmMckc6WXn5E4QuzP3z7t9547hk8BR4/T6ldnT8swzwCfhXekPnH2x7s/fN0Ho5ZdfxqOPPjqZcgBmHtHWfXvhjXpRKoF7SEFr4UndX15id3IClb7s90D6zhWRxcz95KqpqcjShzAJCxiDwlp7CFqXUiaNGwNQ6lJEzJRLSB4qSVJRY/QdcRErnTu1RfAxRiS7qoOBAPS9FA70RSuhAJaGpjB4jAQ2+yHEc+auyQEJjO89IM8I6dptWFZq9/Sm23zv3dcZZb1rAQmInZLpnzZgiBMR3GX76vgOXz9PCcxRHMMJ3IkQQFgBAT20CSv4EdFVrSy5HOEdWA55vkUXCBCaKMAB6zD4DxEgaDYdI7AC01AhRZuItPu6JSoV6OmLh1JMhw4fk6uVGOWNxo4FOCm1tbafjuLXUcYzTv0qbXyvd/tDZ2d49fwcGX8h5xe8cfNWdpIHndP+/BV78rb76B0j17/1evrpp+WTMYr7gbMv1qTmb2MfHgVwb1cX/OrXsFK2d3zozEdyW9o2sHZDMySvddYTVOw9PKzQ6gIfxSUQAStZoQ+lFAkjVHdBzTA8HdEFBWmBcB1RaorSEDUdEnI85p9/i1RXBxzvirQCWAQCo1ZAYGrLtisyrqM4f6yTFxjPCcMCEWDGkGcHtRG8SjgxfBN5RgAPosdjL7UAKAL5o++mndHVelcDEuDsO4X+ebpxVecUsSYowez6PCVgdklGgJ4+a3QgYjp/0zZaJdimWwLoeUqpVwJg4CClwRRmoUmC9AAzIHdL4TVHsRWkNjlLjmPYsPWsjfj66hgv2XgA4N55Gm4PJIqZDh21iCX5IV0fTk61tZZvin1Zio29d0jOzkPf6pmAtCa6C+AmTlS63tjba/f2rKen/voBTi/jZTyKR/EyXsbN8Vh/4vwVuwPgS/jSuH3nKctR07GDWmu7B8oOMwWrT5y/Yn/n4fMlf6ePYu2EvgfAPwpygpQd95eXi41mmdCabLnzvl9OYze0wwn2rXMraAWAZdlBR1+BqAMqYYAavnPJnAN87EbVOcbzvCKAhWWo0t0WChSjwrikBx2Ka4ju64pSy2PpV2dO6zaPhTgc0dE7lNwXpYsDVlNUABW02Cf5Dii6nwPBa5AXAAecBe7Eck2eEZlgtD6G1WAikH/t3cKme1C96wEJCJ2Sjr8MuL4obv7GeUpGm/53WK2F1GLnFNZBQXToFrogkM0ICrD3rsb3SgJgKHohmvMlrghp144oCBTYQ40m4ky9AKZDo9YkX0hT13G0uV8yMSvoGObEhwCmocplJ633Vb+U5AegY5tW6z9eECCwimwBQA7YecCWoTeJEHH1nfRx4Bz19LRJ7JxWgPIreSAzm3zp/uRTwPNfenLcvn3Hj8wzwLshjv25554rd+7csRy/3b59x174mUeWJx5/xV548asEfhO29OyXAbxn0wVJveAy3M7ncC+E6bi9pWwDmPohJepuB0yLHxZqt4oFqFc6onVH1AHUlTmXCa6bOHEAWJ0WSgUGNmamVSRBxyrUSQsQgXdIZjmiy1RXVaAUCaGrhJu3ZidEwkqkuhIeJz5FqmZwqviVhNfYN7v/nO+AF6y07g1L7pvKM8K8P8vveTfojL5RHQEp6qXPf/ojOvSnwwbkah7SJk8JANz/zsd35jlI0U1lN5RAdsDAiy4pR3SYXniGDPzzyV4KXhkmrZ6h5AtancatItJMjWrWRAQGa3CWRTOEUeuVbmnr9ACs+yWPt1Cj1D4idwkAjDrM1Jz8cIUunmC13TOFiSuw7poyjwlAJNjGLzF2Z6djsS59zKvySLQFgKSSJ0ABqwN5Vo74kr23P3/FnryDnt3CnTt37JNv033UBJ54/88A+OQngRd+5qvLdvy2O3uEd3/lpfroo94BAY96Amu9oHYH9n1FvXVjZ/m7TYPTJCfkhULuhYAAIR2WeUTLMky7TNLDdj+E3oFaIQMVFdAxFqBO1hzgHdFQjf1RhanOBFfPKlr3RCWixX1szQURE7G6c9vif2daJXKL6NoNNyqlLVSuj8dm1Aa4Dx0Qrt/r+A05RjMf+8Gfd5n7qnw8J4vOrYBib+Tdlbs4xL75ujyjTIrtpcjvfKc7MHyzdQSkTb30uU//1mH6VwGe4EqeklB8R+OR6GT42Tn3wdLvDsgxHonwuLsScbEZ4TlbIk7fkau08cEDALPVoNVHeK5lyggLQDFdHky7idPEk7GXo0aDzJ3WpImTBx0T4N54KDQa+wDuG+WZiYmh+yhPhq/HpMUFMATsDf5XejWPCTug62hohVvBLYApugU8OJCXrvLH3VXjBOBw91RPiF/9Gq52UMDqsZddVGppnvi5V1qSJbKzwDPxoDehs5o2PPH6uSvLf+88j3rw/h9/xV548RHeLS/VRzc/8YwAryd8uF+as+LO6q0YiT50dgYfxbk3oYPQQwtwD6e7xXrEP2z3QoC7KbQ2eFXIWk1ty5hDB2RBnWQFpI7IPxiF3vnosFpKhWmvgExhazLnXC90CBZ5e+6JAAcDhRMbkrINaOyKnAI+Nrui6F5AsKwjuNQEzagHXBW7wj2ClgliZDGaM+QOOqKMHBfAR37pHlHUbPHzx2GeEYDLQvkd72Rvum+1joB0pV76wrO/ZQz7qzC8N26aRqubvVIy7WZ8hUdbTLJDWx8zHR0M7iJO21LDyXa4VzLA2CxHbZLaIPioz8x97MJeKLRQHZBmyG6J6/7I0GFGozSBmgk7hj+v08S3HVNEXwzAR3nuJl7gjLwiYpMuXqsLaoMAUYtYH0JRbbWoXZfHBHi0ui3F2Aaljra/BCBlim7TEQI3ANwDtpZFwF1kByVlx1fPz3Hrxs7aq/vx8Nmpfe1KF5W7kqzcR00d1OOvWLoP5H3256/Y83fQA7PwyQ1I5DjQwexLvH3nKcv7AMDzz29u+2Ye/9RT5brXB4AnnwLufAlIHVC+/9wBZa4Q4Hu3h89O7SKiHbILyqwhXoYP4cY9IaPBTatRKicILcMKUVsrTO0QWHhdHhE6MIhKKj0kz50VVL0zkuiGaohaMZKsMKCbjqWgwEyXjAD3SUA6ax8C0aRyw4HDiEqQBquFrjFiGpwC9SBinGmgGoQIaHVswi4p3abqgOeA5B3OjBu3uaNCOC4waN26cexG+tuFTVAAUbwfByMDv1Yr/oV3qmv3t1tHQLqmXvzCs9+vw/53GL7fHHnCvQEGw8A6ujughcNHfNFJrW7hc68UIlqNfKVDEa0FIOXjIu+I1szYQGM4PBzuluDjOjVrpkap0qD+Pf8D1y5uKxHEBwbRYXSImA1n5OnshEo/6JhmphL7GB1JF68FoMnqkxf0XaeMy4xQ98c6MFVTU5QBG7YA0AQnDnYdbQdg37bgBFy1LNqGCQIA7t7Fyc2zoJXvmXuoXV9fP3dRV3VQwOFJHgFfr26MYoG1K8l/gV/E1XHZYSe2fv/rPT5D666+/raSeDB3avWE2i+tX9QFOAfgY00d++mWAOeMzNC7LQAl6M9OCJdAKzzohMJxu3lPXKv5BUbmEXX4rucqUUGVSwXQVJdaAKLUAQCjO1mh0FYDVN8Rpfg1O6FSnOnmhIUHAxGLuBUQzAHJtPrn/TBeXECPedh0Rd70bIxLg60XOUYOaLb1nsN1NkBbUkLQuoEkOARD1zsowiLPKNh3+CWp/O3vxDyj77SOgPSA+nuf/VOPDFz8tBl+Kzg1RysoGRpmV7OCD2DD2/ygcAOwGNH5esfNWZ2FZ41htApBp9GUGDQYZiyFj/syfgJcxbRuYJxEBsSoLrOW2AEN0JKe4lnAQQmiZoMdBZigtDqUO1UcQBVpQ5VX02pzzzRUSZHmJ6oOsdpRQgMVYzzXM/l+IV0gZgRGVNmAk1mxYvu+n9877ReXF9junpK1t/XWw927YFlooxlwE8uJ76LyhD13JzHy2x7vqyf8cy0dG5BIjc4KIAA2Xz+K+8Ht6z1+a79z3esDblR63fs/WRZnwQFAIPOo+7kDyt+Ns+IA4BQXlxczhXXrnsA2uAdwurPaGgAWCkaGxcEGF++GOmSpQdsWClpFKSbKJQ7zfc4KACAsdcBYwTKtflyC4K8RpIXJniNJaFEYGdEMlomt4ahA2MGeCAgAEzNDmcSFdbwXXVGMATfggNQg+YgOFYgIc6xMPKXRbXxQYXP8518zk2IBpObIzCPRyXg9LpM+Dnyx8vR3vtOSXl+vOgLS1yn70nO7L7/0d3+KtN8LZAdEGDQEtE73jkwlA9awvxzhxVNNQsRhtlKCiU0hLVSnZin2Tjigh0+SArtPHpwiPgMAIz/Jn5edjmA9LPU7IKCN5leCawjglviQbuLu87WO8oYqzdgL1LZxF4bRzXycxzR3PWDnedeUt+cVt8TrN/i+KX/vy7KD7lvHDsh0WyzDkmrs1kXA2kWtFkbb47fNc8JdH/cBmKSJ3EsBODjhP3R2hstfPe9478PQfjm7k3Qs2I7K8N6Hkcy17wHw/+XtAL7e41Nw+qDXf/UcOFkOdz5X84S2P+uWiJBdUKav5iiuBkvOkpjAQgBY6rDRfRy3ZclVrOmscyQHYNK2awAWBiwICdtuaGt+OndExsXoYXmIzIetIzcAbP3nkj2nUJQi1TTAiOb7IrUpcE2WnP9dzC7pwHEhXnFqi2yaos68IviIjkaaC2l97HFgA2SZh8TIQwpiQ4KTwRaS1RsvLEIWJf7yB77vN/44n/qxvNY61pU6AtI3KDPjiz/77H8EwycM61hOgS5JC/dcpWYAhWgHuUlr3MWkhs/x2UYcK7EfAtlSs4TJwKNrlmjmeUkBGGHWio17uLsH+W7JKek0ByYjzKap6+EYb6Nfih/asBq3FhR0tVFEjdExAYCYNJR0FgcK6gSnzGPyrgkdsXQQK63nziGymdCBUd1x3F/+sHtKtt5+D6TWabdU2+MSO5yEhRH6dsx3oH+6AVzs/QS+dlNx1zzZB/38LoAb0X3sFT33MSnmvXVjZ3Jvx1djXJYjQsCBBAC2e5zrHu+OB9/49ZP5dvX9b6nYWWlgCgBYfF9Xe1lsGdZa4W4HjJZaIfeTA4AtCOU4Tog6u1ugYgyulO2O9JkDMN23UQBRWQacCVdMbDB1RAEuJjZMVy0RABSA6chtGkCwFbeaeXCdMcZzbt8TVO6tO/cEIvPHzNeRK10RbYFTV3xcF8QFcZpdWAAp0uw0xvDriG9jkDpdHPz7fp/wpZv3NywUfOrxD3/8P4ypxrEeUEdA+ibrK5979sfV7E/HldBk4AHAHOEBOLQiYgfUmXUx2iNgCicxpCfdOsJjc6sT6VC4Fx6AdHiI8d9k4mWkhYFDAux8nO4U8QQYNcs0XLcg4gpE/vRX/h8yEOyM+TpYO6ZBYTEazRoK0IcNvyIeuJrHBAwM85HeoJLqVkVABAsC6FQmUy8JEaPRI0PhsRj+6/TlejqR21IMAJwgETZGQZLY5jmtJ+91f7J1LN+OufL/8+uy27XsTpIckDk/DiTwzuUuABz+/8H94vFuQuq2O1/v9dd9z/3vP/VACTzbERywB1txoSoLl1qsNb8gT4r2amwaqFNXF4XWXSN0VTfkbgruMXc1j2hAWArNb0PEgA8MFUqxmvHh2Izl/PPmY7utsHUCUVj+5GEwGAtDUxS2P4e7IpjB6gQiYJNbZEDERfg1HXbZFcGnGROsCKthjAoEwJhZFbLGRKTAzUkMSDdvklAf0Zlh5iHFH76Qf/T9H/n4T+FY37COgPQt1ItfePZDo9tfIXCaIzf1cR2wGcshyA7x6z1wDEeCmYMHTC3AYBXSGpjg5g4NB/TwtSMScnY8QDDxwmkCwHR6IKSrt0yNMG4TaqEaJAxBapMye8mvWtOZfA0DNJqls3gRNcXazVzNY8LokMJu5iM7wTwNxljP/y/98/J5tt3TVoQ7yRERkTEJEgs7YhCS85AdgF5XmrkfmaScZ0flAOV12HUAwFWniS254kGfk+vuuzodHNzzga+f2UFYhm3ff+1lSbumHGluKdkLYgTKdQQ3mXHwPd6Wol2L2lXxapqcrnshp/tnQut1eURxbCvSVQEIHk46Jmzp22oKoZku4oaOiwND3gcx5lP3oKOP7IhDp4UJRDGKM4Tj94aUAGe2UYi4ekkXbiPBGobI1aJrOrAUOjBHnfTujb9dAJCD1bJ5XL6/i1L5ux//0Me/8KDPyrEO6whI32J95fOf+c029KcB+/64ae5hBGxqCnKTk5R7JV7xskvCAzau4UGaiMd6Am3ulJDgwU6izWwm89ykJD8c7Jc2eysP9LMmEAzTOcpzYHJBrQEdEiauQRV3S74Q2G5cxUVcq6Sm9LEecF0eE+BsugJgoEPA3gdQREyBvpIhYqxX7MDgNX/vmXKbdR1ALcsO2Q0kWG01UFvAWiYo+cgv91PbXdVuqeYt1wm820rw8JFggsv6tZMH1v3WBmA2+5x13Ahc9/q1lyXf7xZ8sAdkt9T5M27qKgCdwOr296Uqi4OPg9B2FLdlyKXBaS0FfQykgNXHblbHMF6XR1RwzX4oIr99LBdmpgjmXDDl1Bu24rErjBiHrffchnG3AYuQNKxGqOLkgdwVEVtgciCk0UDfGa0RD27/o0ZSUKe4dTNy832QIGjguS8Kp2+ZYtf5miBI/BJEftf7f+Qn/p/7DtaxHlhHQPo26h/9jc889Opr+udo9i/D2W7dWds+lvP9rGxEtAjTVY+pMAMwx2Zomom0Fvshuy9jyUy1C9mMDkDm4ot4Xtl64hHAPvKWZkeWjDwP+wtnB9OeNkTTHy9jLpSkjaYkM0YdAAw2YGKpj9oy867mMeUeQUQawuJOpXYEfXySIUgOa62iwsW3asnWw3CcHlbaUoE+lNVkZjfNi/7NHirHUrahmeexWxYg2WQZQJg2OGyD2HxtyzCycO6uIg9qdi0Ath3MFlS298txWtKqk004AefK648WtOu2X8eUUVtRaoNb9RRymW1n/E50M567DoDMbFdMrANgRoOrEqVAR6+leA9rih1yHFtKHaosJnZfHtFmLLc1PiVjvBY2P0CM5pRh05Nu3GYC+AnewnlBtcIXpZWRxuoTAA023qHJ6haIvHFB8WmaRhbRHM8ZDDsDqpCmsF2SEuDaJbg1UO6r1rFf/D0XALtpAwQu/vdPBynK/3zrFn/8H/tnf+LV1+F0866qIyB9B/XiZz/9Jwb0P4VBw6WhIWjdDFdwwiziJ2Lkxm5QeDflGiY8QLMEX7J2cHY/DcnEAxCi2tA3xX4JMVYLltzW6QEAMjb9KjAB2Dg+wCnjQX7QsCPy5+ZKnPAN9mpDFHlMNJ1C27CBWUd6284pKeTwv/DUQnF67vkV+5rZlGfdDilubZQMsBTlAlhPzMDUQAF+8k6g6vT7L8sOaHu0zYk/QWuCF5z519oeZWHPMVkKfPO1bAM62dlsTUevA5jrXj9BZ9vx5Pu3da8yfx3uGefAk78Td0tYO87cBZEOKKa6mIi503upBcAYsbIMltwYxhompwCQlO0iarMb2ryfSVSg0iLjaDLmzGnZ7q4QrttB4V7vg6klWj9314zngsK97qMOklxX0oJINXctWQ66qrAIEs4gvbkrAgkB6hWhK2yKazdR44TRuKhZunkLjT/5gX/+45/Bsb6tOgLSd1gv/uxnftsY4y+ReE/c5Lok/7DGiX3bLVkDuO6FLMZ9XNNrQYD2ADEtzGDYGrWuhAmDKW3QmX/hi+eiWgcmBinCmIw8124keYKH5IcAJqeIR5R6gGICk0DNzPVMGCv5IRNsjWYptgWKgw6VQIGIRedUnG1l1gbUE6jD5LXESTOJESlumqavIcgFsOmi1pMzkDoo+P7eYmwVG5M5+uvCWv3kn11WAsIWxKr5817tvA4qtDxf7/GksDWg1gCReP0JOCv2zn9VnFSw/RmdhDCCjl2io3S69nx4BbS7q7ZJ7PLIZcAPizBmcmMApUDV84fcc873Qml0arT5+DmSAw7YcvdZ/Chp0CoQXM+ai/2Luh1QPg6Y4zluU1z9+9skVyPS/idixU0VIlLd2gtL7ooIB8NNV7Sy6KYXnfvfITsmgDRUklVNQWH1P0dUTDo7fq2U8nsf//BP/LUHnSuO9Y3rCEivQ/39z3/6sYuhf4XAP4kNNTx2PG364M3Qv6Rzy+yWZgeziVWnkxpsy8SL+zhzz0kJvsMSrpHqhKmtwDT3S/H97X6JZFM1CgAK25b8YDE2zFHeSoDA9MoDgNxF+RVodDnJEETsmqgUE7PkCG/cIObzGHuy9VRq972U2hhKKdXHgqpEAYZJy2X7yuDzSPbtiTlFulc7iNlVyap/mhUiXteDxkzwvvvgoBN7vR6flOtOpZ9fdQKQoNX5oM04U1jriM7Hn7qjUBagwMxsqDJD7yY9X/tkx6XD9jwOcDufoUaKloICpc6Y8C1bzjAqULAFIf8IpeuBFai3HbR884dkhdwRJXPOx3NYXBxrBbHfUf+QzM6F4aQAAEkF98wiVICMFFYHFp9NO5gJauQWJagAvg+qSeeeXZF/WAmEU3dESsTf6OKaJPzt0yK/+9f/yMdeesAn4ljfZB0B6XUq+8X/6uTFv/vqf23gj2PLuEtnBqdBbxl3yPtFV7K9rQPTBcJJCaQZrMcfVhNx3VIKahMI1DBWx3DCHSU2LDlZiQ9bRh4ATI+86MRIbHZMtLD27+EX1gEnN1zVM2X0xeya0jcPh/smUtrAQNoCrBqnArHeUAowBoZrVBoApEsEihu5piDXZNU+jQ1Qbd0jACBtbrb7lHQv3wLB7LDitlrEWvfOppoaNvus7e7mO3n8tOEBVsDZ/Ks6ltR2pXt2R0dRWbLzIZVEgo8z4lAqRN09YcAZBOkl5w7bDkjeq5agd/sxSpZcUP9rdPZrxMSVPCIN8DH1jsio4TVHI9ZsonU05x3T/DuaJqhrRzRp3E4pXSaN26vC/erWzsmfp7pIdQpTLcZsOCAuHDh0+/OHZik7JCO4GK3CEJTufH1bCPupx3/jQ/8Wf9O/fYljfcd1BKTXub782U/9ITP8lyRO4JRRd1cIyyF3TrAeOUoGrGm0ABDAtO2WiNnNrKm0k/RAdmyZdmYOVM7Gm6CGq/qlDTBtOyZ/He+auGHl+eROAEHon2J8eE0eU/wcXZOhd2Xf5Cw9H+vl1TdCU5WPv9o9OTHC0w8LaEBkOGELUmueUy2AEyZ8H7Xdn+TXZmrr+O/qjAzf+OstsL0Oj/cYb0zOde+HjyhcXRGSSJB5QlsAklomGy7/9S4orhAAmMoCUUvRaghFsWXJTcKAmHn0Q8Z+q42BnWdH3p9HBP8gzthwjQPqz+V6JagR4a4ACmi+qxlmi3frG8IC3Wfuvo4o/OfMiTfFtsC0TXOdbuC5K4p4cVu7KWyzi/wFlhzvzX0RuKg7iJsBewL/zgc++ok/h2O9bnUEpO9C/b3PPvtEh/0FGH5LsOka4SdZ+pC7J1kh6eEONqFZMmtxZCbZAROkNp54IAjbxKCbgdJNdTo/mLDTzBA2PTA4U49cyQ4+Fhxw9hFnZAYZdPAgU8Q4z2AUSPOr3PvzmLZdk5qxEHuFL+a57Zxy37QBqHXv5I8fKkzWHuBX9IOxZI849gK1vPLPPKesyRYbNrKLmLupGP+57c2a+5QLpxwF5u1+QNbuJKujI/dE3+7jC2VJAE3NVhwDB55wRChFbEDpWL/mCeXPPyDTN26+gInJQRcEEKWqKVeHbT86gM09Tbz+gtANMejaEIluyHhdHpHBLMZlpMU+Jk1LVbFaBPl+CP75X1l5V3znXPazdT4wH7X5KGABGFohM/j+BwR9Iydu38M1KiJ1RbANcSFMUfPx3k0FlRvrnimEsPj5Cv7+3/DRj7+AY72udQSk71LZX//r9cX93/wkDB8zRH8ANqNtR3jZ/cxxXXZL6Yc3OydyBacgPThZwTumzQ5qMvAAHIzyVm+6dZRHhp2QWfPzB7qfo+7fMwFAdk1q1jwM7TCPyZElWX16MNIDgAwO9FGPDBEzHfk9p73nRbapi3D9uVch7rqDSrLEWpPFN7upIBGIy3LSsXz+CwCbQEKSzOV+diN+u5/gt6CR902g+04eb+rEhC3rMN8bgBntDdAGHIS3eUJrFQhGsOFoGXZHi1GaOTMuLwIAHNj4QGNMF4eBa+ewMuVcs1Ylj/WVPCKFwl0VgEkiuIYxN61+khwRWqLYq+aeZrMjAqAaQJTi1mDPzZEdAtB8XAe73vonSAvTcSG+t2CzK1rvj+ovgULi2cd3P/gMf/iHDzr4Y70+dQSk73K99IU/+UPa+/9g4K9DMOUmaQHW1IDQLM1uCbAQ1jJGfnPv5Lokf6LuM+3smBi+eIYID4SpdrqB5FVGXrwPA4wTmIDcPQEBTuHoIB1O2DVVGwfuDzG+85MC+9w1Bb0cSpqgC8xmPlPU1hEi3xNC0AU4ycJHO0kpXzsoBssw9x64Mh7MJf+4yujb7KWSXafhRAAAIABJREFUQDGtb2bEhtgY0WEECSAZaTkWW0FNDBAOdL/ft/H4rtjN8VoAaL5P/9cdEfLn2XaJSUDABsY0SQkYYBICYiS3ddXO3/W6DwJce+SEhNnNiEBgNtQm4Ai55LEWYFEAmUfkx06qu81zAf1FHehWHVHupaI7XskKxrUjsnwvcMLBBoyiY5maIsD3WOY/y0o88Nq6cxsJN051clHspeC7MyZoAbErIgx/vyz1X33sQ3/ii9/s3/6xvvU6AtIbUK98/tMPf031v4Hi98QI777dksU+5/7dEmPMtwIZ1n8dRIguycYLosJWe3SgX5ob6iRRmDuYG9aoC6SifmqXVmZenlwsSQ0BTqpIYW+CEwBQaDa0I6T7uW+aHRed3i5GM9GOSXHIkZ7vL5KYkW9fNh1UjrX8vSa4rs8zKecbhl9W0puLiVlB3+5eAKCEZipvxzBis5tx2roQ4YD+7Tw+47sPxmyb2lKvUweECLW79uePbiPrAIBcIV3X5/7/27u+2Muq6vx9+577GxQEZbBRLAzTltS0xZhqohHbSA0z1PStlSZtfSqNViNRQQWjTxpBBTUTrTXlrf+1fWx1hrbTP2I10diixlbazh8UTR2wICjMvXevPqw/e+1z74wMDDAznJXA3Ln37rP3OffM/s5a61vfqrISbBWhmAc1zzPTi1e7uiEKLDdEZ8tpX6+hRsi2HSeo205mMA8MMM9Iz2CW6NvZIwI8PJcIDCaxpaQFYm73/9xq9lqbceSeReJA5Aw67YtEA6JE57bck84J/MV5s/LG86+84f5Nv89kJ88mQHoS7dC+m39nVevHCDwDiUXXM/FKpocD2tpccz+Njaet05XireBAC7s1hQagdba1+iWlmTsrbx3glIoOEfGQGYARM8+dIlV/0LC/kSC0xoowggNLKBuvtBJfCRIlUCUJwFrxbRVhMUVkBhtRN3zvdts93Qfbr89FuYcAtDxMzkvNShX3KdRaEW+AVM45uXdinwF9PgtI4HYC453h5vMjAKf5PEI21lsGoMROa88ZluxPlvNAAUCkjPNB3gCv1urKPyDLYDVDAgtnEaSwDsFfSKrb/sDioTST/OnzQ05UCNYcgBSa06SZhNqsrl8amy91cLV8am4RQS9wZYTbSC9wRaorcqKCMegIZeY1+jrlR4WzN+/YdcOfYLInxSZAepLtnr+/ZcfR5eITUmU3knyQ2Gbu9G8JcdZWUKthPNXEM6pq9pY6mrgdVwt0gUR80LAcSzxCL52skI4F7+tkxYfLYObZAZyd5+tv4TyrsI9wm+rfGe03apuKspcIcqEbm4RKea2amxIo3d0XKgaIJTbXzguUTDP3zTJAqqbzN3HY8CJqe6+wWKFw7400r0qBw7X7VlUiV5PB7dGMjyLY0fxVDOQKUAy0arWQmpMPqrBTbbDzV6YbfPhaHkjP31huKAooFQOKaHjVvSDlaFAg7o0IrJ14rdGawQEnSfs4oQ5RkxQhQ+shlGV+qisvELOOrKDnNPfjmjc2QISkzEJ7DjRiQ9C0AYjlgbxNhBbNmn79ACVdzFW9O7zFwcJzADAHsW/bsPWGC199/SFM9qTZBEhPkR3a9/7XrVa4FcB5Ts+2B38VWK2y1IJaFWSVIBmoF2P/0JS9t0GCCIDVL40Ka/VASyVDASCW4nVFpUCqLKlxGZUlUvRYak5J+yzlfkzeWh1ouSYAUdNUIDq+kigioTjuOY2hLHyzFQNo1IoA0ELRTbDlubJpUW4DKD1v+17GAa+fQeuOC7RNu232ScLIPBKnphcp4nmZwvZ6DHA5fHbc8VLnG+dPa0s05/AKwUqEdzUbAfSI5BAipmQp5lUGPVtnEXoITHIxqf7dwmxQUcMZUJEVt4FGKEh5H/E2EMGY61tBAH5eBjrmBWq40XJTjfnWCluT3I+H4ygig97/fl70Z4OoWXKvSCBDYUGF0ret5gieKxLg/lnBdTt2veuPx/faZE+8TYD0FNo9+2+54OGHFx9NHWkBtAaAwZjTdumJ9GDEhhhjbdMVmAQu1kou9dnWZIjCY6KRKLTBIKx5n0BzOkgCrq0+iIA1Ccz1TEDzSEwFAkEdN3qTg5N+VxaopHpCmssKgCplAQVaqnClh/Mq1KPSdhoVJOo6gw/6ZUiZmScVb0pXsGvo3Tb4tNnb3z1fZYcMwMjstEwUaK+tRmr0vfF475J6rPk932M5nFh/xQoFs42eD9C8n+ZpAk22Bx7Xs+JREaCgoDozTYJEAL3mqyrGrEsgxAKR6l4JaF6Og2ffjwgIPTgtOrUkFK2RnswZ+SHAfv+5EWCs4JYzpXD7dyLMp11iibmC2KjeyItsvesrMLcLm9UWlEEnGAT887POmr/lwiuuPzK+rpM9OTYB0ilgB/fe/KtV6icouEjgLc4BOIAIrQU5vfvsQgQsBQtN0NJ6MknUO2nNLDWUt8bIay3UKyQIDJp+whIqSOkdbMW0AsJrQjACW0gPQLQ9h0qSLwGiafAhsfQ0rFcASFFQLIDml+BP1RQWmiqEumLK3lN2n2+wrrEHFDgleSNQAa1mMylKND+hvQZWKLD5RzmrMgNqqMGq1+ceHIqrQdgx/buj8ZI03443vyCF5NL6AScftHP21+796Fd7pQSl4RdIVcUEGGOOLEbzriFsCnher3lCzpJzIoGvyWuGxHTlWviOICG1YsuiABZyY2pXbmOsN1H2CkcCqABajkifKcS6vXq90Li4tSkt1Ba6Y/e5gtVhsrzxkt03fGbtnpnsSbUJkE4R+9/9Hz/nocUD72OtbxKUlRLx0OV1VEE83m+kiMg3USV/ElXcAiRdDZPUFMpLeSoL2yw0uoElRTcxWDgPIq4ubuAk7XvO0KvxhLw0Vjhm5KJCtKNMAicRoYhSwq1wclkbM6ELEcbmCS4Jim+5Si9XxQj9ogTV3L2o6p9VG0NZrLk649cOxlE31fBA/6xSIWwhs/w6g42i11o+51HML8Cwaf0miJvyQO38RUyyxxyRWrVluF8/z/nkOCGttsfAPNQTnJxgDxYpfDfyhqxNeGPLgcZmUxhJ1O12IeqgnpbMlZcDdkrcerN0Hg9yvkdvbC2+7bXnLJfkpIaW70KQFhA1SiA/dva2c9/9E1e8yXvST/YU2gRIp5jdvff9L1sJ/kCAF8M6zCLp4llTPKtdAtCriMNBCZCVcgiEUM/KqeN6vAAmiois9N9p85qCmWfKEQLA+zFRKJVYaRbKaOPZaxLtzZTp2WALTxkLMAgRvvkBCIBRTT1j7RVjZBX9XIzpZZuNwFl8+vTP1qbd1m+MPvXKClg8hGiABc11+cavr31ey11l0BibgRcAZJYgaoX3k8oN6TJx43jzs8hs0/q9DgiwgKyx4Ir3E4I4gUQg2MrXz/XjIoSamHF6PHgojq4n56q5XV7ICRUUy8MoQnhYLqR9SKLWQQ9YtKbHlBXM01aG2xiIEmsOprAAWL8jPZiBTB3UAW2kBXNHt4wC6goNALrusXcOxO9ftPtdXzzBf6KTPYE2AdIpaCJSDu+7+ZqV4L0F2K4bvUQdkgBo3WnHRbUjlpyF8UQ3qAUBY/X1wKQP2ibgmmqZqpMgdGGL9qSuIT7r9eQVLt7zCTDtPAcnwDeyprsHkyzS4tjeg3LL+aeizK+VhsZ0Hbmfk0CZYbkWSvXU4vxjo9b2Gzq+MfKqRcSSH4T1/JWDRwYW91z0PP2z9idLCdkd93SONz/t6X/z+hvzTUNvft94/VHLAQnq0F0/cO7go9cM83z9VwYKmR0XpDfPC1G0ficRFMJzBgahUL2hAu9H5ONLhHGb8KlfciaPyLym1EJcgQwdc07C+zEGHkhRZQhV5QbWwnM8Uoj3XLzrhttItgsx2SlhEyCdwnbf7Tef98AS766sb7YnQ3b5JXiSXjdfGCD1HhOiNohWv2TFt7CcUDuW/m9pm4ONVyHX3msqEMjKWkIr4IkQ3lRQg10x3mubopBGwcyidkasEDEeg9LJSyxnBFABikLlQUgDMdvY3YsQwTJYgQmMrEVRF/rzHIqHuxwILMwWINaFB42uDivydWWKBi6+s6uqQbH3teDUQmrHmB/ATCDctH5Q5sFaTHml3E9o3ODOTZoskD0A6AYe19/AI2jaNBqCU7W1HwlJRkjO80CaqjLPpSlqg6kfkf2sCImffn2hwi0CFPZFreZuWb4qGHgDzDPSBzSuh/f0Rqxk+di5Be+bClxPXZsA6TSwu/d98NJlXd4Cwa/ByAbUxn1wbTyY1FDQxi21nkN5YlkN678E9HVMbo0yrjuWSQkh+jHZ0/kCxs5roSxVBbfw1TIoEUa6SDSyYOsJZZEDYRHeMyacWMfbtoGukxU0D2X4UDTvldtoZJCKzb+2VhqeY9FxRqiAC4dqBWob3zwvBwgNSwr9Mjl5AFUFP8fjm3dDbpyfVotThZvWL4n51hFEvKmd5eeMDdcDUKJmu2pDd/2tzYNQWMAB7v36Z3q9NexFDyeWDlQ090RrN64FtTksp2vUsFzqS6RjdRFdozyBsJCDPTylwlaiU+ROxxBTWiAwE+BvhjJcf9Gud9w1vncmO7VsAqTTyA7t/cCVVepHCHmhgEsHJgAaIgMA8f4CcMXwlGOCOUswxW6qh0QsbX+K3A5cWNWYebkfkwHeMpMgNMnQtPMKcFRabqXp10Voz6Yx9XGSYrvmUqX3RKKvU6fMoKrkxU46swTjQiV5o7xxO1CV4l6eEh9CybwCxZL7MKJFH2bzzxOPW8QVNJRFR85PaPyG+VVLzte9vv6x16NXwhrY2YVtHqZ0unWuluAscKkaYvPrDytYbT1/OhsQjq22qGghuVDXcCAa3EMW60cEmDae3pCDMjY1N2T3n+aYWAZbbxcWtNOb6+1nYcCksmBrDA8N5DcKy1t37H7n7ePrNdmpaRMgnWYm+/cPhx75whsq8J4C2W4bMWEtLqz41TwmEWufDjQZIe2nRDbvx+qYYPkpuymWFudbumtDGlEhESEUmDK9mxIqEm0zVrBIOnoGVYkUYRbA6qVIff7JtsMAKU3P9CFG4BgeVUreW5hTwVJ780TOR+dr+R9duqoj1PS6gc7JG78JbPL6KVpcWu1kIyho+aMOK6OtRMrfKaikMFz0GXILL4iQIYOpkFrEGiAkomvSkJw9GCjjLWvZNZVv0gRRPT9kD0tG31aFBahSApQIlzXnaMDrHpgCUyM1KONOyCMFeO+ObS//w0mV+/SyCZBOU/vu3g+d/SMsrwXkOgqfLZAVEEw6wJUWYB1ayaU9bGa1g6X9w48+TB73FxN3RZMlIqy9uuWzOnki85yOWuZZNCwHIHW1tRbomYYOsUaCXXhPNRXoocbIPyUvKqVOXA1gGWkGLzK1dhoAxOtn8jidPwOWZki6C61ctPb+pu+cxPFSZQt0DxAJeNxvkVZw6l+SphOXi3RDISFdPyI8ExuKeXf9ibnWkQGdFxTFq0rrqNZIz65hz5TTAxkLj4DIEK9aTmdwsg1AZRMmvbl0UeaW4DJiRDVtur7WCFr0ep+wfPgZGPY8b/fbH9p4jSc7pW0CpNPc7v3CnnMf+P5DbxXKWyg4FzQvxcRSPe9D4VJURn/hW4MkLT0EU69AWUyak0r9mAD3mho46fFgXlOE9Nr81RCogRAFJldk4R/vQ6TbZuHStuzwoGxcbMlOkoAhlD61OxnDgMssZIRCncHJai1PxSZGG55VNX/En/xrCoWNv5OzY49nvAjmHVraCeT1u9fjl09PXUN2dn56TdRfGdra/PolRpz+wF3eyb0gm3stFNd5QvZbi8i8kFKV2JJqgfwMZO6XH6nZnZUAgE1SaHAvqoX7Yn3ztfEGbAI8QOFHz33O2R/Z/vJrH8Bkp61NgHSG2KF/uek58kNcV6tcW4hnpif/TiOvq2Oy3UBMaghUhQfAPCR0/ZgErS5KYGOqe1KiXlPkCrxDLTTwJ8SCcO6uESKMAICoqUJTIQ9IUkZcFFnq6qL2yXrnMIvB5gpWFZnD0vbpTWmdTow1e1eZXOG1OOGBUfv5FH/vJIzPfYt8/ZZHU36i53uEOiYUs0mESkG7Jmg9gmjXLysl0DzWIYR2A4Ai4DmIgiaaRl74NfMifV4okRSAVM/kXg4EGPUj0mPlbq12TxIy15IDbiIrWN4JDxXKHp5dbt3xSzd+/8f9G5ns1LcJkM4w+84/73nuIz966O0i8iYAZ4lgafUha3VMAJBqmTyHZCmgvh+TvZ2ApBNydZDyEKCG9HxTdUkiTQpE4z/fe5no5GACB/9cZGG1Lb5DdyKrvTfVbunIKHlNlDH7guFn3hWURKGeXisLCusUw6mQUDZ89njGu9pBk94xjyitEZAhzqmdveZ2pH9bBGThYDJQ4rVBFriTFu6DFatqmC3YijCPjerBOTuuF0yN6bxeCOL6cXAVBVqYzkoPxv2I9JeysJzKIdlZdf2MHIioQPQwCz++7Rlnf+j5v3zt9zDZGWMTIJ2hdmD/B5/Ho6u3VZHfI3AuEEn/ZaOLC/TxOkRWF5rLlpRr8n5MHtJjAyd9/h1Txhs4uVFBJdh6oQxhMxhjT5tyE4ImzGrjTZHcwom5n5PnY5T3nMgSyNMv4ZU0nuxQYoe0fAr7HFS3M6f3gOb9ZOSR5vk8tvHKKPO19esnPD+jw0fnKDJX5zA1S8r9hKxAtZRi1Gl/qJCgXPdhOMdxKzKlENYKXA9IUL0nvzUiPAfIFnqhU2heyrOPfT8iPYTOE4w5GolBzfNPswr8oJB/JFuzD++84h3fxWRnnE2AdIbb9z73gWc9+FC9hiJvFmAHUu8k2+g0nAft/Orj1vsxZZBJMkHO5lsHJ89PRc4J9oaDU1CPhYuI7gRbT7+c2XsIVQIRD/O5RxEtNID1uJyBlY+MzIVYqkVrf3oQjdW0K+L/XCLHlT8JwDvx8bWFoeLsGtHAwcGKTy2GB3+tNgTxoGnhuVK2E0TMA3EHFqodp1/qvKBYf1H1AzsRz9n4yXQdYd2HVoUEzV8lgszcXTCu9yMCVFtOQ3ZQAK4ic/q8xGGQe845u9z23Fe+8weY7Iy1CZCeJib79w8Hj37xNyD1bQBeglYAu67+YN5P9GPS5DVgtUy29yQihMfCytKTJei9JaIRIhS4khNAWKfYEqObBJHN4dRyXRcgpHporo1GoIqsHJyA5hmoC1CWo/BVbNaxaad+UOnKwZIaa57X2EiwNnB7dOO9H1ACGIoXXbU8GkrRglUk4NHzAkIVwTf45v34A8GmPBDBwbX3gpCQHDSrFfIfMXlBKT+lb2h4TmcZ7OkkcloQzpuXrf2I9Jc7Rg2R/qhDFXyFpdx6ydbL/mqibz89bAKkp6EduP2mV6HibRR5jbQ6puwhdPVIIiIKTt7WIjrQSgvpAQh18pxvAnLOyY7r8+ioBFCW5zZPB+69LMzXStE2LMSeugtzPso674Zn4POLdaetKko9Aq6gpHs/KM9XwQDCAMMhTBerEzhBwFwvnMh48X5ANn9bD7Ce50nnEgfgvD//iMf5Zg+YcK5QlIhAceAcfJBN7sDgQDa3WVDIIenJGYg4AxBz/+HQmHLh8YjUwR5uCGKG5kmOqdvqbZF/i4IP77zyxn/EZE8rmwDpaWwH9t7yQsjRawX4LQLPAposEWD7lBfaEq2LrTL2/Bsu1Aq2hoH2/9ITIjys0zrcuh0zvOcECWfvNdUILAOgElgRCpZA5EWEABVAm6qEb+oZuOK1Nyt0DysDVn4P6IEj2H0bvrvpvewddWtx2noLtfkDgJ+Lnl9SRMjXovN+XLpPC09HccR5uuaAM9kAwEGooYtryJFWL5RDcv77AQ5OQKcvZ54XgXmbvtUQCfADAn8Gbu3Zufv6/9h8x052ptsESJPhni998pmPHLn3N0FeQ5GXKWU7Et9L2y0t1+QhtqqhMxd1VfacK46nsJ4ZuRSJ+hgnRPj+mCWLhMTS8ygWpaO4mrmDlE6inWFt07Vl9t6UTg6nnidVidiIW1gr5Vdaw0JgBBj6Z1KH05xWew227x9zfCMUbJo/QpR6vYcufNfnm+b5/L0oteFI2DxoF+baWG7Hfi4QkLnz5AWkoA4ejg0tuZZPyuY1Sb03BCUu0FQWLBBp1HIB9P0vAHLbtgu2/+WFL339Dx/N/TrZmWsTIE3W2aF/uPnn61FcA9bXUfBsae3SAWuvnuSJICILtp12CXjBvnpFbWNsBa4IBXI9AsCV79oCoQgWXgeKdo9aG42Ul9J1oNt8tdrTGH0i1Wp8CpVWLol+7sl89wDHYUEQRwkyA1jzunRKdYpURDQDib93jPHDo5xfxVDT+sPrIbWAdMP5w5QR/DrZ3N7NFen9IQ+SRkhwX9Z7DQHNeyKBWfx+CuvzFtaVeaw/GuJ1rdZNUWH2J2WO23b8yg1ff3x37GRnkk2ANNlGk7v2bDv03z/8dVB+V6q8yu6UvmGgWhJOlUXR53T9e+jpNQ8nbZ5Lx5XUu8nzCJHDSn/mvJZb9qw8ZITQ38vhKUcz0+MDes8KBdBCT6AmaZ9N+ascGgtgGXtkGJ2BhxSt7cIJzN/necK/AYCO+dbOHx1brnk/Eaqk1wwNQFZ2COkewOnZSOw4+/Vo4GThOAKxRoG4OCuidkg9IQDAPxHlth0//cy/5qXXPoLJJhvZBEiT/Vi7+7M3/UwlfrsKXqtK406EYPJ8AESOBoCpQphqg0kW6ZfG4T00ijlSbiKpaKu3RSCVszhxIqp/gIYC4/DeGCFyAXBbfRwa3SdCLIsoE809FScGrHkuTmeP71Mqhdb8cJ4W8WPnJ5sHlNefPMVh8/kr+LTTUL24kNRV24qrg5jUW4F7nVCAoIfiqlSjg/ve0ejadpwhlqghuW8U4tNF8KcXXXXjf2GyyY5jEyBNdkJ2eO+HfqFyebWscDUolwIm4kqAJr4KNK8m5VSWjGQ9jBjRMjmSiA32laU/nuvRWj+n5k2pSrmH+kwVABjlpLB+n3femoy8jOTmAL67ksvuk7EL1yW3/GBdcZIRCIQabXxU8w/YvH4Pis6Pcf5Dwqg+B9Sso4XTadpWouV1QjkUF7+EhfrcZTRPyE9kIPFNFH66yPCpi3e//WvjtU822bFsAqTJHrMd2PfBF7MuX1uBqyn4KXv8XtnHFpaLx/pFy9G796RhH2fu6fjILTnQ2YaZ+zl1e3TXj8hjSpDmUYUrIrD9u5M+0nfF+9VFbgw535I+V1V1XYajUAaDMRDONhxfxt8bzw8XET3G+nO+pzt/WjO8VNFqh8w5IIGSC+AXM4mYuoc7i/BkqhVqOSFCRLRRn3q8/1OAT0kZPr1z1zv+7Zg3zWSTHccmQJrspNihvTe9pIpcLcBrKPg5zznZ07cARvWWqLtU78kpXaat59xpsZonK8i1bb+nh9vGuuzTKr1H1dTLaZEo3UoBWanyNzDKq/hxNryXe1uo4oWvcDz7ethsPF54/Pk5P976qUQCpBCnWwc89ucQ+Sf34oKIYJe/zwOR4OBIJO24dC/IXKWvQ/CZQn5qx+4bv3yMW2OyyR61TYA02Um3b++99aKlLK6qqFcJ8OoCnFMFK/ZJf6eQwyCqhfdUi2hZtDV1CxuZYjkQ/zfiRB/+0rc1L9WH/YAOMjoyBUeH8TBY80JsvfFa//5EjK+hqHCc9WtfI44BOpS1zdNp+R+geaQq8ROLEArnGwAofixYrVAh/47CvQPnn33B7uvuPsFbY7LJjmsTIE32hJp86ZPzb913/yuWsrwKwFWoeJF7T/An7qQjl3wIDak5iOleuRSIFJTM8PJQYJ/LgbP3Itrln2bvKlHae28jw4ofvAeH7HKc9PFdjdJ4/Yg2DaO8lV7XeZY1XyMhZEp277EmAKIg1Lb570LZO3D47E+ef97n+dLXd0rrk012Mm0CpMmeVDu87wMXrlB3UeSVIricwKW62XqPpEZq8DEBUkk1ov0pcFFY96YAeNGukRvisAkNPDulCucjoOpslMYZe2I4qeNdBbupbq+tX0QGUq+KKqSnlg12TXL6jeTggcJ0gefIa3JWHfBNEncI+bkZyr6Ld73znsf2S0822YnbBEiTPaV2z/5bLlgujr5iVXG5CC4H8RIKtuzOXLoHZRyDRfS3Q7fzq1oE4//xPr3hnAnjeWc7/0Kw/TzMleJY9o3mzGSvBO3jkzle1bD9Iycr9OsX5FYQyJG2qAFyd0gBr3WJtRGDuVpHIfgyZ7hjBtwxzLc+f+EV1x857g822WRPoE2ANNkpZXLXnm2HDzz8UqBeLiIvr1V+kcRFFu1SdYbuQV/zUW0jHvUTClWJlp/K3pX5XwukMKAn+6vPEO/13wHcO1HAeLzju35A3UXJkcZQP+i+YuefFRp87NzzTFXwLRJfKaX8K1DuuHjnWV+aClQnO5VsAqTJTnm77/abz3uQ5UV1tbpMiMsoclmtuIzEOQRQrStu2osZ23eTHALQA9a4HxTQ8647a54IEjgkOynjox9QC7qteYMWaiMsxBm8eJiwqRAPkvxaIe4UwVfLbPbVc6Teef6VN9x/vOs82WRPtU2ANNlpaSLCQ/tuuaSU1YtqxWWA/CwgOwW4BBXPT2E+kb7FBlL4Kr82WjrWvA9gDGQ9jyBeP67xoXCA9nEHRdq1lV66CgD4jhQcLOABgP9ZCr5a6+zOHbuuP2g1TZNNdlrZBEiTnXEmd+3Z9u1DD+6oUnaK4JIq9RJUXIKCnajcQcoF4rwHBQrPruSmhdnZyR7J6H0AI+R4DONTywajWggqySOgHELFARQcLCwHSRwsrAdesOOcQ1O4bbIzzSZAmuxpZyLCw5+7+dnlIWwHZfuqlAu4wnYp9QIIzxfIBazYLgXnEdgS4CxUbJHYqsA26H9bBLYg2CbEFgBQcBTEIwIchf73SEH7O4mHBTjKivul4F6CR0C5j7UckRnundV6BMJ769m49+JX3vB/k5cz2dM98/9sAAAAB0lEQVTN/h8a0VI1RGVOXAAAAABJRU5ErkJggg==","e":1},{"id":"image_3","w":419,"h":420,"u":"","p":"data:image/png;base64,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","e":1}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"yuan3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[38.462]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":54,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72,"s":[38.462]},{"t":77,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,152,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.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[75.385,75.385,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":5,"s":[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]},"t":50,"s":[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]},"t":54,"s":[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]},"t":59,"s":[110,110,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":64,"s":[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]},"t":72,"s":[75.385,75.385,100]},{"t":77,"s":[60,60,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[15,15],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 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":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"yuan3","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"yuan2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":26,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[100]},{"t":53,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[183,359,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.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":26,"s":[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]},"t":30,"s":[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]},"t":35,"s":[110,110,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":40,"s":[100,100,100]},{"t":53,"s":[60,60,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[15,15],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 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":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"yuan2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"yuan1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":7,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[100]},{"t":30,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[427,388,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.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":3,"s":[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]},"t":7,"s":[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]},"t":12,"s":[110,110,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":17,"s":[100,100,100]},{"t":30,"s":[60,60,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[15,15],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 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":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"yuan1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"p3","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-10,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.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[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]},"t":30,"s":[80,80,100]},{"t":60,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[20,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"p3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"p2","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-10,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.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[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]},"t":30,"s":[105,105,100]},{"t":60,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[40,40],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 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":"填充 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":"变换"}],"nm":"p2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"p1","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":0,"s":[300,276,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":36,"s":[300,266,0],"to":[0,0,0],"ti":[0,0,0]},{"t":72,"s":[300,276,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":[[3.94,0],[0,24.3],[-6.75,6.75],[-9.55,0],[-6.76,-6.75],[0,-9.55]],"o":[[-3.88,0],[0,-9.55],[6.76,-6.75],[9.55,0],[6.75,6.75],[0,24.3]],"v":[[0,48],[-36,-12],[-25.46,-37.46],[0,-48],[25.46,-37.46],[36,-12]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"p1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"zz1","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[315,210,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":[{"ty":"rc","d":1,"s":{"a":0,"k":[210,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"zz1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":2,"nm":"zz2","parent":9,"refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[318,105,0],"ix":2,"l":2},"a":{"a":0,"k":[102,105,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":2,"nm":"zz_zz","refId":"image_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]},{"t":72,"s":[360]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[210,210,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":2,"nm":"zhezhao","td":1,"refId":"image_2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":36,"s":[50]},{"t":72,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[210,210,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":2,"nm":"map","tt":2,"refId":"image_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299.5,299.558,0],"ix":2,"l":2},"a":{"a":0,"k":[209.5,210,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"t2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299.619,657.3,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":36,"s":[98,98,100]},{"t":72,"s":[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],[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":[[-109.041,-9.16],[-118.451,-9.16],[-118.451,-14.7],[-92.831,-14.7],[-92.831,-9.16],[-102.241,-9.16],[-102.241,14.7],[-109.041,14.7]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.05,0],[2.47,1.32],[1.4,2.29],[0,2.89],[-1.37,2.3],[-2.43,1.32],[-3.06,0],[-2.44,-1.31],[-1.4,-2.32],[0,-2.88],[1.4,-2.33],[2.43,-1.31]],"o":[[-3.06,0],[-2.43,-1.31],[-1.37,-2.33],[0,-2.88],[1.4,-2.32],[2.47,-1.31],[3.05,0],[2.43,1.32],[1.4,2.3],[0,2.89],[-1.4,2.29],[-2.44,1.32]],"v":[[0.004,15.206],[-8.276,13.226],[-14.026,7.816],[-16.086,-0.004],[-14.026,-7.774],[-8.276,-13.234],[0.004,-15.204],[8.234,-13.234],[13.984,-7.774],[16.084,-0.004],[13.984,7.816],[8.234,13.226]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.74,0],[-1.4,0.78],[-0.79,1.43],[0,1.82],[0.81,1.42],[1.4,0.78],[1.73,0],[1.4,-0.81],[0.81,-1.43],[0,-1.82],[-0.79,-1.43],[-1.4,-0.81]],"o":[[1.73,0],[1.4,-0.81],[0.81,-1.43],[0,-1.82],[-0.79,-1.43],[-1.4,-0.81],[-1.74,0],[-1.4,0.78],[-0.79,1.42],[0,1.82],[0.81,1.43],[1.4,0.78]],"v":[[0.002,9.412],[4.702,8.232],[7.982,4.872],[9.202,0.002],[7.982,-4.868],[4.702,-8.188],[0.002,-9.408],[-4.708,-8.188],[-8.018,-4.868],[-9.198,0.002],[-8.018,4.872],[-4.708,8.232]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"tr","p":{"a":0,"k":[-75.342,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[4.2,0],[2.35,2.32],[0,4.32],[0,0],[0,0],[0,0],[-4.37,0],[-1.12,1.26],[0,2.72],[0,0],[0,0],[0,0],[2.35,-2.33]],"o":[[-4.2,0],[-2.33,-2.33],[0,0],[0,0],[0,0],[0,5.27],[2.12,0],[1.12,-1.29],[0,0],[0,0],[0,0],[0,4.32],[-2.32,2.32]],"v":[[-41.085,15.2],[-50.905,11.72],[-54.395,1.76],[-54.395,-14.7],[-47.595,-14.7],[-47.595,1.51],[-41.035,9.41],[-36.165,7.52],[-34.485,1.51],[-34.485,-14.7],[-27.765,-14.7],[-27.765,1.76],[-31.295,11.72]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[2.55,0],[2.44,1.28],[1.4,2.29],[0,2.92],[-1.37,2.3],[-2.41,1.29],[-3.02,0],[-2.05,-0.89],[-1.4,-1.68],[0,0],[2.94,0],[1.43,-0.81],[0.82,-1.43],[0,-1.82],[-0.78,-1.43],[-1.42,-0.82],[-1.82,0],[-1.99,2.32],[0,0],[2.07,-0.89]],"o":[[-3,0],[-2.41,-1.32],[-1.37,-2.33],[0,-2.91],[1.4,-2.32],[2.44,-1.31],[2.55,0],[2.07,0.9],[0,0],[-1.99,-2.3],[-1.82,0],[-1.42,0.79],[-0.78,1.43],[0,1.82],[0.82,1.42],[1.43,0.78],[2.94,0],[0,0],[-1.4,1.71],[-2.07,0.9]],"v":[[-6.971,15.206],[-15.121,13.276],[-20.831,7.856],[-22.891,-0.004],[-20.831,-7.814],[-15.121,-13.234],[-6.931,-15.204],[-0.041,-13.864],[5.169,-9.994],[0.799,-5.964],[-6.591,-9.404],[-11.471,-8.194],[-14.831,-4.874],[-16.001,-0.004],[-14.831,4.876],[-11.471,8.236],[-6.591,9.406],[0.799,5.926],[5.169,9.956],[-0.041,13.856]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"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":[[36.72,-14.7],[36.72,14.7],[29.92,14.7],[29.92,2.65],[16.56,2.65],[16.56,14.7],[9.76,14.7],[9.76,-14.7],[16.56,-14.7],[16.56,-3.11],[29.92,-3.11],[29.92,-14.7]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"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]],"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":[[82.324,14.7],[82.284,-2.94],[73.634,11.59],[70.564,11.59],[61.954,-2.56],[61.954,14.7],[55.574,14.7],[55.574,-14.7],[61.204,-14.7],[72.204,3.57],[83.044,-14.7],[88.624,-14.7],[88.714,14.7]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"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":[[118.447,9.24],[118.447,14.7],[95.687,14.7],[95.687,-14.7],[117.907,-14.7],[117.907,-9.24],[102.447,-9.24],[102.447,-2.86],[116.097,-2.86],[116.097,2.44],[102.447,2.44],[102.447,9.24]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":2,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,0.800000011921],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"t2","np":9,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"t1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300.288,589.68,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":36,"s":[105,105,100]},{"t":72,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"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,0],[0,0]],"v":[[14.66,4.226],[-14.72,4.226],[-14.72,-3.904],[14.66,-3.904]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"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":[[22.398,-10.94],[3.708,-10.94],[3.708,-17.02],[26.628,-17.02],[26.628,-24.13],[3.708,-24.13],[3.708,-29.76],[-4.032,-29.76],[-4.032,-10.94],[-21.952,-10.94],[-21.952,11.26],[22.398,11.26]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-1.86,5.12],[0,0],[3.14,-2.82]],"o":[[3.39,-3.39],[0,0],[-1.79,4.61],[0,0]],"v":[[-22.848,29.758],[-14.528,15.678],[-21.888,13.888],[-29.888,26.368]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0,-3.32],[0,0],[0.96,4.35]],"o":[[0.77,4.42],[0,0],[-0.12,-3.32],[0,0]],"v":[[-11.392,16.124],[-10.112,29.564],[-2.372,28.604],[-4.162,15.424]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[-0.7,-3.33],[0,0],[1.98,4.03]],"o":[[1.86,4.22],[0,0],[-0.77,-3.33],[0,0]],"v":[[1.664,16.196],[6.144,29.246],[13.504,27.326],[8.644,14.656]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0,0],[-1.34,-3.65],[0,0],[3.07,4.03]],"o":[[3.07,4.29],[0,0],[-1.6,-3.78],[0,0]],"v":[[14.656,15.806],[22.526,29.566],[29.886,26.756],[21.506,13.376]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"tr","p":{"a":0,"k":[-96.416,-0.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":"变换"}],"nm":"形状","np":7,"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],[3.39,2.94],[0,0],[-1.67,-2.94]],"o":[[-1.85,-3.01],[0,0],[3.46,3.08],[0,0]],"v":[[27.902,-18.236],[18.432,-28.416],[12.672,-24.516],[21.762,-13.956]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[2.3,-2.75],[0.51,3.84],[0,0],[0,0],[0,0],[-0.13,5.95],[0,0],[-0.51,-5.76],[0,0],[0,0],[-3.2,0.96],[0,0],[8.96,-1.22],[-0.32,-1.86],[-3.45,0.57],[0,0],[0,0],[0,0],[0,0],[0,0],[3.65,-0.58],[0,0],[-4.09,0.84],[0,0],[1.15,0],[3.58,0.2],[-0.32,-2.11],[-2.5,1.22],[0,4.16],[0,0],[0,0],[0,0],[3.27,-0.57],[0,0],[0,0],[-1.41,-5.06],[4.92,-2.24],[-1.09,-1.8],[-3.71,3.07],[-4.67,0],[-1.22,11.2],[1.66,1.79],[1.35,0],[1.73,4.93],[-2.88,5.18]],"o":[[-1.67,3.07],[-0.71,-3.26],[0,0],[0,0],[0,0],[-0.51,-5.63],[0,0],[0.07,5.82],[0,0],[0,0],[3.71,-0.76],[0,0],[-6.52,2.11],[0.83,1.72],[3.27,-0.39],[0,0],[0,0],[0,0],[0,0],[0,0],[-5.05,0.9],[0,0],[3.39,-0.64],[0,0],[0,1.03],[-1.16,0.06],[1.09,2.12],[5.18,0.07],[2.56,-1.21],[0,0],[0,0],[0,0],[-3.27,0.58],[0,0],[0,0],[0.77,6.27],[-4.42,3.65],[1.85,1.73],[4.1,-2.12],[2.75,6.27],[5.82,0],[-2.05,-0.83],[-0.32,7.55],[-1.92,0],[4.16,-4.16],[0,0]],"v":[[19.716,-2.75],[13.636,5.95],[11.776,-4.86],[28.416,-4.86],[28.416,-12.1],[11.006,-12.1],[10.366,-29.63],[2.366,-29.63],[3.136,-12.1],[-9.154,-12.1],[-9.154,-20.74],[1.276,-23.3],[-3.844,-29.76],[-29.244,-24.38],[-27.074,-17.98],[-16.834,-19.39],[-16.834,-12.1],[-28.924,-12.1],[-28.924,-4.86],[-16.834,-4.86],[-16.834,3.71],[-30.144,5.89],[-28.284,13.57],[-16.834,11.26],[-16.834,20.54],[-18.364,21.89],[-26.814,21.82],[-24.124,29.5],[-12.604,28.03],[-9.154,20.61],[-9.154,9.66],[1.276,7.55],[0.706,0.64],[-9.154,2.43],[-9.154,-4.86],[3.836,-4.86],[7.106,12.29],[-7.164,21.31],[-2.114,27.46],[9.726,19.65],[20.736,29.76],[30.146,15.74],[23.876,11.39],[21.436,22.02],[15.806,14.14],[26.436,0.13]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"tr","p":{"a":0,"k":[-31.968,0.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":"变换"}],"nm":"形状","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,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.248,-22.496],[13.248,-18.276],[-16.192,-18.276],[-16.192,-22.496]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-1.09,6.47],[1.86,1.02],[4.93,0],[0,0],[0,2.63],[0,0],[0,0],[0,0],[0,0],[0,0],[-12.36,0]],"o":[[9.15,0],[-2.24,-0.32],[-0.57,3.33],[0,0],[-6.91,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.3],[0,0]],"v":[[14.468,-1.374],[27.518,-9.314],[20.348,-11.424],[13.758,-7.524],[-8.002,-7.524],[-16.192,-10.594],[-16.192,-11.744],[20.738,-11.744],[20.738,-29.024],[-24.192,-29.024],[-24.192,-10.464],[-7.932,-1.374]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.05,-3.14],[0,0],[3.39,2.56],[0,0],[0,0],[1.28,-0.07],[3.9,0.2],[-0.39,-2.05],[-3.08,0.96],[0,3.97],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[4.16,2.95],[0,0],[-1.79,-2.5],[0,0],[0,0],[0,0.96],[-1.21,0],[1.02,1.92],[5.89,0],[3,-0.96],[0,0],[0,0],[0,0]],"v":[[28.348,3.612],[15.228,3.612],[15.228,0.032],[7.358,0.032],[7.358,3.612],[-28.352,3.612],[-28.352,10.722],[-16.832,10.722],[-19.902,13.532],[-8.892,24.032],[-3.392,18.852],[-12.092,10.722],[7.358,10.722],[7.358,21.022],[5.628,22.372],[-4.542,22.172],[-1.982,29.022],[11.268,28.002],[15.228,21.282],[15.228,10.722],[28.348,10.722]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"tr","p":{"a":0,"k":[31.84,0.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":"变换"}],"nm":"形状","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],[1.41,2.88],[0,0],[-0.77,-2.56],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.77,-2.5],[0,0],[1.15,2.69],[0,0],[0,0],[0,0],[0,0]],"v":[[29.22,-19.844],[12.45,-19.844],[16.93,-21.244],[13.15,-30.464],[5.86,-28.544],[9.12,-19.844],[-3.36,-19.844],[-3.36,-13.184],[29.22,-13.184]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.57,-2.24],[0,0],[1.34,2.69],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[1.15,2.68],[0,0],[-0.64,-2.3],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-19.36,-2.884],[-19.36,-12.604],[-16.42,-4.284],[-11.68,-6.274],[-15.07,-14.784],[-19.36,-13.124],[-19.36,-16.384],[-10.98,-16.384],[-10.98,-2.884]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0.13,0.19],[0,1.47],[0,0],[0,0],[0,0],[5.19,-6.02],[0,1.22],[0,0],[0,0],[-0.76,2.3],[0,0],[0.64,-2.56],[0,0],[0,0],[0,0],[0,0],[0,0],[3.97,-6.46],[-1.22,-1.08],[-0.25,8.06],[-0.64,-2.37],[0,0],[1.47,2.94],[0,0],[0,1.02],[0,0],[0,0],[0.71,0],[2.05,0.13],[-0.19,-1.85],[-1.86,1.15],[-0.38,0.84],[-1.21,-1.15],[0,7.87],[0,0],[0,0],[0,0],[-1.08,-1.15],[-1.47,0],[0,0],[-0.89,0.7],[-0.38,1.48],[-0.06,3.13],[1.22,1.03],[0.06,-1.09],[0.19,-0.26],[0.25,0]],"o":[[-0.26,0],[-0.12,-0.26],[0,0],[0,0],[0,0],[0,6.33],[0.19,-0.9],[0,0],[0,0],[0.76,-2.05],[0,0],[-0.26,2.3],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.06,7.81],[1.54,0.71],[3.84,-6.08],[1.41,2.88],[0,0],[-0.83,-2.37],[0,0],[0,-1.03],[0,0],[0,0],[0,0.77],[-0.7,0],[0.83,1.73],[3.71,0],[0.89,-0.51],[1.73,0.84],[6.28,-6.59],[0,0],[0,0],[0,0],[0,4.8],[1.03,1.09],[0,0],[1.22,0],[0.77,-0.77],[0.32,-1.47],[-1.6,-0.58],[-0.06,3.2],[-0.13,1.09],[-0.13,0.19],[0,0]],"v":[[23.648,22.98],[23.068,22.72],[22.878,20.16],[22.878,-8.38],[1.058,-8.38],[1.058,4.93],[-4.642,25.41],[-4.382,22.27],[-4.382,-22.27],[-13.212,-22.27],[-10.852,-28.86],[-18.462,-30.08],[-19.932,-22.27],[-25.952,-22.27],[-25.952,-2.88],[-30.052,-2.88],[-30.052,3.2],[-25.952,3.2],[-30.432,26.75],[-24.732,30.46],[-19.492,7.17],[-15.902,15.94],[-11.172,13.76],[-15.262,4.61],[-19.422,6.34],[-19.362,3.2],[-10.972,3.2],[-10.972,22.21],[-12.002,23.23],[-16.862,23.17],[-14.942,29.63],[-6.812,28.29],[-4.962,26.3],[0.668,30.14],[8.098,4.99],[8.098,-1.79],[15.838,-1.79],[15.838,20.35],[17.308,27.65],[21.408,29.25],[24.478,29.25],[27.998,28.29],[29.788,25.02],[30.428,16.58],[25.758,13.95],[25.568,20.8],[25.118,22.72],[24.418,22.98]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"tr","p":{"a":0,"k":[95.872,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":2,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"t1","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/app/src/main/assets/touch_ytg.json b/app/src/main/assets/touch_ytg.json
new file mode 100644
index 0000000..5173019
--- /dev/null
+++ b/app/src/main/assets/touch_ytg.json
@@ -0,0 +1 @@
+{"v":"5.12.2","fr":24,"ip":0,"op":192,"w":600,"h":600,"nm":"Frame 5","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"T22","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[299.786,381.431,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":0,"s":[102,102,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":24,"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":48,"s":[102,102,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":72,"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":96,"s":[102,102,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":120,"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":144,"s":[102,102,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":168,"s":[100,100,100]},{"t":192,"s":[102,102,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],[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":[[-109.041,14.7],[-109.041,-9.16],[-118.451,-9.16],[-118.451,-14.7],[-92.831,-14.7],[-92.831,-9.16],[-102.241,-9.16],[-102.241,14.7]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.29,0],[1.99,0.76],[1.45,1.37],[0.81,1.85],[0,2.19],[-0.79,1.84],[-1.46,1.37],[-1.96,0.76],[-2.3,0],[-1.93,-0.75],[-1.43,-1.38],[-0.81,-1.85],[0,-2.21],[0.82,-1.87],[1.46,-1.37],[1.96,-0.75]],"o":[[-2.33,0],[-1.96,-0.75],[-1.43,-1.37],[-0.79,-1.85],[0,-2.18],[0.81,-1.85],[1.45,-1.38],[1.96,-0.75],[2.32,0],[1.96,0.76],[1.46,1.37],[0.82,1.82],[0,2.19],[-0.81,1.85],[-1.43,1.35],[-1.93,0.76]],"v":[[-75.298,15.206],[-81.768,14.066],[-86.888,10.876],[-90.248,6.046],[-91.428,-0.004],[-90.248,-6.044],[-86.848,-10.874],[-81.728,-14.074],[-75.338,-15.204],[-68.958,-14.074],[-63.878,-10.874],[-60.478,-6.044],[-59.258,-0.004],[-60.478,6.086],[-63.878,10.916],[-68.958,14.066]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-1.32,0],[-1.09,0.45],[-0.84,0.84],[-0.45,1.15],[0,1.4],[0.48,1.14],[0.84,0.84],[1.12,0.45],[1.31,0],[1.12,-0.45],[0.84,-0.84],[0.48,-1.15],[0,-1.4],[-0.45,-1.18],[-0.81,-0.84],[-1.12,-0.44]],"o":[[1.31,0],[1.12,-0.44],[0.84,-0.84],[0.48,-1.15],[0,-1.4],[-0.45,-1.15],[-0.81,-0.84],[-1.12,-0.45],[-1.32,0],[-1.09,0.45],[-0.84,0.84],[-0.45,1.14],[0,1.37],[0.48,1.15],[0.84,0.84],[1.12,0.45]],"v":[[-75.34,9.412],[-71.73,8.732],[-68.79,6.802],[-66.86,3.822],[-66.14,0.002],[-66.86,-3.818],[-68.79,-6.808],[-71.69,-8.738],[-75.34,-9.408],[-79,-8.738],[-81.89,-6.808],[-83.87,-3.818],[-84.54,0.002],[-83.87,3.822],[-81.94,6.802],[-79,8.732]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[4.18,0],[2.35,2.32],[0,4.32],[0,0],[0,0],[0,0],[-1.15,-1.23],[-2.08,0],[-1.15,1.23],[0,2.8],[0,0],[0,0],[0,0],[2.35,-2.33]],"o":[[-4.17,0],[-2.35,-2.33],[0,0],[0,0],[0,0],[0,2.8],[1.14,1.23],[2.07,0],[1.14,-1.23],[0,0],[0,0],[0,0],[0,4.32],[-2.35,2.32]],"v":[[-41.085,15.2],[-50.865,11.72],[-54.395,1.76],[-54.395,-14.7],[-47.595,-14.7],[-47.595,1.51],[-45.865,7.56],[-41.035,9.41],[-36.205,7.56],[-34.485,1.51],[-34.485,-14.7],[-27.765,-14.7],[-27.765,1.76],[-31.295,11.72]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[2.57,0],[1.96,0.72],[1.42,1.38],[0.81,1.85],[0,2.22],[-0.79,1.85],[-1.43,1.38],[-1.93,0.73],[-2.3,0],[-2.05,-0.89],[-1.4,-1.71],[0,0],[1.23,0.56],[1.45,0],[1.14,-0.45],[0.84,-0.84],[0.48,-1.15],[0,-1.4],[-0.45,-1.15],[-0.84,-0.84],[-1.15,-0.45],[-1.38,0],[-1.23,0.56],[-1.01,1.17],[0,0],[2.07,-0.89]],"o":[[-2.27,0],[-1.94,-0.76],[-1.43,-1.37],[-0.79,-1.84],[0,-2.21],[0.81,-1.84],[1.45,-1.37],[1.93,-0.75],[2.55,0],[2.07,0.87],[0,0],[-1.01,-1.15],[-1.23,-0.59],[-1.38,0],[-1.15,0.45],[-0.84,0.84],[-0.45,1.15],[0,1.4],[0.48,1.14],[0.84,0.84],[1.14,0.45],[1.45,0],[1.23,-0.59],[0,0],[-1.4,1.71],[-2.05,0.9]],"v":[[-6.971,15.206],[-13.311,14.116],[-18.351,10.916],[-21.711,6.086],[-22.891,-0.004],[-21.711,-6.094],[-18.351,-10.924],[-13.271,-14.074],[-6.931,-15.204],[-0.041,-13.864],[5.169,-9.994],[0.799,-5.964],[-2.561,-8.524],[-6.591,-9.404],[-10.371,-8.734],[-13.361,-6.804],[-15.331,-3.824],[-16.001,-0.004],[-15.331,3.826],[-13.361,6.806],[-10.371,8.736],[-6.591,9.406],[-2.561,8.566],[0.799,5.926],[5.169,9.956],[-0.041,13.856]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[29.92,-14.7],[36.72,-14.7],[36.72,14.7],[29.92,14.7]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.56,14.7],[9.76,14.7],[9.76,-14.7],[16.56,-14.7]],"c":true},"ix":2},"nm":"路径 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[30.42,2.642],[16.06,2.642],[16.06,-3.108],[30.42,-3.108]],"c":true},"ix":2},"nm":"路径 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"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],[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":[[55.574,14.7],[55.574,-14.7],[61.204,-14.7],[73.714,6.05],[70.734,6.05],[83.044,-14.7],[88.624,-14.7],[88.714,14.7],[82.324,14.7],[82.284,-4.91],[83.464,-4.91],[73.634,11.59],[70.564,11.59],[60.534,-4.91],[61.954,-4.91],[61.954,14.7]],"c":true},"ix":2},"nm":"路径 9","mn":"ADBE Vector Shape - Group","hd":false},{"ind":9,"ty":"sh","ix":10,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[101.945,-2.856],[116.095,-2.856],[116.095,2.434],[101.945,2.434]],"c":true},"ix":2},"nm":"路径 10","mn":"ADBE Vector Shape - Group","hd":false},{"ind":10,"ty":"sh","ix":11,"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":[[102.447,9.24],[118.447,9.24],[118.447,14.7],[95.687,14.7],[95.687,-14.7],[117.907,-14.7],[117.907,-9.24],[102.447,-9.24]],"c":true},"ix":2},"nm":"路径 11","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,0.800000011921],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"形状","np":13,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":384,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"T11","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300.391,259.939,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":24,"s":[104,104,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":48,"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":72,"s":[104,104,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":96,"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":120,"s":[104,104,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":144,"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":168,"s":[104,104,100]},{"t":192,"s":[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":[[-111.072,-42.224],[-111.072,-33.964],[-81.692,-33.964],[-81.692,-42.224]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.83,4.42],[0,0],[-0.07,-3.39],[0,0]],"o":[[0,0],[0.96,4.29],[0,0],[0,-3.39]],"v":[[-107.808,-22.004],[-100.508,-22.704],[-98.718,-9.454],[-106.468,-8.494]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[1.86,4.16],[0,0],[-0.76,-3.39],[0,0]],"o":[[0,0],[1.92,4.03],[0,0],[-0.64,-3.39]],"v":[[-94.624,-21.936],[-87.584,-23.536],[-82.724,-10.736],[-90.204,-8.816]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[3.01,4.28],[0,0],[-1.6,-3.78],[0,0]],"o":[[0,0],[3.13,4.1],[0,0],[-1.34,-3.71]],"v":[[-81.568,-22.316],[-74.718,-24.816],[-66.268,-11.376],[-73.698,-8.496]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[-1.85,4.67],[0,0],[3.33,-3.46],[0,0]],"o":[[0,0],[-1.85,5.12],[0,0],[3.14,-2.75]],"v":[[-118.308,-24.304],[-110.948,-22.444],[-119.268,-8.304],[-126.368,-11.764]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"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":[[-118.432,-49.328],[-100.452,-49.328],[-100.452,-68.208],[-92.642,-68.208],[-92.642,-62.508],[-69.602,-62.508],[-69.602,-55.348],[-92.642,-55.348],[-92.642,-49.328],[-73.822,-49.328],[-73.822,-26.868],[-118.432,-26.868]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"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],[0,0],[0,0],[0,0],[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]],"v":[[-55.714,-32.814],[-47.524,-32.814],[-47.524,-18.484],[-35.934,-18.484],[-35.934,-36.594],[-61.024,-36.594],[-61.024,-44.274],[-35.934,-44.274],[-35.934,-51.694],[-56.414,-51.694],[-56.414,-59.244],[-35.934,-59.244],[-35.934,-68.144],[-27.744,-68.144],[-27.744,-59.244],[-7.524,-59.244],[-7.524,-51.694],[-27.744,-51.694],[-27.744,-44.274],[-3.294,-44.274],[-3.294,-36.594],[-27.744,-36.594],[-27.744,-18.484],[-16.604,-18.484],[-16.604,-32.944],[-8.604,-32.944],[-8.604,-8.044],[-16.604,-8.044],[-16.604,-10.994],[-55.714,-10.994]],"c":true},"ix":2},"nm":"路径 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[3.46,3.26],[0,0],[-2.11,-2.88],[0,0]],"o":[[0,0],[3.46,3.01],[0,0],[-1.92,-2.95]],"v":[[3.616,-62.702],[9.116,-66.992],[19.296,-56.692],[13.406,-51.822]],"c":true},"ix":2},"nm":"路径 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"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],[4.74,-3.97],[1.6,1.03],[-1.09,3.65],[0,0],[0,0],[0,0],[0,1.54],[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],[-1.22,5.76],[-1.09,-1.47],[3.39,-2.81],[0,0],[0,0],[0,0],[0.13,-1.66],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[44.444,-66.42],[52.064,-66.42],[52.064,-57.2],[59.424,-57.2],[59.424,-49.78],[52.064,-49.78],[52.064,-40.88],[60.704,-40.88],[60.704,-33.52],[52.064,-33.52],[52.064,-19.12],[44.444,-19.12],[44.444,-33.52],[36.064,-33.52],[27.614,-18.16],[21.854,-23.54],[28.254,-33.52],[21.024,-33.52],[21.024,-40.88],[29.474,-40.88],[29.604,-45.68],[29.604,-49.78],[21.534,-49.78],[21.534,-57.2],[29.604,-57.2],[29.604,-66.48],[37.154,-66.48],[37.154,-57.2],[44.444,-57.2]],"c":true},"ix":2},"nm":"路径 9","mn":"ADBE Vector Shape - Group","hd":false},{"ind":9,"ty":"sh","ix":10,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.06,-1.67],[0,0],[0,0]],"o":[[0,0],[0,1.54],[0,0],[0,0],[0,0]],"v":[[37.154,-49.776],[37.154,-45.616],[37.024,-40.876],[44.444,-40.876],[44.444,-49.776]],"c":true},"ix":2},"nm":"路径 10","mn":"ADBE Vector Shape - Group","hd":false},{"ind":10,"ty":"sh","ix":11,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.47,-0.77],[-7.17,0],[-6.4,0.96],[0.07,-2.17],[6.59,0],[4.67,2.56],[1.47,0],[2.3,-3.78],[0,0],[-2.68,1.22],[0,0],[0,0],[0,0]],"o":[[0,0],[0.96,0.64],[4.36,2.5],[6.79,0],[-0.83,2.05],[-4.54,0.26],[-8.06,0],[-2.94,-1.6],[-1.92,0],[0,0],[2.94,-3.07],[0,0],[0,0],[0,0],[0,0]],"v":[[17.508,-44.912],[17.508,-21.492],[21.148,-19.312],[38.558,-16.492],[62.178,-17.972],[59.998,-9.972],[38.238,-9.332],[19.998,-12.592],[13.408,-16.172],[6.368,-8.172],[1.248,-15.472],[9.948,-22.132],[9.948,-37.812],[2.528,-37.812],[2.528,-44.912]],"c":true},"ix":2},"nm":"路径 11","mn":"ADBE Vector Shape - Group","hd":false},{"ind":11,"ty":"sh","ix":12,"ks":{"a":0,"k":{"i":[[4.03,2.68],[0,0],[-20.67,-13.06],[0.45,-2.37],[6.52,12.03],[11.58,-6.85],[2.05,1.47],[-3.77,16.96]],"o":[[0,0],[20.48,14.91],[-1.21,2.11],[-13.18,-7.36],[-5.06,14.65],[-1.41,-1.6],[13.7,-6.79],[-2.75,-3.84]],"v":[[81.124,-61.164],[85.924,-67.824],[126.364,-17.454],[122.654,-8.624],[97.444,-41.134],[72.864,-8.814],[65.824,-15.084],[91.164,-51.244]],"c":true},"ix":2},"nm":"路径 12","mn":"ADBE Vector Shape - Group","hd":false},{"ind":12,"ty":"sh","ix":13,"ks":{"a":0,"k":{"i":[[0.7,3.97],[0,0],[-0.07,-3.14],[0,0]],"o":[[0,0],[0.84,3.9],[0,0],[0,-3.13]],"v":[[-107.296,55.214],[-100.196,54.384],[-98.526,66.484],[-106.076,67.564]],"c":true},"ix":2},"nm":"路径 13","mn":"ADBE Vector Shape - Group","hd":false},{"ind":13,"ty":"sh","ix":14,"ks":{"a":0,"k":{"i":[[1.41,3.96],[0,0],[-0.51,-3.2],[0,0]],"o":[[0,0],[1.6,3.78],[0,0],[-0.38,-3.14]],"v":[[-94.24,55.092],[-87.07,53.872],[-83.3,65.842],[-90.98,67.312]],"c":true},"ix":2},"nm":"路径 14","mn":"ADBE Vector Shape - Group","hd":false},{"ind":14,"ty":"sh","ix":15,"ks":{"a":0,"k":{"i":[[2.88,4.16],[0,0],[-1.6,-3.52],[0,0]],"o":[[0,0],[2.95,3.84],[0,0],[-1.35,-3.45]],"v":[[-81.184,54.964],[-74.404,52.144],[-66.274,64.944],[-73.564,68.204]],"c":true},"ix":2},"nm":"路径 15","mn":"ADBE Vector Shape - Group","hd":false},{"ind":15,"ty":"sh","ix":16,"ks":{"a":0,"k":{"i":[[-2.05,4.48],[0,0],[2.62,-3.59],[0,0]],"o":[[0,0],[-2.05,4.67],[0,0],[2.56,-3.01]],"v":[[-118.242,52.592],[-110.882,54.512],[-118.752,68.212],[-126.112,65.202]],"c":true},"ix":2},"nm":"路径 16","mn":"ADBE Vector Shape - Group","hd":false},{"ind":16,"ty":"sh","ix":17,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-1.99,0],[-0.19,4.55],[-1.72,-0.51],[4.8,0],[-0.32,17.28],[0,0],[0.9,-3.52],[-1.86,-1.47],[0,0],[2.43,1.67],[4.54,-2.81],[1.66,1.28],[-1.73,3.65],[0,0],[0,0],[0,0],[0,0],[2.18,-1.16],[4.29,0],[0.9,1.99],[-0.83,0],[0,0.77],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.19,2.95],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[-0.7,17.79],[0.89,0],[1.41,1.22],[-0.7,7.88],[-8.2,0],[0,0],[-0.26,4.36],[3.01,1.86],[0,0],[-1.47,-1.35],[-2.05,4.36],[-0.9,-1.73],[3.97,-2.37],[0,0],[0,0],[0,0],[0,0],[0,3.46],[-2.17,1.08],[-0.19,-1.99],[2.56,0.13],[0.9,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.45,-2.43],[0,0],[0,0],[0,0],[0,0]],"v":[[-93.598,7.728],[-86.368,7.728],[-86.558,16.688],[-73.698,16.688],[-72.668,44.658],[-71.198,38.188],[-65.508,41.068],[-72.988,51.248],[-80.928,23.148],[-86.878,23.148],[-88.548,34.988],[-80.928,40.108],[-84.768,46.258],[-90.848,41.708],[-100.508,52.398],[-105.248,46.708],[-96.988,37.678],[-102.368,34.418],[-102.238,34.228],[-109.028,35.948],[-109.028,43.758],[-111.778,50.228],[-121.248,51.508],[-123.298,44.588],[-117.218,44.718],[-116.068,43.698],[-116.068,37.748],[-124.508,39.858],[-126.048,32.428],[-116.068,30.318],[-116.068,23.408],[-124.578,23.408],[-124.578,16.368],[-116.068,16.368],[-116.068,7.988],[-109.028,7.988],[-109.028,16.368],[-102.368,16.368],[-102.368,23.408],[-109.028,23.408],[-109.028,28.718],[-102.688,27.248],[-101.988,33.838],[-98.718,29.108],[-94.948,31.218],[-93.988,23.148],[-101.218,23.148],[-101.218,16.688],[-93.728,16.688]],"c":true},"ix":2},"nm":"路径 17","mn":"ADBE Vector Shape - Group","hd":false},{"ind":17,"ty":"sh","ix":18,"ks":{"a":0,"k":{"i":[[3.26,3.91],[0,0],[-1.92,-3.33],[0,0]],"o":[[0,0],[3.26,3.65],[0,0],[-1.79,-3.39]],"v":[[-57.184,11.308],[-51.294,7.408],[-41.764,19.378],[-48.034,23.918]],"c":true},"ix":2},"nm":"路径 18","mn":"ADBE Vector Shape - Group","hd":false},{"ind":18,"ty":"sh","ix":19,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-59.104,22],[-51.234,22],[-51.234,67.82],[-59.104,67.82]],"c":true},"ix":2},"nm":"路径 19","mn":"ADBE Vector Shape - Group","hd":false},{"ind":19,"ty":"sh","ix":20,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[2.69,-1.21],[5.95,0.07],[1.09,1.92],[-1.28,0.06],[0,1.28],[0,0],[0,0]],"o":[[0,0],[0,0],[0,4.16],[-2.69,1.22],[-0.39,-2.04],[3.78,0.19],[1.22,0],[0,0],[0,0],[0,0]],"v":[[-40.864,9.904],[-5.084,9.904],[-5.084,59.244],[-8.734,66.604],[-21.404,67.884],[-24.034,60.654],[-14.564,60.784],[-12.894,59.124],[-12.894,17.264],[-40.864,17.264]],"c":true},"ix":2},"nm":"路径 20","mn":"ADBE Vector Shape - Group","hd":false},{"ind":20,"ty":"sh","ix":21,"ks":{"a":0,"k":{"i":[[1.34,2.43],[0,0],[-0.83,-2.43],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.35,-1.54],[0,0],[0,0],[0,0],[0,0],[1.99,-1.28],[4.23,0],[0.96,2.18],[-0.77,0.07],[0,0.9],[0,0],[0,0],[0,0],[-2.94,0.77],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.7,0.58],[-2.94,9.47],[0,0],[1.28,-2.88],[0,0]],"o":[[0,0],[1.79,2.75],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.34,1.86],[0,0],[0,0],[0,0],[0,0],[0,3.65],[-2.05,1.28],[-0.19,-2.05],[2.24,0.07],[0.77,0],[0,0],[0,0],[0,0],[2.24,-0.51],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.96,-1.02],[5.89,-5.82],[0,0],[-1.02,2.95],[0,0],[-0.83,-2.43]],"v":[[40.864,10.926],[47.454,8.306],[51.804,17.196],[47.844,18.926],[60.194,18.926],[60.194,25.906],[49.884,25.906],[49.884,31.596],[59.424,31.596],[59.424,38.386],[49.884,38.386],[49.884,44.146],[59.364,44.146],[59.364,50.926],[49.884,50.926],[49.884,57.006],[61.604,57.006],[61.604,63.986],[34.844,63.986],[34.844,68.016],[27.484,68.016],[27.484,33.456],[23.454,38.516],[21.984,36.846],[22.754,41.966],[16.484,43.826],[16.484,59.186],[13.854,66.156],[4.764,67.696],[2.724,60.206],[8.034,60.206],[9.054,59.116],[9.054,45.936],[2.914,47.726],[1.184,40.306],[9.054,38.386],[9.054,26.736],[1.954,26.736],[1.954,19.636],[9.054,19.636],[9.054,7.856],[16.484,7.856],[16.484,19.636],[22.814,19.636],[22.814,26.736],[16.484,26.736],[16.484,36.466],[20.644,35.376],[17.954,32.816],[31.904,8.176],[39.134,10.156],[35.684,18.926],[44.514,18.926]],"c":true},"ix":2},"nm":"路径 21","mn":"ADBE Vector Shape - Group","hd":false},{"ind":21,"ty":"sh","ix":22,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[34.848,38.384],[34.848,44.144],[42.718,44.144],[42.718,38.384]],"c":true},"ix":2},"nm":"路径 22","mn":"ADBE Vector Shape - Group","hd":false},{"ind":22,"ty":"sh","ix":23,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[34.848,31.604],[42.718,31.604],[42.718,25.904],[34.848,25.904]],"c":true},"ix":2},"nm":"路径 23","mn":"ADBE Vector Shape - Group","hd":false},{"ind":23,"ty":"sh","ix":24,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[34.848,50.928],[34.848,57.008],[42.718,57.008],[42.718,50.928]],"c":true},"ix":2},"nm":"路径 24","mn":"ADBE Vector Shape - Group","hd":false},{"ind":24,"ty":"sh","ix":25,"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],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[2.11,-2.56],[0,0],[0,0],[0,0],[2.17,-1.34],[1.54,1.48],[-4.03,5.82],[0,0],[0,0],[0,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],[-1.73,3.01],[0,0],[0,0],[0,0],[-1.99,1.66],[-0.9,-1.66],[6.14,-3.39],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[67.1,11.632],[79.97,11.632],[79.97,7.852],[87.46,7.852],[87.46,11.632],[104.35,11.632],[104.35,7.792],[111.84,7.792],[111.84,11.632],[124.38,11.632],[124.38,18.352],[111.84,18.352],[111.84,22.452],[104.35,22.452],[104.35,18.352],[87.46,18.352],[87.46,19.892],[93.98,21.492],[92.38,25.452],[124,25.452],[124,32.242],[88.93,32.242],[83.17,40.622],[83.17,67.952],[75.94,67.952],[75.94,48.052],[69.73,52.592],[64.8,46.252],[80.22,32.242],[67.3,32.242],[67.3,25.452],[84.26,25.452],[85.54,22.512],[79.97,22.512],[79.97,18.352],[67.1,18.352]],"c":true},"ix":2},"nm":"路径 25","mn":"ADBE Vector Shape - Group","hd":false},{"ind":25,"ty":"sh","ix":26,"ks":{"a":0,"k":{"i":[[0,0],[-1.66,1.21],[0,0],[0,0],[0,0],[0,0],[0,0],[3.91,-2.37],[0,0],[0,0],[0,0],[0,0],[0,0],[2.49,-1.02],[4.48,0],[0.96,1.86],[-0.9,0],[0,0.77],[0,0],[0,0],[0,0],[0,0]],"o":[[1.67,-0.9],[0,0],[0,0],[0,0],[0,0],[0,0],[-3.07,2.75],[0,0],[0,0],[0,0],[0,0],[0,0],[0,3.33],[-2.37,1.02],[-0.32,-1.92],[2.82,0.13],[0.89,-0.07],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[102.878,45.04],[107.998,41.78],[91.428,41.78],[91.428,35.82],[115.108,35.82],[116.578,35.44],[121.058,39.09],[110.238,47.15],[110.238,48.24],[124.958,48.24],[124.958,54.7],[110.238,54.7],[110.238,60.72],[107.108,66.8],[96.988,67.82],[94.688,61.36],[101.668,61.49],[102.878,60.46],[102.878,54.7],[86.368,54.7],[86.368,48.24],[102.878,48.24]],"c":true},"ix":2},"nm":"路径 26","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 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":"填充 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":"变换"}],"nm":"形状","np":28,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":384,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"hand","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":92,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[100]},{"t":172,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":92,"s":[-33]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[0]},{"t":172,"s":[-33]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":92,"s":[517]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[427]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[427]},{"t":172,"s":[517]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":92,"s":[560]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":120,"s":[477]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[477]},{"t":172,"s":[560]}],"ix":4}},"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":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[{"i":[[-0.595,-2.255],[-1.997,-0.035],[0,0],[-1.33,-0.584],[-0.994,-1.059],[-0.499,-1.365],[0.077,-1.451],[0,0],[31.29,0],[7.281,5.763],[0.618,0.624],[0,0],[-0.166,3.145],[-2.308,2.143],[-2.905,0],[-2.102,-2.004],[0,0],[0,0],[-2.069,2.125],[-2.965,0.047],[-1.321,-0.591],[-0.991,-1.055],[-0.507,-1.356],[0.055,-1.446],[0,0],[-1.616,0.151],[-1.516,-0.579],[-1.104,-1.189],[-0.464,-1.555],[-2.094,0],[-1.834,-1.441]],"o":[[1.648,-1.128],[0,0],[1.453,0.015],[1.33,0.584],[0.994,1.059],[0.499,1.365],[0,0],[0,21.401],[-9.231,1.007],[-0.762,-0.438],[0,0],[-2.07,-2.373],[0.166,-3.145],[2.102,-2.004],[2.905,0],[0,0],[0,0],[-0.032,-2.965],[2.069,-2.125],[1.447,0.036],[1.321,0.591],[0.991,1.055],[0.507,1.356],[0,0],[1.382,-0.85],[1.616,-0.151],[1.516,0.579],[1.104,1.189],[1.782,-1.098],[2.332,0.044],[1.834,1.441]],"v":[[31.737,-11.366],[37.341,-13.046],[37.341,-13.034],[41.559,-12.126],[45.083,-9.635],[47.346,-5.961],[47.985,-1.694],[47.985,20.985],[13.809,59.791],[-11.961,52.37],[-14.043,50.768],[-45.014,18.825],[-47.983,10.221],[-44.126,1.978],[-36.327,-1.145],[-28.527,1.978],[-21.723,8.835],[-21.723,-48.66],[-18.543,-56.608],[-10.683,-60],[-6.489,-59.051],[-2.986,-56.557],[-0.717,-52.905],[-0.033,-48.66],[-0.033,-23.659],[4.525,-25.181],[9.285,-24.531],[13.267,-21.843],[15.651,-17.672],[21.573,-19.352],[27.994,-17.062]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":127,"s":[{"i":[[-0.595,-2.255],[-1.997,-0.035],[0,0],[-1.33,-0.584],[-0.994,-1.059],[-0.499,-1.365],[0.077,-1.451],[0,0],[31.29,0],[7.281,5.763],[0.618,0.624],[0,0],[-0.166,3.145],[-2.308,2.143],[-2.905,0],[-2.102,-2.004],[0,0],[0,0],[-2.069,2.125],[-2.965,0.047],[-1.321,-0.591],[-0.991,-1.055],[-0.507,-1.356],[-1.935,-3.183],[0,0],[-1.616,0.151],[-1.516,-0.579],[-1.104,-1.189],[-0.464,-1.555],[-2.094,0],[-1.834,-1.441]],"o":[[1.648,-1.128],[0,0],[1.453,0.015],[1.33,0.584],[0.994,1.059],[0.499,1.365],[0,0],[0,21.401],[-9.231,1.007],[-0.762,-0.438],[0,0],[-2.07,-2.373],[0.166,-3.145],[2.102,-2.004],[2.905,0],[0,0],[0,0],[-0.032,-2.965],[2.069,-2.125],[1.447,0.036],[1.321,0.591],[0.991,1.055],[0.507,1.356],[2.568,4.223],[1.382,-0.85],[1.616,-0.151],[1.516,0.579],[1.104,1.189],[1.782,-1.098],[2.332,0.044],[1.834,1.441]],"v":[[31.737,-11.366],[37.341,-13.046],[37.341,-13.034],[41.559,-12.126],[45.083,-9.635],[47.346,-5.961],[47.985,-1.694],[47.985,20.985],[13.809,59.791],[-11.961,52.37],[-14.043,50.768],[-42.764,18.825],[-45.733,10.221],[-41.876,1.978],[-34.077,-1.145],[-26.277,1.978],[-21.723,8.835],[-35.695,-42.16],[-32.515,-50.108],[-24.655,-53.5],[-20.462,-52.551],[-16.959,-50.057],[-14.69,-46.405],[-10.068,-37.848],[-0.033,-23.659],[4.525,-25.181],[9.285,-24.531],[13.267,-21.843],[15.651,-17.672],[21.573,-19.352],[27.994,-17.062]],"c":true}]},{"t":144,"s":[{"i":[[-0.595,-2.255],[-1.997,-0.035],[0,0],[-1.33,-0.584],[-0.994,-1.059],[-0.499,-1.365],[0.077,-1.451],[0,0],[31.29,0],[7.281,5.763],[0.618,0.624],[0,0],[-0.166,3.145],[-2.308,2.143],[-2.905,0],[-2.102,-2.004],[0,0],[0,0],[-2.069,2.125],[-2.965,0.047],[-1.321,-0.591],[-0.991,-1.055],[-0.507,-1.356],[0.055,-1.446],[0,0],[-1.616,0.151],[-1.516,-0.579],[-1.104,-1.189],[-0.464,-1.555],[-2.094,0],[-1.834,-1.441]],"o":[[1.648,-1.128],[0,0],[1.453,0.015],[1.33,0.584],[0.994,1.059],[0.499,1.365],[0,0],[0,21.401],[-9.231,1.007],[-0.762,-0.438],[0,0],[-2.07,-2.373],[0.166,-3.145],[2.102,-2.004],[2.905,0],[0,0],[0,0],[-0.032,-2.965],[2.069,-2.125],[1.447,0.036],[1.321,0.591],[0.991,1.055],[0.507,1.356],[0,0],[1.382,-0.85],[1.616,-0.151],[1.516,0.579],[1.104,1.189],[1.782,-1.098],[2.332,0.044],[1.834,1.441]],"v":[[31.737,-11.366],[37.341,-13.046],[37.341,-13.034],[41.559,-12.126],[45.083,-9.635],[47.346,-5.961],[47.985,-1.694],[47.985,20.985],[13.809,59.791],[-11.961,52.37],[-14.043,50.768],[-45.014,18.825],[-47.983,10.221],[-44.126,1.978],[-36.327,-1.145],[-28.527,1.978],[-21.723,8.835],[-21.723,-48.66],[-18.543,-56.608],[-10.683,-60],[-6.489,-59.051],[-2.986,-56.557],[-0.717,-52.905],[-0.033,-48.66],[-0.033,-23.659],[4.525,-25.181],[9.285,-24.531],[13.267,-21.843],[15.651,-17.672],[21.573,-19.352],[27.994,-17.062]],"c":true}]}],"ix":2},"nm":"路径 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":"填充 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":"变换"}],"nm":"hand","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"e1","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":192,"s":[1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[105,105,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":96,"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":144,"s":[105,105,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[31.578,127.099],[-152.691,6.678],[-22.831,-105.761],[138.017,-44.904]],"o":[[-29.184,-117.464],[138.909,-6.075],[21.365,98.971],[-132.016,42.952]],"v":[[-244.917,12.25],[-22,-228.702],[243.13,-41.308],[102.856,220.322]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,0.800000011921],"ix":3},"o":{"a":0,"k":80,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 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":"变换"}],"nm":"e1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"e2","sr":1,"ks":{"o":{"a":0,"k":90,"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":192,"s":[-1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":0,"s":[102,102,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":48,"s":[102,102,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":96,"s":[102,102,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":144,"s":[102,102,100]},{"t":192,"s":[102,102,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[130.689,11.751],[-43.129,145.547],[-107.632,-13.014],[2.146,-144.221]],"o":[[-120.782,-10.861],[39.236,-132.409],[100.722,12.178],[-2.053,137.95]],"v":[[-70.883,238.273],[-227.045,-49.527],[36.439,-237.433],[238.967,-20.496]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,0.600000023842],"ix":3},"o":{"a":0,"k":60,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 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":"变换"}],"nm":"e2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"e3","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[720]},{"t":192,"s":[720]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[105,105,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":96,"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":144,"s":[105,105,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-54.156,119.954],[-120.023,-83.416],[47.68,-97.813],[132.381,44.33]],"o":[[50.05,-110.86],[109.189,75.887],[-44.618,91.533],[-126.625,-42.403]],"v":[[-203.602,-136.021],[113.744,-199.055],[199.829,104.852],[-67.487,232.453]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,0.300000011921],"ix":3},"o":{"a":0,"k":30,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 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":"变换"}],"nm":"e3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"ccccc4","sr":1,"ks":{"o":{"a":0,"k":70,"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":192,"s":[-1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[101.5,101.5,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":96,"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":144,"s":[101.5,101.5,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-118.189,0],[0,121.503],[118.189,0],[0,-121.503]],"o":[[118.189,0],[0,-121.503],[-118.189,0],[0,121.503]],"v":[[0,220],[214,0],[0,-220],[-214,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.58431372549,0.490196078431,0.372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"ccccc3","td":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]},{"t":192,"s":[-1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[101.5,101.5,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":96,"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":144,"s":[101.5,101.5,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-118.189,0],[0,121.503],[118.189,0],[0,-121.503]],"o":[[118.189,0],[0,-121.503],[-118.189,0],[0,121.503]],"v":[[0,220],[214,0],[0,-220],[-214,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.768627464771,0.768627464771,0.768627464771,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"r3","tt":2,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":40,"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":191,"s":[-720]}],"ix":10},"p":{"a":0,"k":[312,300,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":[{"d":1,"ty":"el","s":{"a":0,"k":[528,446],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":60,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"r3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"ccccc2","td":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]},{"t":192,"s":[-1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[101.5,101.5,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":96,"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":144,"s":[101.5,101.5,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-118.189,0],[0,121.503],[118.189,0],[0,-121.503]],"o":[[118.189,0],[0,-121.503],[-118.189,0],[0,121.503]],"v":[[0,220],[214,0],[0,-220],[-214,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.768627464771,0.768627464771,0.768627464771,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"r2","tt":2,"tp":12,"sr":1,"ks":{"o":{"a":0,"k":60,"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":192,"s":[720]}],"ix":10},"p":{"a":0,"k":[284,300,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":[{"d":1,"ty":"el","s":{"a":0,"k":[520,460],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":-30,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"r2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"ccccc0","td":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]},{"t":192,"s":[-1440]}],"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,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":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":48,"s":[101.5,101.5,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":96,"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":144,"s":[101.5,101.5,100]},{"t":192,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-118.189,0],[0,121.503],[118.189,0],[0,-121.503]],"o":[[118.189,0],[0,-121.503],[-118.189,0],[0,121.503]],"v":[[0,220],[214,0],[0,-220],[-214,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.58431372549,0.490196078431,0.372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"c0","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"r1","tt":2,"tp":14,"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":192,"s":[1440]}],"ix":10},"p":{"a":0,"k":[300,300,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":[{"d":1,"ty":"el","s":{"a":0,"k":[512,480],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509811401,0.721568644047,0.525490224361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 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":"变换"}],"nm":"r1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":192,"st":0,"ct":1,"bm":0}],"markers":[],"props":{}}
\ No newline at end of file
diff --git a/app/src/main/java/qianmu/container/activity/BaseActivity.java b/app/src/main/java/qianmu/container/activity/BaseActivity.java
new file mode 100644
index 0000000..e9f104a
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/BaseActivity.java
@@ -0,0 +1,317 @@
+package qianmu.container.activity;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.os.Build;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.google.gson.Gson;
+import com.jakewharton.processphoenix.ProcessPhoenix;
+import com.sdkapi.api.SdkApi;
+import com.sun.jna.Native;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.text.SimpleDateFormat;
+import java.util.concurrent.Executors;
+
+import qianmu.container.activity.H5.CoreService;
+import qianmu.container.activity.H5.UpdateFileActivity;
+import qianmu.container.activity.program.ScreenSaverActivity;
+import qianmu.container.adapter.KeyAdapter;
+import qianmu.container.app.Constant;
+import qianmu.container.app.MyApplication;
+import qianmu.container.data.DeviceData;
+import qianmu.container.entity.MessageEvent;
+import qianmu.container.manager.QMWindowManager;
+import qianmu.container.mqtt.MQTTService;
+import qianmu.container.service.ContainerService;
+import qianmu.container.service.MessengerService;
+import qianmu.container.service.MusicService;
+import qianmu.container.util.BitmapUtil;
+import qianmu.container.util.CalendarUtils;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.FileUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.SignWayUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+import qianmu.container.util.ViplexCore;
+
+@SuppressWarnings("All")
+public abstract class BaseActivity extends AppCompatActivity {
+
+ protected String currRoute = "";
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ //隐藏标题栏
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
+
+ //隐藏状态栏
+ Window window = getWindow();
+ int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
+ window.setFlags(flag, flag);
+
+ int flags;
+ int curApiVersion = Build.VERSION.SDK_INT;
+ if (curApiVersion >= Build.VERSION_CODES.KITKAT) {
+ flags = View.SYSTEM_UI_FLAG_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_IMMERSIVE
+ | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
+ } else {
+ flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
+ View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
+ }
+ getWindow().getDecorView().setSystemUiVisibility(flags);
+
+ initView();
+ setData();
+ setListener();
+ }
+
+ protected abstract void initView();
+
+ protected abstract void setData();
+
+ protected abstract void setListener();
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ SignWayUtil.hideStatusBar(false);
+ EventBus.getDefault().register(this);
+ sendPackageName();
+ Constant.whoActivity = currRoute;
+ Log.e("TAG","哪个activty:"+Constant.whoActivity);
+ if(Constant.androidBoardType.equals("huamo") && Constant.ROUTE_SCREEN_SAVER==currRoute){
+
+ }
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ EventBus.getDefault().unregister(this);
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+
+ }
+
+ @Override
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ setIntent(intent);
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onMessageEvent(MessageEvent message) {
+ if (Constant.ACTION_CAPTURE_SCREEN.equals(message.getCode())) {
+ uploadScreenCapture();
+ } else if (Constant.ACTION_SHOW_SPLASH.equals(message.getCode())) {
+ if (currRoute == Constant.ROUTE_SCREEN_SAVER) return;
+ ScreenSaverActivity.startAction(this);
+// ARouter.getInstance().build(Constant.ROUTE_SCREEN_SAVER).navigation();
+ } else if (Constant.UPDATE_DEVICE_IP.equals(message.getCode())) {
+ //ip变更
+ DeviceUtil.updateDeviceIP(this);
+
+ } else if(Constant.ACTION_UPDATE_WEBVIEW.equals(message.getCode())){
+ //显示主页,并更新webview
+ LoggerUtil.e("BaseActivity","ACTION_UPDATE_WEBVIEW");
+ if(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE).equals("信发") || DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE).equals("双面屏")) return;
+ if (currRoute == Constant.ROUTE_WEB_VIEW || currRoute == Constant.ROUTE_UPDATE_FILE) return;
+ ARouter.getInstance().build(Constant.ROUTE_WEB_VIEW).withBoolean(Constant.KEY_LOAD_H5_URL, true).navigation();
+
+ }else if(Constant.ACTION_RESTART_APP.equals(message.getCode())){
+ //重启app
+ restartApp();
+ }else if(Constant.ACTION_RESTART_MQTT.equals(message.getCode())){
+ //重启mqtt服务
+ LoggerUtil.e("BaseActivity","通知关闭mqtt服务");
+ stopService(new Intent(this, MQTTService.class));//关闭Mqtt服务
+ Constant.mqttState = "off";
+
+ }
+
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent ev) {
+ ContainerService.initFirstTime();
+ ContainerService.initTempTime();
+ return super.dispatchTouchEvent(ev);
+ }
+
+ //当前activity截图
+ public Bitmap captureScreen() {
+ getWindow().getDecorView().setDrawingCacheEnabled(true);
+ getWindow().getDecorView().destroyDrawingCache();
+ return getWindow().getDecorView().getDrawingCache();
+ }
+
+ //上传界面截图
+ private void uploadScreenCapture() {
+ String dataStr = StringUtil.strSplice("{\"code\":\"", DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE), "\",\"filename\":\"screenshot.jpg\"}");
+ final byte[] bytes1 = StringUtil.strSplice(String.format("%06d", dataStr.length()), dataStr).getBytes(); //ip和文件名转成字节数组
+ //图片转成字节数组
+ String filePath = BitmapUtil.saveBitmapToSDCard(captureScreen());
+ final byte[] bytes2 = BitmapUtil.file2byte(filePath);
+ //开启线程池 上传文件
+ final String requestURL = StringUtil.strSplice(Constant.getBaseAddress(), "/API/Dev/UploadScreenshot");
+ Executors.newSingleThreadExecutor().execute(() -> FileUtil.uploadFile(bytes1, bytes2, requestURL));
+ }
+
+ /**
+ *
+ * */
+ Long onkey = 0l;
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ Log.e("TAG","按键:"+keyCode);
+ if ((keyCode == KeyEvent.KEYCODE_F1)) {
+ if(System.currentTimeMillis()- onkey<1000) {
+ LoggerUtil.e("遥控按键", "退出应用");
+ sendExitPackageName();
+ exitApp();
+ }else {
+ onkey = System.currentTimeMillis();
+ }
+ }else if ((keyCode == KeyEvent.KEYCODE_F4)) {
+
+ if(System.currentTimeMillis()- onkey<1000){
+ LoggerUtil.e("遥控按键","重启设备");
+ SignWayUtil.reboot();
+ }else {
+ onkey = System.currentTimeMillis();
+ }
+
+ }else if(keyCode == KeyEvent.KEYCODE_F3){
+
+ }else if ((keyCode == KeyEvent.KEYCODE_F2)) {
+ if(System.currentTimeMillis()- onkey<1000) {
+ LoggerUtil.e("遥控按键", "退到设置");
+ ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).navigation();
+ }else {
+ onkey = System.currentTimeMillis();
+ }
+ }else if ((keyCode == KeyEvent.KEYCODE_F10)) {
+
+ }
+
+ return super.onKeyDown(keyCode, event);
+ }
+
+
+ /**
+ * 发送广播给奔溃自启app告诉包名
+ * */
+ public void sendPackageName(){
+ Intent intent = new Intent(Constant.APP_SEND_PACKAGE_NAME);
+ intent.putExtra(Constant.PACKAGE_NAME, DeviceUtil.getPackageName());
+ sendStickyBroadcast(intent);
+ }
+
+ /**
+ * 发送广播给奔溃自启app告诉包名
+ * */
+ public void sendExitPackageName(){
+ Intent intent = new Intent(Constant.APP_SEND_PACKAGE_NAME);
+ intent.putExtra(Constant.PACKAGE_NAME, "packageName");
+ this.sendStickyBroadcast(intent);
+ };
+
+ /**
+ * 退出软件
+ * */
+ public void exitApp(){
+ LoggerUtil.e("BaseActivity", "退出软件");
+ sendExitPackageName();
+ SignWayUtil.hideStatusBar(true);
+ QMWindowManager.removeMenuWindow();
+ stopService(new Intent(this, ContainerService.class));
+ stopService(new Intent(this, MessengerService.class));
+ stopService(new Intent(this, CoreService.class));
+ stopService(new Intent(this, MQTTService.class));
+
+ //欣威视通看门狗
+ if(Constant.androidBoardType.equals("xwst2")){
+ boolean ret= SdkApi.getInstance().Watchdog().getWatchdogOnoff();
+ if(ret){
+ SdkApi.getInstance().Watchdog().setWatchdogOnoff(false);
+ }
+ }
+
+ if("指路机".equals(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE))){
+ //开启背景音乐
+ stopService(new Intent(this, MusicService.class));//背景音乐
+ }
+ try {
+
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if(Constant.androidBoardType.equals("xwst")){
+ SignWayUtil.killbackgroundapk(DeviceUtil.getPackageName());
+ }else {
+ Intent startMain = new Intent(Intent.ACTION_MAIN);
+ startMain.addCategory(Intent.CATEGORY_HOME);
+ startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//栈内复用模式
+ startActivity(startMain);
+ System.exit(0);
+ }
+ }
+
+ /**
+ * 重启软件
+ * */
+ public void restartApp(){
+ LoggerUtil.e("BaseActivity", "重启软件");
+ stopService(new Intent(this, ContainerService.class));
+ stopService(new Intent(this, MessengerService.class));
+ stopService(new Intent(this, CoreService.class));
+ stopService(new Intent(this, MQTTService.class));
+
+ //欣威视通看门狗
+ if(Constant.androidBoardType.equals("xwst2")){
+ boolean ret= SdkApi.getInstance().Watchdog().getWatchdogOnoff();
+ if(ret){
+ SdkApi.getInstance().Watchdog().setWatchdogOnoff(false);
+ }
+ }
+
+ if("指路机".equals(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE))){
+ //开启背景音乐
+ stopService(new Intent(this, MusicService.class));//背景音乐
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ ProcessPhoenix.triggerRebirth(this);
+ }
+}
diff --git a/app/src/main/java/qianmu/container/activity/H5/CoreService.java b/app/src/main/java/qianmu/container/activity/H5/CoreService.java
new file mode 100644
index 0000000..bd4f86c
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/H5/CoreService.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright © 2018 Yan Zhenjie.
+ *
+ * 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.
+ */
+package qianmu.container.activity.H5;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+import androidx.annotation.Nullable;
+
+import com.yanzhenjie.andserver.AndServer;
+import com.yanzhenjie.andserver.Server;
+
+import java.net.InetAddress;
+import java.util.concurrent.TimeUnit;
+
+import qianmu.container.app.Constant;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.StringUtil;
+
+
+public class CoreService extends Service {
+
+ private Server mServer;
+
+ @Override
+ public void onCreate() {
+ try {
+ mServer = AndServer.serverBuilder().inetAddress(InetAddress.getByName("127.0.0.1")).port(8080)
+ .timeout(10, TimeUnit.SECONDS).listener(new Server.ServerListener() {
+ @Override
+ public void onStarted() {
+ LoggerUtil.i("服务器已启动", "服务器已启动");
+ Constant.isCoreService = true;
+ }
+
+ @Override
+ public void onStopped() {
+ LoggerUtil.i("服务器已停止", "服务器已停止");
+ Constant.isCoreService = false;
+ }
+
+ @Override
+ public void onException(Exception e) {
+ LoggerUtil.i("服务器发生异常", StringUtil.getThrowableStr(e));
+ }
+ })
+ .build();
+
+ } catch (Throwable t) {
+ LoggerUtil.e("初始化服务器异常", StringUtil.getThrowableStr(t));
+ }
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ startServer();
+ return START_STICKY;
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ Constant.isCoreService = false;
+ stopServer();
+ }
+
+ /**
+ * Start server.
+ */
+ private void startServer() {
+ if (mServer.isRunning()) return;
+ mServer.startup();
+ }
+
+ /**
+ * Stop server.
+ */
+ private void stopServer() {
+ mServer.shutdown();
+ }
+
+ @Nullable
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/qianmu/container/activity/H5/H5Data.java b/app/src/main/java/qianmu/container/activity/H5/H5Data.java
new file mode 100644
index 0000000..6f02ff8
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/H5/H5Data.java
@@ -0,0 +1,534 @@
+package qianmu.container.activity.H5;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.reflect.TypeToken;
+import com.loopj.android.http.AsyncHttpClient;
+import com.loopj.android.http.AsyncHttpResponseHandler;
+import com.loopj.android.http.RequestParams;
+import com.lzy.okgo.OkGo;
+import com.lzy.okgo.callback.FileCallback;
+
+import org.greenrobot.eventbus.EventBus;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import cz.msebera.android.httpclient.Header;
+import cz.msebera.android.httpclient.entity.StringEntity;
+import qianmu.container.app.Constant;
+import qianmu.container.app.MyApplication;
+import qianmu.container.data.BaseData;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.FloorData;
+import qianmu.container.entity.AppVersion;
+import qianmu.container.entity.DeviceOption;
+import qianmu.container.entity.KdxfBean;
+import qianmu.container.entity.MessageEvent;
+import qianmu.container.entity.ResourceFileBean;
+import qianmu.container.entity.Resp;
+import qianmu.container.http.retrofit.RetrofitUtil;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.listener.QueryPreparedListener;
+import qianmu.container.util.AesUtil;
+import qianmu.container.util.FileUtil;
+import qianmu.container.util.GsonUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.StringUtil;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class H5Data extends BaseData {
+
+ public static final String NAME = "H5_app_data";
+ public static final String H5_APP_VERSION = "H5_version";
+ public static final String INTERFACE_LIST = "interface_list";
+ public static final String FILE_RESOURCE_LIST = "fileResource_list";//资源文件下载,图片,视频
+ public static final String MODEL_FILE_RESOURCE_LIST = "modelFileResource_list";//模型资源文件下载,图片,(水牌使用)
+ public static final String H5_URL = "h5_url"; // 除导视外其他url
+ public static final String KDXF_DATA = "kdxf_data"; // 科大讯飞地址
+
+ /**
+ * 保存H5路径
+ * */
+ public static void saveH5Url(String data) {
+ saveDataJson(NAME, H5_URL, data);
+ }
+
+
+ public static void saveH5AppVersion(String data) {
+ saveDataJson(NAME, H5_APP_VERSION, data);
+ }
+
+ /**
+ * 保存科大讯飞代理地址
+ * */
+ public static void saveKDXFData(String data) {
+ saveDataJson(NAME, KDXF_DATA, data);
+ }
+
+ public static void saveInterfaceList(Object data) {
+ String dataJson;
+ if (data instanceof String) dataJson = (String) data;
+ else dataJson = new GsonBuilder().disableHtmlEscaping().create().toJson(data);
+ saveDataJson(NAME, INTERFACE_LIST, dataJson);
+ }
+
+ /**
+ * 保存文件资源列表
+ * */
+ public static void saveResourceFileList(Object data) {
+ String dataJson;
+ if (data instanceof String) dataJson = (String) data;
+ else dataJson = new Gson().toJson(data);
+ saveDataJson(NAME, FILE_RESOURCE_LIST, dataJson);
+ }
+
+ /**
+ * 保存模型文件资源列表
+ * */
+ public static void saveModelResourceFileList(Object data) {
+ String dataJson;
+ if (data instanceof String) dataJson = (String) data;
+ else dataJson = new Gson().toJson(data);
+ saveDataJson(NAME, MODEL_FILE_RESOURCE_LIST, dataJson);
+ }
+
+ /**
+ * 获取文件资源列表
+ * */
+ public static List getResourceFileList() {
+ try {
+ String dataJson = getDataJson(NAME, FILE_RESOURCE_LIST);
+ return new Gson().fromJson(dataJson, new TypeToken>() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getResourceFileList", StringUtil.getThrowableStr(t));
+ }
+ return new ArrayList<>();
+ }
+
+
+ /**
+ * 获取模型文件资源列表
+ * */
+ public static List getModelResourceFileList() {
+ try {
+ String dataJson = getDataJson(NAME, MODEL_FILE_RESOURCE_LIST);
+ return new Gson().fromJson(dataJson, new TypeToken>() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getResourceFileList3", StringUtil.getThrowableStr(t));
+ }
+ return new ArrayList<>();
+ }
+
+ public static String getH5Version() {
+ try {
+ String dataJson = getDataJson(NAME, H5_APP_VERSION);
+ return dataJson;
+ } catch (Throwable t) {
+ LoggerUtil.e("getH5AppList", StringUtil.getThrowableStr(t));
+ }
+ return "";
+ }
+
+ /**
+ * 获取科大讯飞代理地址
+ * */
+ public static KdxfBean getKdxf() {
+ try {
+ String dataJson = getDataJson(NAME, KDXF_DATA);
+ return new Gson().fromJson(dataJson, new TypeToken() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getKdxf()", StringUtil.getThrowableStr(t));
+ return new KdxfBean();
+ }
+ }
+
+ /**
+ * 获取H5路径
+ * */
+ public static String getH5Url() {
+ try {
+ String dataJson = getDataJson(NAME, H5_URL);
+ return dataJson;
+ } catch (Throwable t) {
+ LoggerUtil.e("getH5AppList", StringUtil.getThrowableStr(t));
+ }
+ return "";
+ }
+
+ public static List getInterfaceList() {
+ try {
+ String dataJson = getDataJson(NAME, INTERFACE_LIST);
+ return new Gson().fromJson(dataJson, new TypeToken>() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getH5AppList", StringUtil.getThrowableStr(t));
+ }
+ return new ArrayList<>();
+ }
+
+ /**
+ * 资源文件列表
+ * */
+ public static void queryFileResources(QueryPreparedListener preparedListener, QueryFinishListener finishListener , Map bigFiles ) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ String mallCode = FloorData.getMallCode();
+ RetrofitUtil.getBaseService().getFileResourceList2(mallCode).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ String dataJson = new Gson().toJson(response.body().getData());
+ if(dataJson.contains("capacity")){
+ Object data = response.body().getData();
+ saveResourceFileList(data);
+ }else {
+ //解密
+ dataJson= AesUtil.decrypt((String.valueOf(response.body().getData())));
+ saveResourceFileList(dataJson);
+ }
+ for(ResourceFileBean fileBean:getResourceFileList()){
+ bigFiles.put(fileBean.getUrl(), StringUtil.strSplice("dist", "/static/offline/", fileBean.getUrl()));
+ }
+
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("queryFileResources", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 模型资源文件列表(水牌使用)
+ * */
+ public static void getModelFileResource(QueryPreparedListener preparedListener, QueryFinishListener finishListener , Map bigFiles ) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ String mallCode = FloorData.getMallCode();
+ RetrofitUtil.getBaseService().getModelFileResource(mallCode).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ String dataJson = new Gson().toJson(response.body().getData());
+ if(dataJson.contains("capacity")){
+ Object data = response.body().getData();
+ saveModelResourceFileList(data);
+ }else {
+ //解密
+ dataJson= AesUtil.decrypt((String.valueOf(response.body().getData())));
+ saveModelResourceFileList(dataJson);
+ }
+ if(getModelResourceFileList()!=null && getModelResourceFileList().size()>0){
+ for(ResourceFileBean fileBean:getModelResourceFileList()){
+ bigFiles.put(fileBean.getUrl(), StringUtil.strSplice("dist", "/static/offline/", fileBean.getUrl()));
+ }
+ }
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("queryFileResources", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ public static void queryInterfaceList(QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ String mallCode = FloorData.getMallCode();
+ RetrofitUtil.getBaseService().getInterfaceApi(mallCode).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ String dataJson= new Gson().toJson(response.body().getData());
+ if(dataJson.contains("name")){
+ Object data = response.body().getData();
+ saveInterfaceList(data);
+ }else {
+ //解密
+ dataJson= AesUtil.decrypt((String.valueOf(response.body().getData())));
+ saveInterfaceList(dataJson);
+ }
+
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("queryInterfaceList", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ Log.e("queryInterfaceList", "报错"+StringUtil.getThrowableStr(t));
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ //GET方式获取离线数据
+ public static void queryOfflineDataByInterfaceToGet(String url, String jsonData, String fileName, Map bigFiles , QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ AsyncHttpClient client;
+ if(url.contains("https")){
+ client = new AsyncHttpClient(true, 80, 443);
+ }else {
+ client = new AsyncHttpClient();
+ }
+ client.setTimeout(30000);
+ client.setMaxRetriesAndTimeout(0, 20000);
+ if(url.contains("?")){
+ url = url +"&projectCode="+FloorData.getMallCode();
+ }else {
+ url = url +"?projectCode="+FloorData.getMallCode();
+ }
+ if(jsonData.contains("code")){
+ String deviceCode = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE);
+ url = url +"&"+"code="+deviceCode;
+ }
+ String finalUrl = url;
+ client.get(url, new AsyncHttpResponseHandler() {
+ @Override
+ public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
+ try {
+
+ String response = new String(responseBody).replace("\\\\", "/");
+
+// Log.d("url", finalUrl);
+// Log.d("response", response);
+ //获取数据成功时 才解析解析素材url并更新离线文件
+ Resp resp = new Gson().fromJson(response, new TypeToken() {}.getType());
+ if (resp.getCode() == 200) {
+
+ String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist/static/offline/JSON/", fileName, ".json");
+ String decryptDataJson =AesUtil.decrypt((String.valueOf(resp.getData())));
+ if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()){
+ FileUtil.writeDataToFile(response, filePath, false);
+ if(fileName.equals("getDevCoordinateByIP")){
+
+ LoggerUtil.e("getDevCoordinateByIP()",response);
+ //保存科大讯飞地址
+ saveKDXFData(response);
+ }
+ }else {
+ try {
+ JSONObject entries = JSONUtil.parseObj(decryptDataJson);
+ resp.setData(entries);
+ }catch (Exception e){
+ JSONArray entries = JSONUtil.parseArray(decryptDataJson);
+ resp.setData(entries);
+ }
+ String s = GsonUtil.getGson().toJson(resp);
+ FileUtil.writeDataToFile(s, filePath, false);
+ if(fileName.equals("getDevCoordinateByIP")){
+
+ LoggerUtil.e("getDevCoordinateByIP()",response);
+ //保存科大讯飞地址
+ saveKDXFData(s);
+ }
+ }
+
+// FileUtil.writeDataToFile(response, filePath, false);
+// if(fileName.equals("getDevCoordinateByIP")){
+//
+// LoggerUtil.e("getDevCoordinateByIP()",response);
+// //保存科大讯飞地址
+// saveKDXFData(response);
+// }
+ }else {
+ LoggerUtil.e("导视接口报错:"+finalUrl, response);
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
+ LoggerUtil.e("请求失败:"+finalUrl, StringUtil.getThrowableStr(error));
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ //POST方式获取离线数据 多添加一个JSON请求体(参数必须是JSON格式)
+ public static void queryOfflineDataByInterface(String url, String jsonData, String fileName, Map bigFiles, QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ try {
+ AsyncHttpClient client;
+ if(url.contains("https")){
+ client = new AsyncHttpClient(true, 80, 443);
+ }else {
+ client = new AsyncHttpClient();
+ }
+ client.setTimeout(30000);
+ client.setMaxRetriesAndTimeout(0, 20000);
+ StringEntity entity = new StringEntity(jsonData);
+ client.post(MyApplication.getInstance().getApplicationContext(), url, entity, RequestParams.APPLICATION_JSON, new AsyncHttpResponseHandler() {
+ @Override
+ public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
+ try {
+ String response = new String(responseBody).replace("\\\\", "/");
+// Log.d("url", url);
+// Log.d("response", response);
+ //获取数据成功时 才解析解析素材url并更新离线文件
+ Resp resp = new Gson().fromJson(response, new TypeToken() {}.getType());
+
+ if (resp.getCode() == 200) {
+ //解析离线数据中的大后台图片
+// analysisUrlByStr(response, "/Files/", "dist", bigFiles);
+ //将离线数据保存为json文件格式
+ String decryptDataJson =AesUtil.decrypt((String.valueOf(resp.getData())));
+ String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist", "/static/offline/JSON/", fileName, ".json");
+ if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()) {
+
+ FileUtil.writeDataToFile(response, filePath, false);
+ }else {
+ try {
+ JSONObject entries = JSONUtil.parseObj(decryptDataJson);
+ resp.setData(entries);
+ }catch (Exception e){
+ JSONArray entries = JSONUtil.parseArray(decryptDataJson);
+ resp.setData(entries);
+ }
+ String s = GsonUtil.getGson().toJson(resp);
+ FileUtil.writeDataToFile(s, filePath, false);
+ }
+
+ }else {
+ LoggerUtil.e("导视接口报错:"+url, response);
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
+ Log.d("error", StringUtil.getThrowableStr(error));
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ } catch (Throwable t) {
+ if (finishListener != null) finishListener.onFinish();
+ LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t));
+ }
+ }
+
+ /**
+ * 从字符串中解析图片url
+ *
+ * @param content 文本
+ * @param matchStr 匹配字符串
+ * @param h5Dir H5文件夹
+ * @param map 图片列表
+ */
+ private static void analysisUrlByStr(String content, String matchStr, String h5Dir, Map map) {
+ while (content.indexOf(matchStr) != -1) {
+ int startIndex = content.indexOf(matchStr);
+ content = content.substring(startIndex);
+ int endIndex = content.indexOf("\"");
+ String tempSrt = content.substring(0, endIndex);
+ map.put(tempSrt, StringUtil.strSplice(h5Dir, "/static/offline/", tempSrt).replace("//","/"));
+ content = content.substring(endIndex);
+ }
+ }
+
+ /**
+ * 下载app并解压
+ */
+ public static void downloadH5AppFile(String url, String name, String version, String type, QueryFinishListener finishListener) {
+ String fileName = StringUtil.strSplice(name, version, ".", type);
+ final String fileUrl = url;
+ final String localPath = StringUtil.strSplice(Constant.CACHE_PATH, "update/", fileName);
+ FileUtil.downloadFile(fileUrl, localPath, () -> {
+ File file = new File(localPath);
+ if (!file.exists()) {
+ LoggerUtil.i("downloadAppFile", "压缩包下载失败");
+ if (finishListener != null) finishListener.onFinish();
+ return;
+ }
+
+ LoggerUtil.i("downloadAppFile", "下载完成,准备解压");
+ if (!localPath.toLowerCase().endsWith("zip")) {
+ LoggerUtil.i("downloadAppFile", "压缩文件不是zip格式");
+ if (finishListener != null) finishListener.onFinish();
+ return;
+ }
+
+ UnzipLocalZipFile(name, localPath, version);
+ if (finishListener != null) finishListener.onFinish();
+ });
+ }
+
+ /**
+ * 解压本地压缩文件
+ *
+ * @param name 解压后的文件夹名称
+ * @param localPath 压缩文件路径
+ */
+ private static void UnzipLocalZipFile(String name, String localPath,String version) {
+ //源文件夹
+ File cssDir = new File(StringUtil.strSplice(Constant.CACHE_PATH, name, "/css"));
+ File jsDir = new File(StringUtil.strSplice(Constant.CACHE_PATH, name, "/js"));
+ //临时文件夹
+ File newCssDir = new File(StringUtil.strSplice(Constant.CACHE_PATH, name, "/newCss"));
+ File newJsDir = new File(StringUtil.strSplice(Constant.CACHE_PATH, name, "/newJs"));
+
+ if (cssDir.exists()) cssDir.renameTo(newCssDir);
+ if (jsDir.exists()) jsDir.renameTo(newJsDir);
+
+ //解压Zip包覆盖旧文件夹 返回解压结果
+ boolean result = FileUtil.upZipFile(localPath, StringUtil.strSplice(Constant.CACHE_PATH, name,"/"));
+ if (result) {
+ LoggerUtil.i("downloadAppFile", "压缩文件解压成功");
+ saveH5AppVersion(version);//保存解压完成的版本号
+ EventBus.getDefault().post(new MessageEvent(Constant.ACTION_UPDATE_WEBVIEW));//通知webview刷新
+ //上传设备版本号
+ DeviceData.sendVersion(null, null );
+ FileUtil.delFolder(newCssDir.getAbsolutePath());
+ FileUtil.delFolder(newJsDir.getAbsolutePath());
+
+ File zipFile = new File(localPath);
+ if (zipFile.exists() && zipFile.delete())
+ LoggerUtil.i("downloadAppFile", "压缩包删除成功");
+ else LoggerUtil.i("downloadAppFile", "压缩包删除失败");
+ EventBus.getDefault().post(new MessageEvent(Constant.ACTION_SHOW_UPDATE_H5));//通知页面更新
+ } else {
+ LoggerUtil.i("downloadAppFile", "压缩文件解压失败");
+ FileUtil.delFolder(cssDir);
+ FileUtil.delFolder(jsDir);
+ if (newCssDir.exists()) newCssDir.renameTo(cssDir);
+ if (newJsDir.exists()) newJsDir.renameTo(jsDir);
+ }
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/H5/Interface.java b/app/src/main/java/qianmu/container/activity/H5/Interface.java
new file mode 100644
index 0000000..561cff9
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/H5/Interface.java
@@ -0,0 +1,53 @@
+package qianmu.container.activity.H5;
+
+/**
+ * 接口列表
+ * */
+public class Interface {
+
+ private String name;//接口名称
+ private String des;//简介
+ private String url;
+ private String parameter;//请求参数
+ private String method;//get post
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDes() {
+ return des;
+ }
+
+ public void setDes(String des) {
+ this.des = des;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getParameter() {
+ return parameter;
+ }
+
+ public void setParameter(String parameter) {
+ this.parameter = parameter;
+ }
+
+ public String getMethod() {
+ return method;
+ }
+
+ public void setMethod(String method) {
+ this.method = method;
+ }
+}
diff --git a/app/src/main/java/qianmu/container/activity/H5/InternalWebsite.java b/app/src/main/java/qianmu/container/activity/H5/InternalWebsite.java
new file mode 100644
index 0000000..60a9771
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/H5/InternalWebsite.java
@@ -0,0 +1,21 @@
+
+package qianmu.container.activity.H5;
+
+
+import android.os.Environment;
+
+import com.yanzhenjie.andserver.annotation.Website;
+import com.yanzhenjie.andserver.framework.website.StorageWebsite;
+
+
+/**
+ * Created by YanZhenjie on 2018/9/17.
+ */
+@Website
+public class InternalWebsite extends StorageWebsite {
+
+ public InternalWebsite() {
+ super("/mnt/sdcard/QMContainer/dist");
+ }
+}
+
diff --git a/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java b/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java
new file mode 100644
index 0000000..86f9ee8
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java
@@ -0,0 +1,367 @@
+package qianmu.container.activity.H5;
+
+import android.content.Intent;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.util.TimeUtils;
+import android.view.View;
+
+import androidx.databinding.DataBindingUtil;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.sdkapi.api.SdkApi;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import cn.huidu.toolkit.HuiduTech;
+import qianmu.container.R;
+import qianmu.container.activity.BaseActivity;
+import qianmu.container.app.Constant;
+import qianmu.container.app.MyApplication;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.FloorData;
+import qianmu.container.data.MqttData;
+import qianmu.container.data.ScreenSaverData;
+import qianmu.container.databinding.ActivityUpdateFileBinding;
+import qianmu.container.entity.MqttInfoBean;
+import qianmu.container.entity.NewProgramBean;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.manager.QMWindowManager;
+import qianmu.container.mqtt.MQTTService;
+import qianmu.container.service.ContainerService;
+
+import qianmu.container.service.MessengerService;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.FileUtil;
+import qianmu.container.util.GsonUtil;
+import qianmu.container.util.KeyboardUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.SignWayUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.TimeUtil;
+
+import static qianmu.container.util.LoggerUtil.SAVE_LOG_DIR_PATH;
+import static qianmu.container.util.LoggerUtil.e;
+
+@Route(path = Constant.ROUTE_UPDATE_FILE)
+public class UpdateFileActivity extends BaseActivity {
+
+ static final int TYPE_REQUEST_DATA = 1;//请求接口数据
+ static final int TYPE_DOWNLOAD_FILE = 2;//下载文件
+ static final int TYPE_LOAD_DELAYED = 3;//延时加载数据
+ static final int TYPE_DOWNLOAD_H5 = 4;//下载H5离线包
+ static final int TYPE_DOWNLOAD_H52 = 5;//下载H5离线包
+ static final int TYPE_GO_HOME = 6;//5分钟后强制进入主页
+ int currentCount = 0;//已下载图片数量
+ int queryResponseCount = 0;//已完成请求的数量
+ int totalQueryCount = 0; //请求总数
+ Map bigFiles = new HashMap<>(); //大后台文件
+
+ ActivityUpdateFileBinding binding;
+
+ String deviceType;
+
+ @SuppressWarnings("all")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+
+ switch (msg.what) {
+ case TYPE_DOWNLOAD_H5:
+ //验证设备是否注册
+ String deviceCode = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE);
+ MqttInfoBean mqttInfo = MqttData.getMqttInfo();
+
+ if (mqttInfo.getServer() == null || StringUtil.isEmpty(deviceCode)) {
+ ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).navigation();
+ finish();
+ return;
+ }
+
+ startService(new Intent(UpdateFileActivity.this, ContainerService.class));
+ startService(new Intent(UpdateFileActivity.this, CoreService.class));
+ startService(new Intent(UpdateFileActivity.this, MessengerService.class));
+ startService(new Intent(UpdateFileActivity.this, MQTTService.class));//启动Mqtt服务
+
+ Log.e("TAG","设备code:"+deviceCode);
+ //上传前一天日志文件
+ String fileName = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis()-24*3600*1000);
+ String path= StringUtil.strSplice(SAVE_LOG_DIR_PATH, "/", fileName, ".txt");
+ LoggerUtil.uploadLogFile(path,deviceCode,"","0");
+
+ //获取图片视频下载地址
+ DeviceData.getUploadUrl(null,null);
+
+ if ("信发".equals(deviceType)||"双面屏".equals(deviceType)) {
+ //信发无需下载离线接口
+ sendEmptyMessageDelayed(TYPE_LOAD_DELAYED, 1000);
+
+ }else {
+
+ H5Data.queryInterfaceList(null, () -> sendEmptyMessageDelayed(TYPE_LOAD_DELAYED, 1000));
+ }
+
+ removeMessages(TYPE_GO_HOME);
+ sendEmptyMessageDelayed(TYPE_GO_HOME,600*1000);//10分钟后强制进入主页
+
+ break;
+
+ case TYPE_LOAD_DELAYED:
+ //清空资源离线信息
+ ContainerService.initFirstTime();
+ totalQueryCount = 0;
+ queryResponseCount = 0;
+ bigFiles.clear();
+ //获取屏保信息
+ ScreenSaverData.queryScreensaver(() -> totalQueryCount++, () -> queryResponseCount++ );
+ //上传设备版本号
+ DeviceData.sendVersion(() -> totalQueryCount++, () -> queryResponseCount++ );
+ //获取定时开关机时间
+ DeviceData.getMachineOnOffTime(() -> totalQueryCount++, () -> queryResponseCount++ );
+ //获取同屏
+// DeviceData.getPrimaryMachine(() -> totalQueryCount++, () -> queryResponseCount++ );
+ //信发节目
+ ScreenSaverData.getProgramList(() -> totalQueryCount++, new QueryFinishListener() {
+ @Override
+ public void onFinish() {
+ //模型资源,图片(水牌使用)
+ try {
+ if ("信发".equals(deviceType)||"双面屏".equals(deviceType)) {
+ List screenSaverList = ScreenSaverData.getScreenSaverList(ScreenSaverData.TYPE_SCREEN_SAVER);
+ if(screenSaverList!=null && screenSaverList.size()>0){
+ String s = GsonUtil.getGson().toJson(screenSaverList);
+ NewProgramBean newProgramBean = screenSaverList.get(0);
+ if(s.contains("\"typeCode\":\"map\"") || s.contains("\"typeCode\":\"brand_list\"")){
+ //有地图组件
+ for(NewProgramBean.schedule schedule : newProgramBean.getSchedule()){
+ for(NewProgramBean.programs programs :schedule.getPrograms()){
+ for(NewProgramBean.components components : programs.getComponents()){
+ ScreenSaverData. getGetMapData(UpdateFileActivity.this,StringUtil.strSplice(Constant.getBaseAddress(),"/api/msg/v1/client/getApi/",components.getCode()),() -> totalQueryCount++, () -> queryResponseCount++ );
+ ScreenSaverData.getApiFileResourceList(UpdateFileActivity.this,StringUtil.strSplice(Constant.getBaseAddress(),"/api/msg/v1/client/getFileResourceList/",components.getCode()),() -> totalQueryCount++, () -> queryResponseCount++ , bigFiles);
+ break;
+ }
+ }
+ }
+ }
+ if(s.contains("\"typeCode\":\"flow\"")){
+ //有水牌组件
+ H5Data.getModelFileResource(() -> totalQueryCount++, () -> queryResponseCount++ ,bigFiles);
+ }
+ }
+ }
+ queryResponseCount++;
+ }catch (Exception e){
+ queryResponseCount++;
+ }
+ }
+ }, bigFiles);
+
+ //根据离线接口列表 获取离线数据和图片
+ if (!"信发".equals(deviceType)&&!"双面屏".equals(deviceType)) {
+ H5Data.queryFileResources( () -> totalQueryCount++, () -> queryResponseCount++ ,bigFiles);
+
+ getOfflineDataByInterface();
+
+ }
+
+ if("指路机".equals(deviceType)){
+ DeviceData.getBackgroundMusic( () -> totalQueryCount++, () -> queryResponseCount++ ,bigFiles);
+ }
+
+ sendEmptyMessageDelayed(TYPE_REQUEST_DATA, 3000);
+
+ break;
+
+ case TYPE_REQUEST_DATA://请求接口数据
+ ContainerService.initFirstTime();
+ binding.tvCurrentNumber.setText(StringUtil.strSplice("数据获取进度:", String.valueOf(queryResponseCount), " / ", String.valueOf(totalQueryCount)));
+ Log.e("TAG","请求接口数据");
+ //接口请求完毕时 进入下载文件阶段
+ if (totalQueryCount <= queryResponseCount) {
+ currentCount = 0;
+ downloadFiles();
+ handler.sendEmptyMessageDelayed(TYPE_DOWNLOAD_FILE, 2000);
+ return;
+ }
+ sendEmptyMessageDelayed(TYPE_REQUEST_DATA, 1000);
+ break;
+
+ case TYPE_DOWNLOAD_FILE://下载文件
+ ContainerService.initFirstTime();
+ binding.tvCurrentNumber.setText(StringUtil.strSplice("文件下载进度:", String.valueOf(currentCount), " / ", String.valueOf(bigFiles.size() )));
+ //图片下载完毕进入主界面
+
+ if (currentCount >= bigFiles.size()) {
+ ContainerService.initFirstTime();
+ Constant.showScreenSaver = true;
+ removeMessages(TYPE_GO_HOME);
+ //判断设备类型
+ if ("信发".equals(deviceType)||"双面屏".equals(deviceType)) {
+ LoggerUtil.e("UpdateFileActivity","TYPE_DOWNLOAD_FILE-跳转至信发");
+ ARouter.getInstance().build(Constant.ROUTE_SCREEN_SAVER).navigation();
+ } else{
+ LoggerUtil.e("UpdateFileActivity","TYPE_DOWNLOAD_FILE-跳转至导视");
+ ARouter.getInstance().build(Constant.ROUTE_WEB_VIEW).withBoolean(Constant.KEY_LOAD_H5_URL, true).navigation();
+ }
+
+ finish();
+ return;
+ }
+ sendEmptyMessageDelayed(TYPE_DOWNLOAD_FILE, 1000);
+ break;
+
+ case TYPE_GO_HOME://5分钟后强制进入主页
+ //判断设备类型
+ LoggerUtil.e("UpdateFileActivity","强制进入主页");
+ if ("信发".equals(deviceType)||"双面屏".equals(deviceType)) {
+ ARouter.getInstance().build(Constant.ROUTE_SCREEN_SAVER).navigation();
+ } else{
+ LoggerUtil.e("UpdateFileActivity","TYPE_GO_HOME-跳转至导视页面");
+ ARouter.getInstance().build(Constant.ROUTE_WEB_VIEW).withBoolean(Constant.KEY_LOAD_H5_URL, true).navigation();
+ }
+
+ finish();
+ break;
+
+ }
+ }
+ };
+
+ @Override
+ protected void initView() {
+ binding = DataBindingUtil.setContentView(this, R.layout.activity_update_file);
+
+ if(Constant.androidBoardType.equals("huidu")){
+ //灰度主板静默安装apk需要提前连接
+ initHuidu();
+ }
+
+ if(Constant.androidBoardType.equals("xwst2")){
+ //新版欣威视通初始化
+ SdkApi.newInstance(this);
+ }
+ }
+
+ @Override
+ protected void setData() {
+ Constant.showScreenSaver = false;
+ LoggerUtil.e("UpdateFileActivity","setData()");
+ //清除文件
+ try {
+ if (DeviceUtil.getSDAvailableSize() < DeviceUtil.getSDTotalSize() * 0.3) {
+ File file = new File(StringUtil.strSplice(Constant.CACHE_PATH, "Files/"));
+ File file2 = new File(StringUtil.strSplice(Constant.CACHE_PATH, "iotFile/"));
+ DeviceUtil.recursionDeleteFile(file);
+ DeviceUtil.recursionDeleteFile(file2);
+ }
+ }catch (Exception e){
+
+ }
+ //删除没用日志
+ LoggerUtil.deleteLogFiles();
+ Constant.isScreen4K = DeviceUtil.screenIs4K(this);
+ }
+
+ @Override
+ protected void setListener() {
+
+ binding.ivExit.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (!MyApplication.addClickTimes()) return;
+ ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).withBoolean(Constant.INPUT_PASSWORD, true).navigation();
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ currRoute = Constant.ROUTE_UPDATE_FILE;
+ LoggerUtil.e("UpdateFileActivity","onResume()");
+ handler.removeMessages(TYPE_DOWNLOAD_H5);
+ handler.sendEmptyMessageDelayed(TYPE_DOWNLOAD_H5, 30000);
+ deviceType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE);//设备类型,导视,信发等
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ KeyboardUtil.hideKeyboard(binding.getRoot());
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ if (handler == null) return;
+ handler.removeMessages(TYPE_REQUEST_DATA);
+ handler.removeMessages(TYPE_DOWNLOAD_FILE);
+ handler.removeMessages(TYPE_LOAD_DELAYED);
+ handler.removeMessages(TYPE_DOWNLOAD_H5);
+ handler.removeMessages(TYPE_GO_HOME);
+ handler = null;
+ }
+
+ /**
+ * 初始化灰度主版
+ * */
+ private void initHuidu(){
+ try {
+ Log.e("TAG", "开始初始化灰度");
+ HuiduTech huiduTech = new HuiduTech(this);
+ huiduTech.setCompleteConnectionListener(new HuiduTech.CompleteConnection() {
+ @Override
+ public void completeConnectionCallback(boolean b) {
+ Log.e("huiduTech", "结果:"+ b);
+ }
+ });
+ }catch (Exception e){
+
+ }
+ }
+
+ public void getOfflineDataByInterface() {
+ if(H5Data.getInterfaceList()==null||H5Data.getInterfaceList().size()==0){
+ return;
+ }
+ for (Interface anInterface : H5Data.getInterfaceList()) {
+ if (anInterface == null) continue;
+ String url = StringUtil.getString(anInterface.getUrl());
+ String fileName = StringUtil.getString(anInterface.getName());
+ String method = StringUtil.getString(anInterface.getMethod());
+ String params = StringUtil.getString(anInterface.getParameter());
+ if (method.toLowerCase().equals("get")) {
+ H5Data.queryOfflineDataByInterfaceToGet(url, params,fileName, bigFiles, () -> totalQueryCount++, () -> queryResponseCount++);
+ } else {
+ H5Data.queryOfflineDataByInterface(url, params, fileName, bigFiles, () -> totalQueryCount++, () -> queryResponseCount++);
+ }
+ }
+ }
+
+ //批量下载图片
+ private void downloadFiles() {
+ for (String bigFile : bigFiles.keySet())
+ downloadFile(DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP), bigFile, bigFiles.get(bigFile));
+ }
+
+ private void downloadFile(String imgPath, final String address, String localAddress) {
+ //容器图片
+ File file = new File(StringUtil.strSplice(Constant.CACHE_PATH, localAddress));
+ //h5图片
+ if (file.exists()) {
+ currentCount++;
+ return;
+ }
+ String internetPath = StringUtil.strSplice(imgPath, address);
+ String localPath = StringUtil.strSplice(Constant.CACHE_PATH, localAddress);
+ FileUtil.downloadFile(internetPath, localPath, () -> currentCount++);
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java
new file mode 100644
index 0000000..8c8aa35
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java
@@ -0,0 +1,670 @@
+package qianmu.container.activity.H5;
+
+import android.annotation.SuppressLint;
+import android.app.ActivityManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Debug;
+import android.os.Handler;
+import android.os.Message;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.webkit.ConsoleMessage;
+import android.webkit.JavascriptInterface;
+import android.webkit.WebChromeClient;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+
+import androidx.annotation.NonNull;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.google.gson.Gson;
+import com.iflytek.cloud.ErrorCode;
+import com.iflytek.cloud.InitListener;
+import com.iflytek.cloud.RecognizerListener;
+import com.iflytek.cloud.RecognizerResult;
+import com.iflytek.cloud.SpeechConstant;
+import com.iflytek.cloud.SpeechError;
+import com.iflytek.cloud.SpeechRecognizer;
+import com.iflytek.cloud.SpeechUtility;
+import com.shockman.sm.vendor.IHttp;
+import com.shockman.sm.vendor.SmUtils;
+import com.shockman.sm.vendor.TargetVo;
+
+import org.greenrobot.eventbus.EventBus;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.List;
+import java.util.Scanner;
+import java.util.concurrent.Executors;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import qianmu.container.R;
+import qianmu.container.activity.BaseActivity;
+import qianmu.container.adapter.KeyAdapter;
+import qianmu.container.app.Constant;
+import qianmu.container.app.MyApplication;
+import qianmu.container.data.AppData;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.ScreenSaverData;
+import qianmu.container.databinding.ActivityWebviewBinding;
+import qianmu.container.entity.AppVersion;
+import qianmu.container.entity.KdxfBean;
+import qianmu.container.entity.MessageEvent;
+import qianmu.container.entity.ResourceFileBean;
+import qianmu.container.entity.ScreenSaver;
+import qianmu.container.entity.Vocbean;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.util.AppUtil;
+import qianmu.container.util.CalendarUtils;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.FileUtil;
+import qianmu.container.util.KeyboardUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.SignWayUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+
+import static qianmu.container.service.ContainerService.initFirstTime;
+
+@Route(path = Constant.ROUTE_WEB_VIEW)
+public class WebViewActivity extends BaseActivity {
+
+ String TAG="WebViewActivity";
+ ActivityWebviewBinding binding;
+ static final int TYPE_REFURBISH_WEBVIEW = 100;//刷新webview
+ static final int TYPE_GO_SAVESCREEN = 300;//导视通知跳转屏保
+ static final int TYPE_HINT_PASSWORD = 3;//隐藏密码输入框
+ static final int TYPE_START_SERVER = 4;//重新启动web服务
+ static final int TYPE_SHENG_HTML_MAG = 5;//返回接口请求值给h5
+ static String HtmlUrl = "http://127.0.0.1:8080/index.html";//webServer服务地址
+ String vocMsg = "";//语音内容
+ // 语音听写对象
+ private SpeechRecognizer mIat;
+ int time = 0;
+ String interfaceRequestData="";
+
+ Handler handler = new Handler() {
+ @SuppressLint("HandlerLeak")
+ @Override
+ public void handleMessage(@NonNull Message msg) {
+ super.handleMessage(msg);
+
+ switch (msg.what){
+
+ case TYPE_REFURBISH_WEBVIEW://刷新webview
+ try {
+ binding.web.clearCache(true);
+ binding.web.loadUrl(HtmlUrl);
+ Constant.isCoreService=true;
+ }catch (Exception e){
+
+ }
+
+
+ break;
+
+ case TYPE_GO_SAVESCREEN://导视通知跳转屏保
+
+ try {
+ initFirstTime();
+ if (!ScreenSaverData.isProgramPlay()) return;
+
+ if (AppData.getFrontApp().equals(DeviceUtil.getPackageName())) { //信发处于系统前端时 显示屏保页面
+ EventBus.getDefault().post(new MessageEvent(Constant.ACTION_SHOW_SPLASH));
+ } else { //重新启动信发软件并打开屏保页面
+ ARouter.getInstance().build(Constant.ROUTE_SCREEN_SAVER).navigation();
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("WebViewActivity()", "导视通知跳转报错:"+StringUtil.getThrowableStr(t));
+ }
+ break;
+
+ case TYPE_HINT_PASSWORD:
+ sendEmptyMessageDelayed(TYPE_HINT_PASSWORD,1000);
+ if(time>=30){
+ binding.layoutPass.setVisibility(View.GONE);
+ removeMessages(TYPE_HINT_PASSWORD);
+ }
+ time++;
+ try {
+
+ }catch (Exception e){
+
+ }
+ break;
+
+ case TYPE_START_SERVER:
+ removeMessages(TYPE_REFURBISH_WEBVIEW);
+ sendEmptyMessageDelayed(TYPE_REFURBISH_WEBVIEW,2000);
+ startService(new Intent(WebViewActivity.this, CoreService.class));
+ LoggerUtil.e("WebViewActivity","CoreService重启");
+ break;
+
+ case TYPE_SHENG_HTML_MAG:
+ getHandWriting(interfaceRequestData);
+ interfaceRequestData="";
+ DeviceData.saveInterfaceRequest("");
+ break;
+ }
+ }
+ };
+
+ @Override
+ protected void initView() {
+ DeviceUtil.screenType(this);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
+ binding = DataBindingUtil.setContentView(this, R.layout.activity_webview);
+ //设置密码
+ initPass();
+ //初始化科大讯飞
+ initKDXF();
+ }
+
+ @Override
+ protected void setData() {
+ Log.e("WebViewActivity", "setData");
+ WebSettings webSettings = binding.web.getSettings();
+ webSettings.setJavaScriptEnabled(true);
+ webSettings.setUseWideViewPort(true);
+ webSettings.setLoadWithOverviewMode(true);
+ webSettings.setSupportZoom(false);
+ webSettings.setBuiltInZoomControls(false);
+ webSettings.setDisplayZoomControls(false);
+ webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
+ webSettings.setAllowFileAccess(true);
+ webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
+ webSettings.setLoadsImagesAutomatically(true);
+ webSettings.setDefaultTextEncodingName("utf-8");
+ webSettings.setUserAgentString("");
+ //加载web
+ currRoute = Constant.ROUTE_WEB_VIEW;
+ loadH5Url(getIntent().getBooleanExtra(Constant.KEY_LOAD_H5_URL, false));
+ //加载语音
+ initVoice();
+ }
+
+ //初始化科大讯飞
+ private void initKDXF(){
+ try {
+ KdxfBean kdxf = H5Data.getKdxf();
+ if(kdxf.getData()==null || kdxf.getData().getDeployType()==null || kdxf.getData().getDeployType().isEmpty() || kdxf.getData().getDeployType().toLowerCase().equals("saas")){
+ SpeechUtility.createUtility(this, SpeechConstant.APPID +"=5c2055f8");
+ }else {
+ SpeechUtility.createUtility(this, SpeechConstant.APPID + "=5c2055f8" + "," + "net_type=custom, proxy_ip="+kdxf.getData().getXfyunIp()+", proxy_port="+kdxf.getData().getXfyunPort());
+ }
+ }catch (Throwable t) {
+ LoggerUtil.e("初始化语音", StringUtil.getThrowableStr(t));
+ }
+ }
+
+ //初始化语音
+ private void initVoice(){
+ mIat = SpeechRecognizer.createRecognizer(this, mInitListener);
+ }
+
+ @Override
+ protected void setListener() {
+ binding.web.setWebViewClient(new WebViewClient() {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ view.loadUrl(url);
+ return true;
+ }
+
+ });
+
+ binding.web.setOnLongClickListener((View v) -> {
+ LoggerUtil.e("OnLongClick", "用户长按了页面");
+ return false;
+ });
+
+ binding.setting.setOnClickListener((view) -> {
+ if (!MyApplication.addClickTimes()) return;
+ binding.layoutPass.setVisibility(View.VISIBLE);
+ time = 0;
+ handler.removeMessages(TYPE_HINT_PASSWORD);
+ handler.sendEmptyMessage(TYPE_HINT_PASSWORD);
+ binding.tvPass.setText("");
+// ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).withBoolean(Constant.INPUT_PASSWORD, true).navigation();
+ });
+ }
+
+ //密码输入框
+ public void initPass(){
+ GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 5);
+ KeyAdapter keyAdapter = new KeyAdapter(this);
+ binding.recycKey.setLayoutManager(gridLayoutManager);
+ binding.recycKey.setAdapter(keyAdapter);
+
+ keyAdapter.setOnitemClickLintener(new KeyAdapter.OnitemClick() {
+ @Override
+ public void onItemClick(String position) {
+ time = 0;
+ if(position.equals("清空")){
+ binding.tvPass.setText("");
+ }else if(position.equals("删除")){
+ String s = binding.tvPass.getText().toString();
+ if(s.length()>0){
+ binding.tvPass.setText( s.substring(0,s.length()-1));
+ }else {
+ binding.tvPass.setText("");
+ }
+ }else if(position.equals("取消")){
+ binding.layoutPass.setVisibility(View.GONE);
+ }else if(position.equals("确定")){
+ SimpleDateFormat format = new SimpleDateFormat("ddMM");
+ String pwd = format.format(System.currentTimeMillis());//当前日期当前月份
+ StringBuilder sb = new StringBuilder(pwd);
+ String whatDay4 = CalendarUtils.getWhatDay4(System.currentTimeMillis());
+ pwd = sb.insert(2, whatDay4).toString();//密码为日星期月6位数
+ String inputPWD = binding.tvPass.getText().toString().trim();//输入的密码
+ if (!pwd.equals(inputPWD)) {
+ ToastUtils.showToast("密码错误");
+ return;
+ }
+ binding.layoutPass.setVisibility(View.GONE);
+ ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).withBoolean(Constant.INPUT_PASSWORD, false).navigation();
+ }else {
+ binding.tvPass.setText(binding.tvPass.getText().toString()+position);
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ leaveScreenSave();
+ binding.layoutPass.setVisibility(View.GONE);
+ //判断web服务是否正常
+ if(!Constant.isCoreService || !DeviceUtil.isServiceRunning( MyApplication.getInstance(),"CoreService")){
+ LoggerUtil.e("WebViewActivity","CoreService被关闭");
+ //开启本地web服务器
+ stopService(new Intent(WebViewActivity.this, CoreService.class));
+ handler.removeMessages(TYPE_START_SERVER);
+ handler.sendEmptyMessageDelayed(TYPE_START_SERVER,1000);
+ return;
+ }
+
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ KeyboardUtil.hideKeyboard(binding.getRoot());
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ if(handler!=null){
+ handler.removeMessages(TYPE_HINT_PASSWORD);
+ handler.removeMessages(TYPE_SHENG_HTML_MAG);
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ LoggerUtil.e(TAG, "onDestroy()");
+ if (mIat != null) {
+ // 退出时释放连接
+ mIat.cancel();
+ mIat.destroy();
+ }
+ }
+
+ private void loadH5Url(boolean loadUrl) {
+ if (!loadUrl) return;
+ String Url;
+ if(H5Data.getH5Url().isEmpty()){
+ Url = HtmlUrl;
+ }else {
+ Url = H5Data.getH5Url();
+ }
+ binding.web.clearCache(true);
+ binding.web.loadUrl(Url);
+ binding.web.setWebChromeClient(new WebChromeClient() {
+
+ public boolean onConsoleMessage(ConsoleMessage cm) {
+ if(!cm.message().contains("THREE.WebGLRenderer:") && !cm.message().contains("Uncaught (in promise) AbortError")){
+ LoggerUtil.e("WebView日志",cm.message());
+ }
+ return super.onConsoleMessage(cm);
+ }
+ });
+
+ binding.web.addJavascriptInterface(new AndroidtoJs(), "android");
+
+ }
+
+ public class AndroidtoJs extends Object {
+
+ // 回到屏保页面
+ @JavascriptInterface
+ public void goScreenSave() {
+
+ LoggerUtil.e(TAG,"JS调用了Android的方法:goScreenSave()");
+ if(handler!=null){
+ handler.removeMessages(TYPE_GO_SAVESCREEN);
+ handler.sendEmptyMessage(TYPE_GO_SAVESCREEN);
+ }
+ }
+
+ // 获取是否有屏保数据
+ @JavascriptInterface
+ public boolean hasProgram() {
+ boolean programPlay = ScreenSaverData.isProgramPlay();
+ LoggerUtil.e(TAG,"JS调用了Android的方法:hasProgram():"+programPlay);
+ return programPlay;
+ }
+
+ // 获取后台地址
+ @JavascriptInterface
+ public String getBaseAddress() {
+ LoggerUtil.e(TAG,"JS调用了Android的方法:getBaseAddress()");
+ return Constant.getBaseAddress();
+ }
+
+ // h5调用android:重启webView
+ @JavascriptInterface
+ public void restartWebView() {
+ LoggerUtil.e(TAG,"JS调用了Android的方法:restartWebView()");
+ handler.removeMessages(TYPE_REFURBISH_WEBVIEW);
+ handler.sendEmptyMessageDelayed(TYPE_REFURBISH_WEBVIEW,3000);
+ }
+
+ // h5调用android:开始识别语音
+ @JavascriptInterface
+ public void startVoice() {
+ LoggerUtil.e(TAG,"JS调用了Android的方法:startVoice()");
+ mIat.startListening(mRecognizerListener);
+ }
+
+ // h5调用android:结束识别语音
+ @JavascriptInterface
+ public void stopVoice() {
+ LoggerUtil.e(TAG,"JS调用了Android的方法:stopVoice()");
+
+ }
+
+ // h5调用android:传入要播报语音
+ @JavascriptInterface
+ public void TTS(String content) {
+ LoggerUtil.e(TAG,"JS调用了Android的方法:TTS()");
+
+ }
+ // h5调用android:停止语音播报播报语音
+ @JavascriptInterface
+ public void TTSStop() {
+ LoggerUtil.e(TAG,"JS调用了Android的方法:TTSStop()");
+ }
+
+ // h5调用android:新版指路机传入的数据
+ @JavascriptInterface
+ public void jxbData(String data) {
+ LoggerUtil.e(TAG,"JS调用了Android的方法:jxbData()");
+ DeviceData.saveDeviceInfo(DeviceData.JXB_DATA,data);
+ }
+
+ // h5调用android:接口请求post
+ @JavascriptInterface
+ public void interfaceRequest(String url , String map , boolean state) {
+ DeviceData.queryOfflineDataByInterfaceToPost(url, map, new QueryFinishListener() {
+ @Override
+ public void onFinish() {
+ if(state){
+ interfaceRequestData = DeviceData.getInterfaceRequestData();
+ handler.sendEmptyMessage(TYPE_SHENG_HTML_MAG);
+ }
+ }
+ });
+
+// LoggerUtil.e(TAG,"JS调用了Android的方法:interfaceRequest1():"+url+","+map);
+
+ }
+
+ // h5调用android:接口请求get
+ @JavascriptInterface
+ public void interfaceRequest(String url , boolean state) {
+
+ DeviceData.queryOfflineDataByInterfaceToGet(url, new QueryFinishListener() {
+ @Override
+ public void onFinish() {
+ if(state){
+ interfaceRequestData = DeviceData.getInterfaceRequestData();
+ handler.sendEmptyMessage(TYPE_SHENG_HTML_MAG);
+ }
+ }
+ });
+// LoggerUtil.e(TAG,"JS调用了Android的方法:interfaceRequest2():"+url);
+ }
+
+
+ //旧版指路机:移动手臂
+ @JavascriptInterface
+ public void moveArm(String shopName) {
+ //直梯+编号 扶梯+编号
+ LoggerUtil.e("MainActivity","JS调用了Android的方法:moveArm:"+shopName);
+ getMoveArm(shopName);
+ }
+
+ //旧版指路机:是否轮播摇臂
+ @JavascriptInterface
+ public void setRotateSwitcher(String isRotate) {
+
+ try {
+ SmUtils instance = SmUtils.getInstance();
+ instance.rotateSwitcher(Boolean.parseBoolean(isRotate));
+ }catch (Exception e){
+
+ }
+
+// LoggerUtil.e("MainActivity","JS调用了Android的方法:getArmNum:"+isCarousel);
+
+ }
+
+
+ }
+
+ /**
+ * 安卓调用h5方法通知进入导视
+ * */
+ public void leaveScreenSave(){
+ if(binding.web!=null){
+ binding.web.loadUrl(StringUtil.strSplice("javascript:leaveScreenSave();"));
+ }
+ }
+
+ /**
+ * android调用js:传送识别语音内容
+ * */
+ public void voiceContent(String msg){
+ if(binding.web!=null){
+ binding.web.loadUrl(StringUtil.strSplice("javascript:voiceContent("+ msg +");"));
+ LoggerUtil.e(TAG,"android调用js方法:voiceContent(),语音内容:"+msg);
+ }
+ }
+
+ /**
+ * android调用js 传送接口请求数据
+ * */
+ public void getHandWriting(String msg){
+ if(binding.web!=null){
+ binding.web.loadUrl(StringUtil.strSplice("javascript:handWriting("+ msg +");"));
+// LoggerUtil.e(TAG,"android调用js方法:getHandWriting(),接口请求数据:"+msg);
+ }
+ }
+
+ /**
+ * 初始化监听器。
+ */
+ private InitListener mInitListener = new InitListener() {
+
+ @Override
+ public void onInit(int code) {
+
+ LoggerUtil.e(TAG, "语音初始化"+"SpeechRecognizer init() code = " + code);
+ if (code == ErrorCode.SUCCESS) {
+ mIat.setParameter(SpeechConstant.CLOUD_GRAMMAR, null); //设置语法ID和 SUBJECT 为空,以免因之前有语法调用而设置了此参数;或直接清空所有参数,具体可参考 DEMO 的示例。
+ mIat.setParameter(SpeechConstant.SUBJECT, null);
+ mIat.setParameter(SpeechConstant.RESULT_TYPE, "plain"); //设置返回结果格式,目前支持json,xml以及plain 三种格式,其中plain为纯听写文本内容
+ mIat.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //此处engineType为“cloud”
+ mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); //设置语音输入语言,zh_cn为简体中文
+// mIat.setParameter(SpeechConstant.LANGUAGE, "en_us"); //设置语音输入语言,zh_cn为简体中文
+ mIat.setParameter(SpeechConstant.ACCENT, "mandarin"); //设置结果返回语言
+ mIat.setParameter(SpeechConstant.VAD_BOS, "4000"); //取值范围{1000~10000} 设置语音前端点:静音超时时间,单位ms,即用户多长时间不说话则当做超时处理
+ mIat.setParameter(SpeechConstant.VAD_EOS, "1000"); //自动停止录音,范围{0~10000} 设置语音后端点:后端点静音检测时间,单位ms,即用户停止说话多长时间内即认为不再输入,
+ mIat.setParameter(SpeechConstant.ASR_PTT, "0"); //设置标点符号,设置为"0"返回结果无标点,设置为"1"返回结果有标点
+ }
+ }
+ };
+
+ /**
+ * 听写监听器。
+ */
+ private RecognizerListener mRecognizerListener = new RecognizerListener() {
+
+ @Override
+ public void onBeginOfSpeech() {
+ // 此回调表示:sdk内部录音机已经准备好了,用户可以开始语音输入
+ Log.e(TAG,"开始说话");
+ vocMsg="";
+ }
+
+ @Override
+ public void onError(SpeechError error) {
+ // Tips:
+ // 错误码:10118(您没有说话),可能是录音机权限被禁,需要提示用户打开应用的录音权限。
+ LoggerUtil.e(TAG, "onError " + error.getPlainDescription(true));
+ Vocbean vocbean = new Vocbean();
+ vocbean.setCode(error.getErrorCode()+"");
+ vocbean.setMsg("");
+ vocMsg=new Gson().toJson(vocbean);
+ voiceContent(vocMsg);
+ }
+
+ @Override
+ public void onEndOfSpeech() {
+ // 此回调表示:检测到了语音的尾端点,已经进入识别过程,不再接受语音输入
+ LoggerUtil.e(TAG,"结束说话");
+ }
+
+ @Override
+ public void onResult(RecognizerResult results, boolean isLast) {
+ Log.e(TAG, results.getResultString());
+
+ if(!results.getResultString().isEmpty()){
+ Vocbean vocbean = new Vocbean();
+ vocbean.setCode("200");
+ vocbean.setMsg(results.getResultString());
+ vocMsg= new Gson().toJson(vocbean);
+ voiceContent(vocMsg);
+ }
+ if (isLast) {
+ Log.d(TAG, "onResult 结束");
+ }
+
+ }
+
+ @Override
+ public void onVolumeChanged(int volume, byte[] data) {
+// Log.e(TAG,"当前正在说话,音量大小 = " + volume + " 返回音频数据 = " + data.length);
+ }
+
+ @Override
+ public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
+ // 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因
+ // 若使用本地能力,会话id为null
+ // if (SpeechEvent.EVENT_SESSION_ID == eventType) {
+ // String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID);
+ // Log.d(TAG, "session id =" + sid);
+ // }
+ }
+ };
+
+ /**
+ * 调用手臂方法
+ * */
+ public void getMoveArm(String name){
+ int masterArm = H5Data.getKdxf().getData().getControlInfo().getMasterArm();//机械臂编号1、2、3
+ SmUtils instance = SmUtils.getInstance();
+ instance.getTargets("00:00:00:00:00:00", masterArm, new IHttp() {
+ @Override
+ public void onHttpResponse(int i, Object o) {
+ //获取到表单
+// Log.e("TAG","极点:"+ GsonUtil.getGson().toJson(o));
+ List targetList = (List)o;
+ for(int x=0;x {
+
+ public static final int ACTION_CHANGE_SERVER_INFO = 1;
+ public static final int ACTION_CHANGE_DEVICE_INFO = 2;
+ public static final int ACTION_SAVE_DEVICE_INFO = 3;
+ public static final int ACTION_INPUT_PASSWORD = 4;
+ public static final int ACTION_CANCEL = 5;
+
+ protected Context context;
+ protected T binding;
+ protected ViewClickListener listener;
+
+ public ViewBase(Context context, View view) {
+ this.context = context;
+ binding = DataBindingUtil.getBinding(view);
+ initView();
+ setData();
+ setListener();
+ }
+
+ protected void initView() {
+
+ }
+
+
+ protected void setData() {
+
+ }
+
+
+ protected void setListener() {
+
+ }
+
+ public void showView() {
+ binding.getRoot().setVisibility(View.VISIBLE);
+ setData();
+ }
+
+ public void hideView() {
+ binding.getRoot().setVisibility(View.GONE);
+ }
+
+ public void destroyView() {
+
+ }
+
+ public void setViewClickListener(ViewClickListener listener) {
+ this.listener = listener;
+ }
+
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/device/DeviceInfoActivity.java b/app/src/main/java/qianmu/container/activity/device/DeviceInfoActivity.java
new file mode 100644
index 0000000..a635b72
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/device/DeviceInfoActivity.java
@@ -0,0 +1,187 @@
+package qianmu.container.activity.device;
+
+import android.Manifest;
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+
+import cn.huidu.toolkit.HuiduTech;
+import qianmu.container.R;
+import qianmu.container.activity.BaseActivity;
+import qianmu.container.activity.H5.CoreService;
+import qianmu.container.activity.H5.UpdateFileActivity;
+import qianmu.container.activity.ViewBase;
+import qianmu.container.app.Constant;
+import qianmu.container.app.MyApplication;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.FloorData;
+import qianmu.container.data.MqttData;
+import qianmu.container.databinding.ActivityDeviceInfoBinding;
+import qianmu.container.entity.MqttInfoBean;
+import qianmu.container.manager.QMWindowManager;
+import qianmu.container.mqtt.MQTTService;
+import qianmu.container.service.ContainerService;
+import qianmu.container.service.MessengerService;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.KeyboardUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.SignWayUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+
+@SuppressWarnings("All")
+@Route(path = Constant.ROUTE_DEVICE_INFO)
+public class DeviceInfoActivity extends BaseActivity {
+
+ ActivityDeviceInfoBinding binding;
+ ViewServerInfo serverInfo;
+ ViewDeviceInfo deviceInfo;
+ ViewInputPassword inputPassword;
+ int PERMISSION_CODE=2;
+
+ @Override
+ protected void initView() {
+ currRoute = Constant.ROUTE_DEVICE_INFO;
+ binding = DataBindingUtil.setContentView(this, R.layout.activity_device_info);
+ serverInfo = new ViewServerInfo(this, binding.viewServerInfo.getRoot());
+ deviceInfo = new ViewDeviceInfo(this, binding.viewDeviceInfo.getRoot());
+ inputPassword = new ViewInputPassword(this, binding.viewInputPassword.getRoot());
+ setPermission();
+ }
+
+ @Override
+ protected void setData() {
+
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ boolean result = getIntent().getBooleanExtra(Constant.INPUT_PASSWORD, false);
+ if (result) showInputPassword();
+ else showServerInfo();
+
+ }
+
+ @Override
+ protected void setListener() {
+ inputPassword.setViewClickListener(this::viewClick);
+ serverInfo.setViewClickListener(this::viewClick);
+ deviceInfo.setViewClickListener(this::viewClick);
+ binding.getRoot().setOnClickListener(KeyboardUtil::hideKeyboard);
+
+ binding.exit.setOnClickListener((view) -> {
+ LoggerUtil.e("DeviceInfoActivity", "退出软件");
+ exitApp();
+
+ });
+
+ binding.restart.setOnClickListener(view -> {
+ LoggerUtil.e("DeviceInfoActivity", "重启设备");
+ SignWayUtil.reboot();
+ });
+ }
+
+ /**
+ * 检测权限并授权
+ * */
+ private void setPermission(){
+
+ if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
+
+ ActivityCompat.requestPermissions(this,new String[]{
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
+ Manifest.permission.ACCESS_NETWORK_STATE,
+ Manifest.permission.CAMERA,
+ Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.RECEIVE_BOOT_COMPLETED,
+ Manifest.permission.SYSTEM_ALERT_WINDOW,
+ Manifest.permission.READ_PHONE_STATE,
+ Manifest.permission.ACCESS_NETWORK_STATE},PERMISSION_CODE);
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if(requestCode==PERMISSION_CODE){
+
+ }
+ }
+
+ private void viewClick(int action) {
+ if (action == ViewBase.ACTION_INPUT_PASSWORD) {
+ inputPassword.showView();
+ deviceInfo.hideView();
+ serverInfo.hideView();
+ binding.exit.setVisibility(View.GONE);
+ } else if (action == ViewBase.ACTION_CHANGE_SERVER_INFO) {
+ inputPassword.hideView();
+ deviceInfo.hideView();
+ serverInfo.showView();
+ binding.exit.setVisibility(View.VISIBLE);
+ } else if (action == ViewBase.ACTION_CHANGE_DEVICE_INFO) {
+// if (FloorData.getBuildingList().size() == 0) {
+// ToastUtils.showToast("楼栋数据异常");
+// return;
+// }
+ //获取图片视频下载地址
+ DeviceData.getUploadUrl(null,null);
+
+ inputPassword.hideView();
+ serverInfo.hideView();
+ deviceInfo.showView();
+ binding.exit.setVisibility(View.VISIBLE);
+ } else if (action == ViewBase.ACTION_SAVE_DEVICE_INFO) {
+ MqttInfoBean mqttInfo = MqttData.getMqttInfo();
+ if (mqttInfo.getServer()== null) return;
+ //跳转至数据更新页面
+ ARouter.getInstance().build(Constant.ROUTE_UPDATE_FILE).navigation();
+ finish();
+ } else if (action == ViewBase.ACTION_CANCEL) {
+ String deviceType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE);//设备类型,导视,信发等
+ if ("信发".equals(deviceType) || "双面屏".equals(deviceType)) {
+ LoggerUtil.e("DeviceInfoActivity","ACTION_CANCEL-跳转信发");
+ ARouter.getInstance().build(Constant.ROUTE_SCREEN_SAVER).navigation();
+ } else{
+ LoggerUtil.e("DeviceInfoActivity","ACTION_CANCEL-跳转导视");
+ ARouter.getInstance().build(Constant.ROUTE_WEB_VIEW).withBoolean(Constant.KEY_LOAD_H5_URL, true).navigation();
+ }
+ finish();
+ }
+ }
+
+ //显示输入密码
+ private void showInputPassword() {
+ inputPassword.showView();
+ serverInfo.hideView();
+ deviceInfo.hideView();
+ binding.exit.setVisibility(View.GONE);
+ }
+
+ //显示服务器信息
+ private void showServerInfo() {
+ inputPassword.hideView();
+ serverInfo.showView();
+ deviceInfo.hideView();
+ }
+
+ //显示设备详细信息
+ private void showDeviceInfo() {
+ inputPassword.hideView();
+ serverInfo.hideView();
+ deviceInfo.showView();
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/device/ViewDeviceInfo.java b/app/src/main/java/qianmu/container/activity/device/ViewDeviceInfo.java
new file mode 100644
index 0000000..09b63bc
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/device/ViewDeviceInfo.java
@@ -0,0 +1,296 @@
+package qianmu.container.activity.device;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import qianmu.container.R;
+import qianmu.container.activity.ViewBase;
+import qianmu.container.adapter.BuildingAdapter;
+import qianmu.container.adapter.DeviceNameAdapter;
+import qianmu.container.adapter.DeviceTypeAdapter;
+import qianmu.container.adapter.FloorAdapter;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.FloorData;
+import qianmu.container.data.MqttData;
+import qianmu.container.databinding.ViewDeviceInfoBinding;
+import qianmu.container.entity.Building;
+import qianmu.container.entity.Dict;
+import qianmu.container.listener.ItemSelectedListener;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.SignWayUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+
+public class ViewDeviceInfo extends ViewBase {
+
+
+ private BuildingAdapter buildingAdapter;
+ private FloorAdapter floorAdapter;
+ private DeviceNameAdapter deviceNameAdapter;
+
+ ViewDeviceInfo(Context context, View view) {
+ super(context, view);
+ }
+
+ @Override
+ protected void initView() {
+ initBuildingInfo();
+ initFloorInfo();
+ initDeviceName();
+ }
+
+ @Override
+ protected void setData() {
+ updateBuildingInfo();
+
+ String syncTest = DeviceData.getDeviceInfo(DeviceData.HINT_SYNC_TEST, "关闭");
+ if ("开启".equals(syncTest)) binding.rgSyncTest.check(R.id.sync_test_open);
+ else binding.rgSyncTest.check(R.id.sync_test_close);
+
+ binding.deviceIp.setText(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_IP, DeviceUtil.getLocalIP()));//显示Ip
+ binding.tvProjectName.setText(FloorData.getMallName());//商场名称显示
+ binding.deviceMac.setText(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_MAC, SignWayUtil.getEthMacAddress()));//显示Mac
+ }
+
+ Building.Machine machine;
+ Building building;
+ Building.Floor floor;
+ @Override
+ protected void setListener() {
+ //确定按钮
+ binding.saveDeviceInfo.setOnClickListener((view) -> saveDeviceInfo());
+
+ //楼栋
+ binding.buildingInfo.setOnItemSelectedListener(new ItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ if (position >= buildingAdapter.getCount()) {
+ Log.e("onItemSelected", "选中item超出设备类型总个数");
+ return;
+ }
+ Log.e("TAG", "楼栋选中item");
+ building = buildingAdapter.getData().get(position);
+ if (building == null) return;
+
+
+ List floorList = building.getFloor();
+// String buildingCode = StringUtil.getString(building.getCode());
+// DeviceData.saveDeviceInfo(DeviceData.BUILDING_CODE, buildingCode);
+// DeviceData.saveDeviceInfo(DeviceData.BUILDING_NAME, building.getName());
+ updateFloorInfo(floorList);
+ }
+ });
+
+ //楼层
+ binding.floorInfo.setOnItemSelectedListener(new ItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ if (position >= floorAdapter.getCount()) {
+ Log.e("onItemSelected", "选中item超出设备类型总个数");
+ return;
+ }
+ Log.e("TAG", "楼层选中item");
+ floor = floorAdapter.getData().get(position);
+ if (floor == null) return;
+// String floorCode = StringUtil.getString(floor.getCode());
+// String floorName = StringUtil.getString(floor.getName());
+// DeviceData.saveDeviceInfo(DeviceData.FLOOR_CODE, floorCode);
+// DeviceData.saveDeviceInfo(DeviceData.FLOOR_NAME, floorName);
+// FloorData.saveCurrentFloorInfo(floor);
+ updateDeviceName(floor.getMachine());
+ }
+ });
+
+ //设备
+ binding.deviceName.setOnItemSelectedListener(new ItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ if (position >= deviceNameAdapter.getCount()) {
+ Log.e("onItemSelected", "选中item超出设备类型总个数");
+ return;
+ }
+ Log.e("TAG", "设备选中item");
+ machine = deviceNameAdapter.getData().get(position);
+ if (machine == null) return;
+// String dictCode = StringUtil.getString(machine.getCode());
+// DeviceData.saveDeviceInfo(DeviceData.HINT_DEVICE_CODE, dictCode);
+// FloorData.saveCurrentDeviceInfo(machine);
+ binding.deviceType.setText(machine.getMachineTypeName());
+
+ }
+ });
+
+ binding.updateServerInfo.setOnClickListener((view) -> {
+ if (listener != null) listener.onClick(ACTION_CHANGE_SERVER_INFO);
+ });
+ binding.getRoot().setOnClickListener((view) -> {
+
+ });
+ }
+
+ private void initBuildingInfo() {
+ buildingAdapter = new BuildingAdapter(context);
+ binding.buildingInfo.setAdapter(buildingAdapter);
+ }
+
+ private void initFloorInfo() {
+ floorAdapter = new FloorAdapter(context);
+ binding.floorInfo.setAdapter(floorAdapter);
+ }
+
+ private void initDeviceName() {
+ deviceNameAdapter = new DeviceNameAdapter(context);
+ binding.deviceName.setAdapter(deviceNameAdapter);
+ }
+
+
+ private void updateBuildingInfo() {
+
+ List buildingList = FloorData.getBuildingList();
+ buildingAdapter.setData(buildingList);
+ buildingAdapter.notifyDataSetChanged();
+ if (buildingList==null || buildingList.size() == 0) return;
+
+ String buildingCode = DeviceData.getDeviceInfo(DeviceData.BUILDING_CODE);
+
+ for (int i = 0; i < buildingList.size(); i++) {
+ Building building = buildingList.get(i);
+ if (building == null) continue;
+ String tempCode = StringUtil.getString(building.getCode());
+
+ if (!tempCode.equals(buildingCode)) continue;
+ binding.buildingInfo.setSelection(i);
+
+ List floorList = building.getFloor();
+ updateFloorInfo(floorList == null ? new ArrayList<>() : floorList);
+ return;
+ }
+
+ Building building = buildingList.get(0);
+ if (building == null) return;
+ binding.buildingInfo.setSelection(0);
+// DeviceData.saveDeviceInfo(DeviceData.BUILDING_CODE, StringUtil.getString(building.getCode()));
+
+ List floorList = buildingList.get(0).getFloor();
+ updateFloorInfo(floorList == null ? new ArrayList<>() : floorList);
+ }
+
+ private void updateFloorInfo(List floorList) {
+
+ floorAdapter.setData(floorList);
+ floorAdapter.notifyDataSetChanged();
+ if (floorList.size() == 0) return;
+
+ String floorCode = DeviceData.getDeviceInfo(DeviceData.FLOOR_CODE);
+
+ for (int i = 0; i < floorList.size(); i++) {
+ Building.Floor floor = floorList.get(i);
+ if (floor == null) continue;
+
+ String tempCode = StringUtil.getString(floor.getCode());
+ if (!tempCode.equals(floorCode)) continue;
+
+ binding.floorInfo.setSelection(i);
+// DeviceData.saveDeviceInfo(DeviceData.FLOOR_CODE, floor.getCode());
+// FloorData.saveCurrentFloorInfo(floor);
+ List machine = floor.getMachine();
+ updateDeviceName(machine == null ? new ArrayList<>() : machine);
+ return;
+ }
+
+ Building.Floor floor = floorList.get(0);
+ if (floor == null) return;
+
+ binding.floorInfo.setSelection(0);
+ List machineList = floor.getMachine();
+ updateDeviceName(machineList == null ? new ArrayList<>() : machineList);
+
+// DeviceData.saveDeviceInfo(DeviceData.FLOOR_CODE, StringUtil.getString(floor.getCode()));
+ }
+
+ /**
+ * 设备名称信息
+ * */
+ private void updateDeviceName(List machineList) {
+ deviceNameAdapter.setData(machineList);
+ deviceNameAdapter.notifyDataSetChanged();
+ if (machineList.size() == 0) return;
+
+ String deviceId = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE);
+ for (int i = 0; i < machineList.size(); i++) {
+ Building.Machine machine = machineList.get(i);
+ if (machine == null) continue;
+
+ String machineCode = StringUtil.getString(machine.getCode());
+ if (!machineCode.equals(deviceId)) continue;
+
+ binding.deviceName.setSelection(i);
+ return;
+ }
+
+ machine = machineList.get(0);
+ if (machine == null) return;
+
+ binding.deviceName.setSelection(0);
+ DeviceData.saveDeviceInfo(DeviceData.HINT_DEVICE_CODE, StringUtil.getString(machine.getCode()));//设备code
+ FloorData.saveCurrentDeviceInfo(machine);
+ binding.deviceType.setText(machine.getMachineTypeName());
+ }
+
+ private void saveDeviceInfo() {
+
+ String deviceIp = binding.deviceIp.getText().toString().trim();
+
+ int checkId = binding.rgSyncTest.getCheckedRadioButtonId();
+
+ if (StringUtil.isEmpty(deviceIp)) {
+ ToastUtils.showToast("ip地址未填写");
+ return;
+ }
+
+ if (building == null) {
+ ToastUtils.showToast("暂无楼栋数据");
+ return;
+ }
+ String buildingCode = StringUtil.getString(building.getCode());
+ DeviceData.saveDeviceInfo(DeviceData.BUILDING_CODE, buildingCode);
+ DeviceData.saveDeviceInfo(DeviceData.BUILDING_NAME, building.getName());
+
+ if (floor == null) {
+ ToastUtils.showToast("暂无楼层数据");
+ return;
+ }
+ String floorCode = StringUtil.getString(floor.getCode());
+ String floorName = StringUtil.getString(floor.getName());
+ DeviceData.saveDeviceInfo(DeviceData.FLOOR_CODE, floorCode);
+ DeviceData.saveDeviceInfo(DeviceData.FLOOR_NAME, floorName);
+ FloorData.saveCurrentFloorInfo(floor);
+
+ if (machine == null){
+ ToastUtils.showToast("暂无设备数据");
+ return;
+ }
+
+ FloorData.saveCurrentDeviceInfo(machine);
+
+ DeviceData.saveDeviceInfo(DeviceData.HINT_SYNC_TEST, checkId == R.id.sync_test_open ? "开启" : "关闭");
+ DeviceData.saveDeviceInfo(DeviceData.HINT_DEVICE_IP, deviceIp);//设备ip
+ DeviceData.saveDeviceInfo(DeviceData.HINT_DEVICE_CODE, StringUtil.getString(machine.getCode()));//设备code
+ DeviceData.saveDeviceInfo(DeviceData.HINT_DEVICE_NAME, StringUtil.getString(machine.getName()));//设备名称
+ DeviceData.saveDeviceInfo(DeviceData.HINT_DEVICE_TYPE, StringUtil.getString(machine.getMachineTypeName()));//设备类型
+ DeviceData.saveDeviceInfo(DeviceData.HINT_DEVICE_TOUCH, String.valueOf(machine.getAttribute()));//设备触摸
+
+ String deviceCode = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE);
+ MqttData.getMQTTToken(deviceCode,null,null);
+ DeviceData.addDevice((DeviceInfoActivity) context, null, () -> {
+ if (listener != null) listener.onClick(ACTION_SAVE_DEVICE_INFO);
+ });
+ }
+
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/device/ViewInputPassword.java b/app/src/main/java/qianmu/container/activity/device/ViewInputPassword.java
new file mode 100644
index 0000000..0456090
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/device/ViewInputPassword.java
@@ -0,0 +1,61 @@
+package qianmu.container.activity.device;
+
+import android.content.Context;
+import android.view.View;
+
+import java.text.SimpleDateFormat;
+
+import qianmu.container.activity.ViewBase;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.FloorData;
+import qianmu.container.databinding.ViewInputPasswordBinding;
+import qianmu.container.listener.ViewClickListener;
+import qianmu.container.util.CalendarUtils;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+
+@SuppressWarnings("All")
+public class ViewInputPassword extends ViewBase {
+ public ViewInputPassword(Context context, View view) {
+ super(context, view);
+ }
+
+ @Override
+ protected void initView() {
+ super.initView();
+ }
+
+ @Override
+ protected void setData() {
+ super.setData();
+ binding.password.setText("");
+ }
+
+ @Override
+ protected void setListener() {
+ super.setListener();
+ binding.confirm.setOnClickListener((view) -> {
+ SimpleDateFormat format = new SimpleDateFormat("ddMM");
+ String pwd = format.format(System.currentTimeMillis());//当前日期当前月份
+ StringBuilder sb = new StringBuilder(pwd);
+ String whatDay4 = CalendarUtils.getWhatDay4(System.currentTimeMillis());
+ pwd = sb.insert(2, whatDay4).toString();//密码为日星期月6位数
+ String inputPWD = binding.password.getText().toString().trim();//输入的密码
+ if (!pwd.equals(inputPWD)) {
+ ToastUtils.showToast("密码错误");
+ return;
+ }
+ if (listener != null) listener.onClick(ACTION_CHANGE_SERVER_INFO);
+ });
+ binding.cancel.setOnClickListener((View) -> {
+ if (listener != null) listener.onClick(ACTION_CANCEL);
+ });
+ binding.getRoot().setOnClickListener((view) -> {
+
+ });
+ }
+
+ public void setViewClickListener(ViewClickListener listener) {
+ this.listener = listener;
+ }
+}
diff --git a/app/src/main/java/qianmu/container/activity/device/ViewServerInfo.java b/app/src/main/java/qianmu/container/activity/device/ViewServerInfo.java
new file mode 100644
index 0000000..480dce2
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/device/ViewServerInfo.java
@@ -0,0 +1,94 @@
+package qianmu.container.activity.device;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.Toast;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import qianmu.container.activity.ViewBase;
+import qianmu.container.adapter.ContainerTypeAdapter;
+import qianmu.container.app.Constant;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.FloorData;
+import qianmu.container.databinding.ViewServerInfoBinding;
+import qianmu.container.entity.Building;
+import qianmu.container.http.retrofit.RetrofitUtil;
+import qianmu.container.listener.ItemSelectedListener;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.SignWayUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+
+public class ViewServerInfo extends ViewBase {
+
+ ViewServerInfo(Context context, View view) {
+ super(context, view);
+ }
+
+ @Override
+ protected void initView() {
+
+ }
+
+ @Override
+ protected void setData() {
+ binding.serverIp.setText(DeviceData.getDeviceInfo(DeviceData.HINT_SERVER_IP).isEmpty()?Constant.DEFAULT_SERVER_IP:DeviceData.getDeviceInfo(DeviceData.HINT_SERVER_IP));
+ binding.regKey.setText(DeviceData.getDeviceInfo(DeviceData.HINT_REG_KEY));
+ }
+
+ @Override
+ protected void setListener() {
+
+ //获取楼层楼栋
+ binding.queryConstList.setOnClickListener((view) -> {
+ String serverIP = binding.serverIp.getText().toString().trim();
+ String regKey = binding.regKey.getText().toString().trim();//商场注册码
+
+ if(!serverIP.contains("http")){
+ ToastUtils.showToast("请输入正确服务器地址");
+ return;
+ }
+ //验证服务器信息是否为空
+ if (StringUtil.isEmpty(serverIP)) {
+ ToastUtils.showToast("请先完善服务器信息");
+ return;
+ }
+ //更新本地的服务器信息
+ DeviceData.saveDeviceInfo(DeviceData.HINT_SERVER_IP, serverIP);
+ DeviceData.saveDeviceInfo(DeviceData.HINT_REG_KEY, regKey);
+ RetrofitUtil.removeService();
+
+ //清除缓存的楼层楼栋数据
+// FloorData.saveBuildingList(new ArrayList<>());
+
+ FloorData.getDeviceOptionsNew(regKey, null, () -> {
+ if (listener != null) listener.onClick(ACTION_CHANGE_DEVICE_INFO);
+ });
+
+ });
+ binding.getRoot().setOnClickListener((view) -> {
+
+ });
+
+ //下一步
+ binding.btNext.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ List buildingList = FloorData.getBuildingList();
+ if(buildingList==null||buildingList.size()==0){
+ ToastUtils.showToast("请先获取楼层楼栋数据");
+ return;
+ }
+ if (listener != null) listener.onClick(ACTION_CHANGE_DEVICE_INFO);
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/program/MyPresentation.java b/app/src/main/java/qianmu/container/activity/program/MyPresentation.java
new file mode 100644
index 0000000..a8dde71
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/program/MyPresentation.java
@@ -0,0 +1,4334 @@
+package qianmu.container.activity.program;
+
+import android.app.Presentation;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Display;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.TranslateAnimation;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+import android.widget.VideoView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.airbnb.lottie.LottieAnimationView;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.bumptech.glide.Glide;
+import com.dl7.player.media.IjkPlayerView;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.loopj.android.http.AsyncHttpClient;
+import com.loopj.android.http.AsyncHttpResponseHandler;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import cz.msebera.android.httpclient.Header;
+import qianmu.container.R;
+import qianmu.container.activity.H5.CoreService;
+import qianmu.container.adapter.WeatherAdapter0;
+import qianmu.container.adapter.WeatherAdapter1;
+import qianmu.container.app.Constant;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.ScreenSaverData;
+import qianmu.container.entity.FacilitiesBean;
+import qianmu.container.entity.InterFaceBean;
+import qianmu.container.entity.MapDataListBean;
+import qianmu.container.entity.NewProgramBean;
+import qianmu.container.entity.ResourceFileBean;
+import qianmu.container.entity.Resp;
+import qianmu.container.entity.ShuipaiDataListBean;
+import qianmu.container.entity.TextBean;
+import qianmu.container.entity.WeatherBean;
+import qianmu.container.http.retrofit.RetrofitUtil;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.listener.QueryPreparedListener;
+import qianmu.container.socket.manager.LocSocCliManager;
+import qianmu.container.socket.manager.SocketServerManager;
+import qianmu.container.util.AesUtil;
+import qianmu.container.util.BitmapUtil;
+import qianmu.container.util.ColorUtil;
+import qianmu.container.util.FileUtil;
+import qianmu.container.util.GsonUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.TimeUtil;
+import qianmu.container.view.AutoScrollTextView;
+import qianmu.container.view.CustomerVideoView;
+import qianmu.container.view.MarqueeTextView;
+import qianmu.container.view.MarqueeTextView2;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+/**
+ * 双屏异显
+ * */
+class MyPresentation extends Presentation {
+
+ public static final int PLAY_PROGRAM = 0;
+ public static final int PLAY_PROGRAM_BY_INDEX = 1;
+
+ static final int TYPE_UPDATE_PROGRAMME = 500;//切换日程单
+ static final int TYPE_UPDATE_PROGRAM = 501;//切换节目单
+ static final int TYPE_UPDATE_VIDEO0 = 502;//视频更新
+ static final int TYPE_UPDATE_VIDEO1 = 503;//视频更新
+ static final int TYPE_UPDATE_IMAGE0 = 504;//图片更新
+ static final int TYPE_UPDATE_IMAGE1 = 505;//图片更新
+ static final int TYPE_UPDATE_IMAGE2 = 506;//图片更新
+ static final int TYPE_UPDATE_IMAGE3 = 507;//图片更新
+ static final int TYPE_UPDATE_IMAGE4 = 508;//图片更新
+ static final int TYPE_UPDATE_IMAGE5 = 509;//图片更新
+ static final int TYPE_UPDATE_IMAGE6 = 510;//图片更新
+ static final int TYPE_UPDATE_IMAGE7 = 511;//图片更新
+ static final int TYPE_UPDATE_IMAGE8 = 512;//图片更新
+ static final int TYPE_UPDATE_IMAGE9 = 513;//图片更新
+ static final int TYPE_UPDATE_IMAGE10 = 514;//图片更新
+ static final int TYPE_UPDATE_IMAGE11 = 515;//图片更新
+ static final int TYPE_UPDATE_IMAGE12 = 516;//图片更新
+ static final int TYPE_UPDATE_IMAGE13 = 517;//图片更新
+ static final int TYPE_UPDATE_IMAGE14 = 518;//图片更新
+ static final int TYPE_UPDATE_IMAGE15 = 519;//图片更新
+
+ static final int TYPE_UPDATE_TEXT4 = 524;//文本更新
+
+ static final int TYPE_UPDATE_TIME0 = 536;//时间更新
+ static final int TYPE_UPDATE_MEIDA0 = 537;//音频更新
+ static final int TYPE_UPDATE_WEATHER0 = 538;//天气更新
+ static final int TYPE_UPDATE_DATA = 539;//更新JSON
+ static final int TYPE_TIME_UPDATE_DATA = 540;//定时更新JSON
+ static final int TYPE_UPDATE_MACTH = 542;//匹配时间是否更新;
+ static final int TYPE_DOWNLOAD_FILE = 543;//下载文件
+ static final int TYPE_GET_NEXT_OTHER_IMG = 544;//下个节目的图片
+ static final int TYPE_STOP_VIDEO_PLAY0 = 545;//暂停播放
+ static final int TYPE_STOP_VIDEO_PLAY1 = 546;//暂停播放
+ static final int TYPE_HINT_IMG0 = 547;//隐藏额外图片
+ static final int TYPE_HINT_IMG1 = 548;//隐藏额外图片
+ static final int TYPE_HINT_IMG2 = 549;//隐藏额外图片
+ static final int TYPE_HINT_IMG3 = 550;//隐藏额外图片
+ static final int TYPE_HINT_IMG4 = 551;//隐藏额外图片
+ static final int TYPE_HINT_IMG5 = 552;//隐藏额外图片
+ static final int TYPE_HINT_IMG6 = 553;//隐藏额外图片
+ static final int TYPE_HINT_IMG7 = 554;//隐藏额外图片
+ static final int TYPE_HINT_IMG8 = 555;//隐藏额外图片
+ static final int TYPE_HINT_IMG9 = 556;//隐藏额外图片
+ static final int TYPE_HINT_IMG10 = 557;//隐藏额外图片
+ static final int TYPE_HINT_IMG11 = 558;//隐藏额外图片
+ static final int TYPE_HINT_IMG12 = 559;//隐藏额外图片
+ static final int TYPE_HINT_IMG13 = 560;//隐藏额外图片
+ static final int TYPE_HINT_IMG14 = 561;//隐藏额外图片
+ static final int TYPE_HINT_IMG15 = 562;//隐藏额外图片
+ static final int TYPE_CHANGE_PROGRAMME_STATE = 563;//切换日程状态
+
+ static final int TYPE_GET_NEXT_PROGRAMME_OTHER_IMG = 564;//获取下个日程的第一个节目的图片
+ static final int TYPE_CHANGE_IMG_SHOW0 = 565;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW1 = 566;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW2 = 567;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW3 = 568;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW4 = 569;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW5 = 570;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW6 = 571;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW7 = 572;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW8 = 573;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW9 = 574;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW10 = 575;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW11 = 576;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW12 = 577;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW13 = 578;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW14 = 579;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW15 = 580;//预加载下张图片
+ static final int TYPE_START_PLAY_SVGA = 581;//开始播放svga动画
+ static final int TYPE_REFRESH_WEBVIEW0 = 582;//网页刷新
+ static final int TYPE_REFRESH_WEBVIEW1 = 583;//网页刷新
+ static final int TYPE_REFRESH_WEBVIEW2 = 584;//网页刷新
+ static final int TYPE_REFRESH_WEBVIEW3 = 585;//网页刷新
+ static final int TYPE_SHUIPAI = 586;//水牌
+ static final int TYPE_BRAND0 = 587;//品牌
+ static final int TYPE_BRAND1 = 588;//品牌
+ static final int TYPE_BRAND2 = 589;//品牌
+ static final int TYPE_BRAND3 = 590;//品牌
+ static final int TYPE_BRAND4 = 591;//品牌
+ static final int TYPE_BRAND5 = 592;//品牌
+ static final int TYPE_BRAND6 = 593;//品牌
+ static final int TYPE_BRAND7 = 594;//品牌
+ static final int TYPE_BRAND8 = 595;//品牌
+ static final int TYPE_BRAND9 = 596;//品牌
+ static final int TYPE_BRAND10 = 597;//品牌
+ static final int TYPE_BRAND11 = 598;//品牌
+ static final int TYPE_BRAND12 = 599;//品牌
+ static final int TYPE_BRAND13 = 600;//品牌
+ static final int TYPE_BRAND14 = 601;//品牌
+ static final int TYPE_BRAND15 = 602;//品牌
+ static final int TYPE_FACILITIES0= 603;//公共设施
+ static final int TYPE_FACILITIES1 = 604;//公共设施
+ static final int TYPE_FACILITIES2 = 605;//公共设施
+ static final int TYPE_FACILITIES3 = 606;//公共设施
+ static final int TYPE_FACILITIES4 = 607;//公共设施
+ static final int TYPE_FACILITIES5 = 608;//公共设施
+ static final int TYPE_FACILITIES6 = 609;//公共设施
+ static final int TYPE_FACILITIES7 = 610;//公共设施
+ static final int TYPE_FACILITIES8 = 611;//公共设施
+ static final int TYPE_FACILITIES9 = 612;//公共设施
+ static final int TYPE_FACILITIES10 = 613;//公共设施
+ static final int TYPE_FACILITIES11 = 614;//公共设施
+ static final int TYPE_FACILITIES12 = 615;//公共设施
+ static final int TYPE_FACILITIES13 = 616;//公共设施
+ static final int TYPE_FACILITIES14 = 617;//公共设施
+ static final int TYPE_FACILITIES15 = 618;//公共设施
+ static final int TYPE_POSITION0 = 619;//点位
+ static final int TYPE_POSITION1 = 620;//点位
+ static final int TYPE_POSITION2 = 621;//点位
+ static final int TYPE_POSITION3 = 622;//点位
+ static final int TYPE_POSITION4 = 623;//点位
+ static final int TYPE_POSITION5 = 624;//点位
+ static final int TYPE_POSITION6 = 625;//点位
+ static final int TYPE_POSITION7 = 626;//点位
+ static final int TYPE_POSITION8 = 627;//点位
+ static final int TYPE_POSITION9 = 628;//点位
+ static final int TYPE_POSITION10 = 629;//点位
+ static final int TYPE_POSITION11 = 630;//点位
+ static final int TYPE_POSITION12 = 631;//点位
+ static final int TYPE_POSITION13 = 632;//点位
+ static final int TYPE_POSITION14 = 633;//点位
+ static final int TYPE_POSITION15 = 634;//点位
+
+ static final int TYPE_JUDGE_START_PROGRAM = 635;//判断是否已经开始了节目播放
+ static final int TYPE_START_PLAY_PROGRAM = 636;//开始播放节目
+
+ static final int TYPE_MAP = 637;//地图组件
+ static final int TYPE_LOAD_MAP_DATA = 638;//地图组件数据
+
+ //开始播放下标
+ int videoPlayCount0 = 0;
+ int videoPlayCount1 = 0;
+ boolean isvideoPlay0 = false;
+ boolean isvideoPlay1 = false;
+
+ int imagePlayCount0 = 0;
+ int imagePlayCount1 = 0;
+ int imagePlayCount2 = 0;
+ int imagePlayCount3 = 0;
+ int imagePlayCount4 = 0;
+ int imagePlayCount5 = 0;
+ int imagePlayCount6 = 0;
+ int imagePlayCount7 = 0;
+ int imagePlayCount8 = 0;
+ int imagePlayCount9 = 0;
+ int imagePlayCount10 = 0;
+ int imagePlayCount11 = 0;
+ int imagePlayCount12 = 0;
+ int imagePlayCount13 = 0;
+ int imagePlayCount14 = 0;
+ int imagePlayCount15 = 0;
+
+ //品牌
+ int brandImageCount0 = 0;
+ int brandImageCount1 = 0;
+ int brandImageCount2 = 0;
+ int brandImageCount3 = 0;
+ int brandImageCount4 = 0;
+ int brandImageCount5 = 0;
+ int brandImageCount6 = 0;
+ int brandImageCount7 = 0;
+ int brandImageCount8 = 0;
+ int brandImageCount9 = 0;
+ int brandImageCount10 = 0;
+ int brandImageCount11 = 0;
+ int brandImageCount12 = 0;
+ int brandImageCount13 = 0;
+ int brandImageCount14 = 0;
+ int brandImageCount15 = 0;
+ //设施
+ int facilitiesImageCount0 = 0;
+ int facilitiesImageCount1 = 0;
+ int facilitiesImageCount2 = 0;
+ int facilitiesImageCount3 = 0;
+ int facilitiesImageCount4 = 0;
+ int facilitiesImageCount5 = 0;
+ int facilitiesImageCount6 = 0;
+ int facilitiesImageCount7 = 0;
+ int facilitiesImageCount8 = 0;
+ int facilitiesImageCount9 = 0;
+ int facilitiesImageCount10 = 0;
+ int facilitiesImageCount11 = 0;
+ int facilitiesImageCount12 = 0;
+ int facilitiesImageCount13 = 0;
+ int facilitiesImageCount14 = 0;
+ int facilitiesImageCount15 = 0;
+
+ //点位
+ int positionImageCount0 = 0;
+ int positionImageCount1 = 0;
+ int positionImageCount2 = 0;
+ int positionImageCount3 = 0;
+ int positionImageCount4 = 0;
+ int positionImageCount5 = 0;
+ int positionImageCount6 = 0;
+ int positionImageCount7 = 0;
+ int positionImageCount8 = 0;
+ int positionImageCount9 = 0;
+ int positionImageCount10 = 0;
+ int positionImageCount11 = 0;
+ int positionImageCount12 = 0;
+ int positionImageCount13 = 0;
+ int positionImageCount14 = 0;
+ int positionImageCount15 = 0;
+
+ int programme = 0;//日程
+ int program = 0;//节目
+
+ boolean imagePlay0 = true;
+ boolean imagePlay1 = true;
+ boolean imagePlay2 = true;
+ boolean imagePlay3 = true;
+ boolean imagePlay4 = true;
+ boolean imagePlay5 = true;
+ boolean imagePlay6 = true;
+ boolean imagePlay7 = true;
+ boolean imagePlay8 = true;
+ boolean imagePlay9 = true;
+ boolean imagePlay10 = true;
+ boolean imagePlay11 = true;
+ boolean imagePlay12 = true;
+ boolean imagePlay13 = true;
+ boolean imagePlay14 = true;
+ boolean imagePlay15 = true;
+
+ boolean firstImagePlay0 = true;
+ boolean firstImagePlay1 = true;
+ boolean firstImagePlay2 = true;
+ boolean firstImagePlay3 = true;
+ boolean firstImagePlay4 = true;
+ boolean firstImagePlay5 = true;
+ boolean firstImagePlay6 = true;
+ boolean firstImagePlay7 = true;
+ boolean firstImagePlay8 = true;
+ boolean firstImagePlay9 = true;
+ boolean firstImagePlay10 = true;
+ boolean firstImagePlay11 = true;
+ boolean firstImagePlay12 = true;
+ boolean firstImagePlay13 = true;
+ boolean firstImagePlay14 = true;
+ boolean firstImagePlay15 = true;
+
+ Map bigFiles = new HashMap<>(); //大后台文件
+ Map mapFiles = new HashMap<>(); //大后台文件
+
+ int mapDownloadCount = 0;//下载数量
+
+ long startImgTime=0;
+ long startVideoTime=0;
+ long startchangeProgram=0;//切换节目开始时间,防止多次切换
+
+ boolean isNextVideo = false;//下个节目是否有视频
+
+ boolean isChangProgramme = false;//日程切换
+
+
+ List data = new ArrayList<>();
+ int width;
+ int height;
+ View[] viewList;
+ int index = 0;
+
+ Map colorMap;
+
+ boolean isZeroPoint = false; //凌晨时间
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(@NonNull Message msg) {
+ super.handleMessage(msg);
+ switch (msg.what){
+
+ case TYPE_UPDATE_PROGRAMME://切换日程单
+
+ programme++;
+ Log.e("(双面屏)TAG","切换日程单"+programme);
+ program=0;
+
+ if(programme >= currentProgramBean.getSchedule().size()){
+ deleteView();
+ return;
+ }
+ NewProgramBean.schedule schedule = currentProgramBean.getSchedule().get(programme);
+ try {
+// String s = TimeUtil.stampToDate(System.currentTimeMillis());
+ long beginTimeLong = TimeUtil.stringToLong(currentProgramBean.getDate()+" "+schedule.getBeginTime(), "yyyy-MM-dd HH:mm:ss");//开始时间
+ if(System.currentTimeMillis() >= beginTimeLong){
+ program=0;
+ isChangProgramme = true;
+ handler.removeMessages(TYPE_UPDATE_PROGRAM);
+ handler.sendEmptyMessage(TYPE_UPDATE_PROGRAM);
+ handler.sendEmptyMessageDelayed(TYPE_CHANGE_PROGRAMME_STATE,5000);
+
+ }else {
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAM,beginTimeLong-System.currentTimeMillis());
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ //是否有下个日程
+ if(programme + 1 >= currentProgramBean.getSchedule().size()){
+ //没有日程清除所有
+
+ if(!schedule.getEndTime().equals("23:59:59")){
+ try {
+ //最后一个节目结束时间
+ long endTimeLong = TimeUtil.stringToLong(currentProgramBean.getDate()+" "+schedule.getEndTime(), "yyyy-MM-dd HH:mm:ss");//开始时间
+ sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAMME,endTimeLong - System.currentTimeMillis());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ return;
+ }
+
+ //下个日程
+ NewProgramBean.schedule nextSchedule = currentProgramBean.getSchedule().get(programme + 1);
+ try {
+ long beginTimeLong = TimeUtil.stringToLong(currentProgramBean.getDate()+ " "+ nextSchedule.getBeginTime(), "yyyy-MM-dd HH:mm:ss");//开始时间
+
+ handler.removeMessages(TYPE_UPDATE_PROGRAMME);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAMME,beginTimeLong - System.currentTimeMillis());
+ //提前10秒通知获取下个日程的第一个节目的图片
+// handler.sendEmptyMessageDelayed(TYPE_GET_NEXT_PROGRAMME_OTHER_IMG,beginTimeLong - (System.currentTimeMillis()+5000));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ break;
+
+ case TYPE_CHANGE_PROGRAMME_STATE:
+
+ isChangProgramme=false;
+
+ break;
+
+ case TYPE_UPDATE_PROGRAM://切换节目单
+ Log.e("(双面屏)TAG","切换节目单"+program);
+
+ try {
+
+ if(!isChangProgramme){
+ if(System.currentTimeMillis()-startchangeProgram<2000){
+ //防止重复调用导致图片不同步
+ return;
+ }else {
+ startchangeProgram = System.currentTimeMillis();
+ }
+ }
+
+ if(currentProgramBean==null){
+ return;
+ }
+ if(program >= currentProgramBean.getSchedule().get(programme).getPrograms().size()){
+ program=0;
+ }
+ if (Constant.isMain) {
+ Log.e("(双面屏)TAG","主设备向其他设备发送节目下标"+program);
+ SocketServerManager.sendMessageToClient(LocSocCliManager.NEXT_PROGRAM_INDEX, String.valueOf(program));
+ }
+
+ deleteView();
+
+ createView( currentProgramBean.getSchedule().get(programme), program);
+
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)TYPE_UPDATE_PROGRAM:" ,e.getMessage());
+ }
+
+ break;
+
+ case TYPE_GET_NEXT_OTHER_IMG:
+ //下个节目的图片
+ try {
+ if(currentProgramBean==null){
+ return;
+ }
+ if(currentProgramBean.getSchedule().size()<=0){
+ return;
+ }
+ if(currentProgramBean.getSchedule().get(programme)==null){
+ return;
+ }
+ NewProgramBean.programs nextprograms;
+ if(nextimg+1 < currentProgramBean.getSchedule().get(programme).getPrograms().size()){
+ nextprograms = currentProgramBean.getSchedule().get(programme).getPrograms().get(nextimg + 1);
+ }else {
+ nextprograms = currentProgramBean.getSchedule().get(programme).getPrograms().get(0);
+ }
+ int videoViewNumb= 0 ;
+ int otherImgCount = 0;
+ for(int i=0;i0){
+ //视频
+
+ if(components.getMaterials().get(0).getPreviewUrl()!=null && !components.getMaterials().get(0).getPreviewUrl().isEmpty()){
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getPreviewUrl(),videoImg2);
+ }
+
+// String[] b = localPath.split("\\.");
+// String imgUrl = b[0]+".jpg";
+// if(new File(imgUrl).exists()){
+// binding.videoImg0.setVisibility(View.GONE);
+// Glide.with(context).load(imgUrl).into(binding.videoImg0)
+// }
+ }else {
+ //图片
+ if(new File(localPath).exists()){
+ Glide.with(context).load(localPath).into(videoImg2);
+ }
+ }
+
+ if(!isNextVideo){
+ Log.e("(双面屏)TAG","预览设置下个视频");
+ isNextVideo=true;
+ if(components.getMaterials().get(0).getDuration()>0){
+ videoView2.setVideoPath(localPath);
+ }else {
+ //图片
+ Drawable drawable = new BitmapDrawable(localPath);
+ videoView2.setBackground(drawable);
+
+ }
+ }
+ }else {
+ //第二个videoview
+ if(components.getMaterials().get(0).getDuration()>0){
+ //视频
+
+ if(components.getMaterials().get(0).getPreviewUrl()!=null && !components.getMaterials().get(0).getPreviewUrl().isEmpty()){
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getPreviewUrl(),videoImg3);
+ }
+// String[] b = localPath.split("\\.");
+// String imgUrl = b[0]+".jpg";
+// if(new File(imgUrl).exists()){
+// binding.videoImg1.setVisibility(View.GONE);
+// Glide.with(context).load(imgUrl).into(binding.videoImg1);
+// }
+ }else {
+ //图片
+ if(new File(localPath).exists()){
+ Glide.with(context).load(localPath).into(videoImg3);
+ }
+ }
+
+ if(!isNextVideo){
+ Log.e("(双面屏)TAG","预览设置下个视频");
+ isNextVideo=true;
+ if(components.getMaterials().get(0).getDuration()>0){
+ videoView2.setVideoPath(localPath);
+ }else {
+ //图片
+ Drawable drawable = new BitmapDrawable(localPath);
+ videoView2.setBackground(drawable);
+
+ }
+ }
+ }
+
+ videoViewNumb++;
+ }
+ }
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)TYPE_GET_NEXT_OTHER_IMG报错",e.getMessage());
+ }
+
+ break;
+
+ case TYPE_GET_NEXT_PROGRAMME_OTHER_IMG://下个日程的第一个节目的图片
+
+ if(programme >= currentProgramBean.getSchedule().size()){
+ return;
+ }
+ try {
+ NewProgramBean.programs nextprogram = currentProgramBean.getSchedule().get(programme+1).getPrograms().get(0);
+ int otherImgCount2=0;
+ for(int i=0;i0){
+ sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW0,getRefreshWebTime(webComponents0));
+ onlineWebView0.loadUrl(webComponents0.getMaterials().get(0).getOuterChain());
+ }
+ break;
+
+ case TYPE_REFRESH_WEBVIEW1://网页刷新
+ if(getRefreshWebTime(webComponents1)>0){
+ sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW1,getRefreshWebTime(webComponents1));
+ onlineWebView1.loadUrl(webComponents1.getMaterials().get(0).getOuterChain());
+ }
+ break;
+
+ case TYPE_REFRESH_WEBVIEW2://网页刷新
+ if(getRefreshWebTime(webComponents2)>0){
+ sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW2,getRefreshWebTime(webComponents2));
+ onlineWebView2.loadUrl(webComponents2.getMaterials().get(0).getOuterChain());
+ }
+ break;
+
+ case TYPE_REFRESH_WEBVIEW3://网页刷新
+ if(getRefreshWebTime(webComponents3)>0){
+ sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW3,getRefreshWebTime(webComponents3));
+ onlineWebView3.loadUrl(webComponents3.getMaterials().get(0).getOuterChain());
+ }
+ break;
+ case TYPE_SHUIPAI://水牌
+ if(shuipaifacenumb == shuipaifacenumb_finish){
+ LoggerUtil.e("(双面屏)TYPE_SHUIPAI","接口请求完成,开始加载水牌");
+ spWebView.clearCache(true);
+ setWebView(spWebView,"http://127.0.0.1:8080/"+"?url="+Constant.getBaseAddress());
+
+ }else {
+ sendEmptyMessageDelayed(TYPE_SHUIPAI,2000);
+ }
+ break;
+
+ case TYPE_MAP://地图
+ LoggerUtil.e("(双面屏)TYPE_MAP","接口请求完成,开始加载地图");
+ if(mapWebView!=null){
+ mapWebView.clearCache(true);
+ setWebView(mapWebView,"http://127.0.0.1:8080/");
+ }
+ break;
+
+ case TYPE_UPDATE_TIME0://时间
+// Log.e("TAG","更新时间");
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_TIME0,60*1000);
+ chooseTime(timeComponents0.getConfig().getStyle());
+ break;
+
+ case TYPE_BRAND0:
+ brandImageCount0++;
+ updateBrandOrfacilities(brandImageCount0,0,brandImageViewList,TYPE_BRAND0);
+ break;
+ case TYPE_BRAND1:
+ brandImageCount1++;
+ updateBrandOrfacilities(brandImageCount1,1,brandImageViewList,TYPE_BRAND1);
+ break;
+ case TYPE_BRAND2:
+ brandImageCount2++;
+ updateBrandOrfacilities(brandImageCount2,2,brandImageViewList,TYPE_BRAND2);
+ break;
+ case TYPE_BRAND3:
+ brandImageCount3++;
+ updateBrandOrfacilities(brandImageCount3,3,brandImageViewList,TYPE_BRAND3);
+ break;
+ case TYPE_BRAND4:
+ brandImageCount4++;
+ updateBrandOrfacilities(brandImageCount4,4,brandImageViewList,TYPE_BRAND4);
+ break;
+ case TYPE_BRAND5:
+ brandImageCount5++;
+ updateBrandOrfacilities(brandImageCount5,5,brandImageViewList,TYPE_BRAND5);
+ break;
+ case TYPE_BRAND6:
+ brandImageCount6++;
+ updateBrandOrfacilities(brandImageCount6,6,brandImageViewList,TYPE_BRAND6);
+ break;
+ case TYPE_BRAND7:
+ brandImageCount7++;
+ updateBrandOrfacilities(brandImageCount7,7,brandImageViewList,TYPE_BRAND7);
+ break;
+ case TYPE_BRAND8:
+ brandImageCount8++;
+ updateBrandOrfacilities(brandImageCount8,8,brandImageViewList,TYPE_BRAND8);
+ break;
+ case TYPE_BRAND9:
+ brandImageCount9++;
+ updateBrandOrfacilities(brandImageCount9,9,brandImageViewList,TYPE_BRAND9);
+ break;
+ case TYPE_BRAND10:
+ brandImageCount10++;
+ updateBrandOrfacilities(brandImageCount10,10,brandImageViewList,TYPE_BRAND10);
+ break;
+ case TYPE_BRAND11:
+ brandImageCount11++;
+ updateBrandOrfacilities(brandImageCount11,11,brandImageViewList,TYPE_BRAND11);
+ break;
+
+ case TYPE_BRAND12:
+ brandImageCount12++;
+ updateBrandOrfacilities(brandImageCount12,12,brandImageViewList,TYPE_BRAND12);
+ break;
+ case TYPE_BRAND13:
+ brandImageCount13++;
+ updateBrandOrfacilities(brandImageCount13,13,brandImageViewList,TYPE_BRAND13);
+ break;
+ case TYPE_BRAND14:
+ brandImageCount14++;
+ updateBrandOrfacilities(brandImageCount14,14,brandImageViewList,TYPE_BRAND14);
+ break;
+ case TYPE_BRAND15:
+ brandImageCount15++;
+ updateBrandOrfacilities(brandImageCount15,15,brandImageViewList,TYPE_BRAND15);
+ break;
+ case TYPE_FACILITIES0:
+
+ facilitiesImageCount0++;
+ updateBrandOrfacilities(facilitiesImageCount0,0,facilitiesImageViewList,TYPE_FACILITIES0);
+ break;
+ case TYPE_FACILITIES1:
+
+ facilitiesImageCount1++;
+ updateBrandOrfacilities(facilitiesImageCount1,1,facilitiesImageViewList,TYPE_FACILITIES1);
+ break;
+ case TYPE_FACILITIES2:
+ facilitiesImageCount2++;
+ updateBrandOrfacilities(facilitiesImageCount2,2,facilitiesImageViewList,TYPE_FACILITIES2);
+ break;
+ case TYPE_FACILITIES3:
+ facilitiesImageCount3++;
+ updateBrandOrfacilities(facilitiesImageCount3,3,facilitiesImageViewList,TYPE_FACILITIES3);
+ break;
+ case TYPE_FACILITIES4:
+ facilitiesImageCount4++;
+ updateBrandOrfacilities(facilitiesImageCount4,4,facilitiesImageViewList,TYPE_FACILITIES4);
+ break;
+ case TYPE_FACILITIES5:
+ facilitiesImageCount5++;
+ updateBrandOrfacilities(facilitiesImageCount5,5,facilitiesImageViewList,TYPE_FACILITIES5);
+ break;
+ case TYPE_FACILITIES6:
+ facilitiesImageCount6++;
+ updateBrandOrfacilities(facilitiesImageCount6,6,facilitiesImageViewList,TYPE_FACILITIES6);
+ break;
+ case TYPE_FACILITIES7:
+ facilitiesImageCount7++;
+ updateBrandOrfacilities(facilitiesImageCount7,7,facilitiesImageViewList,TYPE_FACILITIES7);
+ break;
+ case TYPE_FACILITIES8:
+ facilitiesImageCount8++;
+ updateBrandOrfacilities(facilitiesImageCount8,8,facilitiesImageViewList,TYPE_FACILITIES8);
+ break;
+ case TYPE_FACILITIES9:
+ facilitiesImageCount9++;
+ updateBrandOrfacilities(facilitiesImageCount9,9,facilitiesImageViewList,TYPE_FACILITIES9);
+ break;
+ case TYPE_FACILITIES10:
+ facilitiesImageCount10++;
+ updateBrandOrfacilities(facilitiesImageCount10,10,facilitiesImageViewList,TYPE_FACILITIES10);
+ break;
+ case TYPE_FACILITIES11:
+ facilitiesImageCount11++;
+ updateBrandOrfacilities(facilitiesImageCount11,11,facilitiesImageViewList,TYPE_FACILITIES11);
+ break;
+ case TYPE_FACILITIES12:
+ facilitiesImageCount12++;
+ updateBrandOrfacilities(facilitiesImageCount12,12,facilitiesImageViewList,TYPE_FACILITIES12);
+ break;
+ case TYPE_FACILITIES13:
+ facilitiesImageCount13++;
+ updateBrandOrfacilities(facilitiesImageCount13,13,facilitiesImageViewList,TYPE_FACILITIES13);
+ break;
+ case TYPE_FACILITIES14:
+ facilitiesImageCount14++;
+ updateBrandOrfacilities(facilitiesImageCount14,14,facilitiesImageViewList,TYPE_FACILITIES14);
+ break;
+ case TYPE_FACILITIES15:
+ facilitiesImageCount15++;
+ updateBrandOrfacilities(facilitiesImageCount15,15,facilitiesImageViewList,TYPE_FACILITIES15);
+ break;
+
+ //点位
+ case TYPE_POSITION0:
+ positionImageCount0++;
+ updateBrandOrfacilities(positionImageCount0,0,positionImageViewList,TYPE_POSITION0);
+ break;
+ case TYPE_POSITION1:
+ positionImageCount1++;
+ updateBrandOrfacilities(positionImageCount1,1,positionImageViewList,TYPE_POSITION1);
+ break;
+ case TYPE_POSITION2:
+ positionImageCount2++;
+ updateBrandOrfacilities(positionImageCount2,2,positionImageViewList,TYPE_POSITION2);
+ break;
+ case TYPE_POSITION3:
+ positionImageCount3++;
+ updateBrandOrfacilities(positionImageCount3,3,positionImageViewList,TYPE_POSITION3);
+ break;
+ case TYPE_POSITION4:
+ positionImageCount4++;
+ updateBrandOrfacilities(positionImageCount4,4,positionImageViewList,TYPE_POSITION4);
+ break;
+ case TYPE_POSITION5:
+ positionImageCount5++;
+ updateBrandOrfacilities(positionImageCount5,5,positionImageViewList,TYPE_POSITION5);
+ break;
+ case TYPE_POSITION6:
+ positionImageCount6++;
+ updateBrandOrfacilities(positionImageCount6,6,positionImageViewList,TYPE_POSITION6);
+ break;
+ case TYPE_POSITION7:
+ positionImageCount7++;
+ updateBrandOrfacilities(positionImageCount7,7,positionImageViewList,TYPE_POSITION7);
+ break;
+ case TYPE_POSITION8:
+ positionImageCount8++;
+ updateBrandOrfacilities(positionImageCount8,8,positionImageViewList,TYPE_POSITION8);
+ break;
+ case TYPE_POSITION9:
+ positionImageCount9++;
+ updateBrandOrfacilities(positionImageCount9,9,positionImageViewList,TYPE_POSITION9);
+ break;
+ case TYPE_POSITION10:
+ positionImageCount10++;
+ updateBrandOrfacilities(positionImageCount10,10,positionImageViewList,TYPE_POSITION10);
+ break;
+ case TYPE_POSITION11:
+ positionImageCount11++;
+ updateBrandOrfacilities(positionImageCount11,11,positionImageViewList,TYPE_POSITION11);
+ break;
+ case TYPE_POSITION12:
+ positionImageCount12++;
+ updateBrandOrfacilities(positionImageCount12,12,positionImageViewList,TYPE_POSITION12);
+ break;
+ case TYPE_POSITION13:
+ positionImageCount13++;
+ updateBrandOrfacilities(positionImageCount13,13,positionImageViewList,TYPE_POSITION13);
+ break;
+ case TYPE_POSITION14:
+ positionImageCount14++;
+ updateBrandOrfacilities(positionImageCount14,14,positionImageViewList,TYPE_POSITION14);
+ break;
+ case TYPE_POSITION15:
+ positionImageCount15++;
+ updateBrandOrfacilities(positionImageCount15,15,positionImageViewList,TYPE_POSITION15);
+ break;
+ case TYPE_UPDATE_MACTH://匹配是否更新数据
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_MACTH,5*1000);
+
+ if(TimeUtil.stampTotime(System.currentTimeMillis()).equals("00:00") && isZeroPoint==false){
+ //第二天凌晨
+ isZeroPoint=true;
+ LoggerUtil.e("(双面屏)TYPE_UPDATE_MACTH","第二天凌晨更新日程");
+ sendEmptyMessage(TYPE_DOWNLOAD_FILE);
+ }else if(!TimeUtil.stampTotime(System.currentTimeMillis()).equals("00:00") && isZeroPoint==true){
+ isZeroPoint=false;
+ }
+
+ break;
+
+
+ case TYPE_TIME_UPDATE_DATA://定时获取数据,有变化则更新
+ handler.sendEmptyMessageDelayed(TYPE_TIME_UPDATE_DATA,5*60*1000);
+
+ break;
+
+ case TYPE_UPDATE_WEATHER0://天气更新
+ try {
+ String cityName = weatherComponents0.getConfig().getCityName();
+ if(!cityName.isEmpty()){
+ getWeather(cityName,null,null);
+ }else {
+ if(DeviceData.getDevice().getCity() !=null || !DeviceData.getDevice().getCity().isEmpty()){
+ getWeather(DeviceData.getDevice().getCity(),null,null);
+ }
+ };
+ }catch (Exception e){
+
+ }
+
+ break;
+
+ case TYPE_DOWNLOAD_FILE://下载文件
+
+ //下载完成
+ LoggerUtil.e("(双面屏)TAG","下载完成");
+ if(newdata!=null){
+ ScreenSaverData.saveScreenSaverList(newdata);
+ }
+ program=0;
+ programme=0;
+ isChangProgramme = false;//日程切换
+ startchangeProgram=0;
+ startImgTime=0;
+
+ //清除
+ deleteView();
+ clearOtherImg();
+ sendEmptyMessageDelayed(TYPE_START_PLAY_PROGRAM,1000);
+ break;
+
+ case TYPE_START_PLAY_PROGRAM://下载完成后,开始播放日程
+ try {
+ LoggerUtil.e("(双面屏)TYPE_START_PLAY_PROGRAM","开始播放节目");
+ startProgram();
+
+ List screenSaverList = ScreenSaverData.getScreenSaverList(ScreenSaverData.TYPE_SCREEN_SAVER);
+ String s = GsonUtil.getGson().toJson(screenSaverList);
+ NewProgramBean newProgramBean = screenSaverList.get(0);
+ if(s.contains("\"typeCode\":\"map\"") || s.contains("\"typeCode\":\"brand_list\"")){
+ //有地图组件
+ for(NewProgramBean.schedule schedule1 : newProgramBean.getSchedule()){
+ for(NewProgramBean.programs programs :schedule1.getPrograms()){
+ for(NewProgramBean.components components : programs.getComponents()){
+ ScreenSaverData. getGetMapData(context,StringUtil.strSplice(Constant.getBaseAddress(),"/api/msg/v1/client/getApi/",components.getCode()),null, null );
+ getApiFileResourceList(context,StringUtil.strSplice(Constant.getBaseAddress(),"/api/msg/v1/client/getFileResourceList/",components.getCode()),null, null );
+ break;
+ }
+ }
+ }
+ }
+
+ //没节目时候进入导视
+ String deviceType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE);
+ if ((!deviceType.equals("信发") && !deviceType.equals("双面屏")) && !ScreenSaverData.isProgramPlay2()) {
+ LoggerUtil.e("(双面屏)TYPE_START_PLAY_PROGRAM","没节目时候进入导视");
+ ARouter.getInstance().build(Constant.ROUTE_WEB_VIEW).withBoolean(Constant.KEY_LOAD_H5_URL, true).navigation();
+ }
+
+
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)startProgram报错",e.getMessage());
+ sendEmptyMessageDelayed(TYPE_DOWNLOAD_FILE,20*1000);
+ }
+ break;
+
+ case TYPE_JUDGE_START_PROGRAM://判断是否已经开始了节目播放(设备启动后避免节目不方便)
+ if(!isStartProgram){
+ LoggerUtil.e("启动40秒后判断是否在播节目","开机未启动播放节目,强制开始播放节目");
+ startProgram();
+ }else {
+ LoggerUtil.e("启动40秒后判断是否在播节目","有播放节目");
+ }
+
+ break;
+
+ case TYPE_LOAD_MAP_DATA://下载地图组件数据
+
+
+ break;
+
+ }
+ }
+ };
+
+ Context context;
+
+ public MyPresentation(Context context, Display display) {
+ super(context,display);
+ this.context = context;
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.presentation);
+ initView();
+
+ }
+
+ CustomerVideoView videoView2;
+ CustomerVideoView videoView3;
+ ImageView backgroundImage;
+ View layoutTime0;
+ View layoutTime1;
+ View layoutTime2;
+ View layoutTime3;
+ View layoutTime4;
+ View layoutVideo2;
+ View layoutVideo3;
+ View layoutImg0;
+ View layoutImg1;
+ View layoutImg2;
+ View layoutImg3;
+ View layoutImg4;
+ View layoutImg5;
+ View layoutImg6;
+ View layoutImg7;
+ View layoutImg8;
+ View layoutImg9;
+ View layoutImg10;
+ View layoutImg11;
+ View layoutImg12;
+ View layoutImg13;
+ View layoutImg14;
+ View layoutImg15;
+ ImageView otherImg0;
+ ImageView otherImg1;
+ ImageView otherImg2;
+ ImageView otherImg3;
+ ImageView otherImg4;
+ ImageView otherImg5;
+ ImageView otherImg6;
+ ImageView otherImg7;
+ ImageView otherImg8;
+ ImageView otherImg9;
+ ImageView otherImg10;
+ ImageView otherImg11;
+ ImageView otherImg12;
+ ImageView otherImg13;
+ ImageView otherImg14;
+ ImageView otherImg15;
+ RelativeLayout relativeLayoutMax;
+ ImageView videoImg2;
+ ImageView videoImg3;
+ ImageView img0;
+ ImageView img1;
+ ImageView img2;
+ ImageView img3;
+ ImageView img4;
+ ImageView img5;
+ ImageView img6;
+ ImageView img7;
+ ImageView img8;
+ ImageView img9;
+ ImageView img10;
+ ImageView img11;
+ ImageView img12;
+ ImageView img13;
+ ImageView img14;
+ ImageView img15;
+ ImageView img0Behind;
+ ImageView img1Behind;
+ ImageView img2Behind;
+ ImageView img3Behind;
+ ImageView img4Behind;
+ ImageView img5Behind;
+ ImageView img6Behind;
+ ImageView img7Behind;
+ ImageView img8Behind;
+ ImageView img9Behind;
+ ImageView img10Behind;
+ ImageView img11Behind;
+ ImageView img12Behind;
+ ImageView img13Behind;
+ ImageView img14Behind;
+ ImageView img15Behind;
+ TextView tvTime0;
+ TextView tvTime1;
+ TextView tvTime2;
+ TextView tvTime3;
+ TextView tvTime4;
+ TextView tvWeek0;
+ TextView tvWeek1;
+ TextView tvWeek2;
+ TextView tvWeek3;
+ TextView tvWeek4;
+ TextView tvDay0;
+ TextView tvDay1;
+ TextView tvDay2;
+ TextView tvDay3;
+ TextView tvDay4;
+
+ private void initView(){
+ videoView2 = findViewById(R.id.videoView2);
+ videoView3 = findViewById(R.id.videoView3);
+ backgroundImage = findViewById(R.id.background_image);
+ layoutTime0 = findViewById(R.id.layout_time0);
+ layoutTime1 = findViewById(R.id.layout_time1);
+ layoutTime2 = findViewById(R.id.layout_time2);
+ layoutTime3 = findViewById(R.id.layout_time3);
+ layoutTime4 = findViewById(R.id.layout_time4);
+ layoutVideo2 = findViewById(R.id.layout_video2);
+ layoutVideo3 = findViewById(R.id.layout_video3);
+ videoImg2 = findViewById(R.id.videoImg2);
+ videoImg3 = findViewById(R.id.videoImg3);
+ layoutImg0 = findViewById(R.id.layout_img0);
+ layoutImg1 = findViewById(R.id.layout_img1);
+ layoutImg2 = findViewById(R.id.layout_img2);
+ layoutImg3 = findViewById(R.id.layout_img3);
+ layoutImg4 = findViewById(R.id.layout_img4);
+ layoutImg5 = findViewById(R.id.layout_img5);
+ layoutImg6 = findViewById(R.id.layout_img6);
+ layoutImg7 = findViewById(R.id.layout_img7);
+ layoutImg8 = findViewById(R.id.layout_img8);
+ layoutImg9 = findViewById(R.id.layout_img9);
+ layoutImg10 = findViewById(R.id.layout_img10);
+ layoutImg11 = findViewById(R.id.layout_img11);
+ layoutImg12 = findViewById(R.id.layout_img12);
+ layoutImg13 = findViewById(R.id.layout_img13);
+ layoutImg14 = findViewById(R.id.layout_img14);
+ layoutImg15 = findViewById(R.id.layout_img15);
+ otherImg0 = findViewById(R.id.otherImg0);
+ otherImg1 = findViewById(R.id.otherImg1);
+ otherImg2 = findViewById(R.id.otherImg2);
+ otherImg3 = findViewById(R.id.otherImg3);
+ otherImg4 = findViewById(R.id.otherImg4);
+ otherImg5 = findViewById(R.id.otherImg5);
+ otherImg6 = findViewById(R.id.otherImg6);
+ otherImg7 = findViewById(R.id.otherImg7);
+ otherImg8 = findViewById(R.id.otherImg8);
+ otherImg9 = findViewById(R.id.otherImg9);
+ otherImg10 = findViewById(R.id.otherImg10);
+ otherImg11 = findViewById(R.id.otherImg11);
+ otherImg12 = findViewById(R.id.otherImg12);
+ otherImg13 = findViewById(R.id.otherImg13);
+ otherImg14 = findViewById(R.id.otherImg14);
+ otherImg15 = findViewById(R.id.otherImg15);
+ img0 = findViewById(R.id.img0);
+ img1 = findViewById(R.id.img1);
+ img2 = findViewById(R.id.img2);
+ img3 = findViewById(R.id.img3);
+ img4 = findViewById(R.id.img4);
+ img5 = findViewById(R.id.img5);
+ img6 = findViewById(R.id.img6);
+ img7 = findViewById(R.id.img7);
+ img8 = findViewById(R.id.img8);
+ img9 = findViewById(R.id.img9);
+ img10 = findViewById(R.id.img10);
+ img11 = findViewById(R.id.img11);
+ img12 = findViewById(R.id.img12);
+ img13 = findViewById(R.id.img13);
+ img14 = findViewById(R.id.img14);
+ img15 = findViewById(R.id.img15);
+ img0Behind = findViewById(R.id.img0_behind);
+ img1Behind = findViewById(R.id.img1_behind);
+ img2Behind = findViewById(R.id.img2_behind);
+ img3Behind = findViewById(R.id.img3_behind);
+ img4Behind = findViewById(R.id.img4_behind);
+ img5Behind = findViewById(R.id.img5_behind);
+ img6Behind = findViewById(R.id.img6_behind);
+ img7Behind = findViewById(R.id.img7_behind);
+ img8Behind = findViewById(R.id.img8_behind);
+ img9Behind = findViewById(R.id.img9_behind);
+ img10Behind = findViewById(R.id.img10_behind);
+ img11Behind = findViewById(R.id.img11_behind);
+ img12Behind = findViewById(R.id.img12_behind);
+ img13Behind = findViewById(R.id.img13_behind);
+ img14Behind = findViewById(R.id.img14_behind);
+ img15Behind = findViewById(R.id.img15_behind);
+ tvTime0 = findViewById(R.id.tv_time0);
+ tvTime1 = findViewById(R.id.tv_time1);
+ tvTime2 = findViewById(R.id.tv_time2);
+ tvTime3 = findViewById(R.id.tv_time3);
+ tvTime4 = findViewById(R.id.tv_time4);
+ tvWeek0 = findViewById(R.id.tv_week0);
+ tvWeek1 = findViewById(R.id.tv_week1);
+ tvWeek2 = findViewById(R.id.tv_week2);
+ tvWeek3 = findViewById(R.id.tv_week3);
+ tvWeek4 = findViewById(R.id.tv_week4);
+ tvDay0 = findViewById(R.id.tv_day0);
+ tvDay1 = findViewById(R.id.tv_day1);
+ tvDay2 = findViewById(R.id.tv_day2);
+ tvDay3 = findViewById(R.id.tv_day3);
+ tvDay4 = findViewById(R.id.tv_day4);
+
+ relativeLayoutMax = findViewById(R.id.relativeLayout_max);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ start();
+ }
+
+ /**
+ * 清除视频跟图片缓存(解决导视跳转屏保内存溢出问题)
+ * */
+ public void clearCache(){
+ if(videoView2!=null){
+ videoView2.stopPlayback();
+ videoView2.setBackground(null);
+ }
+ if(videoView3!=null){
+ videoView3.stopPlayback();
+ videoView3.setBackground(null);
+ }
+
+ if(backgroundImage!=null){
+ backgroundImage.setImageBitmap(null);
+ backgroundImage.setImageDrawable(null);
+ }
+ Glide.get(context).clearMemory();
+ if(handler!=null){
+ handler.removeMessages(TYPE_TIME_UPDATE_DATA);
+ handler.removeMessages(TYPE_UPDATE_MACTH);
+ handler.removeMessages(TYPE_JUDGE_START_PROGRAM);
+ }
+
+ }
+ /**
+ * 销毁控件
+ * */
+ public void deleteView(){
+
+ try {
+ //恢复默认背景图
+ changeOldBackground();
+
+ isNextVideo = false;
+ isStartProgram = false;
+ //视频切换
+ videoPlayCount0 = 0;
+ videoPlayCount1 = 0;
+ startVideoTime=0;
+ isvideoPlay0=false;
+ isvideoPlay1=false;
+
+ //图片切换
+ imagePlayCount0 = 0;
+ imagePlayCount1 = 0;
+ imagePlayCount2 = 0;
+ imagePlayCount3 = 0;
+ imagePlayCount4 = 0;
+ imagePlayCount5 = 0;
+ imagePlayCount6 = 0;
+ imagePlayCount7 = 0;
+ imagePlayCount8 = 0;
+ imagePlayCount9 = 0;
+ imagePlayCount10 = 0;
+ imagePlayCount11 = 0;
+ imagePlayCount12 = 0;
+ imagePlayCount13 = 0;
+ imagePlayCount14 = 0;
+ imagePlayCount15 = 0;
+
+ imagePlay0 = true;
+ imagePlay1 = true;
+ imagePlay2 = true;
+ imagePlay3 = true;
+ imagePlay4 = true;
+ imagePlay5 = true;
+ imagePlay6 = true;
+ imagePlay7 = true;
+ imagePlay8 = true;
+ imagePlay9 = true;
+ imagePlay10 = true;
+ imagePlay11 = true;
+ imagePlay12 = true;
+ imagePlay13 = true;
+ imagePlay14 = true;
+ imagePlay15 = true;
+
+ firstImagePlay0 = true;
+ firstImagePlay1 = true;
+ firstImagePlay2 = true;
+ firstImagePlay3 = true;
+ firstImagePlay4 = true;
+ firstImagePlay5 = true;
+ firstImagePlay6 = true;
+ firstImagePlay7 = true;
+ firstImagePlay8 = true;
+ firstImagePlay9 = true;
+ firstImagePlay10 = true;
+ firstImagePlay11 = true;
+ firstImagePlay12 = true;
+ firstImagePlay13 = true;
+ firstImagePlay14 = true;
+ firstImagePlay15 = true;
+
+ //品牌
+ brandImageCount0 = 0;
+ brandImageCount1 = 0;
+ brandImageCount2 = 0;
+ brandImageCount3 = 0;
+ brandImageCount4 = 0;
+ brandImageCount5 = 0;
+ brandImageCount6 = 0;
+ brandImageCount7 = 0;
+ brandImageCount8 = 0;
+ brandImageCount9 = 0;
+ brandImageCount10 = 0;
+ brandImageCount11 = 0;
+ brandImageCount12 = 0;
+ brandImageCount13 = 0;
+ brandImageCount14 = 0;
+ brandImageCount15 = 0;
+ //设施
+ facilitiesImageCount0 = 0;
+ facilitiesImageCount1 = 0;
+ facilitiesImageCount2 = 0;
+ facilitiesImageCount3 = 0;
+ facilitiesImageCount4 = 0;
+ facilitiesImageCount5 = 0;
+ facilitiesImageCount6 = 0;
+ facilitiesImageCount7 = 0;
+ facilitiesImageCount8 = 0;
+ facilitiesImageCount9 = 0;
+ facilitiesImageCount10 = 0;
+ facilitiesImageCount11 = 0;
+ facilitiesImageCount12 = 0;
+ facilitiesImageCount13 = 0;
+ facilitiesImageCount14 = 0;
+ facilitiesImageCount15 = 0;
+ //点位
+ positionImageCount0 = 0;
+ positionImageCount1 = 0;
+ positionImageCount2 = 0;
+ positionImageCount3 = 0;
+ positionImageCount4 = 0;
+ positionImageCount5 = 0;
+ positionImageCount6 = 0;
+ positionImageCount7 = 0;
+ positionImageCount8 = 0;
+ positionImageCount9 = 0;
+ positionImageCount10 = 0;
+ positionImageCount11 = 0;
+ positionImageCount12 = 0;
+ positionImageCount13 = 0;
+ positionImageCount14 = 0;
+ positionImageCount15 = 0;
+
+ shuipaifacenumb = 0;
+ shuipaifacenumb_finish = 0;
+
+ if(sendRecordTimer!=null){
+ sendRecordTimer.cancel();
+ sendRecordTimer=null;
+ }
+
+ //时间布局显示
+ try {
+ layoutTime0.setVisibility(View.INVISIBLE);
+ layoutTime1.setVisibility(View.INVISIBLE);
+ layoutTime2.setVisibility(View.INVISIBLE);
+ layoutTime3.setVisibility(View.INVISIBLE);
+ layoutTime4.setVisibility(View.INVISIBLE);
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)deleteView()报错",e.getMessage());
+ }
+
+ if(handler!=null){
+ //清除节目更新
+ handler.removeMessages(TYPE_UPDATE_PROGRAM);
+ handler.removeMessages(TYPE_UPDATE_VIDEO0);
+ handler.removeMessages(TYPE_UPDATE_VIDEO1);
+ handler.removeMessages(TYPE_UPDATE_IMAGE0);
+ handler.removeMessages(TYPE_UPDATE_IMAGE1);
+ handler.removeMessages(TYPE_UPDATE_IMAGE2);
+ handler.removeMessages(TYPE_UPDATE_IMAGE3);
+ handler.removeMessages(TYPE_UPDATE_IMAGE4);
+ handler.removeMessages(TYPE_UPDATE_IMAGE5);
+ handler.removeMessages(TYPE_UPDATE_IMAGE6);
+ handler.removeMessages(TYPE_UPDATE_IMAGE7);
+ handler.removeMessages(TYPE_UPDATE_IMAGE8);
+ handler.removeMessages(TYPE_UPDATE_IMAGE9);
+ handler.removeMessages(TYPE_UPDATE_IMAGE10);
+ handler.removeMessages(TYPE_UPDATE_IMAGE11);
+ handler.removeMessages(TYPE_UPDATE_IMAGE12);
+ handler.removeMessages(TYPE_UPDATE_IMAGE13);
+ handler.removeMessages(TYPE_UPDATE_IMAGE14);
+ handler.removeMessages(TYPE_UPDATE_IMAGE15);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW0);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW1);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW2);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW3);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW4);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW5);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW6);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW7);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW8);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW9);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW10);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW11);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW12);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW13);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW14);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW15);
+ handler.removeMessages(TYPE_UPDATE_TEXT4);
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY0);
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY1);
+ handler.removeMessages(TYPE_REFRESH_WEBVIEW0);
+ handler.removeMessages(TYPE_REFRESH_WEBVIEW1);
+ handler.removeMessages(TYPE_REFRESH_WEBVIEW2);
+ handler.removeMessages(TYPE_REFRESH_WEBVIEW3);
+ handler.removeMessages(TYPE_SHUIPAI);
+
+ handler.removeMessages(TYPE_BRAND0);
+ handler.removeMessages(TYPE_BRAND1);
+ handler.removeMessages(TYPE_BRAND2);
+ handler.removeMessages(TYPE_BRAND3);
+ handler.removeMessages(TYPE_BRAND4);
+ handler.removeMessages(TYPE_BRAND5);
+ handler.removeMessages(TYPE_BRAND6);
+ handler.removeMessages(TYPE_BRAND7);
+ handler.removeMessages(TYPE_BRAND8);
+ handler.removeMessages(TYPE_BRAND9);
+ handler.removeMessages(TYPE_BRAND10);
+ handler.removeMessages(TYPE_BRAND11);
+ handler.removeMessages(TYPE_BRAND12);
+ handler.removeMessages(TYPE_BRAND13);
+ handler.removeMessages(TYPE_BRAND14);
+ handler.removeMessages(TYPE_BRAND15);
+ handler.removeMessages(TYPE_FACILITIES0);
+ handler.removeMessages(TYPE_FACILITIES1);
+ handler.removeMessages(TYPE_FACILITIES2);
+ handler.removeMessages(TYPE_FACILITIES3);
+ handler.removeMessages(TYPE_FACILITIES4);
+ handler.removeMessages(TYPE_FACILITIES5);
+ handler.removeMessages(TYPE_FACILITIES6);
+ handler.removeMessages(TYPE_FACILITIES7);
+ handler.removeMessages(TYPE_FACILITIES8);
+ handler.removeMessages(TYPE_FACILITIES9);
+ handler.removeMessages(TYPE_FACILITIES10);
+ handler.removeMessages(TYPE_FACILITIES11);
+ handler.removeMessages(TYPE_FACILITIES12);
+ handler.removeMessages(TYPE_FACILITIES13);
+ handler.removeMessages(TYPE_FACILITIES14);
+ handler.removeMessages(TYPE_FACILITIES15);
+ handler.removeMessages(TYPE_POSITION0);
+ handler.removeMessages(TYPE_POSITION1);
+ handler.removeMessages(TYPE_POSITION2);
+ handler.removeMessages(TYPE_POSITION3);
+ handler.removeMessages(TYPE_POSITION4);
+ handler.removeMessages(TYPE_POSITION5);
+ handler.removeMessages(TYPE_POSITION6);
+ handler.removeMessages(TYPE_POSITION7);
+ handler.removeMessages(TYPE_POSITION8);
+ handler.removeMessages(TYPE_POSITION9);
+ handler.removeMessages(TYPE_POSITION10);
+ handler.removeMessages(TYPE_POSITION11);
+ handler.removeMessages(TYPE_POSITION12);
+ handler.removeMessages(TYPE_POSITION13);
+ handler.removeMessages(TYPE_POSITION14);
+ handler.removeMessages(TYPE_POSITION15);
+ handler.removeMessages(TYPE_MAP);
+ }
+
+ try {
+ //清除视频
+ layoutVideo2.setVisibility(View.GONE);
+ if( videoView2.isPlaying()){
+ videoView2.pause();
+ }
+ videoView3.setZOrderOnTop(false);
+ videoView3.setZOrderMediaOverlay(false);
+ videoView3.setVisibility(View.GONE);
+ layoutVideo3.setVisibility(View.GONE);
+
+ if( videoView3.isPlaying()){
+ videoView3.pause();
+ }
+
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)deleteView()清除视频报错",e.getMessage());
+ }
+ //清除图片组件
+ clearImgView();
+
+ if(textList!=null &&textList.size()>0){
+ textList.clear();
+ }
+ //清除文字
+ if(MarqueeTextList!=null&&MarqueeTextList.size()>0){
+ for(MarqueeTextView marqueeText : MarqueeTextList){
+ relativeLayoutMax.removeView(marqueeText);
+ }
+ MarqueeTextList.clear();
+ }
+
+ if(textViewlist2!=null&&textViewlist2.size()>0){
+ for(TextView marqueeText : textViewlist2){
+ relativeLayoutMax.removeView(marqueeText);
+ }
+ textViewlist2.clear();
+ }
+
+ if(AutoScrollTextList!=null&&AutoScrollTextList.size()>0){
+ for(AutoScrollTextView autoScrollText : AutoScrollTextList){
+ relativeLayoutMax.removeView(autoScrollText);
+ }
+ AutoScrollTextList.clear();
+ }
+ if(webList!=null&& webList.size()>0){
+ for(WebView webView : webList){
+ relativeLayoutMax.removeView(webView);
+ }
+ webList.clear();
+ }
+
+ //清除天气列表
+ if(recycle_weather0!=null){
+ relativeLayoutMax.removeView(recycle_weather0);
+ }
+
+ //清除视频直播
+ if(livePlaylist!=null&&livePlaylist.size()>0){
+ for(IjkPlayerView ijkPlayerView :livePlaylist){
+ if(ijkPlayerView!=null){
+ ijkPlayerView.stop();
+ relativeLayoutMax.removeView(ijkPlayerView);
+ }
+ }
+ livePlaylist.clear();
+ }
+
+ //回收音频资源
+ if (mediaPlayer0 != null && mediaPlayer0.isPlaying()) {
+ mediaPlayer0.stop();
+ mediaPlayer0.release();
+ mediaPlayer0 = null;
+ }
+
+ //清除json动图列表
+ if(ltGiftList.size()>0){
+ for( LottieAnimationView lottie : ltGiftList){
+ relativeLayoutMax.removeView(lottie);
+ }
+ ltGiftList.clear();
+ }
+ //清除公共设施图片
+ if(imageViewlist!=null&&imageViewlist.size()>0){
+ for(ImageView imageView: imageViewlist){
+ relativeLayoutMax.removeView(imageView);
+ }
+ imageViewlist.clear();
+ }
+
+ //清除text
+ if(textViewlist!=null&&textViewlist.size()>0){
+ for(MarqueeTextView2 textView: textViewlist){
+ relativeLayoutMax.removeView(textView);
+ }
+ textViewlist.clear();
+ }
+
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)deleteView()报错",e.getMessage());
+
+ }
+ }
+
+ /**
+ * 清除图片组件
+ * */
+ public void clearImgView(){
+ try {
+ //清除图片
+ layoutImg0.setVisibility(View.GONE);
+ layoutImg1.setVisibility(View.GONE);
+ layoutImg2.setVisibility(View.GONE);
+ layoutImg3.setVisibility(View.GONE);
+ layoutImg4.setVisibility(View.GONE);
+ layoutImg5.setVisibility(View.GONE);
+ layoutImg6.setVisibility(View.GONE);
+ layoutImg7.setVisibility(View.GONE);
+ layoutImg8.setVisibility(View.GONE);
+ layoutImg9.setVisibility(View.GONE);
+ layoutImg10.setVisibility(View.GONE);
+ layoutImg11.setVisibility(View.GONE);
+ layoutImg12.setVisibility(View.GONE);
+ layoutImg13.setVisibility(View.GONE);
+ layoutImg14.setVisibility(View.GONE);
+ layoutImg15.setVisibility(View.GONE);
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)deleteView()清除图片报错",e.getMessage());
+ }
+
+ //设置背景颜色
+ try {
+ if(nomallImgList!=null&&nomallImgList.size()>0){
+ for(ImageView img :nomallImgList){
+ if(img!=null){
+ img.setImageBitmap(null);
+ }
+ }
+ nomallImgList.clear();
+ }
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)deleteView()图片报错",e.getMessage());
+ }
+ }
+
+ /**
+ * 清除额外的图片
+ * */
+ public void clearOtherImg(){
+ try{
+ if(otherImg0!=null){
+ otherImg0.setImageBitmap(null);
+ }
+ if(otherImg1!=null){
+ otherImg1.setImageBitmap(null);
+ }
+ if(otherImg2!=null){
+ otherImg2.setImageBitmap(null);
+ }
+ if(otherImg3!=null){
+ otherImg3.setImageBitmap(null);
+ }
+ if(otherImg4!=null){
+ otherImg4.setImageBitmap(null);
+ }
+ if(otherImg5!=null){
+ otherImg5.setImageBitmap(null);
+ }
+ if(otherImg6!=null){
+ otherImg6.setImageBitmap(null);
+ }
+ if(otherImg7!=null){
+ otherImg7.setImageBitmap(null);
+ }
+ if(otherImg8!=null){
+ otherImg8.setImageBitmap(null);
+ }
+ if(otherImg9!=null){
+ otherImg9.setImageBitmap(null);
+ }
+ if(otherImg10!=null){
+ otherImg10.setImageBitmap(null);
+ }
+ if(otherImg11!=null){
+ otherImg11.setImageBitmap(null);
+ }
+ if(otherImg12!=null){
+ otherImg12.setImageBitmap(null);
+ }
+ if(otherImg13!=null){
+ otherImg13.setImageBitmap(null);
+ }
+ if(otherImg14!=null){
+ otherImg14.setImageBitmap(null);
+ }
+ if(otherImg15!=null){
+ otherImg15.setImageBitmap(null);
+ }
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)clearOtherImg报错",e.getMessage());
+ }
+ }
+
+
+ String downloadaddress;
+ public void start(){
+ LoggerUtil.e("(双面屏)屏保页面调用","start");
+ //设置透明列表
+ colorMap = ColorUtil. getColorTransparent();
+ downloadaddress = DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP);
+
+ //4分后判断是是否开始播放了节目
+ handler.removeMessages(TYPE_JUDGE_START_PROGRAM);
+ handler.sendEmptyMessageDelayed(TYPE_JUDGE_START_PROGRAM,240*1000);
+ isStartProgram = false;
+
+ program=0;
+ programme=0;
+ isChangProgramme = false;//日程切换
+ //匹配时间
+ handler.removeMessages(TYPE_UPDATE_MACTH);
+ handler.sendEmptyMessage(TYPE_UPDATE_MACTH);
+
+ deleteView();
+ //开始播放日程
+ startProgram();
+ }
+
+ /**
+ * 从新获取信息发布
+ * istiming 定时获取
+ * */
+ NewProgramBean currentProgramBean;//当天的日程
+ List screenSaverList;
+
+ // Object newdata;//用于素材下载完成后更新数据
+ String newdata;//用于素材下载完成后更新数据
+
+ /**
+ * 开始播放节目
+ * */
+ boolean isStartProgram = false;//开始播放节目的状态(用于判断开机后一直不进这个方法显示)
+ public void startProgram(){
+
+ screenSaverList = ScreenSaverData.getScreenSaverList(ScreenSaverData.TYPE_SCREEN_SAVER);
+ //获取当天时间段
+ for(NewProgramBean newProgramBean: screenSaverList){
+ if(newProgramBean.date.equals(TimeUtil.stampToDate(System.currentTimeMillis()))){
+ currentProgramBean = newProgramBean;
+ }
+ }
+ if(currentProgramBean == null && screenSaverList.size()>0){
+ LoggerUtil.e("(双面屏)startProgram()","网络问题暂未获取当天节目单,使用前天节目");
+ //2天网络不通没有获取最新的节目单,沿用前一天日程。
+ currentProgramBean = screenSaverList.get(screenSaverList.size() - 1);
+ String s = TimeUtil.stampToDate(System.currentTimeMillis());
+ currentProgramBean.setDate(s);
+ }
+
+ if(currentProgramBean!=null&&!currentProgramBean.getDate().equals(TimeUtil.stampToDate(System.currentTimeMillis()))){
+ LoggerUtil.e("(双面屏)startProgram()","多天网络问题,使用前天数据");
+ String s = TimeUtil.stampToDate(System.currentTimeMillis());
+ currentProgramBean.setDate(s);
+ }
+
+ if(currentProgramBean==null || currentProgramBean.getSchedule().size()<=0){
+ LoggerUtil.e("(双面屏)startProgram()","当前日程里没有节目");
+ return;
+ }
+
+ //当天里面的日程
+ for(int i=0;i beginTimeLong && currentlong < endTimeLong ){
+ //正在进行中
+ programme= i ;
+ handler.removeMessages(TYPE_UPDATE_PROGRAM);
+ handler.removeMessages(TYPE_UPDATE_PROGRAMME);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAMME,endTimeLong-System.currentTimeMillis());
+ //提前5秒获取下个日程的第一个节目的图片
+// handler.sendEmptyMessageDelayed(TYPE_GET_NEXT_PROGRAMME_OTHER_IMG,endTimeLong-(System.currentTimeMillis()+5000));
+ //开始播放进行中的日程
+ if(schedule==null){
+ return;
+ }
+ program=0;
+ createView( schedule , program);
+
+ break;
+
+ }else if( currentlong < beginTimeLong ){
+ //未开始
+ programme= -1 ;
+ handler.removeMessages(TYPE_UPDATE_PROGRAM);
+ Log.e("(双面屏)TAG","未开始,等待");
+ handler.removeMessages(TYPE_UPDATE_PROGRAMME);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAMME,beginTimeLong - System.currentTimeMillis());
+
+ break;
+ }
+
+ } catch (Exception e) {
+ LoggerUtil.e("(双面屏)startProgram","报错:"+e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * 创建控件
+ * */
+ Timer sendRecordTimer;//发送节目单记录定时器
+ int nextimg = 0;
+ public void createView( NewProgramBean.schedule schedule ,int position){
+
+ Log.e("(双面屏)TAG","节目切换"+position);
+ nextimg= position ;
+ NewProgramBean.programs programme = schedule.getPrograms().get(position).getScreenList().get(1);
+
+ String[] split = programme.getDuration().split(":");
+ int duration = Integer.parseInt(split[0])*3600*1000+Integer.parseInt(split[1])*60*1000+Integer.parseInt(split[2])*1000;
+ //只有一个的时候不会从新创建
+ if(schedule.getPrograms().size()>1){
+ //节目更新
+ if(Constant.isSecondary && !Constant.isMain){
+ //从设备不主动更新节目
+ Log.e("(双面屏)TAG","从设备不主动更新");
+ }else {
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAM,duration);
+ program++;
+ }
+ ScreenSaverData.uploadPlayRecord(programme.getCode(),programme.getDuration(),null,null);
+ }else {
+ //需要定时发送上传节目单记录
+ try {
+ sendRecordTimer = new Timer();
+ sendRecordTimer.schedule(new TimerTask() {
+ @Override
+ public void run() {
+ ScreenSaverData.uploadPlayRecord(programme.getCode(),programme.getDuration(),null,null);
+ }
+ },duration);
+ }catch (Exception e){
+
+ }
+ }
+
+ if(programme.getComponents()==null || programme.getComponents().size()<=0){
+ LoggerUtil.e("(双面屏)TAG","获取到的节目控件列表为0");
+ }else {
+ int videoCount=0;
+ int imageCount=0;
+ int weatherCount=0;
+ int textCount=0;
+ int clockCount=0;
+ int onlineWebCount=0;
+ int facilitiesCount=0;
+ int brandCount=0;
+ int positionCount=0;
+ for(int i=0;i imageViewlist = new ArrayList<>();
+ List facilitiesImageViewList = new ArrayList<>();//设施图片控件
+ List brandImageViewList = new ArrayList<>();//设施图片控件
+ List positionImageViewList = new ArrayList<>();//设施图片控件
+
+ public void initSignImageLogo(NewProgramBean.subComponents subComponents , String type , int position){
+ if(subComponents.getMaterials()==null||subComponents.getMaterials().size()<=0){
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(subComponents.getWidth(), subComponents.getHeight());
+ lParams.setMargins(subComponents.getOffsetX(), subComponents.getOffsetY(), 0, 0);
+ ImageView imageView0 = new ImageView(context);
+ relativeLayoutMax.addView(imageView0, lParams);
+ imageViewlist.add(imageView0);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, subComponents.getMaterials().get(0).getFileUrl() ,imageView0);
+ FacilitiesBean facilitiesBean = new FacilitiesBean();
+ facilitiesBean.setImageView(imageView0);
+ facilitiesBean.setType("image");
+ facilitiesBean.setPosition(position);
+ facilitiesBean.setTransitionPeriod(subComponents.getConfig().getTransitionPeriod());
+ facilitiesBean.setMaterials(subComponents.getMaterials());
+ if(type.equals("brand")){
+ brandImageViewList.add(facilitiesBean);
+ }else if(type.equals("facility")){
+ facilitiesImageViewList.add(facilitiesBean);
+ }else if(type.equals("position")){
+ positionImageViewList.add(facilitiesBean);
+ }
+ }
+
+
+ /**
+ * 公共设施json动图
+ * */
+ private void initSignImageLogoLottie(NewProgramBean.subComponents subComponents , String type , int position){
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(subComponents.getWidth(), subComponents.getHeight());
+ lParams.setMargins(subComponents.getOffsetX(), subComponents.getOffsetY(), 0, 0);
+
+ String localPath2 = StringUtil.strSplice(Constant.CACHE_PATH, subComponents.getMaterials().get(0).getFileUrl());
+
+ String url=FileUtil.readLocalJsonForStorage(context,localPath2);
+ LottieAnimationView ltGift = new LottieAnimationView(context);
+ relativeLayoutMax.addView(ltGift, lParams);
+ ltGift.setAnimationFromJson(url);
+ ltGift.loop(true);
+ ltGift.playAnimation();
+ ltGiftList.add(ltGift);
+ FacilitiesBean facilitiesBean = new FacilitiesBean();
+ facilitiesBean.setLottieView(ltGift);
+ facilitiesBean.setType("lottie");
+ facilitiesBean.setPosition(position);
+ facilitiesBean.setTransitionPeriod(subComponents.getConfig().getTransitionPeriod());
+ facilitiesBean.setMaterials(subComponents.getMaterials());
+ if(type.equals("brand")){
+ brandImageViewList.add(facilitiesBean);
+ }else if(type.equals("facility")){
+ facilitiesImageViewList.add(facilitiesBean);
+ }else if(type.equals("position")){
+ positionImageViewList.add(facilitiesBean);
+ }
+ }
+
+ /**
+ * 更新设施跟品牌轮播
+ * */
+ private void updateBrandOrfacilities(int count, int position ,List list, int handlerType){
+ for(FacilitiesBean facilitiesBean: list){
+ if(facilitiesBean.getPosition()==position){
+ if(facilitiesBean.getType().equals("image")){
+ //图片
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, facilitiesBean.getMaterials().get(count % facilitiesBean.getMaterials().size()).getFileUrl(),facilitiesBean.getImageView());
+ }else if(facilitiesBean.getType().equals("lottie")){
+ //动图
+ String localPath2 = StringUtil.strSplice(Constant.CACHE_PATH, facilitiesBean.getMaterials().get(count % facilitiesBean.getMaterials().size()).getFileUrl());
+ String url=FileUtil.readLocalJsonForStorage(context,localPath2);
+ LottieAnimationView ltGift = facilitiesBean.getLottieView();
+ ltGift.setAnimationFromJson(url);
+ ltGift.loop(true);
+ ltGift.playAnimation();
+ }else if(facilitiesBean.getType().equals("text")){
+ //文字
+ facilitiesBean.getTextView().setTextinfo(facilitiesBean.getMaterials().get(count % facilitiesBean.getMaterials().size()).getText());
+ facilitiesBean.getTextView().setVisibility(View.INVISIBLE);
+ facilitiesBean.getTextView().setVisibility(View.VISIBLE);
+ }else if(facilitiesBean.getType().equals("text2")){
+ //文字
+ facilitiesBean.getTextView2().setText(facilitiesBean.getMaterials().get(count % facilitiesBean.getMaterials().size()).getText());
+ }
+ handler.removeMessages(handlerType);
+ handler.sendEmptyMessageDelayed(handlerType,facilitiesBean.getTransitionPeriod()*1000);
+ }
+ }
+ }
+
+ /**
+ * 判断给handler定时轮播
+ * */
+ private void sendhandlerBrandOrFacilities(NewProgramBean.components components,String type, int position){
+ if(type.equals("brand")&& components.getSubComponents().get(0).getMaterials().size()>1){
+ //品牌
+ if(position==0){
+ handler.removeMessages(TYPE_BRAND0);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND0,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==1){
+ handler.removeMessages(TYPE_BRAND1);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND1,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==2){
+ handler.removeMessages(TYPE_BRAND2);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND2,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==3){
+ handler.removeMessages(TYPE_BRAND3);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND3,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==4){
+ handler.removeMessages(TYPE_BRAND4);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND4,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==5){
+ handler.removeMessages(TYPE_BRAND5);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND5,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==6){
+ handler.removeMessages(TYPE_BRAND6);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND6,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==7){
+ handler.removeMessages(TYPE_BRAND7);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND7,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==8){
+ handler.removeMessages(TYPE_BRAND8);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND8,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==9){
+ handler.removeMessages(TYPE_BRAND9);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND9,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==10){
+ handler.removeMessages(TYPE_BRAND10);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND10,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==11){
+ handler.removeMessages(TYPE_BRAND11);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND11,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==12){
+ handler.removeMessages(TYPE_BRAND12);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND12,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==13){
+ handler.removeMessages(TYPE_BRAND13);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND13,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==14){
+ handler.removeMessages(TYPE_BRAND14);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND14,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==15){
+ handler.removeMessages(TYPE_BRAND15);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND15,components.getConfig().getTransitionPeriod()*1000);
+ }
+ }else if(type.equals("facility")&& components.getSubComponents().get(0).getMaterials().size()>1){
+ //设施
+ if(position==0){
+ handler.removeMessages(TYPE_FACILITIES0);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES0,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==1){
+ handler.removeMessages(TYPE_FACILITIES1);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES1,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==2){
+ handler.removeMessages(TYPE_FACILITIES2);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES2,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==3){
+ handler.removeMessages(TYPE_FACILITIES3);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES3,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==4){
+ handler.removeMessages(TYPE_FACILITIES4);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES4,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==5){
+ handler.removeMessages(TYPE_FACILITIES5);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES5,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==6){
+ handler.removeMessages(TYPE_FACILITIES6);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES6,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==7){
+ handler.removeMessages(TYPE_FACILITIES7);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES7,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==8){
+ handler.removeMessages(TYPE_FACILITIES8);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES8,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==9){
+ handler.removeMessages(TYPE_FACILITIES9);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES9,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==10){
+ handler.removeMessages(TYPE_FACILITIES10);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES10,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==11){
+ handler.removeMessages(TYPE_FACILITIES11);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES11,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==12){
+ handler.removeMessages(TYPE_FACILITIES12);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES12,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==13){
+ handler.removeMessages(TYPE_FACILITIES13);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES13,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==14){
+ handler.removeMessages(TYPE_FACILITIES14);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES14,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==15){
+ handler.removeMessages(TYPE_FACILITIES15);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES15,components.getConfig().getTransitionPeriod()*1000);
+ }
+ }else if(type.equals("position")&& components.getSubComponents().get(0).getMaterials().size()>1){
+ //设施
+ if(position==0){
+ handler.removeMessages(TYPE_POSITION0);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION0,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==1){
+ handler.removeMessages(TYPE_POSITION1);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION1,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==2){
+ handler.removeMessages(TYPE_POSITION2);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION2,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==3){
+ handler.removeMessages(TYPE_POSITION3);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION3,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==4){
+ handler.removeMessages(TYPE_POSITION4);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION4,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==5){
+ handler.removeMessages(TYPE_POSITION5);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION5,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==6){
+ handler.removeMessages(TYPE_POSITION6);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION6,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==7){
+ handler.removeMessages(TYPE_POSITION7);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION7,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==8){
+ handler.removeMessages(TYPE_POSITION8);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION8,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==9){
+ handler.removeMessages(TYPE_POSITION9);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION9,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==10){
+ handler.removeMessages(TYPE_POSITION10);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION10,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==11){
+ handler.removeMessages(TYPE_POSITION11);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION11,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==12){
+ handler.removeMessages(TYPE_POSITION12);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION12,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==13){
+ handler.removeMessages(TYPE_POSITION13);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION13,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==14){
+ handler.removeMessages(TYPE_POSITION14);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION14,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==15){
+ handler.removeMessages(TYPE_POSITION15);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION15,components.getConfig().getTransitionPeriod()*1000);
+ }
+ }
+ }
+ /**
+ * 公共设施
+ * */
+ List textViewlist = new ArrayList<>();
+ List textViewlist2 = new ArrayList<>();
+ public void initSignTxtDistance(NewProgramBean.subComponents subComponents,String type, int position){
+ if(subComponents.getMaterials()==null||subComponents.getMaterials().size()<=0){
+ return;
+ }
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(subComponents.getWidth(), subComponents.getHeight());
+ lParams.setMargins(subComponents.getOffsetX(), subComponents.getOffsetY(), 0, 0);
+// TextView textView = new TextView(this);
+
+
+
+ if(subComponents.getConfig().getAnimation().equals("固定")){
+
+ TextView textView = new TextView(context);
+ if(subComponents.getConfig().getFontStyle().equals("正常")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ }else if(subComponents.getConfig().getFontStyle().equals("加粗")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ }else if(subComponents.getConfig().getFontStyle().equals("斜体")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
+ }else if(subComponents.getConfig().getFontStyle().equals("加粗、斜体")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD_ITALIC));
+ }
+
+ relativeLayoutMax.addView(textView, lParams);
+ textViewlist2.add(textView);
+ ViewGroup.LayoutParams layoutParams = textView.getLayoutParams();
+
+ layoutParams.width=subComponents.getWidth();
+ layoutParams.height=subComponents.getHeight();
+ textView.setLayoutParams(layoutParams);
+
+ FacilitiesBean facilitiesBean = new FacilitiesBean();
+ facilitiesBean.setTextView2( textView );
+ facilitiesBean.setPosition(position);
+ facilitiesBean.setType("text2");
+ facilitiesBean.setTransitionPeriod(subComponents.getConfig().getTransitionPeriod());
+ facilitiesBean.setMaterials(subComponents.getMaterials());
+ if(type.equals("brand")){
+ brandImageViewList.add(facilitiesBean);
+ }else if(type.equals("facility")){
+ facilitiesImageViewList.add(facilitiesBean);
+ }else if(type.equals("position")){
+ positionImageViewList.add(facilitiesBean);
+ }
+
+ if(subComponents.getConfig().getBackgroundColor()!=null&&!subComponents.getConfig().getBackgroundColor().isEmpty()){
+ String backgroundColor = subComponents.getConfig().getBackgroundColor();
+ String backgroundOpacity = (String)colorMap.get(subComponents.getConfig().getBackgroundOpacity());
+ backgroundColor="#"+backgroundOpacity+backgroundColor.substring(1);
+ textView.setBackgroundColor(Color.parseColor(backgroundColor));
+ }
+
+ textView.setTextColor(Color.parseColor(subComponents.getConfig().getFontColor()));
+ textView.setText(subComponents.getMaterials().get(0).getText());
+ textView.setTextSize(subComponents.getConfig().getFontSize());
+ textView.setGravity(Gravity.CENTER_VERTICAL);
+
+ }else {
+ MarqueeTextView2 textView =new MarqueeTextView2(context);
+
+ if(subComponents.getConfig().getFontStyle().equals("正常")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ }else if(subComponents.getConfig().getFontStyle().equals("加粗")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ }else if(subComponents.getConfig().getFontStyle().equals("斜体")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
+ }else if(subComponents.getConfig().getFontStyle().equals("加粗、斜体")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD_ITALIC));
+ }
+
+ relativeLayoutMax.addView(textView, lParams);
+ textViewlist2.add(textView);
+ ViewGroup.LayoutParams layoutParams = textView.getLayoutParams();
+
+ layoutParams.width=subComponents.getWidth();
+ layoutParams.height=subComponents.getHeight();
+ textView.setLayoutParams(layoutParams);
+
+ FacilitiesBean facilitiesBean = new FacilitiesBean();
+ facilitiesBean.setTextView( textView );
+ facilitiesBean.setPosition(position);
+ facilitiesBean.setType("text");
+ facilitiesBean.setTransitionPeriod(subComponents.getConfig().getTransitionPeriod());
+ facilitiesBean.setMaterials(subComponents.getMaterials());
+
+ if(type.equals("brand")){
+ brandImageViewList.add(facilitiesBean);
+ }else if(type.equals("facility")){
+ facilitiesImageViewList.add(facilitiesBean);
+ }else if(type.equals("position")){
+ positionImageViewList.add(facilitiesBean);
+ }
+
+ if(subComponents.getConfig().getBackgroundColor()!=null&&!subComponents.getConfig().getBackgroundColor().isEmpty()){
+ String backgroundColor = subComponents.getConfig().getBackgroundColor();
+ String backgroundOpacity = (String)colorMap.get(subComponents.getConfig().getBackgroundOpacity());
+ backgroundColor="#"+backgroundOpacity+backgroundColor.substring(1);
+ textView.setBackgroundColor(Color.parseColor(backgroundColor));
+ }
+
+ textView.setTextColor(Color.parseColor(subComponents.getConfig().getFontColor()));
+ textView.setTextSize(subComponents.getConfig().getFontSize());
+ textView.setTextinfo(subComponents.getMaterials().get(0).getText(),subComponents.getConfig().getFontSize(),subComponents.getWidth(), subComponents.getHeight());
+ textView.setGravity(Gravity.CENTER_VERTICAL);
+
+ }
+
+// if(components.getConfig().getAnimation().equals("自动")){
+// textView.setMarqueeRepeatLimit(3);
+// textView.setFocusable(true);
+// textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
+// textView.setSingleLine();
+// textView.setFocusableInTouchMode(true);
+// textView.setHorizontallyScrolling(true);
+// textView.setSelected(true);
+// }
+ }
+
+ /**
+ * 添加视频
+ * */
+ NewProgramBean.components videoComponents0;
+ NewProgramBean.components videoComponents1;
+ public void addVideoView( NewProgramBean.components components,int position){
+
+ //如果没有内容不创建
+ if(components == null ||components.getMaterials()==null || components.getMaterials().size() <= 0){
+ return;
+ }
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+ if(position==0){
+
+ isNextVideo = true;
+ isvideoPlay0 = true;
+ videoView2.pause();
+ videoView2.seekTo(0);
+ layoutVideo2.setX(components.getOffsetX());
+ layoutVideo2.setY(components.getOffsetY());
+ ViewGroup.LayoutParams layoutParams = layoutVideo2.getLayoutParams();
+ layoutParams.height = components.getHeight();
+ layoutParams.width = components.getWidth();
+ videoComponents0 = components;
+
+ layoutVideo2.setVisibility(View.VISIBLE);
+ layoutVideo2.bringToFront();
+ handler.sendEmptyMessage(TYPE_UPDATE_VIDEO0);
+ videoImg2.setVisibility(View.VISIBLE);
+ videoView2.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+ @Override
+ public void onPrepared(MediaPlayer mp) {
+ mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
+ @Override
+ public boolean onInfo(MediaPlayer mp, int what, int extra) {
+ if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START)
+ videoView2.setBackgroundColor(Color.TRANSPARENT);
+ videoImg2.setVisibility(View.GONE);
+ return true;
+
+ }
+ });
+
+ //视频准备完毕,可以进行播放
+ Log.e("(双面屏)TAG","准备好视频,开始播放");
+ if( isvideoPlay0 ){
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY0);
+ if(components.getConfig().isPlayAudio()){
+ mp.setVolume(15f,15f);
+ }else {
+ mp.setVolume(0f,0f);
+ }
+ mp.start();
+
+ }else{
+ Log.e("(双面屏)TAG","预加载播放暂停");
+ mp.start();
+ mp.setVolume(0f,0f);
+ //暂停播放
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY0);
+ handler.sendEmptyMessageDelayed(TYPE_STOP_VIDEO_PLAY0,5000);
+ }
+ }
+ });
+
+ //视频播放发送错误时回调
+ videoView2.setOnErrorListener(new MediaPlayer.OnErrorListener() {
+ @Override
+ public boolean onError(MediaPlayer mp, int what, int extra) {
+ //视频播放失败
+ return true;
+ }
+ });
+
+
+
+
+ }else if(position==1){
+
+ isvideoPlay1 = true;
+ layoutVideo3.setX(components.getOffsetX());
+ layoutVideo3.setY(components.getOffsetY());
+ ViewGroup.LayoutParams layoutParams = layoutVideo3.getLayoutParams();
+ layoutParams.height = components.getHeight();
+ layoutParams.width = components.getWidth();
+ videoView3.pause();
+ videoView3.seekTo(0);
+ videoView3.setZOrderOnTop(true);
+ videoView3.setZOrderMediaOverlay(true);
+ videoView3.setVisibility(View.VISIBLE);
+ layoutVideo3.setVisibility(View.VISIBLE);
+ layoutVideo3.bringToFront();
+
+ videoImg3.setVisibility(View.VISIBLE);
+
+ videoComponents1 = components;
+ handler.sendEmptyMessage(TYPE_UPDATE_VIDEO1);
+
+ videoView3.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+ @Override
+ public void onPrepared(MediaPlayer mp) {
+ mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
+ @Override
+ public boolean onInfo(MediaPlayer mp, int what, int extra) {
+ if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START)
+ videoView3.setBackgroundColor(Color.TRANSPARENT);
+ videoImg3.setVisibility(View.GONE);
+ return true;
+
+ }
+ });
+
+ //视频准备完毕,可以进行播放
+ Log.e("(双面屏)TAG","准备好视频,开始播放");
+ if( isvideoPlay1 ){
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY1);
+ if(components.getConfig().isPlayAudio()){
+ mp.setVolume(15f,15f);
+ }else {
+ mp.setVolume(0f,0f);
+ }
+ mp.start();
+
+ }else {
+ Log.e("(双面屏)TAG","预加载播放暂停");
+ mp.start();
+ mp.setVolume(0f,0f);
+ //暂停播放
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY1);
+ handler.sendEmptyMessageDelayed(TYPE_STOP_VIDEO_PLAY1,5000);
+ }
+ }
+ });
+
+ //视频播放发送错误时回调
+ videoView3.setOnErrorListener(new MediaPlayer.OnErrorListener() {
+ @Override
+ public boolean onError(MediaPlayer mp, int what, int extra) {
+ //视频播放失败
+
+ return true;
+ }
+ });
+ }
+ }
+
+ /**
+ * 更新video
+ * */
+ public void updateVideo(NewProgramBean.components videoComponents, int videoPlayCount, CustomerVideoView videoView, int TYPE_UPDATE_VIDE){
+ if(videoComponents.getMaterials()==null||videoComponents.getMaterials().size()==0){
+ return;
+ }
+ if(videoPlayCount>=videoComponents.getMaterials().size()){
+ videoPlayCount=0;
+ if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO0){
+ videoPlayCount0 = 0;
+ }else if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO1){
+ videoPlayCount1 = 0 ;
+ }
+ }
+
+ NewProgramBean.materials materials0 = videoComponents.getMaterials().get(videoPlayCount);
+ String localPath = StringUtil.strSplice(Constant.CACHE_PATH, materials0.getFileUrl());
+ if (!new File(localPath).exists()) {
+ FileUtil.downloadFile(downloadaddress + materials0.getFileUrl(), localPath);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_VIDE,2000);
+ return;
+ }
+
+ if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO0){
+ videoPlayCount0++;
+ }else if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO1){
+ videoPlayCount1++;
+ }
+
+ //上传播放记录
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ String playTime = format.format(System.currentTimeMillis());
+// ScreenSaverData.uploadPlayRecord(materials0.getMaterialCode(), materials0.getDuration(), playTime, null, null);
+
+ if(materials0.getDuration()>0){
+ //视频
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_VIDE,materials0.getDuration()*1000);
+ Log.e("(双面屏)TAG","设置视频路径");
+ videoView.setVideoPath(localPath);
+
+ //获取节目第一个视频的第一帧
+
+// if(videoPlayCount==0){
+// MediaMetadataRetriever media = new MediaMetadataRetriever();
+// media.setDataSource(localPath);
+// Bitmap bitmap = media.getFrameAtTime(0);
+// if(bitmap==null){
+// Log.e("TAG","第一帧为空");
+// }else {
+// String[] b = StringUtil.strSplice(Constant.CACHE_PATH, materials0.getFileUrl()).split("\\.");
+// String imgUrl = b[0]+".jpg";
+//
+// if(!new File(imgUrl).exists()){
+// try {
+// FileOutputStream fileOutputStream = new FileOutputStream(imgUrl);
+// bitmap.compress(Bitmap.CompressFormat.JPEG,100,fileOutputStream);
+// } catch (FileNotFoundException e) {
+// e.printStackTrace();
+// }
+// }
+// }
+// //获取视频中的第一帧照片,设置为封面
+//// Bitmap bitmap = media.getFrameAtTime(1, MediaMetadataRetriever.OPTION_CLOSEST_SYNC );
+//
+// }
+
+ }else {
+ //图片
+ if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO0){
+ ViewGroup.LayoutParams layoutParams = videoView2.getLayoutParams();
+ layoutParams.height = videoComponents.getHeight();
+ layoutParams.width = videoComponents.getWidth();
+ videoView2.setLayoutParams(layoutParams);
+
+ }else if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO1){
+ ViewGroup.LayoutParams layoutParams = videoView3.getLayoutParams();
+ layoutParams.height = videoComponents.getHeight();
+ layoutParams.width = videoComponents.getWidth();
+ videoView3.setLayoutParams(layoutParams);
+ }
+
+ videoImg2.setVisibility(View.GONE);
+ videoImg3.setVisibility(View.GONE);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_VIDE,videoComponents.getConfig().getTransitionPeriod()*1000);
+ Drawable drawable = new BitmapDrawable(localPath);
+ videoView.setBackground(drawable);
+
+ }
+
+ }
+
+ /**
+ * 初始化直播
+ * */
+ List livePlaylist = new ArrayList();
+ public void initLivePlayer(NewProgramBean.components components) {
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+ IjkPlayerView ijkPlayerView = new IjkPlayerView(context);
+ livePlaylist.add(ijkPlayerView);
+ relativeLayoutMax.addView(ijkPlayerView, lParams);
+ ijkPlayerView.init();
+ String url = components.getMaterials().get(0).getOuterChain();
+ Log.e("(双面屏)TAG","直播路径"+url);
+ ijkPlayerView.setVideoPath(url);
+ ijkPlayerView.start();
+ if(!components.getConfig().isPlayAudio()){
+ ijkPlayerView.setVolume(1);
+ }else {
+ ijkPlayerView.setVolume(15);
+ }
+ }
+
+ /**
+ * 添加音频
+ *
+ * @param path*/
+ MediaPlayer mediaPlayer0;
+ NewProgramBean.components mediaComponents0;
+ public void initMediaPlayer(NewProgramBean.components components){
+ if(!components.getConfig().isPlayAudio() || components.getMaterials()==null || components.getMaterials().size()==0){
+ return;
+ }
+ mediaComponents0 = components;
+ mediaPlayer0 = new MediaPlayer();
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_MEIDA0,100);
+ }
+
+ /**
+ * 更新音频文件
+ * */
+ public void updateMedia(NewProgramBean.components components){
+
+ NewProgramBean.materials materials0 = mediaComponents0.getMaterials().get(0);
+
+ String localPath = StringUtil.strSplice(Constant.CACHE_PATH, materials0.getFileUrl());
+
+ if (!new File(localPath).exists()) {
+ FileUtil.downloadFile(downloadaddress + materials0.getFileUrl(), localPath);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_MEIDA0,2000);
+ return;
+ }
+
+ Log.e("(双面屏)TAG","有音频播放");
+ try {
+ File file = new File(localPath);
+ mediaPlayer0.setDataSource(file.getPath()); //指定音频文件的路径
+ mediaPlayer0.prepareAsync(); //让MediaPlayer进入到准备状态
+ mediaPlayer0.setLooping(true);//自动循环
+ //装载音频完成监听
+ mediaPlayer0.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+ @Override
+ public void onPrepared(MediaPlayer mp) {
+ // 装载完毕回调
+ mediaPlayer0.start();
+ }
+ });
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 添加图片
+ * */
+ NewProgramBean.components imageComponents0;
+ NewProgramBean.components imageComponents1;
+ NewProgramBean.components imageComponents2;
+ NewProgramBean.components imageComponents3;
+ NewProgramBean.components imageComponents4;
+ NewProgramBean.components imageComponents5;
+ NewProgramBean.components imageComponents6;
+ NewProgramBean.components imageComponents7;
+ NewProgramBean.components imageComponents8;
+ NewProgramBean.components imageComponents9;
+ NewProgramBean.components imageComponents10;
+ NewProgramBean.components imageComponents11;
+ NewProgramBean.components imageComponents12;
+ NewProgramBean.components imageComponents13;
+ NewProgramBean.components imageComponents14;
+ NewProgramBean.components imageComponents15;
+
+ List nomallImgList =new ArrayList<>();//普通图片
+ public void initImage(NewProgramBean.components components,int position){
+ //如果没有内容不创建
+ if(components==null ||components.getMaterials()==null|| components.getMaterials().size()<=0){
+ LoggerUtil.e("(双面屏)initImage添加图片","认为没有内容");
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+ if(position==0){
+
+ buildImgView(layoutImg0,components,TYPE_HINT_IMG0,TYPE_UPDATE_IMAGE0);
+ imageComponents0 = components;
+ buildImgView( otherImg0,components,TYPE_HINT_IMG0,TYPE_UPDATE_IMAGE0);
+ nomallImgList.add(img0);
+ nomallImgList.add(img0Behind);
+ }else if(position==1){
+
+ buildImgView( layoutImg1,components,TYPE_HINT_IMG1,TYPE_UPDATE_IMAGE1);
+ imageComponents1 = components;
+ buildImgView( otherImg1,components,TYPE_HINT_IMG1,TYPE_UPDATE_IMAGE1);
+ nomallImgList.add(img1);
+ nomallImgList.add(img1Behind);
+ }else if(position==2){
+
+ buildImgView( layoutImg2,components, TYPE_HINT_IMG2, TYPE_UPDATE_IMAGE2);
+ imageComponents2 = components;
+ buildImgView( otherImg2,components, TYPE_HINT_IMG2, TYPE_UPDATE_IMAGE2);
+ nomallImgList.add(img2);
+ nomallImgList.add(img2Behind);
+ }else if(position==3){
+
+ buildImgView( layoutImg3, components, TYPE_HINT_IMG3, TYPE_UPDATE_IMAGE3);
+ imageComponents3 = components;
+ buildImgView( otherImg3,components, TYPE_HINT_IMG3, TYPE_UPDATE_IMAGE3);
+ nomallImgList.add(img3);
+ nomallImgList.add(img3Behind);
+ }else if(position==4){
+
+ buildImgView( layoutImg4, components, TYPE_HINT_IMG4, TYPE_UPDATE_IMAGE4);
+ imageComponents4 = components;
+ nomallImgList.add(img4);
+ nomallImgList.add(img4Behind);
+ }else if(position==5){
+
+ buildImgView( layoutImg5, components, TYPE_HINT_IMG5, TYPE_UPDATE_IMAGE5);
+ imageComponents5 = components;
+ nomallImgList.add(img5);
+ nomallImgList.add(img5Behind);
+ }else if(position==6){
+
+ buildImgView( layoutImg6, components, TYPE_HINT_IMG6, TYPE_UPDATE_IMAGE6);
+ imageComponents6 = components;
+ nomallImgList.add(img6);
+ nomallImgList.add(img6Behind);
+ }else if(position==7){
+
+ buildImgView( layoutImg7, components, TYPE_HINT_IMG7, TYPE_UPDATE_IMAGE7);
+ imageComponents7 = components;
+ nomallImgList.add(img7);
+ nomallImgList.add(img7Behind);
+ }else if(position==8){
+
+ buildImgView( layoutImg8, components, TYPE_HINT_IMG8, TYPE_UPDATE_IMAGE8);
+ imageComponents8 = components;
+ nomallImgList.add(img8);
+ nomallImgList.add(img8Behind);
+ }else if(position==9){
+
+ buildImgView( layoutImg9, components, TYPE_HINT_IMG9, TYPE_UPDATE_IMAGE9);
+ imageComponents9 = components;
+ nomallImgList.add(img9);
+ nomallImgList.add(img9Behind);
+ }else if(position==10){
+
+ buildImgView( layoutImg10, components, TYPE_HINT_IMG10, TYPE_UPDATE_IMAGE10);
+ imageComponents10 = components;
+ nomallImgList.add(img10);
+ nomallImgList.add(img10Behind);
+ }else if(position==11){
+
+ buildImgView( layoutImg11, components, TYPE_HINT_IMG11, TYPE_UPDATE_IMAGE11);
+ imageComponents11 = components;
+ nomallImgList.add(img11);
+ nomallImgList.add(img11Behind);
+ }else if(position==12){
+
+ buildImgView( layoutImg12, components, TYPE_HINT_IMG12, TYPE_UPDATE_IMAGE12);
+ imageComponents12 = components;
+ nomallImgList.add(img12);
+ nomallImgList.add(img12Behind);
+ }else if(position==13){
+
+ buildImgView( layoutImg13, components, TYPE_HINT_IMG13, TYPE_UPDATE_IMAGE13);
+ imageComponents13 = components;
+ nomallImgList.add(img13);
+ nomallImgList.add(img13Behind);
+ }else if(position==14){
+
+ buildImgView( layoutImg14, components, TYPE_HINT_IMG14, TYPE_UPDATE_IMAGE14);
+ imageComponents14 = components;
+ nomallImgList.add(img14);
+ nomallImgList.add(img14Behind);
+ }else if(position==15){
+
+ buildImgView( layoutImg15, components, TYPE_HINT_IMG15, TYPE_UPDATE_IMAGE15);
+ imageComponents15 = components;
+ nomallImgList.add(img15);
+ nomallImgList.add(img15Behind);
+ }
+ }
+
+ /**
+ * 创建更图片位置
+ * */
+ public void buildImgView(View view, NewProgramBean.components components,int TYPE_HINT_IMG , int TYPE_UPDATE_IMAGE){
+ view.setVisibility(View.VISIBLE);
+ view.bringToFront();
+ changeViewLocation(view,components);
+ handler.removeMessages(TYPE_HINT_IMG);
+ handler.sendEmptyMessageDelayed(TYPE_HINT_IMG,3000);
+ handler.removeMessages(TYPE_UPDATE_IMAGE);
+ handler.sendEmptyMessage(TYPE_UPDATE_IMAGE);
+ }
+
+ /**
+ * 创建更改控件位置
+ * */
+ public void changeViewLocation(View view, NewProgramBean.components components){
+ view.setX(components.getOffsetX());
+ view.setY(components.getOffsetY());
+ ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
+ layoutParams.width = components.getWidth();
+ layoutParams.height = components.getHeight();
+ }
+
+ /**
+ * 添加额外的图片
+ * */
+
+ public void addOtherImg( NewProgramBean.components components, int otherImgCount){
+ if(components.getMaterials()==null||components.getMaterials().size()<=0){
+ return;
+ }
+ if(otherImgCount==0){
+ Log.e("(双面屏)TAG","隐藏额外图片");
+ otherImg0.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg0,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg0);
+
+ }else if(otherImgCount==1){
+ otherImg1.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg1,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg1);
+
+ }else if(otherImgCount==2){
+ otherImg2.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg2,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg2);
+
+ }else if(otherImgCount==3){
+ otherImg3.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg3,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg3);
+ }else if(otherImgCount==4){
+ otherImg4.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg4,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg4);
+ }else if(otherImgCount==5){
+ otherImg5.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg5,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg5);
+ }else if(otherImgCount==6){
+ otherImg6.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg6,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg6);
+ }else if(otherImgCount==7){
+ otherImg7.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg7,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg7);
+ }else if(otherImgCount==8){
+ otherImg8.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg8,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg8);
+ }else if(otherImgCount==9){
+ otherImg9.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg9,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg9);
+ }else if(otherImgCount==10){
+ otherImg10.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg10,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg10);
+ }else if(otherImgCount==11){
+ otherImg11.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg11,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg11);
+ }else if(otherImgCount==12){
+ otherImg12.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg12,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg12);
+ }else if(otherImgCount==13){
+ otherImg13.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg13,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg13);
+ }else if(otherImgCount==14){
+ otherImg14.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg14,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg14);
+ }else if(otherImgCount==15){
+ otherImg15.setVisibility(View.INVISIBLE);
+ changeViewLocation( otherImg15,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), otherImg15);
+ }
+ }
+
+ /**
+ * 更新替换图片
+ * */
+
+ public void updateImage( NewProgramBean.components imageComponents0, int imagePlayCount, boolean firstImagePlay , boolean imagePlay ,ImageView imageView0 ,ImageView imageView00 ,int TYPE_UPDATE ){
+ Log.e("(双面屏)TAG","切换图片"+imagePlayCount);
+ if(imageComponents0.getMaterials()==null||imageComponents0.getMaterials().size()==0){
+ return;
+ }
+
+ //如果只有一张图就不切换图片
+ if(imageComponents0.getMaterials().size()>1){
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE,imageComponents0.getConfig().getTransitionPeriod()*1000);//切换
+ }
+
+ Log.e("(双面屏)TAG","开始切换图片"+TYPE_UPDATE);
+ if(imagePlayCount >= imageComponents0.getMaterials().size()){
+ imagePlayCount = 0;
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ imagePlayCount0=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ imagePlayCount1=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ imagePlayCount2=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ imagePlayCount3=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ imagePlayCount4=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ imagePlayCount5=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ imagePlayCount6=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ imagePlayCount7=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ imagePlayCount8=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ imagePlayCount9=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ imagePlayCount10=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ imagePlayCount11=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ imagePlayCount12=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ imagePlayCount13=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ imagePlayCount14=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ imagePlayCount15=0;
+ }
+ }
+ String fileurl1 = imageComponents0.getMaterials().get(imagePlayCount).getFileUrl();
+ long fileLength = imageComponents0.getMaterials().get(imagePlayCount).getFileLength();
+
+ //上传播放记录
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ String playTime = format.format(System.currentTimeMillis());
+// ScreenSaverData.uploadPlayRecord(imageComponents0.getMaterials().get(imagePlayCount).getMaterialCode(), imageComponents0.getMaterials().get(imagePlayCount).getDuration(), playTime, null, null);
+
+ String fileurl2;
+ if(imagePlayCount+1>=imageComponents0.getMaterials().size()){
+
+ fileurl2 = imageComponents0.getMaterials().get(0).getFileUrl();
+
+ }else {
+
+ fileurl2 = imageComponents0.getMaterials().get(imagePlayCount+1).getFileUrl();
+ }
+
+ //第一张图显示
+ if(firstImagePlay){
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ firstImagePlay0=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ firstImagePlay1=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ firstImagePlay2=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ firstImagePlay3=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ firstImagePlay4=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ firstImagePlay5=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ firstImagePlay6=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ firstImagePlay7=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ firstImagePlay8=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ firstImagePlay9=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ firstImagePlay10=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ firstImagePlay11=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ firstImagePlay12=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ firstImagePlay13=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ firstImagePlay14=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ firstImagePlay15=false;
+
+ }
+
+ File file = new File(StringUtil.strSplice(Constant.CACHE_PATH, fileurl1));
+ if(Math.abs(file.length()-fileLength)>1){
+ file.delete();
+ }else {
+ }
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, fileurl1, imageView00);
+ }else {
+
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ otherImg0.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ otherImg1.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ otherImg2.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ otherImg3.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ otherImg4.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ otherImg5.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ otherImg6.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ otherImg7.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ otherImg8.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ otherImg9.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ otherImg10.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ otherImg11.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ otherImg12.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ otherImg13.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ otherImg14.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ otherImg15.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ if(imagePlay){
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ imagePlay0=false;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ imagePlay1=false;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ imagePlay2=false;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ imagePlay3=false;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ imagePlay4=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ imagePlay5=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ imagePlay6=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ imagePlay7=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ imagePlay8=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ imagePlay9=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ imagePlay10=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ imagePlay11=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ imagePlay12=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ imagePlay13=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ imagePlay14=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ imagePlay15=false;
+
+ }
+
+ //移动动画
+ if(imageComponents0.getConfig().getTransition()!=null) {
+ if (imageComponents0.getConfig().getTransition().equals("上下滚动")) {
+ imgAnimation(imageView00, 0, 0, -imageComponents0.getHeight(), 0);
+ imgAnimation(imageView0, 0, 0, 0, imageComponents0.getHeight());
+ } else if (imageComponents0.getConfig().getTransition().equals("左右滚动")) {
+ imgAnimation(imageView00, imageComponents0.getWidth(), 0, 0, 0);
+ imgAnimation(imageView0, 0, -imageComponents0.getWidth(), 0, 0);
+ }
+ }
+
+ imageView00.setVisibility(View.VISIBLE);
+ imageView0.setVisibility(View.INVISIBLE);
+ }else {
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ imagePlay0=true;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ imagePlay1=true;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ imagePlay2=true;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ imagePlay3=true;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ imagePlay4=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ imagePlay5=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ imagePlay6=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ imagePlay7=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ imagePlay8=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ imagePlay9=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ imagePlay10=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ imagePlay11=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ imagePlay12=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ imagePlay13=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ imagePlay14=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ imagePlay15=true;
+
+ }
+
+ Log.e("TAG",""+TYPE_UPDATE);
+ //移动动画
+ if(imageComponents0.getConfig().getTransition()!=null) {
+ if (imageComponents0.getConfig().getTransition().equals("上下滚动")) {
+ imgAnimation(imageView0, 0, 0, -imageComponents0.getHeight(), 0);
+ imgAnimation(imageView00, 0, 0, 0, imageComponents0.getHeight());
+ } else if (imageComponents0.getConfig().getTransition().equals("左右滚动")) {
+ imgAnimation(imageView0, imageComponents0.getWidth(), 0, 0, 0);
+ imgAnimation(imageView00, 0, -imageComponents0.getWidth(), 0, 0);
+ }
+ }
+
+ imageView00.setVisibility(View.INVISIBLE);
+ imageView0.setVisibility(View.VISIBLE);
+ }
+
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ //传参数
+ sendMsg(TYPE_CHANGE_IMG_SHOW0,fileurl2);
+ imagePlayCount0++;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ //传参数
+ sendMsg(TYPE_CHANGE_IMG_SHOW1,fileurl2);
+ imagePlayCount1++;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ //传参数
+ sendMsg(TYPE_CHANGE_IMG_SHOW2,fileurl2);
+ imagePlayCount2++;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ //传参数
+ sendMsg(TYPE_CHANGE_IMG_SHOW3,fileurl2);
+ imagePlayCount3++;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW4,fileurl2);
+ imagePlayCount4++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW5,fileurl2);
+ imagePlayCount5++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW6,fileurl2);
+ imagePlayCount6++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW7,fileurl2);
+ imagePlayCount7++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW8,fileurl2);
+ imagePlayCount8++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW9,fileurl2);
+ imagePlayCount9++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW10,fileurl2);
+ imagePlayCount10++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW11,fileurl2);
+ imagePlayCount11++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW12,fileurl2);
+ imagePlayCount12++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW13,fileurl2);
+ imagePlayCount13++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW14,fileurl2);
+ imagePlayCount14++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW15,fileurl2);
+ imagePlayCount15++;
+
+ }
+ }
+
+ /**
+ *发送handler命令
+ * */
+ public void sendMsg(int TYPE_UPDATE_IMAGE, String url){
+ handler.removeMessages(TYPE_UPDATE_IMAGE);
+ Message msg = new Message();
+ msg.what = TYPE_UPDATE_IMAGE;
+ Bundle bundle = new Bundle();
+ bundle.putString("url", url);
+ msg.setData(bundle);
+ handler.sendMessageDelayed(msg,1000);
+ }
+
+
+ /**
+ * 添加json动图
+ * */
+ List ltGiftList = new ArrayList();
+ private void initLottie(NewProgramBean.components components){
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ String localPath2 = StringUtil.strSplice(Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl());
+
+ String url=FileUtil.readLocalJsonForStorage(context,localPath2);
+ LottieAnimationView ltGift = new LottieAnimationView(context);
+ relativeLayoutMax.addView(ltGift, lParams);
+ ltGiftList.add(ltGift);
+ ltGift.setAnimationFromJson(url);
+ ltGift.loop(true);
+ ltGift.playAnimation();
+ }
+
+ /**
+ * 初始化文本
+ * */
+
+
+ List MarqueeTextList = new ArrayList();
+ List AutoScrollTextList = new ArrayList();
+ List textList = new ArrayList();
+
+ public void initText(NewProgramBean.components components,int position){
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ NewProgramBean.materials textMaterials = components.getMaterials().get(0);
+ String localPath = StringUtil.strSplice(Constant.CACHE_PATH, textMaterials.getFileUrl());//文本本地路径
+
+ if(components.getConfig().getAnimation().equals("自动")||components.getConfig().getAnimation().equals("固定")){
+ MarqueeTextView textView = new MarqueeTextView(context);
+ setText2(components,textView);
+ relativeLayoutMax.addView(textView, lParams);
+ textView.setText(components.getMaterials().get(0).getText());
+// if(!new File(localPath).exists()){
+// //不存在
+// TextBean textBean = new TextBean();
+// textBean.setText(textMaterials.getText());
+// textBean.setPosition(position);
+// textBean.setMarqueeTextView(textView);
+// textBean.setWidth(components.getWidth());
+// textList.add(textBean);
+// handler.removeMessages(TYPE_UPDATE_TEXT4);
+// handler.sendEmptyMessageDelayed(TYPE_UPDATE_TEXT4,5000);
+// }else {
+// textView.setText(FileUtil.loadFromSDFile(localPath).trim());
+// }
+
+
+ }else {
+ AutoScrollTextView AutoScrollText = new AutoScrollTextView(context);
+ setText(components, AutoScrollText);
+ relativeLayoutMax.addView(AutoScrollText, lParams);
+ AutoScrollText.setText(components.getMaterials().get(0).getText());
+ AutoScrollText.init(components.getWidth());
+ AutoScrollText.startScroll();
+
+// if(!new File(localPath).exists()){
+// //不存在
+// TextBean textBean = new TextBean();
+// textBean.setText(textMaterials.getText());
+// textBean.setPosition(position);
+// textBean.setAutoScrollTextView(AutoScrollText);
+// textBean.setWidth(components.getWidth());
+// textList.add(textBean);
+// handler.removeMessages(TYPE_UPDATE_TEXT4);
+// handler.sendEmptyMessageDelayed(TYPE_UPDATE_TEXT4,5000);
+// }else {
+// AutoScrollText.setText(FileUtil.loadFromSDFile(localPath));
+// AutoScrollText.init(components.getWidth());
+// AutoScrollText.startScroll();
+// }
+
+ }
+ }
+
+ /**
+ * 设置文字
+ * */
+ public void setText(NewProgramBean.components components, AutoScrollTextView text){
+ AutoScrollTextList.add(text);
+ text.init(components.getWidth());
+ text.setTextColor1(components.getConfig().getFontColor());
+ if(components.getConfig().getAnimationSpeed().equals("慢")){
+ text.setSpeed(1);
+ }else if(components.getConfig().getAnimationSpeed().equals("中等")){
+ text.setSpeed(2);
+ }else if(components.getConfig().getAnimationSpeed().equals("快")){
+ text.setSpeed(3);
+ }else if(components.getConfig().getAnimationSpeed().equals("很快")){
+ text.setSpeed(4);
+ }
+
+ String backgroundColor = components.getConfig().getBackgroundColor();
+ String opacity = (String)colorMap.get(components.getConfig().getBackgroundOpacity());
+ if(backgroundColor!=null&&!backgroundColor.isEmpty()){
+ backgroundColor="#"+opacity+backgroundColor.substring(1);
+ text.setBackgroundColor(Color.parseColor(backgroundColor));
+ }
+ text.setTextSize(components.getConfig().getFontSize());
+
+ if(components.getConfig().getFontStyle().equals("正常")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ }else if(components.getConfig().getFontStyle().equals("加粗")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ }else if(components.getConfig().getFontStyle().equals("斜体")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
+ }else if(components.getConfig().getFontStyle().equals("加粗、斜体")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD_ITALIC));
+ }
+
+ int top=(components.getHeight()-components.getConfig().getFontSize())/2;
+ text.setPadding(0,top,0,0);
+ }
+
+ /**
+ * 设置文字
+ * */
+ public void setText2(NewProgramBean.components components, MarqueeTextView text){
+ MarqueeTextList.add(text);
+ text.setTextColor(Color.parseColor(components.getConfig().getFontColor()));
+ String backgroundColor = components.getConfig().getBackgroundColor();
+ String opacity = (String)colorMap.get(components.getConfig().getBackgroundOpacity());
+ if(backgroundColor!=null&&!backgroundColor.isEmpty()){
+ backgroundColor="#"+opacity+backgroundColor.substring(1);
+ text.setBackgroundColor(Color.parseColor(backgroundColor));
+ }
+
+ if(components.getConfig().getFontStyle().equals("正常")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ }else if(components.getConfig().getFontStyle().equals("加粗")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ }else if(components.getConfig().getFontStyle().equals("斜体")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
+ }else if(components.getConfig().getFontStyle().equals("加粗、斜体")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD_ITALIC));
+ }
+
+ text.setTextSize(components.getConfig().getFontSize());
+ text.setSingleLine();
+ if(components.getConfig().getAnimation().equals("自动")){
+ text.setMarqueeRepeatLimit(Integer.MAX_VALUE);
+ text.setFocusable(true);
+ text.setEllipsize(TextUtils.TruncateAt.MARQUEE);
+ text.setHorizontallyScrolling(true);
+ }
+ text.setHeight(components.getHeight());
+ text.setWidth(components.getWidth());
+ text.setGravity(Gravity.CENTER_VERTICAL);
+ }
+
+ /**
+ * 添加html
+ * */
+ WebView onlineWebView0;
+ WebView onlineWebView1;
+ WebView onlineWebView2;
+ WebView onlineWebView3;
+ NewProgramBean.components webComponents0;
+ NewProgramBean.components webComponents1;
+ NewProgramBean.components webComponents2;
+ NewProgramBean.components webComponents3;
+ List webList=new ArrayList();
+ public void initOnlineWeb(NewProgramBean.components components,int position){
+ if(components==null||components.getMaterials().size()<=0){
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ if(position==0){
+
+ onlineWebView0 = new WebView(context);
+ webList.add(onlineWebView0);
+ relativeLayoutMax.addView(onlineWebView0, lParams);
+ setWebView(onlineWebView0,components.getMaterials().get(0).getOuterChain());
+ webComponents0 = components;
+ int refreshWebTime = getRefreshWebTime(components);
+ if(refreshWebTime>0){
+ handler.sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW0,refreshWebTime);
+ }
+
+ } else if (position==1){
+
+ onlineWebView1 = new WebView(context);
+ webList.add(onlineWebView1);
+ relativeLayoutMax.addView(onlineWebView1, lParams);
+ setWebView(onlineWebView1,components.getMaterials().get(0).getOuterChain());
+ webComponents1 = components;
+ int refreshWebTime = getRefreshWebTime(components);
+ if(refreshWebTime>0){
+ handler.sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW1,refreshWebTime);
+ }
+ } else if (position==2){
+
+ onlineWebView2 = new WebView(context);
+ webList.add(onlineWebView2);
+ relativeLayoutMax.addView(onlineWebView2, lParams);
+ setWebView(onlineWebView2,components.getMaterials().get(0).getOuterChain());
+ webComponents2 = components;
+ int refreshWebTime = getRefreshWebTime(components);
+ if(refreshWebTime>0){
+ handler.sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW2,refreshWebTime);
+ }
+ } else if (position==3){
+
+ onlineWebView3 = new WebView(context);
+ webList.add(onlineWebView3);
+ relativeLayoutMax.addView(onlineWebView3, lParams);
+ setWebView(onlineWebView3,components.getMaterials().get(0).getOuterChain());
+ webComponents3 = components;
+ int refreshWebTime = getRefreshWebTime(components);
+ if(refreshWebTime>0){
+ handler.sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW3,refreshWebTime);
+ }
+ }
+ }
+
+ public int getRefreshWebTime(NewProgramBean.components components){
+ String refreshPeriod = components.getConfig().getRefreshPeriod();
+ String[] split = refreshPeriod.split(":");
+ int time=Integer.parseInt(split[0])*3600*1000+Integer.parseInt(split[1])*60*1000+Integer.parseInt(split[2])*1000;
+ return time;
+ }
+
+ public void setWebView(WebView mWebView,String url){
+// mWebView.setBackgroundColor(Color.TRANSPARENT);
+ mWebView.setHorizontalScrollBarEnabled(false);//水平不显示
+ mWebView.setVerticalScrollBarEnabled(false); //垂直不显示
+ WebSettings webSettings = mWebView.getSettings();
+ webSettings.setJavaScriptEnabled(true);
+ webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
+ webSettings.setSupportZoom(true);//调整图片至适合webview的大小
+ webSettings.setUseWideViewPort(true);// 缩放至屏幕的大小
+ webSettings.setLoadWithOverviewMode(true);
+ webSettings.setLoadsImagesAutomatically(true);
+// webSettings.setAppCacheEnabled(true);//是否使用缓存
+ webSettings.setDomStorageEnabled(true);//DOM Storage
+ webSettings.setDefaultTextEncodingName("utf-8");
+ mWebView.setWebViewClient(new WebViewClient());
+ mWebView.loadUrl(url);
+ }
+
+ class MyWebViewClient extends WebViewClient {
+
+ }
+ /**
+ * 添加水牌
+ * */
+ WebView spWebView;
+ public void intSuipai(NewProgramBean.components components){
+ if(components==null||components.getMaterials().size()<=0){
+ LoggerUtil.e("(双面屏)intSuipai","水牌暂无内容");
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ //开启本地服务
+ if(!Constant.isCoreService){
+ context.startService(new Intent(context, CoreService.class));
+ }
+ spWebView = new WebView(context);
+ webList.add(spWebView);
+ relativeLayoutMax.addView(spWebView, lParams);
+
+ if(new File(Constant.CACHE_PATH +components.getMaterials().get(0).getFileUrl()).exists()){
+ //存在判断dist文件夹是否存在index
+ String shuipai_version = components.getMaterials().get(0).getFileUrl();
+ Log.e("(双面屏)intSuipai","水牌版本:"+shuipai_version);
+ if(!shuipai_version.equals(DeviceData.getDeviceInfo(DeviceData.SHUIPAI_VERSION)) || !new File(Constant.CACHE_PATH2).exists()){
+ LoggerUtil.e("(双面屏)intSuipai","版本号与本地不同,解压水牌zip");
+
+ if(new File(Constant.CACHE_PATH2).exists()){
+ FileUtil.deleteDirectory(Constant.CACHE_PATH2);
+ }
+ FileUtil.makeRootDirectory(Constant.CACHE_PATH2);
+ boolean upZip = FileUtil.upZipFile(Constant.CACHE_PATH + components.getMaterials().get(0).getFileUrl(), Constant.CACHE_PATH2);
+ LoggerUtil.e("(双面屏)intSuipai","解压水牌zip结果:"+upZip);
+ if(upZip){
+
+ DeviceData.saveDeviceInfo(DeviceData.SHUIPAI_VERSION , shuipai_version);
+ readShuiPaiJson();
+ }
+ }else {
+ LoggerUtil.e("(双面屏)intSuipai","水牌zip版本与本地相同,直接读取数据");
+ readShuiPaiJson();
+ }
+
+ handler.sendEmptyMessageDelayed(TYPE_SHUIPAI,5000);
+ }else {
+ LoggerUtil.e("(双面屏)intSuipai","水牌zip本地不存在");
+ }
+ }
+
+ /**
+ * 读取水牌json离线数据
+ * */
+ int shuipaifacenumb = 0;//接口数量
+ int shuipaifacenumb_finish = 0;//接口请求完成
+ public void readShuiPaiJson(){
+ try {
+ String url = Constant.CACHE_PATH+"dist/" +"/InterfaceList.json";
+ if(!new File(url).exists()){
+ LoggerUtil.e("(双面屏)redSuiPaiJson()","不存在水牌离线json");
+ return;
+ }
+ String s = FileUtil.loadFromSDFile(url);
+ Log.e("(双面屏)TAG","水牌离线json:"+s);
+ ShuipaiDataListBean shuipaiDataListBean = GsonUtil.getGson().fromJson(s, new TypeToken() {
+ }.getType());
+ List InterFaceList = shuipaiDataListBean.getData();
+ shuipaifacenumb = InterFaceList.size();
+ for(InterFaceBean interFacebean: InterFaceList ){
+ if(interFacebean.getInterfaceName().equals("GetDevCoordinateByIP")){
+ if(interFacebean.getInterfaceUrl().contains("http")||interFacebean.getInterfaceUrl().contains("https")){
+ ScreenSaverData.getGetData(context,interFacebean.getInterfaceUrl()+DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE),interFacebean.getInterfaceName(),null,new QueryFinishListener(){
+ @Override
+ public void onFinish() {
+ shuipaifacenumb_finish++;
+ }
+ });
+ }else {
+ ScreenSaverData.getGetData(context,Constant.getBaseAddress()+interFacebean.getInterfaceUrl()+DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE),interFacebean.getInterfaceName(),null ,new QueryFinishListener(){
+ @Override
+ public void onFinish() {
+ shuipaifacenumb_finish++;
+ }
+ });
+ }
+ }else {
+ if(interFacebean.getInterfaceUrl().contains("http")||interFacebean.getInterfaceUrl().contains("https")){
+ ScreenSaverData.getGetData(context,interFacebean.getInterfaceUrl(),interFacebean.getInterfaceName(),null ,new QueryFinishListener(){
+ @Override
+ public void onFinish() {
+ shuipaifacenumb_finish++;
+ }
+ });
+ }else {
+ ScreenSaverData.getGetData(context,Constant.getBaseAddress()+interFacebean.getInterfaceUrl(),interFacebean.getInterfaceName(),null ,new QueryFinishListener(){
+ @Override
+ public void onFinish() {
+ shuipaifacenumb_finish++;
+ }
+ });
+ }
+ }
+ }
+ }catch (Throwable t){
+ LoggerUtil.e("(双面屏)redShuiPaiJson()", StringUtil.getThrowableStr(t));
+ }
+ }
+
+ /**
+ * 添加水牌
+ * */
+ WebView mapWebView;
+ public void initMap(NewProgramBean.components components){
+ if(components==null||components.getMaterials().size()<=0){
+ LoggerUtil.e("(双面屏)initMap","地图组件暂无内容");
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ //开启本地服务
+ if(!Constant.isCoreService){
+ context.startService(new Intent(context, CoreService.class));
+ }
+ mapWebView = new WebView(context);
+ webList.add(mapWebView);
+ relativeLayoutMax.addView(mapWebView, lParams);
+
+ if(new File(Constant.CACHE_PATH +components.getMaterials().get(0).getFileUrl()).exists()){
+ //存在判断dist文件夹是否存在index
+ String shuipai_version = components.getMaterials().get(0).getFileUrl();
+ Log.e("(双面屏)intSuipai","地图版本:"+shuipai_version);
+ if(!shuipai_version.equals(DeviceData.getDeviceInfo(DeviceData.SHUIPAI_VERSION)) || !new File(Constant.CACHE_PATH2).exists()){
+ LoggerUtil.e("(双面屏)intSuipai","版本号与本地不同,解压地图zip");
+
+ if(new File(Constant.CACHE_PATH2).exists()){
+ FileUtil.deleteDirectory(Constant.CACHE_PATH2);
+ }
+ FileUtil.makeRootDirectory(Constant.CACHE_PATH2);
+ boolean upZip = FileUtil.upZipFile(Constant.CACHE_PATH + components.getMaterials().get(0).getFileUrl(), Constant.CACHE_PATH2);
+ LoggerUtil.e("(双面屏)intSuipai","解压地图zip结果:"+upZip);
+ if(upZip){
+
+ DeviceData.saveDeviceInfo(DeviceData.SHUIPAI_VERSION , shuipai_version);
+ handler.removeMessages(TYPE_MAP);
+ handler.sendEmptyMessageDelayed(TYPE_MAP,2000);
+ }
+ }else {
+ LoggerUtil.e("(双面屏)intSuipai","地图zip版本与本地相同,直接读取数据");
+ handler.removeMessages(TYPE_MAP);
+ handler.sendEmptyMessageDelayed(TYPE_MAP,2000);
+ }
+
+
+ }else {
+ LoggerUtil.e("(双面屏)intSuipai","地图zip本地不存在");
+ }
+ }
+
+ public void getApiFileResourceList(Context context, String url, QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+
+ AsyncHttpClient client = new AsyncHttpClient();
+
+ client.get( context, url ,new AsyncHttpResponseHandler() {
+ @Override
+ public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
+
+ try {
+ if (responseBody!=null) {
+ String response = new String(responseBody).replace("\\\\", "/");
+ Log.e("(双面屏)地图组件资源列表数据",response);
+ MapDataListBean mapDataListBean = GsonUtil.getGson().fromJson(response, new TypeToken() {}.getType());
+
+ for (ResourceFileBean bean : mapDataListBean.getData()){
+ mapFiles.put(bean.getUrl(),bean.getUrl()) ;
+ }
+ mapDownloadCount=0;
+ downloadFiles();
+ }
+
+ } catch (Throwable t) {
+
+
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 开始批量下载图片
+ * ishandler 是否需要通知更新
+ */
+ public void downloadFiles() {
+ Log.e("(双面屏)TAG","地图文件下载的数量"+mapFiles.size()+",下载地址前缀"+DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP));
+ if(mapFiles.size()<=0 ){
+ handler.sendEmptyMessageDelayed(TYPE_MAP,5000);
+ return;
+ }
+ for (String bigFile : mapFiles.keySet()) {
+
+ Log.e("(双面屏)TAG",bigFile);
+ downloadFile(DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP), bigFile);
+ }
+ }
+
+
+ private void downloadFile(String imgPath, final String address) {
+
+ File file = new File(StringUtil.strSplice(Constant.CACHE_PATH2, address));
+ if (file.exists()) {
+ mapDownloadCount++ ;
+ mapDownCount();
+ return;
+ }
+
+ FileUtil.downloadFile2(StringUtil.strSplice(imgPath, address), StringUtil.strSplice(Constant.CACHE_PATH3, address), new QueryFinishListener() {
+ @Override
+ public void onFinish() {
+ mapDownloadCount++ ;
+ mapDownCount();
+ }
+ });
+ }
+
+ /**
+ * 下载完成度
+ * */
+ public void mapDownCount(){
+ if(mapFiles.size() == mapDownloadCount){
+ LoggerUtil.e("(双面屏)mapDownCount()","地图资源下载完成");
+ handler.removeMessages(TYPE_MAP);
+ handler.sendEmptyMessageDelayed(TYPE_MAP,6000);
+ }
+ }
+
+
+ /**
+ * 添加天气
+ * */
+ private WeatherAdapter0 weatherAdapter0;
+ private WeatherAdapter1 weatherAdapter00;
+ private RecyclerView recycle_weather0;
+ NewProgramBean.components weatherComponents0;
+
+ public void initWeather(NewProgramBean.components components , int position){
+ //没有城市名不显示天气
+ if(components.getConfig().getCityName().isEmpty() && DeviceData.getDevice().getCity()==null){
+ return;
+ }
+ //设置列表大小
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+// Log.e("TAG","初始化天气");
+ List weatherList = new ArrayList<>();
+ for(int i=0;i<6;i++){
+ weatherList.add("");
+ }
+ LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
+
+ if(position==0){
+ recycle_weather0 = new RecyclerView(context);
+ relativeLayoutMax.addView(recycle_weather0, params);
+
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ recycle_weather0.setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ recycle_weather0.setLayoutManager(layoutManager);
+
+ ViewGroup.LayoutParams layoutParams = recycle_weather0.getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ recycle_weather0.setLayoutParams(layoutParams);
+ if(components.getConfig().getStyle()==0){
+ weatherAdapter0 = new WeatherAdapter0(context,components);
+ weatherAdapter0.setData(weatherList);
+ recycle_weather0.setAdapter(weatherAdapter0);
+ }else {
+ weatherAdapter00 = new WeatherAdapter1(context,components);
+ weatherAdapter00.setData(weatherList);
+ recycle_weather0.setAdapter(weatherAdapter00);
+ }
+ }
+
+ if(!components.getConfig().getCityName().isEmpty()){
+ getWeather(components.getConfig().getCityName(),null,null);
+ }else {
+ getWeather(DeviceData.getDevice().getCity(),null,null);
+ }
+ }
+
+
+ NewProgramBean.components timeComponents0;
+ public void initTime(NewProgramBean.components components ,int position){
+ timeComponents0=components;
+ showTimeStyle(components);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_TIME0,10);
+ }
+
+ /**
+ * 显示时间风格
+ * */
+ public void showTimeStyle(NewProgramBean.components components ){
+// Log.e("TAG","显示时间");
+ int style = components.getConfig().getStyle();
+ int offsetX = components.getOffsetX();
+ int offsetY = components.getOffsetY();
+ layoutTime0.setVisibility(View.INVISIBLE);
+ layoutTime1.setVisibility(View.INVISIBLE);
+ layoutTime2.setVisibility(View.INVISIBLE);
+ layoutTime3.setVisibility(View.INVISIBLE);
+ layoutTime4.setVisibility(View.INVISIBLE);
+ //得到变换比例
+ int width = components.getWidth();
+ float proportion = (float)width/(float) 320;
+
+ String fontColor = components.getConfig().getFontColor();
+ if(style==0){
+ //改变大小
+ ViewGroup.LayoutParams layoutParams = layoutTime0.getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ layoutTime0.setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+
+ layoutTime0.setLayoutParams(layoutParams);
+ tvTime0.setTextColor(Color.parseColor(fontColor));
+ tvWeek0.setTextColor(Color.parseColor(fontColor));
+ tvDay0.setTextColor(Color.parseColor(fontColor));
+ tvTime0.setTextSize((int)(proportion*24));
+ tvWeek0.setTextSize((int)(proportion*24));
+ tvDay0.setTextSize((int)(proportion*24));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ layoutTime0.setLayoutParams(params);
+ layoutTime0.setVisibility(View.VISIBLE);
+ }else if(style==1){
+
+ ViewGroup.LayoutParams layoutParams = layoutTime1.getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ layoutTime1.setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ layoutTime1.setLayoutParams(layoutParams);
+ tvTime1.setTextColor(Color.parseColor(fontColor));
+ tvWeek1.setTextColor(Color.parseColor(fontColor));
+ tvDay1.setTextColor(Color.parseColor(fontColor));
+ tvTime1.setTextSize((int)(proportion*24));
+ tvWeek1.setTextSize((int)(proportion*24));
+ tvDay1.setTextSize((int)(proportion*24));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ layoutTime1.setLayoutParams(params);
+ layoutTime1.setVisibility(View.VISIBLE);
+ }else if(style==2){
+ ViewGroup.LayoutParams layoutParams = layoutTime2.getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ layoutTime2.setLayoutParams(layoutParams);
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ layoutTime2.setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ tvTime2.setTextColor(Color.parseColor(fontColor));
+ tvWeek2.setTextColor(Color.parseColor(fontColor));
+ tvDay2.setTextColor(Color.parseColor(fontColor));
+ tvTime2.setTextSize((int)(proportion*24));
+ tvWeek2.setTextSize((int)(proportion*18));
+ tvDay2.setTextSize((int)(proportion*18));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ layoutTime2.setLayoutParams(params);
+ layoutTime2.setVisibility(View.VISIBLE);
+ }else if(style==3){
+ ViewGroup.LayoutParams layoutParams = layoutTime3.getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ layoutTime3.setLayoutParams(layoutParams);
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ layoutTime3.setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ tvTime3.setTextColor(Color.parseColor(fontColor));
+ tvWeek3.setTextColor(Color.parseColor(fontColor));
+ tvDay3.setTextColor(Color.parseColor(fontColor));
+ tvTime3.setTextSize((int)(proportion*24));
+ tvWeek3.setTextSize((int)(proportion*14));
+ tvDay3.setTextSize((int)(proportion*14));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ layoutTime3.setLayoutParams(params);
+ layoutTime3.setVisibility(View.VISIBLE);
+ }else if(style==4){
+ ViewGroup.LayoutParams layoutParams = layoutTime4.getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ layoutTime4.setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ layoutTime4.setLayoutParams(layoutParams);
+ tvTime4.setTextColor(Color.parseColor(fontColor));
+ tvWeek4.setTextColor(Color.parseColor(fontColor));
+ tvDay4.setTextColor(Color.parseColor(fontColor));
+ tvTime4.setTextSize((int)(proportion*36));
+ tvWeek4.setTextSize((int)(proportion*14));
+ tvDay4.setTextSize((int)(proportion*14));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ layoutTime4.setLayoutParams(params);
+ layoutTime4.setVisibility(View.VISIBLE);
+ }
+ }
+
+ /**
+ * 时间更新
+ * */
+ public void chooseTime(int style){
+ long longtime = System.currentTimeMillis();
+ String day = TimeUtil.stampToDate(longtime);
+ String time = TimeUtil.stampTotime(longtime);
+ String week = TimeUtil.getWeek2(day);
+ if(style==0){
+ tvTime0.setText(time);
+ tvWeek0.setText(week);
+ tvDay0.setText(day);
+ }else if(style==1){
+ tvTime1.setText(time);
+ tvWeek1.setText(week);
+ tvDay1.setText(day);
+ }else if(style==2){
+ tvTime2.setText(time);
+ tvWeek2.setText(week);
+ tvDay2.setText(day);
+ }else if(style==3){
+ tvTime3.setText(time);
+ tvWeek3.setText(week);
+ tvDay3.setText(day);
+ }else if(style==4){
+ tvTime4.setText(time);
+ tvWeek4.setText(week);
+ tvDay4.setText(day);
+ }
+ }
+
+ /**
+ * 获取天气
+ * */
+ public void getWeather(String city, QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ RetrofitUtil.getBaseService().getWeather(city).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+
+ WeatherBean weatherbean = new Gson().fromJson(new Gson().toJson(response.body().getData()), new TypeToken() {
+ }.getType());
+
+ if(weatherAdapter0!=null){
+ List weatherList = new ArrayList<>();
+ weatherList.add(""+weatherbean.getTemperatureNow());
+ weatherList.add(weatherbean.getHumidity().substring(0,weatherbean.getHumidity().length()-1));
+ weatherList.add(weatherbean.getWindPower());
+ weatherList.add(weatherbean.getAqi()+"");
+ weatherList.add(weatherbean.getPm()+"");
+ weatherList.add(weatherbean.getWeather());
+ weatherAdapter0.setData(weatherList);
+ }
+
+ if(weatherAdapter00!=null){
+ List weatherList = new ArrayList<>();
+ weatherList.add(""+weatherbean.getTemperatureNow());
+ weatherList.add(weatherbean.getHumidity().substring(0,weatherbean.getHumidity().length()-1));
+ weatherList.add(weatherbean.getWindPower());
+ weatherList.add(weatherbean.getAqi()+"");
+ weatherList.add(weatherbean.getPm()+"");
+ weatherList.add(weatherbean.getWeather());
+ weatherAdapter00.setData(weatherList);
+
+ }
+
+ } catch (Throwable t) {
+ LoggerUtil.e("(双面屏)getWeather()", StringUtil.getThrowableStr(t));
+ }
+ //一小时更新一次天气
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_WEATHER0,3600*1000);
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("(双面屏)getWeather()", StringUtil.getThrowableStr(t));
+ if (finishListener != null) finishListener.onFinish();
+ //一小时更新一次天气
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_WEATHER0,3600*1000);
+
+ }
+ });
+ }
+
+ /**
+ * 修改成默认背景图
+ * */
+ public void changeOldBackground(){
+ try {
+ backgroundImage.setBackgroundColor(Color.TRANSPARENT);
+ backgroundImage.setImageBitmap(null);
+ }catch (Exception e){
+ LoggerUtil.e("(双面屏)修改成默认背景图",e.getMessage());
+ }
+ }
+
+ /**
+ * 图片移动动画
+ * */
+ public void imgAnimation(View view, int fromX ,int toX,int fromY,int toY){
+ Animation translateAnimation = new TranslateAnimation(fromX, toX, fromY, toY);//设置平移的起点和终点
+ translateAnimation.setDuration(1000);//动画持续的时间为10s
+ view.startAnimation(translateAnimation);
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/program/ScreenSaverActivity.java b/app/src/main/java/qianmu/container/activity/program/ScreenSaverActivity.java
new file mode 100644
index 0000000..84fa777
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/program/ScreenSaverActivity.java
@@ -0,0 +1 @@
+package qianmu.container.activity.program;
import android.annotation.SuppressLint;
import android.app.Presentation;
import android.content.Context;
import android.content.Intent;
import android.hardware.display.DisplayManager;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Display;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.GridLayoutManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.google.gson.Gson;
import com.squareup.leakcanary.RefWatcher;
import com.sun.jna.Native;
import java.io.File;
import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat;
import java.util.List;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import qianmu.container.R;
import qianmu.container.activity.BaseActivity;
import qianmu.container.activity.H5.H5Data;
import qianmu.container.adapter.KeyAdapter;
import qianmu.container.app.Constant;
import qianmu.container.app.MyApplication;
import qianmu.container.data.AppData;
import qianmu.container.entity.NovaDeviceBean;
import qianmu.container.entity.JxbBean;
import qianmu.container.entity.Resp;
import qianmu.container.entity.ScreenSaverTime;
import qianmu.container.http.retrofit.RetrofitUtil;
import qianmu.container.manager.QMWindowManager;
import qianmu.container.data.DeviceData;
import qianmu.container.data.ScreenSaverData;
import qianmu.container.databinding.ActivityScreenSaverBinding;
import qianmu.container.entity.MessageEvent;
import qianmu.container.mqtt.MQTTService;
import qianmu.container.service.ContainerService;
import qianmu.container.service.MessengerService;
import qianmu.container.util.AppUtil;
import qianmu.container.util.BitmapUtil;
import qianmu.container.util.CalendarUtils;
import qianmu.container.util.DeviceUtil;
import qianmu.container.util.LoggerUtil;
import qianmu.container.util.SignWayUtil;
import qianmu.container.util.StringUtil;
import qianmu.container.util.ToastUtils;
import qianmu.container.util.ViplexCore;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@SuppressWarnings("All")
@Route(path = Constant.ROUTE_SCREEN_SAVER)
public class ScreenSaverActivity extends BaseActivity {
ViplexCore instance ;
ActivityScreenSaverBinding binding;
ViewScreenSaver screenSaver;
ViewSubtitle subtitle;
ViewTouch touch;
ViewMedia media;
ViewTest test;
private WeakReference weakReference;
static final int TYPE_HINT_PASSWORD = 3;//隐藏密码输入框
static final int NOVA_HINT = 4;//隐藏密码输入框
static final int SHOW_JXB = 5;//机械臂轮播
String TB40_password="SN2008@+";//华贸SN2008@+
int time = 0;
int jxbPlayNum = 0;
Handler handler = new Handler() {
@SuppressLint("HandlerLeak")
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
switch (msg.what){
case TYPE_HINT_PASSWORD:
sendEmptyMessageDelayed(TYPE_HINT_PASSWORD,1000);
if(time>=30){
binding.layoutPass.setVisibility(View.GONE);
removeMessages(TYPE_HINT_PASSWORD);
}
time++;
try {
}catch (Exception e){
}
break;
case NOVA_HINT:
initNova();
break;
case SHOW_JXB:
List jxbData = DeviceData.getJxbData();
if(jxbData.size()>0){
if(jxbPlayNum>=jxbData.size())jxbPlayNum=0;
JxbBean jxbBean = jxbData.get(jxbPlayNum);
DeviceData.setJxbPlay(jxbBean.getOneText(),jxbBean.getTwoText(),jxbBean.getCost()+"m", jxbBean.getAngle(),null,null);
jxbPlayNum++;
if(H5Data.getKdxf().getData().getControlInfo()!=null){
handler.removeMessages(SHOW_JXB);
handler.sendEmptyMessageDelayed(SHOW_JXB,H5Data.getKdxf().getData().getControlInfo().getRotationTime()*1000);
}else {
handler.removeMessages(SHOW_JXB);
handler.sendEmptyMessageDelayed(SHOW_JXB,60000);
}
}
break;
}
}
};
@Override
protected void initView() {
currRoute = Constant.ROUTE_SCREEN_SAVER;
binding = DataBindingUtil.setContentView(this, R.layout.activity_screen_saver);
screenSaver = new ViewScreenSaver(this, binding.viewScreenSaver.getRoot());
touch = new ViewTouch(this, binding.viewTouch.getRoot());
media = new ViewMedia(this, binding.viewMedia.getRoot());
test = new ViewTest(this, binding.viewTest.getRoot());
}
@Override
protected void setData() {
LoggerUtil.e("ScreenSaverActivity","setData");
Constant.isScreen4K = DeviceUtil.screenIs4K(this);
//设置默认屏保图
ScreenSaverTime screenSaverTime = ScreenSaverData.getScreenSaver();
String url = screenSaverTime.getUrl();
if(url!=null && !url.isEmpty()){
BitmapUtil.loadImage(DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP), Constant.CACHE_PATH, url, binding.defaultImage);
}
String deviceType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE);
if (!deviceType.equals("信发") && !deviceType.equals("双面屏")) {
LoggerUtil.e("ScreenSaverActivity","setData调用start");
screenSaver.start();
}
initPass();
//诺瓦吊顶信发
if(Constant.androidBoardType.equals("nova")){
instance = (ViplexCore) Native.loadLibrary("viplexcore",ViplexCore.class);
handler.sendEmptyMessageDelayed(NOVA_HINT,5000);
}
}
@Override
protected void setListener() {
binding.setting.setOnClickListener((view) -> {
if (!MyApplication.getInstance().addClickTimes()) return;
binding.layoutPass.setVisibility(View.VISIBLE);
time = 0;
handler.sendEmptyMessage(TYPE_HINT_PASSWORD);
binding.tvPass.setText("");
// ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).withBoolean(Constant.INPUT_PASSWORD, true).navigation();
});
binding.layoutTouch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//点击跳转到webview页面
String deviceType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE);
if (!deviceType.equals("信发") && !deviceType.equals("双面屏")) {
DeviceData.guideClickDataUpload(null,null);
ARouter.getInstance().build(Constant.ROUTE_WEB_VIEW).withBoolean(Constant.KEY_LOAD_H5_URL, true).navigation();
}
}
});
}
@Override
protected void onResume() {
super.onResume();
LoggerUtil.e("ScreenSaverActivity","onResume");
if (exitProgress()) return;
if (navigationDeviceInfo()) return;
AppData.saveFrontApp(DeviceUtil.getPackageName());
// ScreenSaverData.queryScreensaver(null, null);
//是否显示touch me
String touchType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TOUCH);
String deviceType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE);//设备类型,导视,信发等
if (deviceType.equals("信发")||deviceType.equals("双面屏")) {
LoggerUtil.e("ScreenSaverActivity","onResume调用start");
screenSaver.start();
}
if(deviceType.equals("信发")||deviceType.equals("双面屏")){
touch.hideTouch();
}else {
touch.showTouch();
}
//是否显示同屏测试信息
String syncTest = DeviceData.getDeviceInfo(DeviceData.HINT_SYNC_TEST, "关闭");
if ("开启".equals(syncTest)) test.showViewTest();
else test.hideViewTest();
AppUtil.updateMenuWindowState();
//开启双面屏
if(deviceType.equals("双面屏")){
if(presentation != null){
presentation.cancel();
}
showSecondByDisplayManager(ScreenSaverActivity.this);
}
binding.layoutPass.setVisibility(View.GONE);
if(deviceType.equals("指路机")){
handler.removeMessages(SHOW_JXB);
handler.sendEmptyMessageDelayed(SHOW_JXB,5000);
}
}
@Override
protected void onPause() {
super.onPause();
touch.hideTouch();
}
@Override
protected void onStop() {
super.onStop();
LoggerUtil.e("ScreenSaverActivity","onStop");
screenSaver.hideScreenSaver();
touch.hideTouch();
test.hideViewTest();
if(handler!=null){
handler.removeMessages(TYPE_HINT_PASSWORD);
handler.removeMessages(SHOW_JXB);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
LoggerUtil.e("ScreenSaverActivity","onDestroy");
// RefWatcher refWatcher = MyApplication.getRefWatcher(this);
// refWatcher.watch(this);
}
@Override
public void onMessageEvent(MessageEvent message) {
super.onMessageEvent(message);
if (Constant.ACTION_START_INTER_CUT.equals(message.getCode())) {
//开始插播
// screenSaver.showScreenSaver();
} else if (Constant.ACTION_PLAY_PROGRAM_BY_INDEX.equals(message.getCode())) {
int index = Integer.valueOf(message.getData());
// screenSaver.playProgramByIndex(index);
} else if (Constant.ACTION_PLAY_CUT_PROGRAM_BY_INDEX.equals(message.getCode())) {
int index = Integer.valueOf(message.getData());
} else if (Constant.ACTION_PLAY_VIDEO_PROGRAM_BY_INDEX.equals(message.getCode())) {
//视频下标
int index = Integer.valueOf(message.getData());
Log.e("TAG","收到视频下标"+index);
screenSaver.videoProgramByIndex(index);
} else if (Constant.ACTION_PLAY_IMG_PROGRAM_BY_INDEX.equals(message.getCode())) {
//图片下标
int index = Integer.valueOf(message.getData());
Log.e("TAG","收到图片下标"+index);
screenSaver.imgProgramByIndex(index);
}else if (Constant.ACTION_PLAY_NEXT_PROGRAM_BY_INDEX.equals(message.getCode())) {
//节目下标
int index = Integer.valueOf(message.getData());
Log.e("TAG","收到节目下标"+index);
screenSaver.programByIndex(index);
} else if (Constant.ACTION_MEDIA_UPDATE_COMPLETE.equals(message.getCode())) {
// screenSaver.playProgramByIndex(0);
} else if(Constant.ACTION_SHOW_TOUCH_ME.equals(message.getCode())){
//是否显示touch me
String touchType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TOUCH);
String deviceType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE);//设备类型,导视,信发等
if(deviceType.equals("信发")||deviceType.equals("双面屏") || "1".equals(deviceType)){
touch.hideTouch();
}else {
touch.showTouch();
}
}else if(Constant.ACTION_UPDATE_PROG.equals(message.getCode())){
//发布新的节目
LoggerUtil.e("ScreenSaverActivity","收到MQTT通知拉取节目");
screenSaver.setNewData();
}else if(Constant.ACTION_RESTART_MY_PRESENTATION.equals(message.getCode())){
//开启双面屏
if(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE).equals("双面屏")){
LoggerUtil.e("ScreenSaverActivity","新节目通知双面屏");
if(presentation != null){
presentation.cancel();
}
showSecondByDisplayManager(ScreenSaverActivity.this);
}
}else if (Constant.NOVA_INIT.equals(message.getCode())) {
// init();
}else if(Constant.NOVA_REBOOT.equals(message.getCode())){
LoggerUtil.e("ScreenSaverActivity","诺瓦设备重启");
reboot();
}else if(Constant.NOVA_UPDATE_APP.equals(message.getCode())){
LoggerUtil.e("ScreenSaverActivity","诺瓦设备更新app");
updateApp(message.getData());
}else if(Constant.NOVA_SCREEN_SHOT.equals(message.getCode())){
LoggerUtil.e("ScreenSaverActivity","诺瓦设备截屏");
Screenshot(message.getData());
}else if(Constant.NOVA_SCREEN_POWER_ON.equals(message.getCode())){
LoggerUtil.e("ScreenSaverActivity","诺瓦设备开屏");
screenPower("OPEN");
}else if(Constant.NOVA_SCREEN_POWER_CLOSE.equals(message.getCode())){
LoggerUtil.e("ScreenSaverActivity","诺瓦设备关屏");
screenPower("CLOSE");
}
}
private boolean exitProgress() {
boolean exitResult = getIntent().getBooleanExtra(Constant.ACTION_EXIT, false);
if (exitResult) {
getIntent().removeExtra(Constant.ACTION_EXIT);
SignWayUtil.hideStatusBar(true);
QMWindowManager.removeMenuWindow();
sendExitPackageName();
stopService(new Intent(this, ContainerService.class));
stopService(new Intent(this, MessengerService.class));
stopService(new Intent(this, MQTTService.class));//停止Mqtt服务
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//栈内复用模式
startActivity(startMain);
System.exit(0);
// finish();
}
return exitResult;
}
//密码输入框
public void initPass(){
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 5);
KeyAdapter keyAdapter = new KeyAdapter(this);
binding.recycKey.setLayoutManager(gridLayoutManager);
binding.recycKey.setAdapter(keyAdapter);
keyAdapter.setOnitemClickLintener(new KeyAdapter.OnitemClick() {
@Override
public void onItemClick(String position) {
time = 0;
if(position.equals("清空")){
binding.tvPass.setText("");
}else if(position.equals("删除")){
String s = binding.tvPass.getText().toString();
if(s.length()>0){
binding.tvPass.setText( s.substring(0,s.length()-1));
}else {
binding.tvPass.setText("");
}
}else if(position.equals("取消")){
binding.layoutPass.setVisibility(View.GONE);
}else if(position.equals("确定")){
SimpleDateFormat format = new SimpleDateFormat("ddMM");
String pwd = format.format(System.currentTimeMillis());//当前日期当前月份
StringBuilder sb = new StringBuilder(pwd);
String whatDay4 = CalendarUtils.getWhatDay4(System.currentTimeMillis());
pwd = sb.insert(2, whatDay4).toString();//密码为日星期月6位数
String inputPWD = binding.tvPass.getText().toString().trim();//输入的密码
if (!pwd.equals(inputPWD)) {
ToastUtils.showToast("密码错误");
return;
}
binding.layoutPass.setVisibility(View.GONE);
ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).withBoolean(Constant.INPUT_PASSWORD, false).navigation();
}else {
binding.tvPass.setText(binding.tvPass.getText().toString()+position);
}
}
});
}
private boolean navigationDeviceInfo() {
String deviceCode = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE);
if (StringUtil.isEmpty(deviceCode)) {
ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).navigation();
return true;
}
return false;
}
public static void startAction(Context context) {
Intent intent = new Intent(context, ScreenSaverActivity.class);
context.startActivity(intent);
((BaseActivity) context).overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
/**
* 华贸led设备
* */
String sn;
public void initNova(){
String companyInfo = "{\"company\":\"NovaStar\",\"phone\":\"029-68216000\",\"email\":\"hr@novastar.tech\"}";
instance.nvSetDevLang("Java");
int i = instance.nvInit(getDiskCacheDir(MyApplication.getInstance()), companyInfo);
LoggerUtil.e("华贸led设备初始化","code"+i);
String ip="{\"ip\":\""+DeviceUtil.getEthIpAddress()+"\"}";
instance.nvSearchAppointIpAsync(ip, new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 搜索:", "code:"+code+",data:"+data);
if(code==0){
NovaDeviceBean novaDeviceBean = new Gson().fromJson(data, NovaDeviceBean.class);
sn = novaDeviceBean.getSn();
login();
}
}
});
}
//TB40 华贸SN2008@+ 江湾里123456
public void login(){
instance.nvLoginAsync("{\"sn\":\""+sn+"\",\"username\":\"admin\",\"rememberPwd\":1,\"password\":\""+TB40_password+"\",\"loginType\":0}",new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 登录1:", "code:"+code+"data:"+data);
}
});
instance.nvLoginAsync("{\"sn\":\""+sn+"\",\"username\":\"admin\",\"rememberPwd\":1,\"password\":\""+TB40_password+"\",\"loginType\":1}",new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 登录2:", "code:"+code+"data:"+data);
}
});
}
//TB40 重启
public void reboot(){
String data="{\"sn\":\""+sn+"\",\"taskInfo\":{\"type\":\"REBOOT\",\"source\":{\"type\":0,\"platform\":1},\"executionType\":\"IMMEDIATELY\",\"reason\":\"Just to test\",\"conditions\":[{\"cron\":[\"0 15 10 ? * *\",\"0 0 12 * * ?\"],\"enable\":true}]}}";
instance.nvSetReBootTaskAsync(data, new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 重启:", "code:"+code+",data:"+data);
}
});
}
//本地路径
public void updateApp(String url){
String data4="{\n" +
" \"sn\":\""+sn+"\",\n" +
" \"taskInfo\":{\n" +
" \"isLocal\":false,\n" +
" \"source\":{\n" +
" \"platform\":2,\n" +
" \"type\":0\n" +
" },\n" +
" \"tasks\":[\n" +
" {\n" +
" \"checkFeasibility\":false,\n" +
" \"executionType\":\"IMMEDIATELY\",\n" +
" \"packageType\":\"AUTO\",\n" +
" \"source\":\""+url+"\",\n" +
" \"startupAfterBoot\":false,\n" +
" \"startupAfterInstalled\":true,\n" +
" \"updateType\":\"UPDATE\",\n" +
" \"version\":\"\"\n" +
" }\n" +
" ],\n" +
" \"type\":\"UPDATE\"\n" +
" }\n" +
"}";
instance .nvStartUploadApkCoreAsync(data4, new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 更新:", "code:"+code+",data:"+data);
}
});
}
public void screenPower(String state){
String data="{\"sn\":\""+sn+"\",\"taskInfo\":{\"state\":\""+state+"\"}}";
instance.nvSetScreenPowerStateAsync(data, new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 开关屏:", "code:"+code+",data:"+data);
}
});
}
public void Screenshot(String time){
String data3="{\"sn\":\""+sn+"\",\"width\":1920,\"height\":1080,\"downLoadDirectoryPath\":\"/storage/emulated/0/\",\"pictureName\":\"screenShot.png\",\"pictureType\":1}";
instance.nvDownLoadScreenshotAsync(data3, new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 截屏:", "code:"+code+",data:"+data);
if(code==0){
uploadScreenShot("/storage/emulated/0/screenShot.png",DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE),time);
}
}
});
}
//上传截屏
public static void uploadScreenShot(String filePath,String code,String timestamp) {
File file = new File(filePath);
if (!file.exists()||code.isEmpty()) return;
RequestBody fileRequestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("code",code)
.addFormDataPart("timestamp",timestamp);
builder.addFormDataPart("file", file.getName(),fileRequestBody);
RequestBody requestBody = builder.build();
RetrofitUtil.getBaseService().upScreenShort(requestBody ).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
LoggerUtil.e("uploadScreenShot", new Gson().toJson(response.body()));
}
@Override
public void onFailure(Call call, Throwable t) {
LoggerUtil.e("uploadScreenShot", StringUtil.getThrowableStr(t));
}
});
}
public void logout(){
String data="{\"sn\":\""+sn+"\",\"loginType\":0}";
instance.nvLogoutAsync(data, new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
Log.e("QHT: 退出登录:", "code:"+code+",data:"+data);
}
});
}
public String getDiskCacheDir(Context context) {
// adb push 4.png /storage/emulated/0/Android/data/com.novastar.sdkdemo/files/demotest
String x = context.getExternalFilesDir("demotest").getAbsolutePath();
return x;
}
/**
* 双屏异显
* */
private Presentation presentation;
private void showSecondByDisplayManager(Context context) {
DisplayManager mDisplayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
Display[] displays = mDisplayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
if (displays != null) {
presentation = new MyPresentation(context, displays[displays.length - 1]);
presentation.show();
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/qianmu/container/activity/program/ViewMedia.java b/app/src/main/java/qianmu/container/activity/program/ViewMedia.java
new file mode 100644
index 0000000..704d1a8
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/program/ViewMedia.java
@@ -0,0 +1,173 @@
+package qianmu.container.activity.program;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+
+import org.greenrobot.eventbus.EventBus;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Executors;
+
+import qianmu.container.activity.ViewBase;
+import qianmu.container.app.Constant;
+import qianmu.container.data.ScreenSaverData;
+import qianmu.container.databinding.ViewMediaBinding;
+import qianmu.container.entity.MessageEvent;
+import qianmu.container.entity.ScreenSaver;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.StringUtil;
+
+@SuppressWarnings("All")
+public class ViewMedia extends ViewBase {
+
+ private static final int UPDATE_CONTENT = 0;
+ private static final String KEY_CONTENT = "key_content";
+ private static final String defaultInternetPath = "/localFiles/";
+
+ int count;
+ private static final String DIR_NAME = "信发素材";
+ private static final String LOCAL_DIR_PATH = StringUtil.strSplice(Constant.CACHE_PATH, "localFiles/");
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(@NonNull Message msg) {
+ super.handleMessage(msg);
+ if (msg.what == UPDATE_CONTENT) {
+ Bundle bundle = msg.getData();
+ if (bundle == null) return;
+ binding.content.setText(StringUtil.getString(bundle.getString(KEY_CONTENT)));
+ }
+ }
+ };
+
+ public ViewMedia(Context context, View view) {
+ super(context, view);
+ }
+
+ public void showMedia(String dirPath) {
+ binding.getRoot().setVisibility(View.VISIBLE);
+ Executors.newSingleThreadExecutor().execute(() -> {
+ deleteLodProgramData();
+ readProgramList(dirPath);
+ });
+ }
+
+ public void hideMedia() {
+ binding.getRoot().setVisibility(View.INVISIBLE);
+ }
+
+ //删除旧数据
+ private void deleteLodProgramData() {
+
+ //获取旧列表数据
+// List screenSaverList = ScreenSaverData.getScreenSaverList();
+// Map map = new HashMap();
+// for (ScreenSaver screenSaver : screenSaverList) {
+// if (screenSaver == null) continue;
+// String fileName = StringUtil.getString(screenSaver.getImg()).replace(defaultInternetPath, "");
+// if (StringUtil.isEmpty(fileName)) continue;
+// map.put(fileName, fileName);
+// }
+//
+// File file = new File(LOCAL_DIR_PATH);
+// if (!file.exists()) return;
+// File[] files = file.listFiles();
+// if (files == null || files.length == 0) return;
+// for (File temp : files) {
+// if (temp == null || !temp.exists() || map.get(temp.getName()) != null) continue;
+// temp.delete();
+// }
+ }
+
+ //读取U盘内的节目素材
+ private void readProgramList(String dirPath) {
+ updateContent("读取节目素材中\n请勿移动U盘", 0);
+ String parentPath = StringUtil.strSplice(dirPath, "/", DIR_NAME);
+ File file = new File(parentPath);
+ if (!file.exists()) {
+ updateContent("未读取到文件夹", 1000);
+ return;
+ }
+ File[] files = file.listFiles();
+ if (files == null || files.length == 0) {
+ updateContent("目标文件夹内无数据", 1000);
+ return;
+ }
+ copyProgramList(files);
+ }
+
+ //创建节目文件数据
+ private void copyProgramList(File[] files) {
+ updateContent("拷贝节目素材中\n请勿移动U盘", 1000);
+ for (File temp : files) {
+ if (temp == null) continue;
+ try {
+ String name = StringUtil.getString(temp.getName());
+ String localFilePath = StringUtil.strSplice(LOCAL_DIR_PATH, name);
+ File localFile = new File(localFilePath);
+ File parentFile = localFile.getParentFile();
+ if (!parentFile.exists()) parentFile.mkdirs();
+ if (localFile.exists()) localFile.delete();
+ localFile.createNewFile();
+ FileInputStream inputStream = new FileInputStream(temp);
+ FileOutputStream outputStream = new FileOutputStream(localFile, true);
+ byte[] buffer = new byte[400000];
+ while ((count = inputStream.read(buffer)) > 0) outputStream.write(buffer, 0, count);
+ outputStream.close();
+ inputStream.close();
+ } catch (Throwable t) {
+ LoggerUtil.e("copyFile", StringUtil.getThrowableStr(t));
+ }
+ }
+ createProgramData(files);
+ }
+
+ //创建节目文件数据
+ private void createProgramData(File[] files) {
+ updateContent("生成节目数据中\n请勿移动U盘", 1000);
+
+ List screenSaverList = new ArrayList<>();
+ for (File temp : files) {
+ if (temp == null) continue;
+ String name = StringUtil.getString(temp.getName());
+ int fileType = (name.toLowerCase().endsWith(".jpg") || name.toLowerCase().endsWith(".jpeg") || name.toLowerCase().endsWith(".png")) ? 1 : 2;
+ ScreenSaver screenSaver = new ScreenSaver();
+ screenSaver.setTime(15);//播放时长
+ screenSaver.setLaunchTime("1970-01-01T00:00:00");//上架时间
+ screenSaver.setExpiryDate("3000-01-01T00:00:00");//下架时间
+ screenSaver.setFileType(fileType);//文件类型
+ screenSaver.setImg(StringUtil.strSplice(defaultInternetPath, name));//图片地址
+ screenSaver.setProType(1);//屏保类型:(1:正常屏保 2:插播)
+ screenSaverList.add(screenSaver);
+ }
+ if (screenSaverList.size() == 0) {
+ updateContent("生成节目失败", 1000);
+ return;
+ }
+ ScreenSaverData.saveScreenSaverList(screenSaverList);
+ EventBus.getDefault().post(new MessageEvent(Constant.ACTION_MEDIA_UPDATE_COMPLETE));
+ updateContent("节目生成完毕\n请拔出U盘", 5000);
+ }
+
+ //发送消息更新提示信息
+ private void updateContent(String content, int delay) {
+ Bundle bundle = new Bundle();
+ bundle.putString(KEY_CONTENT, content);
+ Message message = new Message();
+ message.what = UPDATE_CONTENT;
+ message.setData(bundle);
+ if (handler != null) handler.sendMessageDelayed(message, delay);
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java b/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java
new file mode 100644
index 0000000..a5ee110
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java
@@ -0,0 +1,4430 @@
+package qianmu.container.activity.program;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.media.MediaMetadataRetriever;
+import android.media.MediaPlayer;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.TranslateAnimation;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.airbnb.lottie.LottieAnimationView;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
+import com.dl7.player.media.IjkPlayerView;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.loopj.android.http.AsyncHttpClient;
+import com.loopj.android.http.AsyncHttpResponseHandler;
+
+import org.greenrobot.eventbus.EventBus;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.ref.WeakReference;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import cz.msebera.android.httpclient.Header;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import qianmu.container.activity.H5.CoreService;
+import qianmu.container.activity.H5.UpdateFileActivity;
+import qianmu.container.activity.ViewBase;
+import qianmu.container.adapter.WeatherAdapter0;
+import qianmu.container.adapter.WeatherAdapter1;
+import qianmu.container.app.Constant;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.ScreenSaverData;
+import qianmu.container.databinding.ViewScreenSaverBinding;
+import qianmu.container.entity.FacilitiesBean;
+import qianmu.container.entity.InterFaceBean;
+import qianmu.container.entity.MapDataListBean;
+import qianmu.container.entity.MessageEvent;
+import qianmu.container.entity.NewProgramBean;
+import qianmu.container.entity.ResourceFileBean;
+import qianmu.container.entity.Resp;
+import qianmu.container.entity.ScreenSaver;
+import qianmu.container.entity.ShuipaiDataListBean;
+import qianmu.container.entity.TextBean;
+import qianmu.container.entity.WeatherBean;
+import qianmu.container.http.retrofit.RetrofitUtil;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.listener.QueryPreparedListener;
+import qianmu.container.service.ContainerService;
+import qianmu.container.service.MessengerService;
+import qianmu.container.socket.manager.LocSocCliManager;
+import qianmu.container.socket.manager.SocketServerManager;
+import qianmu.container.util.AesUtil;
+import qianmu.container.util.BitmapUtil;
+import qianmu.container.util.ColorUtil;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.FileUtil;
+import qianmu.container.util.GsonUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.TimeUtil;
+import qianmu.container.util.ViewUtil;
+import qianmu.container.view.AutoScrollTextView;
+import qianmu.container.view.CustomerVideoView;
+import qianmu.container.view.MarqueeTextView;
+import qianmu.container.view.MarqueeTextView2;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import tv.danmaku.ijk.media.player.ffmpeg.FFmpegApi;
+
+@SuppressWarnings("All")
+public class ViewScreenSaver extends ViewBase {
+
+ public static final int PLAY_PROGRAM = 0;
+ public static final int PLAY_PROGRAM_BY_INDEX = 1;
+
+ static final int TYPE_UPDATE_PROGRAMME = 100;//切换日程单
+ static final int TYPE_UPDATE_PROGRAM = 101;//切换节目单
+ static final int TYPE_UPDATE_VIDEO0 = 102;//视频更新
+ static final int TYPE_UPDATE_VIDEO1 = 103;//视频更新
+ static final int TYPE_UPDATE_IMAGE0 = 104;//图片更新
+ static final int TYPE_UPDATE_IMAGE1 = 105;//图片更新
+ static final int TYPE_UPDATE_IMAGE2 = 106;//图片更新
+ static final int TYPE_UPDATE_IMAGE3 = 107;//图片更新
+ static final int TYPE_UPDATE_IMAGE4 = 108;//图片更新
+ static final int TYPE_UPDATE_IMAGE5 = 109;//图片更新
+ static final int TYPE_UPDATE_IMAGE6 = 110;//图片更新
+ static final int TYPE_UPDATE_IMAGE7 = 111;//图片更新
+ static final int TYPE_UPDATE_IMAGE8 = 112;//图片更新
+ static final int TYPE_UPDATE_IMAGE9 = 113;//图片更新
+ static final int TYPE_UPDATE_IMAGE10 = 114;//图片更新
+ static final int TYPE_UPDATE_IMAGE11 = 115;//图片更新
+ static final int TYPE_UPDATE_IMAGE12 = 116;//图片更新
+ static final int TYPE_UPDATE_IMAGE13 = 117;//图片更新
+ static final int TYPE_UPDATE_IMAGE14 = 118;//图片更新
+ static final int TYPE_UPDATE_IMAGE15 = 119;//图片更新
+
+ static final int TYPE_UPDATE_TEXT4 = 124;//文本更新
+
+ static final int TYPE_UPDATE_TIME0 = 136;//时间更新
+ static final int TYPE_UPDATE_MEIDA0 = 137;//音频更新
+ static final int TYPE_UPDATE_WEATHER0 = 138;//天气更新
+ static final int TYPE_UPDATE_DATA = 139;//更新JSON
+ static final int TYPE_TIME_UPDATE_DATA = 140;//定时更新JSON
+ static final int TYPE_UPDATE_MACTH = 142;//匹配时间是否更新;
+ static final int TYPE_DOWNLOAD_FILE = 143;//下载文件
+ static final int TYPE_GET_NEXT_OTHER_IMG = 144;//下个节目的图片
+ static final int TYPE_STOP_VIDEO_PLAY0 = 145;//暂停播放
+ static final int TYPE_STOP_VIDEO_PLAY1 = 146;//暂停播放
+ static final int TYPE_HINT_IMG0 = 147;//隐藏额外图片
+ static final int TYPE_HINT_IMG1 = 148;//隐藏额外图片
+ static final int TYPE_HINT_IMG2 = 149;//隐藏额外图片
+ static final int TYPE_HINT_IMG3 = 150;//隐藏额外图片
+ static final int TYPE_HINT_IMG4 = 151;//隐藏额外图片
+ static final int TYPE_HINT_IMG5 = 152;//隐藏额外图片
+ static final int TYPE_HINT_IMG6 = 153;//隐藏额外图片
+ static final int TYPE_HINT_IMG7 = 154;//隐藏额外图片
+ static final int TYPE_HINT_IMG8 = 155;//隐藏额外图片
+ static final int TYPE_HINT_IMG9 = 156;//隐藏额外图片
+ static final int TYPE_HINT_IMG10 = 157;//隐藏额外图片
+ static final int TYPE_HINT_IMG11 = 158;//隐藏额外图片
+ static final int TYPE_HINT_IMG12 = 159;//隐藏额外图片
+ static final int TYPE_HINT_IMG13 = 160;//隐藏额外图片
+ static final int TYPE_HINT_IMG14 = 161;//隐藏额外图片
+ static final int TYPE_HINT_IMG15 = 162;//隐藏额外图片
+ static final int TYPE_CHANGE_PROGRAMME_STATE = 163;//切换日程状态
+
+ static final int TYPE_GET_NEXT_PROGRAMME_OTHER_IMG = 164;//获取下个日程的第一个节目的图片
+ static final int TYPE_CHANGE_IMG_SHOW0 = 165;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW1 = 166;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW2 = 167;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW3 = 168;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW4 = 169;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW5 = 170;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW6 = 171;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW7 = 172;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW8 = 173;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW9 = 174;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW10 = 175;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW11 = 176;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW12 = 177;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW13 = 178;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW14 = 179;//预加载下张图片
+ static final int TYPE_CHANGE_IMG_SHOW15 = 180;//预加载下张图片
+ static final int TYPE_START_PLAY_SVGA = 181;//开始播放svga动画
+ static final int TYPE_REFRESH_WEBVIEW0 = 182;//网页刷新
+ static final int TYPE_REFRESH_WEBVIEW1 = 183;//网页刷新
+ static final int TYPE_REFRESH_WEBVIEW2 = 184;//网页刷新
+ static final int TYPE_REFRESH_WEBVIEW3 = 185;//网页刷新
+ static final int TYPE_SHUIPAI = 186;//水牌
+ static final int TYPE_BRAND0 = 187;//品牌
+ static final int TYPE_BRAND1 = 188;//品牌
+ static final int TYPE_BRAND2 = 189;//品牌
+ static final int TYPE_BRAND3 = 190;//品牌
+ static final int TYPE_BRAND4 = 191;//品牌
+ static final int TYPE_BRAND5 = 192;//品牌
+ static final int TYPE_BRAND6 = 193;//品牌
+ static final int TYPE_BRAND7 = 194;//品牌
+ static final int TYPE_BRAND8 = 195;//品牌
+ static final int TYPE_BRAND9 = 196;//品牌
+ static final int TYPE_BRAND10 = 197;//品牌
+ static final int TYPE_BRAND11 = 198;//品牌
+ static final int TYPE_BRAND12 = 199;//品牌
+ static final int TYPE_BRAND13 = 200;//品牌
+ static final int TYPE_BRAND14 = 201;//品牌
+ static final int TYPE_BRAND15 = 202;//品牌
+ static final int TYPE_FACILITIES0= 203;//公共设施
+ static final int TYPE_FACILITIES1 = 204;//公共设施
+ static final int TYPE_FACILITIES2 = 205;//公共设施
+ static final int TYPE_FACILITIES3 = 206;//公共设施
+ static final int TYPE_FACILITIES4 = 207;//公共设施
+ static final int TYPE_FACILITIES5 = 208;//公共设施
+ static final int TYPE_FACILITIES6 = 209;//公共设施
+ static final int TYPE_FACILITIES7 = 210;//公共设施
+ static final int TYPE_FACILITIES8 = 211;//公共设施
+ static final int TYPE_FACILITIES9 = 212;//公共设施
+ static final int TYPE_FACILITIES10 = 213;//公共设施
+ static final int TYPE_FACILITIES11 = 214;//公共设施
+ static final int TYPE_FACILITIES12 = 215;//公共设施
+ static final int TYPE_FACILITIES13 = 216;//公共设施
+ static final int TYPE_FACILITIES14 = 217;//公共设施
+ static final int TYPE_FACILITIES15 = 218;//公共设施
+ static final int TYPE_POSITION0 = 219;//点位
+ static final int TYPE_POSITION1 = 220;//点位
+ static final int TYPE_POSITION2 = 221;//点位
+ static final int TYPE_POSITION3 = 222;//点位
+ static final int TYPE_POSITION4 = 223;//点位
+ static final int TYPE_POSITION5 = 224;//点位
+ static final int TYPE_POSITION6 = 225;//点位
+ static final int TYPE_POSITION7 = 226;//点位
+ static final int TYPE_POSITION8 = 227;//点位
+ static final int TYPE_POSITION9 = 228;//点位
+ static final int TYPE_POSITION10 = 229;//点位
+ static final int TYPE_POSITION11 = 230;//点位
+ static final int TYPE_POSITION12 = 231;//点位
+ static final int TYPE_POSITION13 = 232;//点位
+ static final int TYPE_POSITION14 = 233;//点位
+ static final int TYPE_POSITION15 = 234;//点位
+
+ static final int TYPE_JUDGE_START_PROGRAM = 235;//判断是否已经开始了节目播放
+ static final int TYPE_START_PLAY_PROGRAM = 236;//开始播放节目
+
+ static final int TYPE_MAP = 237;//地图组件
+ static final int TYPE_LOAD_MAP_DATA = 238;//地图组件数据
+
+ //开始播放下标
+ int videoPlayCount0 = 0;
+ int videoPlayCount1 = 0;
+ boolean isvideoPlay0 = false;
+ boolean isvideoPlay1 = false;
+
+ int imagePlayCount0 = 0;
+ int imagePlayCount1 = 0;
+ int imagePlayCount2 = 0;
+ int imagePlayCount3 = 0;
+ int imagePlayCount4 = 0;
+ int imagePlayCount5 = 0;
+ int imagePlayCount6 = 0;
+ int imagePlayCount7 = 0;
+ int imagePlayCount8 = 0;
+ int imagePlayCount9 = 0;
+ int imagePlayCount10 = 0;
+ int imagePlayCount11 = 0;
+ int imagePlayCount12 = 0;
+ int imagePlayCount13 = 0;
+ int imagePlayCount14 = 0;
+ int imagePlayCount15 = 0;
+
+ //品牌
+ int brandImageCount0 = 0;
+ int brandImageCount1 = 0;
+ int brandImageCount2 = 0;
+ int brandImageCount3 = 0;
+ int brandImageCount4 = 0;
+ int brandImageCount5 = 0;
+ int brandImageCount6 = 0;
+ int brandImageCount7 = 0;
+ int brandImageCount8 = 0;
+ int brandImageCount9 = 0;
+ int brandImageCount10 = 0;
+ int brandImageCount11 = 0;
+ int brandImageCount12 = 0;
+ int brandImageCount13 = 0;
+ int brandImageCount14 = 0;
+ int brandImageCount15 = 0;
+ //设施
+ int facilitiesImageCount0 = 0;
+ int facilitiesImageCount1 = 0;
+ int facilitiesImageCount2 = 0;
+ int facilitiesImageCount3 = 0;
+ int facilitiesImageCount4 = 0;
+ int facilitiesImageCount5 = 0;
+ int facilitiesImageCount6 = 0;
+ int facilitiesImageCount7 = 0;
+ int facilitiesImageCount8 = 0;
+ int facilitiesImageCount9 = 0;
+ int facilitiesImageCount10 = 0;
+ int facilitiesImageCount11 = 0;
+ int facilitiesImageCount12 = 0;
+ int facilitiesImageCount13 = 0;
+ int facilitiesImageCount14 = 0;
+ int facilitiesImageCount15 = 0;
+
+ //点位
+ int positionImageCount0 = 0;
+ int positionImageCount1 = 0;
+ int positionImageCount2 = 0;
+ int positionImageCount3 = 0;
+ int positionImageCount4 = 0;
+ int positionImageCount5 = 0;
+ int positionImageCount6 = 0;
+ int positionImageCount7 = 0;
+ int positionImageCount8 = 0;
+ int positionImageCount9 = 0;
+ int positionImageCount10 = 0;
+ int positionImageCount11 = 0;
+ int positionImageCount12 = 0;
+ int positionImageCount13 = 0;
+ int positionImageCount14 = 0;
+ int positionImageCount15 = 0;
+
+ int programme = 0;//日程
+ int program = 0;//节目
+
+ boolean imagePlay0 = true;
+ boolean imagePlay1 = true;
+ boolean imagePlay2 = true;
+ boolean imagePlay3 = true;
+ boolean imagePlay4 = true;
+ boolean imagePlay5 = true;
+ boolean imagePlay6 = true;
+ boolean imagePlay7 = true;
+ boolean imagePlay8 = true;
+ boolean imagePlay9 = true;
+ boolean imagePlay10 = true;
+ boolean imagePlay11 = true;
+ boolean imagePlay12 = true;
+ boolean imagePlay13 = true;
+ boolean imagePlay14 = true;
+ boolean imagePlay15 = true;
+
+ boolean firstImagePlay0 = true;
+ boolean firstImagePlay1 = true;
+ boolean firstImagePlay2 = true;
+ boolean firstImagePlay3 = true;
+ boolean firstImagePlay4 = true;
+ boolean firstImagePlay5 = true;
+ boolean firstImagePlay6 = true;
+ boolean firstImagePlay7 = true;
+ boolean firstImagePlay8 = true;
+ boolean firstImagePlay9 = true;
+ boolean firstImagePlay10 = true;
+ boolean firstImagePlay11 = true;
+ boolean firstImagePlay12 = true;
+ boolean firstImagePlay13 = true;
+ boolean firstImagePlay14 = true;
+ boolean firstImagePlay15 = true;
+
+ Map bigFiles = new HashMap<>(); //大后台文件
+ Map mapFiles = new HashMap<>(); //大后台文件
+
+ int downloadCount = 0;//下载数量
+ int mapDownloadCount = 0;//下载数量
+
+ long startImgTime=0;
+ long startVideoTime=0;
+ long startchangeProgram=0;//切换节目开始时间,防止多次切换
+
+ boolean isNextVideo = false;//下个节目是否有视频
+
+ boolean isChangProgramme = false;//日程切换
+
+
+ List data = new ArrayList<>();
+ int width;
+ int height;
+ View[] viewList;
+ int index = 0;
+
+ Map colorMap;
+
+ boolean isZeroPoint = false; //凌晨时间
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(@NonNull Message msg) {
+ super.handleMessage(msg);
+ switch (msg.what){
+
+ case TYPE_UPDATE_PROGRAMME://切换日程单
+
+ programme++;
+ Log.e("TAG","切换日程单"+programme);
+ program=0;
+
+ if(programme >= currentProgramBean.getSchedule().size()){
+ deleteView();
+ return;
+ }
+ NewProgramBean.schedule schedule = currentProgramBean.getSchedule().get(programme);
+ try {
+// String s = TimeUtil.stampToDate(System.currentTimeMillis());
+ long beginTimeLong = TimeUtil.stringToLong(currentProgramBean.getDate()+" "+schedule.getBeginTime(), "yyyy-MM-dd HH:mm:ss");//开始时间
+ if(System.currentTimeMillis() >= beginTimeLong){
+ program=0;
+ isChangProgramme = true;
+ handler.removeMessages(TYPE_UPDATE_PROGRAM);
+ handler.sendEmptyMessage(TYPE_UPDATE_PROGRAM);
+ handler.sendEmptyMessageDelayed(TYPE_CHANGE_PROGRAMME_STATE,5000);
+
+ }else {
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAM,beginTimeLong-System.currentTimeMillis());
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ //是否有下个日程
+ if(programme + 1 >= currentProgramBean.getSchedule().size()){
+ //没有日程清除所有
+
+ if(!schedule.getEndTime().equals("23:59:59")){
+ try {
+ //最后一个节目结束时间
+ long endTimeLong = TimeUtil.stringToLong(currentProgramBean.getDate()+" "+schedule.getEndTime(), "yyyy-MM-dd HH:mm:ss");//开始时间
+ sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAMME,endTimeLong - System.currentTimeMillis());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ return;
+ }
+
+ //下个日程
+ NewProgramBean.schedule nextSchedule = currentProgramBean.getSchedule().get(programme + 1);
+ try {
+ long beginTimeLong = TimeUtil.stringToLong(currentProgramBean.getDate()+ " "+ nextSchedule.getBeginTime(), "yyyy-MM-dd HH:mm:ss");//开始时间
+
+ handler.removeMessages(TYPE_UPDATE_PROGRAMME);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAMME,beginTimeLong - System.currentTimeMillis());
+ //提前10秒通知获取下个日程的第一个节目的图片
+// handler.sendEmptyMessageDelayed(TYPE_GET_NEXT_PROGRAMME_OTHER_IMG,beginTimeLong - (System.currentTimeMillis()+5000));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ break;
+
+ case TYPE_CHANGE_PROGRAMME_STATE:
+
+ isChangProgramme=false;
+
+ break;
+
+ case TYPE_UPDATE_PROGRAM://切换节目单
+ Log.e("TAG","切换节目单"+program);
+
+ try {
+
+ if(!isChangProgramme){
+ if(System.currentTimeMillis()-startchangeProgram<2000){
+ //防止重复调用导致图片不同步
+ return;
+ }else {
+ startchangeProgram = System.currentTimeMillis();
+ }
+ }
+
+ if(currentProgramBean==null){
+ return;
+ }
+ if(program >= currentProgramBean.getSchedule().get(programme).getPrograms().size()){
+ program=0;
+ }
+ if (Constant.isMain) {
+ Log.e("TAG","主设备向其他设备发送节目下标"+program);
+ SocketServerManager.sendMessageToClient(LocSocCliManager.NEXT_PROGRAM_INDEX, String.valueOf(program));
+ }
+
+ deleteView();
+
+ createView( currentProgramBean.getSchedule().get(programme), program);
+
+ }catch (Exception e){
+ LoggerUtil.e("TYPE_UPDATE_PROGRAM:" ,e.getMessage());
+ }
+
+ break;
+
+ case TYPE_GET_NEXT_OTHER_IMG:
+ //下个节目的图片
+ try {
+ if(currentProgramBean==null){
+ return;
+ }
+ if(currentProgramBean.getSchedule().size()<=0){
+ return;
+ }
+ if(currentProgramBean.getSchedule().get(programme)==null){
+ return;
+ }
+ NewProgramBean.programs nextprograms;
+ if(nextimg+1 < currentProgramBean.getSchedule().get(programme).getPrograms().size()){
+ nextprograms = currentProgramBean.getSchedule().get(programme).getPrograms().get(nextimg + 1);
+ }else {
+ nextprograms = currentProgramBean.getSchedule().get(programme).getPrograms().get(0);
+ }
+ int videoViewNumb= 0 ;
+ int otherImgCount = 0;
+ for(int i=0;i0){
+ //视频
+
+ if(components.getMaterials().get(0).getPreviewUrl()!=null && !components.getMaterials().get(0).getPreviewUrl().isEmpty()){
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getPreviewUrl(),binding.videoImg0);
+ }
+
+ }else {
+ //图片
+ if(new File(localPath).exists()){
+ Glide.with(context).load(localPath).into(binding.videoImg0);
+ }
+ }
+
+ if(!isNextVideo){
+ Log.e("TAG","预览设置下个视频");
+ isNextVideo=true;
+ if(components.getMaterials().get(0).getDuration()>0){
+ binding.videoView0.setVideoPath(localPath);
+ }else {
+ //图片
+ Drawable drawable = new BitmapDrawable(localPath);
+ binding.videoView0.setBackground(drawable);
+
+ }
+ }
+ }else {
+ //第二个videoview
+ if(components.getMaterials().get(0).getDuration()>0){
+ //视频
+
+ if(components.getMaterials().get(0).getPreviewUrl()!=null && !components.getMaterials().get(0).getPreviewUrl().isEmpty()){
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getPreviewUrl(),binding.videoImg1);
+ }
+// String[] b = localPath.split("\\.");
+// String imgUrl = b[0]+".jpg";
+// if(new File(imgUrl).exists()){
+// binding.videoImg1.setVisibility(View.GONE);
+// Glide.with(context).load(imgUrl).into(binding.videoImg1);
+// }
+ }else {
+ //图片
+ if(new File(localPath).exists()){
+ Glide.with(context).load(localPath).into(binding.videoImg1);
+ }
+ }
+
+ if(!isNextVideo){
+ Log.e("TAG","预览设置下个视频");
+ isNextVideo=true;
+ if(components.getMaterials().get(0).getDuration()>0){
+ binding.videoView0.setVideoPath(localPath);
+ }else {
+ //图片
+ Drawable drawable = new BitmapDrawable(localPath);
+ binding.videoView0.setBackground(drawable);
+
+ }
+ }
+ }
+
+ videoViewNumb++;
+ }
+ }
+ }catch (Exception e){
+ LoggerUtil.e("TYPE_GET_NEXT_OTHER_IMG报错",e.getMessage());
+ }
+
+ break;
+
+ case TYPE_GET_NEXT_PROGRAMME_OTHER_IMG://下个日程的第一个节目的图片
+
+ if(programme >= currentProgramBean.getSchedule().size()){
+ return;
+ }
+ try {
+ NewProgramBean.programs nextprogram = currentProgramBean.getSchedule().get(programme+1).getPrograms().get(0);
+ int otherImgCount2=0;
+ for(int i=0;i0){
+ sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW0,getRefreshWebTime(webComponents0));
+ onlineWebView0.loadUrl(webComponents0.getMaterials().get(0).getOuterChain());
+ }
+ break;
+
+ case TYPE_REFRESH_WEBVIEW1://网页刷新
+ if(getRefreshWebTime(webComponents1)>0){
+ sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW1,getRefreshWebTime(webComponents1));
+ onlineWebView1.loadUrl(webComponents1.getMaterials().get(0).getOuterChain());
+ }
+ break;
+
+ case TYPE_REFRESH_WEBVIEW2://网页刷新
+ if(getRefreshWebTime(webComponents2)>0){
+ sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW2,getRefreshWebTime(webComponents2));
+ onlineWebView2.loadUrl(webComponents2.getMaterials().get(0).getOuterChain());
+ }
+ break;
+
+ case TYPE_REFRESH_WEBVIEW3://网页刷新
+ if(getRefreshWebTime(webComponents3)>0){
+ sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW3,getRefreshWebTime(webComponents3));
+ onlineWebView3.loadUrl(webComponents3.getMaterials().get(0).getOuterChain());
+ }
+ break;
+
+ case TYPE_SHUIPAI://水牌
+ if(shuipaifacenumb == shuipaifacenumb_finish){
+ LoggerUtil.e("TYPE_SHUIPAI","接口请求完成,开始加载水牌");
+ spWebView.clearCache(true);
+ setWebView(spWebView,"http://127.0.0.1:8080/"+"?url="+Constant.getBaseAddress());
+
+ }else {
+ sendEmptyMessageDelayed(TYPE_SHUIPAI,2000);
+ }
+ break;
+
+ case TYPE_MAP://地图
+ LoggerUtil.e("TYPE_MAP","接口请求完成,开始加载地图");
+ if(mapWebView!=null){
+ mapWebView.clearCache(true);
+ setWebView(mapWebView,"http://127.0.0.1:8080/");
+ }
+ break;
+
+ case TYPE_UPDATE_TIME0://时间
+// Log.e("TAG","更新时间");
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_TIME0,60*1000);
+ chooseTime(timeComponents0.getConfig().getStyle());
+ break;
+
+ case TYPE_BRAND0:
+ brandImageCount0++;
+ updateBrandOrfacilities(brandImageCount0,0,brandImageViewList,TYPE_BRAND0);
+ break;
+ case TYPE_BRAND1:
+ brandImageCount1++;
+ updateBrandOrfacilities(brandImageCount1,1,brandImageViewList,TYPE_BRAND1);
+ break;
+ case TYPE_BRAND2:
+ brandImageCount2++;
+ updateBrandOrfacilities(brandImageCount2,2,brandImageViewList,TYPE_BRAND2);
+ break;
+ case TYPE_BRAND3:
+ brandImageCount3++;
+ updateBrandOrfacilities(brandImageCount3,3,brandImageViewList,TYPE_BRAND3);
+ break;
+ case TYPE_BRAND4:
+ brandImageCount4++;
+ updateBrandOrfacilities(brandImageCount4,4,brandImageViewList,TYPE_BRAND4);
+ break;
+ case TYPE_BRAND5:
+ brandImageCount5++;
+ updateBrandOrfacilities(brandImageCount5,5,brandImageViewList,TYPE_BRAND5);
+ break;
+ case TYPE_BRAND6:
+ brandImageCount6++;
+ updateBrandOrfacilities(brandImageCount6,6,brandImageViewList,TYPE_BRAND6);
+ break;
+ case TYPE_BRAND7:
+ brandImageCount7++;
+ updateBrandOrfacilities(brandImageCount7,7,brandImageViewList,TYPE_BRAND7);
+ break;
+ case TYPE_BRAND8:
+ brandImageCount8++;
+ updateBrandOrfacilities(brandImageCount8,8,brandImageViewList,TYPE_BRAND8);
+ break;
+ case TYPE_BRAND9:
+ brandImageCount9++;
+ updateBrandOrfacilities(brandImageCount9,9,brandImageViewList,TYPE_BRAND9);
+ break;
+ case TYPE_BRAND10:
+ brandImageCount10++;
+ updateBrandOrfacilities(brandImageCount10,10,brandImageViewList,TYPE_BRAND10);
+ break;
+ case TYPE_BRAND11:
+ brandImageCount11++;
+ updateBrandOrfacilities(brandImageCount11,11,brandImageViewList,TYPE_BRAND11);
+ break;
+
+ case TYPE_BRAND12:
+ brandImageCount12++;
+ updateBrandOrfacilities(brandImageCount12,12,brandImageViewList,TYPE_BRAND12);
+ break;
+ case TYPE_BRAND13:
+ brandImageCount13++;
+ updateBrandOrfacilities(brandImageCount13,13,brandImageViewList,TYPE_BRAND13);
+ break;
+ case TYPE_BRAND14:
+ brandImageCount14++;
+ updateBrandOrfacilities(brandImageCount14,14,brandImageViewList,TYPE_BRAND14);
+ break;
+ case TYPE_BRAND15:
+ brandImageCount15++;
+ updateBrandOrfacilities(brandImageCount15,15,brandImageViewList,TYPE_BRAND15);
+ break;
+ case TYPE_FACILITIES0:
+
+ facilitiesImageCount0++;
+ updateBrandOrfacilities(facilitiesImageCount0,0,facilitiesImageViewList,TYPE_FACILITIES0);
+ break;
+ case TYPE_FACILITIES1:
+
+ facilitiesImageCount1++;
+ updateBrandOrfacilities(facilitiesImageCount1,1,facilitiesImageViewList,TYPE_FACILITIES1);
+ break;
+ case TYPE_FACILITIES2:
+ facilitiesImageCount2++;
+ updateBrandOrfacilities(facilitiesImageCount2,2,facilitiesImageViewList,TYPE_FACILITIES2);
+ break;
+ case TYPE_FACILITIES3:
+ facilitiesImageCount3++;
+ updateBrandOrfacilities(facilitiesImageCount3,3,facilitiesImageViewList,TYPE_FACILITIES3);
+ break;
+ case TYPE_FACILITIES4:
+ facilitiesImageCount4++;
+ updateBrandOrfacilities(facilitiesImageCount4,4,facilitiesImageViewList,TYPE_FACILITIES4);
+ break;
+ case TYPE_FACILITIES5:
+ facilitiesImageCount5++;
+ updateBrandOrfacilities(facilitiesImageCount5,5,facilitiesImageViewList,TYPE_FACILITIES5);
+ break;
+ case TYPE_FACILITIES6:
+ facilitiesImageCount6++;
+ updateBrandOrfacilities(facilitiesImageCount6,6,facilitiesImageViewList,TYPE_FACILITIES6);
+ break;
+ case TYPE_FACILITIES7:
+ facilitiesImageCount7++;
+ updateBrandOrfacilities(facilitiesImageCount7,7,facilitiesImageViewList,TYPE_FACILITIES7);
+ break;
+ case TYPE_FACILITIES8:
+ facilitiesImageCount8++;
+ updateBrandOrfacilities(facilitiesImageCount8,8,facilitiesImageViewList,TYPE_FACILITIES8);
+ break;
+ case TYPE_FACILITIES9:
+ facilitiesImageCount9++;
+ updateBrandOrfacilities(facilitiesImageCount9,9,facilitiesImageViewList,TYPE_FACILITIES9);
+ break;
+ case TYPE_FACILITIES10:
+ facilitiesImageCount10++;
+ updateBrandOrfacilities(facilitiesImageCount10,10,facilitiesImageViewList,TYPE_FACILITIES10);
+ break;
+ case TYPE_FACILITIES11:
+ facilitiesImageCount11++;
+ updateBrandOrfacilities(facilitiesImageCount11,11,facilitiesImageViewList,TYPE_FACILITIES11);
+ break;
+ case TYPE_FACILITIES12:
+ facilitiesImageCount12++;
+ updateBrandOrfacilities(facilitiesImageCount12,12,facilitiesImageViewList,TYPE_FACILITIES12);
+ break;
+ case TYPE_FACILITIES13:
+ facilitiesImageCount13++;
+ updateBrandOrfacilities(facilitiesImageCount13,13,facilitiesImageViewList,TYPE_FACILITIES13);
+ break;
+ case TYPE_FACILITIES14:
+ facilitiesImageCount14++;
+ updateBrandOrfacilities(facilitiesImageCount14,14,facilitiesImageViewList,TYPE_FACILITIES14);
+ break;
+ case TYPE_FACILITIES15:
+ facilitiesImageCount15++;
+ updateBrandOrfacilities(facilitiesImageCount15,15,facilitiesImageViewList,TYPE_FACILITIES15);
+ break;
+
+ //点位
+ case TYPE_POSITION0:
+ positionImageCount0++;
+ updateBrandOrfacilities(positionImageCount0,0,positionImageViewList,TYPE_POSITION0);
+ break;
+ case TYPE_POSITION1:
+ positionImageCount1++;
+ updateBrandOrfacilities(positionImageCount1,1,positionImageViewList,TYPE_POSITION1);
+ break;
+ case TYPE_POSITION2:
+ positionImageCount2++;
+ updateBrandOrfacilities(positionImageCount2,2,positionImageViewList,TYPE_POSITION2);
+ break;
+ case TYPE_POSITION3:
+ positionImageCount3++;
+ updateBrandOrfacilities(positionImageCount3,3,positionImageViewList,TYPE_POSITION3);
+ break;
+ case TYPE_POSITION4:
+ positionImageCount4++;
+ updateBrandOrfacilities(positionImageCount4,4,positionImageViewList,TYPE_POSITION4);
+ break;
+ case TYPE_POSITION5:
+ positionImageCount5++;
+ updateBrandOrfacilities(positionImageCount5,5,positionImageViewList,TYPE_POSITION5);
+ break;
+ case TYPE_POSITION6:
+ positionImageCount6++;
+ updateBrandOrfacilities(positionImageCount6,6,positionImageViewList,TYPE_POSITION6);
+ break;
+ case TYPE_POSITION7:
+ positionImageCount7++;
+ updateBrandOrfacilities(positionImageCount7,7,positionImageViewList,TYPE_POSITION7);
+ break;
+ case TYPE_POSITION8:
+ positionImageCount8++;
+ updateBrandOrfacilities(positionImageCount8,8,positionImageViewList,TYPE_POSITION8);
+ break;
+ case TYPE_POSITION9:
+ positionImageCount9++;
+ updateBrandOrfacilities(positionImageCount9,9,positionImageViewList,TYPE_POSITION9);
+ break;
+ case TYPE_POSITION10:
+ positionImageCount10++;
+ updateBrandOrfacilities(positionImageCount10,10,positionImageViewList,TYPE_POSITION10);
+ break;
+ case TYPE_POSITION11:
+ positionImageCount11++;
+ updateBrandOrfacilities(positionImageCount11,11,positionImageViewList,TYPE_POSITION11);
+ break;
+ case TYPE_POSITION12:
+ positionImageCount12++;
+ updateBrandOrfacilities(positionImageCount12,12,positionImageViewList,TYPE_POSITION12);
+ break;
+ case TYPE_POSITION13:
+ positionImageCount13++;
+ updateBrandOrfacilities(positionImageCount13,13,positionImageViewList,TYPE_POSITION13);
+ break;
+ case TYPE_POSITION14:
+ positionImageCount14++;
+ updateBrandOrfacilities(positionImageCount14,14,positionImageViewList,TYPE_POSITION14);
+ break;
+ case TYPE_POSITION15:
+ positionImageCount15++;
+ updateBrandOrfacilities(positionImageCount15,15,positionImageViewList,TYPE_POSITION15);
+ break;
+ case TYPE_UPDATE_MACTH://匹配是否更新数据
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_MACTH,5*1000);
+
+ if(TimeUtil.stampTotime(System.currentTimeMillis()).equals("00:00") && isZeroPoint==false){
+ //第二天凌晨
+ isZeroPoint=true;
+ LoggerUtil.e("TYPE_UPDATE_MACTH","第二天凌晨更新日程");
+ sendEmptyMessage(TYPE_DOWNLOAD_FILE);
+ }else if(!TimeUtil.stampTotime(System.currentTimeMillis()).equals("00:00") && isZeroPoint==true){
+ isZeroPoint=false;
+ }
+
+ break;
+
+
+ case TYPE_TIME_UPDATE_DATA://定时获取数据,有变化则更新
+ handler.sendEmptyMessageDelayed(TYPE_TIME_UPDATE_DATA,600*1000);
+ getProgData(true);
+ break;
+
+ case TYPE_UPDATE_WEATHER0://天气更新
+ try {
+ String cityName = weatherComponents0.getConfig().getCityName();
+ if(!cityName.isEmpty()){
+ getWeather(cityName,null,null);
+ }else {
+ if(DeviceData.getDevice().getCity() !=null || !DeviceData.getDevice().getCity().isEmpty()){
+ getWeather(DeviceData.getDevice().getCity(),null,null);
+ }
+ };
+ }catch (Exception e){
+
+ }
+
+ break;
+
+ case TYPE_DOWNLOAD_FILE://下载文件
+
+ //下载完成
+ LoggerUtil.e("TAG","下载完成");
+ if(newdata!=null){
+ ScreenSaverData.saveScreenSaverList(newdata);
+ }
+ program=0;
+ programme=0;
+ isChangProgramme = false;//日程切换
+ startchangeProgram=0;
+ startImgTime=0;
+
+ //清除
+ deleteView();
+ clearOtherImg();
+ sendEmptyMessageDelayed(TYPE_START_PLAY_PROGRAM,1000);
+ break;
+
+ case TYPE_START_PLAY_PROGRAM://下载完成后,开始播放日程
+ try {
+ LoggerUtil.e("TYPE_START_PLAY_PROGRAM","开始播放节目");
+ startProgram();
+
+ List screenSaverList = ScreenSaverData.getScreenSaverList(ScreenSaverData.TYPE_SCREEN_SAVER);
+ String s = GsonUtil.getGson().toJson(screenSaverList);
+ NewProgramBean newProgramBean = screenSaverList.get(0);
+ if(s.contains("\"typeCode\":\"map\"") || s.contains("\"typeCode\":\"brand_list\"")){
+ //有地图组件
+ for(NewProgramBean.schedule schedule1 : newProgramBean.getSchedule()){
+ for(NewProgramBean.programs programs :schedule1.getPrograms()){
+ for(NewProgramBean.components components : programs.getComponents()){
+ ScreenSaverData. getGetMapData(context,StringUtil.strSplice(Constant.getBaseAddress(),"/api/msg/v1/client/getApi/",components.getCode()),null, null );
+ getApiFileResourceList(context,StringUtil.strSplice(Constant.getBaseAddress(),"/api/msg/v1/client/getFileResourceList/",components.getCode()),null, null );
+ break;
+ }
+ }
+ }
+ }
+
+ //没节目时候进入导视
+ String deviceType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE);
+ if (!deviceType.equals("信发") && !deviceType.equals("双面屏") && !ScreenSaverData.isProgramPlay2()) {
+ LoggerUtil.e("TYPE_START_PLAY_PROGRAM","没节目时候进入导视");
+ ARouter.getInstance().build(Constant.ROUTE_WEB_VIEW).withBoolean(Constant.KEY_LOAD_H5_URL, true).navigation();
+ }
+ EventBus.getDefault().post(new MessageEvent(Constant.ACTION_RESTART_MY_PRESENTATION));//通知双面屏跟新节目
+ }catch (Exception e){
+ LoggerUtil.e("startProgram报错",e.getMessage());
+ sendEmptyMessageDelayed(TYPE_DOWNLOAD_FILE,20*1000);
+ }
+ break;
+
+ case TYPE_JUDGE_START_PROGRAM://判断是否已经开始了节目播放(设备启动后避免节目不方便)
+ if(!isStartProgram){
+ LoggerUtil.e("启动40秒后判断是否在播节目","开机未启动播放节目,强制开始播放节目");
+ startProgram();
+ }else {
+ LoggerUtil.e("启动40秒后判断是否在播节目","有播放节目");
+ }
+
+ break;
+
+ case TYPE_LOAD_MAP_DATA://下载地图组件数据
+
+
+ break;
+
+ }
+ }
+ };
+
+ ViewScreenSaver(Context context, View view) {
+ super(context, view);
+ }
+
+ @Override
+ protected void initView() {
+ width = DeviceUtil.screenWidth((Activity) context);
+ height = DeviceUtil.screenHeight((Activity) context);
+
+ }
+
+ public void setData(List data) {
+ if (data == null) return;
+ this.data = data;
+ }
+
+ @Override
+ protected void setListener() {
+
+ }
+
+ public void showScreenSaver() {
+ if (binding.getRoot().getVisibility() == View.VISIBLE) return;
+ binding.getRoot().setVisibility(View.VISIBLE);
+ if (handler != null) handler.sendEmptyMessage(PLAY_PROGRAM);
+ }
+
+ public void hideScreenSaver() {
+ clearCache();
+ deleteView();
+// binding.getRoot().setVisibility(View.INVISIBLE);
+ if (handler != null) handler.removeMessages(PLAY_PROGRAM);
+ }
+
+ private void updateDataByZero(int index) {
+ if (index != 0) return;
+ setData(ScreenSaverData.getScreenSaverList(ScreenSaverData.TYPE_SCREEN_SAVER));
+ ScreenSaverData.getProgramList(null, null, null);
+ }
+
+ /**
+ * MQTT通知更新数据
+ * */
+ public void setNewData(){
+ handler.removeMessages(TYPE_TIME_UPDATE_DATA);
+ handler.sendEmptyMessage(TYPE_TIME_UPDATE_DATA);
+
+ }
+
+ /**
+ * 清除视频跟图片缓存(解决导视跳转屏保内存溢出问题)
+ * */
+ public void clearCache(){
+ if(binding.videoView0!=null){
+ binding.videoView0.stopPlayback();
+ binding.videoView0.setBackground(null);
+ }
+ if(binding.videoView1!=null){
+ binding.videoView1.stopPlayback();
+ binding.videoView1.setBackground(null);
+ }
+
+ if(binding.backgroundImage!=null){
+ binding.backgroundImage.setImageBitmap(null);
+ binding.backgroundImage.setImageDrawable(null);
+ }
+ Glide.get(context).clearMemory();
+ if(handler!=null){
+ handler.removeMessages(TYPE_TIME_UPDATE_DATA);
+ handler.removeMessages(TYPE_UPDATE_MACTH);
+ handler.removeMessages(TYPE_JUDGE_START_PROGRAM);
+ }
+
+ }
+ /**
+ * 销毁控件
+ * */
+ public void deleteView(){
+
+ try {
+ //恢复默认背景图
+ changeOldBackground();
+
+ isNextVideo = false;
+ isStartProgram = false;
+ //视频切换
+ videoPlayCount0 = 0;
+ videoPlayCount1 = 0;
+ startVideoTime=0;
+ isvideoPlay0=false;
+ isvideoPlay1=false;
+
+ //图片切换
+ imagePlayCount0 = 0;
+ imagePlayCount1 = 0;
+ imagePlayCount2 = 0;
+ imagePlayCount3 = 0;
+ imagePlayCount4 = 0;
+ imagePlayCount5 = 0;
+ imagePlayCount6 = 0;
+ imagePlayCount7 = 0;
+ imagePlayCount8 = 0;
+ imagePlayCount9 = 0;
+ imagePlayCount10 = 0;
+ imagePlayCount11 = 0;
+ imagePlayCount12 = 0;
+ imagePlayCount13 = 0;
+ imagePlayCount14 = 0;
+ imagePlayCount15 = 0;
+
+ imagePlay0 = true;
+ imagePlay1 = true;
+ imagePlay2 = true;
+ imagePlay3 = true;
+ imagePlay4 = true;
+ imagePlay5 = true;
+ imagePlay6 = true;
+ imagePlay7 = true;
+ imagePlay8 = true;
+ imagePlay9 = true;
+ imagePlay10 = true;
+ imagePlay11 = true;
+ imagePlay12 = true;
+ imagePlay13 = true;
+ imagePlay14 = true;
+ imagePlay15 = true;
+
+ firstImagePlay0 = true;
+ firstImagePlay1 = true;
+ firstImagePlay2 = true;
+ firstImagePlay3 = true;
+ firstImagePlay4 = true;
+ firstImagePlay5 = true;
+ firstImagePlay6 = true;
+ firstImagePlay7 = true;
+ firstImagePlay8 = true;
+ firstImagePlay9 = true;
+ firstImagePlay10 = true;
+ firstImagePlay11 = true;
+ firstImagePlay12 = true;
+ firstImagePlay13 = true;
+ firstImagePlay14 = true;
+ firstImagePlay15 = true;
+
+ //品牌
+ brandImageCount0 = 0;
+ brandImageCount1 = 0;
+ brandImageCount2 = 0;
+ brandImageCount3 = 0;
+ brandImageCount4 = 0;
+ brandImageCount5 = 0;
+ brandImageCount6 = 0;
+ brandImageCount7 = 0;
+ brandImageCount8 = 0;
+ brandImageCount9 = 0;
+ brandImageCount10 = 0;
+ brandImageCount11 = 0;
+ brandImageCount12 = 0;
+ brandImageCount13 = 0;
+ brandImageCount14 = 0;
+ brandImageCount15 = 0;
+ //设施
+ facilitiesImageCount0 = 0;
+ facilitiesImageCount1 = 0;
+ facilitiesImageCount2 = 0;
+ facilitiesImageCount3 = 0;
+ facilitiesImageCount4 = 0;
+ facilitiesImageCount5 = 0;
+ facilitiesImageCount6 = 0;
+ facilitiesImageCount7 = 0;
+ facilitiesImageCount8 = 0;
+ facilitiesImageCount9 = 0;
+ facilitiesImageCount10 = 0;
+ facilitiesImageCount11 = 0;
+ facilitiesImageCount12 = 0;
+ facilitiesImageCount13 = 0;
+ facilitiesImageCount14 = 0;
+ facilitiesImageCount15 = 0;
+ //点位
+ positionImageCount0 = 0;
+ positionImageCount1 = 0;
+ positionImageCount2 = 0;
+ positionImageCount3 = 0;
+ positionImageCount4 = 0;
+ positionImageCount5 = 0;
+ positionImageCount6 = 0;
+ positionImageCount7 = 0;
+ positionImageCount8 = 0;
+ positionImageCount9 = 0;
+ positionImageCount10 = 0;
+ positionImageCount11 = 0;
+ positionImageCount12 = 0;
+ positionImageCount13 = 0;
+ positionImageCount14 = 0;
+ positionImageCount15 = 0;
+
+ shuipaifacenumb = 0;
+ shuipaifacenumb_finish = 0;
+
+ if(sendRecordTimer!=null){
+ sendRecordTimer.cancel();
+ sendRecordTimer=null;
+ }
+
+ //时间布局显示
+ try {
+ binding.layoutTime0.getRoot().setVisibility(View.INVISIBLE);
+ binding.layoutTime1.getRoot().setVisibility(View.INVISIBLE);
+ binding.layoutTime2.getRoot().setVisibility(View.INVISIBLE);
+ binding.layoutTime3.getRoot().setVisibility(View.INVISIBLE);
+ binding.layoutTime4.getRoot().setVisibility(View.INVISIBLE);
+ }catch (Exception e){
+ LoggerUtil.e("deleteView()报错",e.getMessage());
+ }
+
+ if(handler!=null){
+ //清除节目更新
+ handler.removeMessages(TYPE_UPDATE_PROGRAM);
+ handler.removeMessages(TYPE_UPDATE_VIDEO0);
+ handler.removeMessages(TYPE_UPDATE_VIDEO1);
+ handler.removeMessages(TYPE_UPDATE_IMAGE0);
+ handler.removeMessages(TYPE_UPDATE_IMAGE1);
+ handler.removeMessages(TYPE_UPDATE_IMAGE2);
+ handler.removeMessages(TYPE_UPDATE_IMAGE3);
+ handler.removeMessages(TYPE_UPDATE_IMAGE4);
+ handler.removeMessages(TYPE_UPDATE_IMAGE5);
+ handler.removeMessages(TYPE_UPDATE_IMAGE6);
+ handler.removeMessages(TYPE_UPDATE_IMAGE7);
+ handler.removeMessages(TYPE_UPDATE_IMAGE8);
+ handler.removeMessages(TYPE_UPDATE_IMAGE9);
+ handler.removeMessages(TYPE_UPDATE_IMAGE10);
+ handler.removeMessages(TYPE_UPDATE_IMAGE11);
+ handler.removeMessages(TYPE_UPDATE_IMAGE12);
+ handler.removeMessages(TYPE_UPDATE_IMAGE13);
+ handler.removeMessages(TYPE_UPDATE_IMAGE14);
+ handler.removeMessages(TYPE_UPDATE_IMAGE15);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW0);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW1);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW2);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW3);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW4);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW5);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW6);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW7);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW8);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW9);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW10);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW11);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW12);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW13);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW14);
+ handler.removeMessages(TYPE_CHANGE_IMG_SHOW15);
+ handler.removeMessages(TYPE_UPDATE_TEXT4);
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY0);
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY1);
+ handler.removeMessages(TYPE_REFRESH_WEBVIEW0);
+ handler.removeMessages(TYPE_REFRESH_WEBVIEW1);
+ handler.removeMessages(TYPE_REFRESH_WEBVIEW2);
+ handler.removeMessages(TYPE_REFRESH_WEBVIEW3);
+ handler.removeMessages(TYPE_SHUIPAI);
+
+ handler.removeMessages(TYPE_BRAND0);
+ handler.removeMessages(TYPE_BRAND1);
+ handler.removeMessages(TYPE_BRAND2);
+ handler.removeMessages(TYPE_BRAND3);
+ handler.removeMessages(TYPE_BRAND4);
+ handler.removeMessages(TYPE_BRAND5);
+ handler.removeMessages(TYPE_BRAND6);
+ handler.removeMessages(TYPE_BRAND7);
+ handler.removeMessages(TYPE_BRAND8);
+ handler.removeMessages(TYPE_BRAND9);
+ handler.removeMessages(TYPE_BRAND10);
+ handler.removeMessages(TYPE_BRAND11);
+ handler.removeMessages(TYPE_BRAND12);
+ handler.removeMessages(TYPE_BRAND13);
+ handler.removeMessages(TYPE_BRAND14);
+ handler.removeMessages(TYPE_BRAND15);
+ handler.removeMessages(TYPE_FACILITIES0);
+ handler.removeMessages(TYPE_FACILITIES1);
+ handler.removeMessages(TYPE_FACILITIES2);
+ handler.removeMessages(TYPE_FACILITIES3);
+ handler.removeMessages(TYPE_FACILITIES4);
+ handler.removeMessages(TYPE_FACILITIES5);
+ handler.removeMessages(TYPE_FACILITIES6);
+ handler.removeMessages(TYPE_FACILITIES7);
+ handler.removeMessages(TYPE_FACILITIES8);
+ handler.removeMessages(TYPE_FACILITIES9);
+ handler.removeMessages(TYPE_FACILITIES10);
+ handler.removeMessages(TYPE_FACILITIES11);
+ handler.removeMessages(TYPE_FACILITIES12);
+ handler.removeMessages(TYPE_FACILITIES13);
+ handler.removeMessages(TYPE_FACILITIES14);
+ handler.removeMessages(TYPE_FACILITIES15);
+ handler.removeMessages(TYPE_POSITION0);
+ handler.removeMessages(TYPE_POSITION1);
+ handler.removeMessages(TYPE_POSITION2);
+ handler.removeMessages(TYPE_POSITION3);
+ handler.removeMessages(TYPE_POSITION4);
+ handler.removeMessages(TYPE_POSITION5);
+ handler.removeMessages(TYPE_POSITION6);
+ handler.removeMessages(TYPE_POSITION7);
+ handler.removeMessages(TYPE_POSITION8);
+ handler.removeMessages(TYPE_POSITION9);
+ handler.removeMessages(TYPE_POSITION10);
+ handler.removeMessages(TYPE_POSITION11);
+ handler.removeMessages(TYPE_POSITION12);
+ handler.removeMessages(TYPE_POSITION13);
+ handler.removeMessages(TYPE_POSITION14);
+ handler.removeMessages(TYPE_POSITION15);
+ handler.removeMessages(TYPE_MAP);
+ }
+
+ try {
+ //清除视频
+ binding.layoutVideo0.setVisibility(View.GONE);
+ if( binding.videoView0.isPlaying()){
+ binding.videoView0.pause();
+ }
+ binding.layoutVideo0.setBackground(null);
+
+ binding.videoView1.setZOrderOnTop(false);
+ binding.videoView1.setZOrderMediaOverlay(false);
+ binding.videoView1.setVisibility(View.GONE);
+ binding.layoutVideo1.setVisibility(View.GONE);
+
+ if( binding.videoView1.isPlaying()){
+ binding.videoView1.pause();
+ }
+
+ }catch (Exception e){
+ LoggerUtil.e("deleteView()清除视频报错",e.getMessage());
+ }
+ //清除图片组件
+ clearImgView();
+
+ if(textList!=null &&textList.size()>0){
+ textList.clear();
+ }
+ //清除文字
+ if(MarqueeTextList!=null&&MarqueeTextList.size()>0){
+ for(MarqueeTextView marqueeText : MarqueeTextList){
+ binding.relativeLayoutMax.removeView(marqueeText);
+ }
+ MarqueeTextList.clear();
+ }
+
+ if(textViewlist2!=null&&textViewlist2.size()>0){
+ for(TextView marqueeText : textViewlist2){
+ binding.relativeLayoutMax.removeView(marqueeText);
+ }
+ textViewlist2.clear();
+ }
+
+ if(AutoScrollTextList!=null&&AutoScrollTextList.size()>0){
+ for(AutoScrollTextView autoScrollText : AutoScrollTextList){
+ binding.relativeLayoutMax.removeView(autoScrollText);
+ }
+ AutoScrollTextList.clear();
+ }
+ if(webList!=null&& webList.size()>0){
+ for(WebView webView : webList){
+ binding.relativeLayoutMax.removeView(webView);
+ }
+ webList.clear();
+ }
+
+ //清除天气列表
+ if(recycle_weather0!=null){
+ binding.relativeLayoutMax.removeView(recycle_weather0);
+ }
+
+ //清除视频直播
+ if(livePlaylist!=null&&livePlaylist.size()>0){
+ for(IjkPlayerView ijkPlayerView :livePlaylist){
+ if(ijkPlayerView!=null){
+ ijkPlayerView.stop();
+ binding.relativeLayoutMax.removeView(ijkPlayerView);
+ }
+ }
+ livePlaylist.clear();
+ }
+
+ //回收音频资源
+ if (mediaPlayer0 != null && mediaPlayer0.isPlaying()) {
+ mediaPlayer0.stop();
+ mediaPlayer0.release();
+ mediaPlayer0 = null;
+ }
+
+ //清除json动图列表
+ if(ltGiftList.size()>0){
+ for( LottieAnimationView lottie : ltGiftList){
+ binding.relativeLayoutMax.removeView(lottie);
+ }
+ ltGiftList.clear();
+ }
+ //清除公共设施图片
+ if(imageViewlist!=null&&imageViewlist.size()>0){
+ for(ImageView imageView: imageViewlist){
+ binding.relativeLayoutMax.removeView(imageView);
+ }
+ imageViewlist.clear();
+ }
+
+ //清除text
+ if(textViewlist!=null&&textViewlist.size()>0){
+ for(MarqueeTextView2 textView: textViewlist){
+ binding.relativeLayoutMax.removeView(textView);
+ }
+ textViewlist.clear();
+ }
+
+ }catch (Exception e){
+ LoggerUtil.e("deleteView()报错",e.getMessage());
+
+ }
+ }
+
+ /**
+ * 清除图片组件
+ * */
+ public void clearImgView(){
+ try {
+ //清除图片
+ binding.layoutImg0.setVisibility(View.GONE);
+ binding.layoutImg1.setVisibility(View.GONE);
+ binding.layoutImg2.setVisibility(View.GONE);
+ binding.layoutImg3.setVisibility(View.GONE);
+ binding.layoutImg4.setVisibility(View.GONE);
+ binding.layoutImg5.setVisibility(View.GONE);
+ binding.layoutImg6.setVisibility(View.GONE);
+ binding.layoutImg7.setVisibility(View.GONE);
+ binding.layoutImg8.setVisibility(View.GONE);
+ binding.layoutImg9.setVisibility(View.GONE);
+ binding.layoutImg10.setVisibility(View.GONE);
+ binding.layoutImg11.setVisibility(View.GONE);
+ binding.layoutImg12.setVisibility(View.GONE);
+ binding.layoutImg13.setVisibility(View.GONE);
+ binding.layoutImg14.setVisibility(View.GONE);
+ binding.layoutImg15.setVisibility(View.GONE);
+ }catch (Exception e){
+ LoggerUtil.e("deleteView()清除图片报错",e.getMessage());
+ }
+
+ //设置背景颜色
+ try {
+ if(nomallImgList!=null&&nomallImgList.size()>0){
+ for(ImageView img :nomallImgList){
+ if(img!=null){
+ img.setImageBitmap(null);
+ }
+ }
+ nomallImgList.clear();
+ }
+ }catch (Exception e){
+ LoggerUtil.e("deleteView()图片报错",e.getMessage());
+ }
+ }
+
+ /**
+ * 清除额外的图片
+ * */
+ public void clearOtherImg(){
+ try{
+ if(binding.otherImg0!=null){
+ binding.otherImg0.setImageBitmap(null);
+ }
+ if(binding.otherImg1!=null){
+ binding.otherImg1.setImageBitmap(null);
+ }
+ if(binding.otherImg2!=null){
+ binding.otherImg2.setImageBitmap(null);
+ }
+ if(binding.otherImg3!=null){
+ binding.otherImg3.setImageBitmap(null);
+ }
+ if(binding.otherImg4!=null){
+ binding.otherImg4.setImageBitmap(null);
+ }
+ if(binding.otherImg5!=null){
+ binding.otherImg5.setImageBitmap(null);
+ }
+ if(binding.otherImg6!=null){
+ binding.otherImg6.setImageBitmap(null);
+ }
+ if(binding.otherImg7!=null){
+ binding.otherImg7.setImageBitmap(null);
+ }
+ if(binding.otherImg8!=null){
+ binding.otherImg8.setImageBitmap(null);
+ }
+ if(binding.otherImg9!=null){
+ binding.otherImg9.setImageBitmap(null);
+ }
+ if(binding.otherImg10!=null){
+ binding.otherImg10.setImageBitmap(null);
+ }
+ if(binding.otherImg11!=null){
+ binding.otherImg11.setImageBitmap(null);
+ }
+ if(binding.otherImg12!=null){
+ binding.otherImg12.setImageBitmap(null);
+ }
+ if(binding.otherImg13!=null){
+ binding.otherImg13.setImageBitmap(null);
+ }
+ if(binding.otherImg14!=null){
+ binding.otherImg14.setImageBitmap(null);
+ }
+ if(binding.otherImg15!=null){
+ binding.otherImg15.setImageBitmap(null);
+ }
+ }catch (Exception e){
+ LoggerUtil.e("clearOtherImg报错",e.getMessage());
+ }
+ }
+
+
+ String downloadaddress;
+ public void start(){
+ LoggerUtil.e("屏保页面调用","start");
+ //设置透明列表
+ colorMap = ColorUtil. getColorTransparent();
+ downloadaddress = DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP);
+
+ //4分后判断是是否开始播放了节目
+ handler.removeMessages(TYPE_JUDGE_START_PROGRAM);
+ handler.sendEmptyMessageDelayed(TYPE_JUDGE_START_PROGRAM,240*1000);
+ isStartProgram = false;
+
+ program=0;
+ programme=0;
+ isChangProgramme = false;//日程切换
+ //匹配时间
+ handler.removeMessages(TYPE_UPDATE_MACTH);
+ handler.sendEmptyMessage(TYPE_UPDATE_MACTH);
+
+ if(!ScreenSaverData.isProgramList()){
+ //30秒拉取数据
+ handler.removeMessages(TYPE_TIME_UPDATE_DATA);
+ handler.sendEmptyMessageDelayed(TYPE_TIME_UPDATE_DATA,30*1000);
+ }else {
+ //10分钟定时拉取数据
+ handler.removeMessages(TYPE_TIME_UPDATE_DATA);
+ handler.sendEmptyMessageDelayed(TYPE_TIME_UPDATE_DATA,600*1000);
+ }
+
+ deleteView();
+ //开始播放日程
+ startProgram();
+ }
+
+ /**
+ * 关闭
+ * */
+ public void stopScreen(){
+ if(binding.videoImg0!=null){
+ binding.videoImg0.setImageBitmap(null);
+ binding.videoImg0.setVisibility(View.GONE);
+ }
+
+ if(binding.videoImg1!=null){
+ binding.videoImg1.setImageBitmap(null);
+ binding.videoImg1.setVisibility(View.GONE);
+ }
+ }
+
+ //同屏视频
+ public void videoProgramByIndex(int index){
+ if(Constant.isMain || handler==null)return;
+ if(binding.layoutVideo0.getVisibility()==View.INVISIBLE || binding.layoutVideo0.getVisibility()==View.GONE){
+ return;
+ }
+ videoPlayCount0=index;
+ handler.removeMessages(TYPE_UPDATE_VIDEO0);
+ handler.sendEmptyMessage(TYPE_UPDATE_VIDEO0);
+ }
+
+ //同屏图片
+ public void imgProgramByIndex(int index){
+ if(Constant.isMain || handler==null)return;
+ if(binding.layoutImg0.getVisibility()==View.INVISIBLE || binding.layoutImg0.getVisibility() == View.GONE){
+ return;
+ }
+ imagePlayCount0 = index;
+ handler.removeMessages(TYPE_UPDATE_IMAGE0);
+ handler.sendEmptyMessage(TYPE_UPDATE_IMAGE0);
+ }
+
+ //同屏节目
+ public void programByIndex(int index){
+ if(Constant.isMain || handler==null)return;
+ program=index;
+ handler.sendEmptyMessage(TYPE_UPDATE_PROGRAM);
+ }
+ /**
+ * 从新获取信息发布
+ * istiming 定时获取
+ * */
+ NewProgramBean currentProgramBean;//当天的日程
+ List screenSaverList;
+
+// Object newdata;//用于素材下载完成后更新数据
+ String newdata;//用于素材下载完成后更新数据
+
+ public void getProgData(boolean istiming){
+
+ RetrofitUtil.getBaseService().getprogram(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE)).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+// LoggerUtil.e("queryScreenProgramList", "拉取节目数据:"+new Gson().toJson(response.body()));
+ if(response.body().getData()==null){
+ //防止后台返回null,而不播放节目
+ LoggerUtil.e("queryScreenProgramList报错", "后台返回body().getData()为null");
+ getProgramError();
+ return;
+ }
+
+ String decryptdataJson = AesUtil.decrypt((String.valueOf(response.body().getData())));
+ if(decryptdataJson.equals("解密失败")) {
+ ScreenSaverData.saveScreenNewSaverList(response.body().getData());
+
+ }else {
+ ScreenSaverData.saveScreenNewSaverList(decryptdataJson);
+ }
+
+// ScreenSaverData.saveScreenNewSaverList(response.body().getData());
+ String screenNewSaverListJson = ScreenSaverData.getScreenNewSaverListJson();
+ String screenSaverListJson = ScreenSaverData.getScreenSaverListJson();
+ List screenNewSaverList = ScreenSaverData.getScreenNewSaverList();
+// newdata = response.body().getData();
+ newdata = screenNewSaverListJson;
+
+ //定时获取 ,不同数据更新
+ if(istiming && screenNewSaverListJson.equals(screenSaverListJson)){
+ return;
+ }
+
+ if( screenNewSaverList == null || screenNewSaverList.size() <= 0){
+ ScreenSaverData.saveScreenSaverList(newdata);
+
+ return;
+ }
+
+ Log.e("TAG","数据不同,更新布局");
+ if(!istiming){
+ LoggerUtil.e("queryScreenProgramList", "第一次拉取节目开始下载播放");
+ }else {
+ LoggerUtil.e("queryScreenProgramList", "拉取数据,发现不同节目数据进行更新");
+ }
+ LoggerUtil.e("queryScreenProgramList", "新数据:"+screenNewSaverListJson);
+ bigFiles.clear();
+ downloadCount=0;
+ getImgUrl(screenNewSaverListJson,"/iotFile");
+ downloadFiles(true);
+
+ }else {
+ //防止后台返回null,而不播放节目
+ LoggerUtil.e("queryScreenProgramList报错", "后台返回body为null");
+ getProgramError();
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("queryScreenProgramList", "报错:"+StringUtil.getThrowableStr(t));
+ if(!istiming){
+ getProgramError();
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.saveError("queryScreenProgramList",t);
+ if(!istiming){
+ getProgramError();
+ }
+ }
+ });
+ }
+
+ /**
+ * 获取节目列表数据异常进行处理
+ * */
+ public void getProgramError(){
+ List newScreenSaverList = ScreenSaverData.getScreenSaverList(ScreenSaverData.TYPE_SCREEN_SAVER);
+ //判断获取2天的日程
+ if(newScreenSaverList == null || newScreenSaverList.size() == 0){
+ LoggerUtil.e("getProgramError", "获取到的节目数据为空");
+ return;
+ }
+ String s1 = new Gson().toJson(newScreenSaverList);
+ bigFiles.clear();
+ downloadCount=0;
+ getImgUrl(s1,"/iotFile");
+ downloadFiles(true);
+ }
+
+ /**
+ * 只拉取数据
+ * */
+ public void getProgData2(){
+
+ //获取节目数据
+ ScreenSaverData.getProgramList(null, new QueryFinishListener() {
+ @Override
+ public void onFinish() {
+ screenSaverList = ScreenSaverData.getScreenSaverList(ScreenSaverData.TYPE_SCREEN_SAVER);
+ //判断获取2天的日程
+ if(screenSaverList==null||screenSaverList.size()==0){
+ return;
+ }
+ String s1 = new Gson().toJson(screenSaverList);
+ bigFiles.clear();
+ downloadCount=0;
+ getImgUrl(s1,"/iotFile");
+ downloadFiles(false);
+ }
+ }, null);
+ }
+
+ /**
+ *
+ * 获取图片路径
+ * data 数据
+ * params 条件
+ * */
+ private void getImgUrl(String data,String params){
+
+ //判断是否字符串是否存在子字符,>0 存在的位置 -1不存在
+ while (data.indexOf(params)>0){
+ String substring1 = data.substring(data.indexOf(params));
+ int i1 = substring1.indexOf("\"");//通过最后双引号判断结束点
+ String substring2 = substring1.substring(0, i1);
+// Log.e("TAG","截取:"+substring2);
+ bigFiles.put(substring2,substring2);
+ data=substring1.substring(i1);
+ }
+ }
+
+ /**
+ * 开始批量下载图片
+ * ishandler 是否需要通知更新
+ */
+ public void downloadFiles(boolean ishandler) {
+ Log.e("TAG","文件下载的数量"+bigFiles.size()+",下载地址前缀"+DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP));
+ if(bigFiles.size()<=0){
+ if(ishandler) handler.sendEmptyMessage(TYPE_DOWNLOAD_FILE);
+ return;
+ }
+ for (String bigFile : bigFiles.keySet()) {
+
+ downloadFile(DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP), bigFile, ishandler);
+ }
+ }
+
+ private void downloadFile(String imgPath, final String address , boolean ishandler) {
+
+ File file = new File(StringUtil.strSplice(Constant.CACHE_PATH, address));
+ if (file.exists()) {
+ if(ishandler){
+ downloadCount++ ;
+ downCount();
+ }
+ return;
+ }
+
+ FileUtil.downloadFile2(StringUtil.strSplice(imgPath, address), StringUtil.strSplice(
+ Constant.CACHE_PATH, address), new QueryFinishListener() {
+ @Override
+ public void onFinish() {
+ if(ishandler){
+ downloadCount++ ;
+ downCount();
+ }
+ }
+ });
+ }
+
+ /**
+ * 下载完成度
+ * */
+ public void downCount(){
+ if(bigFiles.size() == downloadCount){
+ handler.removeMessages(TYPE_DOWNLOAD_FILE);
+ handler.sendEmptyMessage(TYPE_DOWNLOAD_FILE);
+ }
+ }
+
+
+ /**
+ * 开始播放节目
+ * */
+ boolean isStartProgram = false;//开始播放节目的状态(用于判断开机后一直不进这个方法显示)
+ public void startProgram(){
+
+ screenSaverList = ScreenSaverData.getScreenSaverList(ScreenSaverData.TYPE_SCREEN_SAVER);
+ //获取当天时间段
+ for(NewProgramBean newProgramBean: screenSaverList){
+ if(newProgramBean.date.equals(TimeUtil.stampToDate(System.currentTimeMillis()))){
+ currentProgramBean = newProgramBean;
+ }
+ }
+ if(currentProgramBean == null && screenSaverList.size()>0){
+ LoggerUtil.e("startProgram()","网络问题暂未获取当天节目单,使用前天节目");
+ //2天网络不通没有获取最新的节目单,沿用前一天日程。
+ currentProgramBean = screenSaverList.get(screenSaverList.size() - 1);
+ String s = TimeUtil.stampToDate(System.currentTimeMillis());
+ currentProgramBean.setDate(s);
+ }
+
+ if(currentProgramBean!=null&&!currentProgramBean.getDate().equals(TimeUtil.stampToDate(System.currentTimeMillis()))){
+ LoggerUtil.e("startProgram()","多天网络问题,使用前天数据");
+ String s = TimeUtil.stampToDate(System.currentTimeMillis());
+ currentProgramBean.setDate(s);
+ }
+
+ if(currentProgramBean==null || currentProgramBean.getSchedule().size()<=0){
+ LoggerUtil.e("startProgram()","当前日程里没有节目");
+ return;
+ }
+
+ //当天里面的日程
+ for(int i=0;i beginTimeLong && currentlong < endTimeLong ){
+ //正在进行中
+ programme= i ;
+ handler.removeMessages(TYPE_UPDATE_PROGRAM);
+ handler.removeMessages(TYPE_UPDATE_PROGRAMME);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAMME,endTimeLong-System.currentTimeMillis());
+ //提前5秒获取下个日程的第一个节目的图片
+// handler.sendEmptyMessageDelayed(TYPE_GET_NEXT_PROGRAMME_OTHER_IMG,endTimeLong-(System.currentTimeMillis()+5000));
+ //开始播放进行中的日程
+ if(schedule==null){
+ return;
+ }
+ program=0;
+ createView( schedule , program);
+
+ break;
+
+ }else if( currentlong < beginTimeLong ){
+ //未开始
+ programme= -1 ;
+ handler.removeMessages(TYPE_UPDATE_PROGRAM);
+ Log.e("TAG","未开始,等待");
+ handler.removeMessages(TYPE_UPDATE_PROGRAMME);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAMME,beginTimeLong - System.currentTimeMillis());
+
+ break;
+ }
+
+ } catch (Exception e) {
+ LoggerUtil.e("startProgram","报错:"+e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * 创建控件
+ * */
+ Timer sendRecordTimer;//发送节目单记录定时器
+ int nextimg = 0;
+ public void createView( NewProgramBean.schedule schedule ,int position){
+
+ Log.e("TAG","节目切换"+position);
+ nextimg= position ;
+ NewProgramBean.programs programme = schedule.getPrograms().get(position);
+
+ String[] split = programme.getDuration().split(":");
+ int duration = Integer.parseInt(split[0])*3600*1000+Integer.parseInt(split[1])*60*1000+Integer.parseInt(split[2])*1000;
+ //只有一个的时候不会从新创建
+ if(schedule.getPrograms().size()>1){
+ //节目更新
+ if(Constant.isSecondary && !Constant.isMain){
+ //从设备不主动更新节目
+ Log.e("TAG","从设备不主动更新");
+ }else {
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_PROGRAM,duration);
+ program++;
+ }
+ ScreenSaverData.uploadPlayRecord(programme.getCode(),programme.getDuration(),null,null);
+ }else {
+ //需要定时发送上传节目单记录
+ try {
+ sendRecordTimer = new Timer();
+ sendRecordTimer.schedule(new TimerTask() {
+ @Override
+ public void run() {
+ ScreenSaverData.uploadPlayRecord(programme.getCode(),programme.getDuration(),null,null);
+ }
+ },duration);
+ }catch (Exception e){
+
+ }
+ }
+
+ if(programme.getComponents()==null || programme.getComponents().size()<=0){
+ LoggerUtil.e("TAG","获取到的节目控件列表为0");
+ }else {
+ int videoCount=0;
+ int imageCount=0;
+ int weatherCount=0;
+ int textCount=0;
+ int clockCount=0;
+ int onlineWebCount=0;
+ int facilitiesCount=0;
+ int brandCount=0;
+ int positionCount=0;
+ for(int i=0;i imageViewlist = new ArrayList<>();
+ List facilitiesImageViewList = new ArrayList<>();//设施图片控件
+ List brandImageViewList = new ArrayList<>();//设施图片控件
+ List positionImageViewList = new ArrayList<>();//设施图片控件
+
+ public void initSignImageLogo(NewProgramBean.subComponents subComponents , String type , int position){
+ if(subComponents.getMaterials()==null||subComponents.getMaterials().size()<=0){
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(subComponents.getWidth(), subComponents.getHeight());
+ lParams.setMargins(subComponents.getOffsetX(), subComponents.getOffsetY(), 0, 0);
+ ImageView imageView0 = new ImageView(context);
+ binding.relativeLayoutMax.addView(imageView0, lParams);
+ imageViewlist.add(imageView0);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, subComponents.getMaterials().get(0).getFileUrl() ,imageView0);
+ FacilitiesBean facilitiesBean = new FacilitiesBean();
+ facilitiesBean.setImageView(imageView0);
+ facilitiesBean.setType("image");
+ facilitiesBean.setPosition(position);
+ facilitiesBean.setTransitionPeriod(subComponents.getConfig().getTransitionPeriod());
+ facilitiesBean.setMaterials(subComponents.getMaterials());
+ if(type.equals("brand")){
+ brandImageViewList.add(facilitiesBean);
+ }else if(type.equals("facility")){
+ facilitiesImageViewList.add(facilitiesBean);
+ }else if(type.equals("position")){
+ positionImageViewList.add(facilitiesBean);
+ }
+ }
+
+
+ /**
+ * 公共设施json动图
+ * */
+ private void initSignImageLogoLottie(NewProgramBean.subComponents subComponents , String type , int position){
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(subComponents.getWidth(), subComponents.getHeight());
+ lParams.setMargins(subComponents.getOffsetX(), subComponents.getOffsetY(), 0, 0);
+
+ String localPath2 = StringUtil.strSplice(Constant.CACHE_PATH, subComponents.getMaterials().get(0).getFileUrl());
+
+ String url=FileUtil.readLocalJsonForStorage(context,localPath2);
+ LottieAnimationView ltGift = new LottieAnimationView(context);
+ binding.relativeLayoutMax.addView(ltGift, lParams);
+ ltGift.setAnimationFromJson(url);
+ ltGift.loop(true);
+ ltGift.playAnimation();
+ ltGiftList.add(ltGift);
+ FacilitiesBean facilitiesBean = new FacilitiesBean();
+ facilitiesBean.setLottieView(ltGift);
+ facilitiesBean.setType("lottie");
+ facilitiesBean.setPosition(position);
+ facilitiesBean.setTransitionPeriod(subComponents.getConfig().getTransitionPeriod());
+ facilitiesBean.setMaterials(subComponents.getMaterials());
+ if(type.equals("brand")){
+ brandImageViewList.add(facilitiesBean);
+ }else if(type.equals("facility")){
+ facilitiesImageViewList.add(facilitiesBean);
+ }else if(type.equals("position")){
+ positionImageViewList.add(facilitiesBean);
+ }
+ }
+
+ /**
+ * 更新设施跟品牌轮播
+ * */
+ private void updateBrandOrfacilities(int count, int position ,List list, int handlerType){
+ for(FacilitiesBean facilitiesBean: list){
+ if(facilitiesBean.getPosition()==position){
+ if(facilitiesBean.getType().equals("image")){
+ //图片
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, facilitiesBean.getMaterials().get(count % facilitiesBean.getMaterials().size()).getFileUrl(),facilitiesBean.getImageView());
+ }else if(facilitiesBean.getType().equals("lottie")){
+ //动图
+ String localPath2 = StringUtil.strSplice(Constant.CACHE_PATH, facilitiesBean.getMaterials().get(count % facilitiesBean.getMaterials().size()).getFileUrl());
+ String url=FileUtil.readLocalJsonForStorage(context,localPath2);
+ LottieAnimationView ltGift = facilitiesBean.getLottieView();
+ ltGift.setAnimationFromJson(url);
+ ltGift.loop(true);
+ ltGift.playAnimation();
+ }else if(facilitiesBean.getType().equals("text")){
+ //文字
+ facilitiesBean.getTextView().setTextinfo(facilitiesBean.getMaterials().get(count % facilitiesBean.getMaterials().size()).getText());
+ facilitiesBean.getTextView().setVisibility(View.INVISIBLE);
+ facilitiesBean.getTextView().setVisibility(View.VISIBLE);
+ }else if(facilitiesBean.getType().equals("text2")){
+ //文字
+ facilitiesBean.getTextView2().setText(facilitiesBean.getMaterials().get(count % facilitiesBean.getMaterials().size()).getText());
+ }
+ handler.removeMessages(handlerType);
+ handler.sendEmptyMessageDelayed(handlerType,facilitiesBean.getTransitionPeriod()*1000);
+ }
+ }
+ }
+
+ /**
+ * 判断给handler定时轮播
+ * */
+ private void sendhandlerBrandOrFacilities(NewProgramBean.components components,String type, int position){
+ if(type.equals("brand")&& components.getSubComponents().get(0).getMaterials().size()>1){
+ //品牌
+ if(position==0){
+ handler.removeMessages(TYPE_BRAND0);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND0,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==1){
+ handler.removeMessages(TYPE_BRAND1);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND1,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==2){
+ handler.removeMessages(TYPE_BRAND2);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND2,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==3){
+ handler.removeMessages(TYPE_BRAND3);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND3,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==4){
+ handler.removeMessages(TYPE_BRAND4);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND4,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==5){
+ handler.removeMessages(TYPE_BRAND5);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND5,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==6){
+ handler.removeMessages(TYPE_BRAND6);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND6,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==7){
+ handler.removeMessages(TYPE_BRAND7);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND7,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==8){
+ handler.removeMessages(TYPE_BRAND8);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND8,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==9){
+ handler.removeMessages(TYPE_BRAND9);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND9,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==10){
+ handler.removeMessages(TYPE_BRAND10);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND10,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==11){
+ handler.removeMessages(TYPE_BRAND11);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND11,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==12){
+ handler.removeMessages(TYPE_BRAND12);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND12,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==13){
+ handler.removeMessages(TYPE_BRAND13);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND13,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==14){
+ handler.removeMessages(TYPE_BRAND14);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND14,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==15){
+ handler.removeMessages(TYPE_BRAND15);
+ handler.sendEmptyMessageDelayed(TYPE_BRAND15,components.getConfig().getTransitionPeriod()*1000);
+ }
+ }else if(type.equals("facility")&& components.getSubComponents().get(0).getMaterials().size()>1){
+ //设施
+ if(position==0){
+ handler.removeMessages(TYPE_FACILITIES0);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES0,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==1){
+ handler.removeMessages(TYPE_FACILITIES1);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES1,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==2){
+ handler.removeMessages(TYPE_FACILITIES2);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES2,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==3){
+ handler.removeMessages(TYPE_FACILITIES3);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES3,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==4){
+ handler.removeMessages(TYPE_FACILITIES4);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES4,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==5){
+ handler.removeMessages(TYPE_FACILITIES5);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES5,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==6){
+ handler.removeMessages(TYPE_FACILITIES6);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES6,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==7){
+ handler.removeMessages(TYPE_FACILITIES7);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES7,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==8){
+ handler.removeMessages(TYPE_FACILITIES8);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES8,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==9){
+ handler.removeMessages(TYPE_FACILITIES9);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES9,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==10){
+ handler.removeMessages(TYPE_FACILITIES10);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES10,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==11){
+ handler.removeMessages(TYPE_FACILITIES11);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES11,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==12){
+ handler.removeMessages(TYPE_FACILITIES12);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES12,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==13){
+ handler.removeMessages(TYPE_FACILITIES13);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES13,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==14){
+ handler.removeMessages(TYPE_FACILITIES14);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES14,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==15){
+ handler.removeMessages(TYPE_FACILITIES15);
+ handler.sendEmptyMessageDelayed(TYPE_FACILITIES15,components.getConfig().getTransitionPeriod()*1000);
+ }
+ }else if(type.equals("position")&& components.getSubComponents().get(0).getMaterials().size()>1){
+ //设施
+ if(position==0){
+ handler.removeMessages(TYPE_POSITION0);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION0,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==1){
+ handler.removeMessages(TYPE_POSITION1);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION1,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==2){
+ handler.removeMessages(TYPE_POSITION2);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION2,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==3){
+ handler.removeMessages(TYPE_POSITION3);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION3,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==4){
+ handler.removeMessages(TYPE_POSITION4);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION4,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==5){
+ handler.removeMessages(TYPE_POSITION5);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION5,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==6){
+ handler.removeMessages(TYPE_POSITION6);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION6,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==7){
+ handler.removeMessages(TYPE_POSITION7);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION7,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==8){
+ handler.removeMessages(TYPE_POSITION8);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION8,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==9){
+ handler.removeMessages(TYPE_POSITION9);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION9,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==10){
+ handler.removeMessages(TYPE_POSITION10);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION10,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==11){
+ handler.removeMessages(TYPE_POSITION11);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION11,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==12){
+ handler.removeMessages(TYPE_POSITION12);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION12,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==13){
+ handler.removeMessages(TYPE_POSITION13);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION13,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==14){
+ handler.removeMessages(TYPE_POSITION14);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION14,components.getConfig().getTransitionPeriod()*1000);
+ }else if(position==15){
+ handler.removeMessages(TYPE_POSITION15);
+ handler.sendEmptyMessageDelayed(TYPE_POSITION15,components.getConfig().getTransitionPeriod()*1000);
+ }
+ }
+ }
+ /**
+ * 公共设施
+ * */
+ List textViewlist = new ArrayList<>();
+ List textViewlist2 = new ArrayList<>();
+ public void initSignTxtDistance(NewProgramBean.subComponents subComponents,String type, int position){
+ if(subComponents.getMaterials()==null||subComponents.getMaterials().size()<=0){
+ return;
+ }
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(subComponents.getWidth(), subComponents.getHeight());
+ lParams.setMargins(subComponents.getOffsetX(), subComponents.getOffsetY(), 0, 0);
+// TextView textView = new TextView(this);
+
+
+
+ if(subComponents.getConfig().getAnimation().equals("固定")){
+
+ TextView textView = new TextView(context);
+ if(subComponents.getConfig().getFontStyle().equals("正常")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ }else if(subComponents.getConfig().getFontStyle().equals("加粗")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ }else if(subComponents.getConfig().getFontStyle().equals("斜体")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
+ }else if(subComponents.getConfig().getFontStyle().equals("加粗、斜体")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD_ITALIC));
+ }
+
+ binding.relativeLayoutMax.addView(textView, lParams);
+ textViewlist2.add(textView);
+ ViewGroup.LayoutParams layoutParams = textView.getLayoutParams();
+
+ layoutParams.width=subComponents.getWidth();
+ layoutParams.height=subComponents.getHeight();
+ textView.setLayoutParams(layoutParams);
+
+ FacilitiesBean facilitiesBean = new FacilitiesBean();
+ facilitiesBean.setTextView2( textView );
+ facilitiesBean.setPosition(position);
+ facilitiesBean.setType("text2");
+ facilitiesBean.setTransitionPeriod(subComponents.getConfig().getTransitionPeriod());
+ facilitiesBean.setMaterials(subComponents.getMaterials());
+ if(type.equals("brand")){
+ brandImageViewList.add(facilitiesBean);
+ }else if(type.equals("facility")){
+ facilitiesImageViewList.add(facilitiesBean);
+ }else if(type.equals("position")){
+ positionImageViewList.add(facilitiesBean);
+ }
+
+ if(subComponents.getConfig().getBackgroundColor()!=null&&!subComponents.getConfig().getBackgroundColor().isEmpty()){
+ String backgroundColor = subComponents.getConfig().getBackgroundColor();
+ String backgroundOpacity = (String)colorMap.get(subComponents.getConfig().getBackgroundOpacity());
+ backgroundColor="#"+backgroundOpacity+backgroundColor.substring(1);
+ textView.setBackgroundColor(Color.parseColor(backgroundColor));
+ }
+
+ textView.setTextColor(Color.parseColor(subComponents.getConfig().getFontColor()));
+ textView.setText(subComponents.getMaterials().get(0).getText());
+ textView.setTextSize(subComponents.getConfig().getFontSize());
+ textView.setGravity(Gravity.CENTER_VERTICAL);
+
+ }else {
+ MarqueeTextView2 textView =new MarqueeTextView2(context);
+
+ if(subComponents.getConfig().getFontStyle().equals("正常")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ }else if(subComponents.getConfig().getFontStyle().equals("加粗")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ }else if(subComponents.getConfig().getFontStyle().equals("斜体")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
+ }else if(subComponents.getConfig().getFontStyle().equals("加粗、斜体")){
+ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD_ITALIC));
+ }
+
+ binding.relativeLayoutMax.addView(textView, lParams);
+ textViewlist2.add(textView);
+ ViewGroup.LayoutParams layoutParams = textView.getLayoutParams();
+
+ layoutParams.width=subComponents.getWidth();
+ layoutParams.height=subComponents.getHeight();
+ textView.setLayoutParams(layoutParams);
+
+ FacilitiesBean facilitiesBean = new FacilitiesBean();
+ facilitiesBean.setTextView( textView );
+ facilitiesBean.setPosition(position);
+ facilitiesBean.setType("text");
+ facilitiesBean.setTransitionPeriod(subComponents.getConfig().getTransitionPeriod());
+ facilitiesBean.setMaterials(subComponents.getMaterials());
+
+ if(type.equals("brand")){
+ brandImageViewList.add(facilitiesBean);
+ }else if(type.equals("facility")){
+ facilitiesImageViewList.add(facilitiesBean);
+ }else if(type.equals("position")){
+ positionImageViewList.add(facilitiesBean);
+ }
+
+ if(subComponents.getConfig().getBackgroundColor()!=null&&!subComponents.getConfig().getBackgroundColor().isEmpty()){
+ String backgroundColor = subComponents.getConfig().getBackgroundColor();
+ String backgroundOpacity = (String)colorMap.get(subComponents.getConfig().getBackgroundOpacity());
+ backgroundColor="#"+backgroundOpacity+backgroundColor.substring(1);
+ textView.setBackgroundColor(Color.parseColor(backgroundColor));
+ }
+
+ textView.setTextColor(Color.parseColor(subComponents.getConfig().getFontColor()));
+ textView.setTextSize(subComponents.getConfig().getFontSize());
+ textView.setTextinfo(subComponents.getMaterials().get(0).getText(),subComponents.getConfig().getFontSize(),subComponents.getWidth(), subComponents.getHeight());
+ textView.setGravity(Gravity.CENTER_VERTICAL);
+
+ }
+
+// if(components.getConfig().getAnimation().equals("自动")){
+// textView.setMarqueeRepeatLimit(3);
+// textView.setFocusable(true);
+// textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
+// textView.setSingleLine();
+// textView.setFocusableInTouchMode(true);
+// textView.setHorizontallyScrolling(true);
+// textView.setSelected(true);
+// }
+ }
+
+ /**
+ * 添加视频
+ * */
+ NewProgramBean.components videoComponents0;
+ NewProgramBean.components videoComponents1;
+ RelativeLayout videoLayout0;
+ LinearLayout videoLayout1;
+ public void addVideoView( NewProgramBean.components components,int position){
+
+ //如果没有内容不创建
+ if(components == null ||components.getMaterials()==null || components.getMaterials().size() <= 0){
+ return;
+ }
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+ if(position==0){
+
+ isNextVideo = true;
+ isvideoPlay0 = true;
+ binding.videoView0.pause();
+ binding.videoView0.seekTo(0);
+ binding.layoutVideo0.setX(components.getOffsetX());
+ binding.layoutVideo0.setY(components.getOffsetY());
+ ViewGroup.LayoutParams layoutParams = binding.layoutVideo0.getLayoutParams();
+ layoutParams.height = components.getHeight();
+ layoutParams.width = components.getWidth();
+ videoComponents0 = components;
+
+ binding.layoutVideo0.setVisibility(View.VISIBLE);
+ binding.layoutVideo0.bringToFront();
+ handler.sendEmptyMessage(TYPE_UPDATE_VIDEO0);
+
+ binding.videoImg0.setVisibility(View.VISIBLE);
+
+ binding.videoView0.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+ @Override
+ public void onPrepared(MediaPlayer mp) {
+ mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
+ @Override
+ public boolean onInfo(MediaPlayer mp, int what, int extra) {
+ if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START)
+ binding.videoView0.setBackgroundColor(Color.TRANSPARENT);
+ binding.videoImg0.setVisibility(View.GONE);
+ return true;
+
+ }
+ });
+
+ //视频准备完毕,可以进行播放
+ Log.e("TAG","准备好视频,开始播放");
+ if( isvideoPlay0 ){
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY0);
+ if(components.getConfig().isPlayAudio()){
+ mp.setVolume(15f,15f);
+ }else {
+ mp.setVolume(0f,0f);
+ }
+ mp.start();
+
+ }else{
+ Log.e("TAG","预加载播放暂停");
+ mp.start();
+ mp.setVolume(0f,0f);
+ //暂停播放
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY0);
+ handler.sendEmptyMessageDelayed(TYPE_STOP_VIDEO_PLAY0,5000);
+ }
+ }
+ });
+ // 视频播放完成时的操作
+ binding.videoView0.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ // 视频播放完成时的操作
+ handler.sendEmptyMessage(TYPE_UPDATE_VIDEO0);
+ }
+ });
+
+ //视频播放发送错误时回调
+ binding.videoView0.setOnErrorListener(new MediaPlayer.OnErrorListener() {
+ @Override
+ public boolean onError(MediaPlayer mp, int what, int extra) {
+ //视频播放失败
+ return true;
+ }
+ });
+
+ }else if(position==1){
+
+ isvideoPlay1 = true;
+ binding.layoutVideo1.setX(components.getOffsetX());
+ binding.layoutVideo1.setY(components.getOffsetY());
+ ViewGroup.LayoutParams layoutParams = binding.layoutVideo1.getLayoutParams();
+ layoutParams.height = components.getHeight();
+ layoutParams.width = components.getWidth();
+ binding.videoView1.pause();
+ binding.videoView1.seekTo(0);
+ binding.videoView1.setZOrderOnTop(true);
+ binding.videoView1.setZOrderMediaOverlay(true);
+ binding.videoView1.setVisibility(View.VISIBLE);
+ binding.layoutVideo1.setVisibility(View.VISIBLE);
+ binding.layoutVideo1.bringToFront();
+
+ binding.videoImg1.setVisibility(View.VISIBLE);
+
+ videoComponents1 = components;
+ handler.sendEmptyMessage(TYPE_UPDATE_VIDEO1);
+
+ binding.videoView1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+ @Override
+ public void onPrepared(MediaPlayer mp) {
+ mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
+ @Override
+ public boolean onInfo(MediaPlayer mp, int what, int extra) {
+ if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START)
+ binding.videoView1.setBackgroundColor(Color.TRANSPARENT);
+ binding.videoImg1.setVisibility(View.GONE);
+ return true;
+
+ }
+ });
+
+ //视频准备完毕,可以进行播放
+ Log.e("TAG","准备好视频,开始播放");
+ if( isvideoPlay1 ){
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY1);
+ if(components.getConfig().isPlayAudio()){
+ mp.setVolume(15f,15f);
+ }else {
+ mp.setVolume(0f,0f);
+ }
+ mp.start();
+
+ }else {
+ Log.e("TAG","预加载播放暂停");
+ mp.start();
+ mp.setVolume(0f,0f);
+ //暂停播放
+ handler.removeMessages(TYPE_STOP_VIDEO_PLAY1);
+ handler.sendEmptyMessageDelayed(TYPE_STOP_VIDEO_PLAY1,5000);
+ }
+ }
+ });
+
+ // 视频播放完成时的操作
+ binding.videoView1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ // 视频播放完成时的操作
+ handler.sendEmptyMessage(TYPE_UPDATE_VIDEO1);
+ }
+ });
+ //视频播放发送错误时回调
+ binding.videoView1.setOnErrorListener(new MediaPlayer.OnErrorListener() {
+ @Override
+ public boolean onError(MediaPlayer mp, int what, int extra) {
+ //视频播放失败
+
+ return true;
+ }
+ });
+ }
+ }
+
+ /**
+ * 更新video
+ * */
+ public void updateVideo(NewProgramBean.components videoComponents, int videoPlayCount, CustomerVideoView videoView, int TYPE_UPDATE_VIDE){
+ if(videoComponents.getMaterials()==null||videoComponents.getMaterials().size()==0){
+ return;
+ }
+ if(videoPlayCount>=videoComponents.getMaterials().size()){
+ videoPlayCount=0;
+ if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO0){
+ videoPlayCount0 = 0;
+ }else if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO1){
+ videoPlayCount1 = 0 ;
+ }
+ }
+
+ NewProgramBean.materials materials0 = videoComponents.getMaterials().get(videoPlayCount);
+ String localPath = StringUtil.strSplice(Constant.CACHE_PATH, materials0.getFileUrl());
+ if (!new File(localPath).exists()) {
+ FileUtil.downloadFile(downloadaddress + materials0.getFileUrl(), localPath);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_VIDE,2000);
+ return;
+ }
+
+ if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO0){
+ videoPlayCount0++;
+ }else if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO1){
+ videoPlayCount1++;
+ }
+
+ if(materials0.getDuration()>0){
+ //视频
+ videoView.setVideoPath(localPath);
+
+ }else {
+ //图片
+ if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO0){
+ ViewGroup.LayoutParams layoutParams = binding.videoView0.getLayoutParams();
+ layoutParams.height = videoComponents.getHeight();
+ layoutParams.width = videoComponents.getWidth();
+ binding.videoView0.setLayoutParams(layoutParams);
+ binding.videoImg0.setVisibility(View.GONE);
+
+ }else if(TYPE_UPDATE_VIDE==TYPE_UPDATE_VIDEO1){
+ ViewGroup.LayoutParams layoutParams = binding.videoView1.getLayoutParams();
+ layoutParams.height = videoComponents.getHeight();
+ layoutParams.width = videoComponents.getWidth();
+ binding.videoView1.setLayoutParams(layoutParams);
+ binding.videoImg1.setVisibility(View.GONE);
+ }
+
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_VIDE,videoComponents.getConfig().getTransitionPeriod()*1000);
+ Drawable drawable = new BitmapDrawable(localPath);
+ videoView.setBackground(drawable);
+// Bitmap bitmap = BitmapFactory.decodeFile(localPath);
+// WeakReference weakBitmap = new WeakReference<>(bitmap);
+// videoView.setBackground(new BitmapDrawable(context.getResources(), weakBitmap.get()));
+ }
+
+ }
+
+ /**
+ * 初始化直播
+ * */
+ List livePlaylist = new ArrayList();
+ public void initLivePlayer(NewProgramBean.components components) {
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+ IjkPlayerView ijkPlayerView = new IjkPlayerView(context);
+ livePlaylist.add(ijkPlayerView);
+ binding.relativeLayoutMax.addView(ijkPlayerView, lParams);
+ ijkPlayerView.init();
+ String url = components.getMaterials().get(0).getOuterChain();
+ Log.e("TAG","直播路径"+url);
+ ijkPlayerView.setVideoPath(url);
+ ijkPlayerView.start();
+ if(!components.getConfig().isPlayAudio()){
+ ijkPlayerView.setVolume(1);
+ }else {
+ ijkPlayerView.setVolume(15);
+ }
+ }
+
+ /**
+ * 添加音频
+ *
+ * @param path*/
+ MediaPlayer mediaPlayer0;
+ NewProgramBean.components mediaComponents0;
+ public void initMediaPlayer(NewProgramBean.components components){
+ if(!components.getConfig().isPlayAudio() || components.getMaterials()==null || components.getMaterials().size()==0){
+ return;
+ }
+ mediaComponents0 = components;
+ mediaPlayer0 = new MediaPlayer();
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_MEIDA0,100);
+ }
+
+ /**
+ * 更新音频文件
+ * */
+ public void updateMedia(NewProgramBean.components components){
+
+ NewProgramBean.materials materials0 = mediaComponents0.getMaterials().get(0);
+
+ String localPath = StringUtil.strSplice(Constant.CACHE_PATH, materials0.getFileUrl());
+
+ if (!new File(localPath).exists()) {
+ FileUtil.downloadFile(downloadaddress + materials0.getFileUrl(), localPath);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_MEIDA0,2000);
+ return;
+ }
+
+ Log.e("TAG","有音频播放");
+ try {
+ File file = new File(localPath);
+ mediaPlayer0.setDataSource(file.getPath()); //指定音频文件的路径
+ mediaPlayer0.prepareAsync(); //让MediaPlayer进入到准备状态
+ mediaPlayer0.setLooping(true);//自动循环
+ //装载音频完成监听
+ mediaPlayer0.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+ @Override
+ public void onPrepared(MediaPlayer mp) {
+ // 装载完毕回调
+ mediaPlayer0.start();
+ }
+ });
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 添加图片
+ * */
+ NewProgramBean.components imageComponents0;
+ NewProgramBean.components imageComponents1;
+ NewProgramBean.components imageComponents2;
+ NewProgramBean.components imageComponents3;
+ NewProgramBean.components imageComponents4;
+ NewProgramBean.components imageComponents5;
+ NewProgramBean.components imageComponents6;
+ NewProgramBean.components imageComponents7;
+ NewProgramBean.components imageComponents8;
+ NewProgramBean.components imageComponents9;
+ NewProgramBean.components imageComponents10;
+ NewProgramBean.components imageComponents11;
+ NewProgramBean.components imageComponents12;
+ NewProgramBean.components imageComponents13;
+ NewProgramBean.components imageComponents14;
+ NewProgramBean.components imageComponents15;
+
+ List nomallImgList =new ArrayList<>();//普通图片
+ public void initImage(NewProgramBean.components components,int position){
+ //如果没有内容不创建
+ if(components==null ||components.getMaterials()==null|| components.getMaterials().size()<=0){
+ LoggerUtil.e("initImage添加图片","认为没有内容");
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+ if(position==0){
+
+ buildImgView( binding.layoutImg0,components,TYPE_HINT_IMG0,TYPE_UPDATE_IMAGE0);
+ imageComponents0 = components;
+ buildImgView( binding.otherImg0,components,TYPE_HINT_IMG0,TYPE_UPDATE_IMAGE0);
+ nomallImgList.add(binding.img0);
+ nomallImgList.add(binding.img0Behind);
+ }else if(position==1){
+
+ buildImgView( binding.layoutImg1,components,TYPE_HINT_IMG1,TYPE_UPDATE_IMAGE1);
+ imageComponents1 = components;
+ buildImgView( binding.otherImg1,components,TYPE_HINT_IMG1,TYPE_UPDATE_IMAGE1);
+ nomallImgList.add(binding.img1);
+ nomallImgList.add(binding.img1Behind);
+ }else if(position==2){
+
+ buildImgView( binding.layoutImg2,components, TYPE_HINT_IMG2, TYPE_UPDATE_IMAGE2);
+ imageComponents2 = components;
+ buildImgView( binding.otherImg2,components, TYPE_HINT_IMG2, TYPE_UPDATE_IMAGE2);
+ nomallImgList.add(binding.img2);
+ nomallImgList.add(binding.img2Behind);
+ }else if(position==3){
+
+ buildImgView( binding.layoutImg3, components, TYPE_HINT_IMG3, TYPE_UPDATE_IMAGE3);
+ imageComponents3 = components;
+ buildImgView( binding.otherImg3,components, TYPE_HINT_IMG3, TYPE_UPDATE_IMAGE3);
+ nomallImgList.add(binding.img3);
+ nomallImgList.add(binding.img3Behind);
+ }else if(position==4){
+
+ buildImgView( binding.layoutImg4, components, TYPE_HINT_IMG4, TYPE_UPDATE_IMAGE4);
+ imageComponents4 = components;
+ nomallImgList.add(binding.img4);
+ nomallImgList.add(binding.img4Behind);
+ }else if(position==5){
+
+ buildImgView( binding.layoutImg5, components, TYPE_HINT_IMG5, TYPE_UPDATE_IMAGE5);
+ imageComponents5 = components;
+ nomallImgList.add(binding.img5);
+ nomallImgList.add(binding.img5Behind);
+ }else if(position==6){
+
+ buildImgView( binding.layoutImg6, components, TYPE_HINT_IMG6, TYPE_UPDATE_IMAGE6);
+ imageComponents6 = components;
+ nomallImgList.add(binding.img6);
+ nomallImgList.add(binding.img6Behind);
+ }else if(position==7){
+
+ buildImgView( binding.layoutImg7, components, TYPE_HINT_IMG7, TYPE_UPDATE_IMAGE7);
+ imageComponents7 = components;
+ nomallImgList.add(binding.img7);
+ nomallImgList.add(binding.img7Behind);
+ }else if(position==8){
+
+ buildImgView( binding.layoutImg8, components, TYPE_HINT_IMG8, TYPE_UPDATE_IMAGE8);
+ imageComponents8 = components;
+ nomallImgList.add(binding.img8);
+ nomallImgList.add(binding.img8Behind);
+ }else if(position==9){
+
+ buildImgView( binding.layoutImg9, components, TYPE_HINT_IMG9, TYPE_UPDATE_IMAGE9);
+ imageComponents9 = components;
+ nomallImgList.add(binding.img9);
+ nomallImgList.add(binding.img9Behind);
+ }else if(position==10){
+
+ buildImgView( binding.layoutImg10, components, TYPE_HINT_IMG10, TYPE_UPDATE_IMAGE10);
+ imageComponents10 = components;
+ nomallImgList.add(binding.img10);
+ nomallImgList.add(binding.img10Behind);
+ }else if(position==11){
+
+ buildImgView( binding.layoutImg11, components, TYPE_HINT_IMG11, TYPE_UPDATE_IMAGE11);
+ imageComponents11 = components;
+ nomallImgList.add(binding.img11);
+ nomallImgList.add(binding.img11Behind);
+ }else if(position==12){
+
+ buildImgView( binding.layoutImg12, components, TYPE_HINT_IMG12, TYPE_UPDATE_IMAGE12);
+ imageComponents12 = components;
+ nomallImgList.add(binding.img12);
+ nomallImgList.add(binding.img12Behind);
+ }else if(position==13){
+
+ buildImgView( binding.layoutImg13, components, TYPE_HINT_IMG13, TYPE_UPDATE_IMAGE13);
+ imageComponents13 = components;
+ nomallImgList.add(binding.img13);
+ nomallImgList.add(binding.img13Behind);
+ }else if(position==14){
+
+ buildImgView( binding.layoutImg14, components, TYPE_HINT_IMG14, TYPE_UPDATE_IMAGE14);
+ imageComponents14 = components;
+ nomallImgList.add(binding.img14);
+ nomallImgList.add(binding.img14Behind);
+ }else if(position==15){
+
+ buildImgView( binding.layoutImg15, components, TYPE_HINT_IMG15, TYPE_UPDATE_IMAGE15);
+ imageComponents15 = components;
+ nomallImgList.add(binding.img15);
+ nomallImgList.add(binding.img15Behind);
+ }
+ }
+
+ /**
+ * 创建更图片位置
+ * */
+ public void buildImgView(View view, NewProgramBean.components components,int TYPE_HINT_IMG , int TYPE_UPDATE_IMAGE){
+ view.setVisibility(View.VISIBLE);
+ view.bringToFront();
+ changeViewLocation(view,components);
+ handler.removeMessages(TYPE_HINT_IMG);
+ handler.sendEmptyMessageDelayed(TYPE_HINT_IMG,3000);
+ handler.removeMessages(TYPE_UPDATE_IMAGE);
+ handler.sendEmptyMessage(TYPE_UPDATE_IMAGE);
+ }
+
+ /**
+ * 创建更改控件位置
+ * */
+ public void changeViewLocation(View view, NewProgramBean.components components){
+ view.setX(components.getOffsetX());
+ view.setY(components.getOffsetY());
+ ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
+ layoutParams.width = components.getWidth();
+ layoutParams.height = components.getHeight();
+ }
+
+ /**
+ * 添加额外的图片(节目跟节目切换)
+ * */
+
+ public void addOtherImg( NewProgramBean.components components, int otherImgCount){
+ if(components.getMaterials()==null||components.getMaterials().size()<=0){
+ return;
+ }
+ if(otherImgCount==0){
+ Log.e("TAG","隐藏额外图片");
+ binding.otherImg0.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg0,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg0);
+
+ }else if(otherImgCount==1){
+ binding.otherImg1.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg1,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg1);
+
+ }else if(otherImgCount==2){
+ binding.otherImg2.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg2,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg2);
+
+ }else if(otherImgCount==3){
+ binding.otherImg3.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg3,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg3);
+ }else if(otherImgCount==4){
+ binding.otherImg4.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg4,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg4);
+ }else if(otherImgCount==5){
+ binding.otherImg5.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg5,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg5);
+ }else if(otherImgCount==6){
+ binding.otherImg6.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg6,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg6);
+ }else if(otherImgCount==7){
+ binding.otherImg7.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg7,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg7);
+ }else if(otherImgCount==8){
+ binding.otherImg8.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg8,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg8);
+ }else if(otherImgCount==9){
+ binding.otherImg9.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg9,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg9);
+ }else if(otherImgCount==10){
+ binding.otherImg10.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg10,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg10);
+ }else if(otherImgCount==11){
+ binding.otherImg11.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg11,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg11);
+ }else if(otherImgCount==12){
+ binding.otherImg12.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg12,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg12);
+ }else if(otherImgCount==13){
+ binding.otherImg13.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg13,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg13);
+ }else if(otherImgCount==14){
+ binding.otherImg14.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg14,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg14);
+ }else if(otherImgCount==15){
+ binding.otherImg15.setVisibility(View.INVISIBLE);
+ changeViewLocation( binding.otherImg15,components);
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl(), binding.otherImg15);
+ }
+ }
+
+ /**
+ * 更新替换图片
+ * */
+
+ public void updateImage( NewProgramBean.components imageComponents0, int imagePlayCount, boolean firstImagePlay , boolean imagePlay ,ImageView imageView0 ,ImageView imageView00 ,int TYPE_UPDATE ){
+ Log.e("TAG","切换图片"+imagePlayCount);
+ if(imageComponents0.getMaterials()==null||imageComponents0.getMaterials().size()==0){
+ return;
+ }
+
+ //如果只有一张图就不切换图片
+ if(imageComponents0.getMaterials().size()>1){
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE,imageComponents0.getConfig().getTransitionPeriod()*1000);//切换
+ }
+
+ Log.e("TAG","开始切换图片"+TYPE_UPDATE);
+ if(imagePlayCount >= imageComponents0.getMaterials().size()){
+ imagePlayCount = 0;
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ imagePlayCount0=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ imagePlayCount1=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ imagePlayCount2=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ imagePlayCount3=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ imagePlayCount4=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ imagePlayCount5=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ imagePlayCount6=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ imagePlayCount7=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ imagePlayCount8=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ imagePlayCount9=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ imagePlayCount10=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ imagePlayCount11=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ imagePlayCount12=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ imagePlayCount13=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ imagePlayCount14=0;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ imagePlayCount15=0;
+ }
+ }
+ String fileurl1 = imageComponents0.getMaterials().get(imagePlayCount).getFileUrl();
+ long fileLength = imageComponents0.getMaterials().get(imagePlayCount).getFileLength();
+
+ //上传播放记录
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ String playTime = format.format(System.currentTimeMillis());
+// ScreenSaverData.uploadPlayRecord(imageComponents0.getMaterials().get(imagePlayCount).getMaterialCode(), imageComponents0.getMaterials().get(imagePlayCount).getDuration(), playTime, null, null);
+
+ String fileurl2;
+ if(imagePlayCount+1>=imageComponents0.getMaterials().size()){
+
+ fileurl2 = imageComponents0.getMaterials().get(0).getFileUrl();
+
+ }else {
+
+ fileurl2 = imageComponents0.getMaterials().get(imagePlayCount+1).getFileUrl();
+ }
+
+ //第一张图显示
+ if(firstImagePlay){
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ firstImagePlay0=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ firstImagePlay1=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ firstImagePlay2=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ firstImagePlay3=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ firstImagePlay4=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ firstImagePlay5=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ firstImagePlay6=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ firstImagePlay7=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ firstImagePlay8=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ firstImagePlay9=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ firstImagePlay10=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ firstImagePlay11=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ firstImagePlay12=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ firstImagePlay13=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ firstImagePlay14=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ firstImagePlay15=false;
+
+ }
+
+ File file = new File(StringUtil.strSplice(Constant.CACHE_PATH, fileurl1));
+ if(Math.abs(file.length()-fileLength)>1){
+ file.delete();
+ }else {
+ }
+ BitmapUtil.loadImage(downloadaddress, Constant.CACHE_PATH, fileurl1, imageView00);
+ }else {
+
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ binding.otherImg0.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ binding.otherImg1.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ binding.otherImg2.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ binding.otherImg3.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ binding.otherImg4.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ binding.otherImg5.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ binding.otherImg6.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ binding.otherImg7.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ binding.otherImg8.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ binding.otherImg9.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ binding.otherImg10.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ binding.otherImg11.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ binding.otherImg12.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ binding.otherImg13.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ binding.otherImg14.setVisibility(View.INVISIBLE);
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ binding.otherImg15.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ if(imagePlay){
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ imagePlay0=false;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ imagePlay1=false;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ imagePlay2=false;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ imagePlay3=false;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ imagePlay4=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ imagePlay5=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ imagePlay6=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ imagePlay7=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ imagePlay8=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ imagePlay9=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ imagePlay10=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ imagePlay11=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ imagePlay12=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ imagePlay13=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ imagePlay14=false;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ imagePlay15=false;
+
+ }
+
+ //移动动画
+ if(imageComponents0.getConfig().getTransition()!=null) {
+ if (imageComponents0.getConfig().getTransition().equals("上下滚动")) {
+ imgAnimation(imageView00, 0, 0, -imageComponents0.getHeight(), 0);
+ imgAnimation(imageView0, 0, 0, 0, imageComponents0.getHeight());
+ } else if (imageComponents0.getConfig().getTransition().equals("左右滚动")) {
+ imgAnimation(imageView00, imageComponents0.getWidth(), 0, 0, 0);
+ imgAnimation(imageView0, 0, -imageComponents0.getWidth(), 0, 0);
+ }
+ }
+
+ imageView00.setVisibility(View.VISIBLE);
+ imageView0.setVisibility(View.INVISIBLE);
+ }else {
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ imagePlay0=true;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ imagePlay1=true;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ imagePlay2=true;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ imagePlay3=true;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ imagePlay4=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ imagePlay5=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ imagePlay6=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ imagePlay7=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ imagePlay8=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ imagePlay9=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ imagePlay10=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ imagePlay11=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ imagePlay12=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ imagePlay13=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ imagePlay14=true;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ imagePlay15=true;
+
+ }
+
+ Log.e("TAG",""+TYPE_UPDATE);
+ //移动动画
+ if(imageComponents0.getConfig().getTransition()!=null) {
+ if (imageComponents0.getConfig().getTransition().equals("上下滚动")) {
+ imgAnimation(imageView0, 0, 0, -imageComponents0.getHeight(), 0);
+ imgAnimation(imageView00, 0, 0, 0, imageComponents0.getHeight());
+ } else if (imageComponents0.getConfig().getTransition().equals("左右滚动")) {
+ imgAnimation(imageView0, imageComponents0.getWidth(), 0, 0, 0);
+ imgAnimation(imageView00, 0, -imageComponents0.getWidth(), 0, 0);
+ }
+ }
+
+ imageView00.setVisibility(View.INVISIBLE);
+ imageView0.setVisibility(View.VISIBLE);
+ }
+
+ if(TYPE_UPDATE==TYPE_UPDATE_IMAGE0){
+ //传参数
+ sendMsg(TYPE_CHANGE_IMG_SHOW0,fileurl2);
+ imagePlayCount0++;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE1) {
+ //传参数
+ sendMsg(TYPE_CHANGE_IMG_SHOW1,fileurl2);
+ imagePlayCount1++;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE2) {
+ //传参数
+ sendMsg(TYPE_CHANGE_IMG_SHOW2,fileurl2);
+ imagePlayCount2++;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE3) {
+ //传参数
+ sendMsg(TYPE_CHANGE_IMG_SHOW3,fileurl2);
+ imagePlayCount3++;
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE4) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW4,fileurl2);
+ imagePlayCount4++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE5) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW5,fileurl2);
+ imagePlayCount5++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE6) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW6,fileurl2);
+ imagePlayCount6++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE7) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW7,fileurl2);
+ imagePlayCount7++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE8) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW8,fileurl2);
+ imagePlayCount8++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE9) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW9,fileurl2);
+ imagePlayCount9++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE10) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW10,fileurl2);
+ imagePlayCount10++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE11) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW11,fileurl2);
+ imagePlayCount11++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE12) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW12,fileurl2);
+ imagePlayCount12++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE13) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW13,fileurl2);
+ imagePlayCount13++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE14) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW14,fileurl2);
+ imagePlayCount14++;
+
+ }else if(TYPE_UPDATE==TYPE_UPDATE_IMAGE15) {
+ sendMsg(TYPE_CHANGE_IMG_SHOW15,fileurl2);
+ imagePlayCount15++;
+
+ }
+ }
+
+ /**
+ *发送handler命令
+ * */
+ public void sendMsg(int TYPE_UPDATE_IMAGE, String url){
+ handler.removeMessages(TYPE_UPDATE_IMAGE);
+ Message msg = new Message();
+ msg.what = TYPE_UPDATE_IMAGE;
+ Bundle bundle = new Bundle();
+ bundle.putString("url", url);
+ msg.setData(bundle);
+ handler.sendMessageDelayed(msg,1000);
+ }
+
+
+ /**
+ * 添加json动图
+ * */
+ List ltGiftList = new ArrayList();
+ private void initLottie(NewProgramBean.components components){
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ String localPath2 = StringUtil.strSplice(Constant.CACHE_PATH, components.getMaterials().get(0).getFileUrl());
+
+ String url=FileUtil.readLocalJsonForStorage(context,localPath2);
+ LottieAnimationView ltGift = new LottieAnimationView(context);
+ binding.relativeLayoutMax.addView(ltGift, lParams);
+ ltGiftList.add(ltGift);
+ ltGift.setAnimationFromJson(url);
+ ltGift.loop(true);
+ ltGift.playAnimation();
+ }
+
+ /**
+ * 初始化文本
+ * */
+
+ NewProgramBean.components textComponents0;
+ NewProgramBean.components textComponents1;
+ NewProgramBean.components textComponents2;
+ NewProgramBean.components textComponents3;
+ AutoScrollTextView AutoScrollText0;
+ AutoScrollTextView AutoScrollText1;
+ AutoScrollTextView AutoScrollText2;
+ AutoScrollTextView AutoScrollText3;
+ MarqueeTextView textView0;
+ MarqueeTextView textView1;
+ MarqueeTextView textView2;
+ MarqueeTextView textView3;
+ List MarqueeTextList = new ArrayList();
+ List AutoScrollTextList = new ArrayList();
+ List textList = new ArrayList();
+
+ public void initText(NewProgramBean.components components,int position){
+
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ NewProgramBean.materials textMaterials = components.getMaterials().get(0);
+ String localPath = StringUtil.strSplice(Constant.CACHE_PATH, textMaterials.getFileUrl());//文本本地路径
+
+ if(components.getConfig().getAnimation().equals("自动")||components.getConfig().getAnimation().equals("固定")){
+ MarqueeTextView textView = new MarqueeTextView(context);
+ setText2(components,textView);
+ binding.relativeLayoutMax.addView(textView, lParams);
+ textView.setText(components.getMaterials().get(0).getText());
+// if(!new File(localPath).exists()){
+// //不存在
+// TextBean textBean = new TextBean();
+// textBean.setText(textMaterials.getText());
+// textBean.setPosition(position);
+// textBean.setMarqueeTextView(textView);
+// textBean.setWidth(components.getWidth());
+// textList.add(textBean);
+// handler.removeMessages(TYPE_UPDATE_TEXT4);
+// handler.sendEmptyMessageDelayed(TYPE_UPDATE_TEXT4,5000);
+// }else {
+// textView.setText(FileUtil.loadFromSDFile(localPath).trim());
+// }
+
+
+ }else {
+ AutoScrollTextView AutoScrollText = new AutoScrollTextView(context);
+ setText(components, AutoScrollText);
+ binding.relativeLayoutMax.addView(AutoScrollText, lParams);
+ AutoScrollText.setText(components.getMaterials().get(0).getText());
+ AutoScrollText.init(components.getWidth());
+ AutoScrollText.startScroll();
+
+// if(!new File(localPath).exists()){
+// //不存在
+// TextBean textBean = new TextBean();
+// textBean.setText(textMaterials.getText());
+// textBean.setPosition(position);
+// textBean.setAutoScrollTextView(AutoScrollText);
+// textBean.setWidth(components.getWidth());
+// textList.add(textBean);
+// handler.removeMessages(TYPE_UPDATE_TEXT4);
+// handler.sendEmptyMessageDelayed(TYPE_UPDATE_TEXT4,5000);
+// }else {
+// AutoScrollText.setText(FileUtil.loadFromSDFile(localPath));
+// AutoScrollText.init(components.getWidth());
+// AutoScrollText.startScroll();
+// }
+
+ }
+ }
+
+ /**
+ * 设置文字
+ * */
+ public void setText(NewProgramBean.components components, AutoScrollTextView text){
+ AutoScrollTextList.add(text);
+ text.init(components.getWidth());
+ text.setTextColor1(components.getConfig().getFontColor());
+ if(components.getConfig().getAnimationSpeed().equals("慢")){
+ text.setSpeed(1);
+ }else if(components.getConfig().getAnimationSpeed().equals("中等")){
+ text.setSpeed(2);
+ }else if(components.getConfig().getAnimationSpeed().equals("快")){
+ text.setSpeed(3);
+ }else if(components.getConfig().getAnimationSpeed().equals("很快")){
+ text.setSpeed(4);
+ }
+
+ String backgroundColor = components.getConfig().getBackgroundColor();
+ String opacity = (String)colorMap.get(components.getConfig().getBackgroundOpacity());
+ if(backgroundColor!=null&&!backgroundColor.isEmpty()){
+ backgroundColor="#"+opacity+backgroundColor.substring(1);
+ text.setBackgroundColor(Color.parseColor(backgroundColor));
+ }
+ text.setTextSize(components.getConfig().getFontSize());
+
+ if(components.getConfig().getFontStyle().equals("正常")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ }else if(components.getConfig().getFontStyle().equals("加粗")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ }else if(components.getConfig().getFontStyle().equals("斜体")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
+ }else if(components.getConfig().getFontStyle().equals("加粗、斜体")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD_ITALIC));
+ }
+
+ int top=(components.getHeight()-components.getConfig().getFontSize())/2;
+ text.setPadding(0,top,0,0);
+ }
+
+ /**
+ * 设置文字
+ * */
+ public void setText2(NewProgramBean.components components, MarqueeTextView text){
+ MarqueeTextList.add(text);
+ text.setTextColor(Color.parseColor(components.getConfig().getFontColor()));
+ String backgroundColor = components.getConfig().getBackgroundColor();
+ String opacity = (String)colorMap.get(components.getConfig().getBackgroundOpacity());
+ if(backgroundColor!=null&&!backgroundColor.isEmpty()){
+ backgroundColor="#"+opacity+backgroundColor.substring(1);
+ text.setBackgroundColor(Color.parseColor(backgroundColor));
+ }
+
+ if(components.getConfig().getFontStyle().equals("正常")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ }else if(components.getConfig().getFontStyle().equals("加粗")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ }else if(components.getConfig().getFontStyle().equals("斜体")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
+ }else if(components.getConfig().getFontStyle().equals("加粗、斜体")){
+ text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD_ITALIC));
+ }
+
+ text.setTextSize(components.getConfig().getFontSize());
+ text.setSingleLine();
+ if(components.getConfig().getAnimation().equals("自动")){
+ text.setMarqueeRepeatLimit(Integer.MAX_VALUE);
+ text.setFocusable(true);
+ text.setEllipsize(TextUtils.TruncateAt.MARQUEE);
+ text.setHorizontallyScrolling(true);
+ }
+ text.setHeight(components.getHeight());
+ text.setWidth(components.getWidth());
+ text.setGravity(Gravity.CENTER_VERTICAL);
+ }
+
+ /**
+ * 添加html
+ * */
+ WebView onlineWebView0;
+ WebView onlineWebView1;
+ WebView onlineWebView2;
+ WebView onlineWebView3;
+ NewProgramBean.components webComponents0;
+ NewProgramBean.components webComponents1;
+ NewProgramBean.components webComponents2;
+ NewProgramBean.components webComponents3;
+ List webList=new ArrayList();
+ public void initOnlineWeb(NewProgramBean.components components,int position){
+ if(components==null||components.getMaterials().size()<=0){
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ if(position==0){
+
+ onlineWebView0 = new WebView(context);
+ webList.add(onlineWebView0);
+ binding.relativeLayoutMax.addView(onlineWebView0, lParams);
+ setWebView(onlineWebView0,components.getMaterials().get(0).getOuterChain());
+ webComponents0 = components;
+ int refreshWebTime = getRefreshWebTime(components);
+ if(refreshWebTime>0){
+ handler.sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW0,refreshWebTime);
+ }
+
+ } else if (position==1){
+
+ onlineWebView1 = new WebView(context);
+ webList.add(onlineWebView1);
+ binding.relativeLayoutMax.addView(onlineWebView1, lParams);
+ setWebView(onlineWebView1,components.getMaterials().get(0).getOuterChain());
+ webComponents1 = components;
+ int refreshWebTime = getRefreshWebTime(components);
+ if(refreshWebTime>0){
+ handler.sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW1,refreshWebTime);
+ }
+ } else if (position==2){
+
+ onlineWebView2 = new WebView(context);
+ webList.add(onlineWebView2);
+ binding.relativeLayoutMax.addView(onlineWebView2, lParams);
+ setWebView(onlineWebView2,components.getMaterials().get(0).getOuterChain());
+ webComponents2 = components;
+ int refreshWebTime = getRefreshWebTime(components);
+ if(refreshWebTime>0){
+ handler.sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW2,refreshWebTime);
+ }
+ } else if (position==3){
+
+ onlineWebView3 = new WebView(context);
+ webList.add(onlineWebView3);
+ binding.relativeLayoutMax.addView(onlineWebView3, lParams);
+ setWebView(onlineWebView3,components.getMaterials().get(0).getOuterChain());
+ webComponents3 = components;
+ int refreshWebTime = getRefreshWebTime(components);
+ if(refreshWebTime>0){
+ handler.sendEmptyMessageDelayed(TYPE_REFRESH_WEBVIEW3,refreshWebTime);
+ }
+ }
+ }
+
+ public int getRefreshWebTime(NewProgramBean.components components){
+ String refreshPeriod = components.getConfig().getRefreshPeriod();
+ String[] split = refreshPeriod.split(":");
+ int time=Integer.parseInt(split[0])*3600*1000+Integer.parseInt(split[1])*60*1000+Integer.parseInt(split[2])*1000;
+ return time;
+ }
+
+ public void setWebView(WebView mWebView,String url){
+// mWebView.setBackgroundColor(Color.TRANSPARENT);
+ mWebView.setHorizontalScrollBarEnabled(false);//水平不显示
+ mWebView.setVerticalScrollBarEnabled(false); //垂直不显示
+ WebSettings webSettings = mWebView.getSettings();
+ webSettings.setJavaScriptEnabled(true);
+ webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
+ webSettings.setSupportZoom(true);//调整图片至适合webview的大小
+ webSettings.setUseWideViewPort(true);// 缩放至屏幕的大小
+ webSettings.setLoadWithOverviewMode(true);
+ webSettings.setLoadsImagesAutomatically(true);
+// webSettings.setAppCacheEnabled(true);//是否使用缓存
+ webSettings.setDomStorageEnabled(true);//DOM Storage
+ webSettings.setDefaultTextEncodingName("utf-8");
+ mWebView.setWebViewClient(new WebViewClient());
+ mWebView.loadUrl(url);
+ }
+
+ class MyWebViewClient extends WebViewClient {
+
+ }
+ /**
+ * 添加水牌
+ * */
+ WebView spWebView;
+ public void intSuipai(NewProgramBean.components components){
+ if(components==null||components.getMaterials().size()<=0){
+ LoggerUtil.e("intSuipai","水牌暂无内容");
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ //开启本地服务
+ if(!Constant.isCoreService){
+ context.startService(new Intent(context, CoreService.class));
+ }
+ spWebView = new WebView(context);
+ webList.add(spWebView);
+ binding.relativeLayoutMax.addView(spWebView, lParams);
+
+ if(new File(Constant.CACHE_PATH +components.getMaterials().get(0).getFileUrl()).exists()){
+ //存在判断dist文件夹是否存在index
+ String shuipai_version = components.getMaterials().get(0).getFileUrl();
+ Log.e("intSuipai","水牌版本:"+shuipai_version);
+ if(!shuipai_version.equals(DeviceData.getDeviceInfo(DeviceData.SHUIPAI_VERSION)) || !new File(Constant.CACHE_PATH2).exists()){
+ LoggerUtil.e("intSuipai","版本号与本地不同,解压水牌zip");
+
+ if(new File(Constant.CACHE_PATH2).exists()){
+ FileUtil.deleteDirectory(Constant.CACHE_PATH2);
+ }
+ FileUtil.makeRootDirectory(Constant.CACHE_PATH2);
+ boolean upZip = FileUtil.upZipFile(Constant.CACHE_PATH + components.getMaterials().get(0).getFileUrl(), Constant.CACHE_PATH2);
+ LoggerUtil.e("intSuipai","解压水牌zip结果:"+upZip);
+ if(upZip){
+
+ DeviceData.saveDeviceInfo(DeviceData.SHUIPAI_VERSION , shuipai_version);
+ readShuiPaiJson();
+ }
+ }else {
+ LoggerUtil.e("intSuipai","水牌zip版本与本地相同,直接读取数据");
+ readShuiPaiJson();
+ }
+
+ handler.sendEmptyMessageDelayed(TYPE_SHUIPAI,5000);
+ }else {
+ LoggerUtil.e("intSuipai","水牌zip本地不存在");
+ }
+ }
+
+ /**
+ * 读取水牌json离线数据
+ * */
+ int shuipaifacenumb = 0;//接口数量
+ int shuipaifacenumb_finish = 0;//接口请求完成
+ public void readShuiPaiJson(){
+ try {
+ String url = Constant.CACHE_PATH+"dist/" +"/InterfaceList.json";
+ if(!new File(url).exists()){
+ LoggerUtil.e("redSuiPaiJson()","不存在水牌离线json");
+ return;
+ }
+ String s = FileUtil.loadFromSDFile(url);
+ Log.e("TAG","水牌离线json:"+s);
+ ShuipaiDataListBean shuipaiDataListBean = GsonUtil.getGson().fromJson(s, new TypeToken() {
+ }.getType());
+ List InterFaceList = shuipaiDataListBean.getData();
+ shuipaifacenumb = InterFaceList.size();
+ for(InterFaceBean interFacebean: InterFaceList ){
+ if(interFacebean.getInterfaceName().equals("GetDevCoordinateByIP")){
+ if(interFacebean.getInterfaceUrl().contains("http")||interFacebean.getInterfaceUrl().contains("https")){
+ ScreenSaverData.getGetData(context,interFacebean.getInterfaceUrl()+DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE),interFacebean.getInterfaceName(),null,new QueryFinishListener(){
+ @Override
+ public void onFinish() {
+ shuipaifacenumb_finish++;
+ }
+ });
+ }else {
+ ScreenSaverData.getGetData(context,Constant.getBaseAddress()+interFacebean.getInterfaceUrl()+DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE),interFacebean.getInterfaceName(),null ,new QueryFinishListener(){
+ @Override
+ public void onFinish() {
+ shuipaifacenumb_finish++;
+ }
+ });
+ }
+ }else {
+ if(interFacebean.getInterfaceUrl().contains("http")||interFacebean.getInterfaceUrl().contains("https")){
+ ScreenSaverData.getGetData(context,interFacebean.getInterfaceUrl(),interFacebean.getInterfaceName(),null ,new QueryFinishListener(){
+ @Override
+ public void onFinish() {
+ shuipaifacenumb_finish++;
+ }
+ });
+ }else {
+ ScreenSaverData.getGetData(context,Constant.getBaseAddress()+interFacebean.getInterfaceUrl(),interFacebean.getInterfaceName(),null ,new QueryFinishListener(){
+ @Override
+ public void onFinish() {
+ shuipaifacenumb_finish++;
+ }
+ });
+ }
+ }
+ }
+ }catch (Throwable t){
+ LoggerUtil.e("redShuiPaiJson()", StringUtil.getThrowableStr(t));
+ }
+ }
+
+ /**
+ * 添加水牌
+ * */
+ WebView mapWebView;
+ public void initMap(NewProgramBean.components components){
+ if(components==null||components.getMaterials().size()<=0){
+ LoggerUtil.e("initMap","地图组件暂无内容");
+ return;
+ }
+ RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ lParams.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+
+ //开启本地服务
+ if(!Constant.isCoreService){
+ context.startService(new Intent(context, CoreService.class));
+ }
+ mapWebView = new WebView(context);
+ webList.add(mapWebView);
+ binding.relativeLayoutMax.addView(mapWebView, lParams);
+
+ if(new File(Constant.CACHE_PATH +components.getMaterials().get(0).getFileUrl()).exists()){
+ //存在判断dist文件夹是否存在index
+ String shuipai_version = components.getMaterials().get(0).getFileUrl();
+ Log.e("intSuipai","地图版本:"+shuipai_version);
+ if(!shuipai_version.equals(DeviceData.getDeviceInfo(DeviceData.SHUIPAI_VERSION)) || !new File(Constant.CACHE_PATH2).exists()){
+ LoggerUtil.e("intSuipai","版本号与本地不同,解压地图zip");
+
+ if(new File(Constant.CACHE_PATH2).exists()){
+ FileUtil.deleteDirectory(Constant.CACHE_PATH2);
+ }
+ FileUtil.makeRootDirectory(Constant.CACHE_PATH2);
+ boolean upZip = FileUtil.upZipFile(Constant.CACHE_PATH + components.getMaterials().get(0).getFileUrl(), Constant.CACHE_PATH2);
+ LoggerUtil.e("intSuipai","解压地图zip结果:"+upZip);
+ if(upZip){
+
+ DeviceData.saveDeviceInfo(DeviceData.SHUIPAI_VERSION , shuipai_version);
+ handler.removeMessages(TYPE_MAP);
+ handler.sendEmptyMessageDelayed(TYPE_MAP,2000);
+ }
+ }else {
+ LoggerUtil.e("intSuipai","地图zip版本与本地相同,直接读取数据");
+ handler.removeMessages(TYPE_MAP);
+ handler.sendEmptyMessageDelayed(TYPE_MAP,2000);
+ }
+
+
+ }else {
+ LoggerUtil.e("intSuipai","地图zip本地不存在");
+ }
+ }
+
+ public void getApiFileResourceList(Context context, String url, QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+
+ AsyncHttpClient client = new AsyncHttpClient();
+
+ client.get( context, url ,new AsyncHttpResponseHandler() {
+ @Override
+ public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
+
+ try {
+ if (responseBody!=null) {
+ String response = new String(responseBody).replace("\\\\", "/");
+ Log.e("地图组件资源列表数据",response);
+ MapDataListBean mapDataListBean = GsonUtil.getGson().fromJson(response, new TypeToken() {}.getType());
+
+ for (ResourceFileBean bean : mapDataListBean.getData()){
+ mapFiles.put(bean.getUrl(),bean.getUrl()) ;
+ }
+ mapDownloadCount=0;
+ downloadFiles();
+ }
+
+ } catch (Throwable t) {
+
+
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 开始批量下载图片
+ * ishandler 是否需要通知更新
+ */
+ public void downloadFiles() {
+ Log.e("TAG","地图文件下载的数量"+mapFiles.size()+",下载地址前缀"+DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP));
+ if(mapFiles.size()<=0 ){
+ handler.sendEmptyMessageDelayed(TYPE_MAP,5000);
+ return;
+ }
+ for (String bigFile : mapFiles.keySet()) {
+
+ Log.e("TAG",bigFile);
+ downloadFile(DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP), bigFile);
+ }
+ }
+
+
+ private void downloadFile(String imgPath, final String address) {
+
+ File file = new File(StringUtil.strSplice(Constant.CACHE_PATH2, address));
+ if (file.exists()) {
+ mapDownloadCount++ ;
+ mapDownCount();
+ return;
+ }
+
+ FileUtil.downloadFile2(StringUtil.strSplice(imgPath, address), StringUtil.strSplice(Constant.CACHE_PATH3, address), new QueryFinishListener() {
+ @Override
+ public void onFinish() {
+ mapDownloadCount++ ;
+ mapDownCount();
+ }
+ });
+ }
+
+ /**
+ * 下载完成度
+ * */
+ public void mapDownCount(){
+ if(mapFiles.size() == mapDownloadCount){
+ LoggerUtil.e("mapDownCount()","地图资源下载完成");
+ handler.removeMessages(TYPE_MAP);
+ handler.sendEmptyMessageDelayed(TYPE_MAP,6000);
+ }
+ }
+
+
+ /**
+ * 添加天气
+ * */
+ private WeatherAdapter0 weatherAdapter0;
+ private WeatherAdapter1 weatherAdapter00;
+ private RecyclerView recycle_weather0;
+ NewProgramBean.components weatherComponents0;
+
+ public void initWeather(NewProgramBean.components components , int position){
+ //没有城市名不显示天气
+ if(components.getConfig().getCityName().isEmpty() && DeviceData.getDevice().getCity()==null){
+ return;
+ }
+ //设置列表大小
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(components.getOffsetX(), components.getOffsetY(), 0, 0);
+// Log.e("TAG","初始化天气");
+ List weatherList = new ArrayList<>();
+ for(int i=0;i<6;i++){
+ weatherList.add("");
+ }
+ LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
+
+ if(position==0){
+ recycle_weather0 = new RecyclerView(context);
+ binding.relativeLayoutMax.addView(recycle_weather0, params);
+
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ recycle_weather0.setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ recycle_weather0.setLayoutManager(layoutManager);
+
+ ViewGroup.LayoutParams layoutParams = recycle_weather0.getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ recycle_weather0.setLayoutParams(layoutParams);
+ if(components.getConfig().getStyle()==0){
+ weatherAdapter0 = new WeatherAdapter0(context,components);
+ weatherAdapter0.setData(weatherList);
+ recycle_weather0.setAdapter(weatherAdapter0);
+ }else {
+ weatherAdapter00 = new WeatherAdapter1(context,components);
+ weatherAdapter00.setData(weatherList);
+ recycle_weather0.setAdapter(weatherAdapter00);
+ }
+ }
+
+ if(!components.getConfig().getCityName().isEmpty()){
+ getWeather(components.getConfig().getCityName(),null,null);
+ }else {
+ getWeather(DeviceData.getDevice().getCity(),null,null);
+ }
+ }
+
+
+ NewProgramBean.components timeComponents0;
+ public void initTime(NewProgramBean.components components ,int position){
+ timeComponents0=components;
+ showTimeStyle(components);
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_TIME0,10);
+ }
+
+ /**
+ * 显示时间风格
+ * */
+ public void showTimeStyle(NewProgramBean.components components ){
+// Log.e("TAG","显示时间");
+ int style = components.getConfig().getStyle();
+ int offsetX = components.getOffsetX();
+ int offsetY = components.getOffsetY();
+ binding.layoutTime0.getRoot().setVisibility(View.INVISIBLE);
+ binding.layoutTime1.getRoot().setVisibility(View.INVISIBLE);
+ binding.layoutTime2.getRoot().setVisibility(View.INVISIBLE);
+ binding.layoutTime3.getRoot().setVisibility(View.INVISIBLE);
+ binding.layoutTime4.getRoot().setVisibility(View.INVISIBLE);
+ //得到变换比例
+ int width = components.getWidth();
+ float proportion = (float)width/(float) 320;
+
+ String fontColor = components.getConfig().getFontColor();
+ if(style==0){
+ //改变大小
+ ViewGroup.LayoutParams layoutParams = binding.layoutTime0.getRoot().getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ binding.layoutTime0.getRoot().setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+
+ binding.layoutTime0.getRoot().setLayoutParams(layoutParams);
+ binding.layoutTime0.tvTime0.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime0.tvWeek0.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime0.tvDay0.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime0.tvTime0.setTextSize((int)(proportion*24));
+ binding.layoutTime0.tvWeek0.setTextSize((int)(proportion*24));
+ binding.layoutTime0.tvDay0.setTextSize((int)(proportion*24));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ binding.layoutTime0.getRoot().setLayoutParams(params);
+ binding.layoutTime0.getRoot().setVisibility(View.VISIBLE);
+ }else if(style==1){
+
+ ViewGroup.LayoutParams layoutParams = binding.layoutTime1.getRoot().getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ binding.layoutTime1.getRoot().setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ binding.layoutTime1.getRoot().setLayoutParams(layoutParams);
+ binding.layoutTime1.tvTime1.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime1.tvWeek1.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime1.tvDay1.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime1.tvTime1.setTextSize((int)(proportion*24));
+ binding.layoutTime1.tvWeek1.setTextSize((int)(proportion*24));
+ binding.layoutTime1.tvDay1.setTextSize((int)(proportion*24));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ binding.layoutTime1.getRoot().setLayoutParams(params);
+ binding.layoutTime1.getRoot().setVisibility(View.VISIBLE);
+ }else if(style==2){
+ ViewGroup.LayoutParams layoutParams = binding.layoutTime2.getRoot().getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ binding.layoutTime2.getRoot().setLayoutParams(layoutParams);
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ binding.layoutTime2.getRoot().setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ binding.layoutTime2.tvTime2.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime2.tvWeek2.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime2.tvDay2.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime2.tvTime2.setTextSize((int)(proportion*24));
+ binding.layoutTime2.tvWeek2.setTextSize((int)(proportion*18));
+ binding.layoutTime2.tvDay2.setTextSize((int)(proportion*18));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ binding.layoutTime2.getRoot().setLayoutParams(params);
+ binding.layoutTime2.getRoot().setVisibility(View.VISIBLE);
+ }else if(style==3){
+ ViewGroup.LayoutParams layoutParams = binding.layoutTime3.getRoot().getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ binding.layoutTime3.getRoot().setLayoutParams(layoutParams);
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ binding.layoutTime3.getRoot().setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ binding.layoutTime3.tvTime3.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime3.tvWeek3.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime3.tvDay3.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime3.tvTime3.setTextSize((int)(proportion*24));
+ binding.layoutTime3.tvWeek3.setTextSize((int)(proportion*14));
+ binding.layoutTime3.tvDay3.setTextSize((int)(proportion*14));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ binding.layoutTime3.getRoot().setLayoutParams(params);
+ binding.layoutTime3.getRoot().setVisibility(View.VISIBLE);
+ }else if(style==4){
+ ViewGroup.LayoutParams layoutParams = binding.layoutTime4.getRoot().getLayoutParams();
+ layoutParams.height=components.getHeight();
+ layoutParams.width=components.getWidth();
+ if(components.getConfig().getBackgroundColor()!=null&&!components.getConfig().getBackgroundColor().isEmpty()){
+ binding.layoutTime4.getRoot().setBackgroundColor(Color.parseColor(components.getConfig().getBackgroundColor()));
+ }
+ binding.layoutTime4.getRoot().setLayoutParams(layoutParams);
+ binding.layoutTime4.tvTime4.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime4.tvWeek4.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime4.tvDay4.setTextColor(Color.parseColor(fontColor));
+ binding.layoutTime4.tvTime4.setTextSize((int)(proportion*36));
+ binding.layoutTime4.tvWeek4.setTextSize((int)(proportion*14));
+ binding.layoutTime4.tvDay4.setTextSize((int)(proportion*14));
+ //改变位置
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(components.getWidth(), components.getHeight());
+ params.setMargins(offsetX,offsetY, 0,0);
+ binding.layoutTime4.getRoot().setLayoutParams(params);
+ binding.layoutTime4.getRoot().setVisibility(View.VISIBLE);
+ }
+ }
+
+ /**
+ * 时间更新
+ * */
+ public void chooseTime(int style){
+ long longtime = System.currentTimeMillis();
+ String day = TimeUtil.stampToDate(longtime);
+ String time = TimeUtil.stampTotime(longtime);
+ String week = TimeUtil.getWeek2(day);
+ if(style==0){
+ binding.layoutTime0.tvTime0.setText(time);
+ binding.layoutTime0.tvWeek0.setText(week);
+ binding.layoutTime0.tvDay0.setText(day);
+ }else if(style==1){
+ binding.layoutTime1.tvTime1.setText(time);
+ binding.layoutTime1.tvWeek1.setText(week);
+ binding.layoutTime1.tvDay1.setText(day);
+ }else if(style==2){
+ binding.layoutTime2.tvTime2.setText(time);
+ binding.layoutTime2.tvWeek2.setText(week);
+ binding.layoutTime2.tvDay2.setText(day);
+ }else if(style==3){
+ binding.layoutTime3.tvTime3.setText(time);
+ binding.layoutTime3.tvWeek3.setText(week);
+ binding.layoutTime3.tvDay3.setText(day);
+ }else if(style==4){
+ binding.layoutTime4.tvTime4.setText(time);
+ binding.layoutTime4.tvWeek4.setText(week);
+ binding.layoutTime4.tvDay4.setText(day);
+ }
+ }
+
+ /**
+ * 获取天气
+ * */
+ public void getWeather(String city, QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ RetrofitUtil.getBaseService().getWeather(city).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+
+ WeatherBean weatherbean = new Gson().fromJson(new Gson().toJson(response.body().getData()), new TypeToken() {
+ }.getType());
+
+ if(weatherAdapter0!=null){
+ List weatherList = new ArrayList<>();
+ weatherList.add(""+weatherbean.getTemperatureNow());
+ weatherList.add(weatherbean.getHumidity().substring(0,weatherbean.getHumidity().length()-1));
+ weatherList.add(weatherbean.getWindPower());
+ weatherList.add(weatherbean.getAqi()+"");
+ weatherList.add(weatherbean.getPm()+"");
+ weatherList.add(weatherbean.getWeather());
+ weatherAdapter0.setData(weatherList);
+ }
+
+ if(weatherAdapter00!=null){
+ List weatherList = new ArrayList<>();
+ weatherList.add(""+weatherbean.getTemperatureNow());
+ weatherList.add(weatherbean.getHumidity().substring(0,weatherbean.getHumidity().length()-1));
+ weatherList.add(weatherbean.getWindPower());
+ weatherList.add(weatherbean.getAqi()+"");
+ weatherList.add(weatherbean.getPm()+"");
+ weatherList.add(weatherbean.getWeather());
+ weatherAdapter00.setData(weatherList);
+
+ }
+
+ } catch (Throwable t) {
+ LoggerUtil.e("getWeather()", StringUtil.getThrowableStr(t));
+ }
+ //一小时更新一次天气
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_WEATHER0,3600*1000);
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("getWeather()", StringUtil.getThrowableStr(t));
+ if (finishListener != null) finishListener.onFinish();
+ //一小时更新一次天气
+ handler.sendEmptyMessageDelayed(TYPE_UPDATE_WEATHER0,3600*1000);
+
+ }
+ });
+ }
+
+ /**
+ * 修改成默认背景图
+ * */
+ public void changeOldBackground(){
+ try {
+ binding.backgroundImage.setBackgroundColor(Color.TRANSPARENT);
+ binding.backgroundImage.setImageBitmap(null);
+ }catch (Exception e){
+ LoggerUtil.e("修改成默认背景图",e.getMessage());
+ }
+ }
+
+ /**
+ * 图片移动动画
+ * */
+ public void imgAnimation(View view, int fromX ,int toX,int fromY,int toY){
+ Animation translateAnimation = new TranslateAnimation(fromX, toX, fromY, toY);//设置平移的起点和终点
+ translateAnimation.setDuration(1000);//动画持续的时间为10s
+ view.startAnimation(translateAnimation);
+ }
+
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/program/ViewSubtitle.java b/app/src/main/java/qianmu/container/activity/program/ViewSubtitle.java
new file mode 100644
index 0000000..7885824
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/program/ViewSubtitle.java
@@ -0,0 +1,40 @@
+package qianmu.container.activity.program;
+
+import android.content.Context;
+import android.view.View;
+
+import qianmu.container.activity.ViewBase;
+import qianmu.container.databinding.ViewSubtitleBinding;
+
+public class ViewSubtitle extends ViewBase {
+
+ ViewSubtitle(Context context, View view) {
+ super(context, view);
+ }
+
+ @Override
+ protected void initView() {
+ }
+
+ @Override
+ protected void setData() {
+
+ }
+
+ @Override
+ protected void setListener() {
+
+ }
+
+
+ public void showSubtitle() {
+ if (binding.getRoot().getVisibility() == View.VISIBLE) return;
+ binding.getRoot().setVisibility(View.VISIBLE);
+ }
+
+
+ public void hideSubtitle() {
+ binding.getRoot().setVisibility(View.INVISIBLE);
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/program/ViewTest.java b/app/src/main/java/qianmu/container/activity/program/ViewTest.java
new file mode 100644
index 0000000..1721396
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/program/ViewTest.java
@@ -0,0 +1,68 @@
+package qianmu.container.activity.program;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+
+import qianmu.container.activity.ViewBase;
+import qianmu.container.app.Constant;
+import qianmu.container.app.MyApplication;
+import qianmu.container.data.DeviceData;
+import qianmu.container.databinding.ViewTestBinding;
+import qianmu.container.socket.manager.LocSocCliManager;
+import qianmu.container.socket.manager.SocketServerManager;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.StringUtil;
+
+@SuppressWarnings("All")
+public class ViewTest extends ViewBase {
+
+ private static final int UPDATE_STATE = 0;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(@NonNull Message msg) {
+ super.handleMessage(msg);
+ if (msg.what == UPDATE_STATE) {
+ updateState();
+ sendEmptyMessageDelayed(UPDATE_STATE, 1000);
+ }
+ }
+ };
+
+ public ViewTest(Context context, View view) {
+ super(context, view);
+ }
+
+ private void updateState() {
+ binding.serverState.setText(Constant.isMain ? "服务端状态:已连接" : "服务端状态:已断开");
+ binding.serverIp.setText(StringUtil.strSplice("服务端地址:", DeviceData.getDeviceInfo(DeviceData.HINT_MAIN_DEVICE_IP)));
+ binding.clientQuantity.setText(StringUtil.strSplice("客户端数量:", SocketServerManager.getClientQuantity()));
+ binding.clientState.setText(Constant.isSecondary ? "客户端状态:已连接" : "客户端状态:已断开");
+ binding.deviceIp.setText(StringUtil.strSplice("设备IP地址:", DeviceUtil.getLocalIP()));
+ String lastheartBeatTime;
+ if (LocSocCliManager.heartBeatResult == 0) {
+ lastheartBeatTime = "最近心跳时间:无";
+ } else {
+ String time = MyApplication.getInstance().dateTimeFormat.format(LocSocCliManager.heartBeatResult);
+ lastheartBeatTime = StringUtil.strSplice("最近心跳时间:", time);
+ }
+ binding.heartBeatTime.setText(lastheartBeatTime);
+ }
+
+ public void showViewTest() {
+ if (binding.getRoot().getVisibility() == View.VISIBLE) return;
+ binding.getRoot().setVisibility(View.VISIBLE);
+ if (handler != null) handler.sendEmptyMessageDelayed(UPDATE_STATE, 1000);
+ }
+
+ public void hideViewTest() {
+ binding.getRoot().setVisibility(View.INVISIBLE);
+ if (handler == null) return;
+ handler.removeMessages(UPDATE_STATE);
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/activity/program/ViewTouch.java b/app/src/main/java/qianmu/container/activity/program/ViewTouch.java
new file mode 100644
index 0000000..e6c21df
--- /dev/null
+++ b/app/src/main/java/qianmu/container/activity/program/ViewTouch.java
@@ -0,0 +1,398 @@
+package qianmu.container.activity.program;
+
+import android.animation.Animator;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
+import android.app.Activity;
+import android.content.Context;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.LinearInterpolator;
+import android.widget.RelativeLayout;
+
+import java.io.File;
+
+import qianmu.container.R;
+import qianmu.container.activity.ViewBase;
+import qianmu.container.app.Constant;
+import qianmu.container.data.AppData;
+import qianmu.container.data.DeviceData;
+import qianmu.container.data.ScreenSaverData;
+import qianmu.container.databinding.ViewTouchBinding;
+import qianmu.container.entity.App;
+import qianmu.container.entity.ScreenSaverTime;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.util.BitmapUtil;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.FileUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.StringUtil;
+
+@SuppressWarnings("All")
+public class ViewTouch extends ViewBase {
+
+ //所在屏幕边界位置:NAN:无, LEFT:左, TOP:上, RIGHT:右, BOTTOM:下
+ enum Location {NAN, LEFT, TOP, RIGHT, BOTTOM}
+
+ static final float speed = 10f; //速度
+ float angle; //角度
+ int viewWidth; //控件宽度
+ int viewHeight; //控件高度
+ int windowWidth; //屏幕宽度
+ int windowHeight; //屏幕高度
+ float currentX; //控件x值
+ float currentY; //控件y值
+ Location currentLocation; //当前所在边界
+ boolean isCancel;
+ boolean isImag;//是否为图片
+ ObjectAnimator animator;
+ AnimatorSet animatorSet; //组合动画
+
+ //更新touch图片
+
+ ViewTouch(Context context, View view) {
+ super(context, view);
+ }
+
+ @Override
+ protected void initView() {
+ int width = DeviceUtil.screenWidth((Activity) context);
+ int height = DeviceUtil.screenHeight((Activity) context);
+ }
+
+ @Override
+ protected void setListener() {
+
+ }
+
+ //显示touchme
+ public void showTouch() {
+ //不是触摸屏 不显示touch
+// binding.touch.setBackgroundDrawable(null);
+ ScreenSaverTime screenSaverTime = ScreenSaverData.getScreenSaver();
+ if (screenSaverTime == null) return;
+ if(screenSaverTime.getType()<5)return;
+ if(screenSaverTime.getType()>10 && screenSaverTime.getCustomUrl()!=null && !screenSaverTime.getCustomUrl().endsWith("json")){
+ //图片
+ isImag=true;
+ binding.touch.setVisibility(View.VISIBLE);
+ binding.lottie.setVisibility(View.GONE);
+ binding.touch.setBackgroundDrawable(null);
+ if(Constant.isScreen4K){
+ ViewGroup.LayoutParams layoutParams = binding.touch.getLayoutParams();
+ layoutParams.width = 600;
+ layoutParams.height = 600;
+ }
+ }else {
+ isImag=false;
+ if(Constant.isScreen4K){
+ ViewGroup.LayoutParams layoutParams = binding.lottie.getLayoutParams();
+ layoutParams.width = 600;
+ layoutParams.height = 600;
+ }
+ }
+ updateTouchUI(screenSaverTime.getType(),screenSaverTime.getCustomUrl());
+ updateTouchLocation(screenSaverTime.getProtectionEffect(), screenSaverTime.getProtectionLocation());
+ }
+
+ //隐藏touchme
+ public void hideTouch() {
+ if (animator != null){
+ animator.cancel();
+ animator = null;
+ }
+ if (animatorSet != null) {
+ animatorSet.cancel();
+ animatorSet = null;
+ }
+ if (binding.lottie.isAnimating()){
+ binding.lottie.cancelAnimation();
+ binding.lottie.destroyDrawingCache();
+ }
+ binding.lottie.setVisibility(View.INVISIBLE);
+ binding.touch.setVisibility(View.INVISIBLE);
+ }
+
+ //更新touch图片
+ private void updateTouchUI(int screenType,String url) {
+ if(screenType==5){
+ binding.lottie.setAnimation("touch01.json");
+ binding.lottie.playAnimation();
+ }else if(screenType==6){
+ binding.lottie.setAnimation("touch02.json");
+ binding.lottie.playAnimation();
+ }else if(screenType==7){
+ binding.lottie.setAnimation("touch03.json");
+ binding.lottie.playAnimation();
+ }else if(screenType==8){
+ binding.lottie.setAnimation("touch04.json");
+ binding.lottie.playAnimation();
+ }else if(screenType==9){
+ binding.lottie.setAnimation("touch05.json");
+ binding.lottie.playAnimation();
+ }else if(screenType==10){
+ binding.lottie.setAnimation("touch06.json");
+ binding.lottie.playAnimation();
+ }else if(screenType>10){
+ //自定义touch
+ String localPath2 = StringUtil.strSplice(Constant.CACHE_PATH, url);
+ if(url.endsWith("json")&&new File(localPath2).exists()){
+ //lotte
+ String fileUrl= FileUtil.readLocalJsonForStorage(context,localPath2);
+ binding.lottie.setAnimationFromJson(fileUrl);
+ binding.lottie.loop(true);
+ binding.lottie.playAnimation();
+ }else if(url.endsWith("json")&&!new File(localPath2).exists()){
+ //lotte本地不存在
+ FileUtil.downloadFile(StringUtil.strSplice(DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP), url), localPath2, new QueryFinishListener() {
+ @Override
+ public void onFinish() {
+ String fileUrl= FileUtil.readLocalJsonForStorage(context,localPath2);
+ binding.lottie.setAnimationFromJson(fileUrl);
+ binding.lottie.loop(true);
+ binding.lottie.playAnimation();
+ }
+ });
+ }else {
+ //图片
+ BitmapUtil.loadImage(DeviceData.getDeviceInfo(DeviceData.DOWNLOAD_IP), Constant.CACHE_PATH, url, binding.touch);
+ }
+
+ }
+ }
+
+ //
+ private void updateTouchLocation(int screenEffect, int effectType) {
+ if (animator != null) animator.cancel();
+ if (animatorSet != null) animatorSet.cancel();
+ RelativeLayout.LayoutParams layoutParams;
+ if(isImag){
+ layoutParams = (RelativeLayout.LayoutParams) binding.touch.getLayoutParams();
+ }else {
+ layoutParams = (RelativeLayout.LayoutParams) binding.lottie.getLayoutParams();
+ }
+ if (layoutParams == null)
+ if(Constant.isScreen4K){
+ layoutParams = new RelativeLayout.LayoutParams(context.getResources().getDimensionPixelSize(R.dimen.dimens_600), context.getResources().getDimensionPixelSize(R.dimen.dimens_600));
+ }else {
+ layoutParams = new RelativeLayout.LayoutParams(context.getResources().getDimensionPixelSize(R.dimen.dimens_300), context.getResources().getDimensionPixelSize(R.dimen.dimens_300));
+ }
+ if (screenEffect == 0) {//固定位置
+ if (effectType == 0) {//右下角显示
+ layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
+ layoutParams.addRule(RelativeLayout.ALIGN_PARENT_END);
+ if(isImag){
+ binding.touch.setLayoutParams(layoutParams);
+ }else {
+ binding.lottie.setLayoutParams(layoutParams);
+ }
+
+ } else if (effectType == 1) {//居中显示
+ layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
+ if(isImag){
+ binding.touch.setLayoutParams(layoutParams);
+ }else {
+ binding.lottie.setLayoutParams(layoutParams);
+ }
+
+ }
+ } else if (screenEffect == 1) {//自由运动
+ if (effectType == 2) {//左右移动
+ layoutParams.addRule(RelativeLayout.ALIGN_PARENT_START);
+ layoutParams.addRule(RelativeLayout.CENTER_VERTICAL);
+ if(isImag){
+ binding.touch.setLayoutParams(layoutParams);
+ if(Constant.isScreen4K){
+ animator = ObjectAnimator.ofFloat(binding.touch, "translationX", context.getResources().getDimensionPixelSize(R.dimen.dimens__0), DeviceUtil.screenWidth((Activity) context) - context.getResources().getDimensionPixelSize(R.dimen.dimens_600), context.getResources().getDimensionPixelSize(R.dimen.dimens__0));
+ }else {
+ animator = ObjectAnimator.ofFloat(binding.touch, "translationX", context.getResources().getDimensionPixelSize(R.dimen.dimens__0), DeviceUtil.screenWidth((Activity) context) - context.getResources().getDimensionPixelSize(R.dimen.dimens_300), context.getResources().getDimensionPixelSize(R.dimen.dimens__0));
+ }
+ }else {
+ binding.lottie.setLayoutParams(layoutParams);
+ if(Constant.isScreen4K){
+ animator = ObjectAnimator.ofFloat(binding.lottie, "translationX", context.getResources().getDimensionPixelSize(R.dimen.dimens__0), DeviceUtil.screenWidth((Activity) context) - context.getResources().getDimensionPixelSize(R.dimen.dimens_600), context.getResources().getDimensionPixelSize(R.dimen.dimens__0));
+ }else {
+ animator = ObjectAnimator.ofFloat(binding.lottie, "translationX", context.getResources().getDimensionPixelSize(R.dimen.dimens__0), DeviceUtil.screenWidth((Activity) context) - context.getResources().getDimensionPixelSize(R.dimen.dimens_300), context.getResources().getDimensionPixelSize(R.dimen.dimens__0));
+ }
+ }
+ animator.setDuration(10000);
+ animator.setRepeatMode(ValueAnimator.RESTART);
+ animator.setInterpolator(new LinearInterpolator());
+ animator.setRepeatCount(-1);
+ animator.start();
+ } else if (effectType == 3) {//随机移动
+ layoutParams.addRule(RelativeLayout.ALIGN_PARENT_START);
+ layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
+ if(isImag){
+ binding.touch.setLayoutParams(layoutParams);
+ }else {
+ binding.lottie.setLayoutParams(layoutParams);
+ }
+ DefaultLocation();
+ initEndPoint();
+ }
+ }
+ }
+
+ private void DefaultLocation() {
+ //屏幕宽高
+ DisplayMetrics dm = context.getResources().getDisplayMetrics();
+ windowWidth = dm.widthPixels;
+ windowHeight = dm.heightPixels;
+ //控件宽高
+ if(Constant.isScreen4K){
+ viewWidth = context.getResources().getDimensionPixelSize(R.dimen.dimens_600);
+ viewHeight = context.getResources().getDimensionPixelSize(R.dimen.dimens_600);
+ }else {
+ viewWidth = context.getResources().getDimensionPixelSize(R.dimen.dimens_300);
+ viewHeight = context.getResources().getDimensionPixelSize(R.dimen.dimens_300);
+ }
+ currentLocation = Location.NAN; //当前所在边界
+ angle = 110f; //角度
+ currentX = 0f; //控件x值
+ currentY = 0f; //控件y值
+ }
+
+ private void initEndPoint() {
+ RelativeLayout.LayoutParams layoutParams;
+ if(isImag){
+ layoutParams = (RelativeLayout.LayoutParams) binding.touch.getLayoutParams();
+ }else {
+ layoutParams = (RelativeLayout.LayoutParams) binding.lottie.getLayoutParams();
+ }
+
+ if (layoutParams == null)
+ layoutParams = new RelativeLayout.LayoutParams(viewWidth, viewHeight);
+ layoutParams.topMargin = (int) currentY;
+ layoutParams.leftMargin = (int) currentX;
+ binding.lottie.setLayoutParams(layoutParams);
+
+ angle = 180 - angle;
+
+ double rightY = currentY - Math.tan(Math.toRadians(angle)) * (currentX - windowWidth + viewWidth);
+ double bottomX = currentX - (currentY - windowHeight + viewHeight) / Math.tan(Math.toRadians(angle));
+ double topX = currentX - currentY / Math.tan(Math.toRadians(angle));
+ double leftY = currentY - Math.tan(Math.toRadians(angle)) * (currentX);
+
+ switch (currentLocation) {
+ case LEFT:
+ if (rightY < windowHeight - viewHeight && rightY > 0) {
+ currentLocation = Location.RIGHT;
+ anim(windowWidth - viewWidth - currentX, (float) (rightY - currentY));
+ } else if (bottomX < windowWidth - viewWidth && bottomX > 0) {
+ currentLocation = Location.BOTTOM;
+ anim((float) (bottomX - currentX), windowHeight - viewHeight - currentY);
+ } else if (topX < windowWidth - viewWidth && topX > 0) {
+ currentLocation = Location.TOP;
+ anim((float) (topX - currentX), -currentY);
+ }
+ break;
+
+ case TOP:
+ if (rightY < windowHeight - viewHeight && rightY > 0) {
+ currentLocation = Location.RIGHT;
+ anim(windowWidth - viewWidth - currentX, (float) (rightY - currentY));
+ } else if (bottomX < windowWidth - viewWidth && bottomX > 0) {
+ currentLocation = Location.BOTTOM;
+ anim((float) (bottomX - currentX), windowHeight - viewHeight - currentY);
+ } else if (leftY < windowHeight - viewHeight && leftY > 0) {
+ currentLocation = Location.LEFT;
+ anim(-currentX, (float) (leftY - currentY));
+ }
+ break;
+
+ case RIGHT:
+ if (bottomX < windowWidth - viewWidth && bottomX > 0) {
+ currentLocation = Location.BOTTOM;
+ anim((float) (bottomX - currentX), windowHeight - viewHeight - currentY);
+ } else if (topX < windowWidth - viewWidth && topX > 0) {
+ currentLocation = Location.TOP;
+ anim((float) (topX - currentX), -currentY);
+ } else if (leftY < windowHeight - viewHeight && leftY > 0) {
+ currentLocation = Location.LEFT;
+ anim(-currentX, (float) (leftY - currentY));
+ }
+ break;
+
+ case BOTTOM:
+ if (rightY < windowHeight - viewHeight && rightY > 0) {
+ currentLocation = Location.RIGHT;
+ anim(windowWidth - viewWidth - currentX, (float) (rightY - currentY));
+ } else if (topX < windowWidth - viewWidth && topX > 0) {
+ currentLocation = Location.TOP;
+ anim((float) (topX - currentX), -currentY);
+ } else if (leftY < windowHeight - viewHeight && leftY > 0) {
+ currentLocation = Location.LEFT;
+ anim(-currentX, (float) (leftY - currentY));
+ }
+ break;
+
+ case NAN:
+ if (rightY < windowHeight - viewHeight && rightY > 0) {
+ currentLocation = Location.RIGHT;
+ anim(windowWidth - viewWidth - currentX, (float) (rightY - currentY));
+ } else if (bottomX < windowWidth - viewWidth && bottomX > 0) {
+ currentLocation = Location.BOTTOM;
+ anim((float) (bottomX - currentX), windowHeight - viewHeight - currentY);
+ } else if (topX < windowWidth - viewWidth && topX > 0) {
+ currentLocation = Location.TOP;
+ anim((float) (topX - currentX), -currentY);
+ } else if (leftY < windowHeight - viewHeight && leftY > 0) {
+ currentLocation = Location.LEFT;
+ anim(-currentX, (float) (leftY - currentY));
+ }
+ break;
+ }
+ }
+
+ //直线平移动画
+ private void anim(final float x, final float y) {
+ ObjectAnimator translationX;
+ ObjectAnimator translationY;
+ if(isImag){
+ translationX = new ObjectAnimator().ofFloat(binding.touch, "translationX", 0, x);
+ translationY = new ObjectAnimator().ofFloat(binding.touch, "translationY", 0, y);
+ }else {
+ translationX = new ObjectAnimator().ofFloat(binding.lottie, "translationX", 0, x);
+ translationY = new ObjectAnimator().ofFloat(binding.lottie, "translationY", 0, y);
+ }
+
+ animatorSet = new AnimatorSet(); //组合动画
+ animatorSet.setInterpolator(new LinearInterpolator());
+ animatorSet.playTogether(translationX, translationY); //设置动画
+ animatorSet.setDuration((long) (Math.sqrt(x * x + y * y) * 100 / speed)); //设置动画时间
+ animatorSet.start();
+ animatorSet.addListener(new Animator.AnimatorListener() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (isCancel) {
+ isCancel = false;
+ return;
+ }
+ currentX = x + currentX;
+ currentY = y + currentY;
+ initEndPoint();
+
+ }
+
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ isCancel = true;
+ }
+
+ @Override
+ public void onAnimationRepeat(Animator animation) {
+
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/adapter/BuildingAdapter.java b/app/src/main/java/qianmu/container/adapter/BuildingAdapter.java
new file mode 100644
index 0000000..c1c339f
--- /dev/null
+++ b/app/src/main/java/qianmu/container/adapter/BuildingAdapter.java
@@ -0,0 +1,46 @@
+package qianmu.container.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import qianmu.container.R;
+import qianmu.container.entity.Building;
+import qianmu.container.util.StringUtil;
+
+
+/**
+ * Created by Administrator on 2018/4/9.
+ */
+
+public class BuildingAdapter extends MyBaseAdapter {
+ /**
+ * 初始化adapter时初始化数据 防止空指针异常
+ *
+ * @param context
+ */
+ public BuildingAdapter(Context context) {
+ super(context);
+ }
+
+ @Override
+ public View HasDataView(int position, View convertView, ViewGroup parent) {
+
+ if (null == convertView) {
+ convertView = LayoutInflater.from(mContext).inflate(R.layout.item_text_common, parent, false);
+ }
+
+ TextView buildingNameTV = getAdapterView(convertView, R.id.tv_content);
+
+ Building building = getData().get(position);
+
+ if (building != null) {
+ String buildingNameStr = StringUtil.getString(building.getName());
+ buildingNameTV.setText(buildingNameStr);
+ }
+
+ return convertView;
+ }
+}
diff --git a/app/src/main/java/qianmu/container/adapter/ContainerTypeAdapter.java b/app/src/main/java/qianmu/container/adapter/ContainerTypeAdapter.java
new file mode 100644
index 0000000..7ea6124
--- /dev/null
+++ b/app/src/main/java/qianmu/container/adapter/ContainerTypeAdapter.java
@@ -0,0 +1,38 @@
+package qianmu.container.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import qianmu.container.R;
+import qianmu.container.entity.Building;
+import qianmu.container.util.StringUtil;
+
+
+/**
+ * Created by Administrator on 2018/4/9.
+ */
+
+public class ContainerTypeAdapter extends MyBaseAdapter {
+ /**
+ * 初始化adapter时初始化数据 防止空指针异常
+ *
+ * @param context
+ */
+ public ContainerTypeAdapter(Context context) {
+ super(context);
+ }
+
+ @Override
+ public View HasDataView(int position, View convertView, ViewGroup parent) {
+
+ if (null == convertView) {
+ convertView = LayoutInflater.from(mContext).inflate(R.layout.item_text_common, parent, false);
+ }
+ TextView containerTypeTV = getAdapterView(convertView, R.id.tv_content);
+ containerTypeTV.setText(StringUtil.getString(getData().get(position)));
+ return convertView;
+ }
+}
diff --git a/app/src/main/java/qianmu/container/adapter/DeviceNameAdapter.java b/app/src/main/java/qianmu/container/adapter/DeviceNameAdapter.java
new file mode 100644
index 0000000..50b9e15
--- /dev/null
+++ b/app/src/main/java/qianmu/container/adapter/DeviceNameAdapter.java
@@ -0,0 +1,44 @@
+package qianmu.container.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import qianmu.container.R;
+import qianmu.container.entity.Building;
+import qianmu.container.util.StringUtil;
+
+
+/**
+ * 设备选择
+ */
+public class DeviceNameAdapter extends MyBaseAdapter {
+ /**
+ * 初始化adapter时初始化数据 防止空指针异常
+ *
+ * @param context
+ */
+ public DeviceNameAdapter(Context context) {
+ super(context);
+ }
+
+ @Override
+ public View HasDataView(int position, View convertView, ViewGroup parent) {
+
+ if (null == convertView) {
+ convertView = LayoutInflater.from(mContext).inflate(R.layout.item_text_common, parent, false);
+ }
+
+ TextView floorNameTV = getAdapterView(convertView, R.id.tv_content);
+
+ Building.Machine machine = getData().get(position);
+
+ if (machine != null) {
+ String floorNameStr = StringUtil.getString(machine.getName());
+ floorNameTV.setText(floorNameStr);
+ }
+ return convertView;
+ }
+}
diff --git a/app/src/main/java/qianmu/container/adapter/DeviceTypeAdapter.java b/app/src/main/java/qianmu/container/adapter/DeviceTypeAdapter.java
new file mode 100644
index 0000000..d317602
--- /dev/null
+++ b/app/src/main/java/qianmu/container/adapter/DeviceTypeAdapter.java
@@ -0,0 +1,37 @@
+package qianmu.container.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import qianmu.container.R;
+import qianmu.container.entity.Dict;
+import qianmu.container.util.StringUtil;
+
+public class DeviceTypeAdapter extends MyBaseAdapter {
+
+ public DeviceTypeAdapter(Context context) {
+ super(context);
+ }
+
+ @Override
+ public View HasDataView(int position, View convertView, ViewGroup parent) {
+
+ if (null == convertView) {
+ convertView = LayoutInflater.from(mContext).inflate(R.layout.item_text_common, parent, false);
+ }
+
+ TextView dictTV = getAdapterView(convertView, R.id.tv_content);
+
+ Dict dict = getData().get(position);
+
+ if (dict != null) {
+ String dictValueStr = StringUtil.getString(dict.getDictValue());
+ dictTV.setText(dictValueStr);
+ }
+
+ return convertView;
+ }
+}
diff --git a/app/src/main/java/qianmu/container/adapter/FloorAdapter.java b/app/src/main/java/qianmu/container/adapter/FloorAdapter.java
new file mode 100644
index 0000000..4606dd6
--- /dev/null
+++ b/app/src/main/java/qianmu/container/adapter/FloorAdapter.java
@@ -0,0 +1,44 @@
+package qianmu.container.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import qianmu.container.R;
+import qianmu.container.entity.Building;
+import qianmu.container.util.StringUtil;
+
+
+/**
+ * Created by Administrator on 2018/4/9.
+ */
+public class FloorAdapter extends MyBaseAdapter {
+ /**
+ * 初始化adapter时初始化数据 防止空指针异常
+ *
+ * @param context
+ */
+ public FloorAdapter(Context context) {
+ super(context);
+ }
+
+ @Override
+ public View HasDataView(int position, View convertView, ViewGroup parent) {
+
+ if (null == convertView) {
+ convertView = LayoutInflater.from(mContext).inflate(R.layout.item_text_common, parent, false);
+ }
+
+ TextView floorNameTV = getAdapterView(convertView, R.id.tv_content);
+
+ Building.Floor floor = getData().get(position);
+
+ if (floor != null) {
+ String floorNameStr = StringUtil.getString(floor.getName());
+ floorNameTV.setText(floorNameStr);
+ }
+ return convertView;
+ }
+}
diff --git a/app/src/main/java/qianmu/container/adapter/KeyAdapter.java b/app/src/main/java/qianmu/container/adapter/KeyAdapter.java
new file mode 100644
index 0000000..4cab298
--- /dev/null
+++ b/app/src/main/java/qianmu/container/adapter/KeyAdapter.java
@@ -0,0 +1,115 @@
+package qianmu.container.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import qianmu.container.R;
+
+
+/**
+ * Created by Android Studio.
+ * User: linzhibin
+ * Date: 2019/6/11
+ * Time: 13:32
+ *
+ * 键盘
+ */
+public class KeyAdapter extends RecyclerView.Adapter {
+
+ String[] keylist= {"1","2","3","4","5","6","7","8","9","0","删除","清空","取消","确定"};
+ private Context context;
+ private int selected = 0;
+
+ private OnitemClick onitemClick; //定义点击事件接口
+
+
+
+ public KeyAdapter(Context context) {
+ this.context = context;
+ }
+
+ //定义设置点击事件监听的方法
+ public void setOnitemClickLintener (OnitemClick onitemClick) {
+ this.onitemClick = onitemClick;
+ }
+
+ //定义一个点击事件的接口
+ public interface OnitemClick {
+ void onItemClick(String position);
+ }
+
+ public void resetSelected() {
+ selected = 0;
+ }
+ public void setSelected(int floor) {
+ selected = floor;
+ notifyDataSetChanged();
+ }
+
+
+ public void setData(String data){
+
+ }
+
+ @Override
+ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(context).inflate(R.layout.key_item, parent, false);
+ return new ViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder( final ViewHolder holder, final int position) {
+
+ holder.bt.setText(keylist[position]);
+
+ holder.bt.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ onitemClick.onItemClick(keylist[position]);
+
+ }
+ });
+ if(selected==140){
+ if(position==0){
+ holder.bt.requestFocus();
+ selected=position;
+ }
+ }
+ holder.bt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+
+ public void onFocusChange(View v, boolean hasFocus) {
+
+ if (hasFocus) {
+ holder.bt.setBackgroundResource(R.drawable.shape_key2);
+
+ }else {
+ holder.bt.setBackgroundResource(R.drawable.bt_keyboard);
+
+ }
+ }
+
+ });
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return keylist.length;
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder {
+
+ private Button bt;
+
+ public ViewHolder(View itemView) {
+ super(itemView);
+ bt = itemView.findViewById(R.id.bt);
+ }
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/adapter/MyBaseAdapter.java b/app/src/main/java/qianmu/container/adapter/MyBaseAdapter.java
new file mode 100644
index 0000000..839b939
--- /dev/null
+++ b/app/src/main/java/qianmu/container/adapter/MyBaseAdapter.java
@@ -0,0 +1,117 @@
+package qianmu.container.adapter;
+
+import android.content.Context;
+import android.util.SparseArray;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 适配器基类
+ * Created by genglaixin on 16/9/13.
+ */
+public abstract class MyBaseAdapter extends BaseAdapter {
+
+ protected Context mContext;
+ protected List mData = new ArrayList<>();
+ /**
+ * 选中项位置
+ */
+ public int selected = -1;
+
+ /**
+ * 初始化adapter时初始化数据 防止空指针异常
+ *
+ * @param context
+ */
+ public MyBaseAdapter(Context context) {
+ mContext = context;
+ }
+
+ /**
+ * 设置显示数据
+ *
+ * @param data
+ */
+ public void setData(List data) {
+ if (data == null) return;
+ mData = data;
+ }
+
+ /**
+ * 输出显示数据
+ *
+ * @return
+ */
+ public List getData() {
+ return mData;
+ }
+
+ /**
+ * 数据长度大于零时返回真实长度
+ *
+ * @return
+ */
+ @Override
+ public int getCount() {
+ return mData.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mData.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ return HasDataView(position, convertView, parent);
+ }
+
+
+ /**
+ * 有数据时显示的视图
+ *
+ * @param position
+ * @param convertView
+ * @param parent
+ * @return
+ */
+ public abstract View HasDataView(int position, View convertView, ViewGroup parent);
+
+ /**
+ * ListView使用ViewHolder极简写法
+ *
+ * @param convertView
+ * @param id
+ * @param
+ * @return
+ */
+ public static T getAdapterView(View convertView, int id) {
+
+
+ //获取视图中的viewholder
+ SparseArray viewHolder = (SparseArray) convertView.getTag();
+ //如果为null 创建viewholder并存入视图
+ if (null == viewHolder) {
+ viewHolder = new SparseArray<>();
+ convertView.setTag(viewHolder);
+ }
+ //获取viewholder中的控件
+ View childView = viewHolder.get(id);
+ //如果为null 查找到控件并存入viewholder
+ if (null == childView) {
+ childView = convertView.findViewById(id);
+ viewHolder.put(id, childView);
+ }
+ return (T) childView;
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/adapter/WeatherAdapter0.java b/app/src/main/java/qianmu/container/adapter/WeatherAdapter0.java
new file mode 100644
index 0000000..0c5cee9
--- /dev/null
+++ b/app/src/main/java/qianmu/container/adapter/WeatherAdapter0.java
@@ -0,0 +1,184 @@
+package qianmu.container.adapter;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import qianmu.container.R;
+import qianmu.container.entity.NewProgramBean;
+
+
+/**
+ *
+ */
+public class WeatherAdapter0 extends RecyclerView.Adapter {
+
+ private Context context;
+ List data = new ArrayList<>();
+ private NewProgramBean.components components;
+ public WeatherAdapter0(Context context, NewProgramBean.components components) {
+ this.context = context;
+ this.components =components;
+ }
+
+ public void setData(List data) {
+ if (data != null) this.data = data;
+ notifyDataSetChanged();
+ }
+
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(context).inflate(R.layout.weather_item0, parent, false);
+
+ return new ViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
+ //整体item大小
+ ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
+ float proportion = (float)components.getWidth()/(float)500;
+ layoutParams.width = (int)(proportion*100);
+ layoutParams.height = (int)(proportion*80);
+ //前面图标大小
+ ViewGroup.LayoutParams logParams = holder.img_logo.getLayoutParams();
+ logParams.height= (int)(proportion*22);
+ logParams.width= (int)(proportion*22);
+ //后面图标大小
+ ViewGroup.LayoutParams afterParams = holder.img_after.getLayoutParams();
+ afterParams.height= (int)(proportion*15);
+ afterParams.width= (int)(proportion*15);
+
+ //设置字体颜色
+ String fontColor = components.getConfig().getFontColor();
+ holder.tv_num0.setTextColor(Color.parseColor(fontColor));
+ holder.tv_num0.setTextSize((int)(proportion*24));
+ holder.tv_num0.setText(data.get(position));
+
+ int color = Color.parseColor(fontColor);
+ int r = Color.red(color);
+ int g = Color.green(color);
+ int b = Color.blue(color);
+ int a = Color.alpha(color);
+
+ if(position==0){
+ ViewGroup.LayoutParams afterParams1 = holder.img_after.getLayoutParams();
+ afterParams1.height= (int)(proportion*15);
+ afterParams1.width= (int)(proportion*10);
+ String weather = data.get(5);
+ if(weather.contains("晴")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_sum);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else if(weather.contains("阴")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_yin);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else if(weather.contains("云")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_cloud);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else if(weather.contains("雨")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_rian);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else if(weather.contains("雪")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_snow);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else {
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_sum);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_after_weather);
+ holder.img_after.setImageBitmap(bitmap1);
+ holder.img_after.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.VISIBLE);
+
+ }else if(position==1){
+ ViewGroup.LayoutParams afterParams2 = holder.img_after.getLayoutParams();
+ afterParams2.height= (int)(proportion*15);
+ afterParams2.width= (int)(proportion*12);
+
+ Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_humidity);
+ holder.img_logo.setImageBitmap(bitmap);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ Bitmap bitmap2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_after_hum);
+ holder.img_after.setImageBitmap(bitmap2);
+ holder.img_after.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.VISIBLE);
+
+ }else if(position==2){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_fen);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.GONE);
+ if(data.get(position).contains("转")){
+ String[] result = data.get(position).split("转");
+ holder.tv_num0.setText( result[0]);
+ }
+
+ }else if(position==3){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_aqi);
+ Bitmap bitmap2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_after_aqi);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setImageBitmap(bitmap2);
+ holder.img_after.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.VISIBLE);
+
+ }else if(position==4){
+
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_pm25);
+ Bitmap bitmap2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_after_pm25);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setImageBitmap(bitmap2);
+ holder.img_after.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.VISIBLE);
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return 5;
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder {
+
+ ImageView img_logo;
+ TextView tv_num0;
+ ImageView img_after;
+ public ViewHolder(View itemView) {
+ super(itemView);
+ img_logo = itemView.findViewById(R.id.img_logo);
+ tv_num0 = itemView.findViewById(R.id.tv_num0);
+ img_after = itemView.findViewById(R.id.img_after);
+
+ }
+ }
+
+ OnItemClickListener onItemClickListener;
+
+ public void setOnItemClickListener(OnItemClickListener listener) {
+ onItemClickListener = listener;
+ }
+
+ public interface OnItemClickListener {
+ void onItemClick(String onlineGoods);
+
+ }
+}
diff --git a/app/src/main/java/qianmu/container/adapter/WeatherAdapter1.java b/app/src/main/java/qianmu/container/adapter/WeatherAdapter1.java
new file mode 100644
index 0000000..6a37ff6
--- /dev/null
+++ b/app/src/main/java/qianmu/container/adapter/WeatherAdapter1.java
@@ -0,0 +1,189 @@
+package qianmu.container.adapter;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import qianmu.container.R;
+import qianmu.container.entity.NewProgramBean;
+
+
+/**
+ *
+ */
+public class WeatherAdapter1 extends RecyclerView.Adapter {
+
+ private Context context;
+ List data = new ArrayList<>();
+ NewProgramBean.components components;
+ public WeatherAdapter1(Context context, NewProgramBean.components components) {
+ this.context = context;
+ this.components=components;
+ }
+
+ public void setData(List data) {
+ if (data != null) this.data = data;
+ notifyDataSetChanged();
+ }
+
+ public void addData(List data) {
+ if (data != null) this.data.addAll(data);
+ }
+
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(context).inflate(R.layout.weather_item1, parent, false);
+ return new ViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
+ //整体item大小
+ ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
+ float proportion = (float)components.getWidth()/(float)500;
+ layoutParams.width = (int)(proportion*100);
+ layoutParams.height = (int)(proportion*100);
+ //前面图标大小
+ ViewGroup.LayoutParams logParams = holder.img_logo.getLayoutParams();
+ logParams.height= (int)(proportion*22);
+ logParams.width= (int)(proportion*22);
+ //后面图标大小
+ ViewGroup.LayoutParams afterParams = holder.img_after.getLayoutParams();
+ afterParams.height= (int)(proportion*15);
+ afterParams.width= (int)(proportion*15);
+
+ //设置字体颜色
+ String fontColor = components.getConfig().getFontColor();
+ holder.tv_num0.setTextColor(Color.parseColor(fontColor));
+ holder.tv_num0.setTextSize((int)(proportion*24));
+ holder.tv_num0.setText(data.get(position));
+
+ int color = Color.parseColor(fontColor);
+ int r = Color.red(color);
+ int g = Color.green(color);
+ int b = Color.blue(color);
+ int a = Color.alpha(color);
+
+ Log.e("TAG","R:"+r+",g:"+g+",b:"+b+",a:"+a);
+ if(position==0){
+ ViewGroup.LayoutParams afterParams1 = holder.img_after.getLayoutParams();
+ afterParams1.height= (int)(proportion*15);
+ afterParams1.width= (int)(proportion*10);
+ String weather = data.get(5);
+ if(weather.contains("晴")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_sum);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else if(weather.contains("阴")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_yin);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else if(weather.contains("云")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_cloud);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else if(weather.contains("雨")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_rian);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else if(weather.contains("雪")){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_snow);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }else {
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_sum);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ }
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_after_weather);
+ holder.img_after.setImageBitmap(bitmap1);
+ holder.img_after.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.VISIBLE);
+
+ }else if(position==1){
+ ViewGroup.LayoutParams afterParams2 = holder.img_after.getLayoutParams();
+ afterParams2.height= (int)(proportion*15);
+ afterParams2.width= (int)(proportion*12);
+
+ Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_humidity);
+ holder.img_logo.setImageBitmap(bitmap);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ Bitmap bitmap2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_after_hum);
+ holder.img_after.setImageBitmap(bitmap2);
+ holder.img_after.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.VISIBLE);
+
+ }else if(position==2){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_fen);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.GONE);
+ if(data.get(position).contains("转")){
+ String[] result = data.get(position).split("转");
+ holder.tv_num0.setText( result[0]);
+ }
+
+ }else if(position==3){
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_aqi);
+ Bitmap bitmap2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_after_aqi);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setImageBitmap(bitmap2);
+ holder.img_after.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.VISIBLE);
+
+ }else if(position==4){
+
+ Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_pm25);
+ Bitmap bitmap2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.weather_after_pm25);
+ holder.img_logo.setImageBitmap(bitmap1);
+ holder.img_logo.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setImageBitmap(bitmap2);
+ holder.img_after.setColorFilter(Color.argb(255,r,g,b));
+ holder.img_after.setVisibility(View.VISIBLE);
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return 5;
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder {
+
+ ImageView img_logo;
+ TextView tv_num0;
+ ImageView img_after;
+ public ViewHolder(View itemView) {
+ super(itemView);
+ img_logo = itemView.findViewById(R.id.img_logo);
+ tv_num0 = itemView.findViewById(R.id.tv_num0);
+ img_after = itemView.findViewById(R.id.img_after);
+
+ }
+ }
+
+ OnItemClickListener onItemClickListener;
+
+ public void setOnItemClickListener(OnItemClickListener listener) {
+ onItemClickListener = listener;
+ }
+
+ public interface OnItemClickListener {
+ void onItemClick(String onlineGoods);
+
+ }
+}
diff --git a/app/src/main/java/qianmu/container/app/Constant.java b/app/src/main/java/qianmu/container/app/Constant.java
new file mode 100644
index 0000000..7073aad
--- /dev/null
+++ b/app/src/main/java/qianmu/container/app/Constant.java
@@ -0,0 +1,120 @@
+package qianmu.container.app;
+
+import android.os.Environment;
+
+import qianmu.container.R;
+import qianmu.container.data.DeviceData;
+import qianmu.container.util.StringUtil;
+
+/**
+ * Created by genglaixin on 2018/5/7.
+ * 修改touch为lottie
+ */
+public class Constant {
+ public static boolean isMain = false; // 是否是主设备
+ public static boolean isSecondary = false; // 是否是从设备
+ public static boolean showScreenSaver = false;
+ public static boolean isCoreService = false; // 是否启动
+ public static boolean isScreen4K = false; // 是否为4K屏
+ public static boolean networkState = false; // 是否有网络
+ public static boolean tywx = false; // 是否为太原万象 mqtt密码修改
+ public static int rotate = 0; // T982截屏是否旋转角度
+ public static String screenType = "HDMI"; // 欣威视通3399设备为假关机 HDMI连接:可以用来判断是否为关机状态 LVDS连接:只能用定时关机时间来判断
+ public static boolean newGuide = false; // 指路机类型,true:新版指路机 false:老板指路机(流花)
+ public static String mqttState = ""; // 屏幕连接方式
+ // public static String androidBoardType = ""; //设备板子型号 无固定版
+ public static String androidBoardType = "ys"; // 设备板子型号 ys(亿晟) 北京颐堤港定制touch
+ // public static String androidBoardType = "xwst"; //设备板子型号 xwst(欣威视通3399)
+ // public static String androidBoardType = "xwst2"; //设备板子型号
+ // xwst2(欣威视通3588、T982、3576)
+ // public static String androidBoardType = "zc"; //设备板子型号 zc(卓策主板——王府井喜悦、杨浦中心医院)
+ // public static String androidBoardType = "sx"; //设备板子型号 sx(视想)
+ // public static String androidBoardType = "nova"; //设备板子型号 诺瓦盒子 华贸LED
+ // public static String androidBoardType = "huidu"; //设备板子型号 huidu(灰度主板) 罗湖寻车机
+ public static String whoActivity = ""; // 哪个activity页面
+ // 本地缓存地址
+ public static final String CACHE_PATH = StringUtil.strSplice(Environment.getExternalStorageDirectory().getPath(),
+ "/", "QMContainer", "/");
+
+ public static final String CACHE_PATH2 = StringUtil.strSplice(CACHE_PATH, "dist/");
+ public static final String CACHE_PATH3 = StringUtil.strSplice(CACHE_PATH, "dist/static/offline");
+
+ // 接口地址
+ public static final String DEFAULT_SERVER_IP = "https://iot.1000my.com";// 默认服务器ip
+
+ // 默认页面路径(注册、退出、更新、屏保)
+ public static final String ROUTE_DEVICE_INFO = "/library/deviceInfo";
+ public static final String ROUTE_SCREEN_SAVER = "/library/screenSaver";
+ public static final String ROUTE_WEB_VIEW = "/library/webView";
+ public static final String ROUTE_UPDATE_FILE = "/library/updateFile";
+
+ public static final String ACTION_APP_CRASH = "action_app_crash";
+ public static final String PACKAGE_NAME = "packageName";
+ public static final String APP_CRASH_PACKAGE_NAME = "qianmu.appcrashserfstart";
+
+ public static final String KEY_LOAD_H5_URL = "key_load_h5_url";
+
+ public static final String ACTION_EXIT = "cation_exit"; // 退出程序
+ public static final String ACTION_CAPTURE_SCREEN = "action_capture_screen"; // 截屏
+ public static final String UPDATE_DEVICE_IP = "action_update_device_ip"; // 更新设备ip
+ public static final String ACTION_SHOW_MAIN = "action_show_main"; // 跳转主界面
+ public static final String ACTION_SHOW_SPLASH = "action_show_splash"; // 跳转屏保界面
+ public static final String ACTION_START_INTER_CUT = "action_start_inter_cut"; // 开始插播
+ public static final String ACTION_STOP_INTER_CUT = "action_stop_inter_cut"; // 停止插播
+ public static final String ACTION_PLAY_PROGRAM_BY_INDEX = "action_play_program_by_index"; // 立即播放指定下标的节目
+ public static final String ACTION_PLAY_CUT_PROGRAM_BY_INDEX = "action_play_cut_program_by_index";// 立即播放指定下标的插播节目
+ public static final String ACTION_PLAY_VIDEO_PROGRAM_BY_INDEX = "action_play_video_program_by_index";// 立即播放指定下标的插播节目
+ public static final String ACTION_PLAY_IMG_PROGRAM_BY_INDEX = "action_play_img_program_by_index";// 立即播放指定下标的插播节目
+ public static final String ACTION_PLAY_NEXT_PROGRAM_BY_INDEX = "action_play_next_program_by_index";// 立即播放指定下标的插播节目
+ public static final String ACTION_MEDIA_UPDATE_COMPLETE = "action_media_complete"; // U盘更新完成
+ public static final String INPUT_PASSWORD = "input_password"; //
+
+ public static final String ACTION_CONNECT_WEB_SOCKET = "action_connect_web_socket"; //
+ public static final String ACTION_CLOSE_WEB_SOCKET = "action_close_web_socket";
+ public static final String ACTION_CONNECT_LOCAL_SOCKET = "action_connect_local_web_socket"; //
+ public static final String ACTION_CLOSE_LOCAL_SOCKET = "action_close_local_web_socket";
+ public static final String ACTION_START_SOCKET_SERVER = "action_start_socket_server";
+ public static final String ACTION_STOP_SOCKET_SERVER = "action_stop_socket_server";
+ public static final String ACTION_NETWORK = "action_network";// 网络通知
+ public static final String ACTION_MQTT_STATE = "action_mqtt_state";// 通知mqtt检测连接状态,如果断开进行重连
+ public static final String ACTION_MQTT_ALIVE = "action_mqtt_alive";// 通知mqtt检测连接状态,如果断开进行重连
+ public static final String ACTION_SHOW_UPDATE_H5 = "action_show_update_h5";// H5更新完成,通知页面更新
+ public static final String ACTION_SHOW_TOUCH_ME = "action_show_touch_me";// touch显示状态
+ public static final String ACTION_UPDATE_WEBVIEW = "action_update_webview";// 更新webview显示
+ public static final String ACTION_RESTART_CORESERVICE = "action_restart_coreService";// 重启导视服务
+ public static final String ACTION_UPDATE_PROG = "action_update_prog";// mqtt通知更新节目
+ public static final String ACTION_UPDATE_PROG2 = "action_update_prog2";// mqtt通知更新节目
+ public static final String ACTION_RESTART_APP = "action_restart_app";// 重启app
+ public static final String ACTION_RESTART_MQTT = "action_restart_mqtt";// 重启mqtt服务
+ public static final String ACTION_RESTART_MY_PRESENTATION = "action_restart_my_presentation";// 有新节目通知双面屏
+ public static final String NOVA_REBOOT = "nova_reboot";// 诺瓦设备重启设备
+ public static final String NOVA_INIT = "nova_init";// 诺瓦设备重启设备
+ public static final String NOVA_UPDATE_APP = "nova_update_app";// 诺瓦设备跟新app
+ public static final String NOVA_SCREEN_SHOT = "nova_screen_shot";// 诺瓦设备截屏
+ public static final String NOVA_SCREEN_POWER_ON = "nova_screen_power_on";// 诺瓦设备截屏
+ public static final String NOVA_SCREEN_POWER_CLOSE = "nova_screen_power_close";// 诺瓦设备截屏
+
+ public static final String APP_SEND_PACKAGE_NAME = "action_send_packageName";
+
+ /**
+ * 后台服务器地址
+ */
+ public static String getBaseAddress() { // 获取大后台url
+ String serverIp = DeviceData.getDeviceInfo(DeviceData.HINT_SERVER_IP, DEFAULT_SERVER_IP);
+ if (serverIp.endsWith("/")) {
+ return StringUtil.strSplice(serverIp);
+ } else {
+ return StringUtil.strSplice(serverIp) + "/";
+ }
+ }
+
+ /**
+ * 同屏Socket
+ */
+ public static String getLocalSocketAddress() {
+ String serverIp = DeviceData.getDeviceInfo(DeviceData.HINT_MAIN_DEVICE_IP, DEFAULT_SERVER_IP);
+ String socketPort = "8001";
+ return StringUtil.strSplice("ws://", serverIp, ":", socketPort);
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/app/MyApplication.java b/app/src/main/java/qianmu/container/app/MyApplication.java
new file mode 100644
index 0000000..d4de5b4
--- /dev/null
+++ b/app/src/main/java/qianmu/container/app/MyApplication.java
@@ -0,0 +1,181 @@
+package qianmu.container.app;
+
+import android.app.Application;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.PowerManager;
+
+import com.alibaba.android.arouter.BuildConfig;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.jakewharton.processphoenix.ProcessPhoenix;
+import com.lzy.okgo.OkGo;
+import com.sdkapi.api.SdkApi;
+import com.squareup.leakcanary.LeakCanary;
+import com.squareup.leakcanary.RefWatcher;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+import okhttp3.OkHttpClient;
+import qianmu.container.activity.BaseActivity;
+import qianmu.container.activity.H5.CoreService;
+import qianmu.container.data.DeviceData;
+import qianmu.container.mqtt.MQTTService;
+import qianmu.container.service.ContainerService;
+import qianmu.container.service.MessengerService;
+import qianmu.container.service.MusicService;
+import qianmu.container.socket.SocketServer;
+import qianmu.container.socket.manager.SocketServerManager;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.SSLSocketClient;
+import qianmu.container.util.StringUtil;
+
+@SuppressWarnings("All")
+public class MyApplication extends Application {
+
+ private static MyApplication myApplication;
+ private SocketServer socketServer;
+ private PowerManager powerManager = null;
+ private PowerManager.WakeLock wakeLock = null;
+
+ public static long lastClick = 0;//最后点击时间
+ public static long lastClickTime = 0;//最后点击时间
+ public static int clickTimes = 0;//累计点击次数
+
+ public SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ public SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ public SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
+ public SimpleDateFormat secondFormat = new SimpleDateFormat("ss");
+
+ public static MyApplication getInstance() {
+ return myApplication;
+ }
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ myApplication = this;
+ initARouter();
+ initOkGo();
+ SocketServerManager.startSocketServer();
+ initDefaultUncaughtExceptionHandler();
+// refWatcher = LeakCanary.install(this);
+ }
+
+ //初始化页面路由框架
+ private void initARouter() {
+ try {
+ if (BuildConfig.DEBUG) {
+ ARouter.openLog();
+ ARouter.openDebug();
+ }
+ ARouter.init(this);
+ } catch (Throwable t) {
+ LoggerUtil.e("initARouter", StringUtil.getThrowableStr(t));
+ }
+ }
+
+// private RefWatcher refWatcher;
+// public static RefWatcher getRefWatcher(Context context) {
+// MyApplication application = (MyApplication) context.getApplicationContext();
+// return application.refWatcher;
+// }
+
+
+ //初始化下载框架
+ private void initOkGo() {
+ try {
+ OkHttpClient.Builder builder = new OkHttpClient.Builder();
+ builder.readTimeout(5, TimeUnit.SECONDS);
+ builder.writeTimeout(5, TimeUnit.SECONDS);
+ builder.connectTimeout(5, TimeUnit.SECONDS);
+ builder.sslSocketFactory(SSLSocketClient.getSSLSocketFactory());//过滤https证书
+ builder.hostnameVerifier(SSLSocketClient.getHostnameVerifier());//过滤https证书
+ OkGo.getInstance().init(this).setOkHttpClient(builder.build()).setRetryCount(0);
+ } catch (Throwable t) {
+ LoggerUtil.e("initOkGo", StringUtil.getThrowableStr(t));
+ }
+ }
+
+ //页面常亮
+ private void initWakeLock() {
+ powerManager = (PowerManager) this.getSystemService(Service.POWER_SERVICE);
+ wakeLock = this.powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "App:My Lock");
+ wakeLock.setReferenceCounted(false);
+ wakeLock.acquire();
+ }
+
+ //异常崩溃监听
+ private void initDefaultUncaughtExceptionHandler() {
+ Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> {
+ long timeMillis = System.currentTimeMillis();
+ StringWriter sw = new StringWriter();
+ throwable.printStackTrace(new PrintWriter(sw));
+ String errorLog = StringUtil.strSplice(MyApplication.getInstance().dateTimeFormat.format(new Date(timeMillis)), ":\n", throwable.getMessage(), "\n", sw.toString());
+ LoggerUtil.e("errorLog", errorLog);
+ restartApp();
+ Intent intent = new Intent(Constant.ACTION_APP_CRASH);
+ intent.putExtra(Constant.PACKAGE_NAME, DeviceUtil.getPackageName());
+ sendStickyBroadcast(intent);
+ sendBroadcast(new Intent(Constant.ACTION_EXIT));
+ try {
+ PackageManager packageManager = getPackageManager();
+ Intent appIntent = packageManager.getLaunchIntentForPackage(Constant.APP_CRASH_PACKAGE_NAME);
+ startActivity(appIntent);
+ } catch (Throwable t) {
+ LoggerUtil.e("崩溃自启失败", StringUtil.getThrowableStr(t));
+ restartApp();
+ }
+
+ });
+ }
+
+ /**
+ * 重启软件
+ * */
+ public void restartApp(){
+ LoggerUtil.e("MyApplication", "重启软件");
+ stopService(new Intent(this, ContainerService.class));
+ stopService(new Intent(this, MessengerService.class));
+ stopService(new Intent(this, CoreService.class));
+ stopService(new Intent(this, MQTTService.class));
+
+ if("指路机".equals(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE))){
+ //开启背景音乐
+ stopService(new Intent(this, MusicService.class));//背景音乐
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ ProcessPhoenix.triggerRebirth(this);
+ }
+
+ //点击进入配置界面
+ public static boolean addClickTimes() {
+ if (System.currentTimeMillis() - lastClick > 5000) clickTimes = 0;
+ lastClick = System.currentTimeMillis();
+ clickTimes++;
+ if (clickTimes < 20) return false;
+ clickTimes = 0;
+ return true;
+ }
+
+
+ //是否点击相差1秒
+ public static boolean isClickTime() {
+ if (System.currentTimeMillis() - lastClickTime > 1000) {
+ lastClickTime = System.currentTimeMillis();
+ return true;
+ }else {
+ return false;
+ }
+ }
+}
diff --git a/app/src/main/java/qianmu/container/data/AppData.java b/app/src/main/java/qianmu/container/data/AppData.java
new file mode 100644
index 0000000..923d6a6
--- /dev/null
+++ b/app/src/main/java/qianmu/container/data/AppData.java
@@ -0,0 +1,116 @@
+package qianmu.container.data;
+
+import android.util.Log;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import qianmu.container.entity.App;
+import qianmu.container.entity.AppListResult;
+import qianmu.container.entity.AppTime;
+import qianmu.container.entity.Resp;
+import qianmu.container.http.retrofit.RetrofitUtil;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.listener.QueryPreparedListener;
+import qianmu.container.util.AesUtil;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class AppData extends BaseData {
+
+ public static final String NAME = "app_data";
+ public static final String APP_LIST = "app_list";
+ public static final String APP_TIME_LIST = "app_time_list";
+ public static final String FRONT_APP = "front_app";
+
+ public static void saveAppList(Object data) {
+ String dataJson = new Gson().toJson(data);
+ AppListResult appListResult = new Gson().fromJson(dataJson, AppListResult.class);
+ if (appListResult == null) return;
+ List appList = appListResult.getApList();
+ List appTimeList = appListResult.getAppTime();
+ saveDataJson(NAME, APP_LIST, new Gson().toJson(appList));
+ saveDataJson(NAME, APP_TIME_LIST, new Gson().toJson(appTimeList));
+ }
+
+ public static void saveFrontApp(String data) {
+ saveDataJson(NAME, FRONT_APP, data);
+ }
+
+ public static List getAppList() {
+ try {
+ String dataJson = getDataJson(NAME, APP_LIST);
+ return new Gson().fromJson(dataJson, new TypeToken>() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getAppList", StringUtil.getThrowableStr(t));
+ return new ArrayList<>();
+ }
+ }
+
+ public static List getAppTimeList() {
+ try {
+ String dataJson = getDataJson(NAME, APP_TIME_LIST);
+ return new Gson().fromJson(dataJson, new TypeToken>() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getAppList", StringUtil.getThrowableStr(t));
+ return new ArrayList<>();
+ }
+ }
+
+ public static String getFrontApp() {
+ try {
+ return getDataJson(NAME, FRONT_APP, DeviceUtil.getPackageName());
+ } catch (Throwable t) {
+ return DeviceUtil.getPackageName();
+ }
+ }
+
+ /**
+ * 软件下发
+ * */
+ public static void queryDevAppList(QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ Map params = new HashMap<>();
+ params.put("DevCode", DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE));
+ params.put("MallCode", DeviceData.getDeviceInfo(DeviceData.HINT_MALL_CODE));
+ params.put("Paging", "0");
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), AesUtil.encrypt(new Gson().toJson(params)));
+ RetrofitUtil.getBaseService().getDevAppList(requestBody).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ Log.e("getDevAppList", new Gson().toJson(response.body().getData()));
+ saveAppList(response.body().getData());
+ } else {
+ LoggerUtil.e("getDevAppList", StringUtil.getString(response.body().getMsg()));
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("getDevAppList", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("getDevAppList", StringUtil.getThrowableStr(t));
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/data/BaseData.java b/app/src/main/java/qianmu/container/data/BaseData.java
new file mode 100644
index 0000000..ded4664
--- /dev/null
+++ b/app/src/main/java/qianmu/container/data/BaseData.java
@@ -0,0 +1,38 @@
+package qianmu.container.data;
+
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.SharedPreUtil;
+import qianmu.container.util.StringUtil;
+
+public class BaseData {
+
+ protected static void saveDataJson(String name, String key, String value) {
+ try {
+ value = StringUtil.getString(value).replaceAll("\\\\", "/").replaceAll("///", "/");
+ SharedPreUtil.setParam(name, key, value);
+ } catch (Throwable t) {
+ LoggerUtil.e("saveDataJson", StringUtil.getThrowableStr(t));
+ }
+ }
+
+ protected static void saveDataJson(String name, String key, Object value) {
+ try {
+ SharedPreUtil.setParam(name, key, value);
+ } catch (Throwable t) {
+ LoggerUtil.e("saveDataJson", StringUtil.getThrowableStr(t));
+ }
+ }
+
+ protected static String getDataJson(String name, String key, String defaultValue) {
+ try {
+ return (String) SharedPreUtil.getParam(name, key, defaultValue);
+ } catch (Throwable t) {
+ LoggerUtil.e("getDataJson", StringUtil.getThrowableStr(t));
+ }
+ return defaultValue;
+ }
+
+ protected static String getDataJson(String name, String key) {
+ return getDataJson(name, key, "");
+ }
+}
diff --git a/app/src/main/java/qianmu/container/data/DeviceData.java b/app/src/main/java/qianmu/container/data/DeviceData.java
new file mode 100644
index 0000000..18f2d23
--- /dev/null
+++ b/app/src/main/java/qianmu/container/data/DeviceData.java
@@ -0,0 +1,736 @@
+package qianmu.container.data;
+
+import android.app.Activity;
+import android.util.Log;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.loopj.android.http.AsyncHttpClient;
+import com.loopj.android.http.AsyncHttpResponseHandler;
+import com.loopj.android.http.RequestParams;
+
+import java.math.BigInteger;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import cz.msebera.android.httpclient.Header;
+import cz.msebera.android.httpclient.entity.StringEntity;
+import cz.msebera.android.httpclient.protocol.HTTP;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import qianmu.container.activity.H5.H5Data;
+import qianmu.container.app.MyApplication;
+import qianmu.container.entity.AppVersionBean;
+import qianmu.container.entity.Device;
+import qianmu.container.entity.Dict;
+import qianmu.container.entity.JxbBean;
+import qianmu.container.entity.MqttInfoBean;
+import qianmu.container.entity.MqttTokenBean;
+import qianmu.container.entity.MusicBean;
+import qianmu.container.entity.Resp;
+import qianmu.container.entity.RespJXB;
+import qianmu.container.http.retrofit.RetrofitUtil;
+import qianmu.container.listener.QueryErrorListener;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.listener.QueryPreparedListener;
+import qianmu.container.listener.QuerySuccessListener;
+import qianmu.container.mqtt.CloseMqttBean;
+import qianmu.container.mqtt.MqttDataBean;
+import qianmu.container.util.AesUtil;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.GsonUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.MusicUtil;
+import qianmu.container.util.SignWayUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class DeviceData extends BaseData {
+
+ public static final String NAME = "device_data";
+ public static final String HINT_CONTAINER_TYPE = "hint_container_type";
+ public static final String HINT_REG_KEY = "hint_reg_key";
+ public static final String HINT_MALL_CODE = "hint_mall_code";
+ public static final String HINT_DEVICE_CODE = "hint_device_code";
+ public static final String HINT_DEFAULT_PICTURE = "hint_default_picture";
+ public static final String HINT_MAIN_DEVICE_IP = "HINT_MAIN_DEVICE_IP";
+ public static final String BUILDING_CODE = "building_code";
+ public static final String BUILDING_NAME = "building_name";
+ public static final String FLOOR_CODE = "floor_code";
+ public static final String FLOOR_NAME = "floor_name";
+ public static final String DOWNLOAD_IP = "download_ip";// 图片视频下载地址
+ public static final String HINT_DEVICE_IP = "hint_device_ip";
+ public static final String HINT_DEVICE_MAC = "hint_device_mac";
+ public static final String HINT_DEVICE_TYPE = "hint_device_type";
+ public static final String HINT_DEVICE_TOUCH = "hint_device_touch";//触摸属性 // 0触摸 1非触摸
+ public static final String HINT_SYNC_TEST = "hint_sync_test";
+ public static final String HINT_DEVICE_ROTATION = "hint_device_rotation";
+ public static final String HINT_DEVICE_POSITION = "hint_device_position";
+ public static final String HINT_DEVICE_NAME = "hint_device_name";//设备名称
+ public static final String DICT_LIST = "dict_list";
+ public static final String DEVICE = "device";
+ public static final String SHUIPAI_VERSION = "shuipai_version";//水牌版本
+
+ public static final String DEVICE_RESTART_TIME = "device_restart_time";//亿晟主板重启2次(避免屏幕黑屏)
+ public static final String INTERFACE_REQUEST = "interface request";//h5 接口请求
+
+ public static final String HINT_SERVER_IP = "hint_server_ip";
+ public static final String VERSION = "version";//版本号数据
+ public static final String JXB_DATA = "jxb_data";//机械臂轮播数据
+
+ public static void saveDeviceInfo(String key, String data) {
+ saveDataJson(NAME, key, StringUtil.getString(data));
+ }
+
+ public static void saveDeviceName(String data) {
+ saveDeviceInfo(HINT_DEVICE_NAME, data);
+ }
+
+ public static void saveDictList(Object data) {
+ saveDataJson(NAME, DICT_LIST, new Gson().toJson(data));
+ }
+
+ public static void saveDevice(Object data) {
+ saveDataJson(NAME, DEVICE, new Gson().toJson(data));
+ }
+
+ public static void saveVersion(Object data) {
+ saveDataJson(NAME, VERSION, new Gson().toJson(data));
+ }
+
+ public static void saveInterfaceRequest(String data) {
+ saveDataJson(NAME, INTERFACE_REQUEST, StringUtil.getString(data));
+ }
+
+ public static String getInterfaceRequestData() {
+ try {
+ return getDataJson(NAME, INTERFACE_REQUEST, "");
+ } catch (Throwable t) {
+ LoggerUtil.e("getDeviceInfo", StringUtil.getThrowableStr(t));
+ return "";
+ }
+ }
+
+ public static String getDeviceInfo(String key) {
+ return getDeviceInfo(key, "");
+ }
+
+ public static String getDeviceInfo(String key, String defaultValue) {
+ try {
+ return getDataJson(NAME, key, defaultValue);
+ } catch (Throwable t) {
+ LoggerUtil.e("getDeviceInfo", StringUtil.getThrowableStr(t));
+ return "";
+ }
+ }
+
+ public static List getDictList() {
+ try {
+ String dataJson = getDataJson(NAME, DICT_LIST);
+ return new Gson().fromJson(dataJson, new TypeToken>() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getDeviceInfo", StringUtil.getThrowableStr(t));
+ return new ArrayList<>();
+ }
+ }
+
+ public static Device getDevice() {
+ try {
+ String dataJson = getDataJson(NAME, DEVICE, "{}");
+ return new Gson().fromJson(dataJson, Device.class);
+ } catch (Throwable t) {
+ LoggerUtil.e("getDeviceInfo", StringUtil.getThrowableStr(t));
+ return null;
+ }
+ }
+
+ /**
+ * 机械臂轮播数据
+ * */
+ public static List getJxbData() {
+ try {
+ String dataJson = getDataJson(NAME, JXB_DATA, "[]");
+ return new Gson().fromJson(dataJson, new TypeToken>() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getDeviceInfo", StringUtil.getThrowableStr(t));
+ return new ArrayList<>();
+ }
+ }
+
+ /**
+ * 获取版本号
+ * */
+ public static AppVersionBean getAppVersionBean() {
+ try {
+ String dataJson = getDataJson(NAME, VERSION, "{}");
+ return new Gson().fromJson(dataJson, AppVersionBean.class);
+ } catch (Throwable t) {
+ LoggerUtil.e("getAppVersionBean", StringUtil.getThrowableStr(t));
+ return new AppVersionBean();
+ }
+ }
+
+ /**
+ * 更新设备信息
+ */
+ public static void addDevice(Activity activity, QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if(!MyApplication.isClickTime()) return;
+ if (preparedListener != null) preparedListener.onPrepared();
+ Map params = new HashMap<>();
+ params.put("code", DeviceData.getDeviceInfo(HINT_DEVICE_CODE));
+ params.put("ip", DeviceData.getDeviceInfo(HINT_DEVICE_IP));
+ params.put("mac", DeviceData.getDeviceInfo(HINT_DEVICE_MAC, SignWayUtil.getEthMacAddress()));
+ params.put("resolution", DeviceUtil.screenType(activity));
+ params.put("label", "android");
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(params));
+ RetrofitUtil.getBaseService().activeDevice(requestBody).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ MqttData.saveMqttInfo(response.body().getData());
+
+ } else {
+ ToastUtils.showToast(StringUtil.getString(response.body().getMsg()));
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("addDevice", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("addDevice", StringUtil.getThrowableStr(t));
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 获取图片视频下载地址ip
+ */
+ public static void getUploadUrl( QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+
+ RetrofitUtil.getBaseService().getUploadUrl().enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ String dataJson= AesUtil.decrypt((String.valueOf(response.body().getData())));
+ if(dataJson.equals("解密失败")){
+ saveDeviceInfo(DOWNLOAD_IP,String.valueOf(response.body().getData()));
+ LoggerUtil.e("getUploadUrl",String.valueOf(response.body().getData()));
+ }else {
+ saveDeviceInfo(DOWNLOAD_IP,dataJson);
+ LoggerUtil.e("getUploadUrl",dataJson);
+ }
+
+ } else {
+ ToastUtils.showToast(StringUtil.getString(response.body().getMsg()));
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("getUploadUrl", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.saveError("getUploadUrl",t);
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 上传版本号
+ * */
+ public static void sendVersion(QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ Map params = new HashMap<>();
+ params.put("code", DeviceData.getDeviceInfo(HINT_DEVICE_CODE));
+ params.put("appVersion", DeviceUtil.getVersionName());//app版本
+ params.put("programVersion", H5Data.getH5Version());//应用版本
+ params.put("ip", DeviceUtil.getLocalIP());//设备ip
+ params.put("hardwareFirmwareNum", SignWayUtil.getFirmwareVersion());//硬件固件号
+ params.put("hardwareVersionModel", SignWayUtil.getAndroidModle());// 硬件版本型号
+
+ LoggerUtil.e("TAG","设备型号:"+SignWayUtil.getAndroidModle());
+ LoggerUtil.e("TAG","固件:"+SignWayUtil.getFirmwareVersion());
+ LoggerUtil.e("TAG","安卓版本:"+SignWayUtil.getAndroidVersion());
+// params.put("resolution", DeviceUtil.screenType(activity) );//分辨率
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"),new Gson().toJson(params));
+ RetrofitUtil.getBaseService().sendVersion(requestBody).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+
+ } else if (response.code() == 200 && "201".equals(response.body().getCode())) {
+
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("sendVersion", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.saveError("sendVersion",t);
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 获取定时开关机
+ * */
+ public static void getMachineOnOffTime(QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+
+ RetrofitUtil.getBaseService().getMachineOnOffTime(DeviceData.getDeviceInfo(HINT_DEVICE_CODE)).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ String decryptDataJson = AesUtil.decrypt((String.valueOf(response.body().getData())));
+
+ if(decryptDataJson.equals("解密失败")){
+ MqttDataBean mqttDataBean =new Gson().fromJson(GsonUtil.getGson().toJson(response.body().getData()), new TypeToken() {}.getType());
+ PowerData.savePowerList(mqttDataBean.getTime());
+ }else {
+ MqttDataBean mqttDataBean =new Gson().fromJson(decryptDataJson, new TypeToken() {}.getType());
+ PowerData.savePowerList(mqttDataBean.getTime());
+ }
+ }
+ } catch (Throwable t) {
+
+ LoggerUtil.e("getMachineOnOffTime", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.saveError("getMachineOnOffTime",t);
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 获取同屏主设备
+ * */
+ public static void getPrimaryMachine(QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ RetrofitUtil.getBaseService().getPrimaryMachine(DeviceData.getDeviceInfo(HINT_DEVICE_CODE)).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ String decryptDataJson = AesUtil.decrypt((String.valueOf(response.body().getData())));
+
+ if(decryptDataJson.equals("解密失败")){
+ String dataJson = new Gson().toJson(response.body().getData());
+ Device device = new Gson().fromJson(dataJson, Device.class);
+ if (device == null) return;
+ String mainDevIP = StringUtil.getString(device.getIp());
+ DeviceData.saveDeviceInfo(HINT_MAIN_DEVICE_IP, mainDevIP);
+ }else {
+ Device device = new Gson().fromJson(decryptDataJson, Device.class);
+ if (device == null) return;
+ String mainDevIP = StringUtil.getString(device.getIp());
+ DeviceData.saveDeviceInfo(HINT_MAIN_DEVICE_IP, mainDevIP);
+ }
+ } else if (response.code() == 200 && "201".equals(response.body().getCode())) {
+ DeviceData.saveDeviceInfo(HINT_MAIN_DEVICE_IP, "");
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("getPrimaryMachine", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.saveError("getPrimaryMachine",t);
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 通过接口来判断网络是否正常
+ * */
+ public static void pingNet(QueryPreparedListener preparedListener, QueryFinishListener finishListener, QuerySuccessListener successListener , QueryErrorListener errorListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ RetrofitUtil.getBaseService().pingNet(DeviceData.getDeviceInfo(HINT_DEVICE_CODE)).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if(response.body()!=null){
+ LoggerUtil.e("pingNet()", new Gson().toJson(response.body()));
+ }else {
+ LoggerUtil.e("pingNet()", "body()=null");
+
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("pingNet()", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ if (successListener!=null)successListener.onSuccess();
+
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("pingNet()", "请求超时");
+ if (finishListener != null) finishListener.onFinish();
+ if (errorListener != null) errorListener.onError();
+ }
+ });
+ }
+
+ /**
+ * 进入导视上传记录
+ *
+ * */
+ public static void guideClickDataUpload(QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ Map params = new HashMap<>();
+ params.put("deviceCode", DeviceData.getDeviceInfo(HINT_DEVICE_CODE));
+ params.put("projectCode", FloorData.getMallCode());
+ params.put("recordType", "3");
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"),new Gson().toJson(params));
+ RetrofitUtil.getBaseService().guideClickDataUpload(requestBody).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("guideClickDataUpload", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.saveError("guideClickDataUpload",t);
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 机械臂重启
+ *
+ * */
+ public static void jxbReboot(QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ RetrofitUtil.getJxbService().jxbReboot("shockman!_$2023").enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+
+ }
+ });
+ }
+
+ /**
+ * 机械臂重启
+ *
+ * */
+ public static void jxbAutoBoot(String on,String off,QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ RetrofitUtil.getJxbService().jxbAutoBoot("shockman!_$2023",on,off).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ LoggerUtil.e("jxbAutoBoot()","机械臂重启:"+GsonUtil.getGson().toJson(response.body()));
+ if (StringUtil.respSuccess(response.body())) {
+
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("jxbAutoBoot", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("jxbAutoBoot", "请求超时");
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 机械臂过度文字
+ *
+ * */
+ public static void jxbSetTransText(String text,QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ RetrofitUtil.getJxbService().jxbSetTransText("shockman!_$2023",text).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ LoggerUtil.e("jxbSetTransText()","机械臂过度文字:"+GsonUtil.getGson().toJson(response.body()));
+ if (StringUtil.respSuccess(response.body())) {
+
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("jxbSetTransText", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("jxbSetTransText", "请求超时");
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 机械臂开机文字
+ *
+ * */
+ public static void jxbSetBootText(String text,QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ RetrofitUtil.getJxbService().jxbSetBootText("shockman!_$2023",text).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ LoggerUtil.e("jxbSetBootText()","机械臂开机文字:"+GsonUtil.getGson().toJson(response.body()));
+ if (StringUtil.respSuccess(response.body())) {
+
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("jxbSetBootText", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("jxbSetBootText", "请求超时");
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 设置机械臂逻辑零点
+ *
+ * */
+ public static void setLogicZero(int logicZero,QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ RetrofitUtil.getJxbService().setLogicZero("shockman!_$2023",logicZero).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+
+ LoggerUtil.e("setLogicZero()","设置机械臂逻辑零点:"+GsonUtil.getGson().toJson(response.body()));
+ if (StringUtil.respSuccess(response.body())) {
+
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("setLogicZero", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("setLogicZero", "请求超时");
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 机械臂轮播
+ *
+ * */
+ public static void setJxbPlay(String progText1, String progText2, String progDist, int progAngel, QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ int masterArm=1;
+ int rotationTime=60;
+ if(H5Data.getKdxf().getData().getControlInfo()!=null){
+ masterArm = H5Data.getKdxf().getData().getControlInfo().getMasterArm();
+ rotationTime = H5Data.getKdxf().getData().getControlInfo().getRotationTime();
+ }
+ String md5Data = md5(1 + progText1 + 6 + progText2 + 6 + progDist + 6 + "" + progAngel + "" + masterArm + "1" +"1"+ rotationTime+"shockman!_$2023");
+ RetrofitUtil.getJxbService().jxbPlay("shockman!_$2023",1,progText1,6,progText2,6,progDist,6,progAngel,masterArm,1,1,rotationTime,md5Data,1).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+
+ LoggerUtil.e("setJxbPlay()","机械臂轮播:"+GsonUtil.getGson().toJson(response.body()));
+// if (StringUtil.respSuccess(response.body())) {
+//
+// }
+ } catch (Throwable t) {
+ LoggerUtil.e("setJxbPlay", StringUtil.getThrowableStr(t));
+ }
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ LoggerUtil.e("setJxbPlay", "请求超时");
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ /**
+ * 获取背景音乐
+ */
+ public static void getBackgroundMusic(QueryPreparedListener preparedListener, QueryFinishListener finishListener , Map bigFiles ) {
+ String mallCode = FloorData.getMallCode();
+ RetrofitUtil.getBaseService().getSoundInfo(mallCode).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ Log.e("TAG","背景音乐"+GsonUtil.getGson().toJson(response.body()));
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ MusicUtil.saveData(response.body().getData());
+ for(MusicBean.soundFiles bean: MusicUtil.getBackgroundMusicList()){
+ String fileUrl = bean.getUrl();
+ bigFiles.put(fileUrl,fileUrl);
+ }
+ }
+ if (finishListener != null) finishListener.onFinish();
+ } catch (Throwable t) {
+ if (finishListener != null) finishListener.onFinish();
+ LoggerUtil.e("getBackgroundMusic()", StringUtil.getThrowableStr(t));
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ if (finishListener != null) finishListener.onFinish();
+ LoggerUtil.saveError("getBackgroundMusic",t);
+ }
+ });
+ }
+
+ //GET方式获取离线数据
+ public static void queryOfflineDataByInterfaceToGet(String url,QueryFinishListener finishListener) {
+ AsyncHttpClient client;
+ if(url.contains("https")){
+ client = new AsyncHttpClient(true, 80, 443);
+ }else {
+ client = new AsyncHttpClient();
+ }
+ client.setTimeout(20000);
+ client.setMaxRetriesAndTimeout(0, 20000);
+ client.get(url, new AsyncHttpResponseHandler() {
+ @Override
+ public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
+ try {
+ String response = new String(responseBody).replace("\\\\", "/");
+ saveInterfaceRequest(response);
+ } catch (Throwable t) {
+// LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+ //POST方式获取离线数据 多添加一个JSON请求体(参数必须是JSON格式)
+ public static void queryOfflineDataByInterfaceToPost(String url, String jsonData, QueryFinishListener finishListener) {
+ try {
+ AsyncHttpClient client;
+ if(url.contains("https")){
+ client = new AsyncHttpClient(true, 80, 443);
+ }else {
+ client = new AsyncHttpClient();
+ }
+ client.setTimeout(20000);
+ client.setMaxRetriesAndTimeout(0, 20000);
+// StringEntity entity = new StringEntity(jsonData);
+ StringEntity entity = new StringEntity(jsonData, HTTP.UTF_8);
+ client.post(MyApplication.getInstance().getApplicationContext(), url, entity, RequestParams.APPLICATION_JSON, new AsyncHttpResponseHandler() {
+ @Override
+ public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
+ try {
+ String response = new String(responseBody).replace("\\\\", "/");
+// Log.d("response", response);
+ saveInterfaceRequest(response);
+ } catch (Throwable t) {
+// LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ } catch (Throwable t) {
+ if (finishListener != null) finishListener.onFinish();
+// LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t));
+ }
+ }
+
+
+ public static String md5(String plainString) {
+ String cipherString = null;
+ try {
+ // 获取实例
+ MessageDigest messageDigest = MessageDigest.getInstance("MD5");
+ // 计算摘要
+ byte[] cipherBytes = messageDigest.digest(plainString.getBytes(StandardCharsets.UTF_8));
+ // 输出为16进制字符串
+ StringBuilder sb = new StringBuilder();
+ for (byte b : cipherBytes) {
+ sb.append(String.format("%02x", b));
+ }
+ cipherString = sb.toString();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return cipherString;
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/data/FloorData.java b/app/src/main/java/qianmu/container/data/FloorData.java
new file mode 100644
index 0000000..a56a082
--- /dev/null
+++ b/app/src/main/java/qianmu/container/data/FloorData.java
@@ -0,0 +1,248 @@
+package qianmu.container.data;
+
+import android.util.Log;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import qianmu.container.entity.Building;
+import qianmu.container.entity.DeviceOption;
+import qianmu.container.entity.Resp;
+import qianmu.container.http.retrofit.RetrofitUtil;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.listener.QueryPreparedListener;
+import qianmu.container.util.AesUtil;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+
+/**
+ * Created by genglaixin on 2018/9/19.
+ */
+public class FloorData extends BaseData {
+
+ public static final String NAME = "building_data";
+ public static final String KEY = "building_list";
+ public static final String MALL_CODE = "mall_code";
+ public static final String MALL_NAME = "mall_name";
+ public static final String CURRENT_DEVICE = "current_device";//当前设备信息
+ public static final String CURRENT_FLOOR = "current_floor";//当前设备楼层
+
+ private static final String PARKING_LOTS_STRING = "";//停车场字符串
+
+ public static void saveBuildingList(Object data) {
+ saveDataJson(NAME, KEY, new Gson().toJson(data));
+ }
+
+
+ public static void saveMallCode(String data) {
+ saveDataJson(NAME, MALL_CODE, data);
+ }
+
+ public static void saveMallName(String data) {
+ saveDataJson(NAME, MALL_NAME, data);
+ }
+
+ public static void saveCurrentDeviceInfo(Object data) {
+ saveDataJson(NAME, CURRENT_DEVICE, new Gson().toJson(data));
+ }
+
+ public static void saveCurrentFloorInfo(Object data) {
+ saveDataJson(NAME, CURRENT_FLOOR, new Gson().toJson(data));
+ }
+
+ //获取当前设备信息
+ public static Building.Machine getCurrentDeviceInfo() {
+ try {
+ return new Gson().fromJson(getDataJson(NAME, CURRENT_DEVICE), new TypeToken() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getCurrentDevice", StringUtil.getThrowableStr(t));
+ }
+ return new Building.Machine();
+ }
+
+ //获取当前设备所在楼层
+ public static Building.Floor getCurrentFloorInfo() {
+ try {
+ return new Gson().fromJson(getDataJson(NAME, CURRENT_FLOOR), new TypeToken() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getCurrentDevice", StringUtil.getThrowableStr(t));
+ }
+ return new Building.Floor();
+ }
+
+ //商场code
+ public static String getMallCode() {
+ return getDataJson(NAME, MALL_CODE,"");
+ }
+ //商场名称
+ public static String getMallName() {
+ return getDataJson(NAME, MALL_NAME,"");
+ }
+
+ //获取楼栋列表(包含楼层)
+ public static List getBuildingList() {
+ try {
+ return new Gson().fromJson(getDataJson(NAME, KEY), new TypeToken>() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getBuildingList", StringUtil.getThrowableStr(t));
+ }
+ return new ArrayList<>();
+ }
+
+ //获取楼层列表
+ public static List getFloorList() {
+ return getFloorListByBuildingCode(DeviceData.getDeviceInfo(DeviceData.BUILDING_CODE));
+ }
+
+ //根据楼栋code获取楼层数据
+ public static List getFloorListByBuildingCode(String buildingCode) {
+ List buildingList = getBuildingList();
+ for (Building building : buildingList) {
+ if (building == null) continue;
+ String tempCode = StringUtil.getString(building.getCode());
+ if (!tempCode.equals(buildingCode)) continue;
+ List floorList = building.getFloor();
+ if (floorList == null) return new ArrayList<>();
+ return floorList;
+ }
+ return new ArrayList<>();
+ }
+
+ //根据code获取楼层信息
+ public static Building.Floor getFloorByCode(String floorCode) {
+ List floorList = getFloorList();
+ for (Building.Floor floor : floorList) {
+ if (floor == null) continue;
+ String tempCode = StringUtil.getString(floor.getCode());
+ if (tempCode.equals(floorCode)) return floor;
+ }
+ return null;
+ }
+
+ //根据name获取楼层信息
+ public static Building.Floor getFloorByName(String floorName) {
+ List floorList = getFloorList();
+ for (Building.Floor floor : floorList) {
+ if (floor == null) continue;
+ String tempName = StringUtil.getString(floor.getName());
+ if (tempName.equals(floorName)) return floor;
+ }
+ return null;
+ }
+
+
+ //根据order获取楼层信息
+ public static Building.Floor getFloorByOrder(int floorOrder) {
+ List floorList = getFloorList();
+ for (Building.Floor floor : floorList) {
+ if (floor == null) continue;
+ if (floorOrder == floor.getOrder()) return floor;
+ }
+ return null;
+ }
+
+ //获取设备所在楼层信息
+ public static Building.Floor getDeviceFloor() {
+ String floorCode = DeviceData.getDeviceInfo(DeviceData.FLOOR_CODE);
+ return getFloorByCode(floorCode);
+ }
+
+ //获取设备楼层的具体信息
+ public static String getDeviceFloorCode() {
+ Building.Floor floor = getDeviceFloor();
+ if (floor == null) return "";
+ return StringUtil.getString(floor.getCode());
+ }
+
+ public static int getDeviceFloorOrder() {
+ Building.Floor floor = getDeviceFloor();
+ if (floor == null) return 0;
+ else return floor.getOrder();
+ }
+
+ public static String getDeviceFloorName() {
+ Building.Floor floor = getDeviceFloor();
+ if (floor == null) return "";
+ else return floor.getName();
+ }
+
+ public static String getFloorNameByCode(String floorCode) {
+ Building.Floor floor = getFloorByCode(floorCode);
+ if (floor == null) return "";
+ return StringUtil.getString(floor.getName());
+ }
+
+ public static String getFloorNameByOrder(int floorOrder) {
+ Building.Floor floor = getFloorByOrder(floorOrder);
+ if (floor == null) return "";
+ return StringUtil.getString(floor.getName());
+ }
+
+ /**
+ * 获取楼层和楼栋数据
+ */
+ public static void getDeviceOptionsNew(String mallCode, QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ String code= mallCode;
+ RetrofitUtil.getBaseService().getRegisterInfo( code ).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ String dataJson = new Gson().toJson(response.body().getData());
+ if(!dataJson.contains("projectCode")){
+ //加密数据
+ dataJson = AesUtil.decrypt((String.valueOf(response.body().getData())));
+
+ }
+ DeviceOption deviceOption = new Gson().fromJson(dataJson, DeviceOption.class);
+ if (deviceOption == null) {
+ Log.e("deviceOption", "deviceOption数据异常");
+ return;
+ }
+ List buildingList = deviceOption.getBuilding();
+ if (buildingList == null) {
+ Log.e("buildingList", "楼层数据异常");
+ return;
+ }
+ FloorData.saveBuildingList(buildingList);
+ FloorData.saveMallCode(deviceOption.getProjectCode());
+ FloorData.saveMallName(deviceOption.getProjectName());
+
+ if (finishListener != null) finishListener.onFinish();
+ }
+ if(response.body().getMsg()!=null){
+ ToastUtils.showToast(response.body().getMsg());
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("queryConstList", StringUtil.getThrowableStr(t));
+ }
+
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ ToastUtils.showToast("请求超时,获取楼栋楼层数据失败");
+ LoggerUtil.e("queryConstList", StringUtil.getThrowableStr(t));
+// if (finishListener != null) finishListener.onFinish();
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/qianmu/container/data/MqttData.java b/app/src/main/java/qianmu/container/data/MqttData.java
new file mode 100644
index 0000000..2d62eb1
--- /dev/null
+++ b/app/src/main/java/qianmu/container/data/MqttData.java
@@ -0,0 +1,183 @@
+package qianmu.container.data;
+
+import android.app.Activity;
+import android.util.Log;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import qianmu.container.app.MyApplication;
+import qianmu.container.entity.Device;
+import qianmu.container.entity.Dict;
+import qianmu.container.entity.MqttInfoBean;
+import qianmu.container.entity.MqttTokenBean;
+import qianmu.container.entity.Resp;
+import qianmu.container.http.retrofit.RetrofitUtil;
+import qianmu.container.listener.QueryFinishListener;
+import qianmu.container.listener.QueryPreparedListener;
+import qianmu.container.util.AesUtil;
+import qianmu.container.util.DeviceUtil;
+import qianmu.container.util.LoggerUtil;
+import qianmu.container.util.SignWayUtil;
+import qianmu.container.util.StringUtil;
+import qianmu.container.util.ToastUtils;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class MqttData extends BaseData {
+
+ public static final String NAME = "mqtt_data";
+ public static final String HINT_CONTAINER_TYPE = "hint_container_type";
+ public static final String HINT_REG_KEY = "hint_reg_key";
+ public static final String HINT_MALL_CODE = "hint_mall_code";
+ public static final String HINT_DEVICE_CODE = "hint_device_code";
+ public static final String MQTT_TOKEN = "mqtt_token";
+ public static final String MQTT_INFO = "mqtt_info";
+ public static final String DOWNLOAD_IP = "download_ip";// 图片视频下载地址
+ public static final String ACTIVATE_STATE = "activate_state";//激活状态
+ public static final String HINT_DEVICE_IP = "hint_device_ip";
+ public static final String HINT_DEVICE_MAC = "hint_device_mac";
+ public static final String HINT_DEVICE_TYPE = "hint_device_type";
+ public static final String HINT_DEVICE_NAME = "hint_device_name";//设备名称
+ public static final String DICT_LIST = "dict_list";
+ public static final String DEVICE = "device";
+ public static final String MQTT_TOPIC = "mqtt_topic"; // 除导视外其他url
+
+
+ public static void saveDeviceInfo(String key, String data) {
+ saveDataJson(NAME, key, StringUtil.getString(data));
+ }
+
+ //保存topic
+ public static void saveTopic(String data) {
+ saveDataJson(NAME,MQTT_TOPIC, data);
+ }
+
+ public static void saveDictList(Object data) {
+ saveDataJson(NAME, DICT_LIST, new Gson().toJson(data));
+ }
+
+ public static void saveDevice(Object data) {
+ saveDataJson(NAME, DEVICE, new Gson().toJson(data));
+ }
+
+ public static void saveMqttToken(Object data) {
+ saveDataJson(NAME, MQTT_TOKEN, new Gson().toJson(data));
+ }
+ public static void saveMqttInfo(Object data) {
+ saveDataJson(NAME, MQTT_INFO, new Gson().toJson(data));
+ }
+
+
+ public static List getMqttTopicList() {
+ try {
+ String dataJson = getDataJson(NAME, MQTT_TOPIC, "[]");
+
+ Log.e("TAG","topic列表:"+dataJson);
+ char[] chars = dataJson.toCharArray();
+ List strings = new ArrayList<>();
+ for(char s: chars){
+ strings.add(String.valueOf(s));
+ }
+ return strings;
+// return new Gson().fromJson(dataJson, new TypeToken>() {
+// }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getMqttToken", StringUtil.getThrowableStr(t));
+ return new ArrayList<>();
+ }
+ }
+
+ public static MqttTokenBean getMqttToken() {
+ try {
+ String dataJson = getDataJson(NAME, MQTT_TOKEN, "{}");
+ return new Gson().fromJson(dataJson, MqttTokenBean.class);
+ } catch (Throwable t) {
+ LoggerUtil.e("getMqttToken", StringUtil.getThrowableStr(t));
+ return new MqttTokenBean();
+ }
+ }
+
+ public static MqttInfoBean getMqttInfo() {
+ try {
+ String dataJson = getDataJson(NAME, MQTT_INFO, "{}");
+ return new Gson().fromJson(dataJson, MqttInfoBean.class);
+ } catch (Throwable t) {
+ LoggerUtil.e("getMqttInfo", StringUtil.getThrowableStr(t));
+ return new MqttInfoBean();
+ }
+ }
+
+ public static String getDeviceInfo(String key) {
+ return getDeviceInfo(key, "");
+ }
+
+ public static String getDeviceInfo(String key, String defaultValue) {
+ try {
+ return getDataJson(NAME, key, defaultValue);
+ } catch (Throwable t) {
+ LoggerUtil.e("getDeviceInfo", StringUtil.getThrowableStr(t));
+ return "";
+ }
+ }
+
+ public static List getDictList() {
+ try {
+ String dataJson = getDataJson(NAME, DICT_LIST);
+ return new Gson().fromJson(dataJson, new TypeToken>() {
+ }.getType());
+ } catch (Throwable t) {
+ LoggerUtil.e("getDeviceInfo", StringUtil.getThrowableStr(t));
+ return new ArrayList<>();
+ }
+ }
+
+ public static Device getDevice() {
+ try {
+ String dataJson = getDataJson(NAME, DEVICE, "{}");
+ return new Gson().fromJson(dataJson, Device.class);
+ } catch (Throwable t) {
+ LoggerUtil.e("getDeviceInfo", StringUtil.getThrowableStr(t));
+ return null;
+ }
+ }
+
+ /**
+ * 获取mqtt 连接密码
+ */
+ public static void getMQTTToken(String code, QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
+ if (preparedListener != null) preparedListener.onPrepared();
+ Map params = new HashMap<>();
+ params.put("code", code);
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(params));
+ RetrofitUtil.getBaseService().getTokenPass(requestBody).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ try {
+ if (StringUtil.respSuccess(response.body())) {
+ saveMqttToken(response.body().getData());
+ }
+ } catch (Throwable t) {
+ LoggerUtil.e("getMQTTToken", StringUtil.getThrowableStr(t));
+ }
+ if (finishListener != null) finishListener.onFinish();
+ }
+
+ @Override
+ public void onFailure(Call