[automerger skipped] Merge "[DO NOT MERGE] Disable bypass for GNSS" into udc-qpr-dev am: 7ef7ff3ac2 -s ours

am skip reason: contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/device/google/akita/+/26133460

Change-Id: I049dcab8871892bbf404743fea428920fdc9e7e1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index 2ae4cb5..c7519f3 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -20,4 +20,4 @@
     $(LOCAL_DIR)/factory_akita.mk
 
 COMMON_LUNCH_CHOICES := \
-    aosp_akita-userdebug
+    aosp_akita-trunk_staging-userdebug
diff --git a/OWNERS b/OWNERS
index 57dddec..f3899b9 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,4 +1,4 @@
 per-file powerhint-akita.json = jenhaochen@google.com,wvw@google.com,joaodias@google.com
 
 # per-file for Pixel device makefiles, see go/pixel-device-mk-owner-checklist for details.
-per-file *.mk,*/BoardConfig.mk=file:device/google/gs-common:master:/OWNERS
+per-file *.mk,*/BoardConfig.mk=file:device/google/gs-common:main:/OWNERS
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 0000000..3826687
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,2 @@
+[Builtin Hooks]
+jsonlint = true
\ No newline at end of file
diff --git a/akita/BoardConfig.mk b/akita/BoardConfig.mk
index b08f9ea..dde0a87 100644
--- a/akita/BoardConfig.mk
+++ b/akita/BoardConfig.mk
@@ -24,6 +24,13 @@
 
 TARGET_BOARD_INFO_FILE := device/google/akita/board-info.txt
 TARGET_BOOTLOADER_BOARD_NAME := akita
+ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
+RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q1
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
+RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q2
+else
+RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/trunk
+endif
 TARGET_SCREEN_DENSITY := 420
 BOARD_USES_GENERIC_AUDIO := true
 USES_DEVICE_GOOGLE_AKITA := true
diff --git a/akita/overlay/frameworks/base/core/res/res/values/config.xml b/akita/overlay/frameworks/base/core/res/res/values/config.xml
index 6377f54..e44bee8 100644
--- a/akita/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/akita/overlay/frameworks/base/core/res/res/values/config.xml
@@ -279,6 +279,8 @@
     -->
     <string name="config_mainDisplayShape" translatable="false">M 96.5,0.09 C 91.13,0.36 82.7,1.63 79.38,2.34 59.53,6.58 50.35,10.97 39.94,18.2 27.73,26.69 16.6,39.86 10.5,52.79 6.41,61.47 2.37,75.03 1.22,83.76 0.14,91.99 0.31,92.14 0.09,96.34 V 2307.68 l 1.59,11.48 c 4.89,22.96 11.89,37.01 25.55,51.29 13.95,14.57 29.8,22.8 53.75,27.88 l 11.5,1.59 H 987.52 l 11.5,-1.59 c 23.95,-5.08 39.8,-13.31 53.75,-27.88 13.66,-14.27 20.66,-28.33 25.55,-51.29 l 1.59,-11.48 V 96.34 c -0.23,-4.2 -0.05,-4.34 -1.13,-12.57 -1.15,-8.73 -5.19,-22.3 -9.28,-30.98 C 1063.4,39.86 1052.27,26.69 1040.06,18.2 1029.65,10.97 1020.47,6.58 1000.62,2.34 997.3,1.63 988.87,0.36 983.5,0.09 Z</string>
 
+    <bool name="config_safe_sound_dosage_enabled">true</bool>
+
     <!-- The max vibration strength allowed in audio haptic channels. -->
     <item name="config_hapticChannelMaxVibrationAmplitude" format="float" type="dimen">0.32</item>
 
@@ -301,6 +303,9 @@
     <string name="config_mms_user_agent_profile_url" translatable="false">http://www.gstatic.com/android/sms/GKV4X.xml</string>
 
     <!-- Allow the GPS_PROVIDER to be replaced by the location provider app at run-time. -->
-    <bool name="config_useGnssHardwareProvider" translatable="false">true</bool>
+    <bool name="config_useGnssHardwareProvider" translatable="false">false</bool>
+    <!-- Package name providing GNSS location support. Used only when
+         config_useGnssHardwareProvider is false. -->
+    <string name="config_gnssLocationProviderPackageName" translatable="false">com.google.android.gms</string>
 
 </resources>
diff --git a/akita/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml b/akita/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml
index f75f58a..0e42fa6 100644
--- a/akita/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml
+++ b/akita/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml
@@ -26,7 +26,9 @@
     <device name="cp2ap_wakeup">
         <subsystem>Cellular_data</subsystem>
     </device>
-    <!-- TODO(b/317130983): Insert mapping for Sound_trigger once it is known -->
+    <device name="MAILBOX_AOCF12APx1300">
+        <subsystem>Sound_trigger</subsystem>
+    </device>
     <device name="MAILBOX_AOCA322APx100">
         <subsystem>Sensor</subsystem>
     </device>
diff --git a/akita/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/akita/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
index d8dbf67..9124ad1 100644
--- a/akita/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
+++ b/akita/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
@@ -30,5 +30,8 @@
     <!-- Offset should not be more than 1mm -->
     <dimen name="udfps_burn_in_offset_x">6px</dimen>
     <dimen name="udfps_burn_in_offset_y">17px</dimen>
+
+    <!-- Pixel pitch of the device. um/px -->
+    <item name="pixel_pitch" format="float" type="dimen">59.1</item>
 </resources>
 
diff --git a/audio/akita/config/audio_platform_configuration.xml b/audio/akita/config/audio_platform_configuration.xml
index b2defe3..e4de84f 100644
--- a/audio/akita/config/audio_platform_configuration.xml
+++ b/audio/akita/config/audio_platform_configuration.xml
@@ -303,6 +303,7 @@
         <module libname="audio_waves_aoc.so" argu="Sink=SPK:1 ThermistorsName=VIRTUAL-SKIN-SPEAKER"/>
         <module libname="audio_cca_aoc.so" argu="UnsupportBands=48000 ExSharedBands=48000 VoIPMode=Dl"/>
         <module libname="audio_fortemedia_aoc.so" argu="MCPS_TABLE=y DL_CH=y VoIP_DLCHs=SPK:2,USB:2,BT:2 VoIP_Rate=32000 SHARED_MODULE=1130578253"/>
+        <module libname="audio_sounddose_aoc.so"/>
         <module libname="liboffloadeffect.so"/>
         <module libname="audio_amcs_ext.so"/>
         <module libname="audio_bluenote_aoc.so"/>
diff --git a/audio/akita/config/audio_policy_configuration.xml b/audio/akita/config/audio_policy_configuration.xml
index 1cfbe9d..3150f07 100644
--- a/audio/akita/config/audio_policy_configuration.xml
+++ b/audio/akita/config/audio_policy_configuration.xml
@@ -90,7 +90,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/akita/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/akita/config/audio_policy_configuration_a2dp_offload_disabled.xml
index 5e8ee91..6d52bfe 100644
--- a/audio/akita/config/audio_policy_configuration_a2dp_offload_disabled.xml
+++ b/audio/akita/config/audio_policy_configuration_a2dp_offload_disabled.xml
@@ -89,7 +89,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/akita/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/akita/config/audio_policy_configuration_bluetooth_legacy_hal.xml
index 07bb37a..38309e5 100644
--- a/audio/akita/config/audio_policy_configuration_bluetooth_legacy_hal.xml
+++ b/audio/akita/config/audio_policy_configuration_bluetooth_legacy_hal.xml
@@ -89,7 +89,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/akita/config/audio_policy_configuration_le_offload_disabled.xml b/audio/akita/config/audio_policy_configuration_le_offload_disabled.xml
index 4c512f2..bf995fe 100644
--- a/audio/akita/config/audio_policy_configuration_le_offload_disabled.xml
+++ b/audio/akita/config/audio_policy_configuration_le_offload_disabled.xml
@@ -93,7 +93,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/akita/config/mixer_paths.xml b/audio/akita/config/mixer_paths.xml
index 09c9c41..c49c9df 100644
--- a/audio/akita/config/mixer_paths.xml
+++ b/audio/akita/config/mixer_paths.xml
@@ -760,8 +760,8 @@
 
     <path name="voice-handset-mic">
         <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0"/>
-        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="2"/>
-        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="-1"/>
+        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3"/>
+        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2"/>
         <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1"/>
         <ctl name="MIC DC Blocker" value="1"/>
         <ctl name="MIC HW Gain At High Power Mode (cB)" value="130"/>
@@ -786,8 +786,8 @@
 
     <path name="voice-speaker-mic">
         <ctl name="BUILDIN MIC ID CAPTURE LIST" id="0" value="0"/>
-        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="2"/>
-        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="-1"/>
+        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="1" value="3"/>
+        <ctl name="BUILDIN MIC ID CAPTURE LIST" id="2" value="2"/>
         <ctl name="BUILDIN MIC ID CAPTURE LIST" id="3" value="-1"/>
         <ctl name="MIC DC Blocker" value="1"/>
         <ctl name="MIC HW Gain At High Power Mode (cB)" value="130"/>
diff --git a/audio/akita/tuning/bluenote/smartfeature.gstf b/audio/akita/tuning/bluenote/smartfeature.gstf
index f669a07..d174ae3 100644
--- a/audio/akita/tuning/bluenote/smartfeature.gstf
+++ b/audio/akita/tuning/bluenote/smartfeature.gstf
Binary files differ
diff --git a/audio/akita/tuning/waves/waves_config.ini b/audio/akita/tuning/waves/waves_config.ini
index db233a0..adc6ca8 100644
--- a/audio/akita/tuning/waves/waves_config.ini
+++ b/audio/akita/tuning/waves/waves_config.ini
@@ -42,8 +42,8 @@
 SPEAKER_INSTANCE = INSTANCE:1,DEV:0,SR:SR_COMMON,PRESET:SPEAKER_MUSIC|SPEAKER_SAFE_MUSIC|SPEAKER_MUSIC_THROTTLE|SPEAKER_SAFE_MUSIC_THROTTLE|SPEAKER_SAFE_MUSIC_THROTTLE_LITE|SPEAKER_SAFE_MUSIC_LITE
 
 [COEFS_CONVERTER_SETTING]
-AlgFxPath=/vendor/lib/libAlgFx_HiFi3z231114.so
-AlgFxPath64=/vendor/lib64/libAlgFx_HiFi3z231114.so
+AlgFxPath=/vendor/lib/libAlgFx_HiFi3z.so
+AlgFxPath64=/vendor/lib64/libAlgFx_HiFi3z.so
 # do not modify the following if not necessary
 #AudioFormatType=0
 #AudioFormatChannels=2
diff --git a/bluetooth/le_audio_codec_capabilities.xml b/bluetooth/le_audio_codec_capabilities.xml
index f9500d4..0e06d14 100644
--- a/bluetooth/le_audio_codec_capabilities.xml
+++ b/bluetooth/le_audio_codec_capabilities.xml
@@ -32,6 +32,9 @@
     <scenario encode="OneChanMono_24_2" decode="invalid"/>
     <scenario encode="TwoChanStereo_24_2" decode="invalid"/>
     <scenario encode="OneChanStereo_24_2" decode="invalid"/>
+    <scenario encode="OneChanMono_48_2" decode="invalid"/>
+    <scenario encode="TwoChanStereo_48_2" decode="invalid"/>
+    <scenario encode="OneChanStereo_48_2" decode="invalid"/>
     <scenario encode="OneChanMono_48_4" decode="invalid"/>
     <scenario encode="TwoChanStereo_48_4" decode="invalid"/>
     <scenario encode="OneChanStereo_48_4" decode="invalid"/>
@@ -65,6 +68,9 @@
     <configuration name="OneChanStereo_32_2" codecConfiguration="LC3_32k_2" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
     <configuration name="OneChanMono_32_2" codecConfiguration="LC3_32k_2" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
     <configuration name="TwoChanStereo_32_2" codecConfiguration="LC3_32k_2" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
+    <configuration name="OneChanMono_48_2" codecConfiguration="LC3_48k_2" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
+    <configuration name="TwoChanStereo_48_2" codecConfiguration="LC3_48k_2" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
+    <configuration name="OneChanStereo_48_2" codecConfiguration="LC3_48k_2" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
     <configuration name="OneChanMono_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
     <configuration name="TwoChanStereo_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
     <configuration name="OneChanStereo_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
@@ -76,6 +82,7 @@
     <codecConfiguration name="LC3_16k_2" codec="LC3" samplingFrequency="16000" frameDurationUs="10000" octetsPerCodecFrame="40"/>
     <codecConfiguration name="LC3_24k_2" codec="LC3" samplingFrequency="24000" frameDurationUs="10000" octetsPerCodecFrame="60"/>
     <codecConfiguration name="LC3_32k_2" codec="LC3" samplingFrequency="32000" frameDurationUs="10000" octetsPerCodecFrame="80"/>
+    <codecConfiguration name="LC3_48k_2" codec="LC3" samplingFrequency="48000" frameDurationUs="10000" octetsPerCodecFrame="100"/>
     <codecConfiguration name="LC3_48k_4" codec="LC3" samplingFrequency="48000" frameDurationUs="10000" octetsPerCodecFrame="120"/>
   </codecConfigurationList>
   <strategyConfigurationList>
diff --git a/conf/init.akita.rc b/conf/init.akita.rc
index d702709..c317eee 100644
--- a/conf/init.akita.rc
+++ b/conf/init.akita.rc
@@ -17,10 +17,6 @@
     chown system system /sys/class/backlight/panel0-backlight/ssc_mode
     chmod 664 /sys/class/backlight/panel0-backlight/ssc_mode
 
-    # adjust PCP high level
-    write /proc/sys/vm/percpu_pagelist_high_fraction 430
-
-
 on early-boot
     # Wait for insmod_sh to finish all common modules
     wait_for_prop vendor.common.modules.ready 1
@@ -77,36 +73,16 @@
     chown system system /mnt/vendor/persist/haptics
     chown system system /mnt/vendor/persist/haptics/cs40l26.cal
 
-    chown system system /sys/bus/i2c/devices/6-0043/calibration/f0_stored
-    chown system system /sys/bus/i2c/devices/5-0043/calibration/f0_stored
-    chown system system /sys/bus/i2c/devices/4-0043/calibration/f0_stored
-    chown system system /sys/bus/i2c/devices/6-0043/calibration/q_stored
-    chown system system /sys/bus/i2c/devices/5-0043/calibration/q_stored
-    chown system system /sys/bus/i2c/devices/4-0043/calibration/q_stored
-    chown system system /sys/bus/i2c/devices/6-0043/calibration/redc_stored
-    chown system system /sys/bus/i2c/devices/5-0043/calibration/redc_stored
-    chown system system /sys/bus/i2c/devices/4-0043/calibration/redc_stored
-    chown system system /sys/bus/i2c/devices/6-0043/default/vibe_state
-    chown system system /sys/bus/i2c/devices/5-0043/default/vibe_state
-    chown system system /sys/bus/i2c/devices/4-0043/default/vibe_state
-    chown system system /sys/bus/i2c/devices/6-0043/default/num_waves
-    chown system system /sys/bus/i2c/devices/5-0043/default/num_waves
-    chown system system /sys/bus/i2c/devices/4-0043/default/num_waves
-    chown system system /sys/bus/i2c/devices/6-0043/default/f0_offset
-    chown system system /sys/bus/i2c/devices/5-0043/default/f0_offset
-    chown system system /sys/bus/i2c/devices/4-0043/default/f0_offset
-    chown system system /sys/bus/i2c/devices/6-0043/default/owt_free_space
-    chown system system /sys/bus/i2c/devices/5-0043/default/owt_free_space
-    chown system system /sys/bus/i2c/devices/4-0043/default/owt_free_space
-    chown system system /sys/bus/i2c/devices/6-0043/default/f0_comp_enable
-    chown system system /sys/bus/i2c/devices/5-0043/default/f0_comp_enable
-    chown system system /sys/bus/i2c/devices/4-0043/default/f0_comp_enable
-    chown system system /sys/bus/i2c/devices/6-0043/default/redc_comp_enable
-    chown system system /sys/bus/i2c/devices/5-0043/default/redc_comp_enable
-    chown system system /sys/bus/i2c/devices/4-0043/default/redc_comp_enable
-    chown system system /sys/bus/i2c/devices/6-0043/default/delay_before_stop_playback_us
-    chown system system /sys/bus/i2c/devices/5-0043/default/delay_before_stop_playback_us
-    chown system system /sys/bus/i2c/devices/4-0043/default/delay_before_stop_playback_us
+    chown system system /sys/bus/i2c/devices/0-0043/calibration/f0_stored
+    chown system system /sys/bus/i2c/devices/0-0043/calibration/q_stored
+    chown system system /sys/bus/i2c/devices/0-0043/calibration/redc_stored
+    chown system system /sys/bus/i2c/devices/0-0043/default/vibe_state
+    chown system system /sys/bus/i2c/devices/0-0043/default/num_waves
+    chown system system /sys/bus/i2c/devices/0-0043/default/f0_offset
+    chown system system /sys/bus/i2c/devices/0-0043/default/owt_free_space
+    chown system system /sys/bus/i2c/devices/0-0043/default/f0_comp_enable
+    chown system system /sys/bus/i2c/devices/0-0043/default/redc_comp_enable
+    chown system system /sys/bus/i2c/devices/0-0043/default/delay_before_stop_playback_us
 
     enable vendor.vibrator.cs40l26
 
diff --git a/device-akita.mk b/device-akita.mk
index aec9c92..c52d0c5 100644
--- a/device-akita.mk
+++ b/device-akita.mk
@@ -14,9 +14,20 @@
 # limitations under the License.
 #
 
+PRODUCT_RELEASE_CONFIG_MAPS += vendor/google_devices/release/phones/release_config_map.mk
+
 TARGET_KERNEL_DIR ?= device/google/akita-kernel
 TARGET_BOARD_KERNEL_HEADERS := device/google/akita-kernel/kernel-headers
 
+ifdef RELEASE_GOOGLE_AKITA_KERNEL_VERSION
+TARGET_LINUX_KERNEL_VERSION := $(RELEASE_GOOGLE_AKITA_KERNEL_VERSION)
+endif
+
+ifdef RELEASE_GOOGLE_AKITA_KERNEL_DIR
+TARGET_KERNEL_DIR := $(RELEASE_GOOGLE_AKITA_KERNEL_DIR)
+TARGET_BOARD_KERNEL_HEADERS := $(RELEASE_GOOGLE_AKITA_KERNEL_DIR)/kernel-headers
+endif
+
 $(call inherit-product-if-exists, vendor/google_devices/akita/prebuilts/device-vendor-akita.mk)
 $(call inherit-product-if-exists, vendor/google_devices/zuma/prebuilts/device-vendor.mk)
 $(call inherit-product-if-exists, vendor/google_devices/zuma/proprietary/device-vendor.mk)
@@ -32,7 +43,6 @@
 include device/google/gs-common/bcmbt/bluetooth.mk
 include device/google/gs-common/touch/gti/gti.mk
 include device/google/gs-common/modem/radio_ext/radio_ext.mk
-include device/google/gs-common/diagnosticstool/diagnosticstool.mk
 
 # go/lyric-soong-variables
 $(call soong_config_set,lyric,camera_hardware,akita)
@@ -50,7 +60,8 @@
 # Display
 PRODUCT_COPY_FILES += \
 	device/google/akita/akita/display_colordata_dev_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_dev_cal0.pb \
-	device/google/akita/akita/display_golden_google-ak3b_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_golden_google-ak3b_cal0.pb
+	device/google/akita/akita/display_golden_google-ak3b_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_golden_google-ak3b_cal0.pb \
+	device/google/akita/display_golden_external_display_cal2.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_golden_external_display_cal2.pb
 
 # Display brightness curve
 PRODUCT_COPY_FILES += \
@@ -71,13 +82,10 @@
         display_primary_mipi_coex_table \
         display_primary_ssc_coex_table
 
-# Camera
-PRODUCT_COPY_FILES += \
-	device/google/akita/media_profiles_akita.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml
-
 PRODUCT_PROPERTY_OVERRIDES += \
 	persist.vendor.camera.adjust_backend_min_freq_for_1p_front_video_1080p_30fps=1 \
 	persist.vendor.camera.adjust_backend_min_freq_for_video_120fps=1 \
+	persist.vendor.camera.adjust_cam_uclamp_min_for_1p_rear_video_60fps=1 \
 	persist.vendor.camera.extended_launch_boost=1 \
 	persist.vendor.camera.optimized_tnr_freq=1 \
 	vendor.camera.debug.enable_software_post_sharpen_node=false \
@@ -95,9 +103,6 @@
 # Media Performance Class 13
 PRODUCT_PROPERTY_OVERRIDES += ro.odm.build.media_performance_class=33
 
-# Modem
-PRODUCT_PROPERTY_OVERRIDES += persist.vendor.radio.volte_mif_off=true
-
 # NFC
 PRODUCT_COPY_FILES += \
 	frameworks/native/data/etc/android.hardware.nfc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.xml \
@@ -109,9 +114,10 @@
 	device/google/akita/nfc/libnfc-nci.conf:$(TARGET_COPY_OUT_PRODUCT)/etc/libnfc-nci.conf
 
 PRODUCT_PACKAGES += \
-	NfcNci \
+	$(RELEASE_PACKAGE_NFC_STACK) \
 	Tag \
-	android.hardware.nfc-service.st
+	android.hardware.nfc-service.st \
+	NfcOverlayAkita
 
 # SecureElement
 PRODUCT_PACKAGES += \
@@ -143,19 +149,19 @@
 
 # Bluetooth Tx power caps
 PRODUCT_COPY_FILES += \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_G6GPR_CA.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G6GPR_CA.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_G6GPR_EU.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G6GPR_EU.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_G6GPR_US.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G6GPR_US.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_G8HHN_EU.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G8HHN_EU.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_G8HHN_US.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G8HHN_US.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_G576D_CA.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G576D_CA.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_G576D_EU.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G576D_EU.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_G576D_JP.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G576D_JP.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_G576D_US.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G576D_US.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_GKV4X_CA.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_GKV4X_CA.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_GKV4X_EU.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_GKV4X_EU.csv \
-    $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_AK3_GKV4X_US.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_GKV4X_US.csv
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_G6GPR_CA.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G6GPR_CA.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_G6GPR_EU.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G6GPR_EU.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_G6GPR_US.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G6GPR_US.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_G8HHN_EU.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G8HHN_EU.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_G8HHN_US.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G8HHN_US.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_G576D_CA.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G576D_CA.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_G576D_EU.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G576D_EU.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_G576D_JP.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G576D_JP.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_G576D_US.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_G576D_US.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_GKV4X_CA.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_GKV4X_CA.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_GKV4X_EU.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_GKV4X_EU.csv \
+    device/google/akita/bluetooth/bluetooth_power_limits_AK3_GKV4X_US.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_GKV4X_US.csv
 
 # POF
 PRODUCT_PRODUCT_PROPERTIES += \
@@ -226,6 +232,10 @@
 PRODUCT_PRODUCT_PROPERTIES += \
     bluetooth.leaudio.dual_bidirection_swb.supported=true
 
+# LE Audio Unicast Allowlist
+PRODUCT_PRODUCT_PROPERTIES += \
+    persist.bluetooth.leaudio.allow_list=SM-R510
+
 # Enable one-handed mode
 PRODUCT_PRODUCT_PROPERTIES += \
     ro.support_one_handed_mode=true
@@ -250,6 +260,11 @@
 	libspatialaudio \
 	librondo
 
+# Sound Dose
+PRODUCT_PACKAGES += \
+	android.hardware.audio.sounddose-vendor-impl \
+	audio_sounddose_aoc \
+
 # Audio CCA property
 PRODUCT_PROPERTY_OVERRIDES += \
 	persist.vendor.audio.cca.enabled=false
@@ -298,6 +313,13 @@
 
 # Trusty liboemcrypto.so
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/akita/prebuilts
+ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
+PRODUCT_SOONG_NAMESPACES += vendor/google_devices/akita/prebuilts/trusty/24Q1
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
+PRODUCT_SOONG_NAMESPACES += vendor/google_devices/akita/prebuilts/trusty/24Q2
+else
+PRODUCT_SOONG_NAMESPACES += vendor/google_devices/akita/prebuilts/trusty/trunk
+endif
 
 # include GNSSD
 include device/google/akita/location/gnssd/device-gnss.mk
@@ -313,11 +335,18 @@
 
 # Fingerprint HAL
 GOODIX_CONFIG_BUILD_VERSION := g7_trusty
-include device/google/gs101/fingerprint/udfps_common.mk
-ifeq ($(filter factory%, $(TARGET_PRODUCT)),)
-include device/google/gs101/fingerprint/udfps_shipping.mk
+ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
+PRODUCT_SOONG_NAMESPACES += vendor/google_devices/akita/prebuilts/firmware/fingerprint/24Q1
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
+PRODUCT_SOONG_NAMESPACES += vendor/google_devices/akita/prebuilts/firmware/fingerprint/24Q2
 else
-include device/google/gs101/fingerprint/udfps_factory.mk
+PRODUCT_SOONG_NAMESPACES += vendor/google_devices/akita/prebuilts/firmware/fingerprint/trunk
+endif
+$(call inherit-product-if-exists, vendor/goodix/udfps/configuration/udfps_common.mk)
+ifeq ($(filter factory%, $(TARGET_PRODUCT)),)
+$(call inherit-product-if-exists, vendor/goodix/udfps/configuration/udfps_shipping.mk)
+else
+$(call inherit-product-if-exists, vendor/goodix/udfps/configuration/udfps_factory.mk)
 endif
 
 # Display
@@ -364,10 +393,6 @@
           ro.com.google.ime.kb_pad_port_b=4.19 \
           ro.com.google.ime.height_ratio=1.1
 
-# DisplayPort is disabled (b/300167292, b/300167292)
-PRODUCT_VENDOR_PROPERTIES += \
-       persist.vendor.usb.displayport.enabled=0
-
 # Enable DeviceAsWebcam support
 PRODUCT_VENDOR_PROPERTIES += \
     ro.usb.uvc.enabled=true
diff --git a/display_golden_external_display_cal2.pb b/display_golden_external_display_cal2.pb
new file mode 100644
index 0000000..a5e604b
--- /dev/null
+++ b/display_golden_external_display_cal2.pb
Binary files differ
diff --git a/location/gnssd/Android.bp b/location/gnssd/Android.bp
index 29b366f..f5b180c 100644
--- a/location/gnssd/Android.bp
+++ b/location/gnssd/Android.bp
@@ -14,29 +14,8 @@
     ],
 }
 
-soong_config_module_type {
-    name: "lassen_gnss_aidl_service_cc_defaults",
-    module_type: "cc_defaults",
-    config_namespace: "pixel_gnss",
-    bool_variables: ["enable_pixel_gnss_aidl_service"],
-    properties: ["vintf_fragments"],
-}
-
-lassen_gnss_aidl_service_cc_defaults {
-    name: "lassen_gnss_aidl_service_cc_defaults",
-    soong_config_variables: {
-        enable_pixel_gnss_aidl_service: {
-            vintf_fragments: ["android.hardware.gnss@vendor.xml"],
-            conditions_default: {
-                vintf_fragments: ["android.hardware.gnss@default.xml"],
-            },
-        },
-    },
-}
-
 cc_prebuilt_binary {
     name: "android.hardware.gnss-service",
-    defaults: ["lassen_gnss_aidl_service_cc_defaults"],
     arch: {
         arm64: {
             srcs: ["release/android.hardware.gnss-service"],
@@ -72,6 +51,7 @@
     },
 
     init_rc: ["init.gnss.rc"],
+    vintf_fragments: ["android.hardware.gnss@default.xml"],
 }
 
 cc_prebuilt_binary {
@@ -94,6 +74,7 @@
                 "libc",
                 "libm",
                 "libdl",
+                "libcurl",
             ],
         },
     },
diff --git a/location/gnssd/android.hardware.gnss@vendor.xml b/location/gnssd/android.hardware.gnss@vendor.xml
deleted file mode 100644
index 3b1525b..0000000
--- a/location/gnssd/android.hardware.gnss@vendor.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<manifest version="1.0" type="device">
-    <hal format="aidl">
-        <name>android.hardware.gnss</name>
-        <version>3</version>
-        <fqname>IGnss/vendor</fqname>
-    </hal>
-</manifest>
diff --git a/location/gnssd/release/gps.cfg b/location/gnssd/release/gps.cfg
index aab98bf..41e474d 100644
--- a/location/gnssd/release/gps.cfg
+++ b/location/gnssd/release/gps.cfg
@@ -249,7 +249,6 @@
 ENABLE_LPPE_CP=0
 ENABLE_5G_CP_CAPS_MSA=0
 ENABLE_5G_CP_CAPS_MSB=0
-SUPL_SSL_METHOD=TLSv1
 USE_EMER_PDN_FOR_EMER_SUPL=0
 # DOCOMO
 GNSS_CARRIER_ID=8
diff --git a/location/gnssd/release/gps_user.cfg b/location/gnssd/release/gps_user.cfg
index b9ef10a..70b4f52 100644
--- a/location/gnssd/release/gps_user.cfg
+++ b/location/gnssd/release/gps_user.cfg
@@ -125,7 +125,6 @@
 ENABLE_LPPE_CP=0
 ENABLE_5G_CP_CAPS_MSA=0
 ENABLE_5G_CP_CAPS_MSB=0
-SUPL_SSL_METHOD=TLSv1
 USE_EMER_PDN_FOR_EMER_SUPL=0
 GNSS_CARRIER_ID=8
 GNSS_CARRIER_ID=9
diff --git a/media_profiles_akita.xml b/media_profiles_akita.xml
deleted file mode 100644
index fcf6971..0000000
--- a/media_profiles_akita.xml
+++ /dev/null
@@ -1,1099 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<!DOCTYPE MediaSettings [
-<!ELEMENT MediaSettings (CamcorderProfiles,
-                         EncoderOutputFileFormat+,
-                         VideoEncoderCap+,
-                         AudioEncoderCap+,
-                         VideoDecoderCap,
-                         AudioDecoderCap)>
-<!ELEMENT CamcorderProfiles (EncoderProfile+, ImageEncoding+, ImageDecoding, Camera)>
-<!ELEMENT EncoderProfile (Video, Audio)>
-<!ATTLIST EncoderProfile quality (high|low) #REQUIRED>
-<!ATTLIST EncoderProfile fileFormat (mp4|3gp) #REQUIRED>
-<!ATTLIST EncoderProfile duration (30|60) #REQUIRED>
-<!ELEMENT Video EMPTY>
-<!ATTLIST Video codec (h264|h263|m4v) #REQUIRED>
-<!ATTLIST Video bitRate CDATA #REQUIRED>
-<!ATTLIST Video width CDATA #REQUIRED>
-<!ATTLIST Video height CDATA #REQUIRED>
-<!ATTLIST Video frameRate CDATA #REQUIRED>
-<!ELEMENT Audio EMPTY>
-<!ATTLIST Audio codec (amrnb|amrwb|aac) #REQUIRED>
-<!ATTLIST Audio bitRate CDATA #REQUIRED>
-<!ATTLIST Audio sampleRate CDATA #REQUIRED>
-<!ATTLIST Audio channels (1|2) #REQUIRED>
-<!ELEMENT ImageEncoding EMPTY>
-<!ATTLIST ImageEncoding quality (90|80|70|60|50|40) #REQUIRED>
-<!ELEMENT ImageDecoding EMPTY>
-<!ATTLIST ImageDecoding memCap CDATA #REQUIRED>
-<!ELEMENT Camera EMPTY>
-<!ATTLIST Camera previewFrameRate CDATA #REQUIRED>
-<!ELEMENT EncoderOutputFileFormat EMPTY>
-<!ATTLIST EncoderOutputFileFormat name (mp4|3gp) #REQUIRED>
-<!ELEMENT VideoEncoderCap EMPTY>
-<!ATTLIST VideoEncoderCap name (hevc|h264|h263|m4v|wmv) #REQUIRED>
-<!ATTLIST VideoEncoderCap enabled (true|false) #REQUIRED>
-<!ATTLIST VideoEncoderCap minBitRate CDATA #REQUIRED>
-<!ATTLIST VideoEncoderCap maxBitRate CDATA #REQUIRED>
-<!ATTLIST VideoEncoderCap minFrameWidth CDATA #REQUIRED>
-<!ATTLIST VideoEncoderCap maxFrameWidth CDATA #REQUIRED>
-<!ATTLIST VideoEncoderCap minFrameHeight CDATA #REQUIRED>
-<!ATTLIST VideoEncoderCap maxFrameHeight CDATA #REQUIRED>
-<!ATTLIST VideoEncoderCap minFrameRate CDATA #REQUIRED>
-<!ATTLIST VideoEncoderCap maxFrameRate CDATA #REQUIRED>
-<!ELEMENT AudioEncoderCap EMPTY>
-<!ATTLIST AudioEncoderCap name (amrnb|amrwb|aac|wma) #REQUIRED>
-<!ATTLIST AudioEncoderCap enabled (true|false) #REQUIRED>
-<!ATTLIST AudioEncoderCap minBitRate CDATA #REQUIRED>
-<!ATTLIST AudioEncoderCap maxBitRate CDATA #REQUIRED>
-<!ATTLIST AudioEncoderCap minSampleRate CDATA #REQUIRED>
-<!ATTLIST AudioEncoderCap maxSampleRate CDATA #REQUIRED>
-<!ATTLIST AudioEncoderCap minChannels (1|2) #REQUIRED>
-<!ATTLIST AudioEncoderCap maxChannels (1|2) #REQUIRED>
-<!ELEMENT VideoDecoderCap EMPTY>
-<!ATTLIST VideoDecoderCap name (wmv) #REQUIRED>
-<!ATTLIST VideoDecoderCap enabled (true|false) #REQUIRED>
-<!ELEMENT AudioDecoderCap EMPTY>
-<!ATTLIST AudioDecoderCap name (wma) #REQUIRED>
-<!ATTLIST AudioDecoderCap enabled (true|false) #REQUIRED>
-]>
-<!--
-     This file is used to declare the multimedia profiles and capabilities
-     on an android-powered device.
--->
-<MediaSettings>
-    <!-- Each camcorder profile defines a set of predefined configuration parameters -->
-    <CamcorderProfiles cameraId="0">
-
-        <EncoderProfile quality="2160p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="72000000"
-                   width="3840"
-                   height="2160"
-                   frameRate="60" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="33000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="60" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="cif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qvga" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="512000"
-                   width="320"
-                   height="240"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qcif" fileFormat="3gp" duration="60">
-            <Video codec="h264"
-                   bitRate="128000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse2160p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="48000000"
-                   width="3840"
-                   height="2160"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="22000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="192000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="highspeedlow" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="72000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="240" />
-
-            <!-- audio setting is ignored -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="highspeedhigh" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="72000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="240" />
-
-            <!-- audio setting is ignored -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="highspeed1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="72000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="240" />
-
-            <!-- audio setting is ignored -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <ImageEncoding quality="90" />
-        <ImageEncoding quality="80" />
-        <ImageEncoding quality="70" />
-        <ImageDecoding memCap="20000000" />
-
-    </CamcorderProfiles>
-
-    <CamcorderProfiles cameraId="1">
-
-       <EncoderProfile quality="2160p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="48000000"
-                   width="3840"
-                   height="2160"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="33000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="60" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="cif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qvga" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="512000"
-                   width="320"
-                   height="240"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qcif" fileFormat="3gp" duration="60">
-            <Video codec="h264"
-                   bitRate="128000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="22000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="192000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <ImageEncoding quality="90" />
-        <ImageEncoding quality="80" />
-        <ImageEncoding quality="70" />
-        <ImageDecoding memCap="20000000" />
-
-    </CamcorderProfiles>
-
-    <CamcorderProfiles cameraId="2">
-
-        <EncoderProfile quality="2160p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="72000000"
-                   width="3840"
-                   height="2160"
-                   frameRate="60" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="33000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="60" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="cif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qvga" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="512000"
-                   width="320"
-                   height="240"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qcif" fileFormat="3gp" duration="60">
-            <Video codec="h264"
-                   bitRate="128000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse2160p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="48000000"
-                   width="3840"
-                   height="2160"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="22000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="192000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <ImageEncoding quality="90" />
-        <ImageEncoding quality="80" />
-        <ImageEncoding quality="70" />
-        <ImageDecoding memCap="20000000" />
-
-    </CamcorderProfiles>
-
-    <CamcorderProfiles cameraId="3">
-
-        <EncoderProfile quality="2160p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="48000000"
-                   width="3840"
-                   height="2160"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="33000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="60" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="cif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qvga" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="512000"
-                   width="320"
-                   height="240"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qcif" fileFormat="3gp" duration="60">
-            <Video codec="h264"
-                   bitRate="128000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse2160p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="48000000"
-                   width="3840"
-                   height="2160"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="22000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="192000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <ImageEncoding quality="90" />
-        <ImageEncoding quality="80" />
-        <ImageEncoding quality="70" />
-        <ImageDecoding memCap="20000000" />
-
-    </CamcorderProfiles>
-
-    <CamcorderProfiles cameraId="4">
-
-        <EncoderProfile quality="2160p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="48000000"
-                   width="3840"
-                   height="2160"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="22000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="cif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qvga" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="512000"
-                   width="320"
-                   height="240"
-                   frameRate="30" />
-
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="qcif" fileFormat="3gp" duration="60">
-            <Video codec="h264"
-                   bitRate="128000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse2160p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="48000000"
-                   width="3840"
-                   height="2160"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="22000000"
-                   width="1920"
-                   height="1080"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="12000000"
-                   width="1280"
-                   height="720"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="6000000"
-                   width="720"
-                   height="480"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="1200000"
-                   width="352"
-                   height="288"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="aac"
-                   bitRate="96000"
-                   sampleRate="48000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="60">
-            <Video codec="h264"
-                   bitRate="192000"
-                   width="176"
-                   height="144"
-                   frameRate="30" />
-
-            <!-- Audio settings are not used for timealpse video recording -->
-            <Audio codec="amrnb"
-                   bitRate="12200"
-                   sampleRate="8000"
-                   channels="1" />
-        </EncoderProfile>
-
-        <ImageEncoding quality="90" />
-        <ImageEncoding quality="80" />
-        <ImageEncoding quality="70" />
-        <ImageDecoding memCap="20000000" />
-
-    </CamcorderProfiles>
-
-    <EncoderOutputFileFormat name="3gp" />
-    <EncoderOutputFileFormat name="mp4" />
-
-    <!--
-         If a codec is not enabled, it is invisible to the applications
-         In other words, the applications won't be able to use the codec
-         or query the capabilities of the codec at all if it is disabled
-    -->
-
-    <!--
-         FIXME : we only check Mpeg4 encorder cap and other codec doesn't check
-                 codec cap
-    -->
-    <VideoEncoderCap name="hevc" enabled="true"
-        minBitRate="64000" maxBitRate="100000000"
-        minFrameWidth="128" maxFrameWidth="3840"
-        minFrameHeight="96" maxFrameHeight="2160"
-        minFrameRate="15" maxFrameRate="30" />
-
-    <VideoEncoderCap name="h264" enabled="true"
-        minBitRate="64000" maxBitRate="100000000"
-        minFrameWidth="128" maxFrameWidth="3840"
-        minFrameHeight="96" maxFrameHeight="2160"
-        minFrameRate="15" maxFrameRate="30" />
-
-    <VideoEncoderCap name="h263" enabled="true"
-        minBitRate="64000" maxBitRate="1000000"
-        minFrameWidth="128" maxFrameWidth="1920"
-        minFrameHeight="96" maxFrameHeight="1080"
-        minFrameRate="15" maxFrameRate="30" />
-
-    <VideoEncoderCap name="m4v" enabled="true"
-        minBitRate="64000" maxBitRate="2000000"
-        minFrameWidth="128" maxFrameWidth="1920"
-        minFrameHeight="96" maxFrameHeight="1080"
-        minFrameRate="15" maxFrameRate="30" />
-
-    <AudioEncoderCap name="aac" enabled="true"
-        minBitRate="758" maxBitRate="288000"
-        minSampleRate="8000" maxSampleRate="48000"
-        minChannels="1" maxChannels="1" />
-
-    <AudioEncoderCap name="heaac" enabled="true"
-        minBitRate="8000" maxBitRate="64000"
-        minSampleRate="16000" maxSampleRate="48000"
-        minChannels="1" maxChannels="1" />
-
-    <AudioEncoderCap name="aaceld" enabled="true"
-        minBitRate="16000" maxBitRate="192000"
-        minSampleRate="16000" maxSampleRate="48000"
-        minChannels="1" maxChannels="1" />
-
-    <AudioEncoderCap name="amrwb" enabled="true"
-        minBitRate="6600" maxBitRate="23050"
-        minSampleRate="16000" maxSampleRate="16000"
-        minChannels="1" maxChannels="1" />
-
-    <AudioEncoderCap name="amrnb" enabled="true"
-        minBitRate="5525" maxBitRate="12200"
-        minSampleRate="8000" maxSampleRate="8000"
-        minChannels="1" maxChannels="1" />
-
-    <!--
-        FIXME:
-        We do not check decoder capabilities at present
-        At present, we only check whether windows media is visible
-        for TEST applications. For other applications, we do
-        not perform any checks at all.
-    -->
-    <VideoDecoderCap name="wmv" enabled="false"/>
-    <AudioDecoderCap name="wma" enabled="false"/>
-</MediaSettings>
diff --git a/nfc/libnfc-hal-st.conf b/nfc/libnfc-hal-st.conf
index 442e785..51dfb91 100644
--- a/nfc/libnfc-hal-st.conf
+++ b/nfc/libnfc-hal-st.conf
@@ -8,7 +8,7 @@
 
 ###############################################################################
 # Vendor specific mode to enable FW (RF & SWP) traces.
-STNFC_FW_DEBUG_ENABLED=0
+STNFC_FW_DEBUG_ENABLED=1
 
 ###############################################################################
 # File used for NFA storage
diff --git a/powerhint-akita.json b/powerhint-akita.json
index c1e8626..923d0dc 100644
--- a/powerhint-akita.json
+++ b/powerhint-akita.json
@@ -277,7 +277,7 @@
     },
     {
       "Name": "BGUClampMaxBoost",
-      "Path": "/proc/vendor_sched/bg_uclamp_max",
+      "Path": "/proc/vendor_sched/groups/bg/uclamp_max",
       "Values": [
         "130",
         "512"
@@ -287,7 +287,7 @@
     },
     {
       "Name": "Dex2oatUClampMaxBoost",
-      "Path": "/proc/vendor_sched/dex2oat_uclamp_max",
+      "Path": "/proc/vendor_sched/groups/dex2oat/uclamp_max",
       "Values": [
         "-2",
         "615"
@@ -297,16 +297,17 @@
     },
     {
       "Name": "CAMUClampBoost",
-      "Path": "/proc/vendor_sched/cam_uclamp_min",
+      "Path": "/proc/vendor_sched/groups/cam/uclamp_min",
       "Values": [
         "765",
+        "250",
         "0"
       ],
       "ResetOnInit": true
     },
     {
       "Name": "TAUClampBoost",
-      "Path": "/proc/vendor_sched/ta_uclamp_min",
+      "Path": "/proc/vendor_sched/groups/ta/uclamp_min",
       "Values": [
         "765",
         "1"
@@ -315,7 +316,7 @@
     },
     {
       "Name": "FGUClampBoost",
-      "Path": "/proc/vendor_sched/fg_uclamp_min",
+      "Path": "/proc/vendor_sched/groups/fg/uclamp_min",
       "Values": [
         "159",
         "0"
@@ -324,7 +325,7 @@
     },
     {
       "Name": "MLUclampBoost",
-      "Path": "/proc/vendor_sched/nnapi_uclamp_min",
+      "Path": "/proc/vendor_sched/groups/nnapi/uclamp_min",
       "Values": [
           "225",
           "812"
@@ -343,7 +344,7 @@
     },
     {
       "Name": "CDPreferIdle",
-      "Path": "/proc/vendor_sched/cam_prefer_idle",
+      "Path": "/proc/vendor_sched/groups/cam/prefer_idle",
       "Values": [
         "1",
         "0"
@@ -405,7 +406,7 @@
     },
     {
       "Name": "TAPreferHighCap",
-      "Path": "/proc/vendor_sched/ta_prefer_high_cap",
+      "Path": "/proc/vendor_sched/groups/ta/prefer_high_cap",
       "Values": [
         "1",
         "0"
@@ -414,7 +415,7 @@
     },
     {
       "Name": "TAPreferIdle",
-      "Path": "/proc/vendor_sched/ta_prefer_idle",
+      "Path": "/proc/vendor_sched/groups/ta/prefer_idle",
       "Values": [
         "1",
         "0"
@@ -424,7 +425,7 @@
     },
     {
       "Name": "FGPreferIdle",
-      "Path": "/proc/vendor_sched/fg_prefer_idle",
+      "Path": "/proc/vendor_sched/groups/fg/prefer_idle",
       "Values": [
         "1",
         "0"
@@ -434,7 +435,7 @@
     },
     {
       "Name": "CDPreferHighCap",
-      "Path": "/proc/vendor_sched/cam_prefer_high_cap",
+      "Path": "/proc/vendor_sched/groups/cam/prefer_high_cap",
       "Values": [
         "1",
         "0"
@@ -752,7 +753,7 @@
     },
     {
       "Name": "Dex2oatGroup",
-      "Path": "/proc/vendor_sched/dex2oat_ug",
+      "Path": "/proc/vendor_sched/groups/dex2oat/ug",
       "Values": [
         "1",
         "0"
@@ -793,15 +794,6 @@
         "20 40"
       ],
       "ResetOnInit": true
-    },
-    {
-      "Name": "SchedLibMaskIn",
-      "Path": "/proc/vendor_sched/sched_lib_mask_in",
-      "Values": [
-        "0x100",
-        "0x0"
-      ],
-      "ResetOnInit": true
     }
   ],
   "Actions": [
@@ -965,12 +957,6 @@
       "Value": "1"
     },
     {
-      "PowerHint": "LAUNCH",
-      "Node": "SchedLibMaskIn",
-      "Duration": 5000,
-      "Value": "0x100"
-    },
-    {
       "PowerHint": "LAUNCH_EXTEND",
       "Node": "CPUBigClusterMaxFreq",
       "Duration": 2000,
@@ -1049,18 +1035,77 @@
       "Value": "1"
     },
     {
-      "PowerHint": "LAUNCH_EXTEND",
-      "Node": "SchedLibMaskIn",
-      "Duration": 5000,
-      "Value": "0x100"
-    },
-    {
       "PowerHint": "LAUNCH_PMU",
       "Node": "PMU_POLL",
       "Duration": 3000,
       "Value": "0"
     },
     {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "ReducePreferIdle",
+      "Duration": 5000,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE_GPU",
+      "Node": "GPUDvfsPeriod",
+      "Duration": 1000,
+      "Value": "10"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Type": "DoHint",
+      "Value": "DISPLAY_CHANGE_GPU"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 5000,
+      "Value": "9999999"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "CPUMidClusterMaxFreq",
+      "Duration": 5000,
+      "Value": "9999999"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "CPULittleClusterMaxFreq",
+      "Duration": 5000,
+      "Value": "9999999"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "TAUClampBoost",
+      "Duration": 5000,
+      "Value": "765"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "FGUClampBoost",
+      "Duration": 5000,
+      "Value": "159"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "MemFreq",
+      "Duration": 5000,
+      "Value": "9999999"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "DsuMinFreq",
+      "Duration": 5000,
+      "Value": "1800000"
+    },
+    {
+      "PowerHint": "DISPLAY_CHANGE",
+      "Node": "BCIMinFreq",
+      "Duration": 5000,
+      "Value": "1401000"
+    },
+    {
       "PowerHint": "CPU_LOAD_RESET",
       "Node": "GPUPowerOn",
       "Duration": 10,
@@ -1451,6 +1496,12 @@
     },
     {
       "PowerHint": "CAMERA_STREAMING_EXTREME",
+      "Node": "CAMUClampBoost",
+      "Duration": 0,
+      "Value": "250"
+    },
+    {
+      "PowerHint": "CAMERA_STREAMING_EXTREME",
       "Node": "PMU_LIT_LIMIT_FREQ",
       "Duration": 0,
       "Value": "1098000"
@@ -2160,6 +2211,12 @@
       "Value": "233000"
     },
     {
+      "PowerHint": "CAMERA_ADJUST_CAM_UCLAMP_MIN",
+      "Node": "CAMUClampBoost",
+      "Duration": 0,
+      "Value": "250"
+    },
+    {
       "PowerHint": "FIXED_PERFORMANCE",
       "Node": "CPUBigClusterMaxFreq",
       "Duration": 0,
@@ -2334,18 +2391,6 @@
       "Value": "1"
     },
     {
-      "PowerHint": "REFRESH_120FPS",
-      "Node": "TAUClampBoost",
-      "Duration": 0,
-      "Value": "1"
-    },
-    {
-      "PowerHint": "REFRESH_60FPS",
-      "Node": "TAUClampBoost",
-      "Duration": 0,
-      "Value": "1"
-    },
-    {
       "PowerHint": "DISPLAY_IDLE",
       "Node": "FGPreferIdle",
       "Duration": 0,
@@ -2465,12 +2510,6 @@
       "Value": "1"
     },
     {
-      "PowerHint": "GAME",
-      "Node": "SchedLibMaskIn",
-      "Duration": 0,
-      "Value": "0x100"
-    },
-    {
       "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_LIGHT",
       "Node": "PMU_POLL",
       "Duration": 0,
diff --git a/powerstats/akita/service.cpp b/powerstats/akita/service.cpp
index 743a84b..b5ad6f1 100644
--- a/powerstats/akita/service.cpp
+++ b/powerstats/akita/service.cpp
@@ -27,6 +27,7 @@
 #include <android/binder_manager.h>
 #include <android/binder_process.h>
 #include <log/log.h>
+#include <sys/stat.h>
 
 using aidl::android::hardware::power::stats::DisplayStateResidencyDataProvider;
 using aidl::android::hardware::power::stats::EnergyConsumerType;
@@ -35,18 +36,25 @@
 
 void addDisplay(std::shared_ptr<PowerStats> p) {
     // Add display residency stats
-    std::vector<std::string> states = {
-        "Off",
-        "LP: 1080x2400@30",
-        "On: 1080x2400@60",
-        "On: 1080x2400@120",
-        "HBM: 1080x2400@60",
-        "HBM: 1080x2400@120"};
+    struct stat buffer;
+    if (stat("/sys/class/drm/card0/device/primary-panel/time_in_state", &buffer)) {
+        // time_in_state doesn't exist
+        std::vector<std::string> states = {
+            "Off",
+            "LP: 1080x2400@30",
+            "On: 1080x2400@60",
+            "On: 1080x2400@120",
+            "HBM: 1080x2400@60",
+            "HBM: 1080x2400@120"};
 
-    p->addStateResidencyDataProvider(std::make_unique<DisplayStateResidencyDataProvider>(
-            "Display",
-            "/sys/class/backlight/panel0-backlight/state",
-            states));
+        p->addStateResidencyDataProvider(std::make_unique<DisplayStateResidencyDataProvider>(
+                "Display",
+                "/sys/class/backlight/panel0-backlight/state",
+                states));
+    } else {
+        // time_in_state exists
+        addDisplayMRR(p);
+    }
 
     // Add display energy consumer
     p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterAndEntityConsumer(
diff --git a/rro_overlays/NfcOverlay/Android.bp b/rro_overlays/NfcOverlay/Android.bp
new file mode 100644
index 0000000..78ccc4b
--- /dev/null
+++ b/rro_overlays/NfcOverlay/Android.bp
@@ -0,0 +1,9 @@
+package {
+    default_applicable_licenses: ["device_google_akita_license"],
+}
+
+runtime_resource_overlay {
+    name: "NfcOverlayAkita",
+    sdk_version: "current",
+    product_specific: true
+}
diff --git a/rro_overlays/NfcOverlay/AndroidManifest.xml b/rro_overlays/NfcOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..5241aa4
--- /dev/null
+++ b/rro_overlays/NfcOverlay/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<!-- Pixel specific nfc overlays -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.nfc.overlay"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <application android:hasCode="false" />
+    <overlay
+      android:targetPackage="com.android.nfc"
+      android:targetName="NfcCustomization"
+      android:isStatic="true"
+      android:priority="0"/>
+</manifest>
diff --git a/rro_overlays/NfcOverlay/OWNERS b/rro_overlays/NfcOverlay/OWNERS
new file mode 100644
index 0000000..35e9713
--- /dev/null
+++ b/rro_overlays/NfcOverlay/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 48448
+include platform/packages/apps/Nfc:/OWNERS
diff --git a/rro_overlays/NfcOverlay/res/values/config.xml b/rro_overlays/NfcOverlay/res/values/config.xml
new file mode 100644
index 0000000..717cf7d
--- /dev/null
+++ b/rro_overlays/NfcOverlay/res/values/config.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <bool name="nfcc_always_on_allowed">false</bool>
+  <bool name="polling_disable_allowed">false</bool>
+  <string-array name="config_skuSupportsSecureNfc" translatable="false">
+    <item>G8HHN</item>
+    <item>GKV4X</item>
+    <item>G6GPR</item>
+    <item>G576D</item>
+  </string-array>
+  <bool name="tag_intent_app_pref_supported">true</bool>
+  <!-- NFC Antenna Location API -->
+  <integer name="device_width">68</integer>
+  <integer name="device_height">142</integer>
+  <bool name="device_foldable">false</bool>
+  <integer-array name="antenna_x">
+    <item>34</item>
+  </integer-array>
+  <integer-array name="antenna_y">
+    <item>96</item>
+  </integer-array>
+  <bool name="nfc_observe_mode_supported">true</bool>
+</resources>
diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml
index 7885c16..f43162c 100644
--- a/rro_overlays/WifiOverlay/res/values/config.xml
+++ b/rro_overlays/WifiOverlay/res/values/config.xml
@@ -159,4 +159,16 @@
 
     <!-- boolean indicating whether the caller thread needs to wait for destroyed listeners -->
     <bool translatable="false" name ="config_wifiWaitForDestroyedListeners">true</bool>
+
+    <!-- Boolean indicating performing a partial initial scan is enabled -->
+    <bool translatable="false" name="config_wifiEnablePartialInitialScan">true</bool>
+    <!-- Configure the max number of new channels to add into the initial partial scan list per network.
+         If equals to 0, it means there's no limit on the max number of channels to include per network.-->
+    <integer translatable="false" name="config_wifiInitialPartialScanMaxNewChannelsPerNetwork">3</integer>
+
+    <!-- Boolean indicating whether to disable firmware roaming when the device goes into idle mode.
+         true: firmware roaming will be disabled when the device goes into idle mode, and then
+               re-activated when the device exits idle mode.
+         false: firmware roaming will not be affected. -->
+    <bool translatable="false" name ="config_wifiDisableFirmwareRoamingInIdleMode">true</bool>
 </resources>
diff --git a/self-extractors/Android.mk b/self-extractors/Android.mk
deleted file mode 100644
index e69de29..0000000
--- a/self-extractors/Android.mk
+++ /dev/null
diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt
index e8333da..9f3c26f 100644
--- a/self-extractors/extract-lists.txt
+++ b/self-extractors/extract-lists.txt
@@ -5,13 +5,11 @@
             IMAGES/vendor_dlkm.img \
             RADIO/bootloader.img \
             RADIO/radio.img \
-            system_ext/etc/permissions/com.android.qns.xml \
             system_ext/etc/permissions/com.shannon.imsservice.xml \
             system_ext/etc/permissions/com.shannon.rcsservice.xml \
             system_ext/lib64/libmediaadaptor.so \
             system_ext/priv-app/ShannonRcs/ShannonRcs.apk \
             system_ext/priv-app/ShannonIms/ShannonIms.apk \
-            system_ext/priv-app/PixelQualifiedNetworksService/PixelQualifiedNetworksService.apk \
             "
     ;;
 
diff --git a/self-extractors/google_devices/staging/Android.mk.template b/self-extractors/google_devices/staging/Android.mk.template
new file mode 100644
index 0000000..f6ab5f2
--- /dev/null
+++ b/self-extractors/google_devices/staging/Android.mk.template
@@ -0,0 +1,57 @@
+#
+# Copyright (C) 2023 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+ifneq ($(filter akita,$(TARGET_DEVICE)),)
+  $(call add-radio-file,bootloader.img)
+  $(call add-radio-file,radio.img)
+endif
+
+ifneq ($(filter akita,$(TARGET_DEVICE)),)
+include $(CLEAR_VARS)
+LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+LOCAL_MODULE := ShannonIms
+LOCAL_MODULE_TAGS := optional
+LOCAL_BUILT_MODULE_STEM := package.apk
+LOCAL_SYSTEM_EXT_MODULE := true
+LOCAL_PRIVILEGED_MODULE := true
+LOCAL_MODULE_OWNER := samsung
+LOCAL_MODULE_CLASS := APPS
+LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
+LOCAL_CERTIFICATE := PRESIGNED
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
+LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../COPYRIGHT $(LOCAL_PATH)/../LICENSE
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+LOCAL_MODULE := ShannonRcs
+LOCAL_MODULE_TAGS := optional
+LOCAL_BUILT_MODULE_STEM := package.apk
+LOCAL_SYSTEM_EXT_MODULE := true
+LOCAL_PRIVILEGED_MODULE := true
+LOCAL_MODULE_OWNER := samsung
+LOCAL_MODULE_CLASS := APPS
+LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
+LOCAL_CERTIFICATE := platform
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
+LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../COPYRIGHT $(LOCAL_PATH)/../LICENSE
+include $(BUILD_PREBUILT)
+
+endif
diff --git a/self-extractors/google_devices/staging/device-partial.mk b/self-extractors/google_devices/staging/device-partial.mk
index 023145f..1479715 100644
--- a/self-extractors/google_devices/staging/device-partial.mk
+++ b/self-extractors/google_devices/staging/device-partial.mk
@@ -17,7 +17,6 @@
 
 # AOSP packages required by the blobs
 PRODUCT_PACKAGES := \
-    PixelQualifiedNetworksService \
     ShannonIms \
     ShannonRcs \
 
@@ -26,7 +25,6 @@
 
 #  blob(s) necessary for akita hardware
 PRODUCT_COPY_FILES := \
-    vendor/google_devices/akita/proprietary/com.android.qns.xml:system_ext/etc/permissions/com.android.qns.xml:google \
     vendor/google_devices/akita/proprietary/com.shannon.imsservice.xml:system_ext/etc/permissions/com.shannon.imsservice.xml:samsung \
     vendor/google_devices/akita/proprietary/com.shannon.rcsservice.xml:system_ext/etc/permissions/com.shannon.rcsservice.xml:samsung \
 
diff --git a/thermal_info_config_akita.json b/thermal_info_config_akita.json
index 5ac2ce9..71f21ad 100644
--- a/thermal_info_config_akita.json
+++ b/thermal_info_config_akita.json
@@ -221,6 +221,7 @@
             "Name":"VIRTUAL-SKIN-HINT",
             "Type":"UNKNOWN",
             "VirtualSensor":true,
+            "Hidden":true,
             "TriggerSensor":"soc_therm",
             "Formula":"MAXIMUM",
             "Combination":["VIRTUAL-SKIN"],