commit f31fa38f1db4d6e035da41f0dfae9c3453e25eb3 Author: Anand S Date: Sat Apr 5 15:30:48 2025 +0530 rhodep: Initial import of device specific blobs * From rhodep_g-user 13 T1SUS33.1-124-6-14 a15be release-keys. Change-Id: Ifc556fab4a2d0afba881d7edcfb7137113d62622 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b78bd08 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +proprietary/product/priv-app/MotCamera4/MotCamera4.apk filter=lfs diff=lfs merge=lfs -text diff --git a/Android.bp b/Android.bp new file mode 100644 index 0000000..e670d69 --- /dev/null +++ b/Android.bp @@ -0,0 +1,5820 @@ +// +// Automatically generated file. DO NOT MODIFY +// + +soong_namespace { + imports: [ + "vendor/motorola/sm6375-common", + "device/motorola/sm6375-common", + "hardware/qcom-caf/common/libqti-perfd-client", + "hardware/qcom-caf/sm8350", + "hardware/qcom-caf/wlan", + "hardware/motorola", + "vendor/qcom/opensource/commonsys/display", + "vendor/qcom/opensource/commonsys-intf/display", + "vendor/qcom/opensource/dataservices", + "vendor/qcom/opensource/display", + ], +} + +cc_prebuilt_library_shared { + name: "libacdbloader", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm: { + srcs: [ + "proprietary/vendor/lib/libacdbloader.so", + ], + shared_libs: [ + "libcutils", + "libutils", + "liblog", + "libaudcal", + "libtinyalsa", + "libacdbrtac", + "libadiertac", + "libacdb-fts", + "libion", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libacdbloader.so", + ], + shared_libs: [ + "libcutils", + "libutils", + "liblog", + "libaudcal", + "libtinyalsa", + "libacdbrtac", + "libadiertac", + "libacdb-fts", + "libion", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "both", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.mot.eeprom.mot_gt24p128e_s5kjn1_eeprom", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p128e_s5kjn1_eeprom.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.mot.eeprom.mot_gt24p64e_ov16a1q_eeprom", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p64e_ov16a1q_eeprom.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.mot.eeprom.mot_rhodep_gc02m1_otp", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/com.mot.eeprom.mot_rhodep_gc02m1_otp.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.mot.eeprom.mot_rhodep_s5k4h7_otp", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/com.mot.eeprom.mot_rhodep_s5k4h7_otp.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.sensor.mot_gc02m1", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/com.qti.sensor.mot_gc02m1.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.sensor.mot_ov16a1q", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/com.qti.sensor.mot_ov16a1q.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.sensor.mot_s5k4h7", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5k4h7.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.sensor.mot_s5kjn1", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5kjn1.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.arcsoft.node.mfnr", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.arcsoft.node.mfnr.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "libutils", + "liblog", + "libofflinelog", + "libsync", + "libarcsoft_low_light_shot", + "libmpbase", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.mot.node.dc_capture", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.mot.node.dc_capture.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "libundistort_impl", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.mot.node.dc_preview", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.mot.node.dc_preview.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "libundistort_impl", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.camx.chiiqutils", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.camx.chiiqutils.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libchilog", + "libcom.qti.chinodeutils", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.eisv2", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.eisv2.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.eisv3", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.eisv3.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.hvx.addconstant", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.hvx.addconstant.so", + ], + shared_libs: [ + "libchilog", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.hvx.binning", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.hvx.binning.so", + ], + shared_libs: [ + "libchilog", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.customhwnode", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.customhwnode.so", + ], + shared_libs: [ + "libcamera_metadata", + "libcom.qti.chinodeutils", + "libchilog", + "libcutils", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.depth", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.depth.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.dewarp", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.dewarp.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcamximageformatutils", + "libchilog", + "libcom.qti.chinodeutils", + "libui", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.dummyrtb", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.dummyrtb.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.dummysat", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.dummysat.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.eisv2", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.eisv2.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libchilog", + "libcom.qti.chinodeutils", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.eisv3", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.eisv3.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libchilog", + "libcom.qti.chinodeutils", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.fcv", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.fcv.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "libsync", + "liblog", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.formatconversion", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.formatconversion.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.gpu", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.gpu.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.memcpy", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.memcpy.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.ml", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.ml.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libchilog", + "libcom.qti.chinodeutils", + "libcamxswispiqmodule", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.remosaic", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.remosaic.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "libfcell", + "libremosaic_wrapper", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.stich", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.stich.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.swaidenoiser", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.swaidenoiser.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libcamxswispiqmodule", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.swbestats", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.swbestats.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libcamxswispiqmodule", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.swcac", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.swcac.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.swlsc", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.swlsc.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libcamxswispiqmodule", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.swmctf", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.swmctf.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libcamxswispiqmodule", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.swmfnr", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.swmfnr.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libcamxswispiqmodule", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + check_elf_files: false, + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.swpdpc", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.swpdpc.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libcamxswispiqmodule", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.swpreprocess", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.swpreprocess.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "libcom.qti.chinodeutils", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.node.swregistration", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.node.swregistration.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libchilog", + "libcom.qti.chinodeutils", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.aec", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.aec.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libsync", + "libofflinelog", + "com.qti.stats.common", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.aecwrapper", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.aecwrapper.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.aecxcore", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.aecxcore.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libsync", + "libofflinelog", + "com.qti.stats.common", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.af", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.af.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "com.qti.stats.common", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.afd", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.afd.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.afwrapper", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.afwrapper.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.asd", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.asd.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.awb", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.awb.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "com.qti.stats.common", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.awbwrapper", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.awbwrapper.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.cnndriver", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.cnndriver.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libcdsprpc", + "libbitmlengine", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.haf", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.haf.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "com.qti.stats.common", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.hafoverride", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.hafoverride.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.pdlib", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.pdlib.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.pdlibsony", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibsony.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.pdlibwrapper", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qtistatic.stats.aec", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qtistatic.stats.aec.so", + ], + shared_libs: [ + "libchilog", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qtistatic.stats.af", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qtistatic.stats.af.so", + ], + shared_libs: [ + "libchilog", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qtistatic.stats.awb", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qtistatic.stats.awb.so", + ], + shared_libs: [ + "libchilog", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qtistatic.stats.pdlib", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so", + ], + shared_libs: [ + "libchilog", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.vidhance.node.ica", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.vidhance.node.ica.so", + ], + shared_libs: [ + "liblog", + "libcom.qti.chinodeutils", + "libcutils", + "libutils", + "libmotoisdataqueue", + "libvidhance", + "libsensorslog", + "libui", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.vidhance.node.processing", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.vidhance.node.processing.so", + ], + shared_libs: [ + "liblog", + "libcom.qti.chinodeutils", + "libcutils", + "libutils", + "libmotoisdataqueue", + "libvidhance", + "libsensorslog", + "libui", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.vidhance.stats.aec_dmbr", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/com.vidhance.stats.aec_dmbr.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libsync", + "libofflinelog", + "libvidhance", + "libsensorslog", + "libutils", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libdepthmapwrapper_secure", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/camera/components/libdepthmapwrapper_secure.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "camera/components", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.chiusecaseselector", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.chiusecaseselector.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.anchorsync", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.anchorsync.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.demux", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.demux.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.frameselect", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.frameselect.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.fusion", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.fusion.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.generic", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.generic.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.gs.mannar", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.gs.mannar.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "com.qti.feature2.frameselect", + "com.qti.feature2.generic", + "com.qti.feature2.serializer", + "com.qti.feature2.rt", + "com.qti.feature2.anchorsync", + "com.qti.feature2.demux", + "com.qti.feature2.fusion", + "com.qti.feature2.hdr", + "com.qti.feature2.memcpy", + "com.qti.feature2.mfsr", + "com.qti.feature2.rawhdr", + "com.qti.feature2.swmf", + "com.qti.feature2.mcreprocrt", + "com.qti.feature2.mux", + "com.qti.feature2.realtimeserializer", + "com.qti.feature2.rtmcx", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.hdr", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.hdr.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.mcreprocrt", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.mcreprocrt.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.memcpy", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.memcpy.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.mfsr", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.mfsr.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.mux", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.mux.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.rawhdr", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.rawhdr.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.realtimeserializer", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.realtimeserializer.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.rt", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.rt.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.rtmcx", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.rtmcx.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.serializer", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.serializer.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.feature2.swmf", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.feature2.swmf.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.settings.mannar", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.settings.mannar.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.stats.common", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qti.stats.common.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qualcomm.mcx.distortionmapper", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qualcomm.mcx.distortionmapper.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qualcomm.mcx.linearmapper", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qualcomm.mcx.linearmapper.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qualcomm.mcx.policy.mfl", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qualcomm.mcx.policy.mfl.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qualcomm.qti.mcx.usecase.extension", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/com.qualcomm.qti.mcx.usecase.extension.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "libchilog", + "vendor.qti.hardware.vpp@1.1", + "vendor.qti.hardware.vpp@1.2", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "camera.qcom", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/hw/camera.qcom.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libcamxfdengine", + "libcamximageformatutils", + "libcamxstatscore", + "libofflinedump", + "libprotobuf-cpp-full-3.9.1-vendorcompat", + "libqmi_cci", + "libqmi_common_so", + "libqmi_encdec", + "libsensorslog", + "libsnsapi", + "libmot_afd", + "libmotoisdataqueue", + "libz", + "libdl", + "libc", + "libm", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "hw", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "com.qti.chi.override", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/hw/com.qti.chi.override.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libchilog", + "vendor.qti.hardware.camera.postproc@1.0-service-impl", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "hw", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "fingerprint.focaltech.default", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/hw/fingerprint.focaltech.default.so", + ], + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "vendor.focaltech.fingerprint@1.0", + "libQSEEComAPI", + "liblog", + "libc++", + "libbase", + "libutils", + "libcutils", + "libbinder", + "libz", + "libcrypto", + "libprocessgroup", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + relative_install_path: "hw", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libBSTSWAD", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libBSTSWAD.so", + ], + shared_libs: [ + "liblog", + "libEGL", + "libGLESv3", + "libnativewindow", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + check_elf_files: false, + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libRbsFlow", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libRbsFlow.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libutils", + "libc", + "libm", + "libdl", + "libc++", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libarcsoft_low_light_shot", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libarcsoft_low_light_shot.so", + ], + shared_libs: [ + "libmpbase", + "liblog", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libbitmlengine", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libbitmlengine.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libcdsprpc", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libbitmlenginev2", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libbitmlenginev2.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libcdsprpc", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamera_nn_stub", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamera_nn_stub.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamerapostproc", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamerapostproc.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "com.qti.chi.override", + "com.qti.feature2.generic", + "libchilog", + "libz", + "libdl", + "libc", + "libm", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxexternalformatutils", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxexternalformatutils.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libsync", + "libc++", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxfacialfeatures", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxfacialfeatures.so", + ], + shared_libs: [ + "libcamxfdalgo", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxfdalgo", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxfdalgo.so", + ], + shared_libs: [ + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxfdengine", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxfdengine.so", + ], + shared_libs: [ + "libbitmlenginev2", + "libcamera_nn_stub", + "libcamxfdalgo", + "libcamxfacialfeatures", + "libcdsprpc", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxifestriping", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxifestriping.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamximageformatutils", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamximageformatutils.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libdisplayconfig.qti", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxqsatalgo", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxqsatalgo.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxstatscore", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxstatscore.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxswispiqmodule", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxswispiqmodule.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxswprocessalgo", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxswprocessalgo.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcamxtintlessalgo", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcamxtintlessalgo.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libchilog", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libchilog.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libsync", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libcom.qti.chinodeutils", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libcom.qti.chinodeutils.so", + ], + shared_libs: [ + "libcamera_metadata", + "libchilog", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libets_teeclient_v2", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libets_teeclient_v2.so", + ], + shared_libs: [ + "libcutils", + "libutils", + "libQSEEComAPI", + "libion", + "libqti-perfd-client", + "liblog", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libfcell", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libfcell.so", + ], + shared_libs: [ + "libc", + "libm", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libipebpsstriping", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libipebpsstriping.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libipebpsstriping170", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libipebpsstriping170.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libjpege", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libjpege.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "liblowlight_ai_portrait.arcsoft", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/liblowlight_ai_portrait.arcsoft.so", + ], + shared_libs: [ + "libcdsprpc", + "liblog", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libmctfengine_stub", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libmctfengine_stub.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libmmcamera_cac3", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libmmcamera_cac3.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libOpenCL", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libmot_afd", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libmot_afd.so", + ], + shared_libs: [ + "liblog", + "libutils", + "libcutils", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libmotoisdataqueue", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libmotoisdataqueue.so", + ], + shared_libs: [ + "liblog", + "libutils", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libmpbase", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libmpbase.so", + ], + shared_libs: [ + "libc", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libofflinedump", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libofflinedump.so", + ], + shared_libs: [ + "libc++", + "liblog", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libofflinelog", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libofflinelog.so", + ], + shared_libs: [ + "libcutils", + "liblog", + "libsync", + "libutils", + "libc++", + "libutilscallstack", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libopencv", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libopencv.so", + ], + shared_libs: [ + "libc", + "libm", + "libdl", + "liblog", + "libz", + "libc++", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libopestriping", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libopestriping.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libremosaic_wrapper", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libremosaic_wrapper.so", + ], + shared_libs: [ + "liblog", + "libutils", + "libcutils", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libswregistrationalgo", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libswregistrationalgo.so", + ], + shared_libs: [ + "liblog", + "libz", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libtfestriping", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libtfestriping.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "libcdsprpc", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libundistort_impl", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libundistort_impl.so", + ], + shared_libs: [ + "libcamera_metadata", + "libcom.qti.chinodeutils", + "liblog", + "libutils", + "libcutils", + "libBSTSWAD", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libvideooptfeature", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libvideooptfeature.so", + ], + shared_libs: [ + "libcutils", + "libutils", + "liblog", + "libbinder", + "libtinyxml2", + "libdisplayconfig.qti", + "libhidlbase", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + check_elf_files: false, + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libvidhance", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libvidhance.so", + ], + shared_libs: [ + "libGLESv3", + "libEGL", + "libGLESv2", + "libdl", + "libm", + "liblog", + "libc++", + "libc", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libvidhance_active_ois", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libvidhance_active_ois.so", + ], + shared_libs: [ + "libvidhance", + "libdl", + "libm", + "liblog", + "libGLESv3", + "libEGL", + "libGLESv2", + "libc++", + "libc", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libvidhance_dmbr", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libvidhance_dmbr.so", + ], + shared_libs: [ + "libvidhance", + "libdl", + "libm", + "liblog", + "libGLESv3", + "libEGL", + "libGLESv2", + "libc++", + "libc", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libvidhance_face_stabilizer", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libvidhance_face_stabilizer.so", + ], + shared_libs: [ + "libvidhance", + "libdl", + "libm", + "liblog", + "libGLESv3", + "libEGL", + "libGLESv2", + "libc++", + "libc", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libvidhance_fbc", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libvidhance_fbc.so", + ], + shared_libs: [ + "libvidhance", + "libdl", + "libm", + "liblog", + "libGLESv3", + "libEGL", + "libGLESv2", + "libc++", + "libc", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libvidhance_horizon_correction", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libvidhance_horizon_correction.so", + ], + shared_libs: [ + "libvidhance", + "libdl", + "libm", + "liblog", + "libGLESv3", + "libEGL", + "libGLESv2", + "libc++", + "libc", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libvidhance_stabilizer", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libvidhance_stabilizer.so", + ], + shared_libs: [ + "libvidhance", + "libdl", + "libm", + "liblog", + "libGLESv3", + "libEGL", + "libGLESv2", + "libc++", + "libc", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "libvidhance_zoom_stabilization", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/libvidhance_zoom_stabilization.so", + ], + shared_libs: [ + "libvidhance", + "libdl", + "libm", + "liblog", + "libGLESv3", + "libEGL", + "libGLESv2", + "libc++", + "libc", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "sensors.moto", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/sensors.moto.so", + ], + shared_libs: [ + "android.hardware.sensors@1.0", + "android.hardware.sensors@2.0", + "android.hardware.sensors@2.0-ScopedWakelock", + "android.hardware.sensors@2.1", + "libcutils", + "libfmq", + "libhardware", + "libhidlbase", + "libbase", + "liblog", + "libpower", + "libutils", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "sensors.ssc", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/sensors.ssc.so", + ], + shared_libs: [ + "libprotobuf-cpp-lite-3.9.1-vendorcompat", + "liblog", + "libsnsapi", + "libssc", + "libsnsdiaglog", + "libutils", + "libcutils", + "libsns_device_mode_stub", + "libsns_fastRPC_util", + "libsensorslog", + "libhardware", + "libhidlbase", + "android.hardware.sensors@2.0", + "android.hardware.sensors@2.0-ScopedWakelock", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "vendor.qti.hardware.display.mapper@1.1", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "vendor.egistec.hardware.fingerprint@4.0", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/vendor.egistec.hardware.fingerprint@4.0.so", + ], + shared_libs: [ + "libhidlbase", + "liblog", + "libutils", + "libcutils", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "vendor.focaltech.fingerprint@1.0", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/vendor.focaltech.fingerprint@1.0.so", + ], + shared_libs: [ + "libhidlbase", + "liblog", + "libutils", + "libcutils", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "vendor.qti.hardware.camera.postproc@1.0-service-impl", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so", + ], + shared_libs: [ + "libc++", + "libcutils", + "liblog", + "libofflinelog", + "libsync", + "android.hardware.graphics.allocator@3.0", + "android.hardware.graphics.common@1.1", + "android.hardware.graphics.mapper@3.0", + "android.hardware.graphics.mapper@2.0", + "android.hardware.graphics.mapper@2.1", + "libhardware", + "libhidlbase", + "libhidltransport", + "libqdMetaData", + "vendor.qti.hardware.display.allocator@3.0", + "vendor.qti.hardware.display.mapper@2.0", + "vendor.qti.hardware.display.mapper@3.0", + "libcamera_metadata", + "libutils", + "libqti_vndfwk_detect", + "android.hardware.graphics.allocator@4.0", + "android.hardware.graphics.mapper@4.0", + "libgralloc.qti", + "libgralloctypes", + "vendor.qti.hardware.display.allocator@4.0", + "vendor.qti.hardware.display.mapper@4.0", + "vendor.qti.hardware.display.mapperextensions@1.1", + "vendor.qti.hardware.camera.postproc@1.0", + "libz", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +cc_prebuilt_library_shared { + name: "vendor.qti.hardware.fingerprint@1.0", + owner: "motorola", + strip: { + none: true, + }, + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so", + ], + shared_libs: [ + "libhidlbase", + "liblog", + "libutils", + "libcutils", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + prefer: true, + soc_specific: true, +} + +android_app_import { + name: "MotoSignatureApp", + owner: "motorola", + apk: "proprietary/system/app/MotoSignatureApp/MotoSignatureApp.apk", + preprocessed: true, + presigned: true, + dex_preopt: { + enabled: false, + }, +} + +android_app_import { + name: "MotCamera3AI", + owner: "motorola", + apk: "proprietary/product/app/MotCamera3AI/MotCamera3AI.apk", + preprocessed: true, + presigned: true, + dex_preopt: { + enabled: false, + }, + product_specific: true, +} + +android_app_import { + name: "HotwordEnrollmentOKGoogleHEXAGON", + owner: "motorola", + apk: "proprietary/product/priv-app/HotwordEnrollmentOKGoogleHEXAGON/HotwordEnrollmentOKGoogleHEXAGON.apk", + certificate: "platform", + dex_preopt: { + enabled: false, + }, + privileged: true, + product_specific: true, +} + +android_app_import { + name: "HotwordEnrollmentXGoogleHEXAGON", + owner: "motorola", + apk: "proprietary/product/priv-app/HotwordEnrollmentXGoogleHEXAGON/HotwordEnrollmentXGoogleHEXAGON.apk", + certificate: "platform", + dex_preopt: { + enabled: false, + }, + privileged: true, + product_specific: true, +} + +android_app_import { + name: "MotCamera4", + owner: "motorola", + apk: "proprietary/product/priv-app/MotCamera4/MotCamera4.apk", + preprocessed: true, + presigned: true, + dex_preopt: { + enabled: false, + }, + privileged: true, + product_specific: true, +} + +android_app_import { + name: "MotorolaSettingsProvider", + owner: "motorola", + apk: "proprietary/system_ext/priv-app/MotorolaSettingsProvider/MotorolaSettingsProvider.apk", + certificate: "platform", + dex_preopt: { + enabled: false, + }, + privileged: true, + system_ext_specific: true, +} + +dex_import { + name: "com.motorola.motosignature", + owner: "motorola", + jars: [ + "proprietary/system/framework/com.motorola.motosignature.jar", + ], +} + +dex_import { + name: "moto-core_services", + owner: "motorola", + jars: [ + "proprietary/system/framework/moto-core_services.jar", + ], +} + +dex_import { + name: "moto-settings", + owner: "motorola", + jars: [ + "proprietary/system/framework/moto-settings.jar", + ], +} + +dex_import { + name: "com.android.hotwordenrollment.common.util", + owner: "motorola", + jars: [ + "proprietary/system_ext/framework/com.android.hotwordenrollment.common.util.jar", + ], + system_ext_specific: true, +} + +cc_prebuilt_binary { + name: "capsense_reset", + owner: "motorola", + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/bin/capsense_reset", + ], + shared_libs: [ + "liblog", + "libcutils", + "libhardware_legacy", + "libutils", + "libsensorndkbridge", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + strip: { + none: true, + }, + prefer: true, + soc_specific: true, +} + +cc_prebuilt_binary { + name: "android.hardware.biometrics.fingerprint@2.1-focalservice", + owner: "motorola", + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-focalservice", + ], + shared_libs: [ + "libcutils", + "liblog", + "libhidlbase", + "libhidltransport", + "libhardware", + "libutils", + "android.hardware.biometrics.fingerprint@2.1", + "fingerprint.focaltech.default", + "com.motorola.hardware.biometric.fingerprint@1.0", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + strip: { + none: true, + }, + prefer: true, + relative_install_path: "hw", + soc_specific: true, +} + +cc_prebuilt_binary { + name: "android.hardware.biometrics.fingerprint@2.1-service-ets", + owner: "motorola", + target: { + android_arm64: { + srcs: [ + "proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets", + ], + shared_libs: [ + "libbinder", + "libcutils", + "libhardware", + "liblog", + "libhidlbase", + "libhidltransport", + "libutils", + "android.hardware.biometrics.fingerprint@2.1", + "vendor.egistec.hardware.fingerprint@4.0", + "libRbsFlow", + "com.motorola.hardware.biometric.fingerprint@1.0", + "libc++", + "libc", + "libm", + "libdl", + ], + }, + }, + compile_multilib: "64", + strip: { + none: true, + }, + prefer: true, + relative_install_path: "hw", + soc_specific: true, +} + +sh_binary { + name: "motsettings", + owner: "motorola", + src: "proprietary/system_ext/bin/motsettings", + filename: "motsettings", + system_ext_specific: true, +} diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..362133d --- /dev/null +++ b/Android.mk @@ -0,0 +1,5 @@ +# +# Automatically generated file. DO NOT MODIFY +# + +LOCAL_PATH := $(call my-dir) diff --git a/BoardConfigVendor.mk b/BoardConfigVendor.mk new file mode 100644 index 0000000..18ed0ae --- /dev/null +++ b/BoardConfigVendor.mk @@ -0,0 +1,3 @@ +# +# Automatically generated file. DO NOT MODIFY +# diff --git a/proprietary/product/app/MotCamera3AI/MotCamera3AI.apk b/proprietary/product/app/MotCamera3AI/MotCamera3AI.apk new file mode 100644 index 0000000..ffb1ee1 Binary files /dev/null and b/proprietary/product/app/MotCamera3AI/MotCamera3AI.apk differ diff --git a/proprietary/product/etc/permissions/com.motorola.camera3.xml b/proprietary/product/etc/permissions/com.motorola.camera3.xml new file mode 100644 index 0000000..72eb259 --- /dev/null +++ b/proprietary/product/etc/permissions/com.motorola.camera3.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/proprietary/product/etc/permissions/com.motorola.moto-uirefresh.xml b/proprietary/product/etc/permissions/com.motorola.moto-uirefresh.xml new file mode 100644 index 0000000..6019a40 --- /dev/null +++ b/proprietary/product/etc/permissions/com.motorola.moto-uirefresh.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/proprietary/product/etc/permissions/deviceowner-configuration-com.motorola.camera3.xml b/proprietary/product/etc/permissions/deviceowner-configuration-com.motorola.camera3.xml new file mode 100644 index 0000000..ac14385 --- /dev/null +++ b/proprietary/product/etc/permissions/deviceowner-configuration-com.motorola.camera3.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/proprietary/product/etc/permissions/privapp-permissions-com.motorola.camera3.xml b/proprietary/product/etc/permissions/privapp-permissions-com.motorola.camera3.xml new file mode 100644 index 0000000..bf8cc53 --- /dev/null +++ b/proprietary/product/etc/permissions/privapp-permissions-com.motorola.camera3.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/proprietary/product/etc/sysconfig/hiddenapi-whitelist-com.motorola.camera3.xml b/proprietary/product/etc/sysconfig/hiddenapi-whitelist-com.motorola.camera3.xml new file mode 100644 index 0000000..ded0f65 --- /dev/null +++ b/proprietary/product/etc/sysconfig/hiddenapi-whitelist-com.motorola.camera3.xml @@ -0,0 +1,4 @@ + + + + diff --git a/proprietary/product/priv-app/HotwordEnrollmentOKGoogleHEXAGON/HotwordEnrollmentOKGoogleHEXAGON.apk b/proprietary/product/priv-app/HotwordEnrollmentOKGoogleHEXAGON/HotwordEnrollmentOKGoogleHEXAGON.apk new file mode 100644 index 0000000..f1117f5 Binary files /dev/null and b/proprietary/product/priv-app/HotwordEnrollmentOKGoogleHEXAGON/HotwordEnrollmentOKGoogleHEXAGON.apk differ diff --git a/proprietary/product/priv-app/HotwordEnrollmentXGoogleHEXAGON/HotwordEnrollmentXGoogleHEXAGON.apk b/proprietary/product/priv-app/HotwordEnrollmentXGoogleHEXAGON/HotwordEnrollmentXGoogleHEXAGON.apk new file mode 100644 index 0000000..c46e305 Binary files /dev/null and b/proprietary/product/priv-app/HotwordEnrollmentXGoogleHEXAGON/HotwordEnrollmentXGoogleHEXAGON.apk differ diff --git a/proprietary/product/priv-app/MotCamera4/MotCamera4.apk b/proprietary/product/priv-app/MotCamera4/MotCamera4.apk new file mode 100644 index 0000000..558147f --- /dev/null +++ b/proprietary/product/priv-app/MotCamera4/MotCamera4.apk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed02c74106375054f7a6bf11aa5bf4a36e0cf0230006c09fcff04d696dd7f47c +size 174933576 diff --git a/proprietary/system/app/MotoSignatureApp/MotoSignatureApp.apk b/proprietary/system/app/MotoSignatureApp/MotoSignatureApp.apk new file mode 100644 index 0000000..afce8b9 Binary files /dev/null and b/proprietary/system/app/MotoSignatureApp/MotoSignatureApp.apk differ diff --git a/proprietary/system/etc/permissions/com.motorola.motosignature.xml b/proprietary/system/etc/permissions/com.motorola.motosignature.xml new file mode 100644 index 0000000..67236fc --- /dev/null +++ b/proprietary/system/etc/permissions/com.motorola.motosignature.xml @@ -0,0 +1,5 @@ + + + + diff --git a/proprietary/system/etc/permissions/moto-core_services.xml b/proprietary/system/etc/permissions/moto-core_services.xml new file mode 100644 index 0000000..a1875e8 --- /dev/null +++ b/proprietary/system/etc/permissions/moto-core_services.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/proprietary/system/etc/permissions/moto-settings.xml b/proprietary/system/etc/permissions/moto-settings.xml new file mode 100644 index 0000000..6f1da92 --- /dev/null +++ b/proprietary/system/etc/permissions/moto-settings.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/proprietary/system/framework/com.motorola.motosignature.jar b/proprietary/system/framework/com.motorola.motosignature.jar new file mode 100644 index 0000000..444667b Binary files /dev/null and b/proprietary/system/framework/com.motorola.motosignature.jar differ diff --git a/proprietary/system/framework/moto-core_services.jar b/proprietary/system/framework/moto-core_services.jar new file mode 100644 index 0000000..1eb25ee Binary files /dev/null and b/proprietary/system/framework/moto-core_services.jar differ diff --git a/proprietary/system/framework/moto-settings.jar b/proprietary/system/framework/moto-settings.jar new file mode 100644 index 0000000..b80548d Binary files /dev/null and b/proprietary/system/framework/moto-settings.jar differ diff --git a/proprietary/system_ext/bin/motsettings b/proprietary/system_ext/bin/motsettings new file mode 100755 index 0000000..898e923 --- /dev/null +++ b/proprietary/system_ext/bin/motsettings @@ -0,0 +1,2 @@ +#!/system/bin/sh +cmd motsettings "$@" diff --git a/proprietary/system_ext/etc/permissions/com.android.hotwordenrollment.common.util.xml b/proprietary/system_ext/etc/permissions/com.android.hotwordenrollment.common.util.xml new file mode 100644 index 0000000..6f7d728 --- /dev/null +++ b/proprietary/system_ext/etc/permissions/com.android.hotwordenrollment.common.util.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/proprietary/system_ext/framework/com.android.hotwordenrollment.common.util.jar b/proprietary/system_ext/framework/com.android.hotwordenrollment.common.util.jar new file mode 100644 index 0000000..6d9d58c Binary files /dev/null and b/proprietary/system_ext/framework/com.android.hotwordenrollment.common.util.jar differ diff --git a/proprietary/system_ext/priv-app/MotorolaSettingsProvider/MotorolaSettingsProvider.apk b/proprietary/system_ext/priv-app/MotorolaSettingsProvider/MotorolaSettingsProvider.apk new file mode 100644 index 0000000..bb4a6e2 Binary files /dev/null and b/proprietary/system_ext/priv-app/MotorolaSettingsProvider/MotorolaSettingsProvider.apk differ diff --git a/proprietary/vendor/bin/capsense_reset b/proprietary/vendor/bin/capsense_reset new file mode 100755 index 0000000..370616c Binary files /dev/null and b/proprietary/vendor/bin/capsense_reset differ diff --git a/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-focalservice b/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-focalservice new file mode 100755 index 0000000..e8b0542 Binary files /dev/null and b/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-focalservice differ diff --git a/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets b/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets new file mode 100755 index 0000000..d29d527 Binary files /dev/null and b/proprietary/vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-ets differ diff --git a/proprietary/vendor/etc/acdbdata/Bluetooth_cal.acdb b/proprietary/vendor/etc/acdbdata/Bluetooth_cal.acdb new file mode 100644 index 0000000..8d92695 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Bluetooth_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/General_cal.acdb b/proprietary/vendor/etc/acdbdata/General_cal.acdb new file mode 100644 index 0000000..e199257 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/General_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Global_cal.acdb b/proprietary/vendor/etc/acdbdata/Global_cal.acdb new file mode 100644 index 0000000..590da1d Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Global_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Handset_cal.acdb b/proprietary/vendor/etc/acdbdata/Handset_cal.acdb new file mode 100644 index 0000000..2b9b51d Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Handset_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Hdmi_cal.acdb b/proprietary/vendor/etc/acdbdata/Hdmi_cal.acdb new file mode 100644 index 0000000..4b40a7c Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Hdmi_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Headset_cal.acdb b/proprietary/vendor/etc/acdbdata/Headset_cal.acdb new file mode 100644 index 0000000..bd83902 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Headset_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/Speaker_cal.acdb b/proprietary/vendor/etc/acdbdata/Speaker_cal.acdb new file mode 100644 index 0000000..5a8e498 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/Speaker_cal.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/adsp_avs_config.acdb b/proprietary/vendor/etc/acdbdata/adsp_avs_config.acdb new file mode 100644 index 0000000..a16693d Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/adsp_avs_config.acdb differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd new file mode 100644 index 0000000..c3e84ef Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd new file mode 100644 index 0000000..072fe17 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd new file mode 100644 index 0000000..4093c83 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00-1.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00-1.pmd new file mode 100644 index 0000000..0571469 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00-1.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00.pmd new file mode 100644 index 0000000..0571469 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd new file mode 100644 index 0000000..e9ec254 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd new file mode 100644 index 0000000..ec97498 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd new file mode 100644 index 0000000..ec97498 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd new file mode 100644 index 0000000..1779a1a Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd new file mode 100644 index 0000000..32a75a3 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd differ diff --git a/proprietary/vendor/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd b/proprietary/vendor/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd new file mode 100644 index 0000000..67323d9 Binary files /dev/null and b/proprietary/vendor/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd differ diff --git a/proprietary/vendor/etc/camera/SwadAIMod.bin b/proprietary/vendor/etc/camera/SwadAIMod.bin new file mode 100644 index 0000000..40b75ab Binary files /dev/null and b/proprietary/vendor/etc/camera/SwadAIMod.bin differ diff --git a/proprietary/vendor/etc/camera/SwadCalib.bin b/proprietary/vendor/etc/camera/SwadCalib.bin new file mode 100644 index 0000000..cf82f6a Binary files /dev/null and b/proprietary/vendor/etc/camera/SwadCalib.bin differ diff --git a/proprietary/vendor/etc/camera/SwadParamList.txt b/proprietary/vendor/etc/camera/SwadParamList.txt new file mode 100644 index 0000000..6f67340 Binary files /dev/null and b/proprietary/vendor/etc/camera/SwadParamList.txt differ diff --git a/proprietary/vendor/etc/camera/aec_golden_wide.bin b/proprietary/vendor/etc/camera/aec_golden_wide.bin new file mode 100644 index 0000000..73c5474 Binary files /dev/null and b/proprietary/vendor/etc/camera/aec_golden_wide.bin differ diff --git a/proprietary/vendor/etc/camera/dual_golden_wide.bin b/proprietary/vendor/etc/camera/dual_golden_wide.bin new file mode 100644 index 0000000..8de0824 Binary files /dev/null and b/proprietary/vendor/etc/camera/dual_golden_wide.bin differ diff --git a/proprietary/vendor/etc/camera/vidhance_calibration b/proprietary/vendor/etc/camera/vidhance_calibration new file mode 100644 index 0000000..5b02c03 --- /dev/null +++ b/proprietary/vendor/etc/camera/vidhance_calibration @@ -0,0 +1,6 @@ +Version: 2 +Date: 2022-01-26 +Device: Rhode 5G+ +Description: EIS Calibration +>Icccca34!/(&-%2ayc>Icccccccca5$16(2-aycqoIcccccccca' 7$aycaqsqqlsplquaoIcccccccca'$5(&$ayca+2'$ct +naoIcccccccca'$6&1(37(2-aycac /(!1 7(2-aIccccIccccccccasayc>Icccccccccccca34!/(&$6&1(37(2-ayca &.c, (-c& ,$1 aoIcccccccccccca/'& 1 ,$7$16ayc>Icccccccccccccccca,2'$/ayca63/(-$aoIcccccccccccccccca%21: 1'2(-76aycsocsmssswtpptvqxoczmqqsv{{{t$lsuoclsmssqpx{wsp{woclsmsswzvq{uvtpoclsmssvxutwvuxtoIcccccccccccccccca%21: 1'7$3(9$aycsmptpwsx{stoIcccccccccccccccca%(6+$8$ &721aycsoIcccccccccccccccca1$ 33/8ayc714$IccccccccccccIccccccccccccccccapayc>Icccccccccccccccccccca34!/(&$6&1(37(2-aycaps{scvscaoIcccccccccccccccccccca%2& /$-*7+ 21, /(9$'aycsm{qttzwoIcccccccccccccccccccca12//(-*+477$1(,$aycvpmxus{oIcccccccccccccccccccca*812(,$67 ,3%%6$7aycvmtuxzoIcccccccccccccccccccca/$-626(7(2-221'(- 7$867$,ayc>Icccccccccccccccccccccccca71 -6/ 7(2-aycsmstxwwuvtvtocsmpwzt{ww{voIcccccccccccccccccccccccca6& /(-*ayclsmsv{zvwusvzoclsmsv{zvqtpspoIcccccccccccccccccccccccca127 7(2-ayclsmsuwzsutzpwoIcccccccccccccccccccccccca' 7 83$ayca+ //aIccccccccccccccccccccIcccccccccccca34!/(&$6&1(37(2-ayca12-7c& ,$1 aoIcccccccccccca/'& 1 ,$7$16ayc>Icccccccccccccccca,2'$/ayca63/(-$aoIcccccccccccccccca%21: 1'2(-76aycsocsmssquzsqzqwxocsmsspptuzt{tqoclsmssszpxvz{{pxocsmssqutpt{uqocsmssz{tzpuwvzoIcccccccccccccccca%21: 1'7$3(9$aycsmpzwwuv{sxoIcccccccccccccccca%(6+$8$ &721aycsoIcccccccccccccccca1$ 33/8ayc714$IccccccccccccIccccccccccccccccapayc>Icccccccccccccccccccca34!/(&$6&1(37(2-aycaps{scvscaoIcccccccccccccccccccca%2& /$-*7+ 21, /(9$'aycsmzpuw{poIcccccccccccccccccccca12//(-*+477$1(,$aycpwmzqtxoIcccccccccccccccccccca*812(,$67 ,3%%6$7aycqmxvtzIccccccccccccccccIcccccccccccca34!/(&$6&1(37(2-ayca &.c, &12ckhc& ,$1 aoIcccccccccccca/'& 1 ,$7$16ayc>Icccccccccccccccca,2'$/ayca63/(-$aoIcccccccccccccccca%21: 1'2(-76aycsocsmsss{qqxtwqqxocsmssstupswqvwocsmsswuxxuvvxqocsmspupuuv{xocsmsqvsuxuqspoIcccccccccccccccca%21: 1'7$3(9$aycsmpt{xqztvoIcccccccccccccccca%(6+$8$ &721aycsoIcccccccccccccccca1$ 33/8ayc714$IccccccccccccIccccccccccccccccasayc>Icccccccccccccccccccca34!/(&$6&1(37(2-aycaps{scvsccwyvaoIcccccccccccccccccccca%2& /$-*7+ 21, /(9$'aycsmz{utqqoIcccccccccccccccccccca12//(-*+477$1(,$aycvpmqzpwoIcccccccccccccccccccca*812(,$67 ,3%%6$7aycvmuzzsIccccccccccccccccIcccccccccccca34!/(&$6&1(37(2-ayca &.c4:c& ,$1 aoIcccccccccccca/'& 1 ,$7$16ayc>Icccccccccccccccca,2'$/ayca63/(-$aoIcccccccccccccccca%21: 1'2(-76aycsocsmssstupz{uqxqocsmssvuupzwtwuocsmsps{{{xpvuocsmspxwwxwwwtocsmsqvzwtsvvxoIcccccccccccccccca%21: 1'7$3(9$aycsmqzwpqtqp{oIcccccccccccccccca%(6+$8$ &721aycsoIcccccccccccccccca1$ 33/8ayc714$IccccccccccccIccccccccccccccccasayc>Icccccccccccccccccccca34!/(&$6&1(37(2-aycaps{scvsccwyvaoIcccccccccccccccccccca%2& /$-*7+ 21, /(9$'aycsmwttxxuoIcccccccccccccccccccca12//(-*+477$1(,$aycvqmvqwwoIcccccccccccccccccccca*812(,$67 ,3%%6$7aycqmuwv{oIcccccccccccccccccccca,$6+(9$aycvvocqpIccccccccccccccccIcccca34!/(&-%2ayc>Icccccccca5$16(2-aycvoIcccccccca' 7$aycaqsqqlsvls{aoIcccccccca'$5(&$ayca+2'$ct +nclc4--8aoIcccccccca'$6&1(37(2-aycacecck4--8hc /(!1 7(2-aIccccIccccccccasayc>Icccccccccccca34!/(&$6&1(37(2-ayca &.c, (-c& ,$1 aoIcccccccccccca/'& 1 ,$7$16ayc>Icccccccccccccccca,2'$/ayca63/(-$aoIcccccccccccccccca%21: 1'2(-76aycsocsmssswtpptvqxoczmqqsv{{{t$lsuoclsmssqpx{wsp{woclsmsswzvq{uvtpoclsmssvxutwvuxtoIcccccccccccccccca%21: 1'7$3(9$aycsmptpwsx{stoIcccccccccccccccca%(6+$8$ &721aycsoIcccccccccccccccca1$ 33/8ayc714$IccccccccccccIccccccccccccccccapayc>Icccccccccccccccccccca34!/(&$6&1(37(2-aycaps{scvscaoIcccccccccccccccccccca%2& /$-*7+ 21, /(9$'aycsm{qttzwoIcccccccccccccccccccca12//(-*+477$1(,$aycvpmxus{oIcccccccccccccccccccca*812(,$67 ,3%%6$7aycvmtuxzoIcccccccccccccccccccca/$-626(7(2-221'(- 7$867$,ayc>Icccccccccccccccccccccccca71 -6/ 7(2-aycsmpt{{wpqqvocsmpuvvq{vzxoIcccccccccccccccccccccccca6& /(-*ayclsmsvtpvxvuzoclsmsvwwqsvszzoIcccccccccccccccccccccccca127 7(2-aycsmxpts{ssppoIcccccccccccccccccccccccca' 7 83$ayca+ //aIccccccccccccccccccccIcccccccccccca34!/(&$6&1(37(2-ayca12-7c& ,$1 aoIcccccccccccca/'& 1 ,$7$16ayc>Icccccccccccccccca,2'$/ayca63/(-$aoIcccccccccccccccca%21: 1'2(-76aycsocsmssquzsqzqwxocsmsspptuzt{tqoclsmssszpxvz{{pxocsmssqutpt{uqocsmssz{tzpuwvzoIcccccccccccccccca%21: 1'7$3(9$aycsmpzwwuv{sxoIcccccccccccccccca%(6+$8$ &721aycsoIcccccccccccccccca1$ 33/8ayc714$IccccccccccccIccccccccccccccccapayc>Icccccccccccccccccccca34!/(&$6&1(37(2-aycaps{scvscaoIcccccccccccccccccccca%2& /$-*7+ 21, /(9$'aycsmzpuw{poIcccccccccccccccccccca12//(-*+477$1(,$aycpwmzqtxoIcccccccccccccccccccca*812(,$67 ,3%%6$7aycqmxvtzIccccccccccccccccIcccccccccccca34!/(&$6&1(37(2-ayca &.c, &12ckhc& ,$1 aoIcccccccccccca/'& 1 ,$7$16ayc>Icccccccccccccccca,2'$/ayca63/(-$aoIcccccccccccccccca%21: 1'2(-76aycsocsmsss{qqxtwqqxocsmssstupswqvwocsmsswuxxuvvxqocsmspupuuv{xocsmsqvsuxuqspoIcccccccccccccccca%21: 1'7$3(9$aycsmpt{xqztvoIcccccccccccccccca%(6+$8$ &721aycsoIcccccccccccccccca1$ 33/8ayc714$IccccccccccccIccccccccccccccccasayc>Icccccccccccccccccccca34!/(&$6&1(37(2-aycaps{scvsccwyvaoIcccccccccccccccccccca%2& /$-*7+ 21, /(9$'aycsmz{utqqoIcccccccccccccccccccca12//(-*+477$1(,$aycvpmqzpwoIcccccccccccccccccccca*812(,$67 ,3%%6$7aycvmuzzsIccccccccccccccccIcccccccccccca34!/(&$6&1(37(2-ayca &.c4:c& ,$1 aoIcccccccccccca/'& 1 ,$7$16ayc>Icccccccccccccccca,2'$/ayca63/(-$aoIcccccccccccccccca%21: 1'2(-76aycsocsmssstupz{uqxqocsmssvuupzwtwuocsmsps{{{xpvuocsmspxwwxwwwtocsmsqvzwtsvvxoIcccccccccccccccca%21: 1'7$3(9$aycsmqzwpqtqp{oIcccccccccccccccca%(6+$8$ &721aycsoIcccccccccccccccca1$ 33/8ayc714$IccccccccccccIccccccccccccccccasayc>Icccccccccccccccccccca34!/(&$6&1(37(2-aycaps{scvsccwyvaoIcccccccccccccccccccca%2& /$-*7+ 21, /(9$'aycsmwttxxuoIcccccccccccccccccccca12//(-*+477$1(,$aycvqmvqwwoIcccccccccccccccccccca*812(,$67 ,3%%6$7aycqmuwv{oIcccccccccccccccccccca,$6+(9$aycvvocqpIcccccccccccccccc L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x3B +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# + diff --git a/proprietary/vendor/etc/libnfc-mtp-SN100.conf b/proprietary/vendor/etc/libnfc-mtp-SN100.conf new file mode 100644 index 0000000..fb651b5 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-mtp-SN100.conf @@ -0,0 +1,780 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +## Modified by Motorola Mobility LLC +## Version : Cypfr.4 (2021/06/09) +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} + +# *** RFBOARD30x20FN FW VERSION = 01.10.5B *** +NXP_RF_CONF_BLK_1={ + 20, 02, DB, 04, + A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 18, 18, 18, 18, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, FF, 07, 13, 07, 05, 13, + A0, A4, 85, 14, 00, 01, 00, 00, 00, 00, 03, 00, 06, 00, 0A, 00, 0D, 00, 10, 00, 14, 00, 17, 00, 1B, 00, 1E, 00, 21, 00, 25, 00, 28, 00, 2C, 00, 2F, 00, 32, 00, 36, 00, 39, 00, 3D, 00, 40, 00, 43, 00, 47, 00, 4A, 00, 4E, 00, 51, 00, 54, 00, 58, 00, 5B, 00, 5E, 00, 62, 00, 65, 00, 69, 00, 6C, 00, 6F, 00, 73, 00, 76, 00, 7A, 00, 7D, 00, 80, 00, 84, 00, 87, 00, 8B, 00, 8E, 00, 91, 00, 95, 00, 98, 00, 9C, 00, 9F, 00, A2, 00, A6, 00, A9, 00, AC, 00, B0, 00, B3, 00, B7, 00, BA, 00, BD, 00, C1, 00, C4, 00, C8, 00, CB, 00, CE, 00, D2, 00, D5, 00, + A0, A5, 0D, 3B, 3B, 3B, 3B, 3B, 3B, FF, 03, 1F, 00, 3B, 00, 00, + A0, 6A, 10, 28, 00, 28, 00, 28, 00, 28, 00, 80, 02, 80, 02, 80, 02, 80, 02 +} + +NXP_RF_CONF_BLK_2={ + 20, 02, CC, 01, + A0, 34, C8, 23, 04, 3D, 01, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00 +} + +NXP_RF_CONF_BLK_3={ + 20, 02, 66, 01, + A1, 0A, 62, 14, 08, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00 +} + +NXP_RF_CONF_BLK_4={ + 20, 02, F1, 01, + A0, A9, ED, 40, 2A, FF, 41, 24, FF, 42, 1F, FF, 43, 1A, FF, 44, 16, FF, 45, 12, FF, 46, 0F, FF, 47, 0C, FF, 07, 2A, F1, 48, 09, FF, 08, 23, F7, 49, 07, FF, 09, 1E, F7, 4A, 05, FF, 0A, 19, FA, 4B, 03, FF, 0B, 15, FA, 4C, 01, FF, 0C, 12, F5, 0D, 0F, F2, 0E, 0C, F2, 0F, 09, F5, 10, 06, FC, 11, 06, E2, 12, 02, FB, 13, 01, F0, 14, 00, E6, 15, 00, CF, 16, 00, BA, 17, 00, A7, 18, 00, 96, 19, 00, 87, 1A, 00, 79, 1B, 00, 6C, 1C, 00, 61, 1D, 00, 57, 1E, 00, 4E, 1F, 00, 46, 20, 00, 3F, 21, 00, 38, 22, 00, 32, 23, 00, 2D, 24, 00, 28, A5, 00, 48, A6, 00, 40, A7, 00, 39, A8, 00, 33, A9, 00, 2D, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28 +} + +NXP_RF_CONF_BLK_5={ + 20, 02, C5, 02, + A0, 0B, BB, 00, 1D, 01, 14, 6A, 2A, E8, 03, E8, 03, 06, 10, 0E, 2C, 01, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 00, 00, 00, 00, + A0, A6, 03, C0, 08, 08 +} + +NXP_RF_CONF_BLK_6={ + 20, 02, E9, 05, + A0, AB, 82, 27, 1B, 33, 04, 42, 04, 55, 04, 75, 04, 9E, 04, C7, 04, F0, 04, 20, 05, 4F, 05, 7F, 05, B8, 05, F2, 05, 2B, 06, 72, 06, BA, 06, 02, 07, 49, 07, 91, 07, F0, 07, 50, 08, AF, 08, 0F, 09, 6E, 09, E1, 09, 54, 0A, C6, 0A, 56, 0B, E5, 0B, 74, 0C, 04, 0D, 93, 0D, 52, 0E, 11, 0F, D0, 0F, 8F, 10, 4F, 11, 0E, 12, 2C, 13, 4B, 14, 6A, 15, 88, 16, A7, 17, C6, 18, 44, 1A, C2, 1B, 41, 1D, BF, 1E, 9D, 20, 7B, 22, 58, 24, 96, 26, D3, 28, 11, 2B, 4E, 2D, 4B, 30, 47, 33, 44, 36, 40, 39, 3D, 3C, A2, 3F, 07, 43, 6C, 46, E6, 4A, 61, 4F, + A0, A7, 0B, 00, 02, 77, 17, 1F, 1F, 1F, 0A, FF, 19, 05, + A0, A8, 38, 00, 33, 33, 10, 00, 33, 23, 10, 00, 33, 24, 10, 4B, 23, 44, 10, CF, 22, 43, 10, CF, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 22, 10, C0, 22, 23, 10, + A0, 98, 08, 6E, D3, 16, 80, 2A, 6E, 6E, 6E, + A0, 9E, 0C, 0F, D3, 16, 96, 00, 2C, 01, 2B, 25, 02, 00, 00 +} + +NXP_RF_CONF_BLK_7={ + 20, 02, FB, 14, + A0, C6, 5B, 00, 00, 04, 00, 00, 00, 3C, 00, 00, 00, 20, 80, FF, 01, 00, 00, 64, 00, 00, C0, 00, 00, 00, C0, 00, 00, 00, 01, 01, 01, 20, 01, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + A0, 0D, 06, 10, C9, 30, 00, 40, 00, + A0, 0D, 03, 24, 29, 07, + A0, 0D, 03, 24, 30, 07, + A0, 0D, 03, 25, 29, 01, + A0, 0D, 03, 25, 30, 01, + A0, 0D, 06, 40, 42, F0, C1, 37, CC, + A0, 0D, 06, 41, 45, 31, 12, 00, 00, + A0, 0D, 03, 42, 7C, 54, + A0, 0D, 06, 42, 8D, 00, A0, A4, 64, + A0, 0D, 06, 42, 8B, 00, A2, 23, 00, + A0, 0D, 06, 42, 89, 7F, 12, BD, 01, + A0, 0D, 06, 42, 44, 00, B0, 66, 01, + A0, 0D, 06, 42, 43, 24, 24, 4D, ED, + A0, 0D, 06, 42, 41, FD, FF, 5F, F0, + A0, 0D, 06, 42, 40, 08, 77, 33, 3A, + A0, 0D, 06, 42, 4A, 00, 00, 00, 00, + A0, 0D, 06, 42, 49, 00, 00, 00, 00, + A0, 0D, 06, 51, 40, 12, 77, 33, 3A, + A0, 0D, 06, 43, 44, 00, 34, 52, 01 +} + +NXP_RF_CONF_BLK_8={ + 20, 02, FD, 1C, + A0, 0D, 06, 43, 43, A5, 64, 4C, AD, + A0, 0D, 06, 43, 40, 05, 77, 33, 3D, + A0, 0D, 06, 43, 4A, 00, 00, 00, 00, + A0, 0D, 06, 43, 49, 00, 00, 00, 00, + A0, 0D, 06, 44, 44, 00, 34, 52, 01, + A0, 0D, 06, 44, 43, A5, 64, 4C, AD, + A0, 0D, 06, 44, 40, 05, 77, 33, 3D, + A0, 0D, 06, 44, 4A, 00, 00, 00, 00, + A0, 0D, 06, 44, 49, 00, 00, 00, 00, + A0, 0D, 06, 45, 44, 00, 34, 52, 01, + A0, 0D, 06, 45, 43, A5, 64, 4C, AD, + A0, 0D, 06, 45, 40, 05, 77, 33, 3D, + A0, 0D, 06, 45, 4A, 00, 00, 00, 00, + A0, 0D, 06, 45, 49, 00, 00, 00, 00, + A0, 0D, 06, 46, 45, 39, 12, 00, 00, + A0, 0D, 06, 46, 44, 00, 34, 52, 01, + A0, 0D, 06, 47, 43, A5, 64, 4C, ED, + A0, 0D, 06, 47, 40, 05, 77, 33, 3D, + A0, 0D, 06, 47, 4A, 20, AA, 0B, 81, + A0, 0D, 06, 47, 49, B5, 44, 22, 00, + A0, 0D, 06, 48, 43, A5, 64, 4C, AD, + A0, 0D, 06, 48, 40, 05, 77, 33, 3D, + A0, 0D, 06, 48, 4A, 00, 00, 00, 00, + A0, 0D, 06, 48, 49, 00, 00, 00, 00, + A0, 0D, 06, 49, 43, A5, 64, 4C, AD, + A0, 0D, 06, 49, 40, 05, 77, 33, 3D, + A0, 0D, 06, 49, 4A, 00, 00, 00, 00, + A0, 0D, 06, 49, 49, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_9={ + 20, 02, FA, 1C, + A0, 0D, 06, 4A, 8B, 48, 02, F0, 80, + A0, 0D, 06, 4A, 43, A5, 64, 4C, AD, + A0, 0D, 06, 4A, 40, 05, 77, 33, 3D, + A0, 0D, 06, 4A, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4A, 49, 00, 00, 00, 00, + A0, 0D, 06, 4B, 43, A5, 64, 4C, 6D, + A0, 0D, 06, 4C, 44, 00, 34, 52, 01, + A0, 0D, 06, 4C, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4C, 49, 00, 00, 00, 00, + A0, 0D, 06, 4C, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4D, 44, 00, 34, 52, 01, + A0, 0D, 06, 4D, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4D, 49, 00, 00, 00, 00, + A0, 0D, 06, 4D, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4E, 45, 31, 12, 00, 00, + A0, 0D, 03, 4E, 7C, 50, + A0, 0D, 06, 4E, 8D, 00, 00, 00, 06, + A0, 0D, 06, 4E, 8B, 00, A2, 24, 00, + A0, 0D, 06, 4E, 89, 7D, 84, 05, 08, + A0, 0D, 06, 4E, 44, 00, B0, 66, 01, + A0, 0D, 06, 4E, 43, A5, 64, 5C, AD, + A0, 0D, 06, 4E, 41, FD, FF, 5F, F0, + A0, 0D, 06, 4E, 40, 07, 77, 33, 3D, + A0, 0D, 06, 4F, 4A, 2A, 8E, 8D, 2A, + A0, 0D, 06, 4F, 49, 5D, 27, 27, 00, + A0, 0D, 06, 50, 4A, 00, 00, 00, 00, + A0, 0D, 06, 50, 49, 00, 00, 00, 00, + A0, 0D, 06, 52, 4A, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_10={ + 20, 02, FD, 1C, + A0, 0D, 06, 52, 49, 00, 00, 00, 00, + A0, 0D, 06, 53, 4A, 00, 00, 00, 00, + A0, 0D, 06, 53, 49, 00, 00, 00, 00, + A0, 0D, 06, 60, 4E, FF, FF, FF, 01, + A0, 0D, 06, 60, 4F, FF, FF, FF, 01, + A0, 0D, 06, 60, 50, FF, FF, FF, 3F, + A0, 0D, 06, 80, 7D, A0, 00, 9E, BB, + A0, 0D, 06, 80, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 80, C9, 30, 00, 00, 00, + A0, 0D, 06, 8C, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 90, 4F, FF, FF, FF, 01, + A0, 0D, 06, 90, 4E, FF, FF, FF, 01, + A0, 0D, 06, 90, 39, 3F, 00, 00, 7F, + A0, 0D, 06, 9B, A9, 84, 00, 00, 00, + A0, 0D, 06, 9B, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9B, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9B, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9B, 4E, FF, FF, FF, 01, + A0, 0D, 06, 91, D4, F8, 84, EF, 03, + A0, 0D, 06, 91, D2, 4A, 4A, 4B, 38, + A0, 0D, 06, 9C, A9, 84, 00, 00, 00, + A0, 0D, 06, 9C, A1, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 99, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 95, FF, 00, 0F, 00 +} + +NXP_RF_CONF_BLK_11={ + 20, 02, F5, 17, + A0, 0D, 06, 9C, A5, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 9D, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9C, 4F, 9F, 88, FF, 01, + A0, 0D, 06, 9C, 4E, 9F, 88, FF, 01, + A0, 0D, 06, 95, D4, F8, 84, 75, 00, + A0, 0D, 06, 95, D2, 4A, 4B, 4B, 58, + A0, 0D, 06, 9D, A9, 84, 00, 00, 00, + A0, 0D, 06, 9D, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9D, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9D, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9D, 4E, FF, FF, FF, 01, + A0, 0D, 06, 99, D4, F8, 04, E4, 01, + A0, 0D, 06, 99, D2, 4A, 4B, 4B, 48, + A0, AF, 09, 10, 5F, 00, 18, 10, 5F, 00, 18, 00, + A0, 92, 28, 37, 00, 1B, 00, FC, 81, 0F, 00, 22, 80, 0F, 00, 14, 00, 20, 70, EA, 01, 43, 18, 32, 16, 78, 30, 0D, 00, 03, 55, EA, 05, 01, 04, 68, 02, 3F, 92, 04, 00, 0C, 13, + A0, 1F, 06, 63, 00, 42, 00, 14, 00, + A0, 9A, 02, 95, 01, + A0, 99, 0A, 03, 00, 80, 00, 00, 80, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_12={ + 20, 02, 3B, 03, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, D0, 07, 00, 0F, FF, 7F, 00, 0F, FF, 7F, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0D, 03, 61, 09, 7E, + A0, 85, 04, 58, 08, A8, AC +} + +## DLMA Enable | VDDPA 3.9 +## LMA (CLK) A+B - (CLK-LESS) A/B/F 32 - 57.7/28.2/55.3 | RSSI 0x134F | H 8A/m +## LPDET 150 | NFCLD 300 | Ratio 43 | GreenCar 600 +## Tx first entry 3/6 +NXP_RF_CONF_BLK_13={ + 20, 02, F2, 04, + A0, AF, 09, 11, 20, 00, 18, 11, 20, 00, 18, 00, + A0, 98, 08, 20, 4F, 13, 80, 18, 39, 1C, 37, + A0, 34, C8, 23, 04, 3D, 01, 04, 19, CB, 05, 00, 00, 3E, 07, 00, 00, B0, 08, 00, 00, B0, 08, 00, 00, E5, 09, 00, 00, E5, 09, 00, 00, 58, 0B, 00, 00, 58, 0B, 00, 00, E1, 0D, 00, 00, 4B, 10, 00, 00, 4B, 10, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 06, 19, B9, 00, 00, 00, 35, 01, 00, 00, CF, 01, 00, 00, 2C, 02, 00, 00, C7, 02, 00, 00, 23, 03, 00, 00, DD, 03, 00, 00, 30, 05, 00, 00, 00, 07, 00, 00, A8, 09, 00, 00, 7B, 0E, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, + A0, 9E, 0C, 07, 4F, 13, 96, 00, 2C, 01, 2B, 58, 02, 00, 00 +} +NXP_RF_CONF_BLK_14={ + 20, 02, F1, 01, + A0, A9, ED, 00, 2A, FF, 01, 24, FF, 02, 1F, FF, 03, 1A, FF, 04, 16, FF, 05, 12, FF, 06, 0F, FF, 07, 0C, FF, 08, 09, FF, 09, 07, FF, 0A, 05, FF, 0B, 03, FF, 0C, 01, FF, 0D, 00, F5, 0E, 00, DC, 0F, 00, C6, 10, 00, B3, 11, 00, A2, 12, 00, 92, 13, 00, 84, 14, 00, 77, 15, 00, 6B, 16, 00, 60, 17, 00, 57, 18, 00, 4E, 19, 00, 46, 1A, 00, 3F, 1B, 00, 39, 1C, 00, 33, 1D, 00, 2E, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A +} + + +NXP_RF_CONF_MAX_NUM=14 + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3F, 05, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A1, 13, 01, 32, + A0, 80, 02, FA, 00 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x01 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x3B +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# + diff --git a/proprietary/vendor/etc/libnfc-mtp-SN100_38_4MHZ.conf b/proprietary/vendor/etc/libnfc-mtp-SN100_38_4MHZ.conf new file mode 100644 index 0000000..fb651b5 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-mtp-SN100_38_4MHZ.conf @@ -0,0 +1,780 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +## Modified by Motorola Mobility LLC +## Version : Cypfr.4 (2021/06/09) +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} + +# *** RFBOARD30x20FN FW VERSION = 01.10.5B *** +NXP_RF_CONF_BLK_1={ + 20, 02, DB, 04, + A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 18, 18, 18, 18, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, FF, 07, 13, 07, 05, 13, + A0, A4, 85, 14, 00, 01, 00, 00, 00, 00, 03, 00, 06, 00, 0A, 00, 0D, 00, 10, 00, 14, 00, 17, 00, 1B, 00, 1E, 00, 21, 00, 25, 00, 28, 00, 2C, 00, 2F, 00, 32, 00, 36, 00, 39, 00, 3D, 00, 40, 00, 43, 00, 47, 00, 4A, 00, 4E, 00, 51, 00, 54, 00, 58, 00, 5B, 00, 5E, 00, 62, 00, 65, 00, 69, 00, 6C, 00, 6F, 00, 73, 00, 76, 00, 7A, 00, 7D, 00, 80, 00, 84, 00, 87, 00, 8B, 00, 8E, 00, 91, 00, 95, 00, 98, 00, 9C, 00, 9F, 00, A2, 00, A6, 00, A9, 00, AC, 00, B0, 00, B3, 00, B7, 00, BA, 00, BD, 00, C1, 00, C4, 00, C8, 00, CB, 00, CE, 00, D2, 00, D5, 00, + A0, A5, 0D, 3B, 3B, 3B, 3B, 3B, 3B, FF, 03, 1F, 00, 3B, 00, 00, + A0, 6A, 10, 28, 00, 28, 00, 28, 00, 28, 00, 80, 02, 80, 02, 80, 02, 80, 02 +} + +NXP_RF_CONF_BLK_2={ + 20, 02, CC, 01, + A0, 34, C8, 23, 04, 3D, 01, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00 +} + +NXP_RF_CONF_BLK_3={ + 20, 02, 66, 01, + A1, 0A, 62, 14, 08, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00 +} + +NXP_RF_CONF_BLK_4={ + 20, 02, F1, 01, + A0, A9, ED, 40, 2A, FF, 41, 24, FF, 42, 1F, FF, 43, 1A, FF, 44, 16, FF, 45, 12, FF, 46, 0F, FF, 47, 0C, FF, 07, 2A, F1, 48, 09, FF, 08, 23, F7, 49, 07, FF, 09, 1E, F7, 4A, 05, FF, 0A, 19, FA, 4B, 03, FF, 0B, 15, FA, 4C, 01, FF, 0C, 12, F5, 0D, 0F, F2, 0E, 0C, F2, 0F, 09, F5, 10, 06, FC, 11, 06, E2, 12, 02, FB, 13, 01, F0, 14, 00, E6, 15, 00, CF, 16, 00, BA, 17, 00, A7, 18, 00, 96, 19, 00, 87, 1A, 00, 79, 1B, 00, 6C, 1C, 00, 61, 1D, 00, 57, 1E, 00, 4E, 1F, 00, 46, 20, 00, 3F, 21, 00, 38, 22, 00, 32, 23, 00, 2D, 24, 00, 28, A5, 00, 48, A6, 00, 40, A7, 00, 39, A8, 00, 33, A9, 00, 2D, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28 +} + +NXP_RF_CONF_BLK_5={ + 20, 02, C5, 02, + A0, 0B, BB, 00, 1D, 01, 14, 6A, 2A, E8, 03, E8, 03, 06, 10, 0E, 2C, 01, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 00, 00, 00, 00, + A0, A6, 03, C0, 08, 08 +} + +NXP_RF_CONF_BLK_6={ + 20, 02, E9, 05, + A0, AB, 82, 27, 1B, 33, 04, 42, 04, 55, 04, 75, 04, 9E, 04, C7, 04, F0, 04, 20, 05, 4F, 05, 7F, 05, B8, 05, F2, 05, 2B, 06, 72, 06, BA, 06, 02, 07, 49, 07, 91, 07, F0, 07, 50, 08, AF, 08, 0F, 09, 6E, 09, E1, 09, 54, 0A, C6, 0A, 56, 0B, E5, 0B, 74, 0C, 04, 0D, 93, 0D, 52, 0E, 11, 0F, D0, 0F, 8F, 10, 4F, 11, 0E, 12, 2C, 13, 4B, 14, 6A, 15, 88, 16, A7, 17, C6, 18, 44, 1A, C2, 1B, 41, 1D, BF, 1E, 9D, 20, 7B, 22, 58, 24, 96, 26, D3, 28, 11, 2B, 4E, 2D, 4B, 30, 47, 33, 44, 36, 40, 39, 3D, 3C, A2, 3F, 07, 43, 6C, 46, E6, 4A, 61, 4F, + A0, A7, 0B, 00, 02, 77, 17, 1F, 1F, 1F, 0A, FF, 19, 05, + A0, A8, 38, 00, 33, 33, 10, 00, 33, 23, 10, 00, 33, 24, 10, 4B, 23, 44, 10, CF, 22, 43, 10, CF, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 22, 10, C0, 22, 23, 10, + A0, 98, 08, 6E, D3, 16, 80, 2A, 6E, 6E, 6E, + A0, 9E, 0C, 0F, D3, 16, 96, 00, 2C, 01, 2B, 25, 02, 00, 00 +} + +NXP_RF_CONF_BLK_7={ + 20, 02, FB, 14, + A0, C6, 5B, 00, 00, 04, 00, 00, 00, 3C, 00, 00, 00, 20, 80, FF, 01, 00, 00, 64, 00, 00, C0, 00, 00, 00, C0, 00, 00, 00, 01, 01, 01, 20, 01, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + A0, 0D, 06, 10, C9, 30, 00, 40, 00, + A0, 0D, 03, 24, 29, 07, + A0, 0D, 03, 24, 30, 07, + A0, 0D, 03, 25, 29, 01, + A0, 0D, 03, 25, 30, 01, + A0, 0D, 06, 40, 42, F0, C1, 37, CC, + A0, 0D, 06, 41, 45, 31, 12, 00, 00, + A0, 0D, 03, 42, 7C, 54, + A0, 0D, 06, 42, 8D, 00, A0, A4, 64, + A0, 0D, 06, 42, 8B, 00, A2, 23, 00, + A0, 0D, 06, 42, 89, 7F, 12, BD, 01, + A0, 0D, 06, 42, 44, 00, B0, 66, 01, + A0, 0D, 06, 42, 43, 24, 24, 4D, ED, + A0, 0D, 06, 42, 41, FD, FF, 5F, F0, + A0, 0D, 06, 42, 40, 08, 77, 33, 3A, + A0, 0D, 06, 42, 4A, 00, 00, 00, 00, + A0, 0D, 06, 42, 49, 00, 00, 00, 00, + A0, 0D, 06, 51, 40, 12, 77, 33, 3A, + A0, 0D, 06, 43, 44, 00, 34, 52, 01 +} + +NXP_RF_CONF_BLK_8={ + 20, 02, FD, 1C, + A0, 0D, 06, 43, 43, A5, 64, 4C, AD, + A0, 0D, 06, 43, 40, 05, 77, 33, 3D, + A0, 0D, 06, 43, 4A, 00, 00, 00, 00, + A0, 0D, 06, 43, 49, 00, 00, 00, 00, + A0, 0D, 06, 44, 44, 00, 34, 52, 01, + A0, 0D, 06, 44, 43, A5, 64, 4C, AD, + A0, 0D, 06, 44, 40, 05, 77, 33, 3D, + A0, 0D, 06, 44, 4A, 00, 00, 00, 00, + A0, 0D, 06, 44, 49, 00, 00, 00, 00, + A0, 0D, 06, 45, 44, 00, 34, 52, 01, + A0, 0D, 06, 45, 43, A5, 64, 4C, AD, + A0, 0D, 06, 45, 40, 05, 77, 33, 3D, + A0, 0D, 06, 45, 4A, 00, 00, 00, 00, + A0, 0D, 06, 45, 49, 00, 00, 00, 00, + A0, 0D, 06, 46, 45, 39, 12, 00, 00, + A0, 0D, 06, 46, 44, 00, 34, 52, 01, + A0, 0D, 06, 47, 43, A5, 64, 4C, ED, + A0, 0D, 06, 47, 40, 05, 77, 33, 3D, + A0, 0D, 06, 47, 4A, 20, AA, 0B, 81, + A0, 0D, 06, 47, 49, B5, 44, 22, 00, + A0, 0D, 06, 48, 43, A5, 64, 4C, AD, + A0, 0D, 06, 48, 40, 05, 77, 33, 3D, + A0, 0D, 06, 48, 4A, 00, 00, 00, 00, + A0, 0D, 06, 48, 49, 00, 00, 00, 00, + A0, 0D, 06, 49, 43, A5, 64, 4C, AD, + A0, 0D, 06, 49, 40, 05, 77, 33, 3D, + A0, 0D, 06, 49, 4A, 00, 00, 00, 00, + A0, 0D, 06, 49, 49, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_9={ + 20, 02, FA, 1C, + A0, 0D, 06, 4A, 8B, 48, 02, F0, 80, + A0, 0D, 06, 4A, 43, A5, 64, 4C, AD, + A0, 0D, 06, 4A, 40, 05, 77, 33, 3D, + A0, 0D, 06, 4A, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4A, 49, 00, 00, 00, 00, + A0, 0D, 06, 4B, 43, A5, 64, 4C, 6D, + A0, 0D, 06, 4C, 44, 00, 34, 52, 01, + A0, 0D, 06, 4C, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4C, 49, 00, 00, 00, 00, + A0, 0D, 06, 4C, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4D, 44, 00, 34, 52, 01, + A0, 0D, 06, 4D, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4D, 49, 00, 00, 00, 00, + A0, 0D, 06, 4D, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4E, 45, 31, 12, 00, 00, + A0, 0D, 03, 4E, 7C, 50, + A0, 0D, 06, 4E, 8D, 00, 00, 00, 06, + A0, 0D, 06, 4E, 8B, 00, A2, 24, 00, + A0, 0D, 06, 4E, 89, 7D, 84, 05, 08, + A0, 0D, 06, 4E, 44, 00, B0, 66, 01, + A0, 0D, 06, 4E, 43, A5, 64, 5C, AD, + A0, 0D, 06, 4E, 41, FD, FF, 5F, F0, + A0, 0D, 06, 4E, 40, 07, 77, 33, 3D, + A0, 0D, 06, 4F, 4A, 2A, 8E, 8D, 2A, + A0, 0D, 06, 4F, 49, 5D, 27, 27, 00, + A0, 0D, 06, 50, 4A, 00, 00, 00, 00, + A0, 0D, 06, 50, 49, 00, 00, 00, 00, + A0, 0D, 06, 52, 4A, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_10={ + 20, 02, FD, 1C, + A0, 0D, 06, 52, 49, 00, 00, 00, 00, + A0, 0D, 06, 53, 4A, 00, 00, 00, 00, + A0, 0D, 06, 53, 49, 00, 00, 00, 00, + A0, 0D, 06, 60, 4E, FF, FF, FF, 01, + A0, 0D, 06, 60, 4F, FF, FF, FF, 01, + A0, 0D, 06, 60, 50, FF, FF, FF, 3F, + A0, 0D, 06, 80, 7D, A0, 00, 9E, BB, + A0, 0D, 06, 80, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 80, C9, 30, 00, 00, 00, + A0, 0D, 06, 8C, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 90, 4F, FF, FF, FF, 01, + A0, 0D, 06, 90, 4E, FF, FF, FF, 01, + A0, 0D, 06, 90, 39, 3F, 00, 00, 7F, + A0, 0D, 06, 9B, A9, 84, 00, 00, 00, + A0, 0D, 06, 9B, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9B, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9B, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9B, 4E, FF, FF, FF, 01, + A0, 0D, 06, 91, D4, F8, 84, EF, 03, + A0, 0D, 06, 91, D2, 4A, 4A, 4B, 38, + A0, 0D, 06, 9C, A9, 84, 00, 00, 00, + A0, 0D, 06, 9C, A1, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 99, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 95, FF, 00, 0F, 00 +} + +NXP_RF_CONF_BLK_11={ + 20, 02, F5, 17, + A0, 0D, 06, 9C, A5, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 9D, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9C, 4F, 9F, 88, FF, 01, + A0, 0D, 06, 9C, 4E, 9F, 88, FF, 01, + A0, 0D, 06, 95, D4, F8, 84, 75, 00, + A0, 0D, 06, 95, D2, 4A, 4B, 4B, 58, + A0, 0D, 06, 9D, A9, 84, 00, 00, 00, + A0, 0D, 06, 9D, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9D, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9D, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9D, 4E, FF, FF, FF, 01, + A0, 0D, 06, 99, D4, F8, 04, E4, 01, + A0, 0D, 06, 99, D2, 4A, 4B, 4B, 48, + A0, AF, 09, 10, 5F, 00, 18, 10, 5F, 00, 18, 00, + A0, 92, 28, 37, 00, 1B, 00, FC, 81, 0F, 00, 22, 80, 0F, 00, 14, 00, 20, 70, EA, 01, 43, 18, 32, 16, 78, 30, 0D, 00, 03, 55, EA, 05, 01, 04, 68, 02, 3F, 92, 04, 00, 0C, 13, + A0, 1F, 06, 63, 00, 42, 00, 14, 00, + A0, 9A, 02, 95, 01, + A0, 99, 0A, 03, 00, 80, 00, 00, 80, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_12={ + 20, 02, 3B, 03, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, D0, 07, 00, 0F, FF, 7F, 00, 0F, FF, 7F, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0D, 03, 61, 09, 7E, + A0, 85, 04, 58, 08, A8, AC +} + +## DLMA Enable | VDDPA 3.9 +## LMA (CLK) A+B - (CLK-LESS) A/B/F 32 - 57.7/28.2/55.3 | RSSI 0x134F | H 8A/m +## LPDET 150 | NFCLD 300 | Ratio 43 | GreenCar 600 +## Tx first entry 3/6 +NXP_RF_CONF_BLK_13={ + 20, 02, F2, 04, + A0, AF, 09, 11, 20, 00, 18, 11, 20, 00, 18, 00, + A0, 98, 08, 20, 4F, 13, 80, 18, 39, 1C, 37, + A0, 34, C8, 23, 04, 3D, 01, 04, 19, CB, 05, 00, 00, 3E, 07, 00, 00, B0, 08, 00, 00, B0, 08, 00, 00, E5, 09, 00, 00, E5, 09, 00, 00, 58, 0B, 00, 00, 58, 0B, 00, 00, E1, 0D, 00, 00, 4B, 10, 00, 00, 4B, 10, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 06, 19, B9, 00, 00, 00, 35, 01, 00, 00, CF, 01, 00, 00, 2C, 02, 00, 00, C7, 02, 00, 00, 23, 03, 00, 00, DD, 03, 00, 00, 30, 05, 00, 00, 00, 07, 00, 00, A8, 09, 00, 00, 7B, 0E, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, + A0, 9E, 0C, 07, 4F, 13, 96, 00, 2C, 01, 2B, 58, 02, 00, 00 +} +NXP_RF_CONF_BLK_14={ + 20, 02, F1, 01, + A0, A9, ED, 00, 2A, FF, 01, 24, FF, 02, 1F, FF, 03, 1A, FF, 04, 16, FF, 05, 12, FF, 06, 0F, FF, 07, 0C, FF, 08, 09, FF, 09, 07, FF, 0A, 05, FF, 0B, 03, FF, 0C, 01, FF, 0D, 00, F5, 0E, 00, DC, 0F, 00, C6, 10, 00, B3, 11, 00, A2, 12, 00, 92, 13, 00, 84, 14, 00, 77, 15, 00, 6B, 16, 00, 60, 17, 00, 57, 18, 00, 4E, 19, 00, 46, 1A, 00, 3F, 1B, 00, 39, 1C, 00, 33, 1D, 00, 2E, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A +} + + +NXP_RF_CONF_MAX_NUM=14 + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3F, 05, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A1, 13, 01, 32, + A0, 80, 02, FA, 00 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x01 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x3B +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# + diff --git a/proprietary/vendor/etc/libnfc-nci.conf b/proprietary/vendor/etc/libnfc-nci.conf new file mode 100644 index 0000000..9d56a64 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-nci.conf @@ -0,0 +1,90 @@ +########################## Start of libnfc-nci.conf ########################### +############################################################################### +# Application options +NFC_DEBUG_ENABLED=0 + +############################################################################### +# File used for NFA storage +NFA_STORAGE="/data/nfc" +PRESERVE_STORAGE=0x01 + +# Force tag polling for the following technology(s). +# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h. +# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | +# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 | +# NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO | +# NFA_TECHNOLOGY_MASK_ACTIVE +# +# Notable bits: +# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */ +# NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */ +# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */ +# NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */ +# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */ +# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */ +POLLING_TECH_MASK=0x6F + +############################################################################### +# Force P2P to only listen for the following technology(s). +# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h. +# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F | +# NFA_TECHNOLOGY_MASK_ACTIVE +# +# Notable bits: +# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */ +# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */ +# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */ +P2P_LISTEN_TECH_MASK=0x44 + +UICC_LISTEN_TECH_MASK=0x07 + +#NFA_DM_CFG + +############################################################################### +# When screen is turned off, specify the desired power state of the controller. +# 0: power-off-sleep state; DEFAULT +# 1: full-power state +# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used) +SCREEN_OFF_POWER_STATE=1 +############################################################################### + +############################################################################### +# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h. +# The value is set assumeing discovery of 0x00(Host), 0xC0(Ese) and 0x80(UICC). +# If a platform will exclude and SE, this value can be reduced so that the stack +# will not wait any longer than necessary. +# Maximum EE supported number +NFA_MAX_EE_SUPPORTED=3 + +############################################################################### +# Default poll duration (in ms) +# The defualt is 500ms if not set (see nfc_target.h) +NFA_DM_DISC_DURATION_POLL=800 + +#POLL_FREQUENCY + +NFA_AID_BLOCK_ROUTE=1 + +#AID_FOR_EMPTY_SELECT + +############################################################################### +# Enable/Disable Block Route feature. +# Block Route will restrict routing to first matched rule +# Block Route enable 0x01 +# Block Route disable 0x00 +#NFA_BLOCK_ROUTE=0x00 + +############################################################################### +# AID_MATCHING constants +# AID_MATCHING_EXACT_ONLY 0x00 +# AID_MATCHING_EXACT_OR_PREFIX 0x01 +# AID_MATCHING_PREFIX_ONLY 0x02 +# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03 +AID_MATCHING_MODE=0 + +############################################################################### +# AID Route power state for OffHost +OFFHOST_AID_ROUTE_PWR_STATE=0x3B +############################################################################### + +LEGACY_MIFARE_READER=1 diff --git a/proprietary/vendor/etc/libnfc-nxp-pnscr.conf b/proprietary/vendor/etc/libnfc-nxp-pnscr.conf new file mode 100644 index 0000000..fb651b5 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-nxp-pnscr.conf @@ -0,0 +1,780 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +## Modified by Motorola Mobility LLC +## Version : Cypfr.4 (2021/06/09) +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +#NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} + +# *** RFBOARD30x20FN FW VERSION = 01.10.5B *** +NXP_RF_CONF_BLK_1={ + 20, 02, DB, 04, + A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 18, 18, 18, 18, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, FF, 07, 13, 07, 05, 13, + A0, A4, 85, 14, 00, 01, 00, 00, 00, 00, 03, 00, 06, 00, 0A, 00, 0D, 00, 10, 00, 14, 00, 17, 00, 1B, 00, 1E, 00, 21, 00, 25, 00, 28, 00, 2C, 00, 2F, 00, 32, 00, 36, 00, 39, 00, 3D, 00, 40, 00, 43, 00, 47, 00, 4A, 00, 4E, 00, 51, 00, 54, 00, 58, 00, 5B, 00, 5E, 00, 62, 00, 65, 00, 69, 00, 6C, 00, 6F, 00, 73, 00, 76, 00, 7A, 00, 7D, 00, 80, 00, 84, 00, 87, 00, 8B, 00, 8E, 00, 91, 00, 95, 00, 98, 00, 9C, 00, 9F, 00, A2, 00, A6, 00, A9, 00, AC, 00, B0, 00, B3, 00, B7, 00, BA, 00, BD, 00, C1, 00, C4, 00, C8, 00, CB, 00, CE, 00, D2, 00, D5, 00, + A0, A5, 0D, 3B, 3B, 3B, 3B, 3B, 3B, FF, 03, 1F, 00, 3B, 00, 00, + A0, 6A, 10, 28, 00, 28, 00, 28, 00, 28, 00, 80, 02, 80, 02, 80, 02, 80, 02 +} + +NXP_RF_CONF_BLK_2={ + 20, 02, CC, 01, + A0, 34, C8, 23, 04, 3D, 01, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 0D, 0C, FA, 00, 00, 00, 90, 01, 00, 00, 26, 02, 00, 00, BC, 02, 00, 00, 52, 03, 00, 00, E8, 03, 00, 00, B0, 04, 00, 00, 40, 06, 00, 00, 98, 08, 00, 00, B8, 0B, 00, 00, 94, 11, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00, 7C, 15, 00, 00 +} + +NXP_RF_CONF_BLK_3={ + 20, 02, 66, 01, + A1, 0A, 62, 14, 08, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, F4, 33, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 20, 35, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00, 40, 1F, 00, 00 +} + +NXP_RF_CONF_BLK_4={ + 20, 02, F1, 01, + A0, A9, ED, 40, 2A, FF, 41, 24, FF, 42, 1F, FF, 43, 1A, FF, 44, 16, FF, 45, 12, FF, 46, 0F, FF, 47, 0C, FF, 07, 2A, F1, 48, 09, FF, 08, 23, F7, 49, 07, FF, 09, 1E, F7, 4A, 05, FF, 0A, 19, FA, 4B, 03, FF, 0B, 15, FA, 4C, 01, FF, 0C, 12, F5, 0D, 0F, F2, 0E, 0C, F2, 0F, 09, F5, 10, 06, FC, 11, 06, E2, 12, 02, FB, 13, 01, F0, 14, 00, E6, 15, 00, CF, 16, 00, BA, 17, 00, A7, 18, 00, 96, 19, 00, 87, 1A, 00, 79, 1B, 00, 6C, 1C, 00, 61, 1D, 00, 57, 1E, 00, 4E, 1F, 00, 46, 20, 00, 3F, 21, 00, 38, 22, 00, 32, 23, 00, 2D, 24, 00, 28, A5, 00, 48, A6, 00, 40, A7, 00, 39, A8, 00, 33, A9, 00, 2D, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28, AA, 00, 28 +} + +NXP_RF_CONF_BLK_5={ + 20, 02, C5, 02, + A0, 0B, BB, 00, 1D, 01, 14, 6A, 2A, E8, 03, E8, 03, 06, 10, 0E, 2C, 01, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 13, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 0A, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 78, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 3C, 00, 00, 00, 00, 00, 00, 00, + A0, A6, 03, C0, 08, 08 +} + +NXP_RF_CONF_BLK_6={ + 20, 02, E9, 05, + A0, AB, 82, 27, 1B, 33, 04, 42, 04, 55, 04, 75, 04, 9E, 04, C7, 04, F0, 04, 20, 05, 4F, 05, 7F, 05, B8, 05, F2, 05, 2B, 06, 72, 06, BA, 06, 02, 07, 49, 07, 91, 07, F0, 07, 50, 08, AF, 08, 0F, 09, 6E, 09, E1, 09, 54, 0A, C6, 0A, 56, 0B, E5, 0B, 74, 0C, 04, 0D, 93, 0D, 52, 0E, 11, 0F, D0, 0F, 8F, 10, 4F, 11, 0E, 12, 2C, 13, 4B, 14, 6A, 15, 88, 16, A7, 17, C6, 18, 44, 1A, C2, 1B, 41, 1D, BF, 1E, 9D, 20, 7B, 22, 58, 24, 96, 26, D3, 28, 11, 2B, 4E, 2D, 4B, 30, 47, 33, 44, 36, 40, 39, 3D, 3C, A2, 3F, 07, 43, 6C, 46, E6, 4A, 61, 4F, + A0, A7, 0B, 00, 02, 77, 17, 1F, 1F, 1F, 0A, FF, 19, 05, + A0, A8, 38, 00, 33, 33, 10, 00, 33, 23, 10, 00, 33, 24, 10, 4B, 23, 44, 10, CF, 22, 43, 10, CF, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, CF, 22, 43, 10, CE, 22, 43, 10, 00, 33, 22, 10, C0, 22, 23, 10, 00, 33, 22, 10, C0, 22, 23, 10, + A0, 98, 08, 6E, D3, 16, 80, 2A, 6E, 6E, 6E, + A0, 9E, 0C, 0F, D3, 16, 96, 00, 2C, 01, 2B, 25, 02, 00, 00 +} + +NXP_RF_CONF_BLK_7={ + 20, 02, FB, 14, + A0, C6, 5B, 00, 00, 04, 00, 00, 00, 3C, 00, 00, 00, 20, 80, FF, 01, 00, 00, 64, 00, 00, C0, 00, 00, 00, C0, 00, 00, 00, 01, 01, 01, 20, 01, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + A0, 0D, 06, 10, C9, 30, 00, 40, 00, + A0, 0D, 03, 24, 29, 07, + A0, 0D, 03, 24, 30, 07, + A0, 0D, 03, 25, 29, 01, + A0, 0D, 03, 25, 30, 01, + A0, 0D, 06, 40, 42, F0, C1, 37, CC, + A0, 0D, 06, 41, 45, 31, 12, 00, 00, + A0, 0D, 03, 42, 7C, 54, + A0, 0D, 06, 42, 8D, 00, A0, A4, 64, + A0, 0D, 06, 42, 8B, 00, A2, 23, 00, + A0, 0D, 06, 42, 89, 7F, 12, BD, 01, + A0, 0D, 06, 42, 44, 00, B0, 66, 01, + A0, 0D, 06, 42, 43, 24, 24, 4D, ED, + A0, 0D, 06, 42, 41, FD, FF, 5F, F0, + A0, 0D, 06, 42, 40, 08, 77, 33, 3A, + A0, 0D, 06, 42, 4A, 00, 00, 00, 00, + A0, 0D, 06, 42, 49, 00, 00, 00, 00, + A0, 0D, 06, 51, 40, 12, 77, 33, 3A, + A0, 0D, 06, 43, 44, 00, 34, 52, 01 +} + +NXP_RF_CONF_BLK_8={ + 20, 02, FD, 1C, + A0, 0D, 06, 43, 43, A5, 64, 4C, AD, + A0, 0D, 06, 43, 40, 05, 77, 33, 3D, + A0, 0D, 06, 43, 4A, 00, 00, 00, 00, + A0, 0D, 06, 43, 49, 00, 00, 00, 00, + A0, 0D, 06, 44, 44, 00, 34, 52, 01, + A0, 0D, 06, 44, 43, A5, 64, 4C, AD, + A0, 0D, 06, 44, 40, 05, 77, 33, 3D, + A0, 0D, 06, 44, 4A, 00, 00, 00, 00, + A0, 0D, 06, 44, 49, 00, 00, 00, 00, + A0, 0D, 06, 45, 44, 00, 34, 52, 01, + A0, 0D, 06, 45, 43, A5, 64, 4C, AD, + A0, 0D, 06, 45, 40, 05, 77, 33, 3D, + A0, 0D, 06, 45, 4A, 00, 00, 00, 00, + A0, 0D, 06, 45, 49, 00, 00, 00, 00, + A0, 0D, 06, 46, 45, 39, 12, 00, 00, + A0, 0D, 06, 46, 44, 00, 34, 52, 01, + A0, 0D, 06, 47, 43, A5, 64, 4C, ED, + A0, 0D, 06, 47, 40, 05, 77, 33, 3D, + A0, 0D, 06, 47, 4A, 20, AA, 0B, 81, + A0, 0D, 06, 47, 49, B5, 44, 22, 00, + A0, 0D, 06, 48, 43, A5, 64, 4C, AD, + A0, 0D, 06, 48, 40, 05, 77, 33, 3D, + A0, 0D, 06, 48, 4A, 00, 00, 00, 00, + A0, 0D, 06, 48, 49, 00, 00, 00, 00, + A0, 0D, 06, 49, 43, A5, 64, 4C, AD, + A0, 0D, 06, 49, 40, 05, 77, 33, 3D, + A0, 0D, 06, 49, 4A, 00, 00, 00, 00, + A0, 0D, 06, 49, 49, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_9={ + 20, 02, FA, 1C, + A0, 0D, 06, 4A, 8B, 48, 02, F0, 80, + A0, 0D, 06, 4A, 43, A5, 64, 4C, AD, + A0, 0D, 06, 4A, 40, 05, 77, 33, 3D, + A0, 0D, 06, 4A, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4A, 49, 00, 00, 00, 00, + A0, 0D, 06, 4B, 43, A5, 64, 4C, 6D, + A0, 0D, 06, 4C, 44, 00, 34, 52, 01, + A0, 0D, 06, 4C, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4C, 49, 00, 00, 00, 00, + A0, 0D, 06, 4C, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4D, 44, 00, 34, 52, 01, + A0, 0D, 06, 4D, 4A, 00, 00, 00, 00, + A0, 0D, 06, 4D, 49, 00, 00, 00, 00, + A0, 0D, 06, 4D, 40, 85, 51, 33, 3D, + A0, 0D, 06, 4E, 45, 31, 12, 00, 00, + A0, 0D, 03, 4E, 7C, 50, + A0, 0D, 06, 4E, 8D, 00, 00, 00, 06, + A0, 0D, 06, 4E, 8B, 00, A2, 24, 00, + A0, 0D, 06, 4E, 89, 7D, 84, 05, 08, + A0, 0D, 06, 4E, 44, 00, B0, 66, 01, + A0, 0D, 06, 4E, 43, A5, 64, 5C, AD, + A0, 0D, 06, 4E, 41, FD, FF, 5F, F0, + A0, 0D, 06, 4E, 40, 07, 77, 33, 3D, + A0, 0D, 06, 4F, 4A, 2A, 8E, 8D, 2A, + A0, 0D, 06, 4F, 49, 5D, 27, 27, 00, + A0, 0D, 06, 50, 4A, 00, 00, 00, 00, + A0, 0D, 06, 50, 49, 00, 00, 00, 00, + A0, 0D, 06, 52, 4A, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_10={ + 20, 02, FD, 1C, + A0, 0D, 06, 52, 49, 00, 00, 00, 00, + A0, 0D, 06, 53, 4A, 00, 00, 00, 00, + A0, 0D, 06, 53, 49, 00, 00, 00, 00, + A0, 0D, 06, 60, 4E, FF, FF, FF, 01, + A0, 0D, 06, 60, 4F, FF, FF, FF, 01, + A0, 0D, 06, 60, 50, FF, FF, FF, 3F, + A0, 0D, 06, 80, 7D, A0, 00, 9E, BB, + A0, 0D, 06, 80, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 80, C9, 30, 00, 00, 00, + A0, 0D, 06, 8C, 80, B8, 5A, 0D, 00, + A0, 0D, 06, 90, 4F, FF, FF, FF, 01, + A0, 0D, 06, 90, 4E, FF, FF, FF, 01, + A0, 0D, 06, 90, 39, 3F, 00, 00, 7F, + A0, 0D, 06, 9B, A9, 84, 00, 00, 00, + A0, 0D, 06, 9B, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9B, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9B, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9B, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9B, 4E, FF, FF, FF, 01, + A0, 0D, 06, 91, D4, F8, 84, EF, 03, + A0, 0D, 06, 91, D2, 4A, 4A, 4B, 38, + A0, 0D, 06, 9C, A9, 84, 00, 00, 00, + A0, 0D, 06, 9C, A1, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 99, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 95, FF, 00, 0F, 00 +} + +NXP_RF_CONF_BLK_11={ + 20, 02, F5, 17, + A0, 0D, 06, 9C, A5, 7F, 22, 5F, 00, + A0, 0D, 06, 9C, 9D, 7F, 22, 7F, 7F, + A0, 0D, 06, 9C, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9C, 4F, 9F, 88, FF, 01, + A0, 0D, 06, 9C, 4E, 9F, 88, FF, 01, + A0, 0D, 06, 95, D4, F8, 84, 75, 00, + A0, 0D, 06, 95, D2, 4A, 4B, 4B, 58, + A0, 0D, 06, 9D, A9, 84, 00, 00, 00, + A0, 0D, 06, 9D, A1, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 99, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 95, FF, 00, 0F, 00, + A0, 0D, 06, 9D, A5, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 9D, 7F, 7F, 7F, 7F, + A0, 0D, 06, 9D, 97, FF, 00, 0F, 00, + A0, 0D, 06, 9D, 4F, FF, FF, FF, 01, + A0, 0D, 06, 9D, 4E, FF, FF, FF, 01, + A0, 0D, 06, 99, D4, F8, 04, E4, 01, + A0, 0D, 06, 99, D2, 4A, 4B, 4B, 48, + A0, AF, 09, 10, 5F, 00, 18, 10, 5F, 00, 18, 00, + A0, 92, 28, 37, 00, 1B, 00, FC, 81, 0F, 00, 22, 80, 0F, 00, 14, 00, 20, 70, EA, 01, 43, 18, 32, 16, 78, 30, 0D, 00, 03, 55, EA, 05, 01, 04, 68, 02, 3F, 92, 04, 00, 0C, 13, + A0, 1F, 06, 63, 00, 42, 00, 14, 00, + A0, 9A, 02, 95, 01, + A0, 99, 0A, 03, 00, 80, 00, 00, 80, 00, 00, 00, 00 +} + +NXP_RF_CONF_BLK_12={ + 20, 02, 3B, 03, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, D0, 07, 00, 0F, FF, 7F, 00, 0F, FF, 7F, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0D, 03, 61, 09, 7E, + A0, 85, 04, 58, 08, A8, AC +} + +## DLMA Enable | VDDPA 3.9 +## LMA (CLK) A+B - (CLK-LESS) A/B/F 32 - 57.7/28.2/55.3 | RSSI 0x134F | H 8A/m +## LPDET 150 | NFCLD 300 | Ratio 43 | GreenCar 600 +## Tx first entry 3/6 +NXP_RF_CONF_BLK_13={ + 20, 02, F2, 04, + A0, AF, 09, 11, 20, 00, 18, 11, 20, 00, 18, 00, + A0, 98, 08, 20, 4F, 13, 80, 18, 39, 1C, 37, + A0, 34, C8, 23, 04, 3D, 01, 04, 19, CB, 05, 00, 00, 3E, 07, 00, 00, B0, 08, 00, 00, B0, 08, 00, 00, E5, 09, 00, 00, E5, 09, 00, 00, 58, 0B, 00, 00, 58, 0B, 00, 00, E1, 0D, 00, 00, 4B, 10, 00, 00, 4B, 10, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 4F, 13, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 06, 19, B9, 00, 00, 00, 35, 01, 00, 00, CF, 01, 00, 00, 2C, 02, 00, 00, C7, 02, 00, 00, 23, 03, 00, 00, DD, 03, 00, 00, 30, 05, 00, 00, 00, 07, 00, 00, A8, 09, 00, 00, 7B, 0E, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, 46, 30, 00, 00, + A0, 9E, 0C, 07, 4F, 13, 96, 00, 2C, 01, 2B, 58, 02, 00, 00 +} +NXP_RF_CONF_BLK_14={ + 20, 02, F1, 01, + A0, A9, ED, 00, 2A, FF, 01, 24, FF, 02, 1F, FF, 03, 1A, FF, 04, 16, FF, 05, 12, FF, 06, 0F, FF, 07, 0C, FF, 08, 09, FF, 09, 07, FF, 0A, 05, FF, 0B, 03, FF, 0C, 01, FF, 0D, 00, F5, 0E, 00, DC, 0F, 00, C6, 10, 00, B3, 11, 00, A2, 12, 00, 92, 13, 00, 84, 14, 00, 77, 15, 00, 6B, 16, 00, 60, 17, 00, 57, 18, 00, 4E, 19, 00, 46, 1A, 00, 3F, 1B, 00, 39, 1C, 00, 33, 1D, 00, 2E, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A, 1E, 00, 2A +} + + +NXP_RF_CONF_MAX_NUM=14 + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3F, 05, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A1, 13, 01, 32, + A0, 80, 02, FA, 00 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x01 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x3B +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# +############################################################################### +# Enable(0x01) or disable(0x00) non-standard tag reading +# Disable Non-standard card read 0x00 +# Enable Non-standard card read 0x01 +NXP_SUPPORT_NON_STD_CARD=0x00 +################################################################################# +# Enable(0x01) or disable(0x00) iso dep sak merge +# Disable SAK merging 0x00 +# Enable SAK merging 0x01 +NXP_ISO_DEP_MERGE_SAK=0x01 +################################################################################# +# Enable(0x01) or disable(0x00 ) for getting HW Info log over SMB wired +# Disable getting HW info log 0x00 +# Enable getting HW info log 0x01 +NXP_GET_HW_INFO_LOG=0x00 +################################################################################# +# Valid time difference range within for non-standard tag detection from first +# Activation fail to next discovery +# Note :- 1. This will take effect only when NXP_SUPPORT_NON_STD_CARD is enabled +# 2. The number will be multiplied by 100ms by MW. +# Default: +# Set to 00 if not supported +# byte[0] MIFARE_CLASSIC 100ms +# byte[1] ISO_DEP 300ms +NXP_NON_STD_CARD_TIMEDIFF={01, 03} +################################################################################# + diff --git a/proprietary/vendor/etc/libnfc-qrd-SN100.conf b/proprietary/vendor/etc/libnfc-qrd-SN100.conf new file mode 100644 index 0000000..6054e76 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-qrd-SN100.conf @@ -0,0 +1,592 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} +NXP_EXT_TVDD_CFG_2={20, 02, 30, 01, A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 0F, 0F, 0F, 0F, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, 20, 07, 13, 07, 05, 13} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_1={ +#} + +############################################################################### +# By default, the LPCD shall be enabled. +# Please check the platform specific configuration and enable it. +# NXP_RF_CONF_BLK_1={ +# 20, 02, 2E, 01, +# A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, +# 83, 04, +# 00, +# C0, 00, C0, 00, +# 00, 01, 00, 01, +# A0, 00, A0, 00, +# 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, +# 05, +# 7F, 00, +# 00, 01,00, 03 +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_2={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_3={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_4={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_5={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_6={ +#} + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3A, 04, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0A, 01, 20 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x39 + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x00 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x00 +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# diff --git a/proprietary/vendor/etc/libnfc-qrd-SN100_38_4MHZ.conf b/proprietary/vendor/etc/libnfc-qrd-SN100_38_4MHZ.conf new file mode 100644 index 0000000..6054e76 --- /dev/null +++ b/proprietary/vendor/etc/libnfc-qrd-SN100_38_4MHZ.conf @@ -0,0 +1,592 @@ +#################### This file is used by NXP NFC NCI HAL ##################### +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x03 +NXPLOG_NCIHAL_LOGLEVEL=0x03 +NXPLOG_NCIX_LOGLEVEL=0x03 +NXPLOG_NCIR_LOGLEVEL=0x03 +NXPLOG_FWDNLD_LOGLEVEL=0x03 +NXPLOG_TML_LOGLEVEL=0x03 +NFC_DEBUG_ENABLED=1 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +################################################################################# +#VEN Toggle Config +#Disable = 0x00 +#Enable = 0x01 +ENABLE_VEN_TOGGLE=0x00 + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Mifare Reader implementation +# 0: General implementation +# 1: Legacy implementation +LEGACY_MIFARE_READER=0 + +############################################################################### +# File name for Firmware +NXP_FW_NAME="libsn100u_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x02 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x02 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +#NXP_SYS_CLOCK_TO_CFG=0x06 + +############################################################################### +# The delay to try to start PLL/XTAL when using sys clock 256/fc units = ~18.8 us +# min value = 0x01 to max = 0x1F +#NXP_CLOCK_REQ_DELAY=0x16 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={2F, 02, 00} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +#NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} +NXP_EXT_TVDD_CFG_2={20, 02, 30, 01, A0, 0E, 2C, F0, 00, 3E, 11, E4, E4, E4, 00, 00, 00, 00, 00, A7, 8E, FF, FF, 0F, 0F, 0F, 0F, 0A, 00, 00, 00, 00, 02, 00, 00, 01, 00, 10, 00, 04, 00, 00, 00, 17, 40, 20, 07, 13, 07, 05, 13} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_1={ +#} + +############################################################################### +# By default, the LPCD shall be enabled. +# Please check the platform specific configuration and enable it. +# NXP_RF_CONF_BLK_1={ +# 20, 02, 2E, 01, +# A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, +# 83, 04, +# 00, +# C0, 00, C0, 00, +# 00, 01, 00, 01, +# A0, 00, A0, 00, +# 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, +# 05, +# 7F, 00, +# 00, 01,00, 03 +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_2={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_3={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_4={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_5={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_6={ +#} + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x01 + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit +#NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00} + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +#NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +# Low power tag detection LPTD for power reduction A068 +NXP_CORE_CONF_EXTN={20, 02, 3A, 04, + A0, EC, 01, 01, + A0, ED, 01, 01, + A0, 68, 2A, 06, 40, 60, 03, 19, 00, 00, 00, 00, 82, 04, 00, 00, 02, 00, 0F, 00, 02, 00, 0F, A0, 00, A0, 00, 03, FA, 00, 00, 00, 4C, 00, 14, 00, 7D, 00, 05, 7F, 00, 00, 01, 00, 03, + A0, 0A, 01, 20 +} +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 37, 11, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 3E, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01, + 68, 01, 01, + 85, 01, 01 + } + +############################################################################### +#set autonomous mode +# disable autonomous 0x00 +# enable autonomous 0x01 +NXP_AUTONOMOUS_ENABLE=0x00 +############################################################################### +#set Guard Timer +# Gurad Timer range to 0x0F-0xFF(i.e.15-255 seconds) +NXP_GUARD_TIMER_VALUE=0x0F +############################################################################### +#Enable SWP full power mode when phone is power off +#NXP_SWP_FULL_PWR_ON=0x00 + +################################################################################ +#This is used to configure UICC2 at boot time. +# UICC2 0x03 +NXP_DEFAULT_UICC2_SELECT=0x03 +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=20 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x01 + +############################################################################### +#Set the ISODEP (Mifare Desfire) route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_ISODEP_ROUTE=0x01 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_AID_PWR_STATE=0x39 + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_DESFIRE_PWR_STATE=0x3B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_MIFARE_CLT_PWR_STATE=0x3B + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_FELICA_CLT_PWR_STATE=0x3B +############################################################################### +#Set the T4TNfcee AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +DEFAULT_T4TNFCEE_AID_POWER_STATE=0x3B + +############################################################################### +#Set the default Felica T3T System Code OffHost route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_SYS_CODE_ROUTE=0x00 +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +#AID_MATCHING_PLATFORM=0x01 +############################################################################### +# P61 interface options +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x02 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +#NXP_CHINA_TIANJIN_RF_ENABLED=0x01 +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +#NXP_SWP_SWITCH_TIMEOUT=0x0A +############################################################################### +# Flashing Options Configurations +# FLASH_UPPER_VERSION 0x01 +# FLASH_DIFFERENT_VERSION 0x02 +# FLASH_ALWAYS 0x03 +NXP_FLASH_CONFIG=0x02 + +############################################################################### +# P61 interface options for JCOP Download +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x02 + +############################################################################### +# Option to perform LS update every boot +# Enable 0x01 +# Disable 0x00 +NXP_LS_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Option to perform JCOP update every boot +# Enable 0x01 +# Disable 0x00 +NXP_JCOP_FORCE_UPDATE_REQUIRED=0x00 + +############################################################################### +# Bail out mode +# If set to 1, NFCC is using bail out mode for either Type A or Type B poll. +# Set this parameter value to 1 if Android Beam is enabled, else set to 0. +NFA_POLL_BAIL_OUT_MODE=0x00 + +############################################################################### +# White list of Hosts +# This values will be the Hosts(NFCEEs) in the HCI Network. +DEVICE_HOST_WHITE_LIST={C0, 80} + +############################################################################### +# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1. +# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm +# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block +# 2 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check +# command is sent waiting for rsp and ntf. +PRESENCE_CHECK_ALGORITHM=2 +############################################################################### +# Options to Fallback to alternative route +# Disable 0x00 +# DH 0x01 +# ESE 0x02 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 +############################################################################### +# Vendor Specific Proprietary Protocol & Discovery Configuration +# Set to 0xFF if unsupported +# byte[0] NCI_PROTOCOL_18092_ACTIVE +# byte[1] NCI_PROTOCOL_B_PRIME +# byte[2] NCI_PROTOCOL_DUAL +# byte[3] NCI_PROTOCOL_15693 +# byte[4] NCI_PROTOCOL_KOVIO +# byte[5] NCI_PROTOCOL_MIFARE +# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO +# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME +# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME +NFA_PROPRIETARY_CFG={05, FF, FF, 06, 81, 80, FF, FF, FF} + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +################################################################################################### +#This flags will enable different modes of Lx Debug based on bits of the Byte0 & Byte1 +#Byte 0: +# |_________Bit Mask_______| Debug Mode +# b7|b6|b5|b4|b3|b2|b1|b0| +# | | |X | | | | | Enable L1 Events (ISO14443-4, ISO18092) +# | | | |X | | | | Enable L2 Reader Events(ROW specific) +# | | | | |X | | | Enable Felica SystemCode +# | | | | | |X | | Enable Felica RF (all Felica CM events) +# | | | | | | |X | Enable L2 Events Card Emulation (ISO14443-3, Modulation detected, RF Field ON/OFF) +#Byte 1: +# Enable RSSI 0x01 Byte1 Byte0 +# Disable RSSI 0x00 \__ __/ +# e.g. NXP_CORE_PROP_SYSTEM_DEBUG=0x0110 ==> L1 with RSSI +NXP_CORE_PROP_SYSTEM_DEBUG=0x0000 + +############################################################################### +#Enable NXP NCI runtime parser library +#Enable 0x01 +#Disable 0x00 +NXP_NCI_PARSER_LIBRARY=0x00 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + +############################################################################### +# Forcing HOST to listen for a selected protocol +# 0x00 : Disable Host Listen +# 0x01 : Enable Host to Listen (A) for ISO-DEP tech A +# 0x02 : Enable Host to Listen (B) for ISO-DEP tech B +# 0x04 : Enable Host to Listen (F) for T3T Tag Type Protocol tech F +# 0x07 : Enable Host to Listen (ABF)for ISO-DEP tech AB & T3T Tag Type Protocol tech F +HOST_LISTEN_TECH_MASK=0x07 + +############################################################################### +# Enable forward functionality +# Disable 0x00 +# Enable 0x01 +FORWARD_FUNCTIONALITY_ENABLE=0x01 + +############################################################################### +# Configure the NFC Extras to open and use a static pipe. If the value is +# not set or set to 0, then the default is use a dynamic pipe based on a +# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value +# for each EE (ESE/SIM1/SIM2) +OFF_HOST_ESE_PIPE_ID=0x16 +OFF_HOST_SIM_PIPE_ID=0x0A +OFF_HOST_SIM2_PIPE_ID=0x23 + +############################################################################### +#Set the Felica T3T System Code Power state : +#This settings will be used when application does not set this parameter +#Update Power state as per NCI2.0 +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen On lock +# bit pos 4 = Screen off unlock +# bit pos 5 = Screen Off lock +DEFAULT_SYS_CODE_PWR_STATE=0x00 +############################################################################### +#Default Secure Element route id +DEFAULT_OFFHOST_ROUTE=0x01 + +############################################################################### +#Maximum SMB transceive wait for response +NXP_SMB_TRANSCEIVE_TIMEOUT=2000 +############################################################################### +# Firmware file type +#.so file 0x01 +#.bin file 0x02 +NXP_FW_TYPE=0x01 +############################################################################ +# Extended APDU length for ISO_DEP +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +######################################################################### +# Support for Amendment I SEMS specification +# Support SEMS Amendment I 0x01 +# Support NXP LS client 0x00 +NXP_GP_AMD_I_SEMS_SUPPORTED=0x01 + +############################################################################### +#All eSE terminals shall be match with the /vendor/etc/vintf/manifest.xml file +#under android.hardware.secure_element +# The terminal name shall start from 1 +# Assign terminal number to each interface based on system config +NXP_SPI_SE_TERMINAL_NUM="eSE1" +############################################################################### +# Assign terminal number to each interface based on system config +#NXP_VISO_SE_TERMINAL_NUM="eSE3" +############################################################################### +# Assign terminal number to each interface based on system config +NXP_NFC_SE_TERMINAL_NUM="eSE2" +############################################################################### +#For static or dynamic dual UICC feature support +#Enable static dual uicc feature by setting value 0x00 +#Enable dynamic dual uicc feature by setting value 0x01 +NXP_DUAL_UICC_ENABLE=0x01 +############################################################################### +# Time to wait by DH when NFCC will report eSE Cold Temp Error. +# The value is as per the UM and in seconds +NXP_SE_COLD_TEMP_ERROR_DELAY=0x05 +############################################################################### +#OffHost ESE route location for MultiSE +#ESE = 01 +OFFHOST_ROUTE_ESE={01} +############################################################################### +#OffHost UICC route location for MultiSE +#UICC1 = 02 +#UICC2 = 03 +OFFHOST_ROUTE_UICC={02:03} + +############################################################################### +#T4T NFCEE ENABLE +#bit pos 0 = T4T NFCEE Enable +#bit pos 6 = T4T NFCEE Contactless write enable +NXP_T4T_NFCEE_ENABLE=0x01 + +############################################################################### +#CORE_SET_CONF_CMD to reset Prop Emvco Flag +NXP_PROP_RESET_EMVCO_CMD={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +#Guard time in ms for the mPOS/SCR module to process the reader start/stop req +NXP_RDR_REQ_GUARD_TIME=0 + +############################################################################### +#MW workaround to enable LPCD when EMVCO polling mode starts and disable +#while switching back to NFC Forum mode +# 0 --> Disable MW workaround +# 1 --> Enable MW workaround +NXP_RDR_DISABLE_ENABLE_LPCD=0 + +############################################################################### +# Firmware patch format, Only 1 and 5 should be set +# 0 -> NFC Default +# 1 -> EMVCO Default +# 3 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = Removal process +# 5 -> EMVCO Cert Polling, DISC_IDLE = Removal process , DISC DEACTIVATE = POWER_OFF +# 7 -> EMVCO Polling, DISC_IDLE = POWER_OFF, DISC DEACTIVATE = POWER_OFF +NFA_CONFIG_FORMAT=1 + +################################################################################ +# This will enable power state required for GSMA testing. +# When this is enabled , then default AID route power state is added with this power state +# If any aid with power state 0 is added, then this power state is used. +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen off unlock +# bit pos 4 = Screen On lock +# bit pos 5 = Screen Off lock +#DEFUALT_GSMA_PWR_STATE=0x3B + +################################################################################# +# Enable disconnect tag in screen off +# Disable 0x00 +# Enable 0x01 +NXP_DISCONNECT_TAG_IN_SCRN_OFF=0x01 +################################################################################# diff --git a/proprietary/vendor/etc/libnfc-sec-vendor.conf b/proprietary/vendor/etc/libnfc-sec-vendor.conf new file mode 100644 index 0000000..feb898d --- /dev/null +++ b/proprietary/vendor/etc/libnfc-sec-vendor.conf @@ -0,0 +1,44 @@ +#Target: SN4V +#MOTO: rhodep V1 20211201 + +#Vendor common +NFA_POLL_BAIL_OUT_MODE=0 +PRESENCE_CHECK_ALGORITHM=5 +NFA_PROPRIETARY_CFG={00, 81, 82, 80, 8A, 80, 70, 74, F4} + +DEFAULT_OFFHOST_ROUTE=0x83 +OFFHOST_ROUTE_ESE={82} +OFFHOST_ROUTE_UICC={83} +DEFAULT_NFCF_ROUTE=0x83 + +DEFAULT_SYS_CODE={FE:FF} +DEFAULT_ROUTE=0x83 +OFF_HOST_SIM_PIPE_ID=0x06 +ISO_DEP_MAX_TRANSCEIVE=0xFEFF +DEFAULT_ISODEP_ROUTE=0x83 + +#LSI +DEFAULT_SIMSLOT=1 +FW_CFG_CLK_SPEED=0x11 +FW_BASE_ADDRESS=0x2000 +WAKEUP_DELAY=20 +FW_DIR_PATH="/vendor/firmware/" +FW_FILE_NAME="sec_s3nrn4v_firmware.bin" +RF_HW_DIR_PATH="/vendor/etc/" +RF_HW_FILE_NAME="sec_s3nrn4v_hwreg.bin" +RF_SW_DIR_PATH="/vendor/etc/" +RF_SW_FILE_NAME="sec_s3nrn4v_swreg.bin" +POWER_DRIVER="/dev/sec-nfc" +TRANS_DRIVER="/dev/sec-nfc" +TRACE_LEVEL=0 +DATA_TRACE=0 +SLEEP_TIMEOUT=1000 +FW_UPDATE_MODE=0 + +# Cold reset +ESE_DELAY=0x7D0 +CP_TRIGGER_TYPE=1 +CP_DEFAULT_TYPE=1 +COLDRESET_SUPPORT=1 +AP_COLDRESET_ENABLE=1 +CP_COLDRESET_ENABLE=1 diff --git a/proprietary/vendor/etc/nfc_calibration.txt b/proprietary/vendor/etc/nfc_calibration.txt new file mode 100644 index 0000000..599dfc3 --- /dev/null +++ b/proprietary/vendor/etc/nfc_calibration.txt @@ -0,0 +1,80 @@ +# ---------------------------------------------- +# Test name: SN1X0_SPC +# Description: runs SPC +# Revision: 2.00 +# Date: 27/07/2020 +# Tool rev: 1.12 or later +# ---------------------------------------------- + +version +interval 200 +reset 1 + +#// NCI CORE RESET CMD +send 20000100 +receive + +#// NCI CORE INIT CMD +send 2001020000 + +#// NCI CORE SETCONFIG CMD: +send 20020401850101 + +#// NCI SYSTEM ENABLE PROPRIETARY CMD +send 2F0200 + +#// READ OFFSET BEFORE SPC +send 20030301A017 + +#//SET Normal Polling +send 20022E01A0682A064060031900000000030400C009C00900010001A000A00003FA0000004C0014007D00057F0000010003 + +#// SET SPC 1RST STEP (SPC CALIBRATION) +#//send 2F3D0F3000E02E3251000000001D0000121F +#// COPY SPC CMD (2F3D0F3XXXXX) HERE +#//send 2F3D0F3000E02E3251760A28A27D0000121F +send 2F3D0F3000E02E3251A40C2EAA7D0000121F +#// send 2F3D0XXXXXXXXXXX + +#// SPC CMD [PLL sweep] input clock 19.2MHz +send 2F3D7E3001C08C0466C08C0366C08C0266C08C0166C08C0066008D0466008D0366008D0266008D0166008D0066408D0466408D0366408D0266408D0166408D0066808D0466808D0366808D0266808D0166808D0066C08D0466C08D0366C08D0266C08D0166C08D0066008E0466008E0366008E0266008E0166008E0066408E0466 +sleep 100 +send 2F3D7E3002408E0366408E0266408E0166408E0066808E0466808E0366808E0266808E0166808E0066C08E0466C08E0366C08E0266C08E0166C08E0066008F0466008F0366008F0266008F0166008F0066408F0466408F0366408F0266408F0166408F0066808F0466808F0366808F0266808F0166808F0066C08F0466C08F0366 +sleep 100 +send 2F3D4E3003C08F0266C08F0166C08F0066009004660090036600900266009001660090006640900466409003664090026640900166409000668090046680900366809002668090016680900066C0900466 +sleep 100 + +#// SPC CMD [PLL sweep] input clock 26MHz +#//send 2F3D7E300142A5046642A5016682A5036682A50066C2A5026602A6046602A6016642A6036642A6006682A60266C2A60466C2A6016602A7036602A7006642A7026682A7046682A70166C2A70366C2A7006602A8026642A8046642A8016682A8036682A80066C2A8026602A9046602A9016642A9036642A9006682A90266C2A90466 +#//sleep 100 +#//send 2F3D7E3002C2A9016602AA036602AA006642AA026682AA046682AA0166C2AA0366C2AA006602AB026642AB046642AB016682AB036682AB0066C2AB026602AC046602AC016642AC036642AC006682AC0266C2AC0466C2AC016602AD036602AD006642AD026682AD046682AD0166C2AD0366C2AD006602AE026642AE046642AE0166 +#//sleep 100 +#//send 2F3D4E300382AE036682AE0066C2AE026602AF046602AF016642AF036642AF006682AF0266C2AF0466C2AF016602B0036602B0006642B0026682B0046682B00166C2B00366C2B0006602B1026642B10466 +#//sleep 100 + +#// SPC CMD [PLL sweep] input clock 27.12MHz +#//send 2F3D7E300142A3006682A30266C2A30466C2A3016602A4036602A4006642A4026682A4046682A40166C2A40366C2A4006602A5026642A5046642A5016682A5036682A50066C2A5026602A6046602A6016642A6036642A6006682A60266C2A60466C2A6016602A7036602A7006642A7026682A7046682A70166C2A70366C2A70066 +#//sleep 100 +#//send 2F3D7E300202A8026642A8046642A8016682A8036682A80066C2A8026602A9046602A9016642A9036642A9006682A90266C2A90466C2A9016602AA036602AA006642AA026682AA046682AA0166C2AA0366C2AA006602AB026642AB046642AB016682AB036682AB0066C2AB026602AC046602AC016642AC036642AC006682AC0266 +#//sleep 100 +#//send 2F3D4E3003C2AC0466C2AC016602AD036602AD006642AD026682AD046682AD0166C2AD0366C2AD006602AE026642AE046642AE016682AE036682AE0066C2AE026602AF046602AF016642AF036642AF0066 +#//sleep 100 + +#// SPC CMD [PLL sweep] input clock 38.4MHz +#//send 2F3D7E3001C18C0466C18C0366C18C0266C18C0166C18C0066018D0466018D0366018D0266018D0166018D0066418D0466418D0366418D0266418D0166418D0066818D0466818D0366818D0266818D0166818D0066C18D0466C18D0366C18D0266C18D0166C18D0066018E0466018E0366018E0266018E0166018E0066418E0466 +#//sleep 100 +#//send 2F3D7E3002418E0366418E0266418E0166418E0066818E0466818E0366818E0266818E0166818E0066C18E0466C18E0366C18E0266C18E0166C18E0066018F0466018F0366018F0266018F0166018F0066418F0466418F0366418F0266418F0166418F0066818F0466818F0366818F0266818F0166818F0066C18F0466C18F0366 +#//sleep 100 +#//send 2F3D4E3003C18F0266C18F0166C18F0066019004660190036601900266019001660190006641900466419003664190026641900166419000668190046681900366819002668190016681900066C1900466 +#//sleep 100 + +#// SPC START +send 2F3D0131 + +trigger 6F3D07 + +#//SET LPCD +send 20022E01A0682A064060031900000000820400C005C00900010001A000A00003FA0000004C0014007D00057F0000010003 + +#// READ OFFSET AFTER SPC +send 20030301A017 diff --git a/proprietary/vendor/etc/permissions/com.motorola.camera3.content.ai.xml b/proprietary/vendor/etc/permissions/com.motorola.camera3.content.ai.xml new file mode 100644 index 0000000..5b2d21b --- /dev/null +++ b/proprietary/vendor/etc/permissions/com.motorola.camera3.content.ai.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/proprietary/vendor/etc/permissions/com.motorola.camera3.lens.xml b/proprietary/vendor/etc/permissions/com.motorola.camera3.lens.xml new file mode 100644 index 0000000..a1b691f --- /dev/null +++ b/proprietary/vendor/etc/permissions/com.motorola.camera3.lens.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/proprietary/vendor/etc/permissions/com.motorola.camera3.rhodec.xml b/proprietary/vendor/etc/permissions/com.motorola.camera3.rhodec.xml new file mode 100644 index 0000000..a51ba6b --- /dev/null +++ b/proprietary/vendor/etc/permissions/com.motorola.camera3.rhodec.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/proprietary/vendor/etc/permissions/com.motorola.camera3.xml b/proprietary/vendor/etc/permissions/com.motorola.camera3.xml new file mode 100644 index 0000000..72eb259 --- /dev/null +++ b/proprietary/vendor/etc/permissions/com.motorola.camera3.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/proprietary/vendor/etc/qdcm_calib_data_mipi_mot_cmd_csot_1080p_dsc_655.xml b/proprietary/vendor/etc/qdcm_calib_data_mipi_mot_cmd_csot_1080p_dsc_655.xml new file mode 100644 index 0000000..776f191 --- /dev/null +++ b/proprietary/vendor/etc/qdcm_calib_data_mipi_mot_cmd_csot_1080p_dsc_655.xml @@ -0,0 +1,34 @@ + + + + + + 00000000000000000000000000000000D41D4348F301E73FEEC5CDA67870CE3F00FD4A401673A73FE0668DD0367CFB3EA151D04C3498C83E133D6F0057C6EFBEAB6935FE05151B3F11B150B657D2FFBE98A503C9887D14BF862AC49483A575BE000000000000000012E6F59BD579AC3F715838071C50EE3FAB1642CAC0587E3F822C4DCE42E3E7BE7E0B98ACB17F21BF51CEE481FBAAFC3ED9135B6C08AD173F98CEC0F087D5FE3EE81BBD9EDB02CDBEAC844BC8FD897FBE0000000000000000F58809FF7006983F1A35761696FDB43FD2A774E188CCEC3F4EFF021017F9F2BE3E7FF57BC7E6DEBEB63298531F2721BFFFDDE0B9B59AE6BEC2506C6E60A71B3FC948571C9C030D3F23C673002CA56BBE + 00000400000100000600000000000000010000000200000004000000050000000600000007000000090000000A0000000B0000000C0000000E0000000F0000001000000012000000130000001500000017000000190000001A0000001C0000001F000000210000002300000025000000280000002A0000002D0000002F0000003200000035000000380000003B0000003E0000004100000044000000480000004B0000004F00000053000000560000005A0000005E00000062000000660000006B0000006F00000074000000780000007D00000082000000870000008C00000091000000960000009B000000A1000000A6000000AC000000B2000000B8000000BE000000C4000000CA000000D1000000D7000000DE000000E4000000EB000000F2000000F900000000010000080100000F010000170100001E010000260100002E010000360100003E010000460100004F010000570100006001000069010000720100007B010000840100008D01000096010000A0010000AA010000B3010000BD010000C7010000D2010000DC010000E6010000F1010000FC01000006020000110200001D02000028020000330200003F0200004A02000056020000620200006E0200007A0200008702000093020000A0020000AD020000BB020000C6020000D3020000E3020000EE020000FC0200000A03000018030000260300003403000042030000530300005F0300006E0300007D0300008C0300009B030000AB030000BA030000CA030000DA030000EA030000FA0300000A0400001A0400002B0400003C0400004C0400005D0400006F0400008004000091040000A3040000B5040000C7040000D9040000EB040000FD040000100500002305000035050000480500005C0500006F0500008205000096050000AA050000BE050000D2050000E6050000FB0500000F06000024060000390600004E06000063060000790600008E060000A4060000BA060000D0060000E6060000FD060000130700002A07000041070000580700006F070000860700009E070000B6070000CD070000E6070000FE070000160800002F08000047080000600800007908000093080000AC080000C6080000DF080000F9080000130900002E09000048090000630900007D09000098090000B4090000CF090000EA090000060A0000220A00003E0A00005A0A0000760A0000930A0000B00A0000CC0A0000E90A0000070B0000240B0000420B00005F0B00007D0B00009C0B0000BA0B0000D80B0000F70B0000160C0000350C0000540C0000730C0000930C0000B30C0000D30C0000F30C0000130D0000340D0000540D0000750D0000960D0000B70D0000D90D0000FA0D00001C0E00003E0E0000600E0000830E0000A50E0000C80E0000EB0E00000E0F0000310F0000540F0000780F00009C0F0000C00F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000200000004000000050000000600000007000000090000000A0000000B0000000C0000000E0000000F0000001000000012000000130000001500000017000000190000001A0000001C0000001F000000210000002300000025000000280000002A0000002D0000002F0000003200000035000000380000003B0000003E0000004100000044000000480000004B0000004F00000053000000560000005A0000005E00000062000000660000006B0000006F00000074000000780000007D00000082000000870000008C00000091000000960000009B000000A1000000A6000000AC000000B2000000B8000000BE000000C4000000CA000000D1000000D7000000DE000000E4000000EB000000F2000000F900000000010000080100000F010000170100001E010000260100002E010000360100003E010000460100004F010000570100006001000069010000720100007B010000840100008D01000096010000A0010000AA010000B3010000BD010000C7010000D2010000DC010000E6010000F1010000FC01000006020000110200001D02000028020000330200003F0200004A02000056020000620200006E0200007A0200008702000093020000A0020000AD020000BB020000C6020000D3020000E3020000EE020000FC0200000A03000018030000260300003403000042030000530300005F0300006E0300007D0300008C0300009B030000AB030000BA030000CA030000DA030000EA030000FA0300000A0400001A0400002B0400003C0400004C0400005D0400006F0400008004000091040000A3040000B5040000C7040000D9040000EB040000FD040000100500002305000035050000480500005C0500006F0500008205000096050000AA050000BE050000D2050000E6050000FB0500000F06000024060000390600004E06000063060000790600008E060000A4060000BA060000D0060000E6060000FD060000130700002A07000041070000580700006F070000860700009E070000B6070000CD070000E6070000FE070000160800002F08000047080000600800007908000093080000AC080000C6080000DF080000F9080000130900002E09000048090000630900007D09000098090000B4090000CF090000EA090000060A0000220A00003E0A00005A0A0000760A0000930A0000B00A0000CC0A0000E90A0000070B0000240B0000420B00005F0B00007D0B00009C0B0000BA0B0000D80B0000F70B0000160C0000350C0000540C0000730C0000930C0000B30C0000D30C0000F30C0000130D0000340D0000540D0000750D0000960D0000B70D0000D90D0000FA0D00001C0E00003E0E0000600E0000830E0000A50E0000C80E0000EB0E00000E0F0000310F0000540F0000780F00009C0F0000C00F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000200000004000000050000000600000007000000090000000A0000000B0000000C0000000E0000000F0000001000000012000000130000001500000017000000190000001A0000001C0000001F000000210000002300000025000000280000002A0000002D0000002F0000003200000035000000380000003B0000003E0000004100000044000000480000004B0000004F00000053000000560000005A0000005E00000062000000660000006B0000006F00000074000000780000007D00000082000000870000008C00000091000000960000009B000000A1000000A6000000AC000000B2000000B8000000BE000000C4000000CA000000D1000000D7000000DE000000E4000000EB000000F2000000F900000000010000080100000F010000170100001E010000260100002E010000360100003E010000460100004F010000570100006001000069010000720100007B010000840100008D01000096010000A0010000AA010000B3010000BD010000C7010000D2010000DC010000E6010000F1010000FC01000006020000110200001D02000028020000330200003F0200004A02000056020000620200006E0200007A0200008702000093020000A0020000AD020000BB020000C6020000D3020000E3020000EE020000FC0200000A03000018030000260300003403000042030000530300005F0300006E0300007D0300008C0300009B030000AB030000BA030000CA030000DA030000EA030000FA0300000A0400001A0400002B0400003C0400004C0400005D0400006F0400008004000091040000A3040000B5040000C7040000D9040000EB040000FD040000100500002305000035050000480500005C0500006F0500008205000096050000AA050000BE050000D2050000E6050000FB0500000F06000024060000390600004E06000063060000790600008E060000A4060000BA060000D0060000E6060000FD060000130700002A07000041070000580700006F070000860700009E070000B6070000CD070000E6070000FE070000160800002F08000047080000600800007908000093080000AC080000C6080000DF080000F9080000130900002E09000048090000630900007D09000098090000B4090000CF090000EA090000060A0000220A00003E0A00005A0A0000760A0000930A0000B00A0000CC0A0000E90A0000070B0000240B0000420B00005F0B00007D0B00009C0B0000BA0B0000D80B0000F70B0000160C0000350C0000540C0000730C0000930C0000B30C0000D30C0000F30C0000130D0000340D0000540D0000750D0000960D0000B70D0000D90D0000FA0D00001C0E00003E0E0000600E0000830E0000A50E0000C80E0000EB0E00000E0F0000310F0000540F0000780F00009C0F0000C00F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002D0000003E0000004A000000540000005F000000670000006E000000750000007A00000080000000860000008C00000092000000970000009C000000A1000000A5000000A9000000AD000000B1000000B5000000B8000000BB000000BF000000C2000000C5000000C9000000CC000000D0000000D3000000D7000000DA000000DD000000E0000000E3000000E6000000E9000000EC000000EE000000F1000000F4000000F6000000F9000000FB000000FD000000000100000201000005010000070100000A0100000C01000010010000120100001501000017010000190100001C0100001E010000210100002301000025010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E01000040010000420100004401000046010000480100004A0100004C0100004E0100005001000052010000530100005501000057010000590100005B0100005C0100005E010000600100006101000063010000640100006601000067010000690100006B0100006C0100006E0100006F010000710100007201000074010000750100007701000078010000790100007B0100007D0100007E0100007F0100008101000082010000840100008501000086010000880100008A0100008B0100008D0100008E0100008F0100009101000092010000940100009501000097010000980100009A0100009B0100009C0100009E0100009F010000A1010000A2010000A4010000A6010000A7010000A9010000AA010000AC010000AD010000AE010000B0010000B1010000B2010000B4010000B5010000B6010000B7010000B8010000B9010000BB010000BC010000BE010000BF010000C0010000C1010000C3010000C4010000C6010000C7010000C8010000C9010000CB010000CC010000CE010000CF010000D0010000D1010000D2010000D4010000D5010000D6010000D7010000D8010000D9010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF0100000002000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F0200001002000011020000120200001302000014020000150200001702000018020000190200001A0200001B0200001B0200001C0200001D0200001E0200001F0200002002000021020000220200002302000024020000250200002702000028020000290200002A0200002A0200002B0200002C0200002D0200002E0200002F020000310200003202000032020000330200003402000035020000350200003602000038020000390200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004D0200004E0200004F0200005002000051020000520200005302000054020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005D0200005E0200005F0200006002000061020000620200006302000063020000640200006502000066020000670200006702000068020000690200006A0200006B0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007202000073020000740200007502000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007D0200007E0200007F020000800200008102000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008A0200008B0200008C0200008C0200008D0200008D0200008E0200008F0200008F0200009002000091020000920200009202000093020000940200009402000095020000960200009702000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009E0200009F020000A0020000A1020000A2020000A3020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A9020000AA020000AA020000AB020000AC020000AC020000AD020000AD020000AE020000AF020000AF020000B0020000B1020000B1020000B2020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CF020000CF020000D0020000D0020000D1020000D1020000D2020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D8020000D9020000D9020000DA020000DB020000DC020000DC020000DD020000DE020000DE020000DF020000E0020000E0020000E1020000E1020000E2020000E3020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EB020000EB020000EC020000ED020000ED020000EE020000EF020000F0020000F0020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F6020000F7020000F8020000F8020000F9020000FA020000FA020000FB020000FC020000FC020000FD020000FE020000FE020000FF020000FF02000000030000010300000103000002030000030300000303000004030000040300000503000005030000050300000603000007030000070300000803000008030000090300000A0300000A0300000B0300000C0300000C0300000D0300000D0300000E0300000F0300000F030000100300001103000012030000120300001303000013030000140300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001C0300001C0300001D0300001E0300001E0300001F0300001F030000200300002103000021030000220300002303000023030000240300002403000025030000260300002603000027030000270300002803000029030000290300002A0300002A0300002B0300002C0300002D0300002D0300002E0300002E0300002F0300002F030000300300003103000031030000320300003203000033030000330300003403000034030000350300003603000036030000370300003803000038030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004503000045030000460300004603000047030000480300004803000049030000490300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F030000500300005003000051030000510300005203000052030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006203000062030000630300006303000064030000640300006503000065030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006D0300006D0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007303000074030000740300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F0300008003000080030000810300008103000082030000820300008303000083030000840300008403000085030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008B0300008B0300008B0300008C0300008C0300008D0300008D0300008D0300008E0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A1030000A1030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B3030000B4030000B4030000B4030000B5030000B5030000B6030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CB030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D5030000D6030000D6030000D7030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DC030000DC030000DD030000DE030000DE030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E5030000E6030000E6030000E6030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EF030000EF030000EF030000F0030000F0030000F1030000F1030000F1030000F2030000F2030000F2030000F3030000F3030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F7030000F8030000F8030000F9030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000000000002C0000003D00000049000000540000005D000000660000006D00000073000000790000007F00000085000000890000008E00000094000000990000009D000000A1000000A5000000A9000000AD000000B1000000B4000000B8000000BB000000BE000000C1000000C5000000C8000000CC000000CF000000D2000000D6000000D9000000DC000000DF000000E2000000E5000000E7000000EA000000ED000000EF000000F2000000F4000000F6000000F9000000FB000000FE000000000100000301000005010000080100000B0100000D01000010010000120100001401000017010000190100001C0100001E01000020010000230100002501000027010000290100002B0100002D0100002F01000031010000330100003501000037010000390100003B0100003D0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100005001000052010000530100005501000057010000590100005A0100005C0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006E010000700100007101000073010000740100007601000077010000790100007A0100007C0100007D0100007E010000800100008101000082010000840100008501000087010000880100008A0100008B0100008C0100008E0100008F010000900100009201000093010000950100009601000098010000990100009B0100009C0100009D0100009E0100009F010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AC010000AD010000AE010000AF010000B0010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C4010000C5010000C6010000C7010000C9010000CA010000CB010000CC010000CE010000CF010000D0010000D1010000D2010000D3010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F1010000F2010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF0100000002000001020000020200000302000004020000050200000602000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000150200001602000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002D0200002E0200002F0200003002000031020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004502000046020000470200004802000049020000490200004A0200004B0200004C0200004D0200004D0200004E0200004F0200005002000051020000520200005202000053020000540200005502000056020000570200005702000058020000590200005A0200005B0200005C0200005C0200005D0200005E0200005F020000600200006002000061020000620200006302000064020000650200006502000066020000670200006802000068020000690200006A0200006B0200006B0200006C0200006D0200006E0200006E0200006F0200007002000071020000720200007302000074020000740200007502000076020000770200007802000078020000790200007A0200007B0200007B0200007C0200007D0200007E0200007E0200007F0200008002000081020000810200008202000083020000830200008402000085020000850200008602000087020000870200008802000089020000890200008A0200008B0200008B0200008C0200008D0200008E0200008E0200008F0200009002000091020000920200009302000093020000940200009502000095020000960200009702000098020000990200009A0200009B0200009B0200009C0200009D0200009D0200009E0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A4020000A5020000A5020000A6020000A7020000A7020000A8020000A8020000A9020000AA020000AA020000AB020000AC020000AD020000AE020000AE020000AE020000AF020000B0020000B1020000B1020000B2020000B3020000B4020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BA020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C3020000C3020000C4020000C4020000C5020000C5020000C6020000C7020000C8020000C8020000C9020000CA020000CB020000CB020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DA020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E1020000E2020000E3020000E3020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000E9020000EA020000EB020000EB020000EC020000ED020000ED020000EE020000EE020000EF020000F0020000F0020000F1020000F2020000F2020000F3020000F4020000F4020000F5020000F6020000F6020000F7020000F7020000F8020000F8020000F9020000F9020000F9020000FA020000FA020000FB020000FC020000FC020000FD020000FE020000FE020000FF02000000030000000300000103000001030000020300000303000004030000040300000503000006030000060300000703000007030000080300000803000009030000090300000A0300000A0300000B0300000C0300000C0300000D0300000E0300000E0300000F03000010030000100300001103000012030000120300001303000013030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001B0300001B0300001C0300001C0300001D0300001D0300001E0300001F0300001F03000020030000210300002103000022030000230300002303000024030000240300002503000025030000260300002603000027030000270300002803000029030000290300002A0300002B0300002B0300002C0300002D0300002D0300002E0300002F0300002F03000030030000300300003103000031030000320300003203000033030000330300003403000035030000350300003603000037030000370300003803000038030000390300003A0300003A0300003B0300003B0300003C0300003D0300003D0300003E0300003F0300003F0300004003000040030000410300004103000042030000420300004303000044030000440300004503000045030000460300004703000047030000480300004803000049030000490300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000500300005103000051030000510300005203000052030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005A0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F03000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000068030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000070030000710300007103000072030000720300007303000073030000740300007403000075030000750300007603000077030000770300007703000078030000780300007903000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007E0300007E0300007F0300007F0300007F030000800300008003000081030000810300008103000082030000820300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008D0300008D0300008E0300008E0300008F0300008F03000090030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009E0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A8030000A9030000A9030000A9030000AA030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C3030000C3030000C3030000C4030000C4030000C5030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D4030000D5030000D5030000D5030000D6030000D6030000D7030000D7030000D8030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E1030000E2030000E2030000E3030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E8030000E9030000E9030000EA030000EA030000EA030000EB030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EF03000000000000290000003A000000450000004E0000005800000060000000670000006D00000073000000790000007D00000083000000880000008D00000091000000960000009A0000009E000000A2000000A6000000A9000000AD000000B0000000B3000000B6000000B9000000BC000000BF000000C2000000C5000000C8000000CB000000CE000000D1000000D4000000D7000000DA000000DC000000DF000000E2000000E4000000E7000000E9000000EB000000EE000000F0000000F2000000F5000000F7000000F9000000FB000000FD000000FF000000010100000301000006010000080100000A0100000D0100000F01000011010000130100001501000017010000190100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E0100002F01000031010000330100003501000036010000380100003A0100003C0100003E010000400100004101000043010000450100004601000048010000490100004B0100004C0100004E0100004F0100005101000052010000540100005601000057010000590100005A0100005B0100005D0100005E01000060010000610100006301000064010000660100006701000068010000690100006B0100006C0100006D0100006F01000070010000710100007201000074010000750100007601000077010000790100007A0100007B0100007C0100007E0100007F01000080010000810100008201000084010000850100008601000087010000890100008A0100008B0100008D0100008E0100008F010000900100009201000093010000940100009601000097010000980100009A0100009B0100009C0100009D0100009E010000A0010000A1010000A2010000A3010000A5010000A6010000A7010000A8010000A9010000AA010000AC010000AD010000AE010000B0010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F6010000F7010000F8010000F9010000F9010000FA010000FB010000FC010000FD010000FE010000FF01000000020000010200000202000003020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000C0200000D0200000E0200000F02000010020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001B0200001C0200001D0200001D0200001E0200001F02000020020000210200002202000023020000240200002502000026020000270200002802000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F0200002F0200003002000031020000320200003302000034020000340200003502000036020000370200003802000039020000390200003A0200003B0200003C0200003D0200003D0200003E0200003F020000400200004002000041020000420200004302000044020000440200004502000046020000470200004702000048020000490200004A0200004A0200004B0200004C0200004D0200004D0200004E0200004F02000050020000500200005102000052020000530200005302000054020000550200005602000057020000570200005802000059020000590200005A0200005B0200005C0200005C0200005D0200005E0200005F0200005F0200006002000061020000610200006202000063020000630200006402000065020000650200006602000067020000670200006802000069020000690200006A0200006B0200006C0200006C0200006D0200006E0200006F0200006F0200007002000070020000710200007202000072020000730200007402000075020000760200007602000077020000780200007802000079020000790200007A0200007B0200007C0200007C0200007D0200007E0200007E0200007F02000080020000800200008102000081020000820200008202000083020000840200008402000085020000850200008602000086020000870200008802000089020000890200008A0200008B0200008B0200008C0200008D0200008D0200008E0200008F0200008F0200009002000090020000910200009202000092020000930200009402000094020000950200009602000096020000970200009802000098020000990200009A0200009B0200009B0200009C0200009D0200009E0200009E0200009F0200009F020000A0020000A1020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A7020000A8020000A9020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000AF020000B0020000B1020000B1020000B2020000B2020000B3020000B4020000B4020000B5020000B5020000B6020000B7020000B8020000B8020000B9020000BA020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000BF020000C0020000C1020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000CF020000D0020000D0020000D1020000D1020000D2020000D2020000D3020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DE020000DF020000DF020000E0020000E0020000E1020000E1020000E2020000E3020000E3020000E4020000E5020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F0020000F1020000F1020000F2020000F2020000F2020000F3020000F4020000F4020000F5020000F6020000F6020000F7020000F7020000F8020000F8020000F9020000F9020000FA020000FA020000FB020000FB020000FC020000FC020000FD020000FE020000FE020000FF020000FF0200000003000001030000010300000203000003030000030300000303000004030000040300000503000005030000060300000603000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000012030000130300001403000014030000150300001503000016030000160300001703000017030000180300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001C0300001D0300001E0300001E0300001F0300001F0300002003000020030000200300002103000021030000220300002203000023030000230300002403000024030000250300002503000026030000260300002703000027030000280300002803000029030000290300002A0300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F0300002F0300003003000031030000310300003203000032030000330300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003E0300003F0300003F030000400300004003000040030000410300004103000042030000420300004303000043030000440300004403000045030000450300004603000046030000470300004703000048030000480300004803000049030000490300004A0300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F0300004F030000500300005003000050030000510300005103000052030000520300005203000053030000530300005403000054030000550300005503000055030000560300005603000057030000570300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F0300005F030000600300006003000061030000610300006103000062030000620300006303000063030000640300006403000065030000660300006603000067030000670300006703000068030000680300006903000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F0300007003000070030000710300007103000072030000720300007303000073030000730300007403000074030000740300007503000075030000760300007603000076030000770300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000080030000810300008103000082030000820300008203000083030000830300008403000084030000850300008503000086030000860300008603000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F0300009003000090030000900300009103000091030000920300009203000093030000930300009303000094030000940300009503000095030000950300009603000096030000970300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F0300009F030000A0030000A0030000A0030000A1030000A1030000A2030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AC030000AD030000AD030000AD030000AE030000AE030000AF030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B3030000B4030000B4030000B4030000B5030000B5030000B6030000B6030000B6030000B7030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 00000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 00000400000100000600000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000 + 3E06000000000000000000000000000000000000000000000000000000000000000000000000000004000000000020C100000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F00000000000000005A0000000A000000010000005A0000000A000000010000001E0000001E0000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 000000000000000000000000000000008C9F65ED1ADFED3FFA4BE982992BA73F776C90767321A63F35E696EED70418BF4D22B35DAF9BD73E0160C5101883EDBE0ECBFD08A958203FD17C859148BBC5BECB4D04821AF40FBF264017CE72906ABE00000000000000007DA957DD329C9F3F44C35957F6E8EE3FCFE3BE0957E7773F8056054788E703BFBDCFEB28BA7A2ABF129560FF405C083F895E0B1E51AC1C3F3768F4091BD1143F9C8D633D47B8E0BECB9D34193CB47ABE000000000000000016626E7D3BDD873F02256AC33E098B3F6C06457A324BEF3FF29A9E30EE1107BFA29ECAFB34A7C9BE6D5300AC268C2ABFA6A19BDBAA2CE4BEE564B3BEAFF4213F40C74154BA380D3F6DCCC2C23DC95CBE + 00000400000100000600000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002C0000003C00000048000000520000005B000000630000006A00000071000000770000007D00000082000000880000008D00000091000000960000009B0000009F000000A3000000A7000000AB000000AF000000B3000000B6000000BA000000BD000000C1000000C4000000C7000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000DF000000E2000000E5000000E8000000EA000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FF000000010100000301000006010000080100000A0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100004F01000051010000530100005501000056010000580100005A0100005B0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008701000088010000890100008B0100008C0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005E0200005F0200005F02000060020000610200006202000063020000640200006502000065020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008F0200008F020000900200009102000092020000920200009302000094020000950200009502000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000000300000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000013030000130300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004403000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002C0000003C00000048000000520000005B000000630000006A00000071000000770000007D00000082000000880000008D00000091000000960000009B0000009F000000A3000000A7000000AB000000AF000000B3000000B6000000BA000000BD000000C1000000C4000000C7000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000DF000000E2000000E5000000E8000000EA000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FF000000010100000301000006010000080100000A0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100004F01000051010000530100005501000056010000580100005A0100005B0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008701000088010000890100008B0100008C0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005E0200005F0200005F02000060020000610200006202000063020000640200006502000065020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008F0200008F020000900200009102000092020000920200009302000094020000950200009502000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000000300000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000013030000130300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004403000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002A00000039000000450000004E000000560000005E000000650000006B00000071000000760000007C00000081000000850000008A0000008E00000093000000970000009B0000009F000000A2000000A6000000AA000000AD000000B0000000B4000000B7000000BA000000BD000000C0000000C3000000C6000000C9000000CC000000CF000000D1000000D4000000D7000000D9000000DC000000DE000000E1000000E3000000E6000000E8000000EB000000ED000000EF000000F2000000F4000000F6000000F8000000FB000000FD000000FF00000001010000030100000501000007010000090100000B0100000D0100000F01000011010000130100001501000017010000190100001B0100001D0100001F01000021010000230100002401000026010000280100002A0100002C0100002D0100002F0100003101000033010000340100003601000038010000390100003B0100003D0100003E0100004001000042010000430100004501000046010000480100004A0100004B0100004D0100004E010000500100005101000053010000540100005601000057010000590100005A0100005C0100005D0100005F010000600100006201000063010000650100006601000068010000690100006A0100006C0100006D0100006F01000070010000710100007301000074010000750100007701000078010000790100007B0100007C0100007D0100007F01000080010000810100008301000084010000850100008701000088010000890100008A0100008C0100008D0100008E0100008F01000091010000920100009301000094010000960100009701000098010000990100009B0100009C0100009D0100009E0100009F010000A1010000A2010000A3010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AC010000AD010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF01000000020000010200000202000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000D0200000E0200000F02000010020000110200001202000013020000140200001502000015020000160200001702000018020000190200001A0200001B0200001C0200001C0200001D0200001E0200001F0200002002000021020000220200002302000023020000240200002502000026020000270200002802000029020000290200002A0200002B0200002C0200002D0200002E0200002E0200002F0200003002000031020000320200003302000033020000340200003502000036020000370200003802000038020000390200003A0200003B0200003C0200003C0200003D0200003E0200003F020000400200004002000041020000420200004302000044020000450200004502000046020000470200004802000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F020000500200005002000051020000520200005302000053020000540200005502000056020000570200005702000058020000590200005A0200005A0200005B0200005C0200005D0200005D0200005E0200005F02000060020000600200006102000062020000630200006302000064020000650200006602000066020000670200006802000069020000690200006A0200006B0200006C0200006C0200006D0200006E0200006F0200006F020000700200007102000072020000720200007302000074020000740200007502000076020000770200007702000078020000790200007A0200007A0200007B0200007C0200007C0200007D0200007E0200007F0200007F02000080020000810200008102000082020000830200008402000084020000850200008602000086020000870200008802000088020000890200008A0200008B0200008B0200008C0200008D0200008D0200008E0200008F0200008F02000090020000910200009102000092020000930200009402000094020000950200009602000096020000970200009802000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009E0200009F020000A0020000A0020000A1020000A2020000A2020000A3020000A4020000A4020000A5020000A6020000A6020000A7020000A8020000A8020000A9020000AA020000AA020000AB020000AC020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B4020000B5020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000CF020000D0020000D1020000D1020000D2020000D2020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E0020000E1020000E2020000E2020000E3020000E3020000E4020000E5020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000E9020000EA020000EB020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F0020000F1020000F2020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF0200000003000000030000010300000103000002030000020300000303000004030000040300000503000005030000060300000603000007030000070300000803000009030000090300000A0300000A0300000B0300000B0300000C0300000D0300000D0300000E0300000E0300000F0300000F0300001003000010030000110300001203000012030000130300001303000014030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F0300001F0300002003000020030000210300002103000022030000230300002303000024030000240300002503000025030000260300002603000027030000270300002803000029030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F0300002F030000300300003103000031030000320300003203000033030000330300003403000034030000350300003503000036030000360300003703000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003E0300003F0300003F030000400300004003000041030000410300004203000042030000430300004303000044030000440300004503000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000500300005103000051030000520300005203000053030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F03000060030000600300006103000061030000620300006203000063030000630300006403000064030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006D0300006E0300006E0300006F0300006F03000070030000700300007103000071030000720300007203000073030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F0300008003000080030000810300008103000082030000820300008303000083030000840300008403000085030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000093030000940300009403000095030000950300009603000096030000970300009703000098030000980300009903000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + + ECFFFFFF0000803F936F163FDA1AB13DEDFFFFFF0000803F87501D3FB9530A3EEEFFFFFF0000803FAAEE213FD1912C3EEFFFFFFF0000803F8CBC283F8C82603EF0FFFFFF0000803F473C2D3FD1E9813EF1FFFFFF0000803F5C02343FFE0E9D3EF2FFFFFF0000803F6E6E383FE04DAF3EF3FFFFFF0000803F31093F3F3C16CB3EF4FFFFFF0000803F3960433F73BDDD3EF5FFFFFF0000803F91D5493F6519FA3EF6FFFFFF0000803F840E4E3F957E063FF7FFFFFF0000803F1B62543FCEDF143FF8FFFFFF0000803F828C583F90871E3FF9FFFFFF0000803FF2B65E3F1A182D3FFAFFFFFF0000803FE7C4623FABCE363FFBFFFFFF0000803FD7BE683F8E5A453FFCFFFFFF0000803F41B66C3FD6194F3FFDFFFFFF0000803F1E8A723F8AAC5D3FFEFFFFFF0000803F516B763F6475673FFFFFFFFF0000803F8A227C3FB41E763F000000000000803F0000803F0000803F01000000836B723F6189773F0000803F02000000BF0C6A3F484E723F0000803F03000000CD945E3F191E6B3F0000803F04000000B988573FEFAB663F0000803F0500000084D44D3F5E81603F0000803F0600000045D9473FEBAA5C3F0000803F07000000CA883F3F2651573F0000803F080000005C593A3FADFB533F0000803F09000000802D333F05514F3F0000803F0A00000083C02E3FC3624C3F0000803F0B0000005986283FE04C483F0000803F0C0000008C9D243F18B3453F0000803F0D000000431C1F3F8909423F0000803F0E000000ABB21B3FE4C03F3F0000803F0F0000003DD4163FC07A3C3F0000803F1000000009C0133FE4683A3F0000803F110000008A740F3FF27B373F0000803F1200000039B80C3FCB9D353F0000803F130000005DDE083FBAF9323F0000803F140000009467063F3448313F0000803F + + diff --git a/proprietary/vendor/etc/qdcm_calib_data_mipi_mot_cmd_tm_1080p_dsc_655.xml b/proprietary/vendor/etc/qdcm_calib_data_mipi_mot_cmd_tm_1080p_dsc_655.xml new file mode 100644 index 0000000..b426fb1 --- /dev/null +++ b/proprietary/vendor/etc/qdcm_calib_data_mipi_mot_cmd_tm_1080p_dsc_655.xml @@ -0,0 +1,34 @@ + + + + + + 00000000000000000000000000000000013A8B8ADC45E93F5489FB2FAF3ECD3F9023A956A4DB7DBFC5952C52D28B2ABF80E088B688F521BF5E44326432BA253F9E555F392EAEE73E65C9C3DD7E13113FA2BF3351C8440E3F600D01AD9FA243BE0000000000000000BEA2E372333EA73F21B7C4A47189EE3F359BDE07F55B8E3F160DE279179AF2BE245EF9A1AEB620BF0570CE8FA2DFF33E08C960794891123FBE4D0D7E8213F73E6FDC8EBFB0138A3E7FD2967392ED83BE0000000000000000C5A99F5FBD879B3F73D5F70B450AB63FC2585F0F7255EC3F588F1B52FB19FDBED8282D3A8CEBE73E5DCA2D4DC21131BF466B2B4D3AD1E0BE11383F2463C5303F1ED5D71862BB113F6D252B0DA66278BE + 00000400000100000600000000000000010000000200000004000000050000000600000007000000090000000A0000000B0000000C0000000E0000000F0000001000000012000000130000001500000017000000190000001A0000001C0000001F000000210000002300000025000000280000002A0000002D0000002F0000003200000035000000380000003B0000003E0000004100000044000000480000004B0000004F00000053000000560000005A0000005E00000062000000660000006B0000006F00000074000000780000007D00000082000000870000008C00000091000000960000009B000000A1000000A6000000AC000000B2000000B8000000BE000000C4000000CA000000D1000000D7000000DE000000E4000000EB000000F2000000F900000000010000080100000F010000170100001E010000260100002E010000360100003E010000460100004F010000570100006001000069010000720100007B010000840100008D01000096010000A0010000AA010000B3010000BD010000C7010000D2010000DC010000E6010000F1010000FC01000006020000110200001D02000028020000330200003F0200004A02000056020000620200006E0200007A0200008702000093020000A0020000AD020000BB020000C6020000D3020000E3020000EE020000FC0200000A03000018030000260300003403000042030000530300005F0300006E0300007D0300008C0300009B030000AB030000BA030000CA030000DA030000EA030000FA0300000A0400001A0400002B0400003C0400004C0400005D0400006F0400008004000091040000A3040000B5040000C7040000D9040000EB040000FD040000100500002305000035050000480500005C0500006F0500008205000096050000AA050000BE050000D2050000E6050000FB0500000F06000024060000390600004E06000063060000790600008E060000A4060000BA060000D0060000E6060000FD060000130700002A07000041070000580700006F070000860700009E070000B6070000CD070000E6070000FE070000160800002F08000047080000600800007908000093080000AC080000C6080000DF080000F9080000130900002E09000048090000630900007D09000098090000B4090000CF090000EA090000060A0000220A00003E0A00005A0A0000760A0000930A0000B00A0000CC0A0000E90A0000070B0000240B0000420B00005F0B00007D0B00009C0B0000BA0B0000D80B0000F70B0000160C0000350C0000540C0000730C0000930C0000B30C0000D30C0000F30C0000130D0000340D0000540D0000750D0000960D0000B70D0000D90D0000FA0D00001C0E00003E0E0000600E0000830E0000A50E0000C80E0000EB0E00000E0F0000310F0000540F0000780F00009C0F0000C00F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000200000004000000050000000600000007000000090000000A0000000B0000000C0000000E0000000F0000001000000012000000130000001500000017000000190000001A0000001C0000001F000000210000002300000025000000280000002A0000002D0000002F0000003200000035000000380000003B0000003E0000004100000044000000480000004B0000004F00000053000000560000005A0000005E00000062000000660000006B0000006F00000074000000780000007D00000082000000870000008C00000091000000960000009B000000A1000000A6000000AC000000B2000000B8000000BE000000C4000000CA000000D1000000D7000000DE000000E4000000EB000000F2000000F900000000010000080100000F010000170100001E010000260100002E010000360100003E010000460100004F010000570100006001000069010000720100007B010000840100008D01000096010000A0010000AA010000B3010000BD010000C7010000D2010000DC010000E6010000F1010000FC01000006020000110200001D02000028020000330200003F0200004A02000056020000620200006E0200007A0200008702000093020000A0020000AD020000BB020000C6020000D3020000E3020000EE020000FC0200000A03000018030000260300003403000042030000530300005F0300006E0300007D0300008C0300009B030000AB030000BA030000CA030000DA030000EA030000FA0300000A0400001A0400002B0400003C0400004C0400005D0400006F0400008004000091040000A3040000B5040000C7040000D9040000EB040000FD040000100500002305000035050000480500005C0500006F0500008205000096050000AA050000BE050000D2050000E6050000FB0500000F06000024060000390600004E06000063060000790600008E060000A4060000BA060000D0060000E6060000FD060000130700002A07000041070000580700006F070000860700009E070000B6070000CD070000E6070000FE070000160800002F08000047080000600800007908000093080000AC080000C6080000DF080000F9080000130900002E09000048090000630900007D09000098090000B4090000CF090000EA090000060A0000220A00003E0A00005A0A0000760A0000930A0000B00A0000CC0A0000E90A0000070B0000240B0000420B00005F0B00007D0B00009C0B0000BA0B0000D80B0000F70B0000160C0000350C0000540C0000730C0000930C0000B30C0000D30C0000F30C0000130D0000340D0000540D0000750D0000960D0000B70D0000D90D0000FA0D00001C0E00003E0E0000600E0000830E0000A50E0000C80E0000EB0E00000E0F0000310F0000540F0000780F00009C0F0000C00F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000200000004000000050000000600000007000000090000000A0000000B0000000C0000000E0000000F0000001000000012000000130000001500000017000000190000001A0000001C0000001F000000210000002300000025000000280000002A0000002D0000002F0000003200000035000000380000003B0000003E0000004100000044000000480000004B0000004F00000053000000560000005A0000005E00000062000000660000006B0000006F00000074000000780000007D00000082000000870000008C00000091000000960000009B000000A1000000A6000000AC000000B2000000B8000000BE000000C4000000CA000000D1000000D7000000DE000000E4000000EB000000F2000000F900000000010000080100000F010000170100001E010000260100002E010000360100003E010000460100004F010000570100006001000069010000720100007B010000840100008D01000096010000A0010000AA010000B3010000BD010000C7010000D2010000DC010000E6010000F1010000FC01000006020000110200001D02000028020000330200003F0200004A02000056020000620200006E0200007A0200008702000093020000A0020000AD020000BB020000C6020000D3020000E3020000EE020000FC0200000A03000018030000260300003403000042030000530300005F0300006E0300007D0300008C0300009B030000AB030000BA030000CA030000DA030000EA030000FA0300000A0400001A0400002B0400003C0400004C0400005D0400006F0400008004000091040000A3040000B5040000C7040000D9040000EB040000FD040000100500002305000035050000480500005C0500006F0500008205000096050000AA050000BE050000D2050000E6050000FB0500000F06000024060000390600004E06000063060000790600008E060000A4060000BA060000D0060000E6060000FD060000130700002A07000041070000580700006F070000860700009E070000B6070000CD070000E6070000FE070000160800002F08000047080000600800007908000093080000AC080000C6080000DF080000F9080000130900002E09000048090000630900007D09000098090000B4090000CF090000EA090000060A0000220A00003E0A00005A0A0000760A0000930A0000B00A0000CC0A0000E90A0000070B0000240B0000420B00005F0B00007D0B00009C0B0000BA0B0000D80B0000F70B0000160C0000350C0000540C0000730C0000930C0000B30C0000D30C0000F30C0000130D0000340D0000540D0000750D0000960D0000B70D0000D90D0000FA0D00001C0E00003E0E0000600E0000830E0000A50E0000C80E0000EB0E00000E0F0000310F0000540F0000780F00009C0F0000C00F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002900000038000000430000004E000000570000005D000000640000006B00000072000000770000007D00000082000000880000008D00000092000000970000009C000000A0000000A4000000A8000000AC000000B0000000B3000000B6000000BA000000BD000000C0000000C3000000C6000000C9000000CC000000D1000000D4000000D7000000DA000000DC000000DF000000E2000000E5000000E7000000EA000000ED000000EF000000F2000000F4000000F7000000F9000000FB000000FD000000FF000000020100000401000006010000080100000A0100000D0100000F010000110100001301000015010000180100001A0100001C0100001E01000020010000220100002401000026010000290100002B0100002D0100002F01000031010000330100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004401000046010000480100004A0100004B0100004D0100004F01000051010000520100005401000056010000580100005A0100005C0100005E0100006001000062010000630100006501000067010000690100006A0100006C0100006E0100006F0100007101000072010000740100007501000077010000790100007A0100007C0100007D0100007F010000810100008201000084010000850100008601000088010000890100008B0100008C0100008E0100008F010000900100009201000094010000950100009701000098010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B0010000B1010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000BF010000C0010000C2010000C3010000C4010000C5010000C6010000C8010000C9010000CA010000CB010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DF010000E0010000E1010000E2010000E3010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000000200000202000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F0200003002000031020000320200003302000034020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F0200003F0200004002000041020000420200004302000044020000450200004602000047020000470200004802000049020000490200004A0200004B0200004C0200004D0200004E0200004F0200004F02000050020000510200005202000053020000540200005502000056020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000064020000650200006602000067020000670200006802000069020000690200006A0200006B0200006C0200006E0200006F02000070020000710200007202000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000081020000820200008302000084020000850200008602000086020000870200008802000088020000890200008A0200008B0200008C0200008D0200008E0200008E0200008F02000090020000910200009202000093020000940200009502000095020000960200009702000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A4020000A5020000A5020000A6020000A7020000A8020000A9020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BA020000BB020000BC020000BC020000BD020000BE020000BF020000BF020000C0020000C1020000C1020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C8020000C9020000CA020000CA020000CB020000CC020000CC020000CD020000CE020000CF020000CF020000D0020000D1020000D2020000D2020000D3020000D4020000D5020000D6020000D7020000D7020000D8020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E1020000E2020000E3020000E4020000E4020000E5020000E6020000E7020000E7020000E8020000E9020000E9020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000F0020000F0020000F1020000F1020000F2020000F2020000F3020000F4020000F4020000F5020000F6020000F6020000F7020000F8020000F9020000FA020000FB020000FB020000FB020000FC020000FC020000FD020000FD020000FE020000FE020000FF020000FF0200000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000C0300000D0300000E0300000F0300000F0300001003000010030000110300001103000012030000120300001303000013030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F0300002003000020030000210300002203000023030000230300002303000024030000240300002503000025030000260300002603000027030000270300002803000029030000290300002A0300002A0300002B0300002B0300002C0300002D0300002D0300002E0300002E0300002F0300003003000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003703000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000410300004203000042030000430300004303000044030000440300004503000045030000450300004603000046030000470300004803000048030000490300004A0300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F030000500300005103000051030000520300005203000053030000530300005403000054030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000600300006103000061030000620300006203000062030000630300006303000064030000650300006503000066030000670300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007303000074030000740300007503000075030000760300007603000077030000770300007803000078030000790300007A0300007A0300007B0300007C0300007C0300007D0300007E0300007E0300007F030000800300008003000081030000820300008203000083030000830300008403000085030000850300008603000086030000870300008703000088030000880300008803000089030000890300008A0300008A0300008A0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F03000090030000900300009103000091030000920300009203000093030000940300009403000095030000950300009603000096030000970300009703000098030000980300009803000099030000990300009A0300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009E0300009E0300009F0300009F030000A0030000A1030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AD030000AD030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BB030000BB030000BC030000BC030000BC030000BC030000BD030000BD030000BD030000BD030000BE030000BE030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C5030000C5030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D3030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E1030000E1030000E2030000E3030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E6030000E7030000E7030000E8030000E8030000E8030000E9030000E9030000EA030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F5030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002900000037000000420000004B000000530000005A00000062000000680000006F000000750000007A0000007F000000850000008A0000008F00000094000000990000009D000000A1000000A5000000A9000000AC000000B0000000B3000000B6000000B9000000BC000000BF000000C2000000C5000000C8000000CA000000CD000000D0000000D3000000D6000000D9000000DC000000DE000000E1000000E4000000E6000000E9000000EB000000EE000000F0000000F2000000F4000000F7000000F9000000FB000000FD000000FF000000010100000401000006010000080100000A0100000D0100000F010000110100001301000015010000170100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E0100003001000031010000330100003501000037010000390100003A0100003C0100003E0100004001000041010000430100004501000046010000480100004A0100004C0100004E0100004F0100005101000052010000540100005601000057010000590100005B0100005C0100005E010000600100006201000063010000650100006601000068010000690100006B0100006D0100006E010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000083010000850100008601000088010000890100008B0100008C0100008D0100008E01000090010000910100009201000094010000950100009601000098010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A3010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AE010000AF010000B0010000B1010000B3010000B4010000B5010000B6010000B7010000B8010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D1010000D2010000D3010000D5010000D5010000D5010000D6010000D7010000D8010000DA010000DB010000DC010000DD010000DE010000DF010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000202000003020000040200000502000006020000070200000802000009020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000021020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F0200003002000031020000320200003302000034020000350200003602000036020000370200003802000038020000390200003A0200003B0200003C0200003C0200003D0200003E0200003F0200004002000041020000410200004202000043020000440200004502000046020000470200004802000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005302000054020000550200005602000056020000570200005802000058020000590200005A0200005B0200005C0200005D0200005E0200005E0200005E0200005F02000060020000610200006202000063020000640200006502000066020000670200006802000068020000690200006A0200006B0200006D0200006E0200006F0200006F020000700200007102000072020000720200007302000074020000750200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000850200008602000086020000870200008802000088020000890200008A0200008A0200008B0200008C0200008D0200008E0200008F0200008F0200009002000091020000910200009202000093020000930200009402000095020000960200009702000098020000990200009A0200009B0200009B0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A1020000A2020000A3020000A4020000A4020000A5020000A6020000A6020000A7020000A8020000A8020000A9020000AA020000AA020000AB020000AC020000AD020000AD020000AE020000AF020000AF020000B0020000B1020000B1020000B2020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BE020000BF020000BF020000C0020000C1020000C1020000C2020000C3020000C3020000C4020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000CA020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D1020000D1020000D2020000D3020000D4020000D4020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DC020000DD020000DE020000DE020000DF020000DF020000E0020000E1020000E1020000E2020000E2020000E2020000E2020000E3020000E3020000E4020000E4020000E5020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F6020000F7020000F7020000F8020000F8020000F9020000F9020000FA020000FA020000FB020000FC020000FD020000FD020000FE020000FE020000FF0200000003000000030000010300000103000002030000020300000303000003030000040300000403000005030000050300000603000006030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000D0300000E0300000E0300000F0300000F0300001003000010030000110300001103000012030000120300001303000013030000140300001403000015030000160300001603000017030000170300001803000019030000190300001A0300001B0300001B0300001C0300001C0300001D0300001D0300001E0300001F0300001F0300002003000020030000210300002103000022030000230300002303000024030000240300002503000025030000260300002603000027030000270300002803000029030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F0300002F0300003003000031030000310300003203000032030000330300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003C0300003D0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000041030000420300004303000043030000440300004403000045030000450300004603000047030000470300004703000048030000480300004803000049030000490300004A0300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F030000500300005003000051030000510300005103000052030000520300005303000054030000540300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F030000600300006003000061030000610300006203000062030000630300006403000065030000650300006603000067030000670300006703000067030000670300006803000068030000690300006A0300006A0300006B0300006B0300006C0300006C0300006C0300006D0300006D0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007303000074030000740300007503000075030000760300007603000077030000770300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007C0300007D0300007D0300007E0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000082030000830300008403000084030000850300008603000087030000880300008803000089030000890300008A0300008B0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000093030000930300009403000094030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009B0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F0300009F0300009F030000A0030000A0030000A0030000A0030000A1030000A1030000A1030000A1030000A1030000A2030000A2030000A2030000A2030000A3030000A3030000A3030000A4030000A4030000A5030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AD030000AD030000AE030000AE030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C8030000C9030000C9030000C9030000CA030000CA030000CB030000CB030000CB030000CC030000CC030000CD030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D7030000D7030000D8030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DB030000DC030000DC030000DC030000DD030000DD030000DE030000DE030000DE030000DF030000DF030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000000000002700000036000000400000004B000000520000005900000060000000670000006D00000073000000790000007E00000083000000880000008E00000093000000970000009B000000A0000000A3000000A7000000AB000000AE000000B1000000B4000000B8000000BA000000BD000000C0000000C3000000C6000000C9000000CB000000CE000000D1000000D4000000D6000000D9000000DB000000DE000000E0000000E3000000E5000000E7000000E9000000EB000000ED000000F0000000F2000000F4000000F6000000F8000000FA000000FC000000FE0000000001000002010000030100000501000007010000090100000B0100000D0100000F01000011010000120100001401000016010000180100001A0100001C0100001D0100001F0100002101000023010000240100002601000028010000290100002B0100002D0100002E010000300100003101000033010000350100003601000038010000390100003B0100003C0100003D0100003F010000400100004201000043010000450100004601000048010000490100004B0100004D0100004E010000500100005101000053010000540100005601000057010000590100005B0100005C0100005E0100005F0100006101000062010000640100006501000067010000680100006A0100006B0100006C0100006E0100006F010000710100007201000074010000750100007601000078010000790100007A0100007B0100007C0100007E0100007F010000810100008201000083010000850100008601000087010000880100008A0100008B0100008C0100008E0100008F0100009001000091010000920100009301000095010000960100009701000098010000990100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A3010000A4010000A5010000A6010000A7010000A8010000AA010000AA010000AB010000AC010000AD010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DD010000DE010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF01000000020000010200000202000003020000040200000502000006020000070200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F0200001002000011020000110200001202000013020000140200001502000016020000170200001802000019020000190200001A0200001B0200001C0200001C0200001D0200001E0200001F0200002002000021020000210200002202000023020000240200002502000025020000260200002702000028020000290200002A0200002A0200002B0200002C0200002D0200002D0200002E0200002F0200003002000031020000320200003302000034020000350200003602000036020000370200003802000038020000390200003A0200003A0200003B0200003C0200003C0200003D0200003E0200003F0200003F020000400200004102000041020000420200004302000044020000450200004602000046020000470200004802000048020000490200004A0200004B0200004B0200004C0200004D0200004E0200004F020000500200005002000051020000520200005302000053020000540200005502000056020000570200005702000058020000590200005A0200005A0200005B0200005C0200005D0200005E0200005F0200005F0200006002000061020000620200006302000064020000650200006502000066020000670200006802000069020000690200006A0200006B0200006B0200006C0200006D0200006E0200006E0200006F0200006F020000700200007102000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F0200007F0200008002000081020000820200008202000083020000840200008402000085020000850200008602000087020000870200008802000089020000890200008A0200008B0200008B0200008C0200008D0200008E0200008E0200008F0200009002000090020000910200009202000092020000930200009402000095020000950200009602000097020000970200009802000099020000990200009A0200009B0200009C0200009D0200009D0200009E0200009F0200009F020000A0020000A0020000A1020000A1020000A2020000A2020000A3020000A4020000A4020000A5020000A5020000A6020000A7020000A7020000A8020000A9020000A9020000AA020000AB020000AC020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B2020000B3020000B4020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C1020000C2020000C2020000C3020000C3020000C4020000C4020000C5020000C5020000C6020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000CF020000D0020000D1020000D1020000D2020000D3020000D4020000D4020000D5020000D5020000D6020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DE020000DF020000DF020000E0020000E0020000E1020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E7020000E7020000E7020000E8020000E8020000E9020000E9020000EA020000EA020000EB020000EB020000EC020000EC020000ED020000ED020000EE020000EF020000EF020000F0020000F0020000F1020000F1020000F2020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FA020000FB020000FB020000FC020000FC020000FD020000FD020000FE020000FE020000FF020000FF020000000300000003000001030000010300000203000003030000030300000403000004030000040300000503000005030000060300000603000007030000070300000803000009030000090300000A0300000A0300000B0300000B0300000C0300000D0300000D0300000E0300000E0300000F0300000F03000010030000100300001103000011030000120300001203000013030000130300001403000014030000150300001503000015030000160300001603000017030000170300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001C0300001D0300001D0300001E0300001E0300001F0300001F0300001F030000200300002003000021030000210300002103000022030000220300002303000023030000240300002403000025030000250300002603000026030000270300002703000028030000280300002803000029030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F0300002F0300003003000030030000310300003103000032030000320300003203000033030000330300003403000034030000350300003503000036030000360300003703000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003E0300003F0300003F0300004003000040030000410300004103000042030000420300004303000043030000430300004403000044030000440300004503000045030000450300004603000046030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000500300005103000051030000520300005203000052030000530300005303000054030000540300005403000055030000550300005603000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005A0300005B0300005C0300005D0300005D0300005E0300005F0300005F03000060030000600300006103000061030000620300006203000063030000630300006403000064030000650300006503000066030000660300006703000068030000680300006903000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007103000072030000720300007303000073030000730300007303000074030000740300007403000074030000750300007503000075030000750300007503000076030000760300007603000076030000770300007703000078030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007E0300007E0300007F0300007F03000080030000800300008103000081030000820300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F03000090030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009703000098030000980300009903000099030000990300009A0300009A0300009B0300009B0300009B0300009C0300009C0300009C0300009D0300009D0300009D0300009E0300009E0300009F0300009F0300009F030000A0030000A0030000A1030000A1030000A1030000A2030000A2030000A3030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A6030000A7030000A7030000A8030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AB030000AC030000AC030000AC030000AD030000AD030000AE030000AE030000AE030000AF030000AF030000B0030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 00000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 00000400000100000600000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000 + 3E06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080C000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F00000000000000005A0000000A000000010000005A0000000A000000010000001E0000001E0000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + 000000000000000000000000000000002273AA7560AEF03FCC0428E178CD923FF718D3B89FAE88BF2A9A0F6D7FC240BF41CD87ACD2AC20BF4183E27F7C40293FF5990FC9F6BD243FF78961196584043F3DDCC4FF0520183F88B1C3FFFC98F73D0000000000000000684D96C8E0AF823F433B4C780004F03F52DE41306FD258BFCF52DCF6530AF7BE4C3E96991CDE2FBFAC3E61162A48133F1D3A8F9F4A771E3FF351785C5367153F983EA2484AD4E63E94AE598FFFFA8CBE000000000000000029FC2BF8DC47723F311B8552FF45933F571621D8DAC8EE3FCC0E5564D220F7BE240A0F5D6C8CE5BE84237296F3E836BF70E0780DA7EFE03E1BF2CDC7A0B2373FABA9E7405D421A3FA7C9523815EE89BE + 00000400000100000600000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000200000002000000020000000300000003000000030000000400000005000000060000000700000008000000090000000B0000000C0000000D0000000F00000011000000130000001400000016000000190000001B0000001D000000200000002200000025000000270000002A0000002D0000003000000034000000370000003A0000003E0000004100000045000000490000004D00000051000000550000005A0000005E00000063000000670000006C00000071000000760000007B00000080000000860000008B00000091000000970000009D000000A3000000A9000000AF000000B5000000BC000000C2000000C9000000D0000000D7000000DE000000E5000000ED000000F4000000FC000000040100000B010000140100001C010000240100002C010000350100003E010000460100004F01000058010000620100006B010000740100007E01000088010000910100009B010000A6010000B0010000BA010000C5010000CF010000DA010000E5010000F0010000FB01000007020000120200001E0200002A02000036020000420200004E0200005A0200006702000073020000800200008D0200009A020000A7020000B4020000C2020000CF020000DD020000EB020000F90200000703000016030000240300003203000042030000500300005F0300006E0300007D0300008C0300009C030000AC030000BC030000CC030000DC030000EC030000FC0300000D0400001E0400002F040000400400005104000062040000740400008504000097040000A9040000BB040000CD040000DF040000F204000005050000170500002A0500003D0500005105000064050000780500008B0500009F050000B3050000C7050000DB050000F005000004060000190600002E06000043060000580600006E0600008306000099060000AF060000C5060000DB060000F1060000070700001E070000350700004C070000630700007A07000091070000A9070000C0070000D8070000F0070000080800002008000039080000510800006A080000830800009C080000B5080000CF080000E8080000020900001C09000036090000500900006A090000850900009F090000BA090000D5090000F00900000B0A0000270A0000420A00005E0A00007A0A0000960A0000B20A0000CE0A0000EB0A0000080B0000240B0000410B00005F0B00007C0B0000990B0000B70B0000D50B0000F30B0000110C00002F0C00004E0C00006C0C00008B0C0000AA0C0000C90C0000E80C0000080D0000270D0000470D0000670D0000870D0000A70D0000C80D0000E80D0000090E00002A0E00004B0E00006C0E00008D0E0000AF0E0000D10E0000F20E0000140F0000370F0000590F00007B0F00009E0F0000C10F0000F80F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 000000000004000006000000000000002C0000003C00000048000000520000005B000000630000006A00000071000000770000007D00000082000000880000008D00000091000000960000009B0000009F000000A3000000A7000000AB000000AF000000B3000000B6000000BA000000BD000000C1000000C4000000C7000000CB000000CE000000D1000000D4000000D7000000DA000000DD000000DF000000E2000000E5000000E8000000EA000000ED000000F0000000F2000000F5000000F7000000FA000000FC000000FF000000010100000301000006010000080100000A0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E01000030010000320100003401000036010000380100003A0100003C0100003E0100003F01000041010000430100004501000047010000480100004A0100004C0100004E0100004F01000051010000530100005501000056010000580100005A0100005B0100005D0100005F0100006001000062010000640100006501000067010000680100006A0100006B0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008701000088010000890100008B0100008C0100008E0100008F010000910100009201000093010000950100009601000097010000990100009A0100009C0100009D0100009E010000A0010000A1010000A2010000A4010000A5010000A6010000A8010000A9010000AA010000AB010000AD010000AE010000AF010000B1010000B2010000B3010000B4010000B6010000B7010000B8010000B9010000BB010000BC010000BD010000BE010000C0010000C1010000C2010000C3010000C4010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D2010000D3010000D4010000D5010000D6010000D7010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000440200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200005002000051020000520200005302000053020000540200005502000056020000570200005802000059020000590200005A0200005B0200005C0200005D0200005E0200005F0200005F02000060020000610200006202000063020000640200006502000065020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007802000078020000790200007A0200007B0200007C0200007C0200007D0200007E0200007F020000800200008002000081020000820200008302000084020000840200008502000086020000870200008702000088020000890200008A0200008B0200008B0200008C0200008D0200008E0200008F0200008F020000900200009102000092020000920200009302000094020000950200009502000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A5020000A5020000A6020000A7020000A8020000A8020000A9020000AA020000AB020000AB020000AC020000AD020000AE020000AE020000AF020000B0020000B0020000B1020000B2020000B3020000B3020000B4020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BB020000BB020000BC020000BD020000BD020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D3020000D3020000D4020000D5020000D5020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DB020000DB020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000EE020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FD020000FD020000FE020000FE020000FF020000000300000003000001030000020300000203000003030000040300000403000005030000050300000603000007030000070300000803000009030000090300000A0300000B0300000B0300000C0300000C0300000D0300000E0300000E0300000F030000100300001003000011030000110300001203000013030000130300001403000015030000150300001603000016030000170300001803000018030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F03000020030000200300002103000021030000220300002303000023030000240300002503000025030000260300002603000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003B0300003B0300003C0300003C0300003D0300003E0300003E0300003F0300003F03000040030000400300004103000042030000420300004303000043030000440300004403000045030000460300004603000047030000470300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000630300006303000064030000640300006503000065030000660300006603000067030000670300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000083030000830300008403000084030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000930300009303000094030000940300009503000095030000960300009603000097030000970300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CA030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D5030000D5030000D6030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E0030000E1030000E1030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E7030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000EE030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F3030000F3030000F4030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000F8030000F8030000F9030000F9030000FA030000FA030000FA030000FB030000FB030000FC030000FC030000FD030000FD030000FE030000FE030000FF030000FF030000000000002B0000003C00000048000000520000005A000000620000006900000070000000760000007C00000081000000870000008C0000009000000095000000990000009E000000A2000000A6000000AA000000AE000000B1000000B5000000B8000000BC000000BF000000C3000000C6000000C9000000CC000000CF000000D2000000D5000000D8000000DB000000DE000000E0000000E3000000E6000000E9000000EB000000EE000000F0000000F3000000F5000000F8000000FA000000FD000000FF000000010100000401000006010000080100000B0100000D0100000F010000110100001301000016010000180100001A0100001C0100001E01000020010000220100002401000026010000280100002A0100002C0100002E0100003001000032010000340100003501000037010000390100003B0100003D0100003F0100004001000042010000440100004601000048010000490100004B0100004D0100004F0100005001000052010000540100005501000057010000590100005A0100005C0100005D0100005F0100006101000062010000640100006501000067010000690100006A0100006C0100006D0100006F010000700100007201000073010000750100007601000078010000790100007B0100007C0100007E0100007F010000810100008201000084010000850100008601000088010000890100008B0100008C0100008D0100008F010000900100009201000093010000940100009601000097010000980100009A0100009B0100009C0100009E0100009F010000A0010000A2010000A3010000A4010000A6010000A7010000A8010000A9010000AB010000AC010000AD010000AE010000B0010000B1010000B2010000B3010000B5010000B6010000B7010000B8010000BA010000BB010000BC010000BD010000BF010000C0010000C1010000C2010000C3010000C5010000C6010000C7010000C8010000C9010000CA010000CC010000CD010000CE010000CF010000D0010000D1010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F02000020020000210200002202000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F02000030020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003A0200003B0200003C0200003D0200003E0200003F02000040020000410200004202000043020000430200004402000045020000460200004702000048020000490200004A0200004A0200004B0200004C0200004D0200004E0200004F0200005002000050020000510200005202000053020000540200005502000056020000560200005702000058020000590200005A0200005B0200005C0200005C0200005D0200005E0200005F0200006002000061020000610200006202000063020000640200006502000066020000660200006702000068020000690200006A0200006A0200006B0200006C0200006D0200006E0200006F0200006F0200007002000071020000720200007302000073020000740200007502000076020000770200007702000078020000790200007A0200007B0200007B0200007C0200007D0200007E0200007E0200007F020000800200008102000082020000820200008302000084020000850200008602000086020000870200008802000089020000890200008A0200008B0200008C0200008C0200008D0200008E0200008F02000090020000900200009102000092020000930200009302000094020000950200009602000096020000970200009802000099020000990200009A0200009B0200009C0200009C0200009D0200009E0200009F0200009F020000A0020000A1020000A2020000A2020000A3020000A4020000A4020000A5020000A6020000A7020000A7020000A8020000A9020000AA020000AA020000AB020000AC020000AC020000AD020000AE020000AF020000AF020000B0020000B1020000B2020000B2020000B3020000B4020000B4020000B5020000B6020000B7020000B7020000B8020000B9020000B9020000BA020000BB020000BB020000BC020000BD020000BE020000BE020000BF020000C0020000C0020000C1020000C2020000C2020000C3020000C4020000C5020000C5020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CD020000CE020000CE020000CF020000D0020000D0020000D1020000D2020000D2020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D8020000D8020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DE020000DE020000DF020000E0020000E0020000E1020000E2020000E2020000E3020000E4020000E4020000E5020000E6020000E6020000E7020000E8020000E8020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000ED020000EE020000EF020000EF020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F8020000F9020000FA020000FA020000FB020000FC020000FC020000FD020000FE020000FE020000FF020000FF020000000300000103000001030000020300000303000003030000040300000403000005030000060300000603000007030000080300000803000009030000090300000A0300000B0300000B0300000C0300000D0300000D0300000E0300000E0300000F03000010030000100300001103000011030000120300001303000013030000140300001503000015030000160300001603000017030000180300001803000019030000190300001A0300001B0300001B0300001C0300001C0300001D0300001E0300001E0300001F0300001F030000200300002103000021030000220300002203000023030000240300002403000025030000250300002603000027030000270300002803000028030000290300002A0300002A0300002B0300002B0300002C0300002C0300002D0300002E0300002E0300002F0300002F03000030030000310300003103000032030000320300003303000034030000340300003503000035030000360300003603000037030000380300003803000039030000390300003A0300003A0300003B0300003C0300003C0300003D0300003D0300003E0300003F0300003F0300004003000040030000410300004103000042030000430300004303000044030000440300004503000045030000460300004603000047030000480300004803000049030000490300004A0300004A0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300005003000050030000510300005103000052030000520300005303000053030000540300005503000055030000560300005603000057030000570300005803000058030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F030000600300006003000061030000610300006203000062030000630300006303000064030000640300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F030000700300007003000071030000710300007203000072030000730300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007D0300007D0300007E0300007E0300007F0300007F030000800300008003000081030000810300008203000082030000830300008303000084030000840300008503000085030000860300008603000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F03000090030000900300009103000091030000920300009203000093030000930300009403000094030000950300009503000096030000960300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A6030000A6030000A7030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C7030000C7030000C8030000C8030000C9030000C9030000CA030000CA030000CB030000CB030000CB030000CC030000CC030000CD030000CD030000CE030000CE030000CF030000CF030000D0030000D0030000D1030000D1030000D2030000D2030000D3030000D3030000D4030000D4030000D4030000D5030000D5030000D6030000D6030000D7030000D7030000D8030000D8030000D9030000D9030000DA030000DA030000DB030000DB030000DB030000DC030000DC030000DD030000DD030000DE030000DE030000DF030000DF030000E0030000E0030000E1030000E1030000E2030000E2030000E2030000E3030000E3030000E4030000E4030000E5030000E5030000E6030000E6030000E7030000E7030000E8030000E8030000E8030000E9030000E9030000EA030000EA030000EB030000EB030000EC030000EC030000ED030000ED030000ED030000EE030000EE030000EF030000EF030000F0030000F0030000F1030000F1030000F2030000F2030000F2030000F3030000F3030000F4030000F4030000F5030000F5030000F6030000F6030000F7030000F7030000000000002900000039000000440000004E000000560000005E000000640000006B00000070000000760000007B0000008000000085000000890000008E00000092000000960000009A0000009E000000A2000000A5000000A9000000AC000000B0000000B3000000B6000000B9000000BC000000BF000000C2000000C5000000C8000000CB000000CE000000D0000000D3000000D6000000D8000000DB000000DE000000E0000000E2000000E5000000E7000000EA000000EC000000EE000000F1000000F3000000F5000000F7000000FA000000FC000000FE00000000010000020100000401000006010000080100000A0100000C0100000E01000010010000120100001401000016010000180100001A0100001C0100001E0100002001000021010000230100002501000027010000290100002A0100002C0100002E0100003001000031010000330100003501000036010000380100003A0100003B0100003D0100003F0100004001000042010000430100004501000047010000480100004A0100004B0100004D0100004E010000500100005201000053010000550100005601000058010000590100005A0100005C0100005D0100005F010000600100006201000063010000650100006601000067010000690100006A0100006C0100006D0100006E01000070010000710100007201000074010000750100007701000078010000790100007B0100007C0100007D0100007E01000080010000810100008201000084010000850100008601000088010000890100008A0100008B0100008D0100008E0100008F01000090010000920100009301000094010000950100009601000098010000990100009A0100009B0100009C0100009E0100009F010000A0010000A1010000A2010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FE010000FF01000000020000010200000202000003020000040200000502000006020000070200000802000009020000090200000A0200000B0200000C0200000D0200000E0200000F0200001002000011020000110200001202000013020000140200001502000016020000170200001802000019020000190200001A0200001B0200001C0200001D0200001E0200001F0200001F02000020020000210200002202000023020000240200002502000025020000260200002702000028020000290200002A0200002A0200002B0200002C0200002D0200002E0200002F0200002F0200003002000031020000320200003302000034020000340200003502000036020000370200003802000038020000390200003A0200003B0200003C0200003C0200003D0200003E0200003F020000400200004102000041020000420200004302000044020000440200004502000046020000470200004802000048020000490200004A0200004B0200004C0200004C0200004D0200004E0200004F0200004F020000500200005102000052020000530200005302000054020000550200005602000056020000570200005802000059020000590200005A0200005B0200005C0200005C0200005D0200005E0200005F0200005F020000600200006102000062020000620200006302000064020000650200006502000066020000670200006802000068020000690200006A0200006B0200006B0200006C0200006D0200006E0200006E0200006F02000070020000700200007102000072020000730200007302000074020000750200007502000076020000770200007802000078020000790200007A0200007B0200007B0200007C0200007D0200007D0200007E0200007F0200007F02000080020000810200008202000082020000830200008402000084020000850200008602000086020000870200008802000089020000890200008A0200008B0200008B0200008C0200008D0200008D0200008E0200008F0200008F02000090020000910200009202000092020000930200009402000094020000950200009602000096020000970200009802000098020000990200009A0200009A0200009B0200009C0200009C0200009D0200009E0200009E0200009F020000A0020000A0020000A1020000A2020000A2020000A3020000A4020000A4020000A5020000A6020000A6020000A7020000A8020000A8020000A9020000AA020000AA020000AB020000AB020000AC020000AD020000AD020000AE020000AF020000AF020000B0020000B1020000B1020000B2020000B3020000B3020000B4020000B5020000B5020000B6020000B6020000B7020000B8020000B8020000B9020000BA020000BA020000BB020000BC020000BC020000BD020000BD020000BE020000BF020000BF020000C0020000C1020000C1020000C2020000C2020000C3020000C4020000C4020000C5020000C6020000C6020000C7020000C7020000C8020000C9020000C9020000CA020000CB020000CB020000CC020000CC020000CD020000CE020000CE020000CF020000CF020000D0020000D1020000D1020000D2020000D3020000D3020000D4020000D4020000D5020000D6020000D6020000D7020000D7020000D8020000D9020000D9020000DA020000DA020000DB020000DC020000DC020000DD020000DD020000DE020000DF020000DF020000E0020000E0020000E1020000E2020000E2020000E3020000E3020000E4020000E5020000E5020000E6020000E6020000E7020000E7020000E8020000E9020000E9020000EA020000EA020000EB020000EC020000EC020000ED020000ED020000EE020000EF020000EF020000F0020000F0020000F1020000F1020000F2020000F3020000F3020000F4020000F4020000F5020000F5020000F6020000F7020000F7020000F8020000F8020000F9020000F9020000FA020000FB020000FB020000FC020000FC020000FD020000FD020000FE020000FF020000FF0200000003000000030000010300000103000002030000030300000303000004030000040300000503000005030000060300000703000007030000080300000803000009030000090300000A0300000A0300000B0300000C0300000C0300000D0300000D0300000E0300000E0300000F0300000F0300001003000011030000110300001203000012030000130300001303000014030000140300001503000015030000160300001703000017030000180300001803000019030000190300001A0300001A0300001B0300001B0300001C0300001D0300001D0300001E0300001E0300001F0300001F030000200300002003000021030000210300002203000022030000230300002403000024030000250300002503000026030000260300002703000027030000280300002803000029030000290300002A0300002B0300002B0300002C0300002C0300002D0300002D0300002E0300002E0300002F0300002F030000300300003003000031030000310300003203000032030000330300003303000034030000350300003503000036030000360300003703000037030000380300003803000039030000390300003A0300003A0300003B0300003B0300003C0300003C0300003D0300003D0300003E0300003E0300003F0300003F030000400300004003000041030000410300004203000042030000430300004403000044030000450300004503000046030000460300004703000047030000480300004803000049030000490300004A0300004A0300004B0300004B0300004C0300004C0300004D0300004D0300004E0300004E0300004F0300004F03000050030000500300005103000051030000520300005203000053030000530300005403000054030000550300005503000056030000560300005703000057030000580300005803000059030000590300005A0300005A0300005B0300005B0300005C0300005C0300005D0300005D0300005E0300005E0300005F0300005F0300006003000060030000610300006103000062030000620300006303000063030000640300006403000065030000650300006503000066030000660300006703000067030000680300006803000069030000690300006A0300006A0300006B0300006B0300006C0300006C0300006D0300006D0300006E0300006E0300006F0300006F0300007003000070030000710300007103000072030000720300007303000073030000740300007403000074030000750300007503000076030000760300007703000077030000780300007803000079030000790300007A0300007A0300007B0300007B0300007C0300007C0300007D0300007D0300007D0300007E0300007E0300007F0300007F0300008003000080030000810300008103000082030000820300008303000083030000840300008403000085030000850300008503000086030000860300008703000087030000880300008803000089030000890300008A0300008A0300008B0300008B0300008C0300008C0300008C0300008D0300008D0300008E0300008E0300008F0300008F030000900300009003000091030000910300009203000092030000920300009303000093030000940300009403000095030000950300009603000096030000970300009703000097030000980300009803000099030000990300009A0300009A0300009B0300009B0300009C0300009C0300009C0300009D0300009D0300009E0300009E0300009F0300009F030000A0030000A0030000A1030000A1030000A1030000A2030000A2030000A3030000A3030000A4030000A4030000A5030000A5030000A5030000A6030000A6030000A7030000A7030000A8030000A8030000A9030000A9030000AA030000AA030000AA030000AB030000AB030000AC030000AC030000AD030000AD030000AE030000AE030000AE030000AF030000AF030000B0030000B0030000B1030000B1030000B2030000B2030000B2030000B3030000B3030000B4030000B4030000B5030000B5030000B5030000B6030000B6030000B7030000B7030000B8030000B8030000B9030000B9030000B9030000BA030000BA030000BB030000BB030000BC030000BC030000BC030000BD030000BD030000BE030000BE030000BF030000BF030000BF030000C0030000C0030000C1030000C1030000C2030000C2030000C3030000C3030000C3030000C4030000C4030000C5030000C5030000C6030000C6030000C6030000C7030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + + ECFFFFFF0000803F936F163FDA1AB13DEDFFFFFF0000803F87501D3FB9530A3EEEFFFFFF0000803FAAEE213FD1912C3EEFFFFFFF0000803F8CBC283F8C82603EF0FFFFFF0000803F473C2D3FD1E9813EF1FFFFFF0000803F5C02343FFE0E9D3EF2FFFFFF0000803F6E6E383FE04DAF3EF3FFFFFF0000803F31093F3F3C16CB3EF4FFFFFF0000803F3960433F73BDDD3EF5FFFFFF0000803F91D5493F6519FA3EF6FFFFFF0000803F840E4E3F957E063FF7FFFFFF0000803F1B62543FCEDF143FF8FFFFFF0000803F828C583F90871E3FF9FFFFFF0000803FF2B65E3F1A182D3FFAFFFFFF0000803FE7C4623FABCE363FFBFFFFFF0000803FD7BE683F8E5A453FFCFFFFFF0000803F41B66C3FD6194F3FFDFFFFFF0000803F1E8A723F8AAC5D3FFEFFFFFF0000803F516B763F6475673FFFFFFFFF0000803F8A227C3FB41E763F000000000000803F0000803F0000803F01000000836B723F6189773F0000803F02000000BF0C6A3F484E723F0000803F03000000CD945E3F191E6B3F0000803F04000000B988573FEFAB663F0000803F0500000084D44D3F5E81603F0000803F0600000045D9473FEBAA5C3F0000803F07000000CA883F3F2651573F0000803F080000005C593A3FADFB533F0000803F09000000802D333F05514F3F0000803F0A00000083C02E3FC3624C3F0000803F0B0000005986283FE04C483F0000803F0C0000008C9D243F18B3453F0000803F0D000000431C1F3F8909423F0000803F0E000000ABB21B3FE4C03F3F0000803F0F0000003DD4163FC07A3C3F0000803F1000000009C0133FE4683A3F0000803F110000008A740F3FF27B373F0000803F1200000039B80C3FCB9D353F0000803F130000005DDE083FBAF9323F0000803F140000009467063F3448313F0000803F + + diff --git a/proprietary/vendor/etc/qdcm_calib_data_nt36672e_60_Hz_fhd_plus_video_mode_panel_without_DSC.xml b/proprietary/vendor/etc/qdcm_calib_data_nt36672e_60_Hz_fhd_plus_video_mode_panel_without_DSC.xml new file mode 100644 index 0000000..ba9b9e6 --- /dev/null +++ b/proprietary/vendor/etc/qdcm_calib_data_nt36672e_60_Hz_fhd_plus_video_mode_panel_without_DSC.xml @@ -0,0 +1,44 @@ + + + + + + 00000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 00000000000100000600000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 010000000004000006000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + + ECFFFFFF0000803F936F163FDA1AB13DEDFFFFFF0000803F87501D3FB9530A3EEEFFFFFF0000803FAAEE213FD1912C3EEFFFFFFF0000803F8CBC283F8C82603EF0FFFFFF0000803F473C2D3FD1E9813EF1FFFFFF0000803F5C02343FFE0E9D3EF2FFFFFF0000803F6E6E383FE04DAF3EF3FFFFFF0000803F31093F3F3C16CB3EF4FFFFFF0000803F3960433F73BDDD3EF5FFFFFF0000803F91D5493F6519FA3EF6FFFFFF0000803F840E4E3F957E063FF7FFFFFF0000803F1B62543FCEDF143FF8FFFFFF0000803F828C583F90871E3FF9FFFFFF0000803FF2B65E3F1A182D3FFAFFFFFF0000803FE7C4623FABCE363FFBFFFFFF0000803FD7BE683F8E5A453FFCFFFFFF0000803F41B66C3FD6194F3FFDFFFFFF0000803F1E8A723F8AAC5D3FFEFFFFFF0000803F516B763F6475673FFFFFFFFF0000803F8A227C3FB41E763F000000000000803F0000803F0000803F01000000836B723F6189773F0000803F02000000BF0C6A3F484E723F0000803F03000000CD945E3F191E6B3F0000803F04000000B988573FEFAB663F0000803F0500000084D44D3F5E81603F0000803F0600000045D9473FEBAA5C3F0000803F07000000CA883F3F2651573F0000803F080000005C593A3FADFB533F0000803F09000000802D333F05514F3F0000803F0A00000083C02E3FC3624C3F0000803F0B0000005986283FE04C483F0000803F0C0000008C9D243F18B3453F0000803F0D000000431C1F3F8909423F0000803F0E000000ABB21B3FE4C03F3F0000803F0F0000003DD4163FC07A3C3F0000803F1000000009C0133FE4683A3F0000803F110000008A740F3FF27B373F0000803F1200000039B80C3FCB9D353F0000803F130000005DDE083FBAF9323F0000803F140000009467063F3448313F0000803F + + diff --git a/proprietary/vendor/etc/qdcm_calib_data_nt36672e_fhd_plus_120Hz_Video_panel.xml b/proprietary/vendor/etc/qdcm_calib_data_nt36672e_fhd_plus_120Hz_Video_panel.xml new file mode 100644 index 0000000..ba9b9e6 --- /dev/null +++ b/proprietary/vendor/etc/qdcm_calib_data_nt36672e_fhd_plus_120Hz_Video_panel.xml @@ -0,0 +1,44 @@ + + + + + + 00000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 00000000000100000600000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 010000000004000006000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + + ECFFFFFF0000803F936F163FDA1AB13DEDFFFFFF0000803F87501D3FB9530A3EEEFFFFFF0000803FAAEE213FD1912C3EEFFFFFFF0000803F8CBC283F8C82603EF0FFFFFF0000803F473C2D3FD1E9813EF1FFFFFF0000803F5C02343FFE0E9D3EF2FFFFFF0000803F6E6E383FE04DAF3EF3FFFFFF0000803F31093F3F3C16CB3EF4FFFFFF0000803F3960433F73BDDD3EF5FFFFFF0000803F91D5493F6519FA3EF6FFFFFF0000803F840E4E3F957E063FF7FFFFFF0000803F1B62543FCEDF143FF8FFFFFF0000803F828C583F90871E3FF9FFFFFF0000803FF2B65E3F1A182D3FFAFFFFFF0000803FE7C4623FABCE363FFBFFFFFF0000803FD7BE683F8E5A453FFCFFFFFF0000803F41B66C3FD6194F3FFDFFFFFF0000803F1E8A723F8AAC5D3FFEFFFFFF0000803F516B763F6475673FFFFFFFFF0000803F8A227C3FB41E763F000000000000803F0000803F0000803F01000000836B723F6189773F0000803F02000000BF0C6A3F484E723F0000803F03000000CD945E3F191E6B3F0000803F04000000B988573FEFAB663F0000803F0500000084D44D3F5E81603F0000803F0600000045D9473FEBAA5C3F0000803F07000000CA883F3F2651573F0000803F080000005C593A3FADFB533F0000803F09000000802D333F05514F3F0000803F0A00000083C02E3FC3624C3F0000803F0B0000005986283FE04C483F0000803F0C0000008C9D243F18B3453F0000803F0D000000431C1F3F8909423F0000803F0E000000ABB21B3FE4C03F3F0000803F0F0000003DD4163FC07A3C3F0000803F1000000009C0133FE4683A3F0000803F110000008A740F3FF27B373F0000803F1200000039B80C3FCB9D353F0000803F130000005DDE083FBAF9323F0000803F140000009467063F3448313F0000803F + + diff --git a/proprietary/vendor/etc/qdcm_calib_data_nt36672e_fhd_plus_144Hz_video_panel.xml b/proprietary/vendor/etc/qdcm_calib_data_nt36672e_fhd_plus_144Hz_video_panel.xml new file mode 100644 index 0000000..ba9b9e6 --- /dev/null +++ b/proprietary/vendor/etc/qdcm_calib_data_nt36672e_fhd_plus_144Hz_video_panel.xml @@ -0,0 +1,44 @@ + + + + + + 00000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 00000000000100000600000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000001010000110100002101000031010000410100005101000061010000710100008101000091010000A1010000B1010000C1010000D1010000E1010000F101000002020000120200002202000032020000420200005202000062020000720200008202000092020000A2020000B2020000C2020000D2020000E2020000F202000003030000130300002303000033030000430300005303000063030000730300008303000093030000A3030000B3030000C3030000D3030000E3030000F303000004040000140400002404000034040000440400005404000064040000740400008404000094040000A4040000B4040000C4040000D4040000E4040000F404000005050000150500002505000035050000450500005505000065050000750500008505000095050000A5050000B5050000C5050000D5050000E5050000F505000006060000160600002606000036060000460600005606000066060000760600008606000096060000A6060000B6060000C6060000D6060000E6060000F606000007070000170700002707000037070000470700005707000067070000770700008707000097070000A7070000B7070000C7070000D7070000E7070000F707000008080000180800002808000038080000480800005808000068080000780800008808000098080000A8080000B8080000C8080000D8080000E8080000F808000009090000190900002909000039090000490900005909000069090000790900008909000099090000A9090000B9090000C9090000D9090000E9090000F90900000A0A00001A0A00002A0A00003A0A00004A0A00005A0A00006A0A00007A0A00008A0A00009A0A0000AA0A0000BA0A0000CA0A0000DA0A0000EA0A0000FA0A00000B0B00001B0B00002B0B00003B0B00004B0B00005B0B00006B0B00007B0B00008B0B00009B0B0000AB0B0000BB0B0000CB0B0000DB0B0000EB0B0000FB0B00000C0C00001C0C00002C0C00003C0C00004C0C00005C0C00006C0C00007C0C00008C0C00009C0C0000AC0C0000BC0C0000CC0C0000DC0C0000EC0C0000FC0C00000D0D00001D0D00002D0D00003D0D00004D0D00005D0D00006D0D00007D0D00008D0D00009D0D0000AD0D0000BD0D0000CD0D0000DD0D0000ED0D0000FD0D00000E0E00001E0E00002E0E00003E0E00004E0E00005E0E00006E0E00007E0E00008E0E00009E0E0000AE0E0000BE0E0000CE0E0000DE0E0000EE0E0000FE0E00000F0F00001F0F00002F0F00003F0F00004F0F00005F0F00006F0F00007F0F00008F0F00009F0F0000AF0F0000BF0F0000CF0F0000DF0F0000EF0F0000FF0F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 010000000004000006000000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000000000000100000002000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F000000100000001100000012000000130000001400000015000000160000001700000018000000190000001A0000001B0000001C0000001D0000001E0000001F000000200000002100000022000000230000002400000025000000260000002700000028000000290000002A0000002B0000002C0000002D0000002E0000002F000000300000003100000032000000330000003400000035000000360000003700000038000000390000003A0000003B0000003C0000003D0000003E0000003F000000400000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058000000590000005A0000005B0000005C0000005D0000005E0000005F000000600000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078000000790000007A0000007B0000007C0000007D0000007E0000007F000000800000008100000082000000830000008400000085000000860000008700000088000000890000008A0000008B0000008C0000008D0000008E0000008F000000900000009100000092000000930000009400000095000000960000009700000098000000990000009A0000009B0000009C0000009D0000009E0000009F000000A0000000A1000000A2000000A3000000A4000000A5000000A6000000A7000000A8000000A9000000AA000000AB000000AC000000AD000000AE000000AF000000B0000000B1000000B2000000B3000000B4000000B5000000B6000000B7000000B8000000B9000000BA000000BB000000BC000000BD000000BE000000BF000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4000000D5000000D6000000D7000000D8000000D9000000DA000000DB000000DC000000DD000000DE000000DF000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5000000F6000000F7000000F8000000F9000000FA000000FB000000FC000000FD000000FE000000FF000000000100000101000002010000030100000401000005010000060100000701000008010000090100000A0100000B0100000C0100000D0100000E0100000F010000100100001101000012010000130100001401000015010000160100001701000018010000190100001A0100001B0100001C0100001D0100001E0100001F010000200100002101000022010000230100002401000025010000260100002701000028010000290100002A0100002B0100002C0100002D0100002E0100002F010000300100003101000032010000330100003401000035010000360100003701000038010000390100003A0100003B0100003C0100003D0100003E0100003F010000400100004101000042010000430100004401000045010000460100004701000048010000490100004A0100004B0100004C0100004D0100004E0100004F010000500100005101000052010000530100005401000055010000560100005701000058010000590100005A0100005B0100005C0100005D0100005E0100005F010000600100006101000062010000630100006401000065010000660100006701000068010000690100006A0100006B0100006C0100006D0100006E0100006F010000700100007101000072010000730100007401000075010000760100007701000078010000790100007A0100007B0100007C0100007D0100007E0100007F010000800100008101000082010000830100008401000085010000860100008701000088010000890100008A0100008B0100008C0100008D0100008E0100008F010000900100009101000092010000930100009401000095010000960100009701000098010000990100009A0100009B0100009C0100009D0100009E0100009F010000A0010000A1010000A2010000A3010000A4010000A5010000A6010000A7010000A8010000A9010000AA010000AB010000AC010000AD010000AE010000AF010000B0010000B1010000B2010000B3010000B4010000B5010000B6010000B7010000B8010000B9010000BA010000BB010000BC010000BD010000BE010000BF010000C0010000C1010000C2010000C3010000C4010000C5010000C6010000C7010000C8010000C9010000CA010000CB010000CC010000CD010000CE010000CF010000D0010000D1010000D2010000D3010000D4010000D5010000D6010000D7010000D8010000D9010000DA010000DB010000DC010000DD010000DE010000DF010000E0010000E1010000E2010000E3010000E4010000E5010000E6010000E7010000E8010000E9010000EA010000EB010000EC010000ED010000EE010000EF010000F0010000F1010000F2010000F3010000F4010000F5010000F6010000F7010000F8010000F9010000FA010000FB010000FC010000FD010000FE010000FF010000000200000102000002020000030200000402000005020000060200000702000008020000090200000A0200000B0200000C0200000D0200000E0200000F020000100200001102000012020000130200001402000015020000160200001702000018020000190200001A0200001B0200001C0200001D0200001E0200001F020000200200002102000022020000230200002402000025020000260200002702000028020000290200002A0200002B0200002C0200002D0200002E0200002F020000300200003102000032020000330200003402000035020000360200003702000038020000390200003A0200003B0200003C0200003D0200003E0200003F020000400200004102000042020000430200004402000045020000460200004702000048020000490200004A0200004B0200004C0200004D0200004E0200004F020000500200005102000052020000530200005402000055020000560200005702000058020000590200005A0200005B0200005C0200005D0200005E0200005F020000600200006102000062020000630200006402000065020000660200006702000068020000690200006A0200006B0200006C0200006D0200006E0200006F020000700200007102000072020000730200007402000075020000760200007702000078020000790200007A0200007B0200007C0200007D0200007E0200007F020000800200008102000082020000830200008402000085020000860200008702000088020000890200008A0200008B0200008C0200008D0200008E0200008F020000900200009102000092020000930200009402000095020000960200009702000098020000990200009A0200009B0200009C0200009D0200009E0200009F020000A0020000A1020000A2020000A3020000A4020000A5020000A6020000A7020000A8020000A9020000AA020000AB020000AC020000AD020000AE020000AF020000B0020000B1020000B2020000B3020000B4020000B5020000B6020000B7020000B8020000B9020000BA020000BB020000BC020000BD020000BE020000BF020000C0020000C1020000C2020000C3020000C4020000C5020000C6020000C7020000C8020000C9020000CA020000CB020000CC020000CD020000CE020000CF020000D0020000D1020000D2020000D3020000D4020000D5020000D6020000D7020000D8020000D9020000DA020000DB020000DC020000DD020000DE020000DF020000E0020000E1020000E2020000E3020000E4020000E5020000E6020000E7020000E8020000E9020000EA020000EB020000EC020000ED020000EE020000EF020000F0020000F1020000F2020000F3020000F4020000F5020000F6020000F7020000F8020000F9020000FA020000FB020000FC020000FD020000FE020000FF020000000300000103000002030000030300000403000005030000060300000703000008030000090300000A0300000B0300000C0300000D0300000E0300000F030000100300001103000012030000130300001403000015030000160300001703000018030000190300001A0300001B0300001C0300001D0300001E0300001F030000200300002103000022030000230300002403000025030000260300002703000028030000290300002A0300002B0300002C0300002D0300002E0300002F030000300300003103000032030000330300003403000035030000360300003703000038030000390300003A0300003B0300003C0300003D0300003E0300003F030000400300004103000042030000430300004403000045030000460300004703000048030000490300004A0300004B0300004C0300004D0300004E0300004F030000500300005103000052030000530300005403000055030000560300005703000058030000590300005A0300005B0300005C0300005D0300005E0300005F030000600300006103000062030000630300006403000065030000660300006703000068030000690300006A0300006B0300006C0300006D0300006E0300006F030000700300007103000072030000730300007403000075030000760300007703000078030000790300007A0300007B0300007C0300007D0300007E0300007F030000800300008103000082030000830300008403000085030000860300008703000088030000890300008A0300008B0300008C0300008D0300008E0300008F030000900300009103000092030000930300009403000095030000960300009703000098030000990300009A0300009B0300009C0300009D0300009E0300009F030000A0030000A1030000A2030000A3030000A4030000A5030000A6030000A7030000A8030000A9030000AA030000AB030000AC030000AD030000AE030000AF030000B0030000B1030000B2030000B3030000B4030000B5030000B6030000B7030000B8030000B9030000BA030000BB030000BC030000BD030000BE030000BF030000C0030000C1030000C2030000C3030000C4030000C5030000C6030000C7030000C8030000C9030000CA030000CB030000CC030000CD030000CE030000CF030000D0030000D1030000D2030000D3030000D4030000D5030000D6030000D7030000D8030000D9030000DA030000DB030000DC030000DD030000DE030000DF030000E0030000E1030000E2030000E3030000E4030000E5030000E6030000E7030000E8030000E9030000EA030000EB030000EC030000ED030000EE030000EF030000F0030000F1030000F2030000F3030000F4030000F5030000F6030000F7030000F8030000F9030000FA030000FB030000FC030000FD030000FE030000FF030000 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000021000000210000000300000003000000000000002D00000000000000010000000000C842000000000000803F0000C842000000000000803F0100000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000FF000000C3000000010000000000C842000000000000803F0000C842000000000000803F0200000000000000000000000000000000000000000000000F0000002100000021000000030000000300000000000000870000004B000000010000000000C842000000000000803F0000C842000000000000803F0000000000000000640000000A0000000100000064000000000000000100000021000000210000000300000003000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 0000000008000000080000000800000000000000100000000F000000070000000D00000005000000030000000B00000001000000090000000C000000040000000E000000060000000000000008000000020000000A000000 + + + + + ECFFFFFF0000803F936F163FDA1AB13DEDFFFFFF0000803F87501D3FB9530A3EEEFFFFFF0000803FAAEE213FD1912C3EEFFFFFFF0000803F8CBC283F8C82603EF0FFFFFF0000803F473C2D3FD1E9813EF1FFFFFF0000803F5C02343FFE0E9D3EF2FFFFFF0000803F6E6E383FE04DAF3EF3FFFFFF0000803F31093F3F3C16CB3EF4FFFFFF0000803F3960433F73BDDD3EF5FFFFFF0000803F91D5493F6519FA3EF6FFFFFF0000803F840E4E3F957E063FF7FFFFFF0000803F1B62543FCEDF143FF8FFFFFF0000803F828C583F90871E3FF9FFFFFF0000803FF2B65E3F1A182D3FFAFFFFFF0000803FE7C4623FABCE363FFBFFFFFF0000803FD7BE683F8E5A453FFCFFFFFF0000803F41B66C3FD6194F3FFDFFFFFF0000803F1E8A723F8AAC5D3FFEFFFFFF0000803F516B763F6475673FFFFFFFFF0000803F8A227C3FB41E763F000000000000803F0000803F0000803F01000000836B723F6189773F0000803F02000000BF0C6A3F484E723F0000803F03000000CD945E3F191E6B3F0000803F04000000B988573FEFAB663F0000803F0500000084D44D3F5E81603F0000803F0600000045D9473FEBAA5C3F0000803F07000000CA883F3F2651573F0000803F080000005C593A3FADFB533F0000803F09000000802D333F05514F3F0000803F0A00000083C02E3FC3624C3F0000803F0B0000005986283FE04C483F0000803F0C0000008C9D243F18B3453F0000803F0D000000431C1F3F8909423F0000803F0E000000ABB21B3FE4C03F3F0000803F0F0000003DD4163FC07A3C3F0000803F1000000009C0133FE4683A3F0000803F110000008A740F3FF27B373F0000803F1200000039B80C3FCB9D353F0000803F130000005DDE083FBAF9323F0000803F140000009467063F3448313F0000803F + + diff --git a/proprietary/vendor/etc/sensors/config/ak991x_0.json b/proprietary/vendor/etc/sensors/config/ak991x_0.json new file mode 100644 index 0000000..37dbe0b --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/ak991x_0.json @@ -0,0 +1,219 @@ +{ + "config":{ + "hw_platform": ["IDP","MTP"], + "soc_id": ["444","454", "507"] + }, + "ak0991x_0":{ + "owner": "sns_ak0991x", + ".mag":{ + "owner": "sns_ak0991x", + ".config":{ + "owner": "sns_ak0991x", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".config_2":{ + "owner": "sns_ak0991x", + "use_fifo":{ "type": "int", "ver": "0", + "data": "0" + }, + "nsf":{ "type": "int", "ver": "0", + "data": "3" + }, + "sdr":{ "type": "int", "ver": "0", + "data": "1" + } + } + } + }, + "ak0991x_0_platform":{ + "owner": "sns_ak0991x", + ".config":{ + "owner": "sns_ak0991x", + "bus_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "2" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "14" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "1" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".orient":{ + "owner": "sns_ak0991x", + "x":{ "type": "str", "ver": "0", + "data": "-x" + }, + "y":{ "type": "str", "ver": "0", + "data": "+y" + }, + "z":{ "type": "str", "ver": "0", + "data": "-z" + } + }, + ".mag":{ + "owner": "sns_ak0991x", + ".fac_cal":{ + "owner": "sns_ak0991x", + ".corr_mat":{ + "owner": "sns_ak0991x", + "0_0":{ "type": "flt", "ver": "0", + "data": "0.95941162109375" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0787353515625" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "-0.0023193359375" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0745849609375" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "0.9742431640625" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "-0.01483154296875" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.037109375" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "-0.00537109375" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.04461669921875" + } + }, + ".bias":{ + "owner": "sns_ak0991x", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + }, + ".fac_cal_2":{ + "owner": "sns_ak0991x", + ".corr_mat":{ + "owner": "sns_ak0991x", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "sns_ak0991x", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".placement":{ + "owner": "sns_ak0991x", + "0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "3":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "4":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "5":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "6":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "7":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "8":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "9":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "10":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "11":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/holi_default_sensors.json b/proprietary/vendor/etc/sensors/config/holi_default_sensors.json new file mode 100644 index 0000000..f5c71fc --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/holi_default_sensors.json @@ -0,0 +1,186 @@ +{ + "config":{ + "hw_platform": ["QRD","MTP", "RCM", "Surf"], + "soc_id": ["454", "507"] + }, + + "default_sensors": { + "owner": "suid", + ".accel": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".gyro": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".mag": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".motion_detect": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".sensor_temperature": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + }, + ".attr_1": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "0" }, + "val": { "type": "str", "ver": "0", "data": "lsm6dst" } + } + }, + + ".proximity": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "16" }, + "val": { "type": "int", "ver": "0", "data": "1" } + } + }, + + ".ambient_light": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "16" }, + "val": { "type": "int", "ver": "0", "data": "1" } + } + }, + + ".sar": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "16" }, + "val": { "type": "int", "ver": "0", "data": "1" } + } + }, + + ".mot_accel_cal": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".gyro_cal": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".mag_cal": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".amd": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".tilt": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".gyro_rot_matrix": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".gravity": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".game_rv": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".geomag_rv": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".fmv": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + }, + + ".rotv": { + "owner": "suid", + ".attr_0": { + "owner": "suid", + "id": { "type": "int", "ver": "0", "data": "19" }, + "val": { "type": "int", "ver": "0", "data": "0" } + } + } + } +} + diff --git a/proprietary/vendor/etc/sensors/config/holi_lsm6dso_0.json b/proprietary/vendor/etc/sensors/config/holi_lsm6dso_0.json new file mode 100644 index 0000000..33f29e4 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/holi_lsm6dso_0.json @@ -0,0 +1,507 @@ +{ + "config":{ + "hw_platform": ["MTP", "Surf", "RCM", "QRD", "HDK"], + "soc_id": ["356", "507"] + }, + "lsm6dso_0":{ + "owner": "lsm6dso", + ".accel":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "3" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".gyro":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "4" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".md":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".temp":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "2" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".ois_accel":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "3" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".ois_gyro":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "3" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "lsm6dso_0_platform":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "bus_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "1" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "106" + }, + "i3c_address":{ "type": "int", "ver": "0", + "data": "10" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "12500" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "dri_irq_num":{ "type": "int", "ver": "0", + "data": "95" + }, + "irq_pull_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_is_chip_pin":{ "type": "int", "ver": "0", + "data": "1" + }, + "irq_drive_strength":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_trigger_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "1" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "min_odr":{ "type": "int", "ver": "0", + "data": "20" + }, + "max_odr":{ "type": "int", "ver": "0", + "data": "500" + } + }, + ".orient":{ + "owner": "lsm6dso", + "x":{ "type": "str", "ver": "0", + "data": "-x" + }, + "y":{ "type": "str", "ver": "0", + "data": "+y" + }, + "z":{ "type": "str", "ver": "0", + "data": "+z" + } + }, + ".gyro":{ + "owner": "lsm6dso", + ".fac_cal":{ + "owner": "lsm6dso", + ".corr_mat":{ + "owner": "lsm6dso", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".accel":{ + "owner": "lsm6dso", + ".fac_cal":{ + "owner": "lsm6dso", + ".corr_mat":{ + "owner": "lsm6dso", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".ois_gyro":{ + "owner": "lsm6dso", + ".fac_cal":{ + "owner": "lsm6dso", + ".corr_mat":{ + "owner": "lsm6dso", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + }, + ".odr_val": + { + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "600.0" + } + } + } + }, + ".ois_accel":{ + "owner": "lsm6dso", + ".fac_cal":{ + "owner": "lsm6dso", + ".corr_mat":{ + "owner": "lsm6dso", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + }, + ".odr_val": + { + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "700.0" + } + } + } + }, + ".temp":{ + "owner": "lsm6dso", + ".fac_cal": + { + "owner": "lsm6dso", + ".scale":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "lsm6dso", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".md":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "thresh":{ "type": "flt", "ver": "0", + "data": "1.22" + }, + "disable":{ "type": "int", "ver": "0", + "data": "0" + }, + "win":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + }, + ".dtp":{ + "owner": "lsm6dso", + ".config":{ + "owner": "lsm6dso", + "thresh_x":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "thresh_y":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "thresh_z":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "priority":{ "type": "flt", "ver": "0", + "data": "0" + }, + "dur":{ "type": "flt", "ver": "0", + "data": "7" + }, + "quiet":{ "type": "flt", "ver": "0", + "data": "3" + }, + "shock":{ "type": "flt", "ver": "0", + "data": "3" + }, + "dur_sw":{ "type": "flt", "ver": "0", + "data": "7" + }, + "quiet_sw":{ "type": "flt", "ver": "0", + "data": "11" + } + } + }, + ".placement":{ + "owner": "lsm6dso", + "0":{ "type": "flt", "ver": "0", + "data": "0.1" + }, + "1":{ "type": "flt", "ver": "0", + "data": "0.1" + }, + "2":{ "type": "flt", "ver": "0", + "data": "0.1" + }, + "3":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "4":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "5":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "6":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "7":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "8":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "9":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "10":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "11":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/holi_power_0.json b/proprietary/vendor/etc/sensors/config/holi_power_0.json new file mode 100644 index 0000000..60a7560 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/holi_power_0.json @@ -0,0 +1,16 @@ +{ + "config":{ + "hw_platform": ["MTP", "RCM", "Surf"], + "soc_id": [ "454", "507"] + }, + "power":{ + "owner": "power_manager", + ".island":{ + "owner": "power_manager", + "enable_island":{ "type": "int", "ver": "0", + "data": "1" + } + } + } +} + diff --git a/proprietary/vendor/etc/sensors/config/icm4x6xx.json b/proprietary/vendor/etc/sensors/config/icm4x6xx.json new file mode 100644 index 0000000..57bcb79 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/icm4x6xx.json @@ -0,0 +1,334 @@ +{ + "config":{ + "hw_platform": ["MTP", "QRD","Surf"], + "soc_id": ["434", "435", "459", "454", "507"] + }, + "icm4x6xx_0":{ + "owner": "icm4x6xx", + ".accel":{ + "owner": "icm4x6xx", + ".config":{ + "owner": "icm4x6xx", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "4" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".gyro":{ + "owner": "icm4x6xx", + ".config":{ + "owner": "icm4x6xx", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "7" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".md":{ + "owner": "icm4x6xx", + ".config":{ + "owner": "icm4x6xx", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".freefall":{ + "owner": "icm4x6xx", + ".config":{ + "owner": "icm4x6xx", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".temp":{ + "owner": "icm4x6xx", + ".config":{ + "owner": "icm4x6xx", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "2" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "icm4x6xx_0_platform":{ + "owner": "icm4x6xx", + ".config":{ + "owner": "icm4x6xx", + "bus_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "1" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "0x68" + }, + "i3c_address":{ "type": "int", "ver": "0", + "data": "10" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "12500" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "dri_irq_num":{ "type": "int", "ver": "0", + "data": "95" + }, + "irq_pull_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_is_chip_pin":{ "type": "int", "ver": "0", + "data": "1" + }, + "irq_drive_strength":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_trigger_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "1" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".orient":{ + "owner": "icm4x6xx", + "x":{ "type": "str", "ver": "0", + "data": "-x" + }, + "y":{ "type": "str", "ver": "0", + "data": "+y" + }, + "z":{ "type": "str", "ver": "0", + "data": "-z" + } + }, + ".gyro":{ + "owner": "icm4x6xx", + ".fac_cal":{ + "owner": "icm4x6xx", + ".corr_mat":{ + "owner": "icm4x6xx", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "icm4x6xx", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".accel":{ + "owner": "icm4x6xx", + ".fac_cal":{ + "owner": "icm4x6xx", + ".corr_mat":{ + "owner": "icm4x6xx", + "0_0":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "1.0" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "icm4x6xx", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".temp":{ + "owner": "icm4x6xx", + ".fac_cal": + { + "owner": "icm4x6xx", + ".scale":{ + "owner": "icm4x6xx", + "x":{ "type": "flt", "ver": "0", + "data": "1.0" + } + }, + ".bias":{ + "owner": "icm4x6xx", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".md":{ + "owner": "icm4x6xx", + ".config":{ + "owner": "icm4x6xx", + "thresh":{ "type": "flt", "ver": "0", + "data": "0.6132" + }, + "disable":{ "type": "int", "ver": "0", + "data": "0" + }, + "win":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + }, + ".placement":{ + "owner": "icm4x6xx", + "0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "3":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "4":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "5":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "6":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "7":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "8":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "9":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "10":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "11":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/mmc56x3x_0.json b/proprietary/vendor/etc/sensors/config/mmc56x3x_0.json new file mode 100644 index 0000000..81b4e5a --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/mmc56x3x_0.json @@ -0,0 +1,165 @@ +{ + "config":{ + "hw_platform": ["IDP","MTP"], + "soc_id": ["444","454", "507"] + }, + "mmc56x3x_0":{ + "owner": "sns_mmc56x3x", + ".mag":{ + "owner": "sns_mmc56x3x", + ".config":{ + "owner": "sns_mmc56x3x", + "is_dri":{ "type": "int", "ver": "0", + "data": "0" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "mmc56x3x_0_platform":{ + "owner": "sns_mmc56x3x", + ".config":{ + "owner": "sns_mmc56x3x", + "bus_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "2" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "0x30" + }, + "i3c_address":{ "type": "int", "ver": "0", + "data": "20" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "1" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".orient":{ + "owner": "sns_mmc56x3x", + "x":{ "type": "str", "ver": "0", + "data": "-x" + }, + "y":{ "type": "str", "ver": "0", + "data": "+y" + }, + "z":{ "type": "str", "ver": "0", + "data": "-z" + } + }, + ".mag":{ + "owner": "sns_mmc56x3x", + ".fac_cal":{ + "owner": "sns_mmc56x3x", + ".corr_mat":{ + "owner": "sns_mmc56x3x", + "0_0":{ "type": "flt", "ver": "0", + "data": "0.994472" + }, + "0_1":{ "type": "flt", "ver": "0", + "data": "0.103335" + }, + "0_2":{ "type": "flt", "ver": "0", + "data": "-0.0151685" + }, + "1_0":{ "type": "flt", "ver": "0", + "data": "0.0922025" + }, + "1_1":{ "type": "flt", "ver": "0", + "data": "0.9946685" + }, + "1_2":{ "type": "flt", "ver": "0", + "data": "-0.0274975" + }, + "2_0":{ "type": "flt", "ver": "0", + "data": "0.041299" + }, + "2_1":{ "type": "flt", "ver": "0", + "data": "0.021829" + }, + "2_2":{ "type": "flt", "ver": "0", + "data": "1.1053055" + } + }, + ".bias":{ + "owner": "sns_mmc56x3x", + "x":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "y":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "z":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } + }, + ".placement":{ + "owner": "sns_mmc56x3x", + "0":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "1":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "2":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "3":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "4":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "5":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "6":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "7":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "8":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "9":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "10":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "11":{ "type": "flt", "ver": "0", + "data": "0.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/mot_camgest.json b/proprietary/vendor/etc/sensors/config/mot_camgest.json new file mode 100644 index 0000000..ea6ec4e --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/mot_camgest.json @@ -0,0 +1,19 @@ +{ + "config": + { + "hw_platform": ["HDK", "MTP", "Dragon", "Surf", "IDP"], + "soc_id": ["361", "339", "365", "454", "507"] + }, + "mot_camgest":{ + "owner": "mot_camgest", + ".params":{ + "owner": "mot_camgest", + "y_orient_down_thres":{ "type": "flt", "ver": "0", + "data": "-4.25" + }, + "y_orient_up_thres":{ "type": "flt", "ver": "0", + "data": "4.5" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_amd.json b/proprietary/vendor/etc/sensors/config/sns_amd.json new file mode 100644 index 0000000..897c870 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_amd.json @@ -0,0 +1,16 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "305", "321", "336", "339", "340", "347", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", + "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "455", "456", "454", "507"] + }, + "sns_amd": { + "owner": "sns_amd", + "param1": {"ver": "0","type": "flt","data": "0.06" + }, + "param2": {"ver": "0","type": "flt","data": "0.5" + }, + "sample_rate": {"ver": "0","type": "flt", "data": "10.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_amd_sw_disabled.json b/proprietary/vendor/etc/sensors/config/sns_amd_sw_disabled.json new file mode 100644 index 0000000..1589638 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_amd_sw_disabled.json @@ -0,0 +1,11 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "QRD", "HDK"], + "soc_id": ["339", "340", "361", "415", "439", "456"] + }, + "sns_amd": { + "owner": "sns_amd", + "enabled": {"ver": "0","type": "int", "data": "0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_amd_sw_enabled.json b/proprietary/vendor/etc/sensors/config/sns_amd_sw_enabled.json new file mode 100644 index 0000000..15655ec --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_amd_sw_enabled.json @@ -0,0 +1,12 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "305", "321", "336", "347", "341", "355", "360", "365", "366", "393", "394", "400", "407", "417", "440", + "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "454", "507"] + }, + "sns_amd": { + "owner": "sns_amd", + "enabled": {"ver": "0","type": "int", "data": "1" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_cm.json b/proprietary/vendor/etc/sensors/config/sns_cm.json new file mode 100644 index 0000000..3e60e8b --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_cm.json @@ -0,0 +1,19 @@ +{ + "config":{ + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "347", "355", "356", "360", "361", "365", "366", "393", "394", "400", + "407", "416", "417", "437", "440", "415", "439", "444", "445", "420", "424", "443", "459", "441", "471", "455", "456", "454", "507"] + }, +"sns_cm":{ + "owner": "sns_cm", + "heap_size":{ "type": "int", "ver": "0", + "data": "1572864" + }, + "max_batch_disabled":{ "type": "int", "ver": "0", + "data": "0" + }, + "min_batch_period_thrshld_ms":{ "type": "int", "ver": "0", + "data": "10" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_diag_filter.json b/proprietary/vendor/etc/sensors/config/sns_diag_filter.json new file mode 100644 index 0000000..2db1a45 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_diag_filter.json @@ -0,0 +1,379 @@ +{ + "config": + { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP", "IOT"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "347", "355", "356", "360", "361", "352", "365", "366", "393", "394", "400", + "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "455", "456", "454", "507"] + }, + + "sns_diag_config": + { + "owner":"diag_filter_sensor", + "qdss": + { + "type" : "int", + "ver" : "0", + "data" : "0" + } + }, + + "sns_diag_sensor_datatype": + { + "owner":"diag_filter_sensor", + + "geomag_rv": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "game_rv": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "gravity": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "cm": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "accel": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "humidity": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ambient_temperature": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "sensor_temperature": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "motion_detect": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "gyro": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ultra_violet": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "pressure": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "mag": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "offbody_detect": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "thermopile": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ambient_light": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "hall": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "proximity": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "rgb": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "test": + { + "type" : "int", + "ver" : "0", + "data" : "0" + }, + "flush_test": + { + "type" : "int", + "ver" : "0", + "data" : "0" + }, + "md_test": + { + "type" : "int", + "ver" : "0", + "data" : "0" + }, + "da_test": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "amd": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "rmd": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "facing": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "gyro_cal": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "oem1": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "mag_cal": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "resampler": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "smd": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "basic_gestures": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "multishake": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "bring_to_ear": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "cmc": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "dpc": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "distance_bound": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "gyro_rot_matrix": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "fmv": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "rotv": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "pedometer": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "device_orient": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "tilt": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "tilt_to_wake": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "heart_rate": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ppg": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "wrist_tilt_gesture": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "pedometer_wrist": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "data_acquisition_engine": + { + "type" : "int", + "ver" : "0", + "data" : "0" + }, + "ccd_walk": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ccd_ttw": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "ccd_hw": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "threshold": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "sar": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "radar": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "activity_recognition": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "dae_datalog": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "location": + { + "type" : "int", + "ver" : "0", + "data" : "1" + }, + "step_detect": + { + "type" : "int", + "ver" : "0", + "data" : "1" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_fmv.json b/proprietary/vendor/etc/sensors/config/sns_fmv.json new file mode 100644 index 0000000..3a49756 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_fmv.json @@ -0,0 +1,49 @@ +{ + "config": + { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["415", "439", "456"] + }, + "sns_fmv_platform": { + "owner": "sns_fmv", + ".config":{ + "owner": "sns_fmv", + "accuracy_unknown": { "type": "int", "ver": "0", + "data": "30000" + }, + "accuracy_abs_rest": { "type": "int", "ver": "0", + "data": "30000" + }, + "accuracy_rel_rest": { "type": "int", "ver": "0", + "data": "30000" + }, + "accuracy_motion": { "type": "int", "ver": "0", + "data": "30000" + }, + "accuracy_fast_motion": { "type": "int", "ver": "0", + "data": "10000" + }, + "gyro_gap_thresh": { "type": "int", "ver": "0", + "data": "500" + }, + "mag_innov": { "type": "flt", "ver": "0", + "data": "9.0" + }, + "mag_sample_gap_fac": { "type": "flt", "ver": "0", + "data": "1.0" + }, + "tyro_thresh_for_zupt": { "type": "flt", "ver": "0", + "data": "0.001" + }, + "amd_int_cfg_param1": { "type": "flt", "ver": "0", + "data": "0.000061" + }, + "amd_int_cfg_param2": { "type": "flt", "ver": "0", + "data": "0.6" + }, + "amd_int_cfg_param3": { "type": "flt", "ver": "0", + "data": "0.4" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_fmv_legacy.json b/proprietary/vendor/etc/sensors/config/sns_fmv_legacy.json new file mode 100644 index 0000000..5c52aa6 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_fmv_legacy.json @@ -0,0 +1,53 @@ +{ + "config": + { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "454", "507"] + }, + "sns_fmv_platform": { + "owner": "sns_fmv", + ".config":{ + "owner": "sns_fmv", + "accuracy_unknown": { "type": "int", "ver": "0", + "data": "3000" + }, + "accuracy_abs_rest": { "type": "int", "ver": "0", + "data": "250" + }, + "accuracy_rel_rest": { "type": "int", "ver": "0", + "data": "1500" + }, + "accuracy_motion": { "type": "int", "ver": "0", + "data": "3000" + }, + "gyro_gap_thresh": { "type": "int", "ver": "0", + "data": "501" + }, + "mag_innov": { "type": "flt", "ver": "0", + "data": "9.0" + }, + "mag_sample_gap_fac": { "type": "flt", "ver": "0", + "data": "1.0" + }, + "tyro_thresh_for_zupt": { "type": "flt", "ver": "0", + "data": "0.001" + }, + "sensor_rpt_rate": { "type": "flt", "ver": "0", + "data": "1.0" + }, + "def_sample_rate": { "type": "flt", "ver": "0", + "data": "5.0" + }, + "amd_int_cfg_param1": { "type": "flt", "ver": "0", + "data": "0.06" + }, + "amd_int_cfg_param2": { "type": "flt", "ver": "0", + "data": "0.5" + }, + "amd_int_cfg_param5": { "type": "flt", "ver": "0", + "data": "0.16" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_geomag_rv.json b/proprietary/vendor/etc/sensors/config/sns_geomag_rv.json new file mode 100644 index 0000000..72e5b8c --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_geomag_rv.json @@ -0,0 +1,29 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", + "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "507"] + }, + "sns_geomag_rv": { + "owner": "sns_geomag_rv", + ".config": { + "owner": "sns_geomag_rv", + "gamerv_cfg_param1": {"type": "int","ver": "0","data": "300" + }, + "gamerv_cfg_param2": {"type": "int","ver": "0","data": "300" + }, + "fusion_min_samp_rate": {"type": "flt","ver": "0","data": "1.0" + }, + "gamerv_def_rpt_rate": {"type": "flt","ver": "0","data": "1.0" + }, + "gamerv_def_sample_rate": {"type": "flt","ver": "0","data": "5.0" + }, + "amd_int_cfg_param1": {"type": "flt","ver": "0","data": "0.06" + }, + "amd_int_cfg_param2": {"type": "flt","ver": "0","data": "0.5" + }, + "game_rv_c_sys": {"type": "int","ver": "0","data": "0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_gyro_cal.json b/proprietary/vendor/etc/sensors/config/sns_gyro_cal.json new file mode 100644 index 0000000..f6827c1 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_gyro_cal.json @@ -0,0 +1,25 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "347", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", + "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "455", "456", "454", "507"] + }, + "sns_gyro_cal_config": { + "owner": "sns_gyro_cal", + "calibration_period": {"type": "int","ver": "0", + "data": "60" + }, + "num_samples": {"type": "int","ver": "0", + "data": "64" + }, + "variance_threshold": {"type": "flt","ver": "0", + "data": "0.00000085" + }, + "sample_rate": {"type": "flt","ver": "0", + "data": "10.0" + }, + "bias_threshold": {"type": "flt","ver": "0", + "data": "0.20" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_mag_cal.json b/proprietary/vendor/etc/sensors/config/sns_mag_cal.json new file mode 100644 index 0000000..b3ca285 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_mag_cal.json @@ -0,0 +1,16 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "HDK", "IDP", "QRD"], + "soc_id": ["339", "355", "356", "361", "365", "366", "394", "400", "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", + "424", "443", "434", "435", "459", "441", "471", "456", "454", "507"] + }, + "sns_mag_cal_config": { + "owner": "sns_mag_cal", + "anomaly_threshold": {"type": "flt","ver": "0", + "data": "200.0" + }, + "sample_rate": { "type": "flt", "ver": "0", + "data": "25.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_rmd.json b/proprietary/vendor/etc/sensors/config/sns_rmd.json new file mode 100644 index 0000000..815817e --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_rmd.json @@ -0,0 +1,25 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", + "400", "407", "417", "440", "415", "439", "416", "437", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "507"] + }, + "sns_rmd": { + "owner": "sns_rmd", + "param4": { + "ver": "0", "type": "flt", "data": "0.2" + }, + "param3": { + "ver": "0", "type": "flt", "data": "5" + }, + "param2": { + "ver": "0", "type": "flt", "data": "0.2" + }, + "param1": { + "ver": "0", "type": "flt", "data": "173" + }, + "sample_rate": { + "ver": "0", "type": "flt", "data": "30.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_rotv.json b/proprietary/vendor/etc/sensors/config/sns_rotv.json new file mode 100644 index 0000000..da34aa8 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_rotv.json @@ -0,0 +1,23 @@ +{ + "config": + { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "394", "400", + "407", "417", "440", "415", "439", "416", "437","444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "507"] + }, + "sns_rotv_platform": { + "owner": "sns_rotv", + ".config":{ + "owner": "sns_rotv", + "min_report_rate": { + "type": "flt", "ver": "0", "data": "1.0" + }, + "coordinate_sys": { + "type": "int", "ver": "0", "data": "0" + }, + "sample_rate": { + "type": "flt", "ver": "0", "data": "5.0" + } + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_smd.json b/proprietary/vendor/etc/sensors/config/sns_smd.json new file mode 100644 index 0000000..cfd7d74 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_smd.json @@ -0,0 +1,40 @@ +{ + "config": { + "hw_platform": ["MTP", "Dragon", "Surf", "QRD", "HDK", "IDP"], + "soc_id": ["291", "246", "300", "301", "305", "321", "336", "339", "341", "355", "356", "360", "361", "365", "366", "393", "347", "394", "400", + "407", "416", "417", "437", "440", "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "507"] + }, + "sns_smd": { + "owner": "sns_smd", + "sample_rate": { + "ver": "0", "type": "flt", "data": "10.0" + }, + "accel_window_time": { + "ver": "0", "type": "int", "data": "5" + }, + "detect_threshold": { + "ver": "0", "type": "flt", "data": "0.158113883" + }, + "self_transition_prob_sm": { + "ver": "0", "type": "flt", "data": "0.9" + }, + "variable_decision_latency": { + "ver": "0", "type": "int", "data": "1" + }, + "max_latency": { + "ver": "0", "type": "int", "data": "10" + }, + "step_count_thresh": { + "ver": "0", "type": "int", "data": "5" + }, + "step_window_time": { + "ver": "0", "type": "int", "data": "3" + }, + "eigen_thresh": { + "ver": "0", "type": "flt", "data": "6.0" + }, + "accel_norm_std_thresh": { + "ver": "0", "type": "flt", "data": "2.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_tilt_sw_enabled.json b/proprietary/vendor/etc/sensors/config/sns_tilt_sw_enabled.json new file mode 100644 index 0000000..18127be --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_tilt_sw_enabled.json @@ -0,0 +1,12 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "HDK", "IDP", "QRD"], + "soc_id": ["291", "246", "305", "321", "336", "341", "355", "360", "365", "366", "393", "394", "400", "407", "417", "440", "444", "445", "420", "424", "443", + "434", "435", "459", "441", "471", "454", "507"] + }, + "sns_tilt": { + "owner": "sns_tilt", + "enabled": {"ver": "0","type": "int", "data": "1" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_tilt_to_wake.json b/proprietary/vendor/etc/sensors/config/sns_tilt_to_wake.json new file mode 100644 index 0000000..17d57f6 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_tilt_to_wake.json @@ -0,0 +1,48 @@ +{ + "config": { + "hw_platform": [ "MTP", "Dragon", "Surf", "IDP", "QRD" + ], + "soc_id": ["291", "246", "305", "321", "336", "339", "355", "356", "360", "361", "365", "366", "393", "394", "400", "407", "417", "440", + "415", "439", "444", "445", "420", "424", "443", "434", "435", "459", "441", "471", "456", "454", "507" + ] + }, + "sns_tilt_to_wake": { + "owner": "sns_tilt_to_wake", + "accel_sampling_rate":{"ver": "0","type": "flt", + "data": "25.0" + }, + "filter_window_seconds":{"ver": "0","type": "flt", + "data": "0.16" + }, + "accel_window_seconds":{"ver": "0","type": "flt", + "data": "1.1" + }, + "accel_sub_window_seconds":{"ver": "0","type": "flt", + "data": "0.55" + }, + "window_for_accel_stability_check_seconds":{"ver": "0","type": "flt", + "data": "0.16" + }, + "min_delta_pitch_threshold_deg":{"ver": "0","type": "flt", + "data": "45.0" + }, + "min_pitch_threshold_deg":{"ver": "0","type": "flt", + "data": "40.0" + }, + "min_abs_delta_z_threshold_deg":{"ver": "0","type": "flt", + "data": "10.0" + }, + "max_roll_threshold_deg":{"ver": "0","type": "flt", + "data": "25.0" + }, + "max_accel_spread_threshold":{"ver": "0","type": "flt", + "data": "4.8" + }, + "max_accel_norm_deviation_from_G_threshold":{"ver": "0","type": "flt", + "data": "2.7" + }, + "max_pitch_threshold_deg":{"ver": "0","type": "flt", + "data": "200.0" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/sns_wrist_pedo.json b/proprietary/vendor/etc/sensors/config/sns_wrist_pedo.json new file mode 100644 index 0000000..840d27c --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/sns_wrist_pedo.json @@ -0,0 +1,29 @@ +{ + "config": { + "hw_platform": [ + "MTP", "Dragon", "Surf", "QRD" ], + "soc_id": [ + "300", "301" ] + }, + "sns_wrist_pedo": { + "owner": "sns_wrist_pedo", + "default_disable": { + "ver": "0", "type": "int", "data": "0" + }, + "sample_rate": { + "ver": "0", "type": "flt", "data": "20.0" + }, + "step_count_threshold": { + "ver": "0", "type": "int", "data": "0" + }, + "step_threshold": { + "ver": "0", "type": "flt", "data": "10.1" + }, + "swing_threshold": { + "ver": "0", "type": "flt", "data": "10.5" + }, + "step_prob_threshold": { + "ver": "0", "type": "flt", "data": "0.49" + } + } +} diff --git a/proprietary/vendor/etc/sensors/config/stk3a5x_0.json b/proprietary/vendor/etc/sensors/config/stk3a5x_0.json new file mode 100644 index 0000000..adb5984 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/stk3a5x_0.json @@ -0,0 +1,313 @@ +{ + "config": { + "hw_platform": ["HDK", "MTP", "Dragon", "Surf", "IDP"], + "soc_id": ["361", "339", "365", "454", "507"] + }, + "stk3a5x_0":{ + "owner": "sns_stk3a5x", + ".ambient_light":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".proximity":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "stk3a5x_0_platform":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "bus_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "2" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "70" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "dri_irq_num":{ "type": "int", "ver": "0", + "data": "98" + }, + "irq_pull_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "irq_is_chip_pin":{ "type": "int", "ver": "0", + "data": "1" + }, + "irq_drive_strength":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_trigger_type":{ "type": "int", "ver": "0", + "data": "1" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "2" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vdd_rail":{ "type": "str", "ver": "0", + "data": "/see/rail/eLDO" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".als":{ + "owner": "sns_stk3a5x", + ".fac_cal":{ + "owner": "sns_stk3a5x", + "scale":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "bias":{ "type": "flt", "ver": "0", + "data": "5000.0" + }, + "target_lux":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "default_scale":{ "type": "flt", "ver": "0", + "data": "500.0" + } + } + }, + ".ps":{ + "owner": "sns_stk3a5x", + ".fac_cal":{ + "owner": "sns_stk3a5x", + "near_threshold":{ "type": "flt", "ver": "0", + "data": "8200.0" + }, + "far_threshold":{ "type": "flt", "ver": "0", + "data": "8000.0" + }, + "ctir_config":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "cover":{ "type": "flt", "ver": "0", + "data": "1200.0" + }, + "uncover":{ "type": "flt", "ver": "0", + "data": "200.0" + }, + "default_near_threshold":{ "type": "flt", "ver": "0", + "data": "8200.0" + }, + "default_far_threshold":{ "type": "flt", "ver": "0", + "data": "8000.0" + }, + "default_factor":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "delta2":{ "type": "flt", "ver": "0", + "data": "550.0" + }, + "delta3":{ "type": "flt", "ver": "0", + "data": "750.0" + }, + "factor":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "high_coeff":{ "type": "flt", "ver": "0", + "data": "0.82" + }, + "low_coeff":{ "type": "flt", "ver": "0", + "data": "0.35" + }, + "default_cover":{ "type": "flt", "ver": "0", + "data": "1200.0" + }, + "default_uncover":{ "type": "flt", "ver": "0", + "data": "200.0" + }, + "min_delta":{ "type": "flt", "ver": "0", + "data": "0.0" + } + }, + ".variable":{ + "owner": "sns_stk3a5x", + "pLowTh":{ "type": "flt", "ver": "0", + "data": "400.0" + }, + "pHighTh":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "WTime":{ "type": "int", "ver": "0", + "data": "127" + }, + "high_coeff":{ "type": "flt", "ver": "0", + "data": "1.85" + }, + "low_coeff":{ "type": "flt", "ver": "0", + "data": "0.8" + }, + "pUseOilAlgo":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".algo":{ + "owner": "sns_stk3a5x", + "SMUDGE_NT":{ "type": "int", "ver": "0", + "data": "200" + }, + "SMUDGE_FT":{ "type": "int", "ver": "0", + "data": "200" + }, + "SMUDGE_DIFF":{ "type": "int", "ver": "0", + "data": "10000" + } + } + } + }, + "stk3a5x_0_private":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "wait":{ "type": "int", "ver": "0", + "data": "32" + }, + "prst_ps":{ "type": "int", "ver": "0", + "data": "1" + }, + "gain_ps":{ "type": "int", "ver": "0", + "data": "3" + }, + "gain_ps_dx16":{ "type": "int", "ver": "0", + "data": "1" + }, + "it_ps":{ "type": "int", "ver": "0", + "data": "2" + }, + "irdr_led":{ "type": "int", "ver": "0", + "data": "8" + }, + "prst_als":{ "type": "int", "ver": "0", + "data": "0" + }, + "gain_als":{ "type": "int", "ver": "0", + "data": "3" + }, + "gain_als_dx128":{ "type": "int", "ver": "0", + "data": "0" + }, + "gain_c":{ "type": "int", "ver": "0", + "data": "3" + }, + "gain_c_dx128":{ "type": "int", "ver": "0", + "data": "0" + }, + "it_als":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps0":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps1":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps2":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps3":{ "type": "int", "ver": "0", + "data": "1" + }, + "pUseOilAlgo":{ "type": "int", "ver": "0", + "data": "1" + } + }, + ".als_coefficient":{ + "owner": "sns_stk3a5x", + "als_offset":{ "type": "int", "ver": "0", + "data": "5" + }, + "ratio_c":{ "type": "int", "ver": "0", + "data": "1" + }, + "ratio_sun":{ "type": "int", "ver": "0", + "data": "30" + }, + "ratio_d":{ "type": "int", "ver": "0", + "data": "70" + }, + "ratio_a":{ "type": "int", "ver": "0", + "data": "135" + }, + "ratio_h":{ "type": "int", "ver": "0", + "data": "250" + }, + "window_c":{ "type": "flt", "ver": "0", + "data": "1.02" + }, + "window_sun":{ "type": "flt", "ver": "0", + "data": "0.172" + }, + "window_d":{ "type": "flt", "ver": "0", + "data": "0.114" + }, + "window_a":{ "type": "flt", "ver": "0", + "data": "0.043" + }, + "window_h":{ "type": "flt", "ver": "0", + "data": "0.01725" + }, + "min_c_data":{ "type": "int", "ver": "0", + "data": "50" + }, + "min_g_data":{ "type": "int", "ver": "0", + "data": "20" + }, + "max_als_data":{ "type": "int", "ver": "0", + "data": "64000" + }, + "min_als_data":{ "type": "int", "ver": "0", + "data": "1500" + }, + "flag_opt":{ "type": "int", "ver": "0", + "data": "3" + } + } + } +} + diff --git a/proprietary/vendor/etc/sensors/config/stk3a5x_0_DVT1.json b/proprietary/vendor/etc/sensors/config/stk3a5x_0_DVT1.json new file mode 100644 index 0000000..14361a3 --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/stk3a5x_0_DVT1.json @@ -0,0 +1,314 @@ +{ + "config": { + "hw_platform": ["HDK", "MTP", "Dragon", "Surf", "IDP"], + "soc_id": ["361", "339", "365", "454", "507"], + "ro.vendor.hw.revision": ["dvt1"] + }, + "stk3a5x_0":{ + "owner": "sns_stk3a5x", + ".ambient_light":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".proximity":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "stk3a5x_0_platform":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "bus_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "2" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "70" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "dri_irq_num":{ "type": "int", "ver": "0", + "data": "98" + }, + "irq_pull_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "irq_is_chip_pin":{ "type": "int", "ver": "0", + "data": "1" + }, + "irq_drive_strength":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_trigger_type":{ "type": "int", "ver": "0", + "data": "1" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "2" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vdd_rail":{ "type": "str", "ver": "0", + "data": "/see/rail/eLDO" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".als":{ + "owner": "sns_stk3a5x", + ".fac_cal":{ + "owner": "sns_stk3a5x", + "scale":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "bias":{ "type": "flt", "ver": "0", + "data": "5000.0" + }, + "target_lux":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "default_scale":{ "type": "flt", "ver": "0", + "data": "500.0" + } + } + }, + ".ps":{ + "owner": "sns_stk3a5x", + ".fac_cal":{ + "owner": "sns_stk3a5x", + "near_threshold":{ "type": "flt", "ver": "0", + "data": "8200.0" + }, + "far_threshold":{ "type": "flt", "ver": "0", + "data": "8000.0" + }, + "ctir_config":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "cover":{ "type": "flt", "ver": "0", + "data": "1200.0" + }, + "uncover":{ "type": "flt", "ver": "0", + "data": "200.0" + }, + "default_near_threshold":{ "type": "flt", "ver": "0", + "data": "8200.0" + }, + "default_far_threshold":{ "type": "flt", "ver": "0", + "data": "8000.0" + }, + "default_factor":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "delta2":{ "type": "flt", "ver": "0", + "data": "550.0" + }, + "delta3":{ "type": "flt", "ver": "0", + "data": "750.0" + }, + "factor":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "high_coeff":{ "type": "flt", "ver": "0", + "data": "0.41" + }, + "low_coeff":{ "type": "flt", "ver": "0", + "data": "0.175" + }, + "default_cover":{ "type": "flt", "ver": "0", + "data": "1200.0" + }, + "default_uncover":{ "type": "flt", "ver": "0", + "data": "200.0" + }, + "min_delta":{ "type": "flt", "ver": "0", + "data": "0.0" + } + }, + ".variable":{ + "owner": "sns_stk3a5x", + "pLowTh":{ "type": "flt", "ver": "0", + "data": "400.0" + }, + "pHighTh":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "WTime":{ "type": "int", "ver": "0", + "data": "127" + }, + "high_coeff":{ "type": "flt", "ver": "0", + "data": "0.925" + }, + "low_coeff":{ "type": "flt", "ver": "0", + "data": "0.4" + }, + "pUseOilAlgo":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".algo":{ + "owner": "sns_stk3a5x", + "SMUDGE_NT":{ "type": "int", "ver": "0", + "data": "200" + }, + "SMUDGE_FT":{ "type": "int", "ver": "0", + "data": "200" + }, + "SMUDGE_DIFF":{ "type": "int", "ver": "0", + "data": "10000" + } + } + } + }, + "stk3a5x_0_private":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "wait":{ "type": "int", "ver": "0", + "data": "32" + }, + "prst_ps":{ "type": "int", "ver": "0", + "data": "1" + }, + "gain_ps":{ "type": "int", "ver": "0", + "data": "3" + }, + "gain_ps_dx16":{ "type": "int", "ver": "0", + "data": "1" + }, + "it_ps":{ "type": "int", "ver": "0", + "data": "2" + }, + "irdr_led":{ "type": "int", "ver": "0", + "data": "8" + }, + "prst_als":{ "type": "int", "ver": "0", + "data": "0" + }, + "gain_als":{ "type": "int", "ver": "0", + "data": "3" + }, + "gain_als_dx128":{ "type": "int", "ver": "0", + "data": "0" + }, + "gain_c":{ "type": "int", "ver": "0", + "data": "3" + }, + "gain_c_dx128":{ "type": "int", "ver": "0", + "data": "0" + }, + "it_als":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps0":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps1":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps2":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps3":{ "type": "int", "ver": "0", + "data": "1" + }, + "pUseOilAlgo":{ "type": "int", "ver": "0", + "data": "1" + } + }, + ".als_coefficient":{ + "owner": "sns_stk3a5x", + "als_offset":{ "type": "int", "ver": "0", + "data": "5" + }, + "ratio_c":{ "type": "int", "ver": "0", + "data": "1" + }, + "ratio_sun":{ "type": "int", "ver": "0", + "data": "30" + }, + "ratio_d":{ "type": "int", "ver": "0", + "data": "70" + }, + "ratio_a":{ "type": "int", "ver": "0", + "data": "135" + }, + "ratio_h":{ "type": "int", "ver": "0", + "data": "210" + }, + "window_c":{ "type": "flt", "ver": "0", + "data": "4.08" + }, + "window_sun":{ "type": "flt", "ver": "0", + "data": "0.688" + }, + "window_d":{ "type": "flt", "ver": "0", + "data": "0.456" + }, + "window_a":{ "type": "flt", "ver": "0", + "data": "0.172" + }, + "window_h":{ "type": "flt", "ver": "0", + "data": "0.0672" + }, + "min_c_data":{ "type": "int", "ver": "0", + "data": "50" + }, + "min_g_data":{ "type": "int", "ver": "0", + "data": "20" + }, + "max_als_data":{ "type": "int", "ver": "0", + "data": "64000" + }, + "min_als_data":{ "type": "int", "ver": "0", + "data": "1500" + }, + "flag_opt":{ "type": "int", "ver": "0", + "data": "3" + } + } + } +} + diff --git a/proprietary/vendor/etc/sensors/config/stk3a5x_0_DVT2.json b/proprietary/vendor/etc/sensors/config/stk3a5x_0_DVT2.json new file mode 100644 index 0000000..28126bf --- /dev/null +++ b/proprietary/vendor/etc/sensors/config/stk3a5x_0_DVT2.json @@ -0,0 +1,314 @@ +{ + "config": { + "hw_platform": ["HDK", "MTP", "Dragon", "Surf", "IDP"], + "soc_id": ["361", "339", "365", "454", "507"], + "ro.vendor.hw.revision": ["dvt2"] + }, + "stk3a5x_0":{ + "owner": "sns_stk3a5x", + ".ambient_light":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + }, + ".proximity":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "is_dri":{ "type": "int", "ver": "0", + "data": "1" + }, + "hw_id":{ "type": "int", "ver": "0", + "data": "0" + }, + "res_idx":{ "type": "int", "ver": "0", + "data": "0" + }, + "sync_stream":{ "type": "int", "ver": "0", + "data": "0" + } + } + } + }, + "stk3a5x_0_platform":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "bus_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "bus_instance":{ "type": "int", "ver": "0", + "data": "2" + }, + "slave_config":{ "type": "int", "ver": "0", + "data": "70" + }, + "min_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "max_bus_speed_khz":{ "type": "int", "ver": "0", + "data": "400" + }, + "reg_addr_type":{ "type": "int", "ver": "0", + "data": "0" + }, + "dri_irq_num":{ "type": "int", "ver": "0", + "data": "98" + }, + "irq_pull_type":{ "type": "int", "ver": "0", + "data": "3" + }, + "irq_is_chip_pin":{ "type": "int", "ver": "0", + "data": "1" + }, + "irq_drive_strength":{ "type": "int", "ver": "0", + "data": "0" + }, + "irq_trigger_type":{ "type": "int", "ver": "0", + "data": "1" + }, + "num_rail":{ "type": "int", "ver": "0", + "data": "2" + }, + "rail_on_state":{ "type": "int", "ver": "0", + "data": "2" + }, + "vdd_rail":{ "type": "str", "ver": "0", + "data": "/see/rail/eLDO" + }, + "vddio_rail":{ "type": "str", "ver": "0", + "data": "/pmic/client/sensor_vddio" + }, + "rigid_body_type":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".als":{ + "owner": "sns_stk3a5x", + ".fac_cal":{ + "owner": "sns_stk3a5x", + "scale":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "bias":{ "type": "flt", "ver": "0", + "data": "5000.0" + }, + "target_lux":{ "type": "flt", "ver": "0", + "data": "500.0" + }, + "default_scale":{ "type": "flt", "ver": "0", + "data": "500.0" + } + } + }, + ".ps":{ + "owner": "sns_stk3a5x", + ".fac_cal":{ + "owner": "sns_stk3a5x", + "near_threshold":{ "type": "flt", "ver": "0", + "data": "8200.0" + }, + "far_threshold":{ "type": "flt", "ver": "0", + "data": "8000.0" + }, + "ctir_config":{ "type": "flt", "ver": "0", + "data": "0.0" + }, + "cover":{ "type": "flt", "ver": "0", + "data": "1200.0" + }, + "uncover":{ "type": "flt", "ver": "0", + "data": "200.0" + }, + "default_near_threshold":{ "type": "flt", "ver": "0", + "data": "8200.0" + }, + "default_far_threshold":{ "type": "flt", "ver": "0", + "data": "8000.0" + }, + "default_factor":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "delta2":{ "type": "flt", "ver": "0", + "data": "550.0" + }, + "delta3":{ "type": "flt", "ver": "0", + "data": "750.0" + }, + "factor":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "high_coeff":{ "type": "flt", "ver": "0", + "data": "0.41" + }, + "low_coeff":{ "type": "flt", "ver": "0", + "data": "0.175" + }, + "default_cover":{ "type": "flt", "ver": "0", + "data": "1200.0" + }, + "default_uncover":{ "type": "flt", "ver": "0", + "data": "200.0" + }, + "min_delta":{ "type": "flt", "ver": "0", + "data": "0.0" + } + }, + ".variable":{ + "owner": "sns_stk3a5x", + "pLowTh":{ "type": "flt", "ver": "0", + "data": "400.0" + }, + "pHighTh":{ "type": "flt", "ver": "0", + "data": "1000.0" + }, + "WTime":{ "type": "int", "ver": "0", + "data": "127" + }, + "high_coeff":{ "type": "flt", "ver": "0", + "data": "0.925" + }, + "low_coeff":{ "type": "flt", "ver": "0", + "data": "0.4" + }, + "pUseOilAlgo":{ "type": "int", "ver": "0", + "data": "0" + } + }, + ".algo":{ + "owner": "sns_stk3a5x", + "SMUDGE_NT":{ "type": "int", "ver": "0", + "data": "200" + }, + "SMUDGE_FT":{ "type": "int", "ver": "0", + "data": "200" + }, + "SMUDGE_DIFF":{ "type": "int", "ver": "0", + "data": "10000" + } + } + } + }, + "stk3a5x_0_private":{ + "owner": "sns_stk3a5x", + ".config":{ + "owner": "sns_stk3a5x", + "wait":{ "type": "int", "ver": "0", + "data": "32" + }, + "prst_ps":{ "type": "int", "ver": "0", + "data": "1" + }, + "gain_ps":{ "type": "int", "ver": "0", + "data": "3" + }, + "gain_ps_dx16":{ "type": "int", "ver": "0", + "data": "1" + }, + "it_ps":{ "type": "int", "ver": "0", + "data": "2" + }, + "irdr_led":{ "type": "int", "ver": "0", + "data": "8" + }, + "prst_als":{ "type": "int", "ver": "0", + "data": "0" + }, + "gain_als":{ "type": "int", "ver": "0", + "data": "3" + }, + "gain_als_dx128":{ "type": "int", "ver": "0", + "data": "0" + }, + "gain_c":{ "type": "int", "ver": "0", + "data": "3" + }, + "gain_c_dx128":{ "type": "int", "ver": "0", + "data": "0" + }, + "it_als":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps0":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps1":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps2":{ "type": "int", "ver": "0", + "data": "1" + }, + "ps_ps3":{ "type": "int", "ver": "0", + "data": "1" + }, + "pUseOilAlgo":{ "type": "int", "ver": "0", + "data": "1" + } + }, + ".als_coefficient":{ + "owner": "sns_stk3a5x", + "als_offset":{ "type": "int", "ver": "0", + "data": "5" + }, + "ratio_c":{ "type": "int", "ver": "0", + "data": "1" + }, + "ratio_sun":{ "type": "int", "ver": "0", + "data": "30" + }, + "ratio_d":{ "type": "int", "ver": "0", + "data": "70" + }, + "ratio_a":{ "type": "int", "ver": "0", + "data": "135" + }, + "ratio_h":{ "type": "int", "ver": "0", + "data": "210" + }, + "window_c":{ "type": "flt", "ver": "0", + "data": "1.02" + }, + "window_sun":{ "type": "flt", "ver": "0", + "data": "0.172" + }, + "window_d":{ "type": "flt", "ver": "0", + "data": "0.114" + }, + "window_a":{ "type": "flt", "ver": "0", + "data": "0.043" + }, + "window_h":{ "type": "flt", "ver": "0", + "data": "0.0168" + }, + "min_c_data":{ "type": "int", "ver": "0", + "data": "50" + }, + "min_g_data":{ "type": "int", "ver": "0", + "data": "20" + }, + "max_als_data":{ "type": "int", "ver": "0", + "data": "64000" + }, + "min_als_data":{ "type": "int", "ver": "0", + "data": "1500" + }, + "flag_opt":{ "type": "int", "ver": "0", + "data": "3" + } + } + } +} + diff --git a/proprietary/vendor/etc/sensors/proto/descriptor.proto b/proprietary/vendor/etc/sensors/proto/descriptor.proto new file mode 100644 index 0000000..a2102d7 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/descriptor.proto @@ -0,0 +1,885 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// The messages in this file describe the definitions found in .proto files. +// A valid .proto file can be translated directly to a FileDescriptorProto +// without any other information (e.g. without reading its imports). + + +syntax = "proto2"; + +package google.protobuf; + +option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DescriptorProtos"; +option csharp_namespace = "Google.Protobuf.Reflection"; +option objc_class_prefix = "GPB"; +option cc_enable_arenas = true; + +// descriptor.proto must be optimized for speed because reflection-based +// algorithms don't work during bootstrapping. +option optimize_for = SPEED; + +// The protocol compiler can output a FileDescriptorSet containing the .proto +// files it parses. +message FileDescriptorSet { + repeated FileDescriptorProto file = 1; +} + +// Describes a complete .proto file. +message FileDescriptorProto { + optional string name = 1; // file name, relative to root of source tree + optional string package = 2; // e.g. "foo", "foo.bar", etc. + + // Names of files imported by this file. + repeated string dependency = 3; + // Indexes of the public imported files in the dependency list above. + repeated int32 public_dependency = 10; + // Indexes of the weak imported files in the dependency list. + // For Google-internal migration only. Do not use. + repeated int32 weak_dependency = 11; + + // All top-level definitions in this file. + repeated DescriptorProto message_type = 4; + repeated EnumDescriptorProto enum_type = 5; + repeated ServiceDescriptorProto service = 6; + repeated FieldDescriptorProto extension = 7; + + optional FileOptions options = 8; + + // This field contains optional information about the original source code. + // You may safely remove this entire field without harming runtime + // functionality of the descriptors -- the information is needed only by + // development tools. + optional SourceCodeInfo source_code_info = 9; + + // The syntax of the proto file. + // The supported values are "proto2" and "proto3". + optional string syntax = 12; +} + +// Describes a message type. +message DescriptorProto { + optional string name = 1; + + repeated FieldDescriptorProto field = 2; + repeated FieldDescriptorProto extension = 6; + + repeated DescriptorProto nested_type = 3; + repeated EnumDescriptorProto enum_type = 4; + + message ExtensionRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + + optional ExtensionRangeOptions options = 3; + } + repeated ExtensionRange extension_range = 5; + + repeated OneofDescriptorProto oneof_decl = 8; + + optional MessageOptions options = 7; + + // Range of reserved tag numbers. Reserved tag numbers may not be used by + // fields or extension ranges in the same message. Reserved ranges may + // not overlap. + message ReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + } + repeated ReservedRange reserved_range = 9; + // Reserved field names, which may not be used by fields in the same message. + // A given name may only be reserved once. + repeated string reserved_name = 10; +} + +message ExtensionRangeOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +// Describes a field within a message. +message FieldDescriptorProto { + enum Type { + // 0 is reserved for errors. + // Order is weird for historical reasons. + TYPE_DOUBLE = 1; + TYPE_FLOAT = 2; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + TYPE_INT64 = 3; + TYPE_UINT64 = 4; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + TYPE_INT32 = 5; + TYPE_FIXED64 = 6; + TYPE_FIXED32 = 7; + TYPE_BOOL = 8; + TYPE_STRING = 9; + // Tag-delimited aggregate. + // Group type is deprecated and not supported in proto3. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. + TYPE_GROUP = 10; + TYPE_MESSAGE = 11; // Length-delimited aggregate. + + // New in version 2. + TYPE_BYTES = 12; + TYPE_UINT32 = 13; + TYPE_ENUM = 14; + TYPE_SFIXED32 = 15; + TYPE_SFIXED64 = 16; + TYPE_SINT32 = 17; // Uses ZigZag encoding. + TYPE_SINT64 = 18; // Uses ZigZag encoding. + } + + enum Label { + // 0 is reserved for errors + LABEL_OPTIONAL = 1; + LABEL_REQUIRED = 2; + LABEL_REPEATED = 3; + } + + optional string name = 1; + optional int32 number = 3; + optional Label label = 4; + + // If type_name is set, this need not be set. If both this and type_name + // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. + optional Type type = 5; + + // For message and enum types, this is the name of the type. If the name + // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + // rules are used to find the type (i.e. first the nested types within this + // message are searched, then within the parent, on up to the root + // namespace). + optional string type_name = 6; + + // For extensions, this is the name of the type being extended. It is + // resolved in the same manner as type_name. + optional string extendee = 2; + + // For numeric types, contains the original text representation of the value. + // For booleans, "true" or "false". + // For strings, contains the default text contents (not escaped in any way). + // For bytes, contains the C escaped value. All bytes >= 128 are escaped. + // TODO(kenton): Base-64 encode? + optional string default_value = 7; + + // If set, gives the index of a oneof in the containing type's oneof_decl + // list. This field is a member of that oneof. + optional int32 oneof_index = 9; + + // JSON name of this field. The value is set by protocol compiler. If the + // user has set a "json_name" option on this field, that option's value + // will be used. Otherwise, it's deduced from the field's name by converting + // it to camelCase. + optional string json_name = 10; + + optional FieldOptions options = 8; +} + +// Describes a oneof. +message OneofDescriptorProto { + optional string name = 1; + optional OneofOptions options = 2; +} + +// Describes an enum type. +message EnumDescriptorProto { + optional string name = 1; + + repeated EnumValueDescriptorProto value = 2; + + optional EnumOptions options = 3; + + // Range of reserved numeric values. Reserved values may not be used by + // entries in the same enum. Reserved ranges may not overlap. + // + // Note that this is distinct from DescriptorProto.ReservedRange in that it + // is inclusive such that it can appropriately represent the entire int32 + // domain. + message EnumReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Inclusive. + } + + // Range of reserved numeric values. Reserved numeric values may not be used + // by enum values in the same enum declaration. Reserved ranges may not + // overlap. + repeated EnumReservedRange reserved_range = 4; + + // Reserved enum value names, which may not be reused. A given name may only + // be reserved once. + repeated string reserved_name = 5; +} + +// Describes a value within an enum. +message EnumValueDescriptorProto { + optional string name = 1; + optional int32 number = 2; + + optional EnumValueOptions options = 3; +} + +// Describes a service. +message ServiceDescriptorProto { + optional string name = 1; + repeated MethodDescriptorProto method = 2; + + optional ServiceOptions options = 3; +} + +// Describes a method of a service. +message MethodDescriptorProto { + optional string name = 1; + + // Input and output type names. These are resolved in the same way as + // FieldDescriptorProto.type_name, but must refer to a message type. + optional string input_type = 2; + optional string output_type = 3; + + optional MethodOptions options = 4; + + // Identifies if client streams multiple client messages + optional bool client_streaming = 5 [default = false]; + // Identifies if server streams multiple server messages + optional bool server_streaming = 6 [default = false]; +} + + +// =================================================================== +// Options + +// Each of the definitions above may have "options" attached. These are +// just annotations which may cause code to be generated slightly differently +// or may contain hints for code that manipulates protocol messages. +// +// Clients may define custom options as extensions of the *Options messages. +// These extensions may not yet be known at parsing time, so the parser cannot +// store the values in them. Instead it stores them in a field in the *Options +// message called uninterpreted_option. This field must have the same name +// across all *Options messages. We then use this field to populate the +// extensions when we build a descriptor, at which point all protos have been +// parsed and so all extensions are known. +// +// Extension numbers for custom options may be chosen as follows: +// * For options which will only be used within a single application or +// organization, or for experimental options, use field numbers 50000 +// through 99999. It is up to you to ensure that you do not use the +// same number for multiple options. +// * For options which will be published and used publicly by multiple +// independent entities, e-mail protobuf-global-extension-registry@google.com +// to reserve extension numbers. Simply provide your project name (e.g. +// Objective-C plugin) and your project website (if available) -- there's no +// need to explain how you intend to use them. Usually you only need one +// extension number. You can declare multiple options with only one extension +// number by putting them in a sub-message. See the Custom Options section of +// the docs for examples: +// https://developers.google.com/protocol-buffers/docs/proto#options +// If this turns out to be popular, a web service will be set up +// to automatically assign option numbers. + +message FileOptions { + + // Sets the Java package where classes generated from this .proto will be + // placed. By default, the proto package is used, but this is often + // inappropriate because proto packages do not normally start with backwards + // domain names. + optional string java_package = 1; + + + // If set, all the classes from the .proto file are wrapped in a single + // outer class with the given name. This applies to both Proto1 + // (equivalent to the old "--one_java_file" option) and Proto2 (where + // a .proto always translates to a single class, but you may want to + // explicitly choose the class name). + optional string java_outer_classname = 8; + + // If set true, then the Java code generator will generate a separate .java + // file for each top-level message, enum, and service defined in the .proto + // file. Thus, these types will *not* be nested inside the outer class + // named by java_outer_classname. However, the outer class will still be + // generated to contain the file's getDescriptor() method as well as any + // top-level extensions defined in the file. + optional bool java_multiple_files = 10 [default = false]; + + // This option does nothing. + optional bool java_generate_equals_and_hash = 20 [deprecated=true]; + + // If set true, then the Java2 code generator will generate code that + // throws an exception whenever an attempt is made to assign a non-UTF-8 + // byte sequence to a string field. + // Message reflection will do the same. + // However, an extension field still accepts non-UTF-8 byte sequences. + // This option has no effect on when used with the lite runtime. + optional bool java_string_check_utf8 = 27 [default = false]; + + + // Generated classes can be optimized for speed or code size. + enum OptimizeMode { + SPEED = 1; // Generate complete code for parsing, serialization, + // etc. + CODE_SIZE = 2; // Use ReflectionOps to implement these methods. + LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. + } + optional OptimizeMode optimize_for = 9 [default = SPEED]; + + // Sets the Go package where structs generated from this .proto will be + // placed. If omitted, the Go package will be derived from the following: + // - The basename of the package import path, if provided. + // - Otherwise, the package statement in the .proto file, if present. + // - Otherwise, the basename of the .proto file, without extension. + optional string go_package = 11; + + + + + // Should generic services be generated in each language? "Generic" services + // are not specific to any particular RPC system. They are generated by the + // main code generators in each language (without additional plugins). + // Generic services were the only kind of service generation supported by + // early versions of google.protobuf. + // + // Generic services are now considered deprecated in favor of using plugins + // that generate code specific to your particular RPC system. Therefore, + // these default to false. Old code which depends on generic services should + // explicitly set them to true. + optional bool cc_generic_services = 16 [default = false]; + optional bool java_generic_services = 17 [default = false]; + optional bool py_generic_services = 18 [default = false]; + optional bool php_generic_services = 42 [default = false]; + + // Is this file deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for everything in the file, or it will be completely ignored; in the very + // least, this is a formalization for deprecating files. + optional bool deprecated = 23 [default = false]; + + // Enables the use of arenas for the proto messages in this file. This applies + // only to generated classes for C++. + optional bool cc_enable_arenas = 31 [default = false]; + + + // Sets the objective c class prefix which is prepended to all objective c + // generated classes from this .proto. There is no default. + optional string objc_class_prefix = 36; + + // Namespace for generated classes; defaults to the package. + optional string csharp_namespace = 37; + + // By default Swift generators will take the proto package and CamelCase it + // replacing '.' with underscore and use that to prefix the types/symbols + // defined. When this options is provided, they will use this value instead + // to prefix the types/symbols defined. + optional string swift_prefix = 39; + + // Sets the php class prefix which is prepended to all php generated classes + // from this .proto. Default is empty. + optional string php_class_prefix = 40; + + // Use this option to change the namespace of php generated classes. Default + // is empty. When this option is empty, the package name will be used for + // determining the namespace. + optional string php_namespace = 41; + + // Use this option to change the namespace of php generated metadata classes. + // Default is empty. When this option is empty, the proto file name will be + // used for determining the namespace. + optional string php_metadata_namespace = 44; + + // Use this option to change the package of ruby generated classes. Default + // is empty. When this option is not set, the package name will be used for + // determining the ruby package. + optional string ruby_package = 45; + + + // The parser stores options it doesn't recognize here. + // See the documentation for the "Options" section above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. + // See the documentation for the "Options" section above. + extensions 1000 to max; + + reserved 38; +} + +message MessageOptions { + // Set true to use the old proto1 MessageSet wire format for extensions. + // This is provided for backwards-compatibility with the MessageSet wire + // format. You should not use this for any other reason: It's less + // efficient, has fewer features, and is more complicated. + // + // The message must be defined exactly as follows: + // message Foo { + // option message_set_wire_format = true; + // extensions 4 to max; + // } + // Note that the message cannot have any defined fields; MessageSets only + // have extensions. + // + // All extensions of your type must be singular messages; e.g. they cannot + // be int32s, enums, or repeated messages. + // + // Because this is an option, the above two restrictions are not enforced by + // the protocol compiler. + optional bool message_set_wire_format = 1 [default = false]; + + // Disables the generation of the standard "descriptor()" accessor, which can + // conflict with a field of the same name. This is meant to make migration + // from proto1 easier; new code should avoid fields named "descriptor". + optional bool no_standard_descriptor_accessor = 2 [default = false]; + + // Is this message deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the message, or it will be completely ignored; in the very least, + // this is a formalization for deprecating messages. + optional bool deprecated = 3 [default = false]; + + // Whether the message is an automatically generated map entry type for the + // maps field. + // + // For maps fields: + // map map_field = 1; + // The parsed descriptor looks like: + // message MapFieldEntry { + // option map_entry = true; + // optional KeyType key = 1; + // optional ValueType value = 2; + // } + // repeated MapFieldEntry map_field = 1; + // + // Implementations may choose not to generate the map_entry=true message, but + // use a native map in the target language to hold the keys and values. + // The reflection APIs in such implementations still need to work as + // if the field is a repeated message field. + // + // NOTE: Do not set the option in .proto files. Always use the maps syntax + // instead. The option should only be implicitly set by the proto compiler + // parser. + optional bool map_entry = 7; + + reserved 8; // javalite_serializable + reserved 9; // javanano_as_lite + + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message FieldOptions { + // The ctype option instructs the C++ code generator to use a different + // representation of the field than it normally would. See the specific + // options below. This option is not yet implemented in the open source + // release -- sorry, we'll try to include it in a future version! + optional CType ctype = 1 [default = STRING]; + enum CType { + // Default mode. + STRING = 0; + + CORD = 1; + + STRING_PIECE = 2; + } + // The packed option can be enabled for repeated primitive fields to enable + // a more efficient representation on the wire. Rather than repeatedly + // writing the tag and type for each element, the entire array is encoded as + // a single length-delimited blob. In proto3, only explicit setting it to + // false will avoid using packed encoding. + optional bool packed = 2; + + // The jstype option determines the JavaScript type used for values of the + // field. The option is permitted only for 64 bit integral and fixed types + // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING + // is represented as JavaScript string, which avoids loss of precision that + // can happen when a large value is converted to a floating point JavaScript. + // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to + // use the JavaScript "number" type. The behavior of the default option + // JS_NORMAL is implementation dependent. + // + // This option is an enum to permit additional types to be added, e.g. + // goog.math.Integer. + optional JSType jstype = 6 [default = JS_NORMAL]; + enum JSType { + // Use the default type. + JS_NORMAL = 0; + + // Use JavaScript strings. + JS_STRING = 1; + + // Use JavaScript numbers. + JS_NUMBER = 2; + } + + // Should this field be parsed lazily? Lazy applies only to message-type + // fields. It means that when the outer message is initially parsed, the + // inner message's contents will not be parsed but instead stored in encoded + // form. The inner message will actually be parsed when it is first accessed. + // + // This is only a hint. Implementations are free to choose whether to use + // eager or lazy parsing regardless of the value of this option. However, + // setting this option true suggests that the protocol author believes that + // using lazy parsing on this field is worth the additional bookkeeping + // overhead typically needed to implement it. + // + // This option does not affect the public interface of any generated code; + // all method signatures remain the same. Furthermore, thread-safety of the + // interface is not affected by this option; const methods remain safe to + // call from multiple threads concurrently, while non-const methods continue + // to require exclusive access. + // + // + // Note that implementations may choose not to check required fields within + // a lazy sub-message. That is, calling IsInitialized() on the outer message + // may return true even if the inner message has missing required fields. + // This is necessary because otherwise the inner message would have to be + // parsed in order to perform the check, defeating the purpose of lazy + // parsing. An implementation which chooses not to check required fields + // must be consistent about it. That is, for any particular sub-message, the + // implementation must either *always* check its required fields, or *never* + // check its required fields, regardless of whether or not the message has + // been parsed. + optional bool lazy = 5 [default = false]; + + // Is this field deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for accessors, or it will be completely ignored; in the very least, this + // is a formalization for deprecating fields. + optional bool deprecated = 3 [default = false]; + + // For Google-internal migration only. Do not use. + optional bool weak = 10 [default = false]; + + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; + + reserved 4; // removed jtype +} + +message OneofOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumOptions { + + // Set this option to true to allow mapping different tag names to the same + // value. + optional bool allow_alias = 2; + + // Is this enum deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum, or it will be completely ignored; in the very least, this + // is a formalization for deprecating enums. + optional bool deprecated = 3 [default = false]; + + reserved 5; // javanano_as_lite + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumValueOptions { + // Is this enum value deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum value, or it will be completely ignored; in the very least, + // this is a formalization for deprecating enum values. + optional bool deprecated = 1 [default = false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message ServiceOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this service deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the service, or it will be completely ignored; in the very least, + // this is a formalization for deprecating services. + optional bool deprecated = 33 [default = false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message MethodOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this method deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the method, or it will be completely ignored; in the very least, + // this is a formalization for deprecating methods. + optional bool deprecated = 33 [default = false]; + + // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + // or neither? HTTP based RPC implementation may choose GET verb for safe + // methods, and PUT verb for idempotent methods instead of the default POST. + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0; + NO_SIDE_EFFECTS = 1; // implies idempotent + IDEMPOTENT = 2; // idempotent, but may have side effects + } + optional IdempotencyLevel idempotency_level = 34 + [default = IDEMPOTENCY_UNKNOWN]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + + +// A message representing a option the parser does not recognize. This only +// appears in options protos created by the compiler::Parser class. +// DescriptorPool resolves these when building Descriptor objects. Therefore, +// options protos in descriptor objects (e.g. returned by Descriptor::options(), +// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions +// in them. +message UninterpretedOption { + // The name of the uninterpreted option. Each string represents a segment in + // a dot-separated name. is_extension is true iff a segment represents an + // extension (denoted with parentheses in options specs in .proto files). + // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents + // "foo.(bar.baz).qux". + message NamePart { + required string name_part = 1; + required bool is_extension = 2; + } + repeated NamePart name = 2; + + // The value of the uninterpreted option, in whatever type the tokenizer + // identified it as during parsing. Exactly one of these should be set. + optional string identifier_value = 3; + optional uint64 positive_int_value = 4; + optional int64 negative_int_value = 5; + optional double double_value = 6; + optional bytes string_value = 7; + optional string aggregate_value = 8; +} + +// =================================================================== +// Optional source code info + +// Encapsulates information about the original source file from which a +// FileDescriptorProto was generated. +message SourceCodeInfo { + // A Location identifies a piece of source code in a .proto file which + // corresponds to a particular definition. This information is intended + // to be useful to IDEs, code indexers, documentation generators, and similar + // tools. + // + // For example, say we have a file like: + // message Foo { + // optional string foo = 1; + // } + // Let's look at just the field definition: + // optional string foo = 1; + // ^ ^^ ^^ ^ ^^^ + // a bc de f ghi + // We have the following locations: + // span path represents + // [a,i) [ 4, 0, 2, 0 ] The whole field definition. + // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + // + // Notes: + // - A location may refer to a repeated field itself (i.e. not to any + // particular index within it). This is used whenever a set of elements are + // logically enclosed in a single code segment. For example, an entire + // extend block (possibly containing multiple extension definitions) will + // have an outer location whose path refers to the "extensions" repeated + // field without an index. + // - Multiple locations may have the same path. This happens when a single + // logical declaration is spread out across multiple places. The most + // obvious example is the "extend" block again -- there may be multiple + // extend blocks in the same scope, each of which will have the same path. + // - A location's span is not always a subset of its parent's span. For + // example, the "extendee" of an extension declaration appears at the + // beginning of the "extend" block and is shared by all extensions within + // the block. + // - Just because a location's span is a subset of some other location's span + // does not mean that it is a descendant. For example, a "group" defines + // both a type and a field in a single declaration. Thus, the locations + // corresponding to the type and field and their components will overlap. + // - Code which tries to interpret locations should probably be designed to + // ignore those that it doesn't understand, as more types of locations could + // be recorded in the future. + repeated Location location = 1; + message Location { + // Identifies which part of the FileDescriptorProto was defined at this + // location. + // + // Each element is a field number or an index. They form a path from + // the root FileDescriptorProto to the place where the definition. For + // example, this path: + // [ 4, 3, 2, 7, 1 ] + // refers to: + // file.message_type(3) // 4, 3 + // .field(7) // 2, 7 + // .name() // 1 + // This is because FileDescriptorProto.message_type has field number 4: + // repeated DescriptorProto message_type = 4; + // and DescriptorProto.field has field number 2: + // repeated FieldDescriptorProto field = 2; + // and FieldDescriptorProto.name has field number 1: + // optional string name = 1; + // + // Thus, the above path gives the location of a field name. If we removed + // the last element: + // [ 4, 3, 2, 7 ] + // this path refers to the whole field declaration (from the beginning + // of the label to the terminating semicolon). + repeated int32 path = 1 [packed = true]; + + // Always has exactly three or four elements: start line, start column, + // end line (optional, otherwise assumed same as start line), end column. + // These are packed into a single field for efficiency. Note that line + // and column numbers are zero-based -- typically you will want to add + // 1 to each before displaying to a user. + repeated int32 span = 2 [packed = true]; + + // If this SourceCodeInfo represents a complete declaration, these are any + // comments appearing before and after the declaration which appear to be + // attached to the declaration. + // + // A series of line comments appearing on consecutive lines, with no other + // tokens appearing on those lines, will be treated as a single comment. + // + // leading_detached_comments will keep paragraphs of comments that appear + // before (but not connected to) the current element. Each paragraph, + // separated by empty lines, will be one comment element in the repeated + // field. + // + // Only the comment content is provided; comment markers (e.g. //) are + // stripped out. For block comments, leading whitespace and an asterisk + // will be stripped from the beginning of each line other than the first. + // Newlines are included in the output. + // + // Examples: + // + // optional int32 foo = 1; // Comment attached to foo. + // // Comment attached to bar. + // optional int32 bar = 2; + // + // optional string baz = 3; + // // Comment attached to baz. + // // Another line attached to baz. + // + // // Comment attached to qux. + // // + // // Another line attached to qux. + // optional double qux = 4; + // + // // Detached comment for corge. This is not leading or trailing comments + // // to qux or corge because there are blank lines separating it from + // // both. + // + // // Detached comment for corge paragraph 2. + // + // optional string corge = 5; + // /* Block comment attached + // * to corge. Leading asterisks + // * will be removed. */ + // /* Block comment attached to + // * grault. */ + // optional int32 grault = 6; + // + // // ignored detached comments. + optional string leading_comments = 3; + optional string trailing_comments = 4; + repeated string leading_detached_comments = 6; + } +} + +// Describes the relationship between generated code and its original source +// file. A GeneratedCodeInfo message is associated with only one generated +// source file, but may contain references to different source .proto files. +message GeneratedCodeInfo { + // An Annotation connects some span of text in generated code to an element + // of its generating .proto file. + repeated Annotation annotation = 1; + message Annotation { + // Identifies the element in the original source .proto file. This field + // is formatted the same as SourceCodeInfo.Location.path. + repeated int32 path = 1 [packed = true]; + + // Identifies the filesystem path to the original source .proto. + optional string source_file = 2; + + // Identifies the starting offset in bytes in the generated code + // that relates to the identified object. + optional int32 begin = 3; + + // Identifies the ending offset in bytes in the generated code that + // relates to the identified offset. The end offset should be one past + // the last relevant byte (so the length of the text = end - begin). + optional int32 end = 4; + } +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_barocal.proto b/proprietary/vendor/etc/sensors/proto/mot_barocal.proto new file mode 100644 index 0000000..8aca37c --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_barocal.proto @@ -0,0 +1,37 @@ +// @file mot_barocal.proto +// +// Defines message types for Motorola's barometer calibration +// +// Copyright (c) 2020 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_barocal" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - MOT_BAROCAL_MSGID_MOT_BAROCAL_REQ is used to enable the sensor + +// Message IDs for Mot Barocal +enum mot_barocal_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_BAROCAL_MSGID_MOT_BAROCAL_REQ = 998; +} + +message mot_barocal_req +{ + // Reference pressure + required float reference = 1; +} + +// Stream events: +// +// Emits one sns_cal_event on completion +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_camgest.proto b/proprietary/vendor/etc/sensors/proto/mot_camgest.proto new file mode 100644 index 0000000..8055f48 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_camgest.proto @@ -0,0 +1,50 @@ +// @file mot_camgest.proto +// +// Defines message types for the Motorola Camera Gesture Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_camgest detects the twist gesture to trigger the camera +// This is actually a special trigger sensor, but it is treated as +// on-change in SEE. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_camgest" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_camgest_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_CAMGEST_MSGID_MOT_CAMGEST_EVENT = 772; +} + +enum mot_camgest_y_orient { + option (nanopb_enumopt).long_names = false; + MOT_CAMGEST_Y_ORIENT_UNKNOWN = 0; + MOT_CAMGEST_Y_ORIENT_DOWN = 1; + MOT_CAMGEST_Y_ORIENT_FLAT = 2; + MOT_CAMGEST_Y_ORIENT_UP = 3; +} + +message mot_camgest_event +{ + // Event output + required uint32 duration_ms = 1; + optional mot_camgest_y_orient y_orient = 2; +} + +// Stream events: +// +// The mot_camgest_event message is used to publish updated state +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_chopchop.proto b/proprietary/vendor/etc/sensors/proto/mot_chopchop.proto new file mode 100644 index 0000000..7aba87a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_chopchop.proto @@ -0,0 +1,44 @@ +// @file mot_chopchop.proto +// +// Defines message types for the Motorola ChopChop Gesture Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_chopchop detects the double chop gesture to trigger the torch +// This is actually a special trigger sensor, but it is treated as +// on-change in SEE. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_chopchop" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_chopchop_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_CHOPCHOP_MSGID_MOT_CHOPCHOP_EVENT = 772; +} + +message mot_chopchop_event +{ + // Event output + required uint32 abort_count = 1; + required float peak1 = 2; + required float peak2 = 3; +} + +// Stream events: +// +// The mot_chopchop_event message is used to publish updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_devorient.proto b/proprietary/vendor/etc/sensors/proto/mot_devorient.proto new file mode 100644 index 0000000..0f4b1f5 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_devorient.proto @@ -0,0 +1,106 @@ +// @file mot_devorient.proto +// +// Defines the API for Motorola DevOrient algorithm. +// +// Copyright (c) 2017, Motorola. +// All rights reserved. +// Confidential and Proprietary - Motorola, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Attribute requirements: +// The DevOrient algorithm publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value is "mot_devorient_core", +// "mot_disprot", "mot_flatup", or "mot_flatdown". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS is 1.0 +// 3. SNS_STD_SENSOR_ATTRID_RANGES are 0 to 16 or 0 to 2. These are enum +// values that correspond to mot_devorient_flat_state and +// mot_devorient_disp_state. +// 4. SNS_STD_SENSOR_ATTRID_RATES is 1.0 +// 5. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The DevOrient algorithm supports on-change mode +// 2. The DevOrient algorithm handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG request for +// all stream enable/update requests. +// 3. The Sensor reports an initial sample for each request, +// followed by samples for each transition. + +// Message IDs for Motorola DevOrient Sensor +enum mot_devorient_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: mot_devorient_core_event + MOT_DEVORIENT_MSGID_MOT_DEVORIENT_CORE_EVENT = 456; + + // Uses message: mot_devorient_disprot_event + MOT_DEVORIENT_MSGID_MOT_DEVORIENT_DISPROT_EVENT = 457; + + // Uses message: mot_devorient_flatup_event + MOT_DEVORIENT_MSGID_MOT_DEVORIENT_FLATUP_EVENT = 458; + + // Uses message: mot_devorient_flatdown_event + MOT_DEVORIENT_MSGID_MOT_DEVORIENT_FLATDOWN_EVENT = 459; +} + +enum mot_devorient_flat_state { + option (nanopb_enumopt).long_names = false; + + // These values selected to match values used in DSP register + MOT_DEVORIENT_FLAT_UNKNOWN = 0; + MOT_DEVORIENT_FLAT_UP = 1; + MOT_DEVORIENT_FLAT_DOWN = 2; +} + +enum mot_devorient_disp_state { + option (nanopb_enumopt).long_names = false; + + MOT_DEVORIENT_DISP_PORTRAIT = 0; + MOT_DEVORIENT_DISP_CCW_LANDSCAPE = 1; + MOT_DEVORIENT_DISP_PORTRAIT_INV = 2; + MOT_DEVORIENT_DISP_CW_LANDSCAPE = 3; + MOT_DEVORIENT_DISP_UNKNOWN = 16; +} + +// Events types for DevOrient Sensor +message mot_devorient_core_event +{ + required mot_devorient_disp_state disp_state = 1 [default = MOT_DEVORIENT_DISP_UNKNOWN]; + required mot_devorient_flat_state flat_state = 2 [default = MOT_DEVORIENT_FLAT_UNKNOWN]; + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message mot_devorient_disprot_event +{ + required mot_devorient_disp_state disp_state = 1 [default = MOT_DEVORIENT_DISP_UNKNOWN]; + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message mot_devorient_flatup_event +{ + required bool flatup = 1 [default = false]; + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message mot_devorient_flatdown_event +{ + required bool flatdown = 1 [default = false]; + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Handling stream events: +// 1. The DevOrient algorithm publishes events +// using mot_devorient_core_event, mot_devorient_disprot_event, +// mot_devorient_flatup_event, and mot_devorient_flatdown_event messages. +// 2. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 3. DevOrient algorithm does not publish configuration events. + +// Handling self-test requests: +// Not supported + +// Handling test events: +// Not Supported diff --git a/proprietary/vendor/etc/sensors/proto/mot_dsp_usound.proto b/proprietary/vendor/etc/sensors/proto/mot_dsp_usound.proto new file mode 100644 index 0000000..1df4e33 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_dsp_usound.proto @@ -0,0 +1,37 @@ +// @file mot_dsp_usound.proto +// +// Defines message types for the Motorola DSP Ultrasound (approach) Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_dsp_usound detects the approach of the user via ultrasound. +// This is actually a special trigger sensor, but it is treated as +// on-change in SEE. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_dsp_usound" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_dsp_usound_msgid { + option (nanopb_enumopt).long_names = false; + + // This message has no payload + MOT_DSP_USOUND_MSGID_MOT_DSP_USOUND_APPROACH_EVENT = 772; +} + +// Stream events: +// +// The mot_dsp_usound_event message indicates a detected event +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_flip.proto b/proprietary/vendor/etc/sensors/proto/mot_flip.proto new file mode 100644 index 0000000..4631f18 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_flip.proto @@ -0,0 +1,54 @@ +// @file mot_flip.proto +// +// Defines message types for the Motorola Flip State Sensor. +// +// Copyright (c) 2018 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_flip detects the current state of the devices flip from an inductive sensor. +// This is an on-change sensor. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_flip" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_flip_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_FLIP_MSGID_MOT_FLIP_EVENT = 772; +} + +enum mot_flip_state { + option (nanopb_enumopt).long_names = false; + + MOT_FLIP_STATE_UNKNOWN = 0; + MOT_FLIP_STATE_OPEN = 1; + MOT_FLIP_STATE_CLOSED = 2; +} + +message mot_flip_event +{ + // Event output + required mot_flip_state flip_state = 1 [default = MOT_FLIP_STATE_UNKNOWN]; + + // Running count of open/closed events since registration at boot + optional uint32 event_count = 2 [default = 0]; + + // Integer representing the cause of the new event (see the driver for the enum) + optional int32 cause = 3 [default = 0]; +} + +// Stream events: +// +// The mot_flip_event message is used to publish updated state +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_ftm.proto b/proprietary/vendor/etc/sensors/proto/mot_ftm.proto new file mode 100644 index 0000000..6d7a917 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_ftm.proto @@ -0,0 +1,51 @@ +// @file mot_ftm.proto +// +// Defines message types for the Motorola Flip-To-Mute Algorithm. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot Flip-To-Mute +// Mutes notifications when the phone is motionless, flat down & stowed + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_ftm" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Mot FTM Algorithm +enum mot_ftm_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: mot_ftm_event + MOT_FTM_MSGID_MOT_FTM_EVENT = 927; +} + +enum mot_ftm_mute_state +{ + option (nanopb_enumopt).long_names = false; + + MOT_FTM_STATE_UNMUTED = 0; + MOT_FTM_STATE_MUTED = 1; + MOT_FTM_STATE_UNKNOWN = 2; +} + +message mot_ftm_event +{ + // Mot FTM state + required mot_ftm_mute_state state = 1 [default = MOT_FTM_STATE_UNKNOWN]; +} + +// Stream events: +// +// The mot_ftm_event message is used to publish the updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_glance.proto b/proprietary/vendor/etc/sensors/proto/mot_glance.proto new file mode 100644 index 0000000..40acc38 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_glance.proto @@ -0,0 +1,61 @@ +// @file mot_glance.proto +// +// Defines standard message types for the Mot_Glance +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; + +// Mot_Glance Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_glance" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Sensor output event: +// Mot_Glance use mot_glance_event for it's output event + +enum mot_glance_msgid +{ + option (nanopb_enumopt).long_names = false; + + // From client, name is string matched to "mot_glance_config" msg below + MOT_GLANCE_MSGID_MOT_GLANCE_CONFIG = 512; + + // From Algo, name is string matched to "mot_glance_event" msg below + MOT_GLANCE_MSGID_MOT_GLANCE_EVENT = 772; +} + +enum mot_glance_event_type +{ + option (nanopb_enumopt).long_names = false; + + MOT_GLANCE_EVENT_TYPE_UNKNOWN = 0x00; + MOT_GLANCE_EVENT_TYPE_EXIT_STOWED = 0x01; + MOT_GLANCE_EVENT_TYPE_EXIT_FLATUP = 0x02; + MOT_GLANCE_EVENT_TYPE_EXIT_FLATDOWN = 0x04; + MOT_GLANCE_EVENT_TYPE_IR_GESTURE = 0x08; + MOT_GLANCE_EVENT_TYPE_MOVEMENT_GESTURE = 0x10; + MOT_GLANCE_EVENT_TYPE_USOUND_GESTURE = 0x20; + MOT_GLANCE_EVENT_TYPE_USOUND_ON_REQ = 0x40; + MOT_GLANCE_EVENT_TYPE_USOUND_OFF_REQ = 0x80; +} + +message mot_glance_event +{ + // The state which generated the glance event + required mot_glance_event_type state = 1 [default = MOT_GLANCE_EVENT_TYPE_UNKNOWN]; +} + +// Configuration Message +// Used to either request for a new configuration of the Mot_Glance Sensor or +// alter an already existing configuration +message mot_glance_config +{ + // Bitmask of mot_glance_event_type(s) indicating which gestures are monitored for this request + required uint32 gestures_enabled = 1 [default = 0]; + +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_log.proto b/proprietary/vendor/etc/sensors/proto/mot_log.proto new file mode 100644 index 0000000..55ac8a3 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_log.proto @@ -0,0 +1,46 @@ +// @file mot_log.proto +// +// Defines message types for the Motorola Logging Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; + +// Mot mechanism for slpi code to send log messages through a logging sensor +// and QMI up to the standard Android logging mechanism + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_log" + +// Message IDs for Mot Log Sensor +enum mot_log_msgid { + option (nanopb_enumopt).long_names = false; + + // MSGID for sensors to send events to the mot_log sensor + MOT_LOG_MSGID_MOT_LOG_EVENT = 470; +} + +// Verb levels (same as sensors_log.h) +enum mot_log_verb { + option (nanopb_enumopt).long_names = false; + + MOT_LOG_VERB_E = 1; + MOT_LOG_VERB_I = 2; + MOT_LOG_VERB_D = 3; + MOT_LOG_VERB_V = 4; +} + +message mot_log_event +{ + // Verbosity + required mot_log_verb verb = 1 [default = MOT_LOG_VERB_V]; + + // Message + required string msg = 2; + + // Optional log tag (truncated to 15 chars) + optional string tag = 3; +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_lts.proto b/proprietary/vendor/etc/sensors/proto/mot_lts.proto new file mode 100644 index 0000000..d73ef49 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_lts.proto @@ -0,0 +1,40 @@ +// @file mot_lts.proto +// +// Defines message types for the Motorola Flip-To-Mute Algorithm. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot Lift-To-Silence +// Mute the ringer when device exits flat & unstowed while device is ringing + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_lts" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Mot LTS Algorithm +enum mot_lts_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: mot_lts_event + MOT_LTS_MSGID_MOT_LTS_EVENT = 666; +} + +message mot_lts_event +{ + // Message is empty; we just need to notify that an LTS happened. +} + +// Stream events: +// +// The mot_lts_event message is used to publish the updated state +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_ltv.proto b/proprietary/vendor/etc/sensors/proto/mot_ltv.proto new file mode 100644 index 0000000..32db33f --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_ltv.proto @@ -0,0 +1,52 @@ +// @file mot_ltv.proto +// +// Defines message types for the Motorola Lift to View Gesture Sensor. +// +// Copyright (c) 2017-2018 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_ltv detects the that the device was lifted into a viewing position +// This is actually a special trigger sensor, but it is treated as +// on-change in SEE. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_ltv" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_ltv_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_LTV_MSGID_MOT_LTV_EVENT = 772; +} + +enum mot_ltv_trig_type +{ + option (nanopb_enumopt).long_names = false; + MOT_LTV_TRIG_TYPE_NONE = 0; + MOT_LTV_TRIG_TYPE_LIFTED = 1; + MOT_LTV_TRIG_TYPE_RECALL = 2; +} + +message mot_ltv_event +{ + // Event output + required mot_ltv_trig_type trig_type = 1; // trigger type + required uint32 confidence = 2; // 0-100 percentage confidence of trigger + required uint32 landing_delta_ms = 3; // time diff of events in landing window +} + +// Stream events: +// +// The mot_ltv_event message is used to publish updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_movement.proto b/proprietary/vendor/etc/sensors/proto/mot_movement.proto new file mode 100644 index 0000000..7ec17f8 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_movement.proto @@ -0,0 +1,82 @@ +// @file mot_movement.proto +// +// Defines standard message types for the Mot_Movement +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; + +// Mot_Movement Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_movement" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Sensor output event: +// Mot_Movement use mot_movement_event for it's output event + +enum mot_movement_msgid +{ + option (nanopb_enumopt).long_names = false; + + // From client, name is string matched to "mot_movement_config" msg below + MOT_MOVEMENT_MSGID_MOT_MOVEMENT_CONFIG = 512; + + // From Algo, name is string matched to "mot_movement_event" msg below + MOT_MOVEMENT_MSGID_MOT_MOVEMENT_EVENT = 772; +} + +enum mot_movement_event_type +{ + option (nanopb_enumopt).long_names = false; + + // These values selected to match values used in DSP register + MOT_MOVEMENT_EVENT_TYPE_UNKNOWN = 0; + MOT_MOVEMENT_EVENT_TYPE_MOTION = 1; + MOT_MOVEMENT_EVENT_TYPE_STATIONARY = 2; +} + +message mot_movement_event +{ + // motion state + required mot_movement_event_type state = 1 [default = MOT_MOVEMENT_EVENT_TYPE_UNKNOWN]; +} + +// Configuration Message +// Used to either request for a new configuration of the Mot_Movement Sensor or +// alter an already existing configuration +message mot_movement_config +{ + /**< standard deviation threshold for motion, 9.8 m/s2 (1G) = 1024 */ + required float threshold = 1; + + /**< Continuous motion duration before event triggers. In s. */ + required uint32 startTime = 2; + + /**< Continuous non-motion duration before event triggers. In s. */ + required uint32 stopTime = 3; + + /**< A ratio (alpha coefficient) to apply when calculating the + * standard deviation running average. Must be a positive value in + * the (0, 1) interval. + * + * When motion is increasing, the average is adjusted as: + * runAvg = ratio * current + (1 - ratio) * runAvg + * When motion is decreasing, the average is adjusted as: + * runAvg = ratio * runAvg + (1 - ratio) * current + * + * When this optional field is not provided, the algorithm will not + * compute any running average. + */ + optional float runAvgRatio = 4; + + /**< The running average is capped at this value so that when there + * is extensive motion it doesn't take a long time to settle back + * down. This value is ignored if the runAvgRatio is not set. + */ + optional float runAvgCap = 5; + +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_offbody.proto b/proprietary/vendor/etc/sensors/proto/mot_offbody.proto new file mode 100644 index 0000000..89a8b6b --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_offbody.proto @@ -0,0 +1,55 @@ +// @file mot_offbody.proto +// +// Defines message types for the Motorola Off Body Sensor. +// +// Copyright (c) 2018 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_offbody monitors accelerometer variance. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_offbody" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_offbody_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_OFFBODY_MSGID_MOT_OFFBODY_EVENT = 783; +} + +enum mot_offbody_trig_type +{ + option (nanopb_enumopt).long_names = false; + MOT_OFFBODY_TRIG_TYPE_UNKNOWN = 0; + MOT_OFFBODY_TRIG_TYPE_ON_BODY = 1; + MOT_OFFBODY_TRIG_TYPE_OFF_BODY = 2; +} + +message mot_offbody_event +{ + // Event output + + // Trigger type + required mot_offbody_trig_type trig_type = 1; + + // Device angle at time of trigger (state change) + // The range is 0 degrees to 180 degrees + // 0 = Flat up, 180 = flat down + required float theta = 2; +} + +// Stream events: +// +// The mot_offbody_event message is used to publish updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/mot_probe.proto b/proprietary/vendor/etc/sensors/proto/mot_probe.proto new file mode 100644 index 0000000..1b0ef40 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_probe.proto @@ -0,0 +1,62 @@ +// @file mot_probe.proto +// +// Defines message types for the Motorola's HW probing utilities +// +// Copyright (c) 2019 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; + +// mot_probe defines request and response types to be used by drivers so that +// users can probe sensor registers from the command line using sns_mot_client + +// Message IDs +enum mot_probe_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_PROBE_MSGID_MOT_PROBE_REQ = 778; + MOT_PROBE_MSGID_MOT_PROBE_RESP = 779; +} + +enum mot_probe_constants { + option (nanopb_enumopt).long_names = false; + + MOT_PROBE_MAX_RD_SIZE = 64; +} + +message mot_probe_req +{ + // Are we requesting a register read or write? + required bool is_read = 1 [default = true]; + + // What's the address of the register we want to read? + required uint32 reg_addr = 2; + + // What's the SUID of the sensor we're probing? + required uint64 suid_high = 3; + required uint64 suid_low = 4; + + // If this is a write: What value should we write? + optional uint32 wr_value = 5; + + // If the driver controls multiple physical sensors, we need to disambiguate + // which sensor we want. + // i2c: give the device's i2c address + // spi: give the device's chip select value + optional uint32 devaddr = 6; + + // How many registers should I read (starting at reg_addr)? + // Default is 1 + optional uint32 rd_size = 7; +} + +message mot_probe_resp +{ + // Did it work? + required bool success = 1; + + // If we're responding to a read, what did we get? + optional uint32 rd_value = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/mot_proxcal.proto b/proprietary/vendor/etc/sensors/proto/mot_proxcal.proto new file mode 100644 index 0000000..35152a2 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_proxcal.proto @@ -0,0 +1,47 @@ +// @file mot_proxcal.proto +// +// Defines message types for the Motorola Proximity Sensor Recalibration Algorithm. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot Proximity Sensor Recalibration +// Sends a recalibrate request to the Proximity Sensor driver when it is +// requested by the AP or favorable conditions are detected + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_proxcal" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor +// - MOT_PROXCAL_MSGID_MOT_PROXCAL_CONFIG is used by the AP to trigger a +// recalibration (for In-Call Forced Proximity Recalibration AKA "Double Pump") +// - MOT_PROXCAL_MSGID_MOT_PROXCAL_UNLOCK_CONFIG is used by the AP to trigger a +// recalibration, but only if the device is in portrait mode (for Screen +// Unlock Proximity Recalibration) + +// Message IDs for Mot ProxCal Algorithm +enum mot_proxcal_msgid { + option (nanopb_enumopt).long_names = false; + + // From AP, no payload + MOT_PROXCAL_MSGID_MOT_PROXCAL_CONFIG = 693; + + // From AP, no payload + MOT_PROXCAL_MSGID_MOT_PROXCAL_UNLOCK_CONFIG = 694; +} + +// Stream events: +// +// Sends SNS_PROXIMITY_MSGID_SNS_PROXIMITY_RECAL_CONFIG messages to the prox +// driver (as defined in sns_proximity.proto) +// +// This sensor does not publish configuration events. +// +// This sensor does not support test events \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/proto/mot_stowed.proto b/proprietary/vendor/etc/sensors/proto/mot_stowed.proto new file mode 100644 index 0000000..e14a07f --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_stowed.proto @@ -0,0 +1,55 @@ +// @file mot_stowed.proto +// +// Defines message types for the Motorola Stowed Sensor. +// +// Copyright (c) 2017 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot Stowed monitors light and proximity events among possible other inputs +// and estimates if the device is in-pocket, purse etc, aka stowed. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_stowed" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Mot Stowed Sensor +enum mot_stowed_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_STOWED_MSGID_MOT_STOWED_FORCE_PROX_ON_REQ = 767; + + MOT_STOWED_MSGID_MOT_STOWED_EVENT = 772; + + // sent after being stowed for a period of time + MOT_STOWED_MSGID_MOT_DEL_STOWED_EVENT = 773; +} + +enum mot_stowed_event_type +{ + option (nanopb_enumopt).long_names = false; + + // These values selected to match values used in DSP register + MOT_STOWED_EVENT_TYPE_NOT_STOWED = 0; + MOT_STOWED_EVENT_TYPE_STOWED = 1; + MOT_STOWED_EVENT_TYPE_UNKNOWN = 3; +} + +message mot_stowed_event +{ + // Mot Stowed state + required mot_stowed_event_type state = 1 [default = MOT_STOWED_EVENT_TYPE_NOT_STOWED]; +} + +// Stream events: +// +// The mot_stowed_event message is used to publish the updated state +// +// This sensor does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/mot_vsync.proto b/proprietary/vendor/etc/sensors/proto/mot_vsync.proto new file mode 100644 index 0000000..847d304 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/mot_vsync.proto @@ -0,0 +1,52 @@ +// @file mot_vsync.proto +// +// Defines message types for the Motorola Vsync State Sensor. +// +// Copyright (c) 2019 Motorola Mobility +// All Rights Reserved. +// Confidential and Proprietary - Motorola Mobility + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Mot_vsync detects the panel vsync and generates a delayed gpio output along with panel status. +// This is an on-change sensor. + +// Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "mot_vsync" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs +enum mot_vsync_msgid { + option (nanopb_enumopt).long_names = false; + + MOT_VSYNC_MSGID_MOT_VSYNC_EVENT = 772; +} + +enum mot_vsync_state { + option (nanopb_enumopt).long_names = false; + + MOT_VSYNC_STATE_PANEL_UNKNOWN = 0; + MOT_VSYNC_STATE_PANEL_ON = 1; + MOT_VSYNC_STATE_PANEL_OFF = 2; +} + +message mot_vsync_event +{ + // Event output + required mot_vsync_state vsync_state = 1 [default = MOT_VSYNC_STATE_PANEL_UNKNOWN]; + + // Panel frequency detected by driver + required uint32 det_freq_hz = 2 [default = 0]; +} + +// Stream events: +// +// The mot_vsync_event message is used to publish updated state +// +// This sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/nanopb.proto b/proprietary/vendor/etc/sensors/proto/nanopb.proto new file mode 100644 index 0000000..9b2f0fb --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/nanopb.proto @@ -0,0 +1,97 @@ +// Custom options for defining: +// - Maximum size of string/bytes +// - Maximum number of elements in array +// +// These are used by nanopb to generate statically allocable structures +// for memory-limited environments. + +syntax = "proto2"; +import "google/protobuf/descriptor.proto"; + +option java_package = "fi.kapsi.koti.jpa.nanopb"; + +enum FieldType { + FT_DEFAULT = 0; // Automatically decide field type, generate static field if possible. + FT_CALLBACK = 1; // Always generate a callback field. + FT_POINTER = 4; // Always generate a dynamically allocated field. + FT_STATIC = 2; // Generate a static field or raise an exception if not possible. + FT_IGNORE = 3; // Ignore the field completely. +} + +enum IntSize { + IS_DEFAULT = 0; // Default, 32/64bit based on type in .proto + IS_8 = 8; + IS_16 = 16; + IS_32 = 32; + IS_64 = 64; +} + +// This is the inner options message, which basically defines options for +// a field. When it is used in message or file scope, it applies to all +// fields. +message NanoPBOptions { + // Allocated size for 'bytes' and 'string' fields. + optional int32 max_size = 1; + + // Allocated number of entries in arrays ('repeated' fields) + optional int32 max_count = 2; + + // Size of integer fields. Can save some memory if you don't need + // full 32 bits for the value. + optional IntSize int_size = 7 [default = IS_DEFAULT]; + + // Force type of field (callback or static allocation) + optional FieldType type = 3 [default = FT_DEFAULT]; + + // Use long names for enums, i.e. EnumName_EnumValue. + optional bool long_names = 4 [default = true]; + + // Add 'packed' attribute to generated structs. + // Note: this cannot be used on CPUs that break on unaligned + // accesses to variables. + optional bool packed_struct = 5 [default = false]; + + // Add 'packed' attribute to generated enums. + optional bool packed_enum = 10 [default = false]; + + // Skip this message + optional bool skip_message = 6 [default = false]; + + // Generate oneof fields as normal optional fields instead of union. + optional bool no_unions = 8 [default = false]; + + // integer type tag for a message + optional uint32 msgid = 9; + + // decode oneof as anonymous union + optional bool anonymous_oneof = 11 [default = false]; +} + +// Extensions to protoc 'Descriptor' type in order to define options +// inside a .proto file. +// +// Protocol Buffers extension number registry +// -------------------------------- +// Project: Nanopb +// Contact: Petteri Aimonen +// Web site: http://kapsi.fi/~jpa/nanopb +// Extensions: 1010 (all types) +// -------------------------------- + +extend google.protobuf.FileOptions { + optional NanoPBOptions nanopb_fileopt = 1010; +} + +extend google.protobuf.MessageOptions { + optional NanoPBOptions nanopb_msgopt = 1010; +} + +extend google.protobuf.EnumOptions { + optional NanoPBOptions nanopb_enumopt = 1010; +} + +extend google.protobuf.FieldOptions { + optional NanoPBOptions nanopb = 1010; +} + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_accel.proto b/proprietary/vendor/etc/sensors/proto/sns_accel.proto new file mode 100644 index 0000000..5255029 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_accel.proto @@ -0,0 +1,103 @@ +// @file sns_accel.proto +// +// Defines the API for Accelerometer Sensors. +// All Accelerometer Sensor drivers are required to comply with this API. +// Any new functionality for Accelerometer Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_std_event_gated_sensor.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Accelerometer Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "accel". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute values in (m/s2)/LSB unit. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in +/-m/s2 unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Accelerometer Sensor handles the sns_std_sensor_config +// message request with msgid SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG +// for all non-gated stream enable/update requests. +// 2. The Accelerometer Sensor handles the sns_std_sensor_config +// message request with msgid SNS_STD_EVENT_GATED_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG +// for all gated stream enable/update requests. +// a. Accelerometer stream is gated on the motion detection feature +// available on most accel hardware. This feature is published via the +// "motion_detect" Sensor by the same driver library as "accel" Sensor. +// b. If "motion_detect" is not supported then the Sensor does not support +// stream gating. Any gated client request is rejected in this case. +// 3. The Accelerometer Sensor uses batching_period item in +// sns_std_request as the requested batching rate to determine +// hardware FIFO watermark. + +// Handling stream events: +// 1. The Accelerometer Sensor publishes acceleration data stream events +// using the sns_std_sensor_event message. +// 2. Each stream event contains three output data fields where data is +// in m/s2 units and is factory calibrated. +// 3. Data in the stream is adjusted to Android coordinate system relative to a +// mobile device held with screen facing the user in it's natural orientation: +// X-axis: parallel to the screen pointing to the right +// Y-axis: parallel to the screen pointing to the top +// Z-axis: perpendicular to the screen pointing towards the user +// This conforms to the mobile device axes orientation as specified by the +// Android Sensor API. +// 4. Data in the stream event is ordered as: +// data[0] = X-axis +// data[1] = Y-axis +// data[2] = Z-axis +// 5. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 6. The Accelerometer Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 7. The Accelerometer Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and comp_matrix fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. +// 8. When all outstanding requests to the Sensor are gated requests and if the +// "motion_detect" Sensor is enabled then the accel Sensor stops generating +// output events. +// a. When motion detect interrupt fires: +// - All existing accel gated stream requests are converted to non-gated +// stream requests. +// The accel Sensor publishes an event with message ID +// SNS_STD_EVENT_GATED_SENSOR_MSGID_GATED_REQ_CONVERTED_TO_NON_GATED to +// to indicate this change to it's gated clients. +// - The accel Sensor resumes generating output to all clients. +// So in effect motion_detect Sensor and accel gated Sensor stream have +// a one shot behavior. +// b. The Sensor resumes generating output events if motion detect interrupt +// is disabled potentially due to a new non-gated accel stream request or +// the request to motion_detect Sensor is disabled. +// 9. When all outstanding requests to the Sensor are gated requests but if +// "motion_detect" Sensor is not enabled then the Sensor continues to generate +// output events. + +// Handling self-test requests: +// 1. The Accelerometer Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Accelerometer Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Accelerometer Sensor could implement other test types. + +// Handling test events: +// 1. The Accelerometer Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_accel_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_accel_cal.proto new file mode 100644 index 0000000..4f7b806 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_accel_cal.proto @@ -0,0 +1,32 @@ +// @file sns_accel_cal.proto +// +// Defines message types for the Accel Calibration Sensor. +// +// Copyright (c) 2017, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_cal.proto"; + +// The Accel Calibration Sensor determines the calibration parameters +// for accel sensor + +// Accel Calibration Sensor Attributes: +// - SNS_STD_SENSOR_ATTRID_TYPE: "accel_cal" +// - SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG message ID is used to +// enable the sensor +// - SNS_CAL_MSGID_SNS_CAL_RESET message ID is used to reset the algorithm +// and any previously determined calibration parameters. + +// Stream Events: +// - SNS_CAL_MSGID_SNS_CAL_EVENT message ID is used to report calibration +// parameters to the client of the sensor. The sns_cal_event message as +// defined in sns_cal.proto is used to report this data event where the +// units for the bias field in the message are in m / s ^2 + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_activity_recognition.proto b/proprietary/vendor/etc/sensors/proto/sns_activity_recognition.proto new file mode 100644 index 0000000..63e1a02 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_activity_recognition.proto @@ -0,0 +1,69 @@ +// @file sns_activity_recognition.proto +// +// Defines message types for the Activity Recognition (AR) Sensor. +// +// Copyright (c) 2019-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Acitivity Recognition Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "activity_recognition" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Acitivity Recognition Sensor +enum sns_activity_recognition_msgid { + option (nanopb_enumopt).long_names = false; + + // The sns_ar_event message is used to publish updated state. A new event + // will be generated upon any state change. + SNS_ACTIVITY_RECOGNITION_MSGID_SNS_AR_EVENT = 800; + // Configuration event generated at least once in response to enable request + SNS_ACTIVITY_RECOGNITION_MSGID_SNS_AR_CONFIG_EVENT = 801; +} + +// User activity states +enum sns_ar_motion_state +{ + option (nanopb_enumopt).long_names = false; + + // UNKNOWN is reported when the algorithm is unable to detect the current + // activity state. + SNS_AR_UNKNOWN = 0; + // User is relatively stationary. + SNS_AR_STATIONARY = 1; + // User is classified as a pedestrian + SNS_AR_PED = 2; + // User is in a non-motorized vehicle + SNS_AR_NMV = 3; + // User is in a motorized vehicle. + SNS_AR_MV = 4; + // User is walking + SNS_AR_WALK = 5; + // User is running + SNS_AR_RUN = 6; + // User is on a bicycle + SNS_AR_BICYCLE = 7; + // User is in a car + SNS_AR_CAR = 8; +} + +message sns_ar_config_event +{ + // List of supported motion states + repeated sns_ar_motion_state states = 1; +} + +message sns_ar_event +{ + // List of active states for this user + // Multiple states may be reported concurrently + // Any states not listed here are presumed to be inactive + repeated sns_ar_motion_state states = 1 [(nanopb).max_count = 4]; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_ambient_light.proto b/proprietary/vendor/etc/sensors/proto/sns_ambient_light.proto new file mode 100644 index 0000000..09cceff --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ambient_light.proto @@ -0,0 +1,73 @@ +// @file sns_ambient_light.proto +// +// Defines the API for Ambient Light Sensors. +// All Ambient Light Sensor drivers are required to comply with this API. +// Any new functionality for Ambient Light Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Ambient Light Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "ambient_light". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in Lux/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in Lux unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Ambient Light Sensor supports both streaming and on-change +// modes and the operating mode is configured in the Registry. +// 2. The streaming Ambient Light Sensor handles the sns_std_sensor_config +// request for all stream enable/update requests. +// 3. The on-change Ambient Light Sensor handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG request for +// all stream enable/update requests. +// 4. In on-change mode the Sensor uses interrupt operation and reports +// samples for only significant change in ambient light. +// Example: +/- 10% change. + +// Handling stream events: +// 1. The Ambient Light Sensor publishes current illumination data stream +// events using the sns_std_sensor_event message. +// 2. Each stream event contains two output data fields where data is +// factory calibrated and ordered as: +// data[0] = ambient light in Lux +// data[1] = raw ADC value associated with data[0] +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Ambient Light Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Ambient Light Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new request. + +// Handling self-test requests: +// 1. The Ambient Light Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Ambient Light Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. The factory test for Ambient Light Sensor calibrates +// the sensor such that it's output Lux value is comparable to a standard +// Luxmeter output in any lighting condition. +// 3. The Ambient Light Sensor could implement other test types. + +// Handling test events: +// 1. The Ambient Light Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_ambient_temperature.proto b/proprietary/vendor/etc/sensors/proto/sns_ambient_temperature.proto new file mode 100644 index 0000000..69726b9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ambient_temperature.proto @@ -0,0 +1,68 @@ +// @file sns_ambient_temperature.proto +// +// Defines the API for Ambient Temperature Sensors. +// All Ambient Temperature Sensor drivers are required to comply with this API. +// Any new functionality for Ambient Temperature Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Ambient Temperature Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "ambient_temperature". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in degrees Celsius/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in degrees Celsius unit. +// 4. The ambient_temperature sensor is an on-change sensor. +// 5. The SNS_STD_SENSOR_ATTRID_RATES attribute is not applicable +// since this is an on-change sensor. +// 6. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Ambient Temperature Sensor handles the SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// message ID for all stream enable/update requests. +// 2. If the physical sensor supports hardware FIFO then the Ambient Temperature +// Sensor uses batching_period item in sns_std_request as the requested +// batching rate to determine hardware FIFO watermark. + +// Handling stream events: +// 1. The Ambient Temperature Sensor publishes data stream events using the +// sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = Ambient Temperature data in degrees Celsius +// 3. Each stream event publishs an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Ambient Temperature Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Ambient Temperature Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Ambient Temperature Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Ambient Temperature Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Ambient Temperature Sensor could implement other test types. + +// Handling test events: +// 1. The Ambient Temperature Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_amd.proto b/proprietary/vendor/etc/sensors/proto/sns_amd.proto new file mode 100644 index 0000000..8583b82 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_amd.proto @@ -0,0 +1,51 @@ + +// @file sns_amd.proto +// +// Defines message types for the Absolute Motion Detector (AMD) Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// AMD calculates motion and stationary states. AMD will initially start in an +// unknown state, and later transition to motion or stationary. + +// AMD Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "amd" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for AMD Sensor +enum sns_amd_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_AMD_MSGID_SNS_AMD_EVENT = 772; +} + +enum sns_amd_event_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_AMD_EVENT_TYPE_UNKNOWN = 0; + SNS_AMD_EVENT_TYPE_STATIONARY = 1; + SNS_AMD_EVENT_TYPE_MOTION = 2; +} + +message sns_amd_event +{ + // AMD motion state + required sns_amd_event_type state = 1 [default = SNS_AMD_EVENT_TYPE_UNKNOWN]; +} + +// Stream events: +// +// The sns_amd_event message is used to publish updated state +// +// AMD does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_aont.proto b/proprietary/vendor/etc/sensors/proto/sns_aont.proto new file mode 100644 index 0000000..de4b136 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_aont.proto @@ -0,0 +1,37 @@ +// @file sns_aont.proto +// +// Defines message types for the AONT(Always On Test) Sensor. +// +// Copyright (c) 2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Always On Test Sensor runs an Always On sensors usecase for stability test coverage + +// Always On Test Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "always_on_test" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Stream Events: +enum sns_aont_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_AONT_MSGID_SNS_AONT_DATA = 1024; +} + +// Data Message +// Output data event generated by the aont sensor. +message sns_aont_data +{ + // AONT output - Accel data along axis x,y,z in m/s2 + repeated float aont = 1 [(nanopb).max_count = 3]; +} + diff --git a/proprietary/vendor/etc/sensors/proto/sns_basic_gestures.proto b/proprietary/vendor/etc/sensors/proto/sns_basic_gestures.proto new file mode 100644 index 0000000..dfec6ba --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_basic_gestures.proto @@ -0,0 +1,101 @@ +// @file sns_basic_gestures.proto +// +// Defines message types for the the basic_gestures sensor +// +// Copyright (c) 2017 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; + +// Basic Gestures algorithm provides the ability to detect a Push, Pull, +// or Shake gesture. +// Basic Gestures reports "Axis Unknown", when the direction of a shake cannot +// be reliably determined. + +// Basic gestures Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "basic_gestures" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_BASIC_GESTURES_MSGID_SNS_BASIC_GESTURES_CONFIG is used to enable the sensor + +// Message IDs for Basic gestures Sensor +enum sns_basic_gestures_msgid +{ + option (nanopb_enumopt).long_names = false; + SNS_BASIC_GESTURES_MSGID_SNS_BASIC_GESTURES_CONFIG = 512; + SNS_BASIC_GESTURES_MSGID_SNS_BASIC_GESTURES_EVENT = 1024; +} +//To mask Basic gesture algorithm output states +enum sns_basic_gestures_event_mask +{ + option (nanopb_enumopt).long_names = false; + // For masking push and pull states + SNS_BASIC_GESTURES_EVENT_MASK_PUSH_AND_PULL = 1; + // For masking shake left and right states + SNS_BASIC_GESTURES_EVENT_MASK_SHAKE_LEFT_AND_RIGHT = 2; + // For masking shake top and bottom states + SNS_BASIC_GESTURES_EVENT_MASK_SHAKE_TOP_AND_BOTTOM = 4; + //For masking shake other state + SNS_BASIC_GESTURES_EVENT_MASK_SHAKE_OTHER = 8; +} +// Device Basic gesture detected by Basic gestures sensor +enum sns_basic_gestures_event_type +{ + option (nanopb_enumopt).long_names = false; + //Phone is pulled away from the user in a direction perpendicular to the screen + SNS_BASIC_GESTURES_EVENT_TYPE_PUSH = 1; + //Phone is pulled toward the user in a direction perpendicular to the screen + SNS_BASIC_GESTURES_EVENT_TYPE_PULL = 2; + //Phone is shaken toward the left + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_LEFT = 3; + //Phone is shaken toward the right + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_RIGHT = 4; + //Phone is shaken toward the top + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_TOP = 5; + //Phone is shaken toward the bottom + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_BOTTOM = 6; + //Phone is shaken, but phone shake direction cannot be clearly determined + SNS_BASIC_GESTURES_EVENT_TYPE_SHAKE_OTHER = 7; +} +// Event Message +// Output data event generated by the basic_gestures sensor. +// Default values of optional fields added in registry +message sns_basic_gestures_config +{ + //Sleep time in seconds + optional float sleep = 1; + //Push threshold m/s/s(default = 1.5G),where G=9.81188 + //min_push_threshold:1G, max_push_threshold:5G + optional float push_threshold = 2; + //Pull threshold m/s/s (default = 1.5G) + //min_pull_threshold:1G, max_pull_threshold:5G + optional float pull_threshold = 3; + //Shake threshold m/s/s(default = 1.5G) + //min_shake_threshold:1G, max_shake_threshold:5G + optional float shake_threshold = 4; + //For masking output events. + //By default, All states reported. + //Client should use sns_basic_gestures_event_mask fields for masking, + //specific events + //Example: If client doesn't want push and pull events,then, + //client updates event_mask with SNS_BASIC_GESTURES_EVENT_MASK_PUSH_AND_PULL + //event_mask |= SNS_BASIC_GESTURES_EVENT_MASK_PUSH_AND_PULL; + optional bytes event_mask = 5; +} + +// Event Message +// Output data event generated by the basic_gestures sensor. +message sns_basic_gestures_event +{ + // basic_gestures sensor state info + required sns_basic_gestures_event_type state=1; +} + +// Stream events: +// +// The sns_basic_gestures_event message is used to publish updated state +// +// Basic_gestures sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_bring_to_ear.proto b/proprietary/vendor/etc/sensors/proto/sns_bring_to_ear.proto new file mode 100644 index 0000000..c610a2b --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_bring_to_ear.proto @@ -0,0 +1,40 @@ +// @file sns_bring_to_ear.proto +// +// Defines message types for the the Bring_To_Ear sensor +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Bring_to_ear sensor detects bring to ear event, +// When a device has been held in a face-up position, +// afterwhich the device is brought to the user's ear, with the top of the device facing upwards. + +// Bring to ear Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "bring_to_ear" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. + +// ## Event Message: SNS_BRING_TO_EAR_MSGID_SNS_BRING_TO_EAR_EVENT +// Reported upon new detection of bring_to_ear event + + +// Message IDs for Bring to ear Sensor +enum sns_bring_to_ear_msgid +{ + option (nanopb_enumopt).long_names = false; + // Empty Message + SNS_BRING_TO_EAR_MSGID_SNS_BRING_TO_EAR_EVENT = 1024; +} + +// Stream events: +// +// The sns_bring_to_ear_event message is used to publish updated state +// +// Bring_to_ear sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_cal.proto new file mode 100644 index 0000000..fe878b0 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_cal.proto @@ -0,0 +1,118 @@ +// @file sns_cal.proto +// +// Defines standard message types pertaining to calibration +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// For dynamic calibration supported by Calibration Sensors: +// Client will use the standard on change config message id to enable +// Calibration Sensor. Calibration algorithms are inherently on change in +// behavior. + +// For both dynamic calibration supported by Calibration Sensors & +// factory calibration supported by Physical Sensors: +// Client can send an empty request with the msg id for reset +// to reset the calibration parameters. +enum sns_cal_msgid +{ + option (nanopb_enumopt).long_names = false; + SNS_CAL_MSGID_SNS_CAL_RESET = 512; + SNS_CAL_MSGID_SNS_CAL_EVENT = 1022; +} + +// Calibration Event +// Used as an output data event by Calibration Sensors to convey +// dynamic calibration estimates and +// as a config event by Physical Sensors to convey factory calibration +// being applied +// +// A) The data field of the sns_cal_event message +// +// 1) float bias[] (Nx1 vector) +// The zero bias (B) correction subtracted to get calibrated sample.(Nx1 vector) +// +// 2) float scale_factor (Nx1 vector) +// The scaling (SF) to be done before doing any bias correction. +// +// 3) float comp_matrix (NxN matrix) +// The compensation matrix (CM). The matrix elements are in row major order ie: +// CM = CM0 CM1 CM2 +// CM3 CM4 CM5 +// CM6 CM7 CM8 +// +// The calibrated sample (Sc) is computed as following. +// +// if SF, B and CM are available, +// +// Sc = CM * ((S .* SF) - B) +// +// if only B and CM are available, +// +// Sc = CM * (S - B) +// +// if only SF and B are available, +// +// Sc = ((S .* SF) - B) +// +// if only SF is available, +// +// Sc = S .* SF +// +// if only B is available, +// +// Sc = (S - B) +// +// if only CM is available +// +// Sc = CM * S +// +// where: +// Sc = Calibrated sensor sample +// S = Sensor sample (Nx1 vector) +// SF = Scaling factor to be applied to S +// CM = compensation_matrix +// B = bias +// "*" represents matrix multiplication +// ".*" represents element-by-element multiplication +// +// +// B) The status field of the sns_std_sensor_event message contains +// the quality of calibration defined by sns_std_sensor_sample_status as +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE = 0; // Sample is unreliable. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_LOW = 1; // Sample is low accuracy. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_MEDIUM = 2;// Sample is medium accuracy. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH = 3; // Sample is high accuracy. + +message sns_cal_event +{ + //Optional bias value + //If no bias is being published this will be of size 0. + //Generic for different axes biases. + //Size is defined by axes value inherently. + repeated float bias = 1; + + //Optional scaling factor + //If no scaling factor is published this will be of size 0. + //Size if published is has to be equal to the axes of the data + repeated float scale_factor = 2; + + //If no CM is being published this will be of size 0. + //Optional CM values . + //Size if published should be equal to matrix of size [axes*axes] + repeated float comp_matrix = 3; + + // Event sample status. + required sns_std_sensor_sample_status status = 4 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; + + // Calibration ID, a unique identifier for the calibration set being used + // As an example, could be set when there are distinct calibration sets for different + // device modes being maintained + optional fixed32 cal_id = 5; +} + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_client.proto b/proprietary/vendor/etc/sensors/proto/sns_client.proto new file mode 100644 index 0000000..22497eb --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_client.proto @@ -0,0 +1,116 @@ +// @file sns_client.proto +// +// Defines the interface between external clients and the Sensors QMI Client +// Manager. The Client Manager is the primary path for external clients +// to communicate with the SSC. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_type.proto"; + +// Message IDs +// +// Message IDs uniquely identify a particular message amongst all message +// supported by a Sensor, both requests and events; they need not be unique +// between different Sensors. IDs are subdivided into several reserved pools. +// These reservations are made so that Framework components can appropriately +// optimize their processing. +// +// Reserved for Framework use only: +// 0-127 - Request Messages +// 128-255 - Non-recurrent events (configuration updates, one-time events, etc) +// 256-511 - Recurrent and/or periodic events (e.g. sensor samples) +// +// Sensor use: +// 512-767 - Request messages +// 768-1023 - Non-recurrent events +// 1024-1536 - Recurrent events +// +// Note that messages serving as request messages can also be sent as +// configuration events back to the client (with the same ID). While batching +// data for a non-wakeup client, if the AP is in suspend and all batching space +// exhausted, the oldest recurrent events may be dropped. + +// Framework-defined message IDs: +enum sns_client_msgid { + option (nanopb_enumopt).long_names = false; + + // Disable request explicitly handled only on the client interface. + SNS_CLIENT_MSGID_SNS_CLIENT_DISABLE_REQ = 10; + + // NOTE: 120-127 Are reserved +} + +enum sns_client_delivery { + option (nanopb_enumopt).long_names = false; + + // Send events whenever available (at sample rate or batch period) + // - If a batch_period larger than system capacity is requested, all data + // will be sent upon capacity exhaustion. + // - The flush_period will be effectively ignored, as unsent batched + // data will not accrue in the buffer. + SNS_CLIENT_DELIVERY_WAKEUP = 0; + // Send events only when client processor is awake; batch otherwise. Once + // the target processor exits suspend, any/all pending events will be sent. + SNS_CLIENT_DELIVERY_NO_WAKEUP = 1; +} + + +// Request Message +message sns_client_request_msg { + // SUID associated with this request; intended destination + required sns_std_suid suid = 1; + + // See comment above + required fixed32 msg_id = 2; + + // Whether to wakeup the client processor (if it is in suspend), when an + // event is generated and ready to send. The Qualcomm Client Manager will + // enforce these criteria for all clients; this information is made available + // to sensors for optimization purposes only. + message suspend_config { + // Processor on which the client resides; If a flush occurs for one client + // on an external processor, all clients will receive a flush of data. + required sns_std_client_processor client_proc_type = 1 [default = SNS_STD_CLIENT_PROCESSOR_APSS]; + + // Whether to send events while the specified processor is in suspend. + required sns_client_delivery delivery_type = 2 [default = SNS_CLIENT_DELIVERY_WAKEUP]; + + //The client expects that, when the message with an id specified in this list + //is generated, the message should only be delivered to the client if data is already being delivered + //to the processor mentioned above. + repeated fixed32 nowakeup_msg_ids = 3; + } + required suspend_config susp_config = 3; + + // Base message payload; contents will be partially specified by Sensor developer + required sns_std_request request = 4; +} + +message sns_client_event_msg { + // SUID associated with this Event; source of data + required sns_std_suid suid = 1; + + // An event generated by a Sensor; used within sns_client_event_msg and SensorBatchMessage + message sns_client_event { + // See comment above + required fixed32 msg_id = 1; + + // Timestamp associated with this event + // For most events, this timestamp is specified by the Sensor. + // For events generated by the Framework (such as configuration updates or + // error events), this timestamp refers to the time at which the event was + // created. + required fixed64 timestamp = 2; + + // Dynamic length payload, containing the actual data/event + // This payload will need to be decoded separately, using the Sensor-specific + // header file + required bytes payload = 3; + } + repeated sns_client_event events = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_cmc.proto b/proprietary/vendor/etc/sensors/proto/sns_cmc.proto new file mode 100644 index 0000000..122da06 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_cmc.proto @@ -0,0 +1,81 @@ + +// @file sns_cmc.proto +// +// Defines message types for the Coarse Motion Classifier (CMC) Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + + +// CMC Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "coarse_motion_classifier" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for CMC Sensor +enum sns_cmc_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_CMC_MSGID_SNS_CMC_EVENT = 772; +} + +// Gives the state which the algorithm is capable +// of detecting +enum sns_cmc_motion_state +{ + option (nanopb_enumopt).long_names = false; + + // stated with 1 to match with algo where 0 + // is for UNKNOWN + SNS_CMC_STATIONARY = 1; + SNS_CMC_MOVE = 2; + SNS_CMC_FIDDLE = 3; + SNS_CMC_PEDESTRIAN = 4; + SNS_CMC_VEHICLE = 5; + SNS_CMC_WALK = 6; + SNS_CMC_RUN = 7; + SNS_CMC_BIKE = 8; +} + +// Gives the information about the states represented +// by sns_cmc_motion_state +enum sns_cmc_motion_state_event +{ + option (nanopb_enumopt).long_names = false; + // when any state of any of the motion state cannot + // be determined. The first event of first client will + // typically have all states as SNS_MS_UNKNOWN + SNS_MS_UNKNOWN = 0; + // A given motion state is ACTIVE + SNS_MS_ACTIVE = 1; + // A given motion state is INACTIVE + SNS_MS_INACTIVE = 2; +} + +message sns_cmc_event +{ + message data + { + // motion state by CMC + required sns_cmc_motion_state ms_state = 1; + + // gives UNKNOWN/ACTIVE/INACTIVE information for the motion state + required sns_cmc_motion_state_event ms_state_event = 2 [default = SNS_MS_UNKNOWN]; + } + + repeated data events = 1; +} + +// Stream events: +// +// The sns_cmc_event message is used to publish updated state +// +// CMC does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_da_test.proto b/proprietary/vendor/etc/sensors/proto/sns_da_test.proto new file mode 100644 index 0000000..b72a610 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_da_test.proto @@ -0,0 +1,65 @@ +// @file sns_da_test.proto +// +// Defines the API for communicating with the Driver acceptance +// test sensor. +// This is to used by the linux command line partner application +// to send string messages to the sns_da_test_sensor +// +// Copyright (c) 2017, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_da_test_msgid { + option (nanopb_enumopt).long_names = false; + SNS_DA_TEST_MSGID_SNS_DA_TEST_REQ = 512; + SNS_DA_TEST_MSGID_SNS_DA_TEST_LOG = 768; + SNS_DA_TEST_MSGID_SNS_DA_TEST_EVENT = 1024; +} + +//This message contains the test parameters as a single string in the format below +//-testcase= -sample_rate=< any +tive value > -sensor= +//-duration=< any +tive value in seconds> -batch_period=<+tive value in seconds> +message sns_da_test_req { + optional string test_args = 1; +} + +//This message contains any return data from the test driver including PASS/FAIL +//msg. and explainations if applicable +message sns_da_test_event { + optional string test_event = 1; +} + +// Sensor State log message +// This definition is used by da_test sensor to log test +// information when publishing sensor api event +message sns_da_test_log { + //Time elapsed between streaming start request time and first sample received + required uint64 time_to_first_event = 1; + + //Time elapsed between streaming stop request time and last sample received + required sfixed32 time_to_last_event = 2; + + //Time when last sample was received + required uint64 sample_ts = 3; + + //Total number of samples received + required uint32 total_samples = 4; + + //time delta between samples avegraged over number of samples + required uint32 avg_delta = 5; + + //configures sample rate received in the SNS_STD_SENSOR_PHYSICAL_CONFIG_EVENT + required sfixed32 recvd_phy_config_sample_rate = 6; + + //random seed used by the da_test instance + optional uint64 random_seed_used = 7; + + //The number of std_req sent out by this instance of da_test + optional uint32 num_request_sent = 8; + + //timestamp of first sample received on da_test + optional uint64 first_sample_timestamp = 9; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_device_mode.proto b/proprietary/vendor/etc/sensors/proto/sns_device_mode.proto new file mode 100644 index 0000000..66b5efd --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_device_mode.proto @@ -0,0 +1,61 @@ +// @file sns_device_mode.proto +// +// Defines message types for the Device Mode Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// DEVICE_MODE determine the current mode of the device + +// DEVICE_MODE Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "device_mode" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor +// - Client must remove stream to disable the sensor + +// Message IDs for DEVICE_MODE Sensor +enum sns_device_mode_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_DEVICE_MODE_MSGID_SNS_DEVICE_MODE_EVENT = 772; +} + +enum sns_device_mode +{ + option (nanopb_enumopt).long_names = false; + SNS_DEVICE_MODE_UNKNOWN = 0; + SNS_DEVICE_MODE_FLIP_OPEN = 1; +} + +enum sns_device_state +{ + option (nanopb_enumopt).long_names = false; + SNS_DEVICE_STATE_INACTIVE = 0; + SNS_DEVICE_STATE_ACTIVE = 1; +} + +message sns_device_mode_event +{ + message mode_spec { + required sns_device_mode mode = 1; + + required sns_device_state state = 2; + } + // Device Mode + repeated mode_spec device_mode = 1; +} + +// Stream events: +// +// The sns_device_mode_event message is used to publish updated mode +// +// DEVICE_MODE does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_device_orient.proto b/proprietary/vendor/etc/sensors/proto/sns_device_orient.proto new file mode 100644 index 0000000..d57f922 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_device_orient.proto @@ -0,0 +1,57 @@ +// @file sns_device_orient.proto +// +// Defines the API for the Device Orientation sensors +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// A device orientation sensor reports the current orientation of the device. +// +// Minor or transient rotations should not cause a new event to be reported, +// and this sensor should only be implemented with the help of an accelerometer. +// Moving the device to an orientation where the Z axis is vertical (either up +// or down) should not cause a new event to be reported. + +// ## Device Orientation sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "device_orient" +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: SNS_DEVICE_ORIENT_MSGID_SNS_DEVICE_ORIENT_EVENT + +// Message IDs for Device Orientation Sensor +enum sns_device_orient_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_DEVICE_ORIENT_MSGID_SNS_DEVICE_ORIENT_EVENT = 776; +} + +enum sns_device_orient_event_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_DEVICE_ORIENT_EVENT_TYPE_UNKNOWN = -1; + // Device is in default orientation (Y axis is vertical and points up) + SNS_DEVICE_ORIENT_EVENT_TYPE_DEFAULT = 0; + // Device is rotated 90 degrees counter-clockwise from default orientation + // (X axis is vertical and points up) + SNS_DEVICE_ORIENT_EVENT_TYPE_POS_1 = 1; + // Device is rotated 180 degrees from default orientation (Y axis is + // vertical and points down) + SNS_DEVICE_ORIENT_EVENT_TYPE_POS_2 = 2; + // Device is rotated 90 degrees clockwise from default orientation (X axis + // is vertical and points down) + SNS_DEVICE_ORIENT_EVENT_TYPE_POS_3 = 3; +} + +message sns_device_orient_event +{ + // Detected state + required sns_device_orient_event_type state = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_diag.proto b/proprietary/vendor/etc/sensors/proto/sns_diag.proto new file mode 100644 index 0000000..0b02cbb --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_diag.proto @@ -0,0 +1,433 @@ +// @file sns_diag.proto +// +// Defines log messages used by the sensors diag service +// +// Copyright (c) 2016-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; +import "sns_client.proto"; + +// Batch Sample Type +enum sns_diag_batch_sample_type +{ + option (nanopb_enumopt).long_names = false; + + // This is the only sample in the batch + SNS_DIAG_BATCH_SAMPLE_TYPE_ONLY = 0; + + // This is the first sample of the batch + SNS_DIAG_BATCH_SAMPLE_TYPE_FIRST = 1; + + // This is an intermediate sample of the batch + SNS_DIAG_BATCH_SAMPLE_TYPE_INTERMEDIATE = 2; + + // This is the last sample of the batch + SNS_DIAG_BATCH_SAMPLE_TYPE_LAST = 3; +} + +// Sensor Interrupts +enum sns_diag_interrupt +{ + option (nanopb_enumopt).long_names = false; + + // Interrupt caused by detection of a threshold being + // exceeded + SNS_DIAG_INTERRUPT_THRESHOLD = 0; + + // Interrupt caused by detection of movement of the device + SNS_DIAG_INTERRUPT_MOTION = 1; + + // Interrupt caused by detection of tilting of the device + SNS_DIAG_INTERRUPT_TILT = 2; + + // Interrupt caused by detection of free fall + SNS_DIAG_INTERRUPT_FREE_FALL = 3; + + // Interrupt caused by detection of double-tap + SNS_DIAG_INTERRUPT_DOUBLE_TAP= 4; + + // Interrupt caused by detection of acceleration shock + SNS_DIAG_INTERRUPT_SHOCK = 5; + + // Interrupt caused by CCD AMD + SNS_DIAG_INTERRUPT_CCD_AMD = 6; + + // Interrupt caused by CCD WALK + SNS_DIAG_INTERRUPT_CCD_WALK = 7; + + // Interrupt caused by CCD TILT + SNS_DIAG_INTERRUPT_CCD_TILT = 8; + + // Interrupt caused by CCD TE0 + SNS_DIAG_INTERRUPT_CCD_TE0 = 9; + + // Interrupt caused by CCD TE1 + SNS_DIAG_INTERRUPT_CCD_TE1 = 10; + + // Interrupt caused by CCD TE2 + SNS_DIAG_INTERRUPT_CCD_TE2 = 11; +} + +// Opaque Payload +// This message defines the fields used to log an undefined payload +message sns_diag_opaque_payload +{ + required bytes payload = 1; +} + +// Batch Sample +// This message defines the fields used to log batched data. +message sns_diag_batch_sample +{ + // Indicates if the sample is the first, intermediate, last or only + // sample of a batch + required sns_diag_batch_sample_type sample_type = 1 [default = SNS_DIAG_BATCH_SAMPLE_TYPE_ONLY]; + + // Timestamp of the sensor state data sample + required fixed64 timestamp = 2; + + // Sensor state data sample + repeated float sample = 3; + + // Data status. + required sns_std_sensor_sample_status status = 4 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Sensor State Hardware Interrupt Log Packet +// This message defines the fields used to log sensor state information +// pertaining to hardware interrupts +// This message is used as the payload field of sns_diag_sensor_log +message sns_diag_sensor_state_interrupt +{ + // Type of sensor hardware interrupt + required sns_diag_interrupt interrupt = 1; + + // Timestamp when the interrupt occurred + required fixed64 timestamp = 2; +} + +// Sensor State Raw +// This message defines the fields used to log sensor state information +// pertaining to raw uncalibrated physical sensor data. +// This message is used as the payload field of sns_diag_sensor_log +message sns_diag_sensor_state_raw +{ + repeated sns_diag_batch_sample sample = 1; +} + +// Client API Response Message +message sns_diag_client_resp_msg +{ + // The error response sent to the client + required sns_std_error error = 1; +} + +// Client API log packet +// This message defines the fields to log all +// Request, Response and Event messages at the Client API +// This message is used as the payload field of sns_diag_sensor_log +message sns_diag_client_api_log +{ + // The client id that identifies the client connection + required fixed64 client_id = 1; + + // Data type of the source sensor + required string src_sensor_type = 2; + + // The Client API log packet payload + oneof client_api_log_payload + { + // Client API Request message as defined in sns_client.proto + sns_client_request_msg request_payload = 100; + + // Client API Event message as defined in sns_client.proto + sns_client_event_msg event_payload = 101; + + // Client API Response message as defined in sns_diag.proto + sns_diag_client_resp_msg resp_payload = 102; + } +} + +// Sensor API log packet +// This message defines the fields to log all Request and +// Event messages at the Sensor API +// This message is used as the payload field of sns_diag_sensor_log +message sns_diag_sensor_api_log +{ + // The message id of the message being logged + required fixed32 message_id = 1; + + // Timestamp associated with this message + required fixed64 timestamp = 2; + + // Data stream associated with this message + optional fixed64 stream_id = 3; + + // The Sensor API log packet payload + oneof sensor_api_log_payload + { + // Sensor API Event message containing sensor specific event message + // as defined in the sensor's proto api file + sns_diag_opaque_payload opaque_payload = 100; + + // Sensor API Request message as defined in sns_std.proto + sns_std_request request_payload = 101; + } +} + +// Sensor log packet +// This message defines the fields to log all sensor specific +// messages. This includes Sensor API messages, Client API messages, +// HW Interrupt messages, Sensor State messages +message sns_diag_sensor_log +{ + // Log ID for the log packet + required fixed32 log_id = 1; + + // Timestamp when log packet.was generated + required fixed64 timestamp = 2; + + // Sensor UID for the log packet + required sns_std_suid suid = 3; + + // Data type provided by the Sensor UID + required string sensor_type = 4; + + // The instance id of the sensor to which this + // message was passed to or obtained from + required fixed64 instance_id = 5; + + // The log packet payload + oneof sensor_log_payload + { + // Sensor specific Sensor State Algo message + sns_diag_opaque_payload opaque_payload = 100; + + // Sensor API message + sns_diag_sensor_api_log sensor_api_payload = 101; + + // Client API message + sns_diag_client_api_log client_api_payload = 102; + + // Sensor State Raw message + sns_diag_sensor_state_raw sensor_state_raw_payload = 103; + + // Sensor State Hardware Interrupt message + sns_diag_sensor_state_interrupt sensor_state_interrupt_payload = 104; + } +} + +// Sensor Instance Mapping Log Packet +// This message defines the fields used to log sensor instance mapping +// information. This message is used as the payload field of sns_diag_fw_log +message sns_diag_instance_map_log +{ + // The instance id of the source sensor instance + required fixed64 src_instance_id = 1; + + // Array of destination Sensor Instance IDs or Sensor IDs that the + // source sensor instance is feeding to. + // If no destination instance ids are specified it signifies + // deletion of the source instance + repeated fixed64 dest_instance_id = 2; + + // Array of data stream ids that the + // source sensor instance is feeding to + repeated fixed64 stream_id = 3; +} + +// Island mode states +enum sns_diag_island_state +{ + option (nanopb_enumopt).long_names = false; + + // In Island mode + SNS_DIAG_ISLAND_STATE_IN_ISLAND_MODE = 0; + + // Not in Island Mode + SNS_DIAG_ISLAND_STATE_NOT_IN_ISLAND_MODE = 1; + + // Island mode disabled + SNS_DIAG_ISLAND_STATE_ISLAND_DISABLED = 2; +} + +// Island mode transition Log Packet +// This message defines the fields used to log +// transitions into and out of island mode +// +// This log packet is generated each time the system transitions into or out +// of island mode or when island mode is disabled or when triggered by +// a request to the diag sensor +// +// This message is used as the payload field of sns_diag_fw_log +message sns_diag_island_transition_log +{ + // Timestamp of the transition + // + // When logpacket is triggered, this timestamp will retain + // the timestamp when the current state became effective. + required fixed64 timestamp = 1; + + // Island state after transition is completed + required sns_diag_island_state island_state = 2; + + // User defined cookie + // Used by test scripts to identify logs triggered + // by messages sent to the SSC + optional fixed64 cookie = 3; + + // Total time system spent in island since device boot(micro seconds) + optional fixed64 total_island_time = 4; +} + +// Island exit vote Log Packet +// This message defines the fields used to log vote for island mode exits. +// +// This log packet is generated at each call to island_exit() +message sns_diag_island_exit_vote_log +{ + // Timestamp + required fixed64 timestamp = 1; + + // SUID of the Sensor responsible for the vote + optional sns_std_suid sensor = 2; +} + +// Heap IDs +enum sns_diag_heap_id +{ + option (nanopb_enumopt).long_names = false; + + // Primary Heap + SNS_DIAG_HEAP_ID_HEAP_MAIN = 0; + + // Island Heap + SNS_DIAG_HEAP_ID_HEAP_ISLAND = 1; + + // PRAM Heap + SNS_DIAG_HEAP_ID_HEAP_PRAM = 2; + + // EVENT Heap + SNS_DIAG_HEAP_ID_HEAP_EVENT = 3; + + // BATCH Heap + SNS_DIAG_HEAP_ID_HEAP_BATCH = 4; + + // Event buffer + SNS_DIAG_HEAP_ID_EVENT_BUFFER = 100; +} + +// Memory status Log Packet +// This message defines the fields used to log the memory utilization +// This log packet is generated when a request is sent to the diag sensor +message sns_diag_mem_utilization_log +{ + // Timestamp + required fixed64 timestamp = 1; + + // Heap ID + required sns_diag_heap_id heap_id = 2; + + // Total Memory + required fixed32 total_memory = 3; + + // Used Memory + required fixed32 used_memory = 4; + + // User defined cookie + // Used by test scripts to identify logs triggered + // by messages sent to the SSC + optional fixed64 cookie = 5; +} + +// Event Service status Log Packet +// This message defines the fields used to log the memory utilization and +// other statistics from the Event Service. +// Used only for SW debug; *not guaranteed to be backward compatible* +// This log packet is generated when a request is sent to the diag sensor +message sns_diag_event_service_log +{ + // Timestamp + required fixed64 timestamp = 1; + + // User defined cookie + // Used by test scripts to identify logs triggered + // by messages sent to the SSC + optional fixed64 cookie = 2; + + message heap_stats + { + enum sns_event_service_heap_id + { + SNS_EVENT_SERVICE_HEAP_ID_ISLAND = 0; + SNS_EVENT_SERVICE_HEAP_ID_MAIN = 1; + } + // Heap ID + required sns_event_service_heap_id heap_id = 1; + + // Total memory available in heap (in blocks) + required fixed32 total_memory = 2; + + // Current memory consumption (in blocks) + required fixed32 used_memory = 3; + + // Maximum memory consumption since last log packet (in blocks) + required fixed32 max_memory = 4; + + // Total clusters available + required fixed32 total_clusters = 5; + + // Current number of clusters in use + required fixed32 used_clusters = 6; + + // Maximum in-use clusters since last log packet + required fixed32 max_clusters = 7; + + // Number of allocation failues since the last DIAG log packet + // If Island will result in island exit; else causes dropped samples + required fixed32 alloc_failures = 8; + + // Largest event allocation since the last DIAG log packet (in bytes) + required fixed32 max_size = 9; + } + repeated heap_stats stats = 3; +} + +// Framework log packet +// This message defines the fields to log all framework messages. This +// includes memory, island, instance mapping messages. +message sns_diag_fw_log +{ + // Log ID for the log packet + required fixed32 log_id = 1; + + // Timestamp when log packet.was generated + required fixed64 timestamp = 2; + + // The log packet payload + oneof fw_log_payload + { + // Sensor Instance Map message + sns_diag_instance_map_log instance_map_payload = 100; + + // Sensor Island Mode + sns_diag_island_transition_log island_mode_payload = 101; + + // Sensors Island Exit vote + // NOT SUPPORTED YET. + sns_diag_island_exit_vote_log island_exit_vote_payload = 102; + + // Sensors Memory Utilization + sns_diag_mem_utilization_log memory_utilization_payload = 103; + + // Event Service status log + sns_diag_event_service_log event_service_payload = 104; + } +} + diff --git a/proprietary/vendor/etc/sensors/proto/sns_diag_sensor.proto b/proprietary/vendor/etc/sensors/proto/sns_diag_sensor.proto new file mode 100644 index 0000000..804e7e6 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_diag_sensor.proto @@ -0,0 +1,51 @@ +// @file sns_diag_sensor.proto +// +// Defines standard message types to communicate with the +// diag service +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_type.proto"; + +enum sns_diag_sensor_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_DIAG_SENSOR_MSGID_SNS_DIAG_LOG_TRIGGER_REQ = 520; +} + +// Log packets that can be triggered by the diag sensor +enum sns_diag_triggered_log_type { + option (nanopb_enumopt).long_names = false; + + // Triggers generation of sns_diag_island_transition_log + // Only one log is generated per request + SNS_DIAG_TRIGGERED_LOG_TYPE_ISLAND_LOG = 1; + + // Triggers generation of sns_diag_mem_utilization_log + // A single request will generate a log for each separate memory + // pool in the system + SNS_DIAG_TRIGGERED_LOG_TYPE_MEMORY_USAGE_LOG = 2; +} + +// Trigger generation of log packets. Depending upon +// the type of log packet that is being triggered, +// multiple log packets can be triggered for each +// request. +// +// If the log packet that is triggered has been disabled +// no log will be generated. +message sns_diag_log_trigger_req { + + // User defined cookie + // Used by test scripts to identify logs triggered + // by messages sent to the SSC + optional fixed64 cookie = 1; + + // The type of log packets that the diag sensor must + // generate. + required sns_diag_triggered_log_type log_type = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_direct_channel.proto b/proprietary/vendor/etc/sensors/proto/sns_direct_channel.proto new file mode 100644 index 0000000..5601bb3 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_direct_channel.proto @@ -0,0 +1,124 @@ +// @file sns_direct_channel.proto +// +// Defines the Sensors Direct Channel interface that can be used by clients to get sensor data via direct channel +// +// Copyright (c) 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_type.proto"; +import "sns_std.proto"; + +// To activate a stream on a channel +// " get Channel first by sending sns_direct_channel_create_msg -> then send sns_direct_channel_set_ts_offset -> send sns_direct_channel_set_client_req for sns_direct_channel_stream_id" + +// To activate another stream on existing channel +// "Send sns_direct_channel_set_client_req on existing Channel for new sns_direct_channel_stream_id" + +// To update the existing request on the channel +// "Send updated sns_direct_channel_set_client_req on existing Channel with already added sns_direct_channel_stream_id" + +// To remove existing request on the channel +// "Send sns_direct_channel_remove_client_req on existing Channel for any added sns_direct_channel_stream_id" + +// To update time stamp offset on channel. +// "Send sns_direct_channel_set_ts_offset on existing Channel with ts_offset" + + +enum direct_channel_type { + option (nanopb_enumopt).long_names = false; + + // Sensor data from multiple streams can be multiplexed in one channel + // Samples are compatible to sensors_event_t format defined by Android Spec + // ref: SensorsEventFormatOffset( a.k.a sensors_event_t) at hardware/interfaces/sensors/1.0/types.hal + DIRECT_CHANNEL_TYPE_STRUCTURED_MUX_CHANNEL = 0; + + // Sensors Data format expected in Raw bytes only. + // Sensors data format is not mandated in the API. + // This channel type can be used by clients who know how to interpret the sensor data from respective sensor source. + DIRECT_CHANNEL_TYPE_GENERIC_CHANNEL = 1; +} + +// stream id for different direct channel streams +message sns_direct_channel_stream_id { + // sensor responsible for data + required sns_std_suid suid = 1; + // if set to true, auto calibrated data is generated + // if set to false, factory calibrated data is generated + optional bool calibrated = 2 [default = true]; + // if set to true, resampled data is generated at rate which is at most twice the requested rate + // if set to false, data is generated at native rate supported by driver, advertised with attributes - SNS_STD_SENSOR_ATTRID_RATES and SNS_STD_SENSOR_ATTRID_ADDITIONAL_LOW_LATENCY_RATES + optional bool resampled = 3 [ default = true]; +} + + +// Direct channel Creation Request Message +message sns_direct_channel_create_msg { + // ION fd, size to get Virtual address that can be used by Q6 + message shared_buffer_config { + required fixed32 fd = 1; + required fixed32 size = 2; + } + + required shared_buffer_config buffer_config = 1; + + // Each channel can be either DIRECT_CHANNEL_TYPE_STRUCTURED_MUX_CHANNEL or DIRECT_CHANNEL_TYPE_GENERIC_CHANNEL + // e.g Android Direct Report Channel for DIRECT_CHANNEL_TYPE_STRUCTURED_MUX_CHANNEL + required direct_channel_type channel_type = 2 ; + + // Processor hosting the sensor data client + // Default processor is Application Processor + optional sns_std_client_processor client_proc = 3 [ default = SNS_STD_CLIENT_PROCESSOR_APSS]; +} + + +// Client request on Direct Channel +message sns_direct_channel_set_client_req { + // msg id for sns_std_request, see sns_std.proto for more information. + required fixed32 msg_id = 1; + + // unique id for each stream on the channel + required sns_direct_channel_stream_id stream_id = 2; + + // generic sns_std_request + required sns_std_request request = 3; + + // required attributes for DIRECT_CHANNEL_TYPE_STRUCTURED_MUX_CHANNEL + message structured_mux_channel_stream_attributes { + // Unique handle per sensor, client has to supply for mapping in sensor hub to "sensor_event_t::sensor" variable + required fixed32 sensor_handle = 1; + // Corresponds to android sensor type, client has to supply for mapping in sensor hub to "sensor_event_t::type" variable + required fixed32 sensor_type = 2; + } + + optional structured_mux_channel_stream_attributes attributes = 4; +} + + +// Direct Channel remove client request message +message sns_direct_channel_remove_client_req { + required sns_direct_channel_stream_id stream_id = 1; +} + + +// Clients interested in Client Time Domain Time Stamp has to supply offset value +// direct channel in sensor hub adds this value to its own time domain time stamp to generate Client Time Domain Time Stamp +message sns_direct_channel_set_ts_offset { + required fixed64 ts_offset = 1; +} + + +// Direct Channel Configuration Message +message sns_direct_channel_config_msg { + + oneof channel_config_msg_payload + { + sns_direct_channel_set_client_req set_client_req = 100; + + sns_direct_channel_remove_client_req remove_client_req = 101; + + sns_direct_channel_set_ts_offset set_ts_offset = 102; + } +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_dpc.proto b/proprietary/vendor/etc/sensors/proto/sns_dpc.proto new file mode 100644 index 0000000..bbc27d7 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_dpc.proto @@ -0,0 +1,64 @@ +// @file sns_dpc.proto +// +// Defines message types for the DPC(Device Position Classifier) Sensor. +// +// Copyright (c) 2017-2018, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The DPC Sensor provides device position information + +// DPC Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "device_position_classifier" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for DPC Sensor +enum sns_dpc_msgid { + option (nanopb_enumopt).long_names = false; + + //send to new client immediatly to inform current device position + SNS_DPC_MSGID_SNS_DPC_EVENT_CONFIG = 777; + + //send when detect device position change + SNS_DPC_MSGID_SNS_DPC_EVENT = 1030; +} + +// Stream events: +// +// The sns_dpc_event message is used to publish updated device position +// The sns_dpc_event_config message is sent immediately to new client to inform the current device position + +enum sns_dpc_state +{ + option (nanopb_enumopt).long_names = false; + + // when algo cannot identify other states + SNS_DPC_UNKNOWN = 1; + // User keeps the device steady with display at an angle within +/-15 deg with respect to the horizontal plane + SNS_DPC_FLAT_STATIC = 2; + // Device is not in FLAT_STATIC state and proximity sensor detects NEAR + SNS_DPC_HIDDEN = 3; + // User picks up the device + SNS_DPC_IN_HAND = 4; + // User keeps the device steady with display at an angle greater than +/-15 deg with respect to the horizontal plane + SNS_DPC_FACING = 5; +} + +// Events types from DPC Sensor +message sns_dpc_event +{ + required sns_dpc_state dpc_state = 1; +} + +message sns_dpc_event_config +{ + //current dpc state + required sns_dpc_state dpc_state = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_ext_svc.proto b/proprietary/vendor/etc/sensors/proto/sns_ext_svc.proto new file mode 100644 index 0000000..7e8370a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ext_svc.proto @@ -0,0 +1,72 @@ +// @file sns_ext_svc.proto +// +// Sensor provides access to external QMI services. +// +// This Sensor will create a connection to the external service upon +// receipt of the first request. Subsequent requests will be sent upon the +// same connection. The connection will be closed after the client closes +// the data stream. +// +// An error event will be sent upon any received error, including upon +// the error callback. It is then the responsibility of the client to close +// the data stream, and re-open a new one if desired. +// +// Copyright (c) 2017, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_ext_svc_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Send a request message + SNS_EXT_SVC_MSGID_SNS_EXT_SVC_REQ = 512; + + // Asynchronously received response message + SNS_EXT_SVC_MSGID_SNS_EXT_SVC_RESP = 768; + + // Asynchronously received indication message + SNS_EXT_SVC_MSGID_SNS_EXT_SVC_IND = 1024; +} + +message sns_ext_svc_req +{ + required uint32 svc_id = 1; + + // QMI/IDL Message ID + required int32 msg_id = 2; + + // Client-specified transaction ID, to be returned in sns_ext_svc_resp + optional int32 transaction_id = 3; + + // Contains the QMI-decoded request message. + required bytes payload = 4; +} + +message sns_ext_svc_resp +{ + // QMI/IDL Message ID + required int32 msg_id = 1; + + // Transport error, as defined in qmi_client.h; Defaults to QMI_NO_ERR + required int32 transp_err = 2; + + // Client-specified transaction ID, as provided in sns_ext_svc_req + optional int32 transaction_id = 3; + + // Contains the QMI-decoded response message + // May be empty if transport_err != QMI_NO_ERR + required bytes payload = 4; +} + +message sns_ext_svc_ind +{ + // QMI/IDL Message ID + required int32 msg_id = 1; + + // Contains the QMI-decoded indication message. + required bytes payload = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_facing.proto b/proprietary/vendor/etc/sensors/proto/sns_facing.proto new file mode 100644 index 0000000..8decd9f --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_facing.proto @@ -0,0 +1,60 @@ +// @file sns_facing.proto +// +// Defines message types for the the facing sensor +// +// Copyright (c) 2017 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Facing calculates face up, down and neutral states. Facing will initially start in an +// unknown state, and later transition to face up, down and neutral. +// Neutral state reported to client on demand + +// Facing Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "facing" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Facing Sensor +enum sns_facing_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_FACING_MSGID_SNS_FACING_EVENT = 1024; +} + +// Device Facing state detected by Facing sensor +enum sns_facing_event_state +{ + option (nanopb_enumopt).long_names = false; + SNS_FACING_EVENT_STATE_UNKNOWN = 0; + //Phone has just moved to a facing-up phone posture + //which is defined as screen up. + SNS_FACING_EVENT_STATE_UP = 1; + //Phone has just moved to a facing-down phone posture, + //which is defined as screen down. + SNS_FACING_EVENT_STATE_DOWN = 2; + //Phone has just left either the facing-up + //or the facing-down phone posture + SNS_FACING_EVENT_STATE_NEUTRAL = 3; +} + +// Event Message +// Output data event generated by the facing sensor. +message sns_facing_event +{ + // Facing sensor state info + required sns_facing_event_state state = 1[default = SNS_FACING_EVENT_STATE_UNKNOWN]; +} + +// Stream events: +// +// The sns_facing_event message is used to publish updated state +// +// Facing sensor does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_fmv.proto b/proprietary/vendor/etc/sensors/proto/sns_fmv.proto new file mode 100644 index 0000000..a6bdfb0 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_fmv.proto @@ -0,0 +1,40 @@ +// @file sns_fmv.proto +// +// Defines the API for Filtered Magnetic Vector. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A FMV sensor reports the filtered magnetic vector +// +// ## FMV sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "fmv" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the FMV sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// 1. Output of the FMV sensor will be populated in sns_std_sensor_event +// 2. Each stream event contains three output data fields in µT (micro Tesla) +// 3. Data in the stream is adjusted to Android coordinate system relative to a +// mobile device held with screen facing the user in it's natural orientation: +// X-axis: parallel to the screen pointing to the right +// Y-axis: parallel to the screen pointing to the top +// Z-axis: perpendicular to the screen pointing towards the user +// 4. Data in the stream event is ordered as: +// data[0] = X-axis +// data[1] = Y-axis +// data[2] = Z-axis +// 5. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_formatter.proto b/proprietary/vendor/etc/sensors/proto/sns_formatter.proto new file mode 100644 index 0000000..5188558 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_formatter.proto @@ -0,0 +1,165 @@ +// @file sns_formatter.proto +// +// Defines standard message types for the Offset/Formatter sensor +// +// Copyright (c) 2018, 2020, 2022 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_type.proto"; +import "sns_std_sensor.proto"; + +enum sns_formatter_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_MSGID_SNS_FORMATTER_REQUEST = 512; + SNS_FORMATTER_MSGID_SNS_FORMATTER_METRIC_DATA_REQUEST = 513; + SNS_FORMATTER_MSGID_SNS_FORMATTER_BROADCAST_DATA_REQUEST = 514; + + SNS_FORMATTER_MSGID_SNS_FORMATTER_OUTPUT_EVENT = 1024; + SNS_FORMATTER_MSGID_SNS_FORMATTER_ACK_EVENT = 1025; + SNS_FORMATTER_MSGID_SNS_FORMATTER_OUTPUT_GOAL_EVENT = 1026; + SNS_FORMATTER_MSGID_SNS_FORMATTER_OUTPUT_THRESHOLD_EVENT = 1027; + } + +enum sns_formatter_request_values { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_REQUEST_INVALID = 0; + // Creates a new instance of a metric with given id. + SNS_FORMATTER_REQUEST_CREATE = 1; + // Starts or resumes the update of the metric instances. + SNS_FORMATTER_REQUEST_START = 2; + // Stops the update of the metric instances. + SNS_FORMATTER_REQUEST_STOP = 3; + // Resets metric instance state. + SNS_FORMATTER_REQUEST_RESET = 4; + // Destroys the metric instance. Release the resources for that instance. + SNS_FORMATTER_REQUEST_DESTROY = 5; + // Set the config data based on the group name. + SNS_FORMATTER_REQUEST_CONFIG_SET = 6; + // fetch the config data based on the group name. + SNS_FORMATTER_REQUEST_CONFIG_GET = 7; + // Updates the batch period at the client manager. + SNS_FORMATTER_REQUEST_BATCH = 8; + // Pauses the update of the metric instances + SNS_FORMATTER_REQUEST_PAUSE = 9; +} + +enum sns_formatter_status_values { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_STATUS_FAILURE = 0; + SNS_FORMATTER_STATUS_INVALID_PARAM = 1; + SNS_FORMATTER_STATUS_SUCCESS = 2; +} + +enum sns_formatter_client_id { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_CLIENT_BG = 0; + SNS_FORMATTER_CLIENT_APPS = 1; +} + +enum sns_formatter_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_OUTPUT_DATA_EVENT = 0; + SNS_FORMATTER_OUTPUT_BUFFER_EVENT = 1; + SNS_FORMATTER_CONFIG_DATA_EVENT = 2; +} + +// "UNUSED" is filled by clients for strings which are +// not applicable for a given sns_formatter-request_values id. +message sns_formatter_config_payload { + optional sns_std_suid metric_sensor_suid = 1; + required sns_std_suid formatter_suid = 2; + required float sample_rate = 3; + required string format_input_str = 4; + required string metric_name = 5; + required string group_name = 7; + required string sensor_config_data = 8; +} + +message sns_formatter_output_event_payload +{ + required bytes data = 1; + required sns_std_sensor_sample_status status = 2; + required sns_formatter_event_type event_type = 3; +} + +// Formatter config message +// Used by clients to configure the formatter for various metrics +message sns_formatter_request +{ + required sns_formatter_request_values msg_id = 1; + required fixed32 metric_id = 2; + required sns_formatter_client_id client_id = 3; + optional sns_formatter_config_payload payload = 4; + optional sns_formatter_output_event_payload event_payload = 5; +} + +message sns_formatter_metric_data_request +{ + required fixed32 metric_id = 1; + required bytes metric_data = 2; +} + +message sns_formatter_broadcast_data_request +{ + required bytes broadcast_data = 1; +} + +// Formatter output event +// This event contains the formatted string output corresponding to the +// metric requested by the client. +message sns_formatter_output_event +{ + required fixed32 metric_id = 1; + required string formatted_output = 2; + required sns_formatter_output_event_payload event_payload = 3; +} + +enum sns_formatter_goal_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_GOAL_VALUE = 1; + SNS_FORMATTER_GOAL_DURATION = 2; +} + + +message sns_formatter_output_goal_event +{ + required fixed32 metric_id = 1; + required sns_formatter_goal_type goal_type = 2; + oneof goal_data + { + fixed32 int_data =3; // Data can be goal value or duration. Goal_type is used to identify type of data. + float float_data =4; // This is for goal value of float type. Ex: Algos like distance may set float values + } +} + +enum sns_formatter_threshold_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_FORMATTER_HIGH_THRESHOLD_ACHIEVED =1; + SNS_FORMATTER_LOW_THRESHOLD_ACHIEVED=2; +} + +message sns_formatter_output_threshold_event +{ + required fixed32 metric_id = 1; + required sns_formatter_threshold_type th_type = 2; +} + +// Formatter acknowledge event +// This event contains the status for the request sent from the client. +// Status indicates if the requested format string was valid or not. +message sns_formatter_ack_event +{ + required fixed32 metric_id = 1; + required sns_formatter_status_values status = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_fw.proto b/proprietary/vendor/etc/sensors/proto/sns_fw.proto new file mode 100644 index 0000000..c29a1af --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_fw.proto @@ -0,0 +1,23 @@ +// @file sns_fw.proto +// +// Defines Framework internal values. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; + +// Internal Framework message IDs +// Note: These message IDs must not conflict with those in sns_std_msgid +enum sns_fw_msgid { + option (nanopb_enumopt).long_names = false; + + // Special message only sent by the Framework; not processed by Sensors + // Empty Message + SNS_FW_MSGID_SNS_DESTROY_REQ = 120; + + // Special message only sent by the Framework; not processed by Sensors + // Empty Message + SNS_FW_MSGID_SNS_DESTROY_COMPLETE_EVENT = 250; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_game_rv.proto b/proprietary/vendor/etc/sensors/proto/sns_game_rv.proto new file mode 100644 index 0000000..6f0f3df --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_game_rv.proto @@ -0,0 +1,48 @@ +// @file sns_game_rv.proto +// +// Defines the API for Game Rotation Vector sensors +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A GameRV sensor reports the orientation of the device relative to an +// unspecified coordinates frame. It is obtained by integration of +// accelerometer and gyroscope readings. Therefore the Y axis doesn't point +// north but instead to an arbitrary reference. +// +// ## GameRV sensor attributes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE is "game_rv" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the GameRV sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// Output of the GameRV sensor will be populated in sns_std_sensor_event +// +// The orientation is represented by the rotation necessary to align +// the coordinate frame with the device's coordinates. That is, +// applying the rotation to the world frame (X,Y,Z) would align them with +// the device coordinates (x,y,z). +// +// The rotation can be seen as rotating the device by an angle theta around an +// axis rot_axis to go from the reference device orientation to the current +// device orientation. The rotation is encoded as the four unitless x, y, z, w +// components of a unit quaternion: +// sns_std_sensor_event::data[0] = rot_axis.x*sin(theta/2) +// sns_std_sensor_event::data[1] = rot_axis.y*sin(theta/2) +// sns_std_sensor_event::data[2] = rot_axis.z*sin(theta/2) +// sns_std_sensor_event::data[3] = cos(theta/2) +// +// Where: +// - the x, y and z fields of rot_axis are the East-North-Up coordinates +// of a unit length vector representing the rotation axis +// - theta is the rotation angle +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_geomag_rv.proto b/proprietary/vendor/etc/sensors/proto/sns_geomag_rv.proto new file mode 100644 index 0000000..98b2b18 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_geomag_rv.proto @@ -0,0 +1,50 @@ +// @file sns_geomag_rv.proto +// +// Defines the API for Geomagnetic Rotation Vector sensors. +// This Sensor is similar to Rotation Vector, but uses a magnetometer instead +// of a gyroscope. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A GeoMagRV sensor reports the orientation of the device relative to the +// East-North-Up coordinates frame. It is obtained by integration of +// accelerometer and magnetometer readings. +// +// ## GeoMagRV sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "geomag_rv" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the GeoMagRV sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// Output of the GeoMagRV sensor will be populated in sns_std_sensor_event +// +// The East-North-Up coordinate system is defined as a direct orthonormal +// basis where: +// - X points east and is tangential to the ground. +// - Y points north and is tangential to the ground. +// - Z points towards the sky and is perpendicular to the ground. +// +// The rotation can be seen as rotating the device by an angle theta around an +// axis rot_axis to go from the reference device orientation to the current +// device orientation. The rotation is encoded as the four unitless x, y, z, w +// components of a unit quaternion: +// sns_std_sensor_event::data[0] = rot_axis.x*sin(theta/2) +// sns_std_sensor_event::data[1] = rot_axis.y*sin(theta/2) +// sns_std_sensor_event::data[2] = rot_axis.z*sin(theta/2) +// sns_std_sensor_event::data[3] = cos(theta/2) +// +// Where: +// - the x, y and z fields of rot_axis are the East-North-Up coordinates +// of a unit length vector representing the rotation axis +// - theta is the rotation angle +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_gravity.proto b/proprietary/vendor/etc/sensors/proto/sns_gravity.proto new file mode 100644 index 0000000..6a04f14 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_gravity.proto @@ -0,0 +1,30 @@ +// @file sns_gravity.proto +// +// Defines standard message types for the Gravity Sensor +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// Configuration Message +// Used to either request for a certain configuration of the gravity sensor or +// alter an already existing configuration of the gravity sensor +// Uses sns_std_sensor_config defined in sns_std_sensor.proto +// The message field definitions are as follows: +// 1) float sample_rate +// containing the required sample rate of the gravity sensor in hertz + +// Data Message +// Data event generated by the gravity. +// Uses sns_std_sensor_event message defined in sns_std_sensor.proto +// The data field of the sns_std_sensor_event message +// contains a float array of length 6 with the following definition +// 1) float data[0] to data[2] +// Representing the gravity values along x,y,z axes in m/s2. +// 2) float data[3] to data[5] +// Representing the linear acceleration values along x,y,z axes in m/s2. +// Determined as the delta between the accel and the gravity values +// along that axis. diff --git a/proprietary/vendor/etc/sensors/proto/sns_gyro.proto b/proprietary/vendor/etc/sensors/proto/sns_gyro.proto new file mode 100644 index 0000000..03f1bc5 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_gyro.proto @@ -0,0 +1,74 @@ +// @file sns_gyro.proto +// +// Defines the API for Gyroscope Sensors. +// All Gyroscope Sensor drivers are required to comply with this API. +// Any new functionality for Gyroscope Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Gyroscope Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "gyro". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in (radians/sec)/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in radians/sec unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Gyroscope Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. +// 2. The Gyroscope Sensor uses batching_period item in +// sns_std_request as the requested batching rate to determine +// hardware FIFO watermark. + +// Handling stream events: +// 1. The Gyroscope Sensor publishes device rotation data stream events +// using the sns_std_sensor_event message. +// 2. Each stream event contains three output data fields where data is +// in radians/sec units and is factory calibrated. +// 3. Data in the stream is adjusted to Android coordinate system relative to a +// mobile device held with screen facing the user in it's natural orientation: +// X-axis: parallel to the screen pointing to the right +// Y-axis: parallel to the screen pointing to the top +// Z-axis: perpendicular to the screen pointing towards the user +// This conforms to the mobile device axes orientation as specified by the +// Android Sensor API. +// 4. Data in the stream event is ordered as: +// data[0] = X-axis +// data[1] = Y-axis +// data[2] = Z-axis +// 5. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 6. The Gyroscope Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 7. The Gyroscope Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and comp_matrix fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. +// Handling self-test requests: +// 1. The Gyroscope Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Gyroscope Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Gyroscope Sensor could implement other test types. + +// Handling test events: +// 1. The Gyroscope Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_gyro_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_gyro_cal.proto new file mode 100644 index 0000000..279c070 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_gyro_cal.proto @@ -0,0 +1,32 @@ +// @file sns_gyro_cal.proto +// +// Defines message types for the Gyro Calibration Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_cal.proto"; + +// The Gyro Calibration Sensor determines the calibration parameters +// for gyro sensor + +// Gyro Calibration Sensor Attributes: +// - SNS_STD_SENSOR_ATTRID_TYPE: "gyro_cal" +// - SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG message ID is used to +// enable the sensor +// - SNS_CAL_MSGID_SNS_CAL_RESET message ID is used to reset the algorithm +// and any previously determined calibration parameters. + +// Stream Events: +// - SNS_CAL_MSGID_SNS_CAL_EVENT message ID is used to report calibration +// parameters to the client of the sensor. The sns_cal_event message as +// defined in sns_cal.proto is used to report this data event where the +// units for the bias field in the message are in rad / s + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_gyro_rot_matrix.proto b/proprietary/vendor/etc/sensors/proto/sns_gyro_rot_matrix.proto new file mode 100644 index 0000000..06a1c54 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_gyro_rot_matrix.proto @@ -0,0 +1,50 @@ +// @file sns_gyro_rot_matrix.proto +// +// Defines standard message types for the Gyro Rotation Matrix +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +enum sns_gyro_rot_matrix_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_GYRO_ROT_MATRIX_MSGID_SNS_STD_SENSOR_EVENT = 1024; +} + +// Data Message +// Data event generated by the gyro rotation matrix. +// Uses sns_std_sensor_event message defined in sns_std_sensor.proto +// The data field of the sns_std_sensor_event message +// contains a float array of length 10 with the following definition +// 1) float data[0] to data[8] +// 3 by 3 Gyro Rotation Matrix output +// Representing the rotation from previously sampled gyro values +// to the current one. +// The matrix definition is as follows: +// curr_gyro_XYZ[3X1] = gyro_rot_matrix[3X3] * prev_gyro_XYZ[3X1] +// data[0] = gyro_rot_matrix[0,0] +// data[1] = gyro_rot_matrix[0,1] +// data[2] = gyro_rot_matrix[0,2] +// data[3] = gyro_rot_matrix[1,0] +// data[4] = gyro_rot_matrix[1,1] +// data[5] = gyro_rot_matrix[1,2] +// data[6] = gyro_rot_matrix[2,0] +// data[7] = gyro_rot_matrix[2,1] +// data[8] = gyro_rot_matrix[2,2] +// 2) float data[9] +// Gyro Norm of the currently sampled gyro data +// determined as the sum of squares of gyro on each of the axes +// i.e. curr_gyro_X^2 + curr_gyro_Y^2 + curr_gyro_Z^2 + +// Configuration Message +// Used to either request for a certain configuration of the Gyro Rotation Matrix Sensor or +// alter an already existing configuration of the Simulation Sensor +// Uses sns_std_sensor_config defined in sns_std_sensor.proto +// The message field definitions are as follows: +// 1) float sample_rate +// containing the required sample rate of the Gyro Rotation Matrix sensor in hertz diff --git a/proprietary/vendor/etc/sensors/proto/sns_hall.proto b/proprietary/vendor/etc/sensors/proto/sns_hall.proto new file mode 100644 index 0000000..a779844 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_hall.proto @@ -0,0 +1,82 @@ +// @file sns_hall.proto +// +// Defines the API for Hall Sensors. +// All Hall Sensor drivers are required to comply with this API. +// Any new functionality for Hall Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018, 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Hall Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "hall". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute is not applicable since this is an event +// sensor. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values as 0 and 1. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Hall Sensor handles the SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// message ID for all stream enable/update requests. +// 2. The Hall Sensor operates in on-change mode and report +// samples only for magnet NEAR/FAR transitions. + +// Message IDs for hall Sensor +enum sns_hall_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: sns_hall_event + // Purpose: An output data event from the hall sensor to it's client. + SNS_HALL_MSGID_SNS_HALL_EVENT = 770; +} + +enum sns_hall_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_HALL_EVENT_TYPE_FAR = 0; + SNS_HALL_EVENT_TYPE_NEAR = 1; +} + +// Events types from hall Sensor +message sns_hall_event +{ + // Hall NEAR/FAR output event + required sns_hall_event_type hall_event_type = 1 [default = SNS_HALL_EVENT_TYPE_FAR]; + + // Hall sensor sample status + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Handling stream events: +// 1. The Hall Sensor publishes magnetic field proximity data stream +// events using the sns_hall_event message. +// 2. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 3. The Hall Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. + +// Handling self-test requests: +// 1. The Hall Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Hall Sensor could implement other test types. + +// Handling test events: +// 1. The Hall Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_heart_beat.proto b/proprietary/vendor/etc/sensors/proto/sns_heart_beat.proto new file mode 100644 index 0000000..3b0b2d1 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_heart_beat.proto @@ -0,0 +1,31 @@ +// @file sns_heart_beat.proto +// +// Defines the API for Heart Beat sensors +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A heart beat sensor reports everytime a heart beat peak is detected. +// +// Peak ideally corresponds to the positive peak in the QRS complex of +// an ECG signal, and the event timestamp should correspond to the time this +// peak occured. +// +// The sensor is not expected to be optimized for latency. As a guide, a +// receipt latency of up to 10 seconds is acceptable. +// +// ## Heart Beat sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "heart_beat" +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: sns_std_sensor_event +// Output of the Heart Beat sensor will be populated in sns_std_sensor_event. +// +// sns_std_sensor_event::data[0] = confidence in the detection of the peak +// where 0.0 represent no information at all, and 1.0 represents certainty. diff --git a/proprietary/vendor/etc/sensors/proto/sns_heart_rate.proto b/proprietary/vendor/etc/sensors/proto/sns_heart_rate.proto new file mode 100644 index 0000000..c6f90f5 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_heart_rate.proto @@ -0,0 +1,55 @@ +// @file sns_heart_rate.proto +// +// Defines the API for Heart Rate Detection Sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// A sensor of this type returns the current heart rate in beats per minute +// (BPM). Because this sensor is on-change, events must be generated when and +// only when BPM or status have changed since the last event. +// +// Upon the first activation, unless the device is known to not be on the +// body, the status field of the first event must be set to UNRELIABLE. +// +// ## Heart Rate sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "heart_rate" +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: sns_std_sensor_event +// Output of the Heart Rate sensor will be populated in sns_std_sensor_event. +// +// SNS_HEART_RATE_MSGID_SNS_HEART_RATE_EVENT::data[0] = current heart rate in beats per minute (BPM) +// +// SNS_HEART_RATE_MSGID_SNS_HEART_RATE_EVENT::status specifies the reliability of the sample value +// value is of type sns_heart_rate_event_type. + +enum sns_heart_rate_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_HEART_RATE_MSGID_SNS_HEART_RATE_EVENT = 779; +} + +enum sns_heart_rate_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_HR_STATUS_NO_CONTACT = -1; + SNS_HR_STATUS_UNRELIABLE = 0; + SNS_HR_STATUS_ACCURACY_LOW = 1; + SNS_HR_STATUS_ACCURACY_MEDIUM = 2; + SNS_HR_STATUS_ACCURACY_HIGH = 3; +} + +// Events types from heart_rate Sensor +message sns_heart_rate_event +{ + required float heart_rate = 1; + required sns_heart_rate_event_type heart_rate_event_type = 2 [default = SNS_HR_STATUS_NO_CONTACT]; +} \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/proto/sns_hinge_angle.proto b/proprietary/vendor/etc/sensors/proto/sns_hinge_angle.proto new file mode 100644 index 0000000..0e8e8eb --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_hinge_angle.proto @@ -0,0 +1,83 @@ + +// @file sns_hinge_angle.proto +// +// Defines message types for the Hinge Angle Sensor. +// +// Copyright (c) 2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Hinge Angle Sensor detects the angle between two rigid bodies connected by a hinge +// around which rotation can occur. +// +// The reference position for Hinge Angle measurement constitues the two rigid bodies being +// parallel to the ground, with surfaces in contact with each other and hinge connecting +// the left edges of the two rigid bodies. +// The rigid body that is located below is defined to be the primary rigid body. +// The rigid body which is located above is defined to be the secondary rigid body. +// +// The Hinge Angle Sensor detects the angle going from the primary rigid body to the +// secondary rigid body, measured counter clockwise around the hinge. The maximum range of +// reported angles will be from 0 degrees to 360 degrees. +// +// A Hinge Angle of 0 degrees is reported when the two rigid bodies have the same surfaces, +// as described in the reference position, in contact with each other. +// +// A Hinge Angle of 360 degrees is reported when the two rigid bodies have the opposite +// surfaces, to those described in the reference position, in contact with each other. +// +// A Hinge Angle of 180 degrees is reported when the two rigid bodies are coplanar. + +// Attribute Requirements: +// Hingle Angle Sensor must support the following attributes +// SNS_STD_SENSOR_ATTRID_TYPE: "hinge_angle" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE +// SNS_STD_SENSOR_ATTRID_RESOLUTIONS: the smallest hinge angle in degrees that +// can be detected by the sensor +// SNS_STD_SENSOR_ATTRID_RANGES: the range of angles detected by the sensor, for +// example [0,360] + +// Request: +// A request message with message id SNS_HINGE_ANGLE_MSGID_SNS_HINGE_ANGLE_CONFIG +// and payload sns_hinge_angle_config is used to enable the Hinge Angle Sensor + +// Event: +// Hinge Angle sensor generates an event with message id +// SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_EVENT and payload sns_std_sensor_event +// when hinge angle change is detected + +// Message IDs for HINGE_ANGLE Sensor +enum sns_hinge_angle_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_HINGE_ANGLE_MSGID_SNS_HINGE_ANGLE_CONFIG = 512; +} + + +// Request Message +// Used to either request for a new configuration of the Hinge Angle Sensor or +// alter an already existing configuration +message sns_hinge_angle_config +{ + // Ids of the primary and secondary rigid bodies between which hinge angle + // is to be measured. Ids must match the SNS_STD_SENSOR_ATTRID_RIGID_BODY + // attributes of the sensors on these rigid bodies that are to be used. + repeated int32 rigid_body = 1 [(nanopb).max_count = 2]; +} + + +// Event Message +// Uses sns_std_sensor_event message defined in sns_std_sensor.proto +// The data field of the sns_std_sensor_event message contains a +// single floating point value representing the detected hinge angle +// in degrees +// The status field of the sns_std_sensor_event message contains the +// accuracy of the detected hinge angle + + + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_humidity.proto b/proprietary/vendor/etc/sensors/proto/sns_humidity.proto new file mode 100644 index 0000000..7ae47bc --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_humidity.proto @@ -0,0 +1,69 @@ +// @file sns_humidity.proto +// +// Defines the API for Humidity Sensors. +// All Humidity Sensor drivers are required to comply with this API. +// Any new functionality for Humidity Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Humidity Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "humidity". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in %RH/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in %RH unit. +// 4. The Humidity Sensor is an on-change sensor. +// 5. See sns_std_sensor.proto for other attributes. + + +// Handling stream requests: +// 1. The Humidity Sensor handles the SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// message ID for all stream enable/update requests. +// 2. The Humidity Sensor supports on-change mode of operation. +// 3. In on-change mode the Sensor could use interrupt operation and +// reports samples for only significant change in humidity. +// Example: +/- 5% change. + +// Handling stream events: +// 1. The Humidity Sensor publishes ambient relative humidity data stream +// events using the sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = Humidity data in %RH (% Relative Humidity) +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Humidity Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Humidity Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Humidity Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Humidity Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Humidity Sensor could implement other test types. + +// Handling test events: +// 1. The Humidity Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_mag.proto b/proprietary/vendor/etc/sensors/proto/sns_mag.proto new file mode 100644 index 0000000..174bfa5 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_mag.proto @@ -0,0 +1,75 @@ +// @file sns_mag.proto +// +// Defines the API for Magnetometer Sensors. +// All Magnetometer Sensor drivers are required to comply with this API. +// Any new functionality for Magnetometer Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Magnetometer Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "mag". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in µT/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in µT unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Magnetometer Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. +// 2. If the physical sensor supports hardware FIFO then the Magnetometer +// Sensor uses batching_period item in sns_std_request as the requested +// batching rate to determine hardware FIFO watermark. + +// Handling stream events: +// 1. The Magnetometer Sensor publishes ambient magnetic field data events +// using the sns_std_sensor_event message. +// 2. Each stream event contains three output data fields where data is +// in µT (micro Tesla) units and is factory calibrated. +// 3. Data in the stream is adjusted to Android coordinate system relative to a +// mobile device held with screen facing the user in it's natural orientation: +// X-axis: parallel to the screen pointing to the right +// Y-axis: parallel to the screen pointing to the top +// Z-axis: perpendicular to the screen pointing towards the user +// This conforms to the mobile device axes orientation as specified by the +// Android Sensor API. +// 4. Data in the stream event is ordered as: +// data[0] = X-axis +// data[1] = Y-axis +// data[2] = Z-axis +// 5. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 6. The Magnetometer Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 7. The Magnetometer Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and comp_matrix fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Magnetometer Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Magnetometer Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Magnetometer Sensor could implement other test types. + +// Handling test events: +// 1. The Magnetometer Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_mag_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_mag_cal.proto new file mode 100644 index 0000000..d6fc026 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_mag_cal.proto @@ -0,0 +1,32 @@ +// @file sns_mag_cal.proto +// +// Defines message types for the Mag Calibration Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_cal.proto"; + +// The Mag Calibration Sensor determines the calibration parameters +// for magnetometer sensor + +// Mag Calibration Sensor Attributes: +// - SNS_STD_SENSOR_ATTRID_TYPE: "mag_cal" +// - SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG message ID is used to +// enable the sensor +// - SNS_CAL_MSGID_SNS_CAL_RESET message ID is used to reset the algorithm +// and any previously determined calibration parameters. + +// Stream Events: +// - SNS_CAL_MSGID_SNS_CAL_EVENT message ID is used to report calibration +// parameters to the client of the sensor. The sns_cal_event message as +// defined in sns_cal.proto is used to report this data event where the +// units for the bias field in the message are in micro Tesla. + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_mot_factory_cal.proto b/proprietary/vendor/etc/sensors/proto/sns_mot_factory_cal.proto new file mode 100644 index 0000000..0476704 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_mot_factory_cal.proto @@ -0,0 +1,63 @@ +// @file sns_mot_factory_cal.proto +// +// Defines test API message types for more test command. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_mot_factory_cal_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Test config request to a physical Sensor + SNS_MOT_FACTORY_CAL_MSGID_SNS_PHYSICAL_SENSOR_TEST_CONFIG = 575; + + // Test event message from a physical Sensor + SNS_MOT_FACTORY_CAL_MSGID_SNS_PHYSICAL_SENSOR_TEST_EVENT = 1055; +} + +// Supported mot_factory_cal types for physical sensors +enum sns_mot_factory_cal_type +{ + option (nanopb_enumopt).long_names = false; + + // read. + SNS_MOT_FACTORY_CAL_TYPE_RD= 0; + + // Set. + SNS_MOT_FACTORY_CAL_TYPE_SET = 1; + + // Read bias. + SNS_MOT_FACTORY_CAL_TYPE_RD_BIAS = 2; + + // Proximity sensor threshold calibration + SNS_MOT_FACTORY_CAL_TYPE_PROX_CAL = 3; + + // Restore calibration's golden value + SNS_MOT_FACTORY_CAL_TYPE_UNDO_CAL = 4; + + //Interrupt line test + SNS_MOT_FACTORY_IRQ_LINE_TEST = 5; +} + +message sns_mot_factory_cal_config +{ + // Requested test type. + required sns_mot_factory_cal_type test_type = 1; + repeated float target_val = 2 [(nanopb).max_count = 5]; +} + +message sns_mot_factory_cal_event +{ + // Result if the test execution was successful: + // true for success + // false for failure + required bool test_passed = 1 [default = true]; + required sns_mot_factory_cal_type test_type = 2 [default = SNS_MOT_FACTORY_CAL_TYPE_RD_BIAS]; + repeated float data_val = 3; +} + diff --git a/proprietary/vendor/etc/sensors/proto/sns_oem1.proto b/proprietary/vendor/etc/sensors/proto/sns_oem1.proto new file mode 100644 index 0000000..a331eb2 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_oem1.proto @@ -0,0 +1,39 @@ +// @file sns_oem1.proto +// +// Defines standard message types for the OEM1 +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +enum sns_oem1_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_OEM1_MSGID_SNS_OEM1_DATA = 1024; +} + + +// Configuration Message +// Used to either request for a certain configuration of the Sim Sensor or +// alter an already existing configuration of the Simulation Sensor +// Uses sns_std_sensor_config defined in sns_std_sensor.proto +// The message field definitions are as follows: +// 1) float sample_rate +// containing the required sample rate of the Sim sensor in hertz + +// Data Message +// Output data event generated by the oem1 sensor. +message sns_oem1_data +{ + // oem1 Vector along axis x,y,z in m/s2 + repeated float oem1 = 1 [(nanopb).max_count = 3]; + + // Accuracy of the data + required sns_std_sensor_sample_status accuracy = 2; +} + + diff --git a/proprietary/vendor/etc/sensors/proto/sns_offbody_detect.proto b/proprietary/vendor/etc/sensors/proto/sns_offbody_detect.proto new file mode 100644 index 0000000..b198b6d --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_offbody_detect.proto @@ -0,0 +1,56 @@ +// @file sns_offbody_detect.proto +// +// Defines the API for Offbody Detection Sensors. +// +// Copyright (c) 2017-2018,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; + +// An offbody detect sensor reports every time the device transitions from +// off-body to on-body and from on-body to off-body (e.g. a wearable device +// being removed from the wrist would trigger an event indicating an off-body +// transition). +// +// This sensor must be able to detect and report an on-body to off-body +// transition within 1 second of the device being removed from the body, +// and must be able to detect and report an off-body to on-body transition +// within 5 seconds of the device being put back onto the body. +// +// ## Offbody Detection sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "offbody_detect" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: SNS_OFFBODY_DETECT_MSGID_SNS_OFFBODY_DETECT_EVENT + +// Message IDs for Offbody Detection Sensor +enum sns_offbody_detect_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_OFFBODY_DETECT_MSGID_SNS_OFFBODY_DETECT_EVENT = 772; +} + +enum sns_offbody_detect_event_type +{ + option (nanopb_enumopt).long_names = false; + + // Current state is unknown: not yet detected + SNS_OFFBODY_DETECT_EVENT_TYPE_UNKNOWN = 0; + // Device has been detected to be on-body + SNS_OFFBODY_DETECT_EVENT_TYPE_ON = 1; + // Device has been detected to be off-body + SNS_OFFBODY_DETECT_EVENT_TYPE_OFF = 2; +} + +message sns_offbody_detect_event +{ + // Detected state + required sns_offbody_detect_event_type state = 1 [default = SNS_OFFBODY_DETECT_EVENT_TYPE_UNKNOWN]; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_pedometer.proto b/proprietary/vendor/etc/sensors/proto/sns_pedometer.proto new file mode 100644 index 0000000..4b1e1b1 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_pedometer.proto @@ -0,0 +1,56 @@ +// @file sns_pedometer.proto +// +// Defines message types for the Pedometer Sensor. +// +// Copyright (c) 2017-2019 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Pedometer Sensor detects steps taken by the user +// +// The Pedometer step event includes the latest step count accumulated since +// activation. +// All clients to Pedometer get the same step event. +// The timestamp of the event indicates the time of the latest detected step. + +// Pedometer Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "pedometer" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Pedometer Sensor +enum sns_pedometer_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_PEDOMETER_MSGID_SNS_STEP_EVENT = 1028; + + SNS_PEDOMETER_MSGID_SNS_STEP_EVENT_CONFIG = 775; +} + +// Events types from Pedometer Sensor +message sns_step_event +{ + //an incrementing step count + required uint32 step_count = 1; +} + +message sns_step_event_config +{ + //current step count + required uint32 step_count = 1; +} + + +// Stream events: +// +// The sns_step_event message is used to publish updated step count +// +// The sns_step_event_config message is used to publish current step count +// to the client + diff --git a/proprietary/vendor/etc/sensors/proto/sns_pedometer_wrist.proto b/proprietary/vendor/etc/sensors/proto/sns_pedometer_wrist.proto new file mode 100644 index 0000000..65a6348 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_pedometer_wrist.proto @@ -0,0 +1,56 @@ +// @file sns_pedometer_wrist.proto +// +// Defines message types for the Pedometer_wrist Sensor. +// +// Copyright (c) 2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Pedometer_wrist Sensor detects steps taken by the user +// +// The Pedometer_wrist Step event is generated when the user takes a step. +// The event includes the latest step count accumulated since activation. +// All clients to Pedometer_wrist get the same step event. +// The timestamp of the event indicates the time of the latest detected step. + +// Pedometer_wrist Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "pedometer_wrist" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Pedometer_wrist Sensor +enum sns_pedometer_wrist_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_PEDOMETER_WRIST_MSGID_SNS_PEDOMETER_STEP_EVENT = 1028; + //send to client immediatly to inform current step count + //msg body same as sns_step_event + SNS_PEDOMETER_WRIST_MSGID_SNS_PEDOMETER_STEP_EVENT_CONFIG = 775; +} + +// Events types from Pedometer_wrist Sensor +message sns_pedometer_step_event +{ + //an incrementing step count + required uint32 step_count = 1; +} + +message sns_pedometer_step_event_config +{ + //current step count + required uint32 step_count = 1; +} + + +// Stream events: +// +// The sns_step_event message is used to publish updated step count +// +// Pedometer_wrist does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_physical_sensor_test.proto b/proprietary/vendor/etc/sensors/proto/sns_physical_sensor_test.proto new file mode 100644 index 0000000..70e7638 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_physical_sensor_test.proto @@ -0,0 +1,80 @@ +// @file sns_physical_sensor_test.proto +// +// Defines test API message types for physical sensors. +// +// All physical Sensor drivers are required to use this API to support +// self-test. SNS_PHYSICAL_SENSOR_TEST_TYPE_COM is a mandatory test type and must be +// implemented in all physical Sensor drivers. Any new or device-specific +// test type may be defined in the Sensor-specific API. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_physical_sensor_test_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Test config request to a physical Sensor + SNS_PHYSICAL_SENSOR_TEST_MSGID_SNS_PHYSICAL_SENSOR_TEST_CONFIG = 515; + + // Test event message from a physical Sensor + SNS_PHYSICAL_SENSOR_TEST_MSGID_SNS_PHYSICAL_SENSOR_TEST_EVENT = 1026; +} + +// Supported test types for physical sensors +enum sns_physical_sensor_test_type +{ + option (nanopb_enumopt).long_names = false; + + // Software test. + SNS_PHYSICAL_SENSOR_TEST_TYPE_SW = 0; + + // Sensor Hardware test. + SNS_PHYSICAL_SENSOR_TEST_TYPE_HW = 1; + + // Factory test used for Sensor calibration. + SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY = 2; + + // Communication bus test. + SNS_PHYSICAL_SENSOR_TEST_TYPE_COM = 3; +} + +// Physical Sensor test configuration request +message sns_physical_sensor_test_config +{ + // Requested test type. + required sns_physical_sensor_test_type test_type = 1; +} + +// Physical Sensor test event +message sns_physical_sensor_test_event +{ + // Result if the test execution was successful: + // true for success + // false for failure + required bool test_passed = 1 [default = true]; + + // test_type from sns_physical_sensor_test_config that + // this event corresponds to + required sns_physical_sensor_test_type test_type = 2 [default = SNS_PHYSICAL_SENSOR_TEST_TYPE_COM]; + + // Driver specific test data. This field can be used + // to pass additional information like failure codes, debug data, etc. + optional bytes test_data = 3; +} + +// Self-test and streaming concurrency requirements: +// 1. If the sensor is streaming and there is a client request to run +// self-test (any test type) then the driver: +// a. Pauses the stream +// b. Executes the self-test request to completion +// c. Resumes stream +// 2. If the self-test is running and there is a client request to start +// a sensor stream then the driver: +// a. Rejects the stream request +// b. Continues executing the self-test request to completion + diff --git a/proprietary/vendor/etc/sensors/proto/sns_pose_6dof.proto b/proprietary/vendor/etc/sensors/proto/sns_pose_6dof.proto new file mode 100644 index 0000000..3cb43e9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_pose_6dof.proto @@ -0,0 +1,70 @@ +// @file sns_pose_6dof.proto +// +// Defines the API for Pose Six Degrees of Freedom sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A pose 6dof sensor events consists of a rotation expressed as a quaternion +// and a translation expressed in SI units. Pose of the device is defined as +// the orientation of the device from a Earth Centered Earth Fixed frame and +// the translation from an arbitrary point at subscription. +// +// ## Pose 6DOF sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "pose_6dof" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the Pose 6DOF sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// Output of the Pose 6DOF sensor will be populated in sns_std_sensor_event +// +// A Pose 6DOF sensor reports the orientation of the device relative +// to the East-North-Up coordinates frame. It is obtained by +// integration of accelerometer and gyroscope readings. +// The East-North-Up coordinate system is defined as a direct +// orthonormal basis where: +// +// - X points east and is tangential to the ground. +// - Y points north and is tangential to the ground. +// - Z points towards the sky and is perpendicular to the ground. +// +// The orientation is represented by the rotation necessary to align +// the East-North-Up coordinates with the device's coordinates. That is, +// applying the rotation to the world frame (X,Y,Z) would align them with +// the device coordinates (x,y,z). +// +// The rotation can be seen as rotating the device by an angle theta around an +// axis rot_axis to go from the reference (East-North-Up aligned) device +// orientation to the current device orientation. The rotation is encoded +// as the four unitless x, y, z, w components of a unit quaternion: +// +// sns_std_sensor_event::data[0] = x*sin(theta/2) +// sns_std_sensor_event::data[1] = y*sin(theta/2) +// sns_std_sensor_event::data[2] = z*sin(theta/2) +// sns_std_sensor_event::data[3] = cos(theta/2) +// sns_std_sensor_event::data[4] = Translation along x axis from an arbitrary origin. +// sns_std_sensor_event::data[5] = Translation along y axis from an arbitrary origin. +// sns_std_sensor_event::data[6] = Translation along z axis from an arbitrary origin. +// sns_std_sensor_event::data[7] = Delta quaternion rotation x*sin(theta/2) +// sns_std_sensor_event::data[8] = Delta quaternion rotation y*sin(theta/2) +// sns_std_sensor_event::data[9] = Delta quaternion rotation z*sin(theta/2) +// sns_std_sensor_event::data[10] = Delta quaternion rotation cos(theta/2) +// sns_std_sensor_event::data[11] = Delta translation along x axis. +// sns_std_sensor_event::data[12] = Delta translation along y axis. +// sns_std_sensor_event::data[13] = Delta translation along z axis. +// sns_std_sensor_event::data[14] = Sequence number; ascending sequentially from 0 + +// Where: +// - the x, y and z fields of rot_axis are the East-North-Up coordinates +// of a unit length vector representing the rotation axis +// - theta is the rotation angle +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_ppg.proto b/proprietary/vendor/etc/sensors/proto/sns_ppg.proto new file mode 100644 index 0000000..d34368a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ppg.proto @@ -0,0 +1,46 @@ +// @file sns_ppg.proto +// +// Defines the API for PPG Sensors. +// +// Copyright (c) 2017-2018,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; + +// Attribute requirements: +// The PPG Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "ppg". +// 2. SNS_STD_SENSOR_ATTRID_RATES attribute values in Hz. + +// Handling stream requests: +// 1. The PPG Sensor handles the sns_std_sensor_config +// message request with msgid SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG +// for all stream enable/update requests. +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_STREAMING +// 2. The PPG Sensor uses batching_period item in +// sns_std_request as the requested batching rate to determine +// hardware FIFO watermark. + +// Handling stream events: +// 1. The PPG Sensor publishes PPG data stream events +// using the sns_std_sensor_event message. +// 2. Each stream event contains three output data fields +// data[0] => PPG ch1 +// data[1] => PPG ch2 +// data[2] => PPG ch3 +// data[3] => PPG ch4 +// data[4] => TOUCH_FLAG. 128 if onbody detect, 0 otherwise +// data[5] => WEAR_INDEX. 1 if wear loose, 0 otherwise +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The PPG Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_pressure.proto b/proprietary/vendor/etc/sensors/proto/sns_pressure.proto new file mode 100644 index 0000000..97262cd --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_pressure.proto @@ -0,0 +1,65 @@ +// @file sns_pressure.proto +// +// Defines the API for Pressure Sensors. +// All Pressure Sensor drivers are required to comply with this API. +// Any new functionality for Pressure Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Pressure Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "pressure". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute values in hectoPascal/LSB unit. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in hectoPascal unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Pressure Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. +// 2. If the physical sensor supports hardware FIFO then the Pressure +// Sensor uses batching_period item in sns_std_request as the requested +// batching rate to determine hardware FIFO watermark. + +// Handling stream events: +// 1. The Pressure Sensor publishes atmospheric pressure data stream events +// using the sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = Pressure data in hPa (hectoPascal) +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Pressure Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Pressure Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Pressure Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Pressure Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Pressure Sensor could implement other test types. + +// Handling test events: +// 1. The Pressure Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_proximity.proto b/proprietary/vendor/etc/sensors/proto/sns_proximity.proto new file mode 100644 index 0000000..04088da --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_proximity.proto @@ -0,0 +1,152 @@ +// @file sns_proximity.proto +// +// Defines the API for Proximity Sensors. +// All Proximity Sensor drivers are required to comply with this API. +// Any new functionality for Proximity Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2019 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Proximity Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "proximity". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute is not applicable since this +// is an event sensor. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in cm unit (proximity distance). +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Proximity Sensor supports both streaming and on-change +// modes and the operating mode is configured in the Registry. +// 2. The streaming Proximity Sensor handles the sns_std_sensor_config request +// for all stream enable/update requests. +// 3. The on-change Proximity Sensor handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG request for +// all on-change enable/update requests. +// 4. In on-change mode the Sensor uses interrupt operation and reports +// samples only for NEAR/FAR transitions. + +// Message IDs for proximity Sensor +enum sns_proximity_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: sns_proximity_event + // Purpose: A non-recurring output data event from the proximity sensor to its client. + SNS_PROXIMITY_MSGID_SNS_PROXIMITY_EVENT = 769; + + // No payload + // Purpose: Send this message to force a recalibration + MOT_PROXIMITY_MSGID_SNS_PROXIMITY_RECAL_CONFIG = 870; + + // Uses message: mot_proximity_recal_event + // Purpose: This message is sent whenever a recalibration is complete + MOT_PROXIMITY_MSGID_SNS_PROXIMITY_RECAL_EVENT = 871; + + // Force a log dump of registers to debug a prox/als lockup + MOT_PROXIMITY_MSGID_SNS_PROXIMITY_REG_DUMP = 872; + + // To notify adsp that a new client comes from AP side + MOT_PROXIMITY_MSGID_AP_ENABLE_PROX_REQ = 873; + + // Uses message: sns_proximity_event_recurrent + // Purpose: A recurring output data event from the proximity sensor to its client. + SNS_PROXIMITY_MSGID_SNS_PROXIMITY_EVENT_RECURRENT = 1031; +} + +enum sns_proximity_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_PROXIMITY_EVENT_TYPE_FAR = 0; + SNS_PROXIMITY_EVENT_TYPE_NEAR = 1; +} + +// Events types from proximity Sensor +message sns_proximity_event +{ + // Proximity NEAR/FAR output event + required sns_proximity_event_type proximity_event_type = 1 [default = SNS_PROXIMITY_EVENT_TYPE_FAR]; + + // Proimity sensor raw data + required uint32 raw_adc = 2; + + // Proximity sensor sample status + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message sns_proximity_event_recurrent +{ + // Proximity NEAR/FAR output event + required sns_proximity_event_type proximity_event_type = 1 [default = SNS_PROXIMITY_EVENT_TYPE_FAR]; + + // Proimity sensor raw data + required uint32 raw_adc = 2; + + // Proximity sensor sample status + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +enum mot_proximity_recal_cause { + option (nanopb_enumopt).long_names = false; + + MOT_PROXIMITY_RECAL_CAUSE_COMMANDED = 0; + MOT_PROXIMITY_RECAL_CAUSE_STARTUP = 1; + MOT_PROXIMITY_RECAL_CAUSE_PDATA0 = 2; +} + +//Event for proximity sensor recalibration +message mot_proximity_recal_event +{ + //The reason the prox sensor was recalibrated + required mot_proximity_recal_cause proximity_recal_cause = 1 [default = MOT_PROXIMITY_RECAL_CAUSE_PDATA0]; + + //The new value for PDATA + required uint32 pdata = 2; + + //The new value for offset + required int32 offset = 3; + + //The new value for low threshold + required uint32 threshold_low = 4; + + //The new value for high threshold + required uint32 threshold_high = 5; +} + +// Handling stream events: +// 1. The Proximity Sensor publishes object proximity data stream events +// using sns_proximity_event message. +// 2. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 3. The Proximity Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is a change in hardware config of the sensor +// and contains current physical sensor config of the sensor. + +// Handling self-test requests: +// 1. The Proximity Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Proximity Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. The factory test for Proximity Sensor calibrates +// the sensor to detect an object (including light and dark colored) +// at 5 cm distance from the physical sensor. +// 3. The Proximity Sensor could implement other test types. + +// Handling test events: +// 1. The Proximity Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_psmd.proto b/proprietary/vendor/etc/sensors/proto/sns_psmd.proto new file mode 100644 index 0000000..b926657 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_psmd.proto @@ -0,0 +1,59 @@ +// @file sns_psmd.proto +// +// Defines the API for Persistent Stationary/Motion Detection Sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// A persistent stationary/motion sensor reports once +// - The device is moving/not still +// - The device is detected to be still/stationary +// The period of time to monitor for motion and stationarity should be greater +// than 5 seconds, and less than 10 seconds. After reporting, conceptually +// the algorithm's state is reset, and detection begins again. +// +// Motion here refers to any mechanism in which the device is causes to be +// moved in its inertial frame. eg: Picking up the device and walking with it +// to a nearby room may trigger motion whereas keeping the device on a table +// on a smooth train moving at constant velocity may not trigger motion. +// +// Stationarity here refers to absolute stationarity. eg: device on desk. +// +// ## Persistent Stationary/Motion Detect sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "psmd" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Message IDs for Persistent Stationary/Motion Sensor +enum sns_psmd_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Configuration Request + SNS_PSMD_MSGID_SNS_PSMD_CONFIG = 512; + + // Empty Event + // Indicates that the requested state has been detected + SNS_PSMD_MSGID_SNS_PSMD_EVENT = 768; +} + +// Detected states supported by the PSM Detector +enum sns_psmd_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_PSMD_TYPE_STATIONARY = 0; + SNS_PSMD_TYPE_MOTION = 1; +} + +// Configuration Message +// Used to specify the PSMD configuration +message sns_psmd_config +{ + // Which detector type to enable + required sns_psmd_type type = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_registry.proto b/proprietary/vendor/etc/sensors/proto/sns_registry.proto new file mode 100644 index 0000000..79acf7d --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_registry.proto @@ -0,0 +1,86 @@ +// @file sns_registry.proto +// +// Sensors Registry message definitions for internal and external clients +// +// Copyright (c) 2017,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; + +// Registry Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "registry" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_SINGLE_OUTPUT + +// Registry Sensor message IDs: +enum sns_registry_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_REGISTRY_MSGID_SNS_REGISTRY_READ_REQ = 512; + SNS_REGISTRY_MSGID_SNS_REGISTRY_WRITE_REQ = 513; + // The following event was mistakenly given an invalid message ID + SNS_REGISTRY_MSGID_SNS_REGISTRY_READ_EVENT = 514; + SNS_REGISTRY_MSGID_SNS_REGISTRY_WRITE_EVENT = 768; +} + +message sns_registry_data +{ + message item + { + option (nanopb_msgopt).no_unions = true; + + // Item name (i.e. Only item-specific name, sans group name) + required string name = 1; + optional fixed32 version = 2; + + oneof data + { + sns_registry_data subgroup = 10; + string str = 11; + float flt = 12; + sfixed64 sint = 13; + } + } + repeated item items = 3; +} + +// All read requests will be replied with a read event +message sns_registry_read_req +{ + // Full name of the item or group to be read + required string name = 1; +} + +message sns_registry_read_event +{ + // Full name of the group which was read + required string name = 1; + + // If the requested registry group was not found, data is empty + required sns_registry_data data = 2; +} + +// All write requests will be replied with a write event +message sns_registry_write_req +{ + // Full name of the group to be written + required string name = 1; + + required sns_registry_data data = 2; +} + +// Registry write status +enum sns_registry_write_status +{ + option (nanopb_enumopt).long_names = false; + + // The registry write was successful, and the data was stored on the FS + SNS_REGISTRY_WRITE_STATUS_SUCCESS = 0; + // An unspecified error has occurred; data may be lost + SNS_REGISTRY_WRITE_STATUS_ERROR_OTHER = 1; +} + +message sns_registry_write_event +{ + required sns_registry_write_status status = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_resampler.proto b/proprietary/vendor/etc/sensors/proto/sns_resampler.proto new file mode 100644 index 0000000..cd69bd9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_resampler.proto @@ -0,0 +1,90 @@ +// @file sns_resampler.proto +// +// Defines standard message types for the Resampler +// +// Copyright (c) 2016-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; +import "sns_std_event_gated_sensor.proto"; + +// Resampler Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "resampler" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_STREAMING + +// Sensor output event: +// Resampler use sns_std_sensor_event for it's output event + +enum sns_resampler_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_RESAMPLER_MSGID_SNS_RESAMPLER_CONFIG = 512; + SNS_RESAMPLER_MSGID_SNS_RESAMPLER_CONFIG_EVENT = 776; +} + +// Type of requested resampled rate +enum sns_resampler_rate +{ + option (nanopb_enumopt).long_names = false; + + // Requested resampled rate is fixed + SNS_RESAMPLER_RATE_FIXED = 0; + + // Requested resampled rate is the minimum required + SNS_RESAMPLER_RATE_MINIMUM = 1; +} + +// Resampler output quality +enum sns_resampler_quality +{ + option (nanopb_enumopt).long_names = false; + + // Resampler output is the same as input sensor data + SNS_RESAMPLER_QUALITY_CURRENT_SAMPLE = 0; + + // Resampler output is filtered down from input sensor data + SNS_RESAMPLER_QUALITY_FILTERED = 1; + + // Resampler output is interpolated and filtered down from input sensor data + SNS_RESAMPLER_QUALITY_INTERPOLATED_FILTERED = 2; + + // Resampler output is interpolated down from input sensor data + SNS_RESAMPLER_QUALITY_INTERPOLATED = 3; +} + +// Configuration Message +// Used to either request for a new configuration of the Resampler Sensor or +// alter an already existing configuration +message sns_resampler_config +{ + // UID of the Sensor to be resampled + required sns_std_suid sensor_uid = 1; + + // The requested resampled rate in Hz + required float resampled_rate = 2; + + // The requested rate type as defined in sns_resampler_rate + required sns_resampler_rate rate_type = 3; + + // Set to true to enable filtering, else false + required bool filter = 4; + + // Set to true if sensor to be resampled is event gated + optional bool event_gated = 5; + + // Number of axes of the sensor data + optional uint32 axis_cnt = 6; +} + +// Config event to inform client sample quality +// of all subsequent sns_std_sensor_event from resampler +message sns_resampler_config_event +{ + // Quality of the resampled sensor data as defined in + // sns_resampler_quality + required sns_resampler_quality quality = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_rgb.proto b/proprietary/vendor/etc/sensors/proto/sns_rgb.proto new file mode 100644 index 0000000..63a63ab --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_rgb.proto @@ -0,0 +1,78 @@ +// @file sns_rgb.proto +// +// Defines the API for RGB Sensors. +// All RGB Sensor drivers are required to comply with this API. +// Any new functionality for RGB Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The RGB Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "rgb". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute values in µW/cm2/LSB unit. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in µW/cm2 unit. +// 4. See sns_std_sensor.proto for other attributes. + + +// Handling stream requests: +// 1. The RGB Sensor supports both streaming and on-change +// modes and the operating mode is configured in the Registry. +// 2. The streaming RGB Sensor handles the sns_std_sensor_config +// request for all stream enable/update requests. +// 3. The on-change RGB Sensor handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG request for +// all stream enable/update requests. +// 4. In on-change mode the Sensor uses interrupt operation and reports +// samples for only significant change in R/G/B/clear channel irradiance. +// Example: +/- 10% change. + +// Handling stream events: +// 1. The RGB Sensor publishes color data in ambient light using the +// sns_std_sensor_event message. +// 2. Each stream event contains six output data fields where data is +// factory calibrated and ordered as: +// data[0] = Red channel irradiance in µW/cm2 +// data[1] = Green channel irradiance in µW/cm2 +// data[2] = Blue channel irradiance in µW/cm2 +// data[3] = Clear channel irradiance in µW/cm2 +// data[4] = Color Temperature in Kelvin +// data[5] = raw clear channel ADC value +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The RGB Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The RGB Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The RGB Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The RGB Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. The factory test for RGB Sensor calibrates +// the sensor such that it's output is comparable to a standard Chromemeter +// output in any lighting condition. +// 3. The RGB Sensor could implement other test types. + +// Handling test events: +// 1. The RGB Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_rmd.proto b/proprietary/vendor/etc/sensors/proto/sns_rmd.proto new file mode 100644 index 0000000..052aeee --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_rmd.proto @@ -0,0 +1,51 @@ + +// @file sns_rmd.proto +// +// Defines message types for the Absolute Motion Detector (RMD) Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// RMD calculates motion and stationary states. RMD will initially start in an +// unknown state, and later transition to motion or stationary. + +// RMD Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "rmd" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for RMD Sensor +enum sns_rmd_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_RMD_MSGID_SNS_RMD_EVENT = 772; +} + +enum sns_rmd_event_type +{ + option (nanopb_enumopt).long_names = false; + + SNS_RMD_EVENT_TYPE_UNKNOWN = 0; + SNS_RMD_EVENT_TYPE_STATIONARY = 1; + SNS_RMD_EVENT_TYPE_MOTION = 2; +} + +message sns_rmd_event +{ + // RMD motion state + required sns_rmd_event_type state = 1 [default = SNS_RMD_EVENT_TYPE_UNKNOWN]; +} + +// Stream events: +// +// The sns_rmd_event message is used to publish updated state +// +// RMD does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_rotv.proto b/proprietary/vendor/etc/sensors/proto/sns_rotv.proto new file mode 100644 index 0000000..abe0ff8 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_rotv.proto @@ -0,0 +1,53 @@ +// @file sns_rotv.proto +// +// Defines the API for Rotation Vector sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "sns_std_sensor.proto"; + +// A ROTV sensor reports the orientation of the device relative to the +// East-North-Up coordinates frame. It is obtained by integration of +// accelerometer, gyroscope, and magnetometer readings. +// +// ## ROTV sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "rotv" +// +// ## Request Message: sns_std_sensor_config +// sns_std_sensor_config::sample_rate is used to specify the sampling rate (Hz) +// of the ROTV sensor. Sensor will generate data events at this rate. +// +// ## Event Message: sns_std_sensor_event +// Output of the ROTV sensor will be populated in sns_std_sensor_event +// +// The East-North-Up coordinate system is defined as a direct orthonormal +// basis where: +// - X points east and is tangential to the ground. +// - Y points north and is tangential to the ground. +// - Z points towards the sky and is perpendicular to the ground. +// +// The orientation is represented by the rotation necessary to align +// the East-North-Up coordinates with the device's coordinates. That is, +// applying the rotation to the world frame (X,Y,Z) would align them with +// the device coordinates (x,y,z). +// +// The rotation can be seen as rotating the device by an angle theta around an +// axis rot_axis to go from the reference device orientation to the current +// device orientation. The rotation is encoded as the four unitless x, y, z, w +// components of a unit quaternion: +// sns_std_sensor_event::data[0] = rot_axis.x*sin(theta/2) +// sns_std_sensor_event::data[1] = rot_axis.y*sin(theta/2) +// sns_std_sensor_event::data[2] = rot_axis.z*sin(theta/2) +// sns_std_sensor_event::data[3] = cos(theta/2) +// +// Where: +// - the x, y and z fields of rot_axis are the East-North-Up coordinates +// of a unit length vector representing the rotation axis +// - theta is the rotation angle +// +// sns_std_sensor_event::status specifies the reliability of the sample value +// value is of type sns_std_sensor_sample_status. see sns_std_sensor.proto for +// details. diff --git a/proprietary/vendor/etc/sensors/proto/sns_sar.proto b/proprietary/vendor/etc/sensors/proto/sns_sar.proto new file mode 100644 index 0000000..c832b4c --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_sar.proto @@ -0,0 +1,117 @@ +// @file sns_sar.proto +// +// Defines the API for Specific Absorption Rate (SAR) Sensors. +// SAR sensors typically detect human object proximity using change in capacitance +// levels of copper touch pads/buttons. +// All SAR Sensor drivers are required to comply with this API. +// Any new functionality for SAR Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2018,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The SAR Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "sar". +// Each SAR sensor (example individual capacitive button) shall be published +// as an independent sensor with a unique Sensor UID. +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute is not applicable since this +// is an event sensor. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in cm unit (proximity distance). +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream and on-change requests: +// 1. The SAR sensor can support both streaming and on-change +// modes, and the operating mode is configured in the Registry. +// 2. In streaming mode, the SAR sensor handles the sns_std_sensor_config +// client requests, for all stream enable/update request types. +// 3. In on-change mode, the SAR sensor handles the +// SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG client requests, +// for all on-change enable/update request types. +// In on-change mode, the SAR sensor reports samples only for +// NEAR/FAR transitions triggered by the detection of an object +// (typically human) in proximity to the SAR sensor. +// Also for this mode, the SAR sensor publishes an +// initial data event for each new, on-change client request. + +// Message IDs for SAR Sensor +enum sns_sar_msgid { + option (nanopb_enumopt).long_names = false; + + // Uses message: sns_sar_event + // Purpose: A non-recurrent output data event from the SAR sensor to its client. + SNS_SAR_MSGID_SNS_SAR_EVENT = 769; + + // Uses message: sns_sar_event_recurrent + // Purpose: A recurring output data event from the SAR sensor to its client. + SNS_SAR_MSGID_SNS_SAR_EVENT_RECURRENT = 1031; +} + +enum sns_sar_event_type { + option (nanopb_enumopt).long_names = false; + + SNS_SAR_EVENT_TYPE_FAR = 0; + SNS_SAR_EVENT_TYPE_NEAR = 1; +} + +// Events types from SAR Sensor +message sns_sar_event +{ + // SAR NEAR/FAR output event + required sns_sar_event_type sar_event_type = 1 [default = SNS_SAR_EVENT_TYPE_FAR]; + + // SAR sensor raw data. + // Format of this data is driver specific. + optional bytes additional_sar_data = 2; + + // SAR sensor sample status + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +message sns_sar_event_recurrent +{ + // SAR NEAR/FAR output event + required sns_sar_event_type sar_event_type = 1 [default = SNS_SAR_EVENT_TYPE_FAR]; + + // SAR sensor raw data. + // Format of this data is driver specific. + optional bytes additional_sar_data = 2; + + // SAR sensor sample status + required sns_std_sensor_sample_status status = 3 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Handling stream events: +// 1. The SAR Sensor publishes human object proximity data events using sns_sar_event message. +// 2. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 3. The SAR Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. + +// Handling self-test requests: +// 1. The SAR Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The SAR Sensor may implement SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The SAR Sensor could implement other test types. + +// Handling test events: +// 1. The SAR Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_sensor_temperature.proto b/proprietary/vendor/etc/sensors/proto/sns_sensor_temperature.proto new file mode 100644 index 0000000..e614211 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_sensor_temperature.proto @@ -0,0 +1,66 @@ +// @file sns_sensor_temperature.proto +// +// Defines the API for physical Sensor Temperature Sensors. +// All Sensor Temperature Sensor drivers are required to comply with this API. +// Any new functionality for Sensor Temperature Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Sensor Temperature Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "sensor_temperature". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in degrees Celsius/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in degrees Celsius unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Sensor Temperature Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. +// 2. If the physical sensor supports hardware FIFO then the Sensor Temperature +// Sensor uses batching_period item in sns_std_request as the requested +// batching rate to determine hardware FIFO watermark. + +// Handling stream events: +// 1. The Sensor Temperature Sensor publishes physical sensor temperature data +// stream events using the sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = physical Sensor Temperature data in degrees Celsius +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Sensor Temperature Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Sensor Temperature Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + + +// Handling self-test requests: +// 1. The Sensor Temperature Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Sensor Temperature Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Sensor Temperature Sensor could implement other test types. + +// Handling test events: +// 1. The Sensor Temperature Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_sig_motion.proto b/proprietary/vendor/etc/sensors/proto/sns_sig_motion.proto new file mode 100644 index 0000000..d055d99 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_sig_motion.proto @@ -0,0 +1,32 @@ +// @file sns_sig_motion.proto +// +// Defines the API for Significant Motion Detection Sensors. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// A significant motion sensor reports once if "significant motion" +// is detected. +// +// ## Significant Motion sensor attributes: +// SNS_STD_SENSOR_ATTRID_TYPE is "sig_motion" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_SINGLE_OUTPUT +// +// ## Request Message: SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG +// No configuration is available for this sensor. +// +// ## Event Message: SNS_SIG_MOTION_MSGID_SNS_SIG_MOTION_EVENT +// Reported upon new detection of significant motion. + +// Message IDs for Significant Motion Detect Sensor +enum sns_sig_motion_msgid { + option (nanopb_enumopt).long_names = false; + + // Empty Message + SNS_SIG_MOTION_MSGID_SNS_SIG_MOTION_EVENT = 772; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_std.proto b/proprietary/vendor/etc/sensors/proto/sns_std.proto new file mode 100644 index 0000000..b7a0630 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_std.proto @@ -0,0 +1,145 @@ +// @file sns_std.proto +// +// Defines standard messages used across multiple Sensor API definitions +// +// Copyright (c) 2016-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import public "sns_std_type.proto"; + +// Framework-defined message IDs: +enum sns_std_msgid { + option (nanopb_enumopt).long_names = false; + + // Query a Sensor for all attributes + // @event sns_std_error_event + SNS_STD_MSGID_SNS_STD_ATTR_REQ = 1; + + // Flush a Sensor. + // When a sensor receives a flush request it publishes any unpublished + // samples. The sensor always publishes a SNS_STD_MSGID_SNS_STD_FLUSH_EVENT + // event to indicate completion of a flush request. + // All Sensors handle this flush request message. See special case handling below + // Empty Message + // @event sns_pb_flush_event + SNS_STD_MSGID_SNS_STD_FLUSH_REQ = 2; + + // NOTE: 10 - 20 Are reserved for Client Manager + // NOTE: 120-127 Are reserved + + // All published attributes for a Sensor + SNS_STD_MSGID_SNS_STD_ATTR_EVENT = 128; + + // Indicates no further events will be generated in response to a flush req. + // Empty Message + SNS_STD_MSGID_SNS_STD_FLUSH_EVENT = 129; + + // Indicates an error has occurred + SNS_STD_MSGID_SNS_STD_ERROR_EVENT = 130; + + // NOTE: 250-255 Are reserved +} +// Special case handling for flush request +// 1. No prior instance has been created, and a flush request is received, i.e. flush request is sent before an enable req +// Unexpected sequence, driver can ignore the flush request, and set_client_request returns NULL +// 2. When enable request is sent and while that is still ongoing ( phy cfg event not published yet) and a flush request is received, expected sequence below: +// a) sensor driver gets sns_std_sensor_config +// b) sensor driver gets sns_std_flush_req +// c) sensor driver sends sns_std_sensor_physical_config_event +// d) sensor driver sends sns_std_flush_event +// 3. When a previous flush request is still ongoing and another flush request comes +// a) sensor driver receives sns_std_flush_req +// b) sensor driver receives another sns_std_flush_req while first flush request is being handled, but no flush event is sent yet +// c) sensor driver can ignore the 2nd flush request +// d) sensor driver finishes processing the first flush request and sends sns_std_flush_event +// #1 and # 3 applies to algorithm as well. + + +// Base message payload, from which all other Request payloads must extend +// The message will be delivered decoded within the Sensor API +message sns_std_request { + message batch_spec { + // Logically a timer will be registered for this many microseconds. + // All events generated since the last timer expiration will be saved + // until the next timer has fired. This period is interpreted as a maximum + // period specified by the client; events may be delivered to client at a + // faster rate (smaller batch period). + // A batch period of 0 indicates that no batching shall occur. + required uint32 batch_period = 1; + + // Sensor supporting Data Acquisition Engine shall support flush_period. + // Sensor shall not drop data that is more recent than flush_period. + // Sensor may drop data that is older than the flush_period. + // Effective flush period may be smaller due to system constraints, + // or larger in the case of a concurrent client with a larger value. + // flush_period, if set, should be greater than or equal to batch_period. + // flush_period value defaults to UINT32_MAX; units in microseconds. + // If batch_period > 0 and flush period not specified, + // then flush_period = batch_period. + optional uint32 flush_period = 2; + + // If flush_only = true, the sensor should only send data to the client + // on receiving a flush request or if the sensor cannot accumulate flush + // period worth of data. + optional bool flush_only = 3 [default = false]; + + // If max_batch = true for all requests, the sensor should operate at + // maximum batching capacity. If a request has both max_batch = true + // and flush_only = true, flush_only takes precedence. + optional bool max_batch = 4 [default = false]; + } + // Batching is disabled by default + optional batch_spec batching = 1; + + // Dynamic length payload, containing the actual data/configuration request + // This payload will need to be decoded separately, using the Sensor-specific + // header file. If the request does not contain any message body then this + // field is not present. + optional bytes payload = 2; + + // Set to true if a client intends to be a passive client. Else it is an + // active client request. Absence of this field shall be treated as an active + // request. + // If all requests to the sensor are passive then it shall be in off + // state and stop streaming. + // If the sensor has at least one active request then it shall be enabled + // and configured according to all active and passive requests. + // When all active clients are flush_only then passive clients are also treated + // as flush_only. + // When all active clients are event gated then passive clients are also treated + // as event gated. + // delivery_type field in passive requests shall be configured as + // SNS_CLIENT_DELIVERY_NO_WAKEUP. + // Actively enabling one sensor shall not lead to enabling of another + // sensor having only passive requests. For example: enabling gyro shall not + // lead to enabling of sensor_temperature, and vice versa. + optional bool is_passive = 3 [default = false]; + +} + +// Query a Sensor for its list of attributes +message sns_std_attr_req { + // Register for updates when the attributes of a Sensor change + // This option is not presently supported + optional bool register_updates = 2; +} + +// Contains all Sensor attributes; sent in response to an sns_std_attr_req, +// or upon an attribute change to a registered Sensor +message sns_std_attr_event { + repeated sns_std_attr attributes = 1; +} + +// An Error Event generated by a Sensor/Instance or the Framework +message sns_std_error_event { + // SNS_STD_ERROR_NOT_AVAILABLE - Transitory error in the Sensor; some data + // may have been lost or dropped, but streaming should resume. + // SNS_STD_ERROR_INVALID_STATE - Catastrophic error in the Sensor; do not + // expect any further data. Client may try sending enable-request again. + // SNS_STD_ERROR_NOT_SUPPORTED - Sensor received an unsupported request; or a + // supported request at an unexpected time. Client may not expect any + // further data and may try sending valid request. + required sns_std_error error = 1; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_std_event_gated_sensor.proto b/proprietary/vendor/etc/sensors/proto/sns_std_event_gated_sensor.proto new file mode 100644 index 0000000..7e49cb9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_std_event_gated_sensor.proto @@ -0,0 +1,45 @@ +// @file sns_std_event_gated_sensor.proto +// +// Defines standard message types for Sensors with output streams that can be +// gated on an event from another Sensor. +// Example: "accel" Sensor can be gated by motion detect event published by +// the "motion_detect" Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +enum sns_std_event_gated_sensor_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Message ID to send a gated request to a Sensor. + // Note that the client is responsible to send separate + // requests to the Sensor that provides the gating event. + SNS_STD_EVENT_GATED_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG = 518; + + // An event gated Sensors uses this event message ID to indicate to it's + // clients that the gated stream is converted to a non-gated stream. + // This typically happens when the gating event occurs. + // Example: When "accel" is gated on "motion_detect" and if the + // motion detect interrupt fires then the "accel" Sensor publishes + // this event to it's clients before the accel data stream starts. + SNS_STD_EVENT_GATED_SENSOR_MSGID_GATED_REQ_CONVERTED_TO_NON_GATED = 772; +} + +// Request and Event messages: +// 1. An enable request to an event gated sensor uses message +// sns_std_sensor_config with message ID +// SNS_STD_EVENT_GATED_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG. +// 2. An event gated sensor publishes an output event to it's clients when +// the gated request is converted to a non-gated request. It uses event +// message ID SNS_STD_EVENT_GATED_SENSOR_MSGID_GATED_REQ_CONVERTED_TO_NON_GATED +// with no message payload. +// 3. An output data event from an event gated sensor uses message +// sns_std_sensor_event. See sns_std_sensor.proto and sensor-specific +// proto file for details. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_std_sensor.proto b/proprietary/vendor/etc/sensors/proto/sns_std_sensor.proto new file mode 100644 index 0000000..771354e --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_std_sensor.proto @@ -0,0 +1,412 @@ +// @file sns_std_sensor.proto +// +// Defines standard message types for all Sensors. All physical Sensors are +// required to implement this API as is or derive from it. For all other +// Sensors, these messages are highly recommended. That being said, Sensor +// developers may choose to define Sensor-specific message API for any +// new/Sensor-specific functionality. +// +// Copyright (c) 2016-2021 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; + +enum sns_std_sensor_msgid +{ + option (nanopb_enumopt).long_names = false; + + // Uses message: sns_std_sensor_config + // Purpose: + // 1. A stream request from a client to a sensor. + // 2. A config/ack event from a sensor to the client. + SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_CONFIG = 513; + + // Does not use any message body. + // Purpose: + // 1. An enable request from a client to an on-change sensor. + // Subsequent request from same client will be treated as NOP + // 2. A config/ack event from an on-change sensor to the client. + // Requirements for on-change sensors are listed in a section below. + SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG = 514; + + // Uses message: sns_std_sensor_physical_config_event + // Purpose: A configuration event from a Physical Sensor (streaming and event) + // to the client. + // Requirements for physical configuration events are listed in a section + // below. + SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_PHYSICAL_CONFIG_EVENT = 768; + + // Uses message: sns_std_sensor_event + // Purpose: A data event from a Sensor. + SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_EVENT = 1025; +} + +// Status for each sensor sample +enum sns_std_sensor_sample_status +{ + option (nanopb_enumopt).long_names = false; + + // Sample is unreliable. + SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE = 0; + + // Sample is low accuracy. + SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_LOW = 1; + + // Sample is medium accuracy. + SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_MEDIUM = 2; + + // Sample is high accuracy. + SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH = 3; +} + +// Attribute IDs available for use by Sensors +// Some are marked as REQUIRED, and must be published by every Sensor. Others +// are OPTIONAL, and may be only necessary for physical Sensors. +// +// Each Sensor may define their own custom attributes, using the form: +// _attr_id. Attribute IDs have the following reserved ranges: +// 0-511 : Held for sns_std_sensor_attr_id +// 512-1023 : Reserved for internal QTI use +// 1024-1535 : Available for use by Sensor developers +enum sns_std_sensor_attr_id +{ + option (nanopb_enumopt).long_names = false; + + // REQUIRED + // String + // Human-readable sensor name + SNS_STD_SENSOR_ATTRID_NAME = 0; + + // REQUIRED + // String + // Human-readable vendor name + SNS_STD_SENSOR_ATTRID_VENDOR = 1; + + // REQUIRED + // String + // Data Type used by this Sensor + SNS_STD_SENSOR_ATTRID_TYPE = 2; + + // REQUIRED + // Boolean + // Whether this Sensor is available for clients + SNS_STD_SENSOR_ATTRID_AVAILABLE = 3; + + // REQUIRED + // Integer 64-bit version number represented as major[31:16].minor[15:8].revision[7:0], [63:32] be 0 + // Example in hexadecimal: major:0x0002 minor:0x00 revision:0x36 #define DRIVER_VERSION 0x00020036 + // Sensor version + SNS_STD_SENSOR_ATTRID_VERSION = 4; + + // REQUIRED + // [String] + // .proto files specifying the incoming request and outgoing event messages + SNS_STD_SENSOR_ATTRID_API = 5; + + // OPTIONAL + // [Float] + // Supported sample rates in Hz + SNS_STD_SENSOR_ATTRID_RATES = 6; + + // OPTIONAL + // [Float] + // Supported resolutions + SNS_STD_SENSOR_ATTRID_RESOLUTIONS = 7; + + // OPTIONAL + // Integer + // Supported FIFO depth in number of samples + SNS_STD_SENSOR_ATTRID_FIFO_SIZE = 8; + + // OPTIONAL + // [Integer] + // Active currents in uA for all sns_attr_op_modes. Length of the array + // of active currents must match the length of the array of operation modes. + SNS_STD_SENSOR_ATTRID_ACTIVE_CURRENT = 9; + + // OPTIONAL + // Integer + // Inactive current in uA + SNS_STD_SENSOR_ATTRID_SLEEP_CURRENT = 10; + + // OPTIONAL + // [{float,float}] + // Supported operating ranges + SNS_STD_SENSOR_ATTRID_RANGES = 11; + + // OPTIONAL + // String + // Operating Modes ("LPM", "HIGH_PERF", "NORMAL", "OFF") + SNS_STD_SENSOR_ATTRID_OP_MODES = 12; + + // OPTIONAL + // Boolean + // Whether the Sensor supports Data Ready Interrupt (DRI) or IBI + // (In Band Interrupt). + SNS_STD_SENSOR_ATTRID_DRI = 13; + + // OPTIONAL + // Boolean + // Whether a Sensor support synchronized streaming. + SNS_STD_SENSOR_ATTRID_STREAM_SYNC = 14; + + // OPTIONAL + // Integer + // Encoded message size of the data event generated most often by the Sensor + SNS_STD_SENSOR_ATTRID_EVENT_SIZE = 15; + + // REQUIRED + // Integer: sns_std_sensor_stream_type + // Streaming Type + SNS_STD_SENSOR_ATTRID_STREAM_TYPE = 16; + + // OPTIONAL + // Boolean + // Whether this Sensor is dynamic (connected/disconnected at runtime) + SNS_STD_SENSOR_ATTRID_DYNAMIC = 17; + + // OPTIONAL + // Integer + // When multiple Sensors of the same hardware exist, this attribute differentiates. + SNS_STD_SENSOR_ATTRID_HW_ID = 18; + + // OPTIONAL + // Integer: sns_std_sensor_rigid_body_type + // The rigid body on which the Sensor is placed. + SNS_STD_SENSOR_ATTRID_RIGID_BODY = 19; + + // OPTIONAL + // float[12] + // Location and orientation of sensor element in the device frame. + SNS_STD_SENSOR_ATTRID_PLACEMENT = 20; + + // OPTIONAL + // Boolean + // Boolean: True for a physical sensor + SNS_STD_SENSOR_ATTRID_PHYSICAL_SENSOR = 21; + + // OPTIONAL + // [Integer] + // List of supported self-test types from sns_physical_sensor_test_type. + SNS_STD_SENSOR_ATTRID_PHYSICAL_SENSOR_TESTS = 22; + + // OPTIONAL + // Float + // Sensors chosen resolution in it's engineering units. + SNS_STD_SENSOR_ATTRID_SELECTED_RESOLUTION = 23; + + // OPTIONAL + // float[2] + // Sensors chosen {min, max} range in it's engineering units. + SNS_STD_SENSOR_ATTRID_SELECTED_RANGE = 24; + + // OPTIONAL + // [float] + // List of additional sample rates for low latency clients in Hz. + // These are additional rates for low latency clients extended from list + // of rates published in attribute SNS_STD_SENSOR_ATTRID_RATES. + // This is supported for internal clients only. External clients shall not use this API. + SNS_STD_SENSOR_ATTRID_ADDITIONAL_LOW_LATENCY_RATES = 25; + + // OPTIONAL + // Boolean + // Boolean: True if the sensor supports passive request, False otherwise. + // If this attribute is not supported, then the sensor does not support passive requests. + // Sensors that do not support passive requests, will service all requests as active requests. + SNS_STD_SENSOR_ATTRID_PASSIVE_REQUEST = 26; + + // OPTIONAL + // float + // direct channel supported max sample rate in Hz + SNS_STD_SENSOR_ATTRID_DIRECT_CHANNEL_MAX_SAMPLE_RATE = 27; + + // OPTIONAL + // float + // direct channel supported max report rate in Hz + SNS_STD_SENSOR_ATTRID_DIRECT_CHANNEL_MAX_REPORT_RATE = 28; +} + +// Sensor stream configuration request +// or configuration change message +message sns_std_sensor_config +{ + // Sample rate in Hz. + required float sample_rate = 1; +} + +// Sensor data event +message sns_std_sensor_event +{ + // Output data field for all Sensor. + repeated float data = 1; + + // Event sample status. + required sns_std_sensor_sample_status status = 2 [default = SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE]; +} + +// Stream types +enum sns_std_sensor_stream_type +{ + option (nanopb_enumopt).long_names = false; + + // Used for Sensors that report data periodically. + // Example: accel, gyro, mag + SNS_STD_SENSOR_STREAM_TYPE_STREAMING = 0; + + // Used for Sensors that report data only on change in value. + // Example: proximity, hall + SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE = 1; + + // Used for Sensors that have a single data event in reponse to a request. + // Example: SUID, motion detect + SNS_STD_SENSOR_STREAM_TYPE_SINGLE_OUTPUT = 2; +} + +// Rigid body types +enum sns_std_sensor_rigid_body_type +{ + option (nanopb_enumopt).long_names = false; + + // Used for a Sensor mounted on the same rigid body as the display. + SNS_STD_SENSOR_RIGID_BODY_TYPE_DISPLAY = 0; + + // Used for a Sensor mounted on the same rigid body as a keyboard. + SNS_STD_SENSOR_RIGID_BODY_TYPE_KEYBOARD = 1; + + // Used for a Sensor that is mounted on an external device. + SNS_STD_SENSOR_RIGID_BODY_TYPE_EXTERNAL = 2; +} + +// Sensor stream configuration event +message sns_std_sensor_config_event +{ + // Current sample rate in Hz + required float sample_rate = 1; +} + +// Physical sensor stream configuration. This message reflects the current +// configuration of the physical sensor. +message sns_std_sensor_physical_config_event +{ + // Current sample rate in Hz for streaming sensors only, 0 if sensor is disabled + // ( ex: when event gated or in passive mode and not streaming ) + // Note: if stream will be synchronized via S4S or I3C, this is the sample + // rate after synchronization is complete. + optional float sample_rate = 1; + + // Current hardware water mark setting. 1 if FIFO not in use. + optional uint32 water_mark = 2; + + // Sensor sample value min and max range + repeated float range = 3 [(nanopb).max_count = 2]; + + // Sensor sample value Resolution + optional float resolution = 4; + + // Sensor operation mode + // If all requests to the sensor are passive then it shall use + // operating_mode = "OFF" + optional string operation_mode = 5; + + // Sensor active current in uA + optional uint32 active_current = 6; + + // Sensor streaming is synchronized via methods like S4S and/or I3C. + // Note: if the stream is not yet synchronized, this field should be + // false, and an additional config event sent with stream_is_synchronous + // set to true once the clocks have been synchronized. + optional bool stream_is_synchronous = 7; + + // Sensor has enabled Data Ready Interrupt (DRI) or In Band Interrupt (IBI) + optional bool dri_enabled = 8; + + // Current DAE water mark setting. 0 if non-DAE sensor. + optional uint32 DAE_watermark = 9; + + // The sync anchor is only valid for synchronized sensors. + // If used, "stream_is_synchronous" should eventually be set to true when the clocks are synchronized. + // It is a timestamp of a future (or past) sns_std_sensor_event. + // This may be used by clients to determine the synchronized timeline before it is synchronized. + optional uint64 sync_ts_anchor = 10; +} + +// Attribute requirements: +// The Physical Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_AVAILABLE attribute value (bool) as true when it's dependencies +// are met and the hardware is present and responsive. +// 2. SNS_STD_SENSOR_ATTRID_NAME attribute value (string) as the name of the sensor model. +// 3. SNS_STD_SENSOR_ATTRID_VENDOR attribute value (string) as the name of the sensor vendor. +// 4. SNS_STD_SENSOR_ATTRID_VERSION attribute value (decimal) as the version of the driver. +// 5. SNS_STD_SENSOR_ATTRID_RATES attribute as a float array of supported sample rates in Hz +// for streaming sensors. On-change sensors publish the highest rate of value change. +// 6. SNS_STD_SENSOR_ATTRID_FIFO_SIZE attribute value (decimal) as the maximum FIFO depth in +// number of sensor samples available to it when enabled standalone. +// The value can be zero if FIFO is not supported. +// 7. SNS_STD_SENSOR_ATTRID_ACTIVE_CURRENT attribute as an integer array representing active +// currents in uA corresponding to the sns_attr_op_modes attribute. +// 8. SNS_STD_SENSOR_ATTRID_SLEEP_CURRENT attribute value (float) as the current in uA when +// the sensor is in power down mode. +// 9. SNS_STD_SENSOR_ATTRID_OP_MODES attribute value as an array of string values +// representing different hardware operating modes. +// 10. SNS_STD_SENSOR_ATTRID_DRI attribute value (bool) as true when it supports +// interrupt based streaming else false when polling. +// The source of data ready interrupt (DRI) could be completion of measurement +// cycle, FIFO water mark (if sns_attr_fifo_size value is greater than 0), +// threshold, etc. +// If the sensor is capable of streaming in both polling and DRI modes then +// it publishes separate Sensors for each mode such that the one with DRI +// publishes SNS_STD_SENSOR_ATTRID_DRI value as true and the one with polling +// publishes SNS_STD_SENSOR_ATTRID_DRI as false. +// 11. SNS_STD_SENSOR_ATTRID_STREAM_SYNC attribute value (bool) as true when it +// it supports a synchronous streaming mechanism like S4S and/or I3C. +// 12. SNS_STD_SENSOR_ATTRID_EVENT_SIZE attribute value (decimal) as number of bytes in the +// output data event for the Sensor. +// 13. SNS_STD_SENSOR_ATTRID_STREAM_TYPE attribute value (sns_std_sensor_stream_type) as the +// supported stream type. +// 14. SNS_STD_SENSOR_ATTRID_DYNAMIC attribute value (bool) to indicate whether the sensor +// can be added at runtime. +// 15. SNS_STD_SENSOR_ATTRID_HW_ID attribute value (string) to uniquely identify multiple +// sensor hardware of the same model on a platform. +// 16. SNS_STD_SENSOR_ATTRID_RIGID_BODY attribute value (sns_std_sensor_rigid_body_type) as the rigid +// body on which the sensor is mounted. +// 17. SNS_STD_SENSOR_ATTRID_PLACEMENT attribute value as the location and orientation of +// the sensor hardware. +// 18. SNS_STD_SENSOR_ATTRID_PHYSICAL_SENSOR attribute value (bool) to indicate if the sensor is +// a physical sensor +// 19. SNS_STD_SENSOR_ATTRID_PHYSICAL_SENSOR_TESTS attribute value as array of supported +// sns_physical_sensor_test_type test types. +// 20. SNS_STD_SENSOR_ATTRID_SELECTED_RESOLUTION attribute value chosen from the +// SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute array. +// 21. SNS_STD_SENSOR_ATTRID_SELECTED_RANGE attribute value chosen from the +// SNS_STD_SENSOR_ATTRID_RANGES array. +// 22. SNS_STD_SENSOR_ATTRID_ADDITIONAL_LOW_LATENCY_RATES attribute as a float array of supported +// sample rates in Hz additional to rates in SNS_STD_SENSOR_ATTRID_RATES, this is only for low +// latency clients like direct report mode. +// See sensor specific .proto files for sensor specific attribute information. + +// Recommendation for device drivers to select configuration: +// 1. Choose fastest sample_rate among all client requests. +// 2. Choose fastest batch rate (using batch_period) among all client requests. For streaming clients, +// treat batch rate equal to requested sample rate for that request. +// 3. If HW FIFO is supported then: +// a. If all requests are max_batch then the driver configures highest FIFO watermark. +// If DAE is supported, the DAE watermark should be INT_MAX. +// b. Else FIFO watermark is determined based on sample_rate from #1 and batch rate from #2. + +// Requirements for on-change sensors: +// 1. Timestamp in data events. When a second (or subsequent) client request +// is processed, by a given sensor, an initial data event must be generated. +// The timestamp in this event must be equal to the timestamp of the most +// recent state transition. The timestamp of the last occurring state +// transition can be latched (e.g. in a state structure), per on-change +// sensor SUID. + +// Requirements for physical configuration events: +// 1. Timestamp in physical configuration events. When a second (or subsequent) +// client request is processed, by a given sensor, a physical configuration +// event must be generated. The timestamp, in the physical configuration +// event, must be equal to the timestamp of the most recent physical +// configuration change. The timestamp of the last occurring physical +// configuration change can be latched (e.g. in a state structure). diff --git a/proprietary/vendor/etc/sensors/proto/sns_std_type.proto b/proprietary/vendor/etc/sensors/proto/sns_std_type.proto new file mode 100644 index 0000000..0438235 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_std_type.proto @@ -0,0 +1,79 @@ +// @file sns_std_type.proto +// +// Defines standard data types used across multiple Sensor API definitions +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; + +// Represents an unique Sensor +message sns_std_suid { + required fixed64 suid_low = 1; + required fixed64 suid_high = 2; +} + +// Represents an attribute value +// Attribute values may be a single value, array of simple values, or +// an array of complex tuples +message sns_std_attr_value { + // "data" submessage required to support recursion + message data { + option (nanopb_msgopt).no_unions = true; + oneof value { + sns_std_attr_value subtype = 1; + string str = 2; + float flt = 3; + sfixed64 sint = 4; + bool boolean = 5; + } + } + repeated data values = 1; +} + +// An individual attribute from a Sensor +message sns_std_attr { + // A standard list of attributes is available within sns_std_sensor_attr_id + // Additional attributes may be defined by sensors, using the format: + // _ATTRID_ (e.g. SNS_ACCEL_ATTRID_ODR) + // Additional IDs must fall within the range of 1024-2047 + required int32 attr_id = 1; + // Attribute value + required sns_std_attr_value value = 2; +} + +// Error codes +enum sns_std_error { + option (nanopb_enumopt).long_names = false; + + /* No error occurred; success. */ + SNS_STD_ERROR_NO_ERROR = 0; + /* Unfixable or internal error occurred. */ + SNS_STD_ERROR_FAILED = 1; + /* This API is not supported or is not implemented. */ + SNS_STD_ERROR_NOT_SUPPORTED = 2; + /* Message contains invalid data type, + * e.g., unknown message ID, unknown registry group, or unexpected + * Sensor UID. */ + SNS_STD_ERROR_INVALID_TYPE = 3; + /* Catastrophic error; expect no further data */ + SNS_STD_ERROR_INVALID_STATE = 4; + /* One or more argument values were outside of the valid range */ + SNS_STD_ERROR_INVALID_VALUE = 5; + /* This operation is not available at this time */ + SNS_STD_ERROR_NOT_AVAILABLE = 6; + /* This action was rejected due to the current policy settings */ + SNS_STD_ERROR_POLICY = 7; +} + +//The enum contains all the processor types supported. +enum sns_std_client_processor { + option (nanopb_enumopt).long_names = false; + + SNS_STD_CLIENT_PROCESSOR_SSC = 0; + SNS_STD_CLIENT_PROCESSOR_APSS = 1; + SNS_STD_CLIENT_PROCESSOR_ADSP = 2; + SNS_STD_CLIENT_PROCESSOR_MDSP = 3; + SNS_STD_CLIENT_PROCESSOR_CDSP = 4; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_step_detect.proto b/proprietary/vendor/etc/sensors/proto/sns_step_detect.proto new file mode 100644 index 0000000..e5fa164 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_step_detect.proto @@ -0,0 +1,38 @@ +// @file sns_step_detect.proto +// +// Defines message types for the Step Detect Sensor. +// +// Copyright (c) 2019 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Step Detect Sensor detects steps taken by the user +// +// The Step Detect event is generated when the user takes a step. +// All clients to Step Detect get the same step detect event. +// The timestamp of the event indicates the time of the latest detected step. + +// Step Detect Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "step_detect" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Step Detect Sensor +enum sns_step_detect_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_STEP_DETECT_MSGID_SNS_STEP_DETECT_EVENT = 1029; +} + +// Stream events: +// +// An event with SNS_STEP_DETECT_MSGID_SNS_STEP_DETECT_EVENT as the message id +// is used to publish a step detect event +// +// Step detect sensor does not publish configuration events. \ No newline at end of file diff --git a/proprietary/vendor/etc/sensors/proto/sns_suid.proto b/proprietary/vendor/etc/sensors/proto/sns_suid.proto new file mode 100644 index 0000000..b83f431 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_suid.proto @@ -0,0 +1,54 @@ +// @file sns_suid.proto +// +// Defines standard message types to request and receive SUIDs. +// +// Copyright (c) 2016-2017,2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_type.proto"; + +enum sns_suid_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_SUID_MSGID_SNS_SUID_REQ = 512; + SNS_SUID_MSGID_SNS_SUID_EVENT = 768; +} + +// Well-known SUID for use by all clients. +// All other Sensor UIDs must be discovered dynamically +message sns_suid_sensor { + required fixed64 suid_low = 1 [default = 0xabababababababab]; + required fixed64 suid_high = 2 [default = 0xabababababababab]; +} + +// Request sent by internal or external client for the list of SUIDs that +// advertise the specified Data Type +// Note: Additional requests arriving on the same connection, will not result +// in a replaced request, but instead the new request will be appended to any +// active registrations. +message sns_suid_req { + required string data_type = 1; + // Register for updates to the list of SUIDs advertising data_type + optional bool register_updates = 2; + + // Each data type may or may not have one sensor configured to be "default" through registry. + // If following field is set to true and : + // * A default for the data type is explicitly configured, + // only the SUID of the default sensor will be sent via the suid event when available. + // * A default for the data type is not explicitly configured, + // the SUID of the first sensor with matching data type will be sent via the suid event. + // If following field is set to false, all sensors with matching data type will be sent, + // as and when they become available. + optional bool default_only = 3 [default = true]; +} + +// Event specifying the list of SUIDs associated with the given Data Type +// Receipt of this event indicates that a change to this list has occurred +// since the previous event. +message sns_suid_event { + // Direct copy of sns_suid_req:data_type + required string data_type = 1; + repeated sns_std_suid suid = 2; +} diff --git a/proprietary/vendor/etc/sensors/proto/sns_thermopile.proto b/proprietary/vendor/etc/sensors/proto/sns_thermopile.proto new file mode 100644 index 0000000..6e57b2a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_thermopile.proto @@ -0,0 +1,62 @@ +// @file sns_thermopile.proto +// +// Defines the API for Thermopile Sensors. +// All Thermopile Sensor drivers are required to comply with this API. +// Any new functionality for Thermopile Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The Thermopile Temperature Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "thermopile". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in degrees Celsius/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in degrees Celsius unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The Thermopile Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. + +// Handling stream events: +// 1. The Thermopile Sensor publishes data stream events using the +// sns_std_sensor_event message. +// 2. Each stream event contains one output data field where data is +// factory calibrated and ordered as: +// data[0] = Object temperature in degrees Celsius +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The Thermopile Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The Thermopile Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The Thermopile Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The Thermopile Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. +// 3. The Thermopile Sensor could implement other test types. + +// Handling test events: +// 1. The Thermopile Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_threshold.proto b/proprietary/vendor/etc/sensors/proto/sns_threshold.proto new file mode 100644 index 0000000..3cf67b9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_threshold.proto @@ -0,0 +1,91 @@ +// @file sns_threshold.proto +// +// Defines standard message types for the Threshold Algorithm +// +// Copyright (c) 2018-2020 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std.proto"; +import "sns_std_sensor.proto"; +import "sns_resampler.proto"; + +// Threshold Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "threshold" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_STREAMING + +// Sensor output event: +// Threshold uses sns_std_sensor_event for it's output event. +// An event is generated by the threshold algorithm only if the threshold is met +// on any of the axis for the sensor. +// Thresholding can be done as value based delta between current value and +// the last generated output. Or thresholding can be done as the delta between +// current value and the last output, as a percentage of the last output. +// Thresholding can also be done based on the current value going beyond a particular +// absolute threshold value. +// When thresholding criteria is met , an event is generated by the algorithm. + +enum sns_threshold_msgid +{ + option (nanopb_enumopt).long_names = false; + + SNS_THRESHOLD_MSGID_SNS_THRESHOLD_CONFIG = 512; +} + +//Thresholding types +enum sns_threshold_type +{ + option (nanopb_enumopt).long_names = false; + + // Provide thresholding as a delta between current value + // and last reported value, exceeding above the configured threshold. + SNS_THRESHOLD_TYPE_RELATIVE_VALUE = 0; + + // Provide thresholding as a delta between current value + // and last reported value, compared as a percentage of the last reported value, + // where the percentage is the configured threshold. + SNS_THRESHOLD_TYPE_RELATIVE_PERCENT = 1; + + // Provides thresholding of the current value against a fixed configured + // threshold value. + SNS_THRESHOLD_TYPE_ABSOLUTE = 2; + + // Provides thresholding of angle between current and last reported quaternion + // for quaternion sensors, in radians + SNS_THRESHOLD_TYPE_ANGLE = 3; +} + +// Configuration Message +// Used to either request for a new configuration of the threshold Sensor or +// alter an already existing configuration or query the current configuration. +message sns_threshold_config +{ + // UID of the sensor from which data is being requested from. + required sns_std_suid sensor_uid = 1; + + // The threshold value per axis. + // The number of threshold values need to be less than or equal to the number of + // sensor data axes. + // For SNS_THRESHOLD_TYPE_ANGLE, a single threshold_val value representing the + // angle between current and last reported quaternions + repeated float threshold_val = 2; + + // Tells us how to use the thresholding value provided. + required sns_threshold_type threshold_type = 3; + + // The message id to be used to configure the underlying sensor. + // This is used together with the below payload field. + required uint32 payload_cfg_msg_id = 4; + + // Dynamic length payload, containing the actual data/configuration request + // This payload will need to be decoded separately, using the Sensor-specific + // header file. + required bytes payload = 5; +} + +// Config is used to inform the client of the configuration that was set, +// after a configuration is done . +// The config message is sent back to the client +// in the threshold config message. +// All data events are generated as sns_std_sensor_event. diff --git a/proprietary/vendor/etc/sensors/proto/sns_tilt.proto b/proprietary/vendor/etc/sensors/proto/sns_tilt.proto new file mode 100644 index 0000000..faf095a --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_tilt.proto @@ -0,0 +1,49 @@ +// @file sns_tilt.proto +// +// Defines message types for the Tilt Sensor. +// +// Copyright (c) 2017-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Tilt Sensor looks for a change in angle of a gravity vector from an +// anchor vector. +// +// The initial anchor vector is based on an average of one second of +// accel data after initial activation. +// +// The gravity vector is calculated based on an average of two seconds of +// accel data. +// +// The anchor vector is reset to the current gravity vector each time the +// Tilt event is generated. +// There is only one anchor vector shared amongst all clients. +// +// The Tilt event is generated when the current gravity vector is 35 degrees +// or more from the anchor vector. + +// Tilt Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "tilt" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Tilt Sensor +enum sns_tilt_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_TILT_MSGID_SNS_TILT_EVENT = 774; +} + +// Stream events: +// +// A NULL message with message ID SNS_TILT_MSGID_SNS_TILT_EVENT is used to +// publish tilt event +// +// Tilt does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/sns_tilt_to_wake.proto b/proprietary/vendor/etc/sensors/proto/sns_tilt_to_wake.proto new file mode 100644 index 0000000..ceabc92 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_tilt_to_wake.proto @@ -0,0 +1,36 @@ +// @file sns_tilt_to_wake.proto +// +// Defines message types for the tilt_to_wake Sensor. +// +// Copyright (c) 2017 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The tilt_to_wake detects substantial phone rotation (gesture) within +// limited period ending in a specific range of the pitch and roll angles. +// It uses proximity sensor to block the tilt event reporting in pocket or purse + +// tilt_to_wake Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "tilt_to_wake" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for tilt_to_wake Sensor +enum sns_tilt_to_wake_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_TILT_TO_WAKE_MSGID_SNS_TILT_TO_WAKE_EVENT = 775; +} + +// Stream events: +// +// A NULL message with message ID SNS_TILT_TO_WAKE_MSGID_SNS_TILT_TO_WAKE_EVENT is used to +// publish tilt_to_wake event +// +// tilt_to_wake does not publish configuration events. diff --git a/proprietary/vendor/etc/sensors/proto/sns_ultra_violet.proto b/proprietary/vendor/etc/sensors/proto/sns_ultra_violet.proto new file mode 100644 index 0000000..3244cc9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_ultra_violet.proto @@ -0,0 +1,72 @@ +// @file sns_ultra_violet.proto +// +// Defines the API for Ultra Violet (UV) Sensors. +// All UV Sensor drivers are required to comply with this API. +// Any new functionality for UV Sensor can be defined in a +// device specific API file. +// +// Copyright (c) 2016-2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; +import "sns_physical_sensor_test.proto"; +import "sns_cal.proto"; + +// Attribute requirements: +// The UV Sensor publishes: +// 1. SNS_STD_SENSOR_ATTRID_TYPE attribute value as "ultra_violet". +// 2. SNS_STD_SENSOR_ATTRID_RESOLUTIONS attribute value in degrees mW/cm2/LSB. +// 3. SNS_STD_SENSOR_ATTRID_RANGES attribute values in degrees mW/cm2 unit. +// 4. See sns_std_sensor.proto for other attributes. + +// Handling stream requests: +// 1. The UV Sensor handles the sns_std_sensor_config +// message request for all stream enable/update requests. + +// Handling stream events: +// 1. The UV Sensor publishes UV data in ambient light using the +// sns_std_sensor_event message. +// 2. Each stream event contains following factory calibrated data fields: +// data[0] = Bit mask to determine which outputs are supported: +// bit[0]: 1 if UV-A is supported else 0 +// bit[1]: 1 if UV-B is supported else 0 +// bit[2]: 1 if Total UV is supported else 0 +// bit[3]: 1 if UV index is supported else 0 +// all other bits are 0 +// data[1] = UV-A radiation in mW/cm2 +// data[2] = UV-B radiation in mW/cm2 +// data[3] = Total UV radiation in mW/cm2 +// data[4] = Unitless UV index number +// 3. Each stream event publishes an accuracy field: +// SNS_STD_SENSOR_SAMPLE_STATUS_UNRELIABLE to mark invalid samples when hardware is +// yet to stabilize after the sensor is configured. +// SNS_STD_SENSOR_SAMPLE_STATUS_ACCURACY_HIGH to mark samples when they are valid. +// 4. The UV Sensor publishes a configuration event using the +// sns_std_sensor_physical_config_event message. +// It publishes this event each time there is change in hardware config of the sensor +// and contains current physical sensor config of the sensor. +// 5. The UV Sensor publishes a factory calibration event using the +// sns_cal_event message. It uses bias and scale_factor fields in this event. +// It publishes this event each time there is change in it's factory calibration +// data or when a client sends a new streaming request. + +// Handling self-test requests: +// 1. The UV Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_COM test +// type using the physical sensor test API. +// 2. The UV Sensor implements SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY test +// type to determine factory calibration parameters using the physical +// sensor test API. The factory test for UV Sensor calibrates +// the sensor such that it's output is comparable to a standard +// UV Meter output in any lighting condition. +// 3. The UV Sensor could implement other test types. + +// Handling test events: +// 1. The UV Sensor uses sns_physical_sensor_test_event message to publish +// a test completion event. +// 2. The test_passed field in sns_physical_sensor_test_event is used to output the +// pass/fail result of self-test execution. +// 3. The test_data field in sns_physical_sensor_test_event could be used to output any +// driver-specific error data. diff --git a/proprietary/vendor/etc/sensors/proto/sns_wrist_tilt_gesture.proto b/proprietary/vendor/etc/sensors/proto/sns_wrist_tilt_gesture.proto new file mode 100644 index 0000000..37482d9 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/sns_wrist_tilt_gesture.proto @@ -0,0 +1,49 @@ +// @file sns_wrist_tilt_gesture.proto +// +// Defines message types for the wrist_tilt_gesture Sensor. +// +// Copyright (c) 2018 Qualcomm Technologies, Inc. +// All Rights Reserved. +// Confidential and Proprietary - Qualcomm Technologies, Inc. + +syntax = "proto2"; +import "nanopb.proto"; +import "sns_std_sensor.proto"; + +// The Tilt Sensor looks for a change in angle of a gravity vector from an +// anchor vector. +// +// The initial anchor vector is based on an average of one second of +// accel data after initial activation. +// +// The gravity vector is calculated based on an average of two seconds of +// accel data. +// +// The anchor vector is reset to the current gravity vector each time the +// Tilt event is generated. +// There is only one anchor vector shared amongst all clients. +// +// The Tilt event is generated when the current gravity vector is 35 degrees +// or more from the anchor vector. + +// Tilt Sensor Attribute Requirements: +// SNS_STD_SENSOR_ATTRID_TYPE: "wrist_tilt_gesture" +// SNS_STD_SENSOR_ATTRID_STREAM_TYPE: SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE + +// Stream Requests: +// - SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG is used to enable the sensor + +// Message IDs for Wrist Tilt Gesture Sensor +enum sns_wrist_tilt_gesture_msgid { + option (nanopb_enumopt).long_names = false; + + SNS_WRIST_TILT_GESTURE_MSGID_SNS_TILT_EVENT = 774; +} + +// Stream events: +// +// A NULL message with message ID SNS_TILT_MSGID_SNS_TILT_EVENT is used to +// publish tilt event +// +// Tilt does not publish configuration events. + diff --git a/proprietary/vendor/etc/sensors/proto/tcs3708.proto b/proprietary/vendor/etc/sensors/proto/tcs3708.proto new file mode 100644 index 0000000..a574156 --- /dev/null +++ b/proprietary/vendor/etc/sensors/proto/tcs3708.proto @@ -0,0 +1,23 @@ +// @file tcs3708.proto +// +// Defines additional pb APIs needed for the tcs3708 under OLED solution +// + +syntax = "proto2"; +import "nanopb.proto"; + +// Message IDs +enum tcs3708_msgid { + option (nanopb_enumopt).long_names = false; + + TCS3708_MSGID_TCS3708_ALS_MASTERCAL_REQUEST = 360; + TCS3708_MSGID_TCS3708_ALS_MASTERCAL_EVENT = 361; +} + +// Message to sensor +message tcs3708_als_mastercal_event +{ + required uint32 chunk_id = 1; + required uint32 again = 2; + repeated float raw_data = 3; +} diff --git a/proprietary/vendor/etc/sensors/sns_reg_config b/proprietary/vendor/etc/sensors/sns_reg_config new file mode 100644 index 0000000..ba15e28 --- /dev/null +++ b/proprietary/vendor/etc/sensors/sns_reg_config @@ -0,0 +1,10 @@ +version=9 +file=hw_platform=/sys/devices/soc0/hw_platform +file=platform_subtype=/sys/devices/soc0/platform_subtype +file=platform_subtype_id=/sys/devices/soc0/platform_subtype_id +file=platform_version=/sys/devices/soc0/platform_version +file=soc_id=/sys/devices/soc0/soc_id +file=revision=/sys/devices/soc0/revision +file=output=/mnt/vendor/persist/sensors/registry/registry +property=persist.vendor.sensors.enable.property=/mnt/vendor/persist/sensors/registry/file1 +property=persist.vendor.sensors.enable.property1=/mnt/vendor/persist/sensors/registry/file2 diff --git a/proprietary/vendor/etc/thermal-engine-rhodep.conf b/proprietary/vendor/etc/thermal-engine-rhodep.conf new file mode 100644 index 0000000..d1f5ca5 --- /dev/null +++ b/proprietary/vendor/etc/thermal-engine-rhodep.conf @@ -0,0 +1,120 @@ +[VIRT-QUIET] +algo_type virtual +sensors quiet_therm +weights 100 +trip_sensor chg_therm +thresholds 18000 +thresholds_clr 16000 +offsets 0 +sampling 5000 +math 0 + +[CHG-EXT-THERM_running] +algo_type monitor +sensor virtual-sensor-1 +sampling 1000 +polling_delay 0 +passive_delay 0 +thresholds 41000 43000 45000 46000 50000 +thresholds_clr 39000 41000 43000 45000 46000 +actions battery battery battery battery battery +action_info 07 06 04 03 01 + +[virtual-sensor-0] +algo_type virtual +trip_sensor msm_therm +set_point 43000 +set_point_clr 39000 +sensors quiet_therm msm_therm +weights 50 50 +sampling 1000 + +[virtual-sensor-1] +algo_type virtual +trip_sensor msm_therm +set_point 30000 +set_point_clr 20000 +sensors quiet_therm msm_therm chg_therm +weights 30 60 10 +sampling 1000 + +[MON-MSM-CLUSTER01] +algo_type monitor +sampling 1000 +sensor virtual-sensor-0 +thresholds 41000 42000 46000 +thresholds_clr 40000 41000 45000 +actions cpu0 cpu0 cpu0 +action_info 1651200 1516800 1324800 +override_b 4000 + +[MON-MSM-CLUSTER02] +algo_type monitor +sampling 1000 +sensor virtual-sensor-0 +thresholds 40000 41000 45000 +thresholds_clr 39000 40000 41000 +actions cpu6 cpu6 cpu6 +action_info 1900800 1651200 1516800 +override_b 4000 + +[MONITOR-CAMERA-MSM] +algo_type monitor +sampling 1000 +sensor virtual-sensor-0 +thresholds 41000 46000 +thresholds_clr 40000 45000 +actions camera camera +action_info 1 2 + + [FRONT_TEMP] +algo_type virtual +trip_sensor msm_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery chg_therm msm_therm quiet_therm +weights 40 15 10 35 +offsets -100 -200 0 -100 +sampling 1000 +math 0 +sys_temp + +[REPORT-FRONT-TEMP] +algo_type monitor +sampling 300000 +sensor FRONT_TEMP +thresholds 46000 +thresholds_clr 43000 +actions report +action_info 1 + +[BACK_TEMP] +algo_type virtual +trip_sensor msm_therm +thresholds -18000 +thresholds_clr -20000 +sensors battery chg_therm msm_therm quiet_therm +weights 30 25 15 30 +offsets -100 -200 -200 -100 +sampling 1000 +math 0 +sys_temp + +[REPORT-BACK-TEMP] +algo_type monitor +sampling 300000 +sensor BACK_TEMP +thresholds 46000 +thresholds_clr 43000 +actions report +action_info 1 + +[MON-PDPOWER3] +algo_type monitor +sampling 1000 +sensor virtual-sensor-1 +thresholds 39500 42000 43000 45000 46000 +thresholds_clr 38500 39500 42000 43000 45000 +actions mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager mmi_chrg_manager +action_info 6 5 3 2 1 +freezing diff --git a/proprietary/vendor/etc/thermal-engine.conf b/proprietary/vendor/etc/thermal-engine.conf new file mode 100644 index 0000000..33fc821 --- /dev/null +++ b/proprietary/vendor/etc/thermal-engine.conf @@ -0,0 +1,2 @@ +# File empty by default. +# Replace contents of this file with custom configuration. diff --git a/proprietary/vendor/etc/vhw.xml b/proprietary/vendor/etc/vhw.xml new file mode 100644 index 0000000..d07d37c --- /dev/null +++ b/proprietary/vendor/etc/vhw.xml @@ -0,0 +1,2349 @@ + + + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:NA + androidboot. + ro.vendor.hw. + + NA + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + emerald + other + + + default=true + mmi, + ro.vendor.hw. + + true + false + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:false + mmi, + ro.vendor.hw. + + true + false + + + + + + + + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + cam_variant + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:WELA,2:WELA,3:PRC + androidboot. + ro.vendor.hw. + + WELA + PRC + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + gray + red + other + + + default=true + mmi, + ro.vendor.hw. + + true + false + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:nxp,2:nxp,3:false + mmi, + ro.vendor.hw. + + nxp + false + + + key=hwid;index=2;map=1:1,2:2,3:1 + mmi, + ro.vendor.hw. + + 1 + 2 + + + androidboot. + + q + + + + + + + + + + + + + + + + PRC + + + + + + + 2 + + + + + + + + false + nxp + + + true + nxp + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + cam_variant + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:Japan,2:PRC,3:ROW,4:India + androidboot. + ro.vendor.hw. + + Japan + ROW + PRC + India + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:false,2:true,3:false,4:false + mmi, + ro.vendor.hw. + + true + false + + + key=hwid;index=2;map=1:st,2:false,3:st,4:false + mmi, + ro.vendor.hw. + + st + false + + + key=hwid;index=2;map=1:1,2:2,3:1,4:1 + mmi, + ro.vendor.hw. + + 1 + 2 + + + androidboot. + + q + + + + + + + + + + + + + + + + PRC + + + + + + + 2 + + + + + + + + + false + st + false + + + true + st + false + + + false + false + false + + + true + false + false + + + + false + st + true + + + true + st + true + + + false + false + true + + + true + false + true + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ALL,2:LATAM,3:APEM,4:PRC,5:PRC + androidboot. + ro.vendor.hw. + + ALL + LATAM + APEM + PRC + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + Horizon Blue + Winter Dawn + Moss Lake + Horizon Blue WD + Horizon Blue PW + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:st,2:st,3:st,4:false,5:false + mmi, + ro.vendor.hw. + + st + false + + + androidboot. + + n + + + + + + + + + + + + + + + + st + + + + + + + + false + st + + + true + st + + + false + false + + + true + false + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ALL,2:LATAM,3:APEM,4:PRC,5:PRC,6:KSA + androidboot. + ro.vendor.hw. + + ALL + LATAM + APEM + PRC + KSA + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + Horizon Blue + Winter Dawn + Moss Lake + Horizon Blue WD + Horizon Blue PW + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:st,2:st,3:st,4:false,5:false,6:st + mmi, + ro.vendor.hw. + + st + false + + + androidboot. + + n + + + + + + + + + + + + + + + + st + + + + + + + + false + st + + + true + st + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + cam_variant + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:Japan,2:PRC,3:ROW,4:India + androidboot. + ro.vendor.hw. + + Japan + ROW + PRC + India + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:false,2:true,3:false,4:false + mmi, + ro.vendor.hw. + + true + false + + + key=hwid;index=2;map=1:st,2:false,3:st,4:false + mmi, + ro.vendor.hw. + + st + false + + + key=hwid;index=2;map=1:1,2:2,3:1,4:1 + mmi, + ro.vendor.hw. + + 1 + 2 + + + androidboot. + + q + + + + + + + + + + + + + + + + PRC + + + + + + + 2 + + + + + + + + + false + st + false + + + true + st + false + + + false + false + false + + + true + false + false + + + + false + st + true + + + true + st + true + + + false + false + true + + + true + false + true + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + cam_variant + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:Japan,2:PRC,3:ROW,4:India + androidboot. + ro.vendor.hw. + + Japan + ROW + PRC + India + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:false,2:true,3:false,4:false + mmi, + ro.vendor.hw. + + true + false + + + key=hwid;index=2;map=1:st,2:false,3:st,4:false + mmi, + ro.vendor.hw. + + st + false + + + key=hwid;index=2;map=1:1,2:2,3:1,4:1 + mmi, + ro.vendor.hw. + + 1 + 2 + + + androidboot. + + q + + + + + + + + + + + + + + + + PRC + + + + + + + 2 + + + + + + + + + false + st + false + + + true + st + false + + + false + false + false + + + true + false + false + + + + false + st + true + + + true + st + true + + + false + false + true + + + true + false + true + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:NA,2:VZW + androidboot. + ro.vendor.hw. + + NA + VZW + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:nxp,2:nxp + mmi, + ro.vendor.hw. + + nxp + false + + + + + + + + + + false + + + true + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:JAPAN,2:LATAM,3:APEM + androidboot. + ro.vendor.hw. + + JAPAN + LATAM + APEM + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + Sumi + Shironeri + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:ese_nq,2:ese_nq,3:ese_nq + mmi, + ro.vendor.hw. + + ese_nq + false + + + androidboot. + + n + + + + + + + + + + + + + + + + ese_nq + + + + + + + + + true + ese_nq + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + sku_variant + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ROW,2:PRC + androidboot. + ro.vendor.hw. + + ROW + PRC + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:samsung,2:false + mmi, + ro.vendor.hw. + + false + samsung + + + androidboot. + + n + + + + + + + + + samsung + + + + + + false + samsung + + + true + samsung + + + false + false + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:LATAM,2:APEM + androidboot. + ro.vendor.hw. + + LATAM + APEM + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=nxp + mmi, + ro.vendor.hw. + + false + nxp + + + + + + + + + + false + nxp + + + true + nxp + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:INDIA + androidboot. + ro.vendor.hw. + + INDIA + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + green + iris + other + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=false + mmi, + ro.vendor.hw. + + false + + + + + + + + + + true + false + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ROW + androidboot. + ro.vendor.hw. + + ROW + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 6GB + 8GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 128GB + 256GB + + + default=true + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + veriperi + icepalace + blackonyx + aquafoam + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=nxp + mmi, + ro.vendor.hw. + + nxp + + + + + + + + + + true + nxp + + + false + nxp + + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + felica + + nfc + + ecompass + + esim + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:ALL,2:BRLA,3:APEU,4:PRC,5:INDIA,6:JAPAN,7:JPSB + androidboot. + ro.vendor.hw. + + ALL + BRLA + APEU + PRC + INDIA + JAPAN + JPSB + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + 8GB + 12GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + 256GB + + + default=true + ro.vendor.hw. + + true + false + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + veriperi + icepalace + blackonyx + aquafoam + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + key=hwid;index=2;map=1:nxp,2:nxp,3:nxp,4:false,5:nxp,6:ese_nq,7:ese_nq + mmi, + ro.vendor.hw. + + nxp + ese_nq + false + + + key=hwid;index=2;map=1:false,2:false,3:false,4:false,5:false,6:true,7:true + mmi, + ro.vendor.hw. + + true + false + + + + + + + + + + + + + + false + nxp + + + true + nxp + + + false + false + + + true + false + + + true + ese_nq + + + + + + + + + + + + radio + + ram + + storage + + dualsim + + frontcolor + + fps + + nfc + + ecompass + + esim + + esimid + + + + + + + + .range + + .cmdline + + .chosen + + .system + + + + .auto + + + + + + + key=hwid;index=2;map=1:SUPER + androidboot. + ro.vendor.hw. + + SUPER + + + + key=hwprobe;index=__ram + ro.vendor.hw. + + 4GB + 6GB + + + + key=hwprobe;index=__storage + ro.vendor.hw. + + 64GB + 128GB + + + default=true + ro.vendor.hw. + + true + false + + + default=false + ro.vendor.hw. + + true + false + + + + ro.vendor.hw. + + veriperi + icepalace + blackonyx + aquafoam + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=true + mmi, + ro.vendor.hw. + + true + + + default=false + mmi, + ro.vendor.hw. + + false + + + uspace=config;name=esimid + ro.vendor. + + + + + + + + false + false + + + true + false + + + + + + diff --git a/proprietary/vendor/firmware/aw882xx_pid_2113_acf.bin b/proprietary/vendor/firmware/aw882xx_pid_2113_acf.bin new file mode 100644 index 0000000..5f06acb Binary files /dev/null and b/proprietary/vendor/firmware/aw882xx_pid_2113_acf.bin differ diff --git a/proprietary/vendor/firmware/aw_skt.bin b/proprietary/vendor/firmware/aw_skt.bin new file mode 100644 index 0000000..d22a19d Binary files /dev/null and b/proprietary/vendor/firmware/aw_skt.bin differ diff --git a/proprietary/vendor/firmware/csot_goodix_cfg_group.bin b/proprietary/vendor/firmware/csot_goodix_cfg_group.bin new file mode 100644 index 0000000..17161fa Binary files /dev/null and b/proprietary/vendor/firmware/csot_goodix_cfg_group.bin differ diff --git a/proprietary/vendor/firmware/csot_goodix_test_limits_255.csv b/proprietary/vendor/firmware/csot_goodix_test_limits_255.csv new file mode 100644 index 0000000..01a174d --- /dev/null +++ b/proprietary/vendor/firmware/csot_goodix_test_limits_255.csv @@ -0,0 +1,117 @@ +test_config,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x43,0x53,0x4F,0x54,0x00,0x00,0x00,0x00,0x39,0x39,0x31,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x52,0x68,0x6F,0x64,0x65,0x00,0x00,0x00,0x00,0x00,0x5F,0x1C,0x22,0x06,0x03,0x32,0x30,0x32,0x32,0x30,0x32,0x30,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDA,0x05,0x3A,0x53,0x07,0x40,0x01,0x10,0x24,0x01,0x02,0x00,0x04,0x03,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0xFF,0xFF,0xFF,0xFF,0x1B,0x1E,0x02,0x01,0x1A,0x04,0x03,0x12,0x05,0x0E,0x14,0x08,0x07,0x0A,0x0B,0x0D,0x09,0x0F,0x06,0x16,0x11,0x0C,0x19,0x13,0x10,0x17,0x15,0x1D,0x1F,0x18,0x22,0x24,0x1C,0x23,0x21,0x20,0xFF,0xFF,0xFF,0xFF,0x0E,0x02,0x48,0x10,0x00,0xF5,0x98,0x00,0xE4,0x0C,0x0E,0x00,0x00,0x01,0x02,0x03,0x0E,0x04,0x08,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x22,0x08,0x38,0x04,0x60,0x09,0x69,0x00,0x8C,0x00,0x1E,0x00,0x28,0x00,0x3C,0x00,0x50,0x00,0x46,0x00,0x46,0x00,0x0A,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x64,0x00,0x04,0x0A,0x04,0x01,0x1E,0x0B,0x2F,0x21,0x1F,0x1F,0x40,0x01,0x08,0x01,0x04,0x10,0x91,0xDA,0x8D,0xCF,0x12,0x6A,0x00,0x00,0x00,0x00,0x72,0x30,0xED,0x15,0x00,0x00,0x00,0x00,0x2E,0x0C,0x01,0x02,0x00,0x05,0x00,0x00,0x20,0x03,0x00,0x00,0x64,0x00,0x14,0x00,0x14,0x00,0x50,0x00,0x14,0x00,0x32,0x00,0x00,0x05,0x00,0x00,0xF4,0x01,0x00,0x00,0x64,0x00,0x14,0x00,0x14,0x00,0x64,0x00,0x14,0x00,0x31,0x00,0x01,0x0D,0x52,0x0D,0x6A,0x01,0x00,0x00,0x6D,0x01,0x00,0x00,0x6A,0x01,0x00,0x00,0x6F,0x01,0x00,0x00,0x70,0x01,0x00,0x00,0x70,0x01,0x00,0x00,0x72,0x01,0x00,0x00,0x72,0x01,0x00,0x00,0x70,0x01,0x00,0x00,0x74,0x01,0x00,0x00,0x74,0x01,0x00,0x00,0x74,0x01,0x00,0x00,0x79,0x01,0x00,0x00,0x7C,0x01,0x00,0x00,0x7F,0x01,0x00,0x00,0x86,0x01,0x00,0x00,0xBF,0x01,0x00,0x00,0xB1,0x01,0x00,0x00,0xC5,0x01,0x00,0x00,0xD2,0x01,0x00,0x00,0x52,0x0E,0xA1,0x01,0x7F,0x01,0x7D,0x01,0x7F,0x01,0x7D,0x01,0x7A,0x01,0x7A,0x01,0x7A,0x01,0x76,0x01,0x7A,0x01,0x78,0x01,0x76,0x01,0x76,0x01,0x75,0x01,0x73,0x01,0x75,0x01,0x70,0x01,0x73,0x01,0x70,0x01,0x70,0x01,0x6E,0x01,0x6E,0x01,0x70,0x01,0x70,0x01,0x70,0x01,0x70,0x01,0x70,0x01,0x71,0x01,0x73,0x01,0x70,0x01,0x70,0x01,0x6E,0x01,0x6C,0x01,0x6B,0x01,0x69,0x01,0x8F,0x01,0x9C,0x01,0x9C,0x01,0x9C,0x01,0x94,0x01,0x08,0x0F,0x98,0x00,0x55,0x0E,0x00,0x00,0x0E,0x10,0x16,0x00,0x00,0x01,0x00,0x00,0x05,0x14,0x46,0x00,0x00,0x00,0x16,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x08,0x02,0x02,0x0A,0x14,0x03,0xD0,0x07,0x88,0x13,0x40,0x14,0x0A,0x05,0xE4,0x0C,0xB4,0x14,0x38,0x18,0x4C,0x1D,0xDC,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x03,0x00,0x2D,0x19,0x00,0x0A,0x00,0x9B,0x9B,0xA5,0xBE,0x96,0x00,0x00,0x00,0x57,0x57,0x57,0x57,0x55,0x00,0x00,0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x10,0x17,0x00,0x01,0x01,0x8C,0x0A,0x8D,0x20,0x1E,0x0A,0x03,0x8C,0x0A,0x8C,0x0A,0x12,0x1A,0x00,0xFE,0x0F,0x00,0x0F,0xE0,0x0F,0x00,0x0E,0x00,0x00,0x05,0x80,0x00,0x80,0x0C,0x16,0x1B,0x01,0x0A,0x12,0x14,0x0F,0x12,0x14,0x23,0x14,0x14,0xC8,0xC8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x1C,0x14,0x08,0xC8,0x05,0x0A,0x0B,0x64,0x0E,0x0A,0x02,0xFA,0x14,0x37,0x0A,0x00,0x00,0x00,0x00,0x22,0x1D,0x09,0x40,0x06,0x14,0x00,0x00,0x00,0x3C,0x00,0x08,0x07,0xA4,0x01,0x1A,0x04,0x40,0x06,0x1A,0x04,0x90,0x01,0x0A,0x1E,0x00,0x10,0x28,0x78,0x00,0x08,0x1E,0x00,0x00,0x08,0x1E,0x00,0x10,0x00,0x00,0x00,0x00,0x04,0x1F,0x05,0x0A,0x0E,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x24,0x00,0x01,0x01,0x1A,0x41,0x1A,0x41,0x1E,0x0A,0x03,0x19,0x08,0x18,0x25,0x18,0x25,0x03,0xCF,0x02,0xB1,0x02,0x04,0x03,0x0C,0x0C,0x01,0x00,0x03,0x0A,0x04,0x78,0x00,0x78,0x00,0x32,0x00,0x03,0x00,0x14,0x26,0x00,0x01,0xCC,0x01,0x6C,0x02,0x14,0x00,0x42,0x09,0x1E,0x00,0x14,0x00,0x8D,0x20,0x10,0x00,0x04,0x32,0x05,0x00,0x16,0x33,0x01,0x00,0x0E,0x00,0x12,0x00,0x3E,0x00,0x42,0xFA,0x00,0x04,0x1E,0x00,0x01,0x03,0x03,0x64,0x00,0x00,0x64,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x32,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x7B,0x00,0x7E,0x00,0x7C,0x00,0x7D,0x00,0x7D,0x00,0x7B,0x00,0x7A,0x00,0x77,0x00,0x78,0x00,0x76,0x00,0x76,0x00,0x74,0x00,0x6F,0x00,0x71,0x00,0x6E,0x00,0x6D,0x00,0x68,0x00,0x68,0x00,0x67,0x00,0x63,0x00,0x61,0x00,0x5D,0x00,0x5D,0x00,0x5A,0x00,0x58,0x00,0x56,0x00,0x53,0x00,0x50,0x00,0x4E,0x00,0x4A,0x00,0x48,0x00,0x45,0x00,0x42,0x00,0x40,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x51,0x06,0x12,0x1C,0x42,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x16,0x52,0x00,0x1E,0x10,0x27,0x64,0x00,0x88,0x13,0x88,0x13,0x64,0xC8,0xDC,0x05,0x20,0x03,0xAE,0x01,0xC8,0x00,0x06,0x53,0x3E,0x32,0x5A,0x60,0x16,0x54,0x28,0x00,0x28,0x00,0x3C,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x5A,0x60,0x00,0x0A,0x55,0x14,0x00,0x1E,0x00,0x01,0x00,0x00,0x00,0x18,0x56,0x00,0x0A,0x01,0x0F,0x4E,0x32,0xAA,0x00,0x00,0x00,0x00,0x00,0x28,0x08,0x2D,0x32,0x09,0x3C,0x3C,0x0A,0x55,0x00,0x0E,0x59,0x00,0x99,0x66,0x50,0x08,0x02,0x0C,0x19,0x14,0x0C,0x03,0x5A,0x1A,0x5A,0x14,0x17,0x19,0x20,0x17,0x19,0x24,0x17,0x19,0x20,0x16,0x19,0x22,0x03,0x40,0x00,0x18,0x09,0x3C,0x6C,0x00,0x78,0x06,0x04,0x10,0x5B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x5C,0x50,0x00,0x96,0x00,0x2C,0x01,0x20,0x03,0xE8,0x03,0xD0,0x07,0xD0,0x07,0x10,0x27,0x58,0x02,0x2D,0x00,0xE8,0x03,0x00,0x00,0x88,0x13,0x00,0x00,0x10,0x27,0x00,0x00,0xF4,0x01,0x00,0x00,0xA0,0x0F,0x00,0x00,0x40,0x1F,0x00,0x00,0x08,0x00,0x0C,0x5D,0x60,0x00,0x80,0x00,0xC0,0x00,0x02,0x02,0x00,0x00,0x0C,0x5E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x60,0x01,0x40,0x00,0x00,0x89,0x00,0x80,0x00,0x84,0x00,0x7C,0x00,0x80,0x00,0x7D,0x00,0x77,0x00,0x78,0x00,0x7A,0x00,0x78,0x00,0x77,0x00,0x76,0x00,0x74,0x00,0x72,0x00,0x71,0x00,0x6B,0x00,0x71,0x00,0x6D,0x00,0x69,0x00,0x6A,0x00,0x63,0x00,0x66,0x00,0x63,0x00,0x60,0x00,0x5D,0x00,0x5D,0x00,0x5A,0x00,0x56,0x00,0x56,0x00,0x50,0x00,0x4E,0x00,0x4B,0x00,0x4B,0x00,0x47,0x00,0x46,0x00,0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x61,0x58,0x02,0xA4,0x01,0x2C,0x01,0x40,0x01,0x5E,0x01,0x2C,0x01,0x0A,0xFF,0x0F,0xFA,0x00,0x64,0x0A,0xFA,0x64,0x96,0x08,0x62,0x01,0x0A,0x04,0x00,0x00,0x00,0x0A,0x63,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x64,0x01,0x3C,0x37,0x05,0x15,0x00,0x00,0x2D,0x2D,0x00,0x00,0x60,0x60,0x78,0x78,0x00,0x00,0x00,0xB4,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x0E,0x65,0x01,0xBE,0x00,0x96,0x00,0x64,0x00,0x82,0x00,0x8C,0x00,0x00,0x0A,0x66,0x1A,0x60,0x96,0xD3,0x00,0x0C,0x30,0x00,0x1E,0x67,0x00,0x10,0x00,0x00,0x00,0x32,0x01,0x05,0x00,0x04,0x00,0x20,0x00,0x08,0x00,0x48,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2E,0x68,0x01,0x40,0x00,0x00,0x83,0x00,0x80,0x00,0x80,0x00,0x83,0x00,0x86,0x00,0x85,0x00,0x86,0x00,0x85,0x00,0x89,0x00,0x89,0x00,0x8D,0x00,0x8B,0x00,0x8B,0x00,0x88,0x00,0x88,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x69,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x5A,0x1C,0x0E,0x6B,0x01,0x03,0x08,0x0B,0x16,0x50,0xC8,0x00,0x00,0x00,0x00,0x00,0x44,0x6C,0x00,0x41,0x00,0x41,0x00,0x2C,0x01,0x2C,0x01,0x90,0x01,0xC8,0x00,0x01,0x02,0x3C,0x3C,0x5F,0x5F,0xE8,0x03,0x00,0x03,0xE8,0x03,0x00,0x03,0xE8,0x03,0x00,0x03,0xBC,0x02,0x00,0x03,0x10,0x18,0x40,0x00,0x00,0x00,0x00,0x05,0x04,0x02,0x02,0x05,0x05,0x05,0x05,0x3C,0x5F,0x07,0x14,0x19,0x23,0x2D,0x03,0xDC,0x05,0xC8,0x00,0x01,0x00,0x00,0x00,0x30,0x6D,0x64,0x00,0xC8,0x00,0x2C,0x01,0x90,0x01,0xE8,0x03,0xD0,0x07,0xD0,0x07,0x10,0x27,0x2C,0x01,0x2D,0x00,0x90,0x01,0x00,0x00,0xB8,0x0B,0x00,0x00,0x40,0x1F,0x00,0x00,0x20,0x03,0x00,0x00,0xD0,0x07,0x00,0x00,0xB8,0x0B,0x00,0x00,0x08,0x01,0x0C,0x72,0x00,0x40,0x40,0x39,0x40,0x00,0x00,0x00,0x00,0x00,0xDE,0x89,0x42,0x00 +shortciurt_threshold,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10,150,150,150,100,100,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +special_raw_max,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5797,6568,6643,6701,6761,6803,6855,6394,6437,6976,7006,7034,7083,7140,7160,6459,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5801,5808,5835,5866,5892,5911,5928,5858,5880,5984,5988,5993,6005,6027,6023,6181,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5997,5897,5925,5959,5989,6004,6023,6024,6048,6075,6078,6082,6101,6113,6111,6192,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5876,5866,5890,5920,5955,5971,5989,6001,6021,6044,6042,6051,6063,6081,6075,6162,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5877,5863,5888,5917,5955,5974,5992,6002,6021,6052,6048,6048,6067,6169,6078,6163,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5890,5961,5893,5925,5955,5981,6001,6011,6032,6059,6056,6058,6073,6088,6085,6167,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5898,5878,5904,5931,5965,5984,6007,6020,6046,6063,6062,6063,6078,6098,6096,6173,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5869,5850,5871,5905,5936,5955,5975,5993,6009,6119,6021,6029,6043,6059,6058,6135,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5742,5718,5743,5772,5803,5820,5843,5859,5877,5892,5890,5892,5908,5920,5917,5997,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5849,5832,5858,5889,5917,5939,5959,6059,5992,6009,6004,6007,6017,6039,6027,6105,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5745,5732,5757,5789,5828,5838,5861,5870,5885,5905,5992,5901,5913,5932,5923,5993,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5840,5831,5855,5982,5930,5940,5961,5973,5986,6005,6005,6005,6015,6028,6020,6094,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5836,5812,5836,5874,5915,5924,5942,5951,5970,5985,5981,5981,5992,6008,5993,6070,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5672,5650,5674,5711,5746,5844,5770,5780,5796,5808,5805,5809,5822,5834,5823,5890,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5809,5784,5808,5842,5877,5888,5903,5909,5921,5932,5938,5936,5951,5961,5950,6020,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5769,5740,5765,5796,5827,5842,5855,5859,5871,5884,5884,5885,5893,5905,5896,5974,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5797,5763,5786,5817,5851,5855,5874,5881,5898,5909,5907,5904,5909,5920,5919,5993,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5631,5603,5622,5657,5684,5689,5708,5719,5732,5740,5730,5735,5739,5750,5745,5817,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5754,5722,5736,5761,5886,5801,5819,5830,5839,5850,5843,5846,5851,5859,5858,5923,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5740,5700,5715,5742,5770,5781,5796,5804,5812,5826,5819,5911,5822,5832,5830,5896,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5701,5654,5674,5699,5726,5735,5751,5755,5765,5778,5774,5772,5774,5785,5782,5851,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5627,5581,5599,5624,5649,5659,5761,5678,5691,5703,5695,5696,5693,5705,5700,5773,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5492,5441,5460,5480,5504,5514,5528,5535,5545,5555,5549,5546,5551,5557,5554,5626,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5573,5522,5537,5561,5580,5595,5604,5609,5622,5636,5630,5639,5642,5643,5639,5715,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5539,5487,5500,5520,5546,5555,5564,5569,5670,5593,5589,5599,5603,5603,5603,5674,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5520,5465,5478,5499,5520,5532,5543,5549,5562,5573,5566,5574,5578,5585,5582,5655,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5461,5402,5419,5439,5460,5470,5484,5487,5500,5512,5511,5514,5520,5524,5527,5596,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5408,5353,5364,5383,5403,5415,5424,5429,5441,5454,5454,5461,5461,5472,5470,5547,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5364,5299,5312,5331,5354,5360,5366,5376,5388,5399,5404,5406,5412,5422,5420,5501,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5346,5281,5292,5311,5335,5345,5350,5360,5368,5380,5384,5388,5484,5407,5407,5500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5307,5249,5256,5276,5298,5304,5316,5318,5329,5335,5347,5350,5357,5369,5379,5487,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5265,5210,5218,5241,5261,5264,5271,5279,5287,5295,5303,5310,5318,5334,5352,5478,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5252,5198,5208,5233,5254,5256,5266,5273,5279,5289,5299,5304,5315,5337,5449,5512,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5098,5053,5063,5091,5111,5122,5125,5130,5137,5152,5162,5169,5175,5203,5237,5430,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5212,5176,5195,5221,5245,5254,5260,5262,5272,5291,5303,5311,5314,5342,5410,5697,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5353,5988,5986,6025,6084,6116,6146,6112,6155,6205,6225,6215,6201,6217,6359,6179,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +special_raw_min,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2792,3164,3199,3227,3257,3277,3301,3080,3100,3360,3374,3388,3411,3439,3448,3111,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2794,2797,2810,2825,2838,2847,2855,2821,2832,2882,2884,2886,2892,2903,2901,2977,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2888,2840,2854,2870,2884,2892,2901,2901,2913,2926,2927,2929,2938,2944,2943,2982,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2830,2825,2837,2851,2868,2876,2884,2890,2900,2911,2910,2914,2920,2929,2926,2968,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2830,2824,2836,2850,2868,2877,2886,2891,2900,2915,2913,2913,2922,2971,2927,2968,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2837,2871,2838,2854,2868,2881,2890,2895,2905,2918,2917,2918,2925,2932,2931,2970,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2841,2831,2843,2856,2873,2882,2893,2899,2912,2920,2920,2920,2927,2937,2936,2973,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2827,2817,2828,2844,2859,2868,2878,2886,2894,2947,2900,2904,2910,2918,2918,2955,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2765,2754,2766,2780,2795,2803,2814,2822,2830,2838,2837,2838,2845,2851,2850,2888,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2817,2809,2821,2836,2850,2860,2870,2918,2886,2894,2892,2893,2898,2909,2903,2940,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2767,2761,2773,2788,2807,2812,2823,2827,2834,2844,2886,2842,2848,2857,2853,2886,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2813,2808,2820,2881,2856,2861,2871,2877,2883,2892,2892,2892,2897,2903,2899,2935,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2811,2799,2811,2829,2849,2853,2862,2866,2875,2883,2881,2881,2886,2894,2886,2923,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2732,2721,2733,2750,2767,2815,2779,2784,2791,2797,2796,2798,2804,2810,2804,2837,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2798,2786,2797,2814,2830,2836,2843,2846,2852,2857,2860,2859,2866,2871,2866,2899,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2778,2765,2776,2791,2806,2814,2820,2822,2828,2834,2834,2834,2838,2844,2840,2877,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2792,2776,2787,2802,2818,2820,2829,2832,2841,2846,2845,2843,2846,2851,2851,2886,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2712,2698,2708,2724,2737,2740,2749,2754,2761,2765,2760,2762,2764,2769,2767,2802,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2771,2756,2763,2775,2835,2794,2803,2808,2812,2817,2814,2816,2818,2822,2821,2853,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2765,2745,2752,2765,2779,2784,2791,2795,2799,2806,2803,2847,2804,2809,2808,2840,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2746,2723,2733,2745,2758,2762,2770,2772,2776,2783,2781,2780,2781,2786,2785,2818,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2710,2688,2696,2709,2721,2726,2775,2735,2741,2747,2743,2743,2742,2748,2745,2780,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2645,2620,2629,2639,2651,2655,2663,2666,2670,2676,2672,2671,2674,2676,2675,2709,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2684,2659,2667,2678,2687,2695,2699,2702,2708,2715,2711,2716,2717,2718,2716,2752,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2668,2642,2649,2659,2671,2676,2680,2682,2731,2694,2692,2696,2698,2698,2698,2733,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2659,2632,2639,2648,2659,2665,2670,2672,2679,2684,2681,2685,2687,2690,2689,2724,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2630,2601,2610,2620,2629,2635,2641,2642,2649,2655,2654,2655,2659,2661,2662,2695,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2605,2578,2583,2592,2602,2608,2613,2615,2620,2627,2627,2630,2630,2635,2635,2672,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2583,2552,2559,2568,2579,2581,2585,2589,2595,2600,2603,2603,2607,2611,2611,2650,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2575,2544,2549,2558,2570,2574,2577,2581,2585,2591,2593,2595,2641,2604,2604,2649,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2556,2528,2531,2541,2551,2555,2561,2561,2566,2570,2575,2577,2580,2586,2590,2642,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2536,2509,2513,2524,2534,2535,2538,2542,2546,2550,2554,2557,2561,2569,2577,2639,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2529,2503,2508,2520,2531,2531,2536,2540,2542,2548,2552,2555,2560,2570,2624,2655,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2455,2434,2438,2452,2462,2467,2468,2471,2474,2481,2486,2490,2492,2506,2522,2615,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2510,2493,2502,2514,2526,2531,2533,2534,2539,2548,2554,2558,2559,2573,2605,2744,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2578,2884,2883,2902,2930,2946,2960,2944,2964,2989,2998,2993,2987,2994,3063,2976,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +special_raw_delta,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,400,400,400,400,400,400,400,400,400,400,400,400,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,400,400,400,400,400,400,400,400,400,400,400,400,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,350,350,350,350,350,350,350,350,350,350,350,350,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,400,400,400,400,400,400,400,400,400,400,400,400,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,450,400,400,400,400,400,400,400,400,400,400,400,400,450,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +noise_data_limit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +95,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/proprietary/vendor/firmware/goodix-csot-gt9916S-2201040d-61EA60E3-rhodep.bin b/proprietary/vendor/firmware/goodix-csot-gt9916S-2201040d-61EA60E3-rhodep.bin new file mode 100644 index 0000000..282520a Binary files /dev/null and b/proprietary/vendor/firmware/goodix-csot-gt9916S-2201040d-61EA60E3-rhodep.bin differ diff --git a/proprietary/vendor/firmware/goodix-tianma-gt9916S-2201040d-61EA66BC-rhodep.bin b/proprietary/vendor/firmware/goodix-tianma-gt9916S-2201040d-61EA66BC-rhodep.bin new file mode 100644 index 0000000..282520a Binary files /dev/null and b/proprietary/vendor/firmware/goodix-tianma-gt9916S-2201040d-61EA66BC-rhodep.bin differ diff --git a/proprietary/vendor/firmware/mot_dw9781c.prog b/proprietary/vendor/firmware/mot_dw9781c.prog new file mode 100644 index 0000000..ba3d3ce Binary files /dev/null and b/proprietary/vendor/firmware/mot_dw9781c.prog differ diff --git a/proprietary/vendor/firmware/sec_s3nrn4v_firmware.bin b/proprietary/vendor/firmware/sec_s3nrn4v_firmware.bin new file mode 100644 index 0000000..94f5701 Binary files /dev/null and b/proprietary/vendor/firmware/sec_s3nrn4v_firmware.bin differ diff --git a/proprietary/vendor/firmware/tianma_goodix_cfg_group.bin b/proprietary/vendor/firmware/tianma_goodix_cfg_group.bin new file mode 100644 index 0000000..be0e0a7 Binary files /dev/null and b/proprietary/vendor/firmware/tianma_goodix_cfg_group.bin differ diff --git a/proprietary/vendor/firmware/tianma_goodix_test_limits_255.csv b/proprietary/vendor/firmware/tianma_goodix_test_limits_255.csv new file mode 100644 index 0000000..c2dbf15 --- /dev/null +++ b/proprietary/vendor/firmware/tianma_goodix_test_limits_255.csv @@ -0,0 +1,118 @@ +test_config,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x54,0x4D,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0x39,0x31,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x52,0x68,0x6F,0x64,0x65,0x00,0x00,0x00,0x00,0x00,0x8D,0x1D,0x22,0x06,0x05,0x32,0x30,0x32,0x32,0x30,0x32,0x30,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDA,0x05,0x3A,0xEC,0x06,0x40,0x01,0x10,0x24,0x00,0x01,0x02,0x05,0x04,0x03,0x08,0x06,0x07,0x09,0x0A,0x0C,0x0D,0x0F,0x10,0x0E,0xFF,0xFF,0xFF,0xFF,0x1E,0x02,0x01,0x04,0x03,0x1A,0x05,0x0E,0x08,0x12,0x0B,0x07,0x0A,0x0D,0x09,0x14,0x0F,0x06,0x19,0x11,0x0C,0x16,0x26,0x10,0x13,0x15,0x17,0x18,0x1F,0x1C,0x24,0x20,0x1D,0x21,0x22,0x23,0xFF,0xFF,0xFF,0xFF,0x0E,0x02,0x48,0x10,0x00,0xF5,0x98,0x00,0xE4,0x0C,0x0E,0x00,0x00,0x01,0x02,0x03,0x0E,0x04,0x08,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x22,0x08,0x38,0x04,0x60,0x09,0x6E,0x00,0x8C,0x00,0x1E,0x00,0x28,0x00,0x3C,0x00,0x50,0x00,0x46,0x00,0x46,0x00,0x0A,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x64,0x00,0x04,0x0A,0x04,0x01,0x1E,0x0B,0x2F,0x21,0x1F,0x1F,0x40,0x01,0x08,0x01,0x04,0x10,0x91,0xDA,0x8D,0xCF,0x12,0x6A,0x00,0x00,0x00,0x00,0x72,0x30,0xED,0x15,0x00,0x00,0x00,0x00,0x2E,0x0C,0x01,0x02,0x00,0x05,0x00,0x00,0x20,0x03,0x00,0x00,0x64,0x00,0x14,0x00,0x14,0x00,0x50,0x00,0x14,0x00,0x32,0x00,0x00,0x05,0x00,0x00,0xF4,0x01,0x00,0x00,0x64,0x00,0x14,0x00,0x14,0x00,0x64,0x00,0x14,0x00,0x31,0x00,0x01,0x0D,0x52,0x0D,0x7A,0x01,0x00,0x00,0x91,0x01,0x00,0x00,0x91,0x01,0x00,0x00,0x91,0x01,0x00,0x00,0x91,0x01,0x00,0x00,0x91,0x01,0x00,0x00,0x93,0x01,0x00,0x00,0x8E,0x01,0x00,0x00,0x8F,0x01,0x00,0x00,0x96,0x01,0x00,0x00,0x96,0x01,0x00,0x00,0x99,0x01,0x00,0x00,0x9B,0x01,0x00,0x00,0x9D,0x01,0x00,0x00,0x9D,0x01,0x00,0x00,0x96,0x01,0x00,0x00,0xBF,0x01,0x00,0x00,0xB1,0x01,0x00,0x00,0xC5,0x01,0x00,0x00,0xD2,0x01,0x00,0x00,0x52,0x0E,0x4C,0x01,0x52,0x01,0x4F,0x01,0x4C,0x01,0x4C,0x01,0x4D,0x01,0x4C,0x01,0x4C,0x01,0x4C,0x01,0x4C,0x01,0x47,0x01,0x47,0x01,0x48,0x01,0x4A,0x01,0x47,0x01,0x48,0x01,0x47,0x01,0x42,0x01,0x42,0x01,0x40,0x01,0x42,0x01,0x42,0x01,0x47,0x01,0x43,0x01,0x40,0x01,0x3D,0x01,0x3D,0x01,0x3D,0x01,0x40,0x01,0x42,0x01,0x42,0x01,0x40,0x01,0x42,0x01,0x40,0x01,0x40,0x01,0x2D,0x01,0x10,0x01,0x9C,0x01,0x9C,0x01,0x94,0x01,0x08,0x0F,0x98,0x00,0x55,0x0E,0x00,0x00,0x0E,0x10,0x16,0x00,0x00,0x01,0x00,0x00,0x05,0x14,0x46,0x00,0x00,0x00,0x16,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x08,0x02,0x02,0x0A,0x14,0x03,0xD0,0x07,0x88,0x13,0x40,0x14,0x0A,0x05,0xE4,0x0C,0x7C,0x15,0xB0,0x1D,0x00,0x19,0xDC,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x03,0x00,0x2D,0x19,0x00,0x0A,0x00,0x66,0x6A,0x82,0x70,0x68,0x00,0x00,0x00,0x57,0x57,0x57,0x57,0x55,0x00,0x00,0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x10,0x17,0x00,0x01,0x01,0x8C,0x0A,0x8D,0x20,0x1E,0x0A,0x03,0x8C,0x0A,0x8C,0x0A,0x12,0x1A,0x00,0xFE,0x0F,0x00,0x0F,0xE0,0x0F,0x00,0x0E,0x00,0x00,0x05,0x80,0x00,0x80,0x0C,0x16,0x1B,0x01,0x0A,0x12,0x14,0x0F,0x12,0x14,0x23,0x14,0x14,0xC8,0xC8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x1C,0x14,0x08,0xC8,0x05,0x0A,0x0B,0x64,0x0E,0x0A,0x02,0xFA,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x1D,0x09,0x40,0x06,0x14,0x00,0x00,0x00,0x14,0x00,0x08,0x07,0xA4,0x01,0x1A,0x04,0x40,0x06,0x1A,0x04,0x90,0x01,0x0A,0x1E,0x00,0x10,0x28,0x78,0x00,0x08,0x1E,0x00,0x00,0x08,0x1E,0x00,0x10,0x00,0x00,0x00,0x00,0x04,0x1F,0x05,0x0A,0x0E,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x24,0x00,0x01,0x01,0x1A,0x41,0x1A,0x41,0x1E,0x0A,0x03,0x19,0x08,0x18,0x25,0x18,0x25,0x00,0xCF,0x02,0xB1,0x02,0x04,0x03,0x0C,0x0C,0x01,0x00,0x03,0x0A,0x04,0x2C,0x01,0x78,0x00,0x32,0x00,0x03,0x00,0x14,0x26,0x00,0x01,0xCC,0x01,0x6C,0x02,0x14,0x00,0x42,0x09,0x1E,0x00,0x14,0x00,0x8D,0x20,0x10,0x00,0x04,0x32,0x05,0x00,0x16,0x33,0x01,0x00,0x0E,0x00,0x12,0x00,0x3E,0x00,0x42,0xFA,0x00,0x04,0x1E,0x00,0x01,0x03,0x03,0x64,0x00,0x00,0x64,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x32,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x88,0x00,0x87,0x00,0x88,0x00,0x86,0x00,0x86,0x00,0x89,0x00,0x82,0x00,0x85,0x00,0x81,0x00,0x83,0x00,0x80,0x00,0x7D,0x00,0x79,0x00,0x77,0x00,0x77,0x00,0x74,0x00,0x71,0x00,0x71,0x00,0x6C,0x00,0x6D,0x00,0x67,0x00,0x67,0x00,0x64,0x00,0x60,0x00,0x5D,0x00,0x5D,0x00,0x5C,0x00,0x59,0x00,0x56,0x00,0x55,0x00,0x55,0x00,0x52,0x00,0x51,0x00,0x4F,0x00,0x4E,0x00,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x51,0x06,0x12,0x1C,0x42,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x16,0x52,0x00,0x1E,0x10,0x27,0x64,0x00,0x88,0x13,0x88,0x13,0x64,0xC8,0xDC,0x05,0x20,0x03,0xAE,0x01,0xC8,0x00,0x06,0x53,0x3E,0x32,0x60,0x60,0x16,0x54,0x28,0x00,0x28,0x00,0x3C,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0A,0x55,0x14,0x00,0x1E,0x00,0x01,0x00,0x00,0x00,0x18,0x56,0x00,0x0A,0x01,0x0F,0x55,0x3C,0xAA,0x00,0x00,0x00,0x00,0x00,0x28,0x08,0x2D,0x32,0x09,0x3C,0x3C,0x0A,0x55,0x00,0x0E,0x59,0x00,0x99,0x66,0x50,0x08,0x02,0x0C,0x19,0x14,0x0C,0x03,0x5A,0x1A,0x5A,0x14,0x17,0x19,0x20,0x17,0x19,0x20,0x16,0x19,0x22,0x16,0x19,0x22,0x03,0x40,0x00,0x18,0x09,0x3C,0x6C,0x00,0x78,0x06,0x04,0x10,0x5B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x5C,0x50,0x00,0x96,0x00,0x2C,0x01,0x20,0x03,0xE8,0x03,0xD0,0x07,0xD0,0x07,0x10,0x27,0x58,0x02,0x2D,0x00,0xE8,0x03,0x00,0x00,0x88,0x13,0x00,0x00,0x10,0x27,0x00,0x00,0xF4,0x01,0x00,0x00,0xA0,0x0F,0x00,0x00,0x40,0x1F,0x00,0x00,0x08,0x00,0x0C,0x5D,0x60,0x00,0x80,0x00,0xC0,0x00,0x02,0x02,0x00,0x00,0x0C,0x5E,0x01,0x00,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x00,0x16,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x60,0x01,0x40,0x00,0x00,0x89,0x00,0x80,0x00,0x84,0x00,0x7C,0x00,0x80,0x00,0x7D,0x00,0x77,0x00,0x78,0x00,0x7A,0x00,0x78,0x00,0x77,0x00,0x76,0x00,0x74,0x00,0x72,0x00,0x71,0x00,0x6B,0x00,0x71,0x00,0x6D,0x00,0x69,0x00,0x6A,0x00,0x63,0x00,0x66,0x00,0x63,0x00,0x60,0x00,0x5D,0x00,0x5D,0x00,0x5A,0x00,0x56,0x00,0x56,0x00,0x50,0x00,0x4E,0x00,0x4B,0x00,0x4B,0x00,0x47,0x00,0x46,0x00,0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x61,0x58,0x02,0xA4,0x01,0x2C,0x01,0x40,0x01,0x5E,0x01,0x2C,0x01,0x0A,0xFF,0x0F,0xFA,0x00,0x64,0x0A,0xFA,0x64,0x96,0x08,0x62,0x01,0x0A,0x04,0x00,0x00,0x00,0x0A,0x63,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x64,0x01,0x3C,0x37,0x05,0x15,0x00,0x00,0x3F,0x3F,0x00,0x00,0x60,0x60,0x78,0x78,0x00,0x00,0x00,0xB4,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x0E,0x65,0x01,0xBE,0x00,0x82,0x00,0x82,0x00,0x96,0x00,0x96,0x00,0x00,0x0A,0x66,0x1A,0x60,0x96,0xD3,0x00,0x0C,0x30,0x00,0x1E,0x67,0x00,0x10,0x00,0x00,0x00,0x32,0x01,0x05,0x00,0x04,0x00,0x20,0x00,0x08,0x00,0x48,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2E,0x68,0x01,0x40,0x00,0x00,0x83,0x00,0x80,0x00,0x80,0x00,0x83,0x00,0x86,0x00,0x85,0x00,0x86,0x00,0x85,0x00,0x89,0x00,0x89,0x00,0x8D,0x00,0x8B,0x00,0x8B,0x00,0x88,0x00,0x88,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x69,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x5A,0x1C,0x0E,0x6B,0x01,0x03,0x08,0x0B,0x16,0x50,0xC8,0x00,0x00,0x00,0x00,0x00,0x44,0x6C,0x00,0x41,0x00,0x41,0x00,0x2C,0x01,0x2C,0x01,0x90,0x01,0xC8,0x00,0x01,0x02,0x3C,0x3C,0x5F,0x5F,0xE8,0x03,0x00,0x03,0xE8,0x03,0x00,0x03,0xE8,0x03,0x00,0x02,0xE8,0x03,0x00,0x02,0x10,0x18,0x40,0x00,0x00,0x00,0x00,0x05,0x04,0x02,0x02,0x05,0x05,0x05,0x05,0x3C,0x5F,0x07,0x14,0x19,0x23,0x2D,0x03,0xDC,0x05,0xC8,0x00,0x01,0x00,0x00,0x00,0x30,0x6D,0x64,0x00,0xC8,0x00,0x2C,0x01,0x90,0x01,0xE8,0x03,0xD0,0x07,0xD0,0x07,0x10,0x27,0x2C,0x01,0x2D,0x00,0x90,0x01,0x00,0x00,0xB8,0x0B,0x00,0x00,0x40,0x1F,0x00,0x00,0x20,0x03,0x00,0x00,0xD0,0x07,0x00,0x00,0xB8,0x0B,0x00,0x00,0x08,0x01,0x0C,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x0C,0x42,0x00 +shortciurt_threshold,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10,150,150,150,100,100,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +special_raw_max,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8033 ,9721 ,9711 ,9729 ,9748 ,9751 ,9796 ,8365 ,8422 ,9832 ,9827 ,9841 ,9842 ,9929 ,9844 ,8358 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9693 ,9881 ,9817 ,9834 ,9854 ,9855 ,9876 ,9282 ,9319 ,9899 ,9909 ,9921 ,9913 ,9901 ,9857 ,9853 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9774 ,9841 ,9874 ,9893 ,9913 ,9915 ,9930 ,9899 ,9914 ,9953 ,9968 ,9975 ,9962 ,9948 ,9899 ,9914 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9795 ,9862 ,9989 ,9920 ,9939 ,9948 ,9963 ,9948 ,9964 ,9986 ,9994 ,9997 ,9987 ,9970 ,9916 ,9921 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9800 ,9867 ,9905 ,9926 ,9949 ,9956 ,9974 ,9965 ,9980 ,9997 ,10002 ,10006 ,9994 ,9975 ,9919 ,9916 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9778 ,9842 ,9879 ,9903 ,9926 ,9933 ,9953 ,9946 ,9961 ,9975 ,9979 ,9982 ,10063 ,9949 ,9893 ,9885 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9546 ,9608 ,9645 ,9668 ,9691 ,9698 ,9717 ,9707 ,9723 ,9737 ,9745 ,9745 ,9734 ,9713 ,9655 ,9640 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9717 ,9779 ,9813 ,9838 ,9864 ,9869 ,9887 ,9876 ,9983 ,9906 ,9916 ,9915 ,9903 ,9882 ,9828 ,9799 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9758 ,9819 ,9853 ,9876 ,9992 ,9908 ,9928 ,9918 ,9932 ,9946 ,9955 ,9955 ,9944 ,9919 ,9864 ,9827 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9773 ,9834 ,9867 ,9889 ,9914 ,9919 ,9942 ,9930 ,9946 ,10051 ,9966 ,9967 ,9953 ,9932 ,9875 ,9827 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9749 ,9809 ,9839 ,9861 ,9885 ,9891 ,9913 ,9901 ,9919 ,9935 ,9937 ,9939 ,9921 ,9903 ,9846 ,9788 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9770 ,9827 ,9860 ,9880 ,9900 ,9907 ,9930 ,9920 ,9937 ,9953 ,9953 ,9956 ,9939 ,9921 ,9862 ,9796 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9501 ,9554 ,9590 ,9696 ,9626 ,9634 ,9655 ,9648 ,9660 ,9674 ,9678 ,9680 ,9665 ,9645 ,9587 ,9517 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9673 ,9723 ,9761 ,9776 ,9800 ,9806 ,9824 ,9819 ,9830 ,9845 ,9849 ,9849 ,9835 ,9813 ,9758 ,9680 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9721 ,9769 ,9805 ,9823 ,9844 ,9849 ,9869 ,9861 ,9873 ,9888 ,9891 ,9891 ,9877 ,9860 ,9803 ,9716 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9545 ,9591 ,9625 ,9644 ,9662 ,9668 ,9689 ,9684 ,9696 ,9705 ,9797 ,9708 ,9695 ,9676 ,9620 ,9532 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9520 ,9563 ,9594 ,9613 ,9633 ,9637 ,9654 ,9653 ,9664 ,9670 ,9674 ,9674 ,9661 ,9646 ,9589 ,9496 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9757 ,9798 ,9831 ,9849 ,9870 ,9967 ,9892 ,9889 ,9901 ,9908 ,9911 ,9912 ,9898 ,9881 ,9823 ,9723 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9539 ,9577 ,9607 ,9627 ,9648 ,9651 ,9670 ,9664 ,9676 ,9687 ,9688 ,9688 ,9674 ,9659 ,9602 ,9499 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9705 ,9739 ,9770 ,9791 ,9810 ,9813 ,9835 ,9828 ,9841 ,9849 ,9853 ,9852 ,9839 ,9825 ,9770 ,9656 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9633 ,9662 ,9689 ,9708 ,9725 ,9730 ,9750 ,9836 ,9759 ,9768 ,9770 ,9770 ,9758 ,9745 ,9692 ,9575 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9701 ,9730 ,9754 ,9771 ,9789 ,9789 ,9812 ,9806 ,9820 ,9828 ,9835 ,9832 ,9823 ,9808 ,9754 ,9632 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9627 ,9654 ,9677 ,9690 ,9708 ,9715 ,9732 ,9726 ,9738 ,9749 ,9755 ,9753 ,9745 ,9730 ,9677 ,9555 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9652 ,9674 ,9698 ,9709 ,9730 ,9729 ,9840 ,9744 ,9757 ,9766 ,9772 ,9771 ,9759 ,9749 ,9694 ,9566 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9624 ,9645 ,9668 ,9682 ,9697 ,9695 ,9714 ,9710 ,9722 ,9730 ,9735 ,9736 ,9723 ,9714 ,9660 ,9529 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9699 ,9719 ,9739 ,9753 ,9768 ,9768 ,9786 ,9780 ,9792 ,9797 ,9801 ,9802 ,9791 ,9783 ,9728 ,9595 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9661 ,9676 ,9700 ,9714 ,9726 ,9729 ,9745 ,9738 ,9750 ,9755 ,9759 ,9756 ,9748 ,9740 ,9686 ,9551 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9626 ,9641 ,9661 ,9679 ,9690 ,9692 ,9707 ,9699 ,9709 ,9718 ,9721 ,9812 ,9715 ,9705 ,9650 ,9517 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9565 ,9580 ,9602 ,9614 ,9628 ,9626 ,9640 ,9636 ,9646 ,9650 ,9654 ,9653 ,9656 ,9639 ,9591 ,9460 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9573 ,9589 ,9612 ,9624 ,9637 ,9633 ,9650 ,9645 ,9655 ,9657 ,9661 ,9666 ,9668 ,9652 ,9604 ,9573 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9558 ,9574 ,9598 ,9609 ,9625 ,9621 ,9632 ,9627 ,9635 ,9637 ,9642 ,9656 ,9653 ,9638 ,9595 ,9476 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9517 ,9539 ,9563 ,9574 ,9588 ,9584 ,9595 ,9585 ,9594 ,9599 ,9608 ,9618 ,9611 ,9601 ,9657 ,9460 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9560 ,9580 ,9609 ,9620 ,9629 ,9625 ,9638 ,9624 ,9633 ,9642 ,9657 ,9658 ,9650 ,9648 ,9621 ,9533 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9506 ,9527 ,9557 ,9571 ,9578 ,9578 ,9594 ,9587 ,9599 ,9609 ,9617 ,9611 ,9601 ,9606 ,9590 ,9551 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9455 ,9489 ,9520 ,9537 ,9555 ,9564 ,9581 ,9582 ,9593 ,9604 ,9602 ,9591 ,9576 ,9595 ,9604 ,9648 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8051 ,9776 ,9788 ,9814 ,9847 ,9861 ,9885 ,9896 ,9913 ,9922 ,9924 ,9914 ,9900 ,9951 ,10050 ,8642 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +special_raw_min,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +3868 ,4681 ,4676 ,4684 ,4693 ,4695 ,4717 ,4028 ,4055 ,4734 ,4732 ,4738 ,4739 ,4780 ,4740 ,4024 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4667 ,4757 ,4726 ,4735 ,4744 ,4745 ,4755 ,4469 ,4487 ,4766 ,4771 ,4777 ,4773 ,4767 ,4746 ,4744 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4706 ,4738 ,4754 ,4764 ,4773 ,4774 ,4781 ,4766 ,4774 ,4792 ,4800 ,4803 ,4797 ,4790 ,4766 ,4773 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4716 ,4749 ,4810 ,4776 ,4786 ,4790 ,4797 ,4790 ,4798 ,4808 ,4812 ,4813 ,4808 ,4800 ,4774 ,4777 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4719 ,4751 ,4769 ,4779 ,4790 ,4794 ,4802 ,4798 ,4805 ,4813 ,4816 ,4818 ,4812 ,4803 ,4776 ,4775 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4708 ,4739 ,4756 ,4768 ,4779 ,4783 ,4792 ,4789 ,4796 ,4803 ,4805 ,4806 ,4845 ,4790 ,4763 ,4759 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4596 ,4626 ,4644 ,4655 ,4666 ,4669 ,4678 ,4674 ,4682 ,4688 ,4692 ,4692 ,4687 ,4676 ,4649 ,4642 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4679 ,4708 ,4725 ,4737 ,4749 ,4752 ,4760 ,4755 ,4806 ,4769 ,4774 ,4774 ,4768 ,4758 ,4732 ,4718 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4698 ,4727 ,4744 ,4755 ,4811 ,4770 ,4780 ,4775 ,4782 ,4789 ,4793 ,4793 ,4788 ,4776 ,4749 ,4731 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4706 ,4735 ,4751 ,4762 ,4773 ,4776 ,4787 ,4781 ,4789 ,4840 ,4798 ,4799 ,4792 ,4782 ,4755 ,4731 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4694 ,4723 ,4738 ,4748 ,4759 ,4762 ,4773 ,4767 ,4776 ,4784 ,4784 ,4785 ,4777 ,4768 ,4740 ,4713 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4704 ,4732 ,4747 ,4757 ,4767 ,4770 ,4781 ,4776 ,4784 ,4792 ,4792 ,4794 ,4785 ,4777 ,4748 ,4716 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4575 ,4600 ,4617 ,4668 ,4635 ,4638 ,4649 ,4645 ,4651 ,4658 ,4660 ,4661 ,4654 ,4644 ,4616 ,4582 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4657 ,4681 ,4700 ,4707 ,4718 ,4721 ,4730 ,4728 ,4733 ,4740 ,4742 ,4742 ,4735 ,4725 ,4698 ,4661 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4681 ,4704 ,4721 ,4729 ,4740 ,4742 ,4752 ,4748 ,4754 ,4761 ,4762 ,4762 ,4755 ,4747 ,4720 ,4678 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4596 ,4618 ,4634 ,4644 ,4652 ,4655 ,4665 ,4663 ,4669 ,4673 ,4717 ,4674 ,4668 ,4659 ,4632 ,4590 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4583 ,4604 ,4619 ,4628 ,4638 ,4640 ,4648 ,4648 ,4653 ,4656 ,4658 ,4658 ,4651 ,4645 ,4617 ,4572 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4698 ,4717 ,4734 ,4742 ,4752 ,4799 ,4763 ,4761 ,4767 ,4771 ,4772 ,4772 ,4766 ,4757 ,4730 ,4681 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4593 ,4611 ,4626 ,4635 ,4645 ,4647 ,4656 ,4653 ,4659 ,4664 ,4665 ,4665 ,4658 ,4651 ,4623 ,4573 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4673 ,4689 ,4704 ,4714 ,4723 ,4725 ,4735 ,4732 ,4738 ,4742 ,4744 ,4744 ,4738 ,4731 ,4704 ,4649 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4638 ,4652 ,4665 ,4674 ,4683 ,4685 ,4694 ,4736 ,4699 ,4703 ,4704 ,4704 ,4698 ,4692 ,4667 ,4610 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4671 ,4685 ,4696 ,4705 ,4713 ,4713 ,4725 ,4721 ,4728 ,4732 ,4735 ,4734 ,4730 ,4722 ,4697 ,4638 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4635 ,4648 ,4659 ,4666 ,4674 ,4678 ,4686 ,4683 ,4689 ,4694 ,4697 ,4696 ,4692 ,4685 ,4659 ,4600 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4647 ,4658 ,4670 ,4675 ,4685 ,4684 ,4738 ,4692 ,4698 ,4702 ,4705 ,4705 ,4699 ,4694 ,4667 ,4606 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4634 ,4644 ,4655 ,4661 ,4669 ,4668 ,4677 ,4675 ,4681 ,4685 ,4687 ,4687 ,4682 ,4677 ,4651 ,4588 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4670 ,4679 ,4689 ,4696 ,4703 ,4703 ,4712 ,4709 ,4715 ,4717 ,4719 ,4719 ,4714 ,4710 ,4684 ,4620 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4651 ,4659 ,4670 ,4677 ,4683 ,4684 ,4692 ,4689 ,4694 ,4697 ,4699 ,4698 ,4694 ,4689 ,4663 ,4599 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4635 ,4642 ,4652 ,4660 ,4666 ,4666 ,4674 ,4670 ,4675 ,4679 ,4680 ,4724 ,4678 ,4673 ,4646 ,4582 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4605 ,4613 ,4623 ,4629 ,4635 ,4635 ,4642 ,4640 ,4644 ,4646 ,4648 ,4648 ,4649 ,4641 ,4618 ,4555 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4609 ,4617 ,4628 ,4634 ,4640 ,4638 ,4647 ,4644 ,4649 ,4650 ,4652 ,4654 ,4655 ,4647 ,4624 ,4609 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4602 ,4610 ,4621 ,4627 ,4634 ,4632 ,4638 ,4635 ,4639 ,4640 ,4643 ,4649 ,4648 ,4641 ,4620 ,4562 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4582 ,4593 ,4605 ,4610 ,4616 ,4614 ,4620 ,4615 ,4619 ,4622 ,4626 ,4631 ,4628 ,4623 ,4650 ,4555 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4603 ,4613 ,4627 ,4632 ,4636 ,4634 ,4641 ,4634 ,4638 ,4643 ,4650 ,4650 ,4646 ,4645 ,4632 ,4590 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4577 ,4587 ,4602 ,4608 ,4611 ,4611 ,4619 ,4616 ,4622 ,4627 ,4631 ,4628 ,4623 ,4625 ,4617 ,4599 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4552 ,4569 ,4584 ,4592 ,4601 ,4605 ,4613 ,4613 ,4619 ,4624 ,4623 ,4618 ,4611 ,4620 ,4624 ,4645 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +3876 ,4707 ,4713 ,4725 ,4741 ,4748 ,4760 ,4765 ,4773 ,4777 ,4778 ,4774 ,4767 ,4791 ,4839 ,4161 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +special_raw_delta,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,500,350,350,350,350,500,500,500,500,350,350,350,350,500,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,350,350,350,350,350,350,500,500,350,350,350,350,350,350,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,400,400,400,400,400,400,400,400,400,400,400,400,400,400,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +500,500,400,400,400,400,400,400,400,400,400,400,400,400,500,500,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +noise_data_limit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +125,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/proprietary/vendor/lib/libacdbloader.so b/proprietary/vendor/lib/libacdbloader.so new file mode 100644 index 0000000..2d10222 Binary files /dev/null and b/proprietary/vendor/lib/libacdbloader.so differ diff --git a/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p128e_s5kjn1_eeprom.so b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p128e_s5kjn1_eeprom.so new file mode 100644 index 0000000..6220e5e Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p128e_s5kjn1_eeprom.so differ diff --git a/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p64e_ov16a1q_eeprom.so b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p64e_ov16a1q_eeprom.so new file mode 100644 index 0000000..df2b33c Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_gt24p64e_ov16a1q_eeprom.so differ diff --git a/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_rhodep_gc02m1_otp.so b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_rhodep_gc02m1_otp.so new file mode 100644 index 0000000..46d27c4 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_rhodep_gc02m1_otp.so differ diff --git a/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_rhodep_s5k4h7_otp.so b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_rhodep_s5k4h7_otp.so new file mode 100644 index 0000000..d191aaa Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.mot.eeprom.mot_rhodep_s5k4h7_otp.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensor.mot_gc02m1.so b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_gc02m1.so new file mode 100644 index 0000000..713b717 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_gc02m1.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensor.mot_ov16a1q.so b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_ov16a1q.so new file mode 100644 index 0000000..de0ce7b Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_ov16a1q.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5k4h7.so b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5k4h7.so new file mode 100644 index 0000000..151630a Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5k4h7.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5kjn1.so b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5kjn1.so new file mode 100644 index 0000000..ad63f4d Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensor.mot_s5kjn1.so differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_gc02m1_sunwin.bin b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_gc02m1_sunwin.bin new file mode 100644 index 0000000..36574c7 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_gc02m1_sunwin.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_ov16a1q_ofilm.bin b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_ov16a1q_ofilm.bin new file mode 100644 index 0000000..254ee16 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_ov16a1q_ofilm.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5k4h7_qtech_ff.bin b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5k4h7_qtech_ff.bin new file mode 100644 index 0000000..9cc06be Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5k4h7_qtech_ff.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_qtech.bin b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_qtech.bin new file mode 100644 index 0000000..e00b725 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_qtech.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_sunny.bin b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_sunny.bin new file mode 100644 index 0000000..747d4e7 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_sunny.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.default.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.default.bin new file mode 100644 index 0000000..1cf18f5 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.default.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_gc02m1.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_gc02m1.bin new file mode 100644 index 0000000..190510e Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_gc02m1.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_ov16a1q.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_ov16a1q.bin new file mode 100644 index 0000000..30dc366 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_ov16a1q.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5k4h7ff.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5k4h7ff.bin new file mode 100644 index 0000000..b3279a3 Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5k4h7ff.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1.bin new file mode 100644 index 0000000..d1e418b Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1.bin differ diff --git a/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1_2nd.bin b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1_2nd.bin new file mode 100644 index 0000000..840659f Binary files /dev/null and b/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1_2nd.bin differ diff --git a/proprietary/vendor/lib64/camera/components/com.arcsoft.node.mfnr.so b/proprietary/vendor/lib64/camera/components/com.arcsoft.node.mfnr.so new file mode 100644 index 0000000..ead58cc Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.arcsoft.node.mfnr.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.mot.node.dc_capture.so b/proprietary/vendor/lib64/camera/components/com.mot.node.dc_capture.so new file mode 100644 index 0000000..8984139 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.mot.node.dc_capture.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.mot.node.dc_preview.so b/proprietary/vendor/lib64/camera/components/com.mot.node.dc_preview.so new file mode 100644 index 0000000..a990628 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.mot.node.dc_preview.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.camx.chiiqutils.so b/proprietary/vendor/lib64/camera/components/com.qti.camx.chiiqutils.so new file mode 100644 index 0000000..c626a01 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.camx.chiiqutils.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.eisv2.so b/proprietary/vendor/lib64/camera/components/com.qti.eisv2.so new file mode 100644 index 0000000..129b743 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.eisv2.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.eisv3.so b/proprietary/vendor/lib64/camera/components/com.qti.eisv3.so new file mode 100644 index 0000000..a53ffd3 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.eisv3.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.hvx.addconstant.so b/proprietary/vendor/lib64/camera/components/com.qti.hvx.addconstant.so new file mode 100644 index 0000000..6c3dbc8 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.hvx.addconstant.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.hvx.binning.so b/proprietary/vendor/lib64/camera/components/com.qti.hvx.binning.so new file mode 100644 index 0000000..68fb152 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.hvx.binning.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.customhwnode.so b/proprietary/vendor/lib64/camera/components/com.qti.node.customhwnode.so new file mode 100644 index 0000000..3832022 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.customhwnode.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.depth.so b/proprietary/vendor/lib64/camera/components/com.qti.node.depth.so new file mode 100644 index 0000000..8018887 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.depth.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.dewarp.so b/proprietary/vendor/lib64/camera/components/com.qti.node.dewarp.so new file mode 100644 index 0000000..55afb25 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.dewarp.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.dummyrtb.so b/proprietary/vendor/lib64/camera/components/com.qti.node.dummyrtb.so new file mode 100644 index 0000000..0cac744 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.dummyrtb.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.dummysat.so b/proprietary/vendor/lib64/camera/components/com.qti.node.dummysat.so new file mode 100644 index 0000000..5ed7856 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.dummysat.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.eisv2.so b/proprietary/vendor/lib64/camera/components/com.qti.node.eisv2.so new file mode 100644 index 0000000..f6bf71f Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.eisv2.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.eisv3.so b/proprietary/vendor/lib64/camera/components/com.qti.node.eisv3.so new file mode 100644 index 0000000..3cf8821 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.eisv3.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.fcv.so b/proprietary/vendor/lib64/camera/components/com.qti.node.fcv.so new file mode 100644 index 0000000..eaaa6e0 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.fcv.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.formatconversion.so b/proprietary/vendor/lib64/camera/components/com.qti.node.formatconversion.so new file mode 100644 index 0000000..95ea086 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.formatconversion.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.gpu.so b/proprietary/vendor/lib64/camera/components/com.qti.node.gpu.so new file mode 100644 index 0000000..bc3d060 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.gpu.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.memcpy.so b/proprietary/vendor/lib64/camera/components/com.qti.node.memcpy.so new file mode 100644 index 0000000..b4ca4ae Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.memcpy.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.ml.so b/proprietary/vendor/lib64/camera/components/com.qti.node.ml.so new file mode 100644 index 0000000..4aa3583 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.ml.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.remosaic.so b/proprietary/vendor/lib64/camera/components/com.qti.node.remosaic.so new file mode 100644 index 0000000..1146786 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.remosaic.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.stich.so b/proprietary/vendor/lib64/camera/components/com.qti.node.stich.so new file mode 100644 index 0000000..d4d8123 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.stich.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swaidenoiser.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swaidenoiser.so new file mode 100644 index 0000000..3961915 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swaidenoiser.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swbestats.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swbestats.so new file mode 100644 index 0000000..a498a34 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swbestats.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swcac.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swcac.so new file mode 100644 index 0000000..9a7e965 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swcac.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swlsc.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swlsc.so new file mode 100644 index 0000000..4963377 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swlsc.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swmctf.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swmctf.so new file mode 100644 index 0000000..e52004c Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swmctf.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swmfnr.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swmfnr.so new file mode 100644 index 0000000..bb24263 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swmfnr.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swpdpc.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swpdpc.so new file mode 100644 index 0000000..23e098f Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swpdpc.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swpreprocess.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swpreprocess.so new file mode 100644 index 0000000..eea706a Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swpreprocess.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.node.swregistration.so b/proprietary/vendor/lib64/camera/components/com.qti.node.swregistration.so new file mode 100644 index 0000000..e57c3fb Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.node.swregistration.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.aec.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.aec.so new file mode 100644 index 0000000..6101dcd Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.aec.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.aecwrapper.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.aecwrapper.so new file mode 100644 index 0000000..096c51e Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.aecwrapper.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.aecxcore.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.aecxcore.so new file mode 100644 index 0000000..1aa6191 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.aecxcore.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.af.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.af.so new file mode 100644 index 0000000..156028d Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.af.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.afd.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.afd.so new file mode 100644 index 0000000..d3d562a Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.afd.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.afwrapper.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.afwrapper.so new file mode 100644 index 0000000..2b8520d Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.afwrapper.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.asd.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.asd.so new file mode 100644 index 0000000..8c20553 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.asd.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.awb.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.awb.so new file mode 100644 index 0000000..4e9f129 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.awb.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.awbwrapper.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.awbwrapper.so new file mode 100644 index 0000000..56d7a3a Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.awbwrapper.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.cnndriver.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.cnndriver.so new file mode 100644 index 0000000..1342f64 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.cnndriver.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.haf.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.haf.so new file mode 100644 index 0000000..c117fbd Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.haf.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.hafoverride.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.hafoverride.so new file mode 100644 index 0000000..62dc34c Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.hafoverride.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlib.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlib.so new file mode 100644 index 0000000..1656ae8 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlib.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibsony.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibsony.so new file mode 100644 index 0000000..342563b Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibsony.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so new file mode 100644 index 0000000..3df685e Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.aec.so b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.aec.so new file mode 100644 index 0000000..3c2e66d Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.aec.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.af.so b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.af.so new file mode 100644 index 0000000..9c6769d Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.af.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.awb.so b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.awb.so new file mode 100644 index 0000000..8dc2e56 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.awb.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so new file mode 100644 index 0000000..d2654d2 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.vidhance.node.ica.so b/proprietary/vendor/lib64/camera/components/com.vidhance.node.ica.so new file mode 100644 index 0000000..741f457 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.vidhance.node.ica.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.vidhance.node.processing.so b/proprietary/vendor/lib64/camera/components/com.vidhance.node.processing.so new file mode 100644 index 0000000..c550487 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.vidhance.node.processing.so differ diff --git a/proprietary/vendor/lib64/camera/components/com.vidhance.stats.aec_dmbr.so b/proprietary/vendor/lib64/camera/components/com.vidhance.stats.aec_dmbr.so new file mode 100644 index 0000000..1bd57e4 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/com.vidhance.stats.aec_dmbr.so differ diff --git a/proprietary/vendor/lib64/camera/components/libdepthmapwrapper_secure.so b/proprietary/vendor/lib64/camera/components/libdepthmapwrapper_secure.so new file mode 100644 index 0000000..8959129 Binary files /dev/null and b/proprietary/vendor/lib64/camera/components/libdepthmapwrapper_secure.so differ diff --git a/proprietary/vendor/lib64/camera/fdconfigpreview.bin b/proprietary/vendor/lib64/camera/fdconfigpreview.bin new file mode 100644 index 0000000..ed0e847 Binary files /dev/null and b/proprietary/vendor/lib64/camera/fdconfigpreview.bin differ diff --git a/proprietary/vendor/lib64/camera/fdconfigpreviewlite.bin b/proprietary/vendor/lib64/camera/fdconfigpreviewlite.bin new file mode 100644 index 0000000..cae5c6f Binary files /dev/null and b/proprietary/vendor/lib64/camera/fdconfigpreviewlite.bin differ diff --git a/proprietary/vendor/lib64/camera/fdconfigvideo.bin b/proprietary/vendor/lib64/camera/fdconfigvideo.bin new file mode 100644 index 0000000..4a2a716 Binary files /dev/null and b/proprietary/vendor/lib64/camera/fdconfigvideo.bin differ diff --git a/proprietary/vendor/lib64/camera/fdconfigvideolite.bin b/proprietary/vendor/lib64/camera/fdconfigvideolite.bin new file mode 100644 index 0000000..a2a12de Binary files /dev/null and b/proprietary/vendor/lib64/camera/fdconfigvideolite.bin differ diff --git a/proprietary/vendor/lib64/com.qti.chiusecaseselector.so b/proprietary/vendor/lib64/com.qti.chiusecaseselector.so new file mode 100644 index 0000000..7f2fb82 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.chiusecaseselector.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.anchorsync.so b/proprietary/vendor/lib64/com.qti.feature2.anchorsync.so new file mode 100644 index 0000000..648f32b Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.anchorsync.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.demux.so b/proprietary/vendor/lib64/com.qti.feature2.demux.so new file mode 100644 index 0000000..b7d950e Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.demux.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.frameselect.so b/proprietary/vendor/lib64/com.qti.feature2.frameselect.so new file mode 100644 index 0000000..264fdfc Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.frameselect.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.fusion.so b/proprietary/vendor/lib64/com.qti.feature2.fusion.so new file mode 100644 index 0000000..0b0d69d Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.fusion.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.generic.so b/proprietary/vendor/lib64/com.qti.feature2.generic.so new file mode 100644 index 0000000..5990b3a Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.generic.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.gs.mannar.so b/proprietary/vendor/lib64/com.qti.feature2.gs.mannar.so new file mode 100644 index 0000000..4195643 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.gs.mannar.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.hdr.so b/proprietary/vendor/lib64/com.qti.feature2.hdr.so new file mode 100644 index 0000000..99ff16b Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.hdr.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.mcreprocrt.so b/proprietary/vendor/lib64/com.qti.feature2.mcreprocrt.so new file mode 100644 index 0000000..29399d9 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.mcreprocrt.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.memcpy.so b/proprietary/vendor/lib64/com.qti.feature2.memcpy.so new file mode 100644 index 0000000..39e05b5 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.memcpy.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.mfsr.so b/proprietary/vendor/lib64/com.qti.feature2.mfsr.so new file mode 100644 index 0000000..addb616 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.mfsr.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.mux.so b/proprietary/vendor/lib64/com.qti.feature2.mux.so new file mode 100644 index 0000000..81ffa0e Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.mux.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.rawhdr.so b/proprietary/vendor/lib64/com.qti.feature2.rawhdr.so new file mode 100644 index 0000000..402974b Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.rawhdr.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.realtimeserializer.so b/proprietary/vendor/lib64/com.qti.feature2.realtimeserializer.so new file mode 100644 index 0000000..2ab2c7b Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.realtimeserializer.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.rt.so b/proprietary/vendor/lib64/com.qti.feature2.rt.so new file mode 100644 index 0000000..7abf3cd Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.rt.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.rtmcx.so b/proprietary/vendor/lib64/com.qti.feature2.rtmcx.so new file mode 100644 index 0000000..daf3179 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.rtmcx.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.serializer.so b/proprietary/vendor/lib64/com.qti.feature2.serializer.so new file mode 100644 index 0000000..139e6f8 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.serializer.so differ diff --git a/proprietary/vendor/lib64/com.qti.feature2.swmf.so b/proprietary/vendor/lib64/com.qti.feature2.swmf.so new file mode 100644 index 0000000..58f8637 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.feature2.swmf.so differ diff --git a/proprietary/vendor/lib64/com.qti.settings.mannar.so b/proprietary/vendor/lib64/com.qti.settings.mannar.so new file mode 100644 index 0000000..f77e483 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.settings.mannar.so differ diff --git a/proprietary/vendor/lib64/com.qti.stats.common.so b/proprietary/vendor/lib64/com.qti.stats.common.so new file mode 100644 index 0000000..6b24028 Binary files /dev/null and b/proprietary/vendor/lib64/com.qti.stats.common.so differ diff --git a/proprietary/vendor/lib64/com.qualcomm.mcx.distortionmapper.so b/proprietary/vendor/lib64/com.qualcomm.mcx.distortionmapper.so new file mode 100644 index 0000000..bab48a1 Binary files /dev/null and b/proprietary/vendor/lib64/com.qualcomm.mcx.distortionmapper.so differ diff --git a/proprietary/vendor/lib64/com.qualcomm.mcx.linearmapper.so b/proprietary/vendor/lib64/com.qualcomm.mcx.linearmapper.so new file mode 100644 index 0000000..da04d39 Binary files /dev/null and b/proprietary/vendor/lib64/com.qualcomm.mcx.linearmapper.so differ diff --git a/proprietary/vendor/lib64/com.qualcomm.mcx.policy.mfl.so b/proprietary/vendor/lib64/com.qualcomm.mcx.policy.mfl.so new file mode 100644 index 0000000..42b6359 Binary files /dev/null and b/proprietary/vendor/lib64/com.qualcomm.mcx.policy.mfl.so differ diff --git a/proprietary/vendor/lib64/com.qualcomm.qti.mcx.usecase.extension.so b/proprietary/vendor/lib64/com.qualcomm.qti.mcx.usecase.extension.so new file mode 100644 index 0000000..9a70f26 Binary files /dev/null and b/proprietary/vendor/lib64/com.qualcomm.qti.mcx.usecase.extension.so differ diff --git a/proprietary/vendor/lib64/hw/camera.qcom.so b/proprietary/vendor/lib64/hw/camera.qcom.so new file mode 100644 index 0000000..f7e08c2 Binary files /dev/null and b/proprietary/vendor/lib64/hw/camera.qcom.so differ diff --git a/proprietary/vendor/lib64/hw/com.qti.chi.override.so b/proprietary/vendor/lib64/hw/com.qti.chi.override.so new file mode 100644 index 0000000..f2423bd Binary files /dev/null and b/proprietary/vendor/lib64/hw/com.qti.chi.override.so differ diff --git a/proprietary/vendor/lib64/hw/fingerprint.focaltech.default.so b/proprietary/vendor/lib64/hw/fingerprint.focaltech.default.so new file mode 100644 index 0000000..af083b0 Binary files /dev/null and b/proprietary/vendor/lib64/hw/fingerprint.focaltech.default.so differ diff --git a/proprietary/vendor/lib64/libBSTSWAD.so b/proprietary/vendor/lib64/libBSTSWAD.so new file mode 100644 index 0000000..911f693 Binary files /dev/null and b/proprietary/vendor/lib64/libBSTSWAD.so differ diff --git a/proprietary/vendor/lib64/libRbsFlow.so b/proprietary/vendor/lib64/libRbsFlow.so new file mode 100644 index 0000000..86a604e Binary files /dev/null and b/proprietary/vendor/lib64/libRbsFlow.so differ diff --git a/proprietary/vendor/lib64/libacdbloader.so b/proprietary/vendor/lib64/libacdbloader.so new file mode 100644 index 0000000..1f8525b Binary files /dev/null and b/proprietary/vendor/lib64/libacdbloader.so differ diff --git a/proprietary/vendor/lib64/libarcsoft_low_light_shot.so b/proprietary/vendor/lib64/libarcsoft_low_light_shot.so new file mode 100644 index 0000000..37beac7 Binary files /dev/null and b/proprietary/vendor/lib64/libarcsoft_low_light_shot.so differ diff --git a/proprietary/vendor/lib64/libbitmlengine.so b/proprietary/vendor/lib64/libbitmlengine.so new file mode 100644 index 0000000..4935eca Binary files /dev/null and b/proprietary/vendor/lib64/libbitmlengine.so differ diff --git a/proprietary/vendor/lib64/libbitmlenginev2.so b/proprietary/vendor/lib64/libbitmlenginev2.so new file mode 100644 index 0000000..89780e7 Binary files /dev/null and b/proprietary/vendor/lib64/libbitmlenginev2.so differ diff --git a/proprietary/vendor/lib64/libcamera_nn_stub.so b/proprietary/vendor/lib64/libcamera_nn_stub.so new file mode 100644 index 0000000..7829c5a Binary files /dev/null and b/proprietary/vendor/lib64/libcamera_nn_stub.so differ diff --git a/proprietary/vendor/lib64/libcamerapostproc.so b/proprietary/vendor/lib64/libcamerapostproc.so new file mode 100644 index 0000000..84e9305 Binary files /dev/null and b/proprietary/vendor/lib64/libcamerapostproc.so differ diff --git a/proprietary/vendor/lib64/libcamxexternalformatutils.so b/proprietary/vendor/lib64/libcamxexternalformatutils.so new file mode 100644 index 0000000..284f731 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxexternalformatutils.so differ diff --git a/proprietary/vendor/lib64/libcamxfacialfeatures.so b/proprietary/vendor/lib64/libcamxfacialfeatures.so new file mode 100644 index 0000000..1e43495 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxfacialfeatures.so differ diff --git a/proprietary/vendor/lib64/libcamxfdalgo.so b/proprietary/vendor/lib64/libcamxfdalgo.so new file mode 100644 index 0000000..85c92b2 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxfdalgo.so differ diff --git a/proprietary/vendor/lib64/libcamxfdengine.so b/proprietary/vendor/lib64/libcamxfdengine.so new file mode 100644 index 0000000..67cb3d2 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxfdengine.so differ diff --git a/proprietary/vendor/lib64/libcamxifestriping.so b/proprietary/vendor/lib64/libcamxifestriping.so new file mode 100644 index 0000000..0800613 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxifestriping.so differ diff --git a/proprietary/vendor/lib64/libcamximageformatutils.so b/proprietary/vendor/lib64/libcamximageformatutils.so new file mode 100644 index 0000000..8b05dec Binary files /dev/null and b/proprietary/vendor/lib64/libcamximageformatutils.so differ diff --git a/proprietary/vendor/lib64/libcamxqsatalgo.so b/proprietary/vendor/lib64/libcamxqsatalgo.so new file mode 100644 index 0000000..39f8bbc Binary files /dev/null and b/proprietary/vendor/lib64/libcamxqsatalgo.so differ diff --git a/proprietary/vendor/lib64/libcamxstatscore.so b/proprietary/vendor/lib64/libcamxstatscore.so new file mode 100644 index 0000000..05f9c4c Binary files /dev/null and b/proprietary/vendor/lib64/libcamxstatscore.so differ diff --git a/proprietary/vendor/lib64/libcamxswispiqmodule.so b/proprietary/vendor/lib64/libcamxswispiqmodule.so new file mode 100644 index 0000000..b0ceadb Binary files /dev/null and b/proprietary/vendor/lib64/libcamxswispiqmodule.so differ diff --git a/proprietary/vendor/lib64/libcamxswprocessalgo.so b/proprietary/vendor/lib64/libcamxswprocessalgo.so new file mode 100644 index 0000000..dfe5cf6 Binary files /dev/null and b/proprietary/vendor/lib64/libcamxswprocessalgo.so differ diff --git a/proprietary/vendor/lib64/libcamxtintlessalgo.so b/proprietary/vendor/lib64/libcamxtintlessalgo.so new file mode 100644 index 0000000..aa0bc0a Binary files /dev/null and b/proprietary/vendor/lib64/libcamxtintlessalgo.so differ diff --git a/proprietary/vendor/lib64/libcapiv2svacnn.so b/proprietary/vendor/lib64/libcapiv2svacnn.so new file mode 100644 index 0000000..3fc63fe Binary files /dev/null and b/proprietary/vendor/lib64/libcapiv2svacnn.so differ diff --git a/proprietary/vendor/lib64/libcapiv2svarnn.so b/proprietary/vendor/lib64/libcapiv2svarnn.so new file mode 100644 index 0000000..65b80f8 Binary files /dev/null and b/proprietary/vendor/lib64/libcapiv2svarnn.so differ diff --git a/proprietary/vendor/lib64/libcapiv2vop.so b/proprietary/vendor/lib64/libcapiv2vop.so new file mode 100644 index 0000000..aa0a0fd Binary files /dev/null and b/proprietary/vendor/lib64/libcapiv2vop.so differ diff --git a/proprietary/vendor/lib64/libchilog.so b/proprietary/vendor/lib64/libchilog.so new file mode 100644 index 0000000..fd17d27 Binary files /dev/null and b/proprietary/vendor/lib64/libchilog.so differ diff --git a/proprietary/vendor/lib64/libcom.qti.chinodeutils.so b/proprietary/vendor/lib64/libcom.qti.chinodeutils.so new file mode 100644 index 0000000..87cb59c Binary files /dev/null and b/proprietary/vendor/lib64/libcom.qti.chinodeutils.so differ diff --git a/proprietary/vendor/lib64/libets_teeclient_v2.so b/proprietary/vendor/lib64/libets_teeclient_v2.so new file mode 100644 index 0000000..cbb22d8 Binary files /dev/null and b/proprietary/vendor/lib64/libets_teeclient_v2.so differ diff --git a/proprietary/vendor/lib64/libfcell.so b/proprietary/vendor/lib64/libfcell.so new file mode 100644 index 0000000..a7a0270 Binary files /dev/null and b/proprietary/vendor/lib64/libfcell.so differ diff --git a/proprietary/vendor/lib64/libipebpsstriping.so b/proprietary/vendor/lib64/libipebpsstriping.so new file mode 100644 index 0000000..5aa42e0 Binary files /dev/null and b/proprietary/vendor/lib64/libipebpsstriping.so differ diff --git a/proprietary/vendor/lib64/libipebpsstriping170.so b/proprietary/vendor/lib64/libipebpsstriping170.so new file mode 100644 index 0000000..49f6c35 Binary files /dev/null and b/proprietary/vendor/lib64/libipebpsstriping170.so differ diff --git a/proprietary/vendor/lib64/libjpege.so b/proprietary/vendor/lib64/libjpege.so new file mode 100644 index 0000000..cb3d489 Binary files /dev/null and b/proprietary/vendor/lib64/libjpege.so differ diff --git a/proprietary/vendor/lib64/liblowlight_ai_portrait.arcsoft.so b/proprietary/vendor/lib64/liblowlight_ai_portrait.arcsoft.so new file mode 100644 index 0000000..539b600 Binary files /dev/null and b/proprietary/vendor/lib64/liblowlight_ai_portrait.arcsoft.so differ diff --git a/proprietary/vendor/lib64/libmctfengine_stub.so b/proprietary/vendor/lib64/libmctfengine_stub.so new file mode 100644 index 0000000..125c554 Binary files /dev/null and b/proprietary/vendor/lib64/libmctfengine_stub.so differ diff --git a/proprietary/vendor/lib64/libmmcamera_cac3.so b/proprietary/vendor/lib64/libmmcamera_cac3.so new file mode 100644 index 0000000..1e2cb25 Binary files /dev/null and b/proprietary/vendor/lib64/libmmcamera_cac3.so differ diff --git a/proprietary/vendor/lib64/libmot_afd.so b/proprietary/vendor/lib64/libmot_afd.so new file mode 100644 index 0000000..499d86e Binary files /dev/null and b/proprietary/vendor/lib64/libmot_afd.so differ diff --git a/proprietary/vendor/lib64/libmotext_inf.so b/proprietary/vendor/lib64/libmotext_inf.so new file mode 100644 index 0000000..d3a41f5 Binary files /dev/null and b/proprietary/vendor/lib64/libmotext_inf.so differ diff --git a/proprietary/vendor/lib64/libmotoisdataqueue.so b/proprietary/vendor/lib64/libmotoisdataqueue.so new file mode 100644 index 0000000..7f7e26e Binary files /dev/null and b/proprietary/vendor/lib64/libmotoisdataqueue.so differ diff --git a/proprietary/vendor/lib64/libmpbase.so b/proprietary/vendor/lib64/libmpbase.so new file mode 100644 index 0000000..9561793 Binary files /dev/null and b/proprietary/vendor/lib64/libmpbase.so differ diff --git a/proprietary/vendor/lib64/libofflinedump.so b/proprietary/vendor/lib64/libofflinedump.so new file mode 100644 index 0000000..7fccdab Binary files /dev/null and b/proprietary/vendor/lib64/libofflinedump.so differ diff --git a/proprietary/vendor/lib64/libofflinelog.so b/proprietary/vendor/lib64/libofflinelog.so new file mode 100644 index 0000000..676e635 Binary files /dev/null and b/proprietary/vendor/lib64/libofflinelog.so differ diff --git a/proprietary/vendor/lib64/libopencv.so b/proprietary/vendor/lib64/libopencv.so new file mode 100644 index 0000000..31e6dd2 Binary files /dev/null and b/proprietary/vendor/lib64/libopencv.so differ diff --git a/proprietary/vendor/lib64/libopestriping.so b/proprietary/vendor/lib64/libopestriping.so new file mode 100644 index 0000000..be77e0d Binary files /dev/null and b/proprietary/vendor/lib64/libopestriping.so differ diff --git a/proprietary/vendor/lib64/libremosaic_wrapper.so b/proprietary/vendor/lib64/libremosaic_wrapper.so new file mode 100644 index 0000000..87a65f0 Binary files /dev/null and b/proprietary/vendor/lib64/libremosaic_wrapper.so differ diff --git a/proprietary/vendor/lib64/libsns_device_mode_stub.so b/proprietary/vendor/lib64/libsns_device_mode_stub.so new file mode 100644 index 0000000..eb379fd Binary files /dev/null and b/proprietary/vendor/lib64/libsns_device_mode_stub.so differ diff --git a/proprietary/vendor/lib64/libsns_fastRPC_util.so b/proprietary/vendor/lib64/libsns_fastRPC_util.so new file mode 100644 index 0000000..9b0c268 Binary files /dev/null and b/proprietary/vendor/lib64/libsns_fastRPC_util.so differ diff --git a/proprietary/vendor/lib64/libsns_low_lat_stream_stub.so b/proprietary/vendor/lib64/libsns_low_lat_stream_stub.so new file mode 100644 index 0000000..5d12906 Binary files /dev/null and b/proprietary/vendor/lib64/libsns_low_lat_stream_stub.so differ diff --git a/proprietary/vendor/lib64/libsnsdiaglog.so b/proprietary/vendor/lib64/libsnsdiaglog.so new file mode 100644 index 0000000..67d1953 Binary files /dev/null and b/proprietary/vendor/lib64/libsnsdiaglog.so differ diff --git a/proprietary/vendor/lib64/libswregistrationalgo.so b/proprietary/vendor/lib64/libswregistrationalgo.so new file mode 100644 index 0000000..b37735e Binary files /dev/null and b/proprietary/vendor/lib64/libswregistrationalgo.so differ diff --git a/proprietary/vendor/lib64/libtfestriping.so b/proprietary/vendor/lib64/libtfestriping.so new file mode 100644 index 0000000..99bdd02 Binary files /dev/null and b/proprietary/vendor/lib64/libtfestriping.so differ diff --git a/proprietary/vendor/lib64/libundistort_impl.so b/proprietary/vendor/lib64/libundistort_impl.so new file mode 100644 index 0000000..a647158 Binary files /dev/null and b/proprietary/vendor/lib64/libundistort_impl.so differ diff --git a/proprietary/vendor/lib64/libvideooptfeature.so b/proprietary/vendor/lib64/libvideooptfeature.so new file mode 100644 index 0000000..e8d1352 Binary files /dev/null and b/proprietary/vendor/lib64/libvideooptfeature.so differ diff --git a/proprietary/vendor/lib64/libvidhance.so b/proprietary/vendor/lib64/libvidhance.so new file mode 100644 index 0000000..caa766c Binary files /dev/null and b/proprietary/vendor/lib64/libvidhance.so differ diff --git a/proprietary/vendor/lib64/libvidhance_active_ois.so b/proprietary/vendor/lib64/libvidhance_active_ois.so new file mode 100644 index 0000000..be7a0a7 Binary files /dev/null and b/proprietary/vendor/lib64/libvidhance_active_ois.so differ diff --git a/proprietary/vendor/lib64/libvidhance_dmbr.so b/proprietary/vendor/lib64/libvidhance_dmbr.so new file mode 100644 index 0000000..22c536d Binary files /dev/null and b/proprietary/vendor/lib64/libvidhance_dmbr.so differ diff --git a/proprietary/vendor/lib64/libvidhance_face_stabilizer.so b/proprietary/vendor/lib64/libvidhance_face_stabilizer.so new file mode 100644 index 0000000..4fba65f Binary files /dev/null and b/proprietary/vendor/lib64/libvidhance_face_stabilizer.so differ diff --git a/proprietary/vendor/lib64/libvidhance_fbc.so b/proprietary/vendor/lib64/libvidhance_fbc.so new file mode 100644 index 0000000..96a509e Binary files /dev/null and b/proprietary/vendor/lib64/libvidhance_fbc.so differ diff --git a/proprietary/vendor/lib64/libvidhance_horizon_correction.so b/proprietary/vendor/lib64/libvidhance_horizon_correction.so new file mode 100644 index 0000000..bb38e59 Binary files /dev/null and b/proprietary/vendor/lib64/libvidhance_horizon_correction.so differ diff --git a/proprietary/vendor/lib64/libvidhance_stabilizer.so b/proprietary/vendor/lib64/libvidhance_stabilizer.so new file mode 100644 index 0000000..dd993b9 Binary files /dev/null and b/proprietary/vendor/lib64/libvidhance_stabilizer.so differ diff --git a/proprietary/vendor/lib64/libvidhance_zoom_stabilization.so b/proprietary/vendor/lib64/libvidhance_zoom_stabilization.so new file mode 100644 index 0000000..6c504c0 Binary files /dev/null and b/proprietary/vendor/lib64/libvidhance_zoom_stabilization.so differ diff --git a/proprietary/vendor/lib64/sensors.moto.so b/proprietary/vendor/lib64/sensors.moto.so new file mode 100644 index 0000000..fbd11da Binary files /dev/null and b/proprietary/vendor/lib64/sensors.moto.so differ diff --git a/proprietary/vendor/lib64/sensors.ssc.so b/proprietary/vendor/lib64/sensors.ssc.so new file mode 100644 index 0000000..ea8edb9 Binary files /dev/null and b/proprietary/vendor/lib64/sensors.ssc.so differ diff --git a/proprietary/vendor/lib64/vendor.egistec.hardware.fingerprint@4.0.so b/proprietary/vendor/lib64/vendor.egistec.hardware.fingerprint@4.0.so new file mode 100644 index 0000000..9712516 Binary files /dev/null and b/proprietary/vendor/lib64/vendor.egistec.hardware.fingerprint@4.0.so differ diff --git a/proprietary/vendor/lib64/vendor.focaltech.fingerprint@1.0.so b/proprietary/vendor/lib64/vendor.focaltech.fingerprint@1.0.so new file mode 100644 index 0000000..7e1b1fa Binary files /dev/null and b/proprietary/vendor/lib64/vendor.focaltech.fingerprint@1.0.so differ diff --git a/proprietary/vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so b/proprietary/vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so new file mode 100644 index 0000000..40f22d9 Binary files /dev/null and b/proprietary/vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so differ diff --git a/proprietary/vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so b/proprietary/vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so new file mode 100644 index 0000000..cd74613 Binary files /dev/null and b/proprietary/vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so differ diff --git a/rhodep-vendor.mk b/rhodep-vendor.mk new file mode 100644 index 0000000..aa58d2b --- /dev/null +++ b/rhodep-vendor.mk @@ -0,0 +1,367 @@ +# +# Automatically generated file. DO NOT MODIFY +# + +PRODUCT_SOONG_NAMESPACES += \ + vendor/motorola/rhodep + +PRODUCT_COPY_FILES += \ + vendor/motorola/rhodep/proprietary/product/etc/permissions/com.motorola.camera3.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/com.motorola.camera3.xml \ + vendor/motorola/rhodep/proprietary/product/etc/permissions/com.motorola.moto-uirefresh.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/com.motorola.moto-uirefresh.xml \ + vendor/motorola/rhodep/proprietary/product/etc/permissions/deviceowner-configuration-com.motorola.camera3.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/deviceowner-configuration-com.motorola.camera3.xml \ + vendor/motorola/rhodep/proprietary/product/etc/permissions/privapp-permissions-com.motorola.camera3.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/privapp-permissions-com.motorola.camera3.xml \ + vendor/motorola/rhodep/proprietary/product/etc/sysconfig/hiddenapi-whitelist-com.motorola.camera3.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/sysconfig/hiddenapi-whitelist-com.motorola.camera3.xml \ + vendor/motorola/rhodep/proprietary/system/etc/permissions/com.motorola.motosignature.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/com.motorola.motosignature.xml \ + vendor/motorola/rhodep/proprietary/system/etc/permissions/moto-core_services.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/moto-core_services.xml \ + vendor/motorola/rhodep/proprietary/system/etc/permissions/moto-settings.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/moto-settings.xml \ + vendor/motorola/rhodep/proprietary/system_ext/etc/permissions/com.android.hotwordenrollment.common.util.xml:$(TARGET_COPY_OUT_SYSTEM_EXT)/etc/permissions/com.android.hotwordenrollment.common.util.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/Bluetooth_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Bluetooth_cal.acdb \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/General_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/General_cal.acdb \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/Global_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Global_cal.acdb \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/Handset_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Handset_cal.acdb \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/Hdmi_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Hdmi_cal.acdb \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/Headset_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Headset_cal.acdb \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/Speaker_cal.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/Speaker_cal.acdb \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/adsp_avs_config.acdb:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/adsp_avs_config.acdb \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/candidate__2.7.1.31__3.0.0__eai_1.10_enpu1.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.0.0_0.1__3.0.0_0.0__eai_1.00.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.2.0_0.1__3.0.0_0.0__eai_1.00.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00-1.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00-1.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.0_0.0__3.0.0_0.0__eai_1.00.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.1_0.0__eai_v1.10.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.6.3_0.0__3.0.0_0.0__eai_1.36_enpu2.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_ns_models/fai__2.7.4_0.0__3.0.0_0.0__eai_1.10_enpu1.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd:$(TARGET_COPY_OUT_VENDOR)/etc/acdbdata/nn_vad_models/fai_3.0.0_0.0_eai_1.00.pmd \ + vendor/motorola/rhodep/proprietary/vendor/etc/camera/SwadAIMod.bin:$(TARGET_COPY_OUT_VENDOR)/etc/camera/SwadAIMod.bin \ + vendor/motorola/rhodep/proprietary/vendor/etc/camera/SwadCalib.bin:$(TARGET_COPY_OUT_VENDOR)/etc/camera/SwadCalib.bin \ + vendor/motorola/rhodep/proprietary/vendor/etc/camera/SwadParamList.txt:$(TARGET_COPY_OUT_VENDOR)/etc/camera/SwadParamList.txt \ + vendor/motorola/rhodep/proprietary/vendor/etc/camera/aec_golden_wide.bin:$(TARGET_COPY_OUT_VENDOR)/etc/camera/aec_golden_wide.bin \ + vendor/motorola/rhodep/proprietary/vendor/etc/camera/dual_golden_wide.bin:$(TARGET_COPY_OUT_VENDOR)/etc/camera/dual_golden_wide.bin \ + vendor/motorola/rhodep/proprietary/vendor/etc/camera/vidhance_calibration:$(TARGET_COPY_OUT_VENDOR)/etc/camera/vidhance_calibration \ + vendor/motorola/rhodep/proprietary/vendor/etc/camera/vidhance_calibration_2rd:$(TARGET_COPY_OUT_VENDOR)/etc/camera/vidhance_calibration_2rd \ + vendor/motorola/rhodep/proprietary/vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-focalservice.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/android.hardware.biometrics.fingerprint@2.1-focalservice.rc \ + vendor/motorola/rhodep/proprietary/vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-service-ets2.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/android.hardware.biometrics.fingerprint@2.1-service-ets2.rc \ + vendor/motorola/rhodep/proprietary/vendor/etc/init/init.ets.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.ets.rc \ + vendor/motorola/rhodep/proprietary/vendor/etc/libnfc-mtp-SN100-UICC.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-mtp-SN100-UICC.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/libnfc-mtp-SN100.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-mtp-SN100.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/libnfc-mtp-SN100_38_4MHZ.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-mtp-SN100_38_4MHZ.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/libnfc-nci.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nci.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/libnfc-nxp-pnscr.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp-pnscr.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/libnfc-qrd-SN100.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-qrd-SN100.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/libnfc-qrd-SN100_38_4MHZ.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-qrd-SN100_38_4MHZ.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/libnfc-sec-vendor.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-sec-vendor.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/nfc_calibration.txt:$(TARGET_COPY_OUT_VENDOR)/etc/nfc_calibration.txt \ + vendor/motorola/rhodep/proprietary/vendor/etc/permissions/com.motorola.camera3.content.ai.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.motorola.camera3.content.ai.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/permissions/com.motorola.camera3.lens.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.motorola.camera3.lens.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/permissions/com.motorola.camera3.rhodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.motorola.camera3.rhodec.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/permissions/com.motorola.camera3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.motorola.camera3.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/qdcm_calib_data_mipi_mot_cmd_csot_1080p_dsc_655.xml:$(TARGET_COPY_OUT_VENDOR)/etc/qdcm_calib_data_mipi_mot_cmd_csot_1080p_dsc_655.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/qdcm_calib_data_mipi_mot_cmd_tm_1080p_dsc_655.xml:$(TARGET_COPY_OUT_VENDOR)/etc/qdcm_calib_data_mipi_mot_cmd_tm_1080p_dsc_655.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/qdcm_calib_data_nt36672e_60_Hz_fhd_plus_video_mode_panel_without_DSC.xml:$(TARGET_COPY_OUT_VENDOR)/etc/qdcm_calib_data_nt36672e_60_Hz_fhd_plus_video_mode_panel_without_DSC.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/qdcm_calib_data_nt36672e_fhd_plus_120Hz_Video_panel.xml:$(TARGET_COPY_OUT_VENDOR)/etc/qdcm_calib_data_nt36672e_fhd_plus_120Hz_Video_panel.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/qdcm_calib_data_nt36672e_fhd_plus_144Hz_video_panel.xml:$(TARGET_COPY_OUT_VENDOR)/etc/qdcm_calib_data_nt36672e_fhd_plus_144Hz_video_panel.xml \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/ak991x_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/ak991x_0.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/holi_default_sensors.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/holi_default_sensors.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/holi_lsm6dso_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/holi_lsm6dso_0.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/holi_power_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/holi_power_0.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/icm4x6xx.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/icm4x6xx.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/mmc56x3x_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/mmc56x3x_0.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/mot_camgest.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/mot_camgest.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_amd.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_amd.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_amd_sw_disabled.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_amd_sw_disabled.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_amd_sw_enabled.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_amd_sw_enabled.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_cm.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_cm.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_diag_filter.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_diag_filter.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_fmv.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_fmv.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_fmv_legacy.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_fmv_legacy.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_geomag_rv.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_geomag_rv.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_gyro_cal.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_gyro_cal.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_mag_cal.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_mag_cal.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_rmd.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_rmd.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_rotv.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_rotv.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_smd.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_smd.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_tilt_sw_enabled.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_tilt_sw_enabled.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_tilt_to_wake.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_tilt_to_wake.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/sns_wrist_pedo.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/sns_wrist_pedo.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/stk3a5x_0.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/stk3a5x_0.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/stk3a5x_0_DVT1.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/stk3a5x_0_DVT1.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/config/stk3a5x_0_DVT2.json:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/config/stk3a5x_0_DVT2.json \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/descriptor.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/descriptor.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_barocal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_barocal.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_camgest.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_camgest.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_chopchop.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_chopchop.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_devorient.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_devorient.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_dsp_usound.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_dsp_usound.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_flip.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_flip.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_ftm.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_ftm.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_glance.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_glance.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_log.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_log.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_lts.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_lts.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_ltv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_ltv.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_movement.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_movement.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_offbody.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_offbody.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_probe.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_probe.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_proxcal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_proxcal.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_stowed.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_stowed.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/mot_vsync.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/mot_vsync.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/nanopb.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/nanopb.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_accel.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_accel.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_accel_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_accel_cal.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_activity_recognition.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_activity_recognition.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_ambient_light.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ambient_light.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_ambient_temperature.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ambient_temperature.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_amd.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_amd.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_aont.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_aont.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_basic_gestures.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_basic_gestures.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_bring_to_ear.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_bring_to_ear.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_cal.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_client.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_client.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_cmc.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_cmc.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_da_test.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_da_test.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_device_mode.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_device_mode.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_device_orient.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_device_orient.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_diag.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_diag.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_diag_sensor.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_diag_sensor.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_direct_channel.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_direct_channel.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_dpc.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_dpc.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_ext_svc.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ext_svc.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_facing.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_facing.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_fmv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_fmv.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_formatter.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_formatter.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_fw.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_fw.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_game_rv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_game_rv.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_geomag_rv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_geomag_rv.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_gravity.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_gravity.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_gyro.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_gyro.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_gyro_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_gyro_cal.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_gyro_rot_matrix.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_gyro_rot_matrix.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_hall.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_hall.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_heart_beat.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_heart_beat.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_heart_rate.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_heart_rate.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_hinge_angle.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_hinge_angle.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_humidity.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_humidity.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_mag.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_mag.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_mag_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_mag_cal.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_mot_factory_cal.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_mot_factory_cal.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_oem1.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_oem1.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_offbody_detect.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_offbody_detect.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_pedometer.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_pedometer.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_pedometer_wrist.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_pedometer_wrist.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_physical_sensor_test.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_physical_sensor_test.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_pose_6dof.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_pose_6dof.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_ppg.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ppg.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_pressure.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_pressure.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_proximity.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_proximity.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_psmd.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_psmd.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_registry.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_registry.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_resampler.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_resampler.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_rgb.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_rgb.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_rmd.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_rmd.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_rotv.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_rotv.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_sar.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_sar.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_sensor_temperature.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_sensor_temperature.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_sig_motion.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_sig_motion.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_std.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_std.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_std_event_gated_sensor.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_std_event_gated_sensor.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_std_sensor.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_std_sensor.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_std_type.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_std_type.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_step_detect.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_step_detect.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_suid.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_suid.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_thermopile.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_thermopile.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_threshold.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_threshold.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_tilt.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_tilt.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_tilt_to_wake.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_tilt_to_wake.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_ultra_violet.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_ultra_violet.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/sns_wrist_tilt_gesture.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/sns_wrist_tilt_gesture.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/proto/tcs3708.proto:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/proto/tcs3708.proto \ + vendor/motorola/rhodep/proprietary/vendor/etc/sensors/sns_reg_config:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/sns_reg_config \ + vendor/motorola/rhodep/proprietary/vendor/etc/thermal-engine-rhodep.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-rhodep.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf \ + vendor/motorola/rhodep/proprietary/vendor/etc/vhw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/vhw.xml \ + vendor/motorola/rhodep/proprietary/vendor/firmware/aw882xx_pid_2113_acf.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/aw882xx_pid_2113_acf.bin \ + vendor/motorola/rhodep/proprietary/vendor/firmware/aw_skt.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/aw_skt.bin \ + vendor/motorola/rhodep/proprietary/vendor/firmware/csot_goodix_cfg_group.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/csot_goodix_cfg_group.bin \ + vendor/motorola/rhodep/proprietary/vendor/firmware/csot_goodix_test_limits_255.csv:$(TARGET_COPY_OUT_VENDOR)/firmware/csot_goodix_test_limits_255.csv \ + vendor/motorola/rhodep/proprietary/vendor/firmware/goodix-csot-gt9916S-2201040d-61EA60E3-rhodep.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/goodix-csot-gt9916S-2201040d-61EA60E3-rhodep.bin \ + vendor/motorola/rhodep/proprietary/vendor/firmware/goodix-tianma-gt9916S-2201040d-61EA66BC-rhodep.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/goodix-tianma-gt9916S-2201040d-61EA66BC-rhodep.bin \ + vendor/motorola/rhodep/proprietary/vendor/firmware/mot_dw9781c.prog:$(TARGET_COPY_OUT_VENDOR)/firmware/mot_dw9781c.prog \ + vendor/motorola/rhodep/proprietary/vendor/firmware/sec_s3nrn4v_firmware.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/sec_s3nrn4v_firmware.bin \ + vendor/motorola/rhodep/proprietary/vendor/firmware/tianma_goodix_cfg_group.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/tianma_goodix_cfg_group.bin \ + vendor/motorola/rhodep/proprietary/vendor/firmware/tianma_goodix_test_limits_255.csv:$(TARGET_COPY_OUT_VENDOR)/firmware/tianma_goodix_test_limits_255.csv \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_gc02m1_sunwin.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensormodule.mot_rhodep_gc02m1_sunwin.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_ov16a1q_ofilm.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensormodule.mot_rhodep_ov16a1q_ofilm.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5k4h7_qtech_ff.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensormodule.mot_rhodep_s5k4h7_qtech_ff.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_qtech.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_qtech.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_sunny.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.sensormodule.mot_rhodep_s5kjn1_sunny.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.tuned.default.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.default.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_gc02m1.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_rhodep_gc02m1.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_ov16a1q.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_rhodep_ov16a1q.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5k4h7ff.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_rhodep_s5k4h7ff.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1_2nd.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/com.qti.tuned.mot_rhodep_s5kjn1_2nd.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/fdconfigpreview.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/fdconfigpreview.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/fdconfigpreviewlite.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/fdconfigpreviewlite.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/fdconfigvideo.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/fdconfigvideo.bin \ + vendor/motorola/rhodep/proprietary/vendor/lib64/camera/fdconfigvideolite.bin:$(TARGET_COPY_OUT_VENDOR)/lib64/camera/fdconfigvideolite.bin + +PRODUCT_PACKAGES += \ + libacdbloader \ + com.mot.eeprom.mot_gt24p128e_s5kjn1_eeprom \ + com.mot.eeprom.mot_gt24p64e_ov16a1q_eeprom \ + com.mot.eeprom.mot_rhodep_gc02m1_otp \ + com.mot.eeprom.mot_rhodep_s5k4h7_otp \ + com.qti.sensor.mot_gc02m1 \ + com.qti.sensor.mot_ov16a1q \ + com.qti.sensor.mot_s5k4h7 \ + com.qti.sensor.mot_s5kjn1 \ + com.arcsoft.node.mfnr \ + com.mot.node.dc_capture \ + com.mot.node.dc_preview \ + com.qti.camx.chiiqutils \ + com.qti.eisv2 \ + com.qti.eisv3 \ + com.qti.hvx.addconstant \ + com.qti.hvx.binning \ + com.qti.node.customhwnode \ + com.qti.node.depth \ + com.qti.node.dewarp \ + com.qti.node.dummyrtb \ + com.qti.node.dummysat \ + com.qti.node.eisv2 \ + com.qti.node.eisv3 \ + com.qti.node.fcv \ + com.qti.node.formatconversion \ + com.qti.node.gpu \ + com.qti.node.memcpy \ + com.qti.node.ml \ + com.qti.node.remosaic \ + com.qti.node.stich \ + com.qti.node.swaidenoiser \ + com.qti.node.swbestats \ + com.qti.node.swcac \ + com.qti.node.swlsc \ + com.qti.node.swmctf \ + com.qti.node.swmfnr \ + com.qti.node.swpdpc \ + com.qti.node.swpreprocess \ + com.qti.node.swregistration \ + com.qti.stats.aec \ + com.qti.stats.aecwrapper \ + com.qti.stats.aecxcore \ + com.qti.stats.af \ + com.qti.stats.afd \ + com.qti.stats.afwrapper \ + com.qti.stats.asd \ + com.qti.stats.awb \ + com.qti.stats.awbwrapper \ + com.qti.stats.cnndriver \ + com.qti.stats.haf \ + com.qti.stats.hafoverride \ + com.qti.stats.pdlib \ + com.qti.stats.pdlibsony \ + com.qti.stats.pdlibwrapper \ + com.qtistatic.stats.aec \ + com.qtistatic.stats.af \ + com.qtistatic.stats.awb \ + com.qtistatic.stats.pdlib \ + com.vidhance.node.ica \ + com.vidhance.node.processing \ + com.vidhance.stats.aec_dmbr \ + libdepthmapwrapper_secure \ + com.qti.chiusecaseselector \ + com.qti.feature2.anchorsync \ + com.qti.feature2.demux \ + com.qti.feature2.frameselect \ + com.qti.feature2.fusion \ + com.qti.feature2.generic \ + com.qti.feature2.gs.mannar \ + com.qti.feature2.hdr \ + com.qti.feature2.mcreprocrt \ + com.qti.feature2.memcpy \ + com.qti.feature2.mfsr \ + com.qti.feature2.mux \ + com.qti.feature2.rawhdr \ + com.qti.feature2.realtimeserializer \ + com.qti.feature2.rt \ + com.qti.feature2.rtmcx \ + com.qti.feature2.serializer \ + com.qti.feature2.swmf \ + com.qti.settings.mannar \ + com.qti.stats.common \ + com.qualcomm.mcx.distortionmapper \ + com.qualcomm.mcx.linearmapper \ + com.qualcomm.mcx.policy.mfl \ + com.qualcomm.qti.mcx.usecase.extension \ + camera.qcom \ + com.qti.chi.override \ + fingerprint.focaltech.default \ + libBSTSWAD \ + libRbsFlow \ + libarcsoft_low_light_shot \ + libbitmlengine \ + libbitmlenginev2 \ + libcamera_nn_stub \ + libcamerapostproc \ + libcamxexternalformatutils \ + libcamxfacialfeatures \ + libcamxfdalgo \ + libcamxfdengine \ + libcamxifestriping \ + libcamximageformatutils \ + libcamxqsatalgo \ + libcamxstatscore \ + libcamxswispiqmodule \ + libcamxswprocessalgo \ + libcamxtintlessalgo \ + libchilog \ + libcom.qti.chinodeutils \ + libets_teeclient_v2 \ + libfcell \ + libipebpsstriping \ + libipebpsstriping170 \ + libjpege \ + liblowlight_ai_portrait.arcsoft \ + libmctfengine_stub \ + libmmcamera_cac3 \ + libmot_afd \ + libmotoisdataqueue \ + libmpbase \ + libofflinedump \ + libofflinelog \ + libopencv \ + libopestriping \ + libremosaic_wrapper \ + libswregistrationalgo \ + libtfestriping \ + libundistort_impl \ + libvideooptfeature \ + libvidhance \ + libvidhance_active_ois \ + libvidhance_dmbr \ + libvidhance_face_stabilizer \ + libvidhance_fbc \ + libvidhance_horizon_correction \ + libvidhance_stabilizer \ + libvidhance_zoom_stabilization \ + sensors.moto \ + sensors.ssc \ + vendor.egistec.hardware.fingerprint@4.0 \ + vendor.focaltech.fingerprint@1.0 \ + vendor.qti.hardware.camera.postproc@1.0-service-impl \ + vendor.qti.hardware.fingerprint@1.0 \ + MotoSignatureApp \ + MotCamera3AI \ + HotwordEnrollmentOKGoogleHEXAGON \ + HotwordEnrollmentXGoogleHEXAGON \ + MotCamera4 \ + MotorolaSettingsProvider \ + com.motorola.motosignature \ + moto-core_services \ + moto-settings \ + com.android.hotwordenrollment.common.util \ + capsense_reset \ + android.hardware.biometrics.fingerprint@2.1-focalservice \ + android.hardware.biometrics.fingerprint@2.1-service-ets \ + motsettings