# Copyright (C) 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This file is generated by device/common/generate-blob-lists.sh - DO NOT EDIT

/system/bin/ATFWD-daemon
/system/bin/athdiag
/system/bin/cnd
/system/bin/cnss-daemon
/system/bin/cnss_diag
/system/bin/diag_klog
/system/bin/diag_mdlog
/system/bin/diag_qshrink4_daemon
/system/bin/halutil
/system/bin/imsdatadaemon
/system/bin/imsqmidaemon
/system/bin/ims_rtp_daemon
/system/bin/irsc_util
/system/bin/location-mq
/system/bin/loc_launcher
/system/bin/lowi-server
/system/bin/msm_irqbalance
/system/bin/netmgrd
/system/bin/nl_listener
/system/bin/perfd
/system/bin/pktlogconf
/system/bin/PktRspTest
/system/bin/pm-proxy
/system/bin/pm-service
/system/bin/port-bridge
/system/bin/qmakernote-xtract
/system/bin/qmi-framework-tests/check_system_health
/system/bin/qmi-framework-tests/qmi_ping_clnt_test_0000
/system/bin/qmi-framework-tests/qmi_ping_clnt_test_0001
/system/bin/qmi-framework-tests/qmi_ping_clnt_test_1000
/system/bin/qmi-framework-tests/qmi_ping_clnt_test_1001
/system/bin/qmi-framework-tests/qmi_ping_clnt_test_2000
/system/bin/qmi-framework-tests/qmi_ping_svc
/system/bin/qmi-framework-tests/qmi_ping_test
/system/bin/qmi-framework-tests/qmi_test_mt_client_init_instance
/system/bin/qmi-framework-tests/qmi_test_service_clnt_test_0000
/system/bin/qmi-framework-tests/qmi_test_service_clnt_test_0001
/system/bin/qmi-framework-tests/qmi_test_service_clnt_test_1000
/system/bin/qmi-framework-tests/qmi_test_service_clnt_test_1001
/system/bin/qmi-framework-tests/qmi_test_service_clnt_test_2000
/system/bin/qmi-framework-tests/qmi_test_service_test
/system/bin/qmi_simple_ril_test
/system/bin/qmuxd
/system/bin/radish
/system/bin/rmt_storage
/system/bin/subsystem_ramdump
/system/bin/test_diag
/system/bin/thermal-engine
/system/bin/time_daemon
/system/etc/acdbdata/MTP/MTP_Bluetooth_cal.acdb
/system/etc/acdbdata/MTP/MTP_General_cal.acdb
/system/etc/acdbdata/MTP/MTP_Global_cal.acdb
/system/etc/acdbdata/MTP/MTP_Handset_cal.acdb
/system/etc/acdbdata/MTP/MTP_Hdmi_cal.acdb
/system/etc/acdbdata/MTP/MTP_Headset_cal.acdb
/system/etc/acdbdata/MTP/MTP_Speaker_cal.acdb
/system/etc/cne/profile.txt
/system/etc/data/dsi_config.xml
/system/etc/data/netmgr_config.xml
/system/etc/data/qmi_config.xml
/system/etc/diag/Bullhead_radio-general.cfg
/system/etc/diag/ims_epdg.cfg
/system/etc/diag/wlan.cfg
/system/etc/flp.conf
/system/etc/izat.conf
/system/etc/lowi.conf
/system/etc/permissions/cneapiclient.xml
/system/etc/permissions/embms.xml
/system/etc/permissions/qcrilhook.xml
/system/etc/permissions/qti_permissions.xml
/system/etc/permissions/rcsservice.xml
/system/etc/qcril.db
/system/etc/qmi_fw.conf
/system/etc/sap.conf
/system/etc/thermal-engine-8992.conf
/system/framework/cneapiclient.jar
/system/framework/embmslibrary.jar
/system/framework/qcrilhook.jar
/system/framework/rcsimssettings.jar
/system/framework/rcsservice.jar
/system/lib64/hw/gps.msm8992.so
/system/lib64/libgps.utils.so
/system/lib64/libiperf.so
/system/lib/hw/gps.msm8992.so
/system/lib/libgps.utils.so
/system/lib/libiperf.so
/system/xbin/iperf3
/IMAGES/vendor.img
