# Copyright (C) 2011 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/glgps
/system/bin/sensors-config
/system/bin/tf_daemon
/system/etc/firmware/bcm4330.hcd
/system/etc/firmware/nvavp_os_00001000.bin
/system/etc/firmware/nvavp_os_0ff00000.bin
/system/etc/firmware/nvavp_os_e0000000.bin
/system/etc/firmware/nvavp_os_eff00000.bin
/system/etc/firmware/nvavp_vid_ucode_alt.bin
/system/etc/firmware/touch_fw.ekt
/system/etc/gps/gpsconfig.xml
/system/etc/nvcamera.conf
/system/etc/nvram.txt
/system/lib/egl/libEGL_tegra.so
/system/lib/egl/libGLESv1_CM_tegra.so
/system/lib/egl/libGLESv2_tegra.so
/system/lib/hw/camera.tegra3.so
/system/lib/hw/gps.tegra3.so
/system/lib/hw/gralloc.tegra3.so
/system/lib/hw/hwcomposer.tegra3.so
/system/lib/hw/keystore.grouper.so
/system/lib/hw/sensors.grouper.so
/system/lib/libardrv_dynamic.so
/system/lib/libcgdrv.so
/system/lib/libdrmdecrypt.so
/system/lib/libinvensense_hal.so
/system/lib/libmllite.so
/system/lib/libmplmpu.so
/system/lib/libnvapputil.so
/system/lib/libnvasfparserhal.so
/system/lib/libnvaviparserhal.so
/system/lib/libnvavp.so
/system/lib/libnvcamerahdr.so
/system/lib/libnvddk_2d.so
/system/lib/libnvddk_2d_v2.so
/system/lib/libnvdispmgr_d.so
/system/lib/libnvmm.so
/system/lib/libnvmmlite.so
/system/lib/libnvmmlite_audio.so
/system/lib/libnvmmlite_image.so
/system/lib/libnvmmlite_utils.so
/system/lib/libnvmmlite_video.so
/system/lib/libnvmm_audio.so
/system/lib/libnvmm_camera.so
/system/lib/libnvmm_contentpipe.so
/system/lib/libnvmm_image.so
/system/lib/libnvmm_manager.so
/system/lib/libnvmm_misc.so
/system/lib/libnvmm_parser.so
/system/lib/libnvmm_service.so
/system/lib/libnvmm_utils.so
/system/lib/libnvmm_video.so
/system/lib/libnvmm_writer.so
/system/lib/libnvodm_dtvtuner.so
/system/lib/libnvodm_hdmi.so
/system/lib/libnvodm_imager.so
/system/lib/libnvodm_misc.so
/system/lib/libnvodm_query.so
/system/lib/libnvomx.so
/system/lib/libnvomxilclient.so
/system/lib/libnvos.so
/system/lib/libnvparser.so
/system/lib/libnvrm.so
/system/lib/libnvrm_graphics.so
/system/lib/libnvsm.so
/system/lib/libnvtvmr.so
/system/lib/libnvwinsys.so
/system/lib/libnvwsi.so
/system/lib/libsensors.lightsensor.so
/system/lib/libstagefrighthw.so
/system/lib/libtf_crypto_sst.so
/system/vendor/firmware/libpn544_fw.so
/system/vendor/lib/drm/libdrmwvmplugin.so
/system/vendor/lib/libwvdrm_L1.so
/system/vendor/lib/libwvm.so
/system/vendor/lib/libWVStreamControlAPI_L1.so
