diff options
92 files changed, 29505 insertions, 259 deletions
@@ -61,7 +61,11 @@ cc_defaults { */ clang: true, + static_libs: ["libc++fs"], shared_libs: ["libbase"], + + // build all ioraps for host. + host_supported: true, } cc_defaults { @@ -85,6 +89,9 @@ cc_defaults { // libplatformprotos has an indirect dependency on full, causing compilation/linking // errors if we use lite "libprotobuf-cpp-full", + + // phenotype flags support + "server_configurable_flags", ], // srcs: [":libprotobuf-internal-protos"], @@ -101,6 +108,9 @@ cc_library_static { srcs: [ ":iorap-aidl", "src/binder/iiorap_impl.cc", + "src/binder/package_change_observer.cc", + "src/binder/package_manager_remote.cc", + "src/binder/package_version_map.cc", ], shared_libs: [ "libbinder", @@ -112,6 +122,7 @@ cc_library_static { include_dirs: ["frameworks/native/aidl/binder"], export_aidl_headers: true, }, + static_libs: [ "libplatformprotos", // android framework C++ protos. ], @@ -120,10 +131,16 @@ cc_library_static { cc_defaults { name: "libiorap-manager-default-dependencies", static_libs: [ + "libiorap-binder", "libiorap-perfetto", + "libiorap-prefetcher", + "libiorap-db", + "libiorap-maintenance", ], defaults: [ "libiorap-perfetto-default-dependencies", + "libiorap-prefetcher-default-dependencies", + "libiorap-db-default-dependencies", ], // Users of 'libiorap-manager' also need to include these defaults to avoid // linking errors. @@ -158,6 +175,13 @@ cc_binary { init_rc: [ "iorapd.rc", ], + // iorapd fork+execs into iorap.prefetcherd and iorap.cmd.compiler + // maintenance used by tests + required: [ + "iorap.cmd.compiler", + "iorap.prefetcherd", + "iorap.cmd.maintenance", + ], } cc_library_static { @@ -205,14 +229,53 @@ cc_test { defaults: [ "iorap-default-flags", "iorap-default-dependencies", + "libiorap-compiler-default-dependencies", ], srcs: [ - "tests/src/**/*.cc", + "tests/src/binder/*.cc", + "tests/src/inode2filename/*.cc", + "tests/src/log/*.cc", + "tests/src/tmp/*.cc", + ], + data: [ + "tests/src/compiler/testdata/*", ], cflags: ["-O2", "-UNDEBUG"], // TODO: we should probably have per-component tests. static_libs: ["libgmock_main", "libgmock", "libgtest", "libiorap-inode2filename"], + +} + + +cc_test_host { + name: "iorapd-host-tests", + gtest: false, // we use gtest *and* gmock. + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-compiler-default-dependencies", + "libiorap-maintenance-default-dependencies", + ], + srcs: [ + "tests/src/compiler/*.cc", + "tests/src/db/*.cc", + "tests/src/maintenance/*.cc", + ], + data: [ + "tests/src/compiler/testdata/*", + "tests/src/maintenance/testdata/*", + ], + cflags: ["-O2", "-UNDEBUG"], + + // TODO: we should probably have per-component tests. + static_libs: [ + "libgmock_main", + "libgmock", + "libgtest", + "libiorap-compiler", + "libiorap-maintenance", + ], } filegroup { @@ -294,3 +357,371 @@ cc_binary { "perfetto_trace_protos", ], } + +// Static libraries cannot export their dependencies, +// the current convention is to use an extra 'defaults' rule for statics +// to bring in all the dependencies. +cc_defaults { + name: "libiorap-compiler-default-dependencies", + + defaults: [ + // use the perfetto namespace + "libiorap-perfetto-default-dependencies", + // use the inode2filename namespace + "libiorap-serialize-default-dependencies", // uses but does not re-export serialize. + ], + + // Some of the libperfetto header typedefs leak out into iorap. + // Avoids compilation #include errors. + // TODO: clean this up, the headers should not leak out (maybe all we need is a PerfettoConsumer + // forward declaration?). + include_dirs: [], + // Various perfetto protos are used directly by iorap. + // + // Furthermore, we need this regardless to avoid linking errors when linking + // libiorap-compiler.a into the main cc_binary rule. + static_libs: [ + "libiorap-perfetto", + // "perfetto_trace_protos", + "libiorap-inode2filename", + "libiorap-serialize", + ], + + shared_libs: [ + // Not part of true dependencies: Users of 'libiorap-compiler' do not link against + // libperfetto. + // We only put this to avoid linking errors when building iorapd. + // TODO: can we split iorapd into libiorapd-main that doesn't link against libperfetto? + // only the last cc_binary should need the full transitive closure of the dependency graph. + ] +} + +cc_library_static { + name: "libiorap-compiler", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-compiler-default-dependencies", + ], + + srcs: [ + "src/compiler/**/*.cc", + ], +} + +cc_binary { + name: "iorap.cmd.compiler", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-compiler-default-dependencies", + ], + shared_libs: [], + include_dirs: [], + srcs: [ + "src/compiler/**/*.cc", + ], + // Easier debugging. TODO: make a separate debug config. + // XX: Using -O0 seems to completely hide some errors. + cflags: ["-O2", "-UNDEBUG", "-DIORAP_COMPILER_MAIN=1"], + sanitize: { + undefined: true, + all_undefined: true, + // Pretty print when ubsan detects a problem. + // Otherwise it just calls abort(). + +/* + diag: { + undefined: true, + }, + */ // don't use the diag when you want it to crash. + }, + + static_libs: [ + ], + required: [ + "iorap.inode2filename", + ], +} + +// Static libraries cannot export their dependencies, +// the current convention is to use an extra 'defaults' rule for statics +// to bring in all the dependencies. +cc_defaults { + name: "libiorap-serialize-default-dependencies", + + defaults: [ + ], + + include_dirs: [], + static_libs: [ + ], + shared_libs: [ + ], + // Above intentionally left empty. + srcs: [ + "src/serialize/**/*.proto", + ], +} + +cc_library_static { + name: "libiorap-serialize", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-serialize-default-dependencies", + ], + + srcs: [ + "src/serialize/**/*.cc", + ], +} + + +// Static libraries cannot export their dependencies, +// the current convention is to use an extra 'defaults' rule for statics +// to bring in all the dependencies. +cc_defaults { + name: "libiorap-prefetcher-default-dependencies", + + defaults: [ + ], + + include_dirs: [], + static_libs: [ + "libiorap-serialize", + ], + shared_libs: [ + "libminijail", + ], + + // disable mac builds because libminijail doesn't work there + target: { + darwin: { + enabled: false, + }, + }, +} + +cc_library_static { + name: "libiorap-prefetcher", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-prefetcher-default-dependencies", + "libiorap-serialize-default-dependencies", + ], + + srcs: [ + "src/prefetcher/**/*.cc", + ], +} + +cc_binary { + name: "iorap.prefetcherd", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-prefetcher-default-dependencies", + "libiorap-serialize-default-dependencies", + ], + shared_libs: [], + include_dirs: [], + srcs: [ + "src/prefetcher/**/*.cc", + ], + // Easier debugging. TODO: make a separate debug config. + // XX: Using -O0 seems to completely hide some errors. + cflags: ["-O2", "-UNDEBUG", "-DIORAP_PREFETCHER_MAIN=1"], + sanitize: { + undefined: true, + all_undefined: true, + // Pretty print when ubsan detects a problem. + // Otherwise it just calls abort(). + +/* + diag: { + undefined: true, + }, + */ // don't use the diag when you want it to crash. + }, + + static_libs: [ + ], +} + +cc_binary { + name: "iorap.cmd.prefetcher.client", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-prefetcher-default-dependencies", + "libiorap-serialize-default-dependencies", + ], + shared_libs: [], + include_dirs: [], + srcs: [ + "src/prefetcher/**/*.cc", + ], + // Easier debugging. TODO: make a separate debug config. + // XX: Using -O0 seems to completely hide some errors. + cflags: ["-O2", "-UNDEBUG", "-DIORAP_PREFETCHER_MAIN_CLIENT=1"], + sanitize: { + undefined: true, + all_undefined: true, + // Pretty print when ubsan detects a problem. + // Otherwise it just calls abort(). + +/* + diag: { + undefined: true, + }, + */ // don't use the diag when you want it to crash. + }, + + static_libs: [ + ], +} + +prebuilt_etc { + name: "iorap.prefetcherd.policy", + sub_dir: "seccomp_policy", + arch: { + arm: { + src: "seccomp_policy/prefetcherd.arm.policy" + }, + arm64: { + src: "seccomp_policy/prefetcherd.arm64.policy" + }, + x86: { + src: "seccomp_policy/prefetcherd.x86.policy" + }, + x86_64: { + src: "seccomp_policy/prefetcherd.x86_64.policy" + }, + }, + required: [ + "crash_dump.policy", + ], +} + +// Static libraries cannot export their dependencies, +// the current convention is to use an extra 'defaults' rule for statics +// to bring in all the dependencies. +cc_defaults { + name: "libiorap-db-default-dependencies", + + defaults: [ + ], + + include_dirs: [], + static_libs: [ + ], + shared_libs: [ + "libsqlite", + ], +} + +cc_library_static { + name: "libiorap-db", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-db-default-dependencies", + ], + + srcs: [ + "src/db/**/*.cc", + ], +} + +cc_binary { + name: "iorap.cmd.db", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-db-default-dependencies", + ], + shared_libs: [], + include_dirs: [], + srcs: [ + "src/db/**/*.cc", + ], + // Easier debugging. TODO: make a separate debug config. + // XX: Using -O0 seems to completely hide some errors. + cflags: ["-O2", "-UNDEBUG", "-DIORAP_DB_MAIN=1"], + sanitize: { + undefined: true, + all_undefined: true, + // Pretty print when ubsan detects a problem. + // Otherwise it just calls abort(). + +/* + diag: { + undefined: true, + }, + */ // don't use the diag when you want it to crash. + }, + + static_libs: [ + ], +} + +cc_defaults { + name: "libiorap-maintenance-default-dependencies", + + defaults: [ + "libiorap-compiler-default-dependencies", + "libiorap-db-default-dependencies", + "libiorap-prefetcher-default-dependencies", + ], + + include_dirs: [], + + static_libs: [ + "libiorap-binder", + "libiorap-compiler", + "libiorap-db", + "libiorap-prefetcher", + ], + + shared_libs: [] +} + +cc_library_static { + name: "libiorap-maintenance", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-maintenance-default-dependencies", + ], + + srcs: [ + "src/maintenance/*.cc", + ], +} + +cc_binary { + name: "iorap.cmd.maintenance", + defaults: [ + "iorap-default-flags", + "iorap-default-dependencies", + "libiorap-maintenance-default-dependencies", + ], + shared_libs: [], + include_dirs: [], + srcs: [ + "src/maintenance/*.cc", + ], + cflags: ["-O2", "-UNDEBUG", "-DIORAP_MAINTENANCE_MAIN=1"], + sanitize: { + undefined: true, + all_undefined: true, + + diag: { + undefined: true, + }, + }, + + static_libs: [], +} diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..4e9f5fd --- /dev/null +++ b/Android.mk @@ -0,0 +1,33 @@ +# +# Copyright (C) 2019 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) + +# Build every binary target in system/iorap +.PHONY: iorap-nall +iorap-nall: \ + iorapd iorap.inode2filename iorapd-tests iorap.cmd.perfetto \ + iorap.cmd.compiler + +# Build every binary target required for +# frameworks/base/startop/scripts/app_startup_runner +# to work with iorap. +.PHONY: iorap-app-startup-runner +iorap-app-startup-runner: \ + iorapd iorap.inode2filename \ + iorap.cmd.compiler + + diff --git a/binder/com/google/android/startop/iorap/DexOptEvent.aidl b/binder/com/google/android/startop/iorap/DexOptEvent.aidl new file mode 100644 index 0000000..a4e175b --- /dev/null +++ b/binder/com/google/android/startop/iorap/DexOptEvent.aidl @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2020 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. + */ + +package com.google.android.startop.iorap; + +/** @hide */ +parcelable DexOptEvent cpp_header "binder/dexopt_event.h"; diff --git a/binder/com/google/android/startop/iorap/IIorap.aidl b/binder/com/google/android/startop/iorap/IIorap.aidl index fe91d15..05faefe 100644 --- a/binder/com/google/android/startop/iorap/IIorap.aidl +++ b/binder/com/google/android/startop/iorap/IIorap.aidl @@ -18,12 +18,14 @@ package com.google.android.startop.iorap; import com.google.android.startop.iorap.ITaskListener; -import com.google.android.startop.iorap.PackageEvent; -import com.google.android.startop.iorap.AppLaunchEvent; import com.google.android.startop.iorap.AppIntentEvent; +import com.google.android.startop.iorap.AppLaunchEvent; +import com.google.android.startop.iorap.DexOptEvent; +import com.google.android.startop.iorap.JobScheduledEvent; +import com.google.android.startop.iorap.PackageEvent; +import com.google.android.startop.iorap.RequestId; import com.google.android.startop.iorap.SystemServiceEvent; import com.google.android.startop.iorap.SystemServiceUserEvent; -import com.google.android.startop.iorap.RequestId; /** * IIOrap is a client interface to the input/output readahead and pin daemon (iorapd). @@ -109,6 +111,8 @@ oneway interface IIorap { // void onActivityHintEvent(in RequestId request, in ActivityHintEvent event); void onAppLaunchEvent(in RequestId request, in AppLaunchEvent event); + void onDexOptEvent(in RequestId request, in DexOptEvent event); + void onJobScheduledEvent(in RequestId request, in JobScheduledEvent event); void onPackageEvent(in RequestId request, in PackageEvent event); void onAppIntentEvent(in RequestId request, in AppIntentEvent event); void onSystemServiceEvent(in RequestId request, in SystemServiceEvent event); diff --git a/binder/com/google/android/startop/iorap/JobScheduledEvent.aidl b/binder/com/google/android/startop/iorap/JobScheduledEvent.aidl new file mode 100644 index 0000000..d4b5454 --- /dev/null +++ b/binder/com/google/android/startop/iorap/JobScheduledEvent.aidl @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2019 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. + */ + +package com.google.android.startop.iorap; + +/** @hide */ +parcelable JobScheduledEvent cpp_header "binder/job_scheduled_event.h"; diff --git a/include/binder/app_launch_event.h b/include/binder/app_launch_event.h index 784db16..0127e09 100644 --- a/include/binder/app_launch_event.h +++ b/include/binder/app_launch_event.h @@ -31,7 +31,7 @@ namespace binder { // These protos are part of the iorapd binder ABI, alias them for easier usage. using IntentProto = ::android::content::IntentProto; -using ActivityRecordProto = ::com::android::server::am::ActivityRecordProto; +using ActivityRecordProto = ::com::android::server::wm::ActivityRecordProto; struct AppLaunchEvent : public ::android::Parcelable { // Index position matters: Keep up-to-date with AppLaunchEvent.java sTypes field. @@ -42,6 +42,7 @@ struct AppLaunchEvent : public ::android::Parcelable { kActivityLaunched = 2, kActivityLaunchFinished = 3, kActivityLaunchCancelled = 4, + kReportFullyDrawn = 5, }; enum class Temperature : int32_t { @@ -59,18 +60,45 @@ struct AppLaunchEvent : public ::android::Parcelable { Temperature temperature{Temperature::kUninitialized}; // kActivityLaunch*. Can be null in kActivityLaunchCancelled. std::unique_ptr<ActivityRecordProto> activity_record_proto; + // kIntentStarted, kActivityLaunchFinished and kReportFullyDrawn only. + int64_t timestamp_nanos{-1}; AppLaunchEvent() = default; AppLaunchEvent(Type type, int64_t sequence_id, std::unique_ptr<IntentProto> intent_proto = nullptr, Temperature temperature = Temperature::kUninitialized, - std::unique_ptr<ActivityRecordProto> activity_record_proto = nullptr) + std::unique_ptr<ActivityRecordProto> activity_record_proto = nullptr, + int64_t timestamp_nanos = -1) : type(type), sequence_id(sequence_id), intent_proto(std::move(intent_proto)), temperature(temperature), - activity_record_proto(std::move(activity_record_proto)) { + activity_record_proto(std::move(activity_record_proto)), + timestamp_nanos(timestamp_nanos) { + } + + AppLaunchEvent(const AppLaunchEvent& other) { + *this = other; + } + + AppLaunchEvent& operator=(const AppLaunchEvent& other) { + if (&other == this) { + return *this; + } + + type = other.type; + sequence_id = other.sequence_id; + if (other.intent_proto != nullptr) { + intent_proto.reset(new IntentProto(*other.intent_proto)); + } + temperature = other.temperature; + if (other.activity_record_proto != nullptr) { + activity_record_proto.reset(new ActivityRecordProto(*other.activity_record_proto)); + } + timestamp_nanos = other.timestamp_nanos; + + return *this; } ::android::status_t readFromParcel(const android::Parcel* parcel) override { @@ -92,6 +120,7 @@ struct AppLaunchEvent : public ::android::Parcelable { switch (type) { case Type::kIntentStarted: PARCEL_READ_OR_RETURN(readIntent, parcel); + PARCEL_READ_OR_RETURN(parcel->readInt64, ×tamp_nanos); break; case Type::kIntentFailed: // No extra arguments. @@ -105,10 +134,15 @@ struct AppLaunchEvent : public ::android::Parcelable { } case Type::kActivityLaunchFinished: PARCEL_READ_OR_RETURN(readActivityRecordProto, parcel); + PARCEL_READ_OR_RETURN(parcel->readInt64, ×tamp_nanos); break; case Type::kActivityLaunchCancelled: PARCEL_READ_OR_RETURN(readActivityRecordProtoNullable, parcel); break; + case Type::kReportFullyDrawn: + PARCEL_READ_OR_RETURN(readActivityRecordProto, parcel); + PARCEL_READ_OR_RETURN(parcel->readInt64, ×tamp_nanos); + break; default: return android::BAD_VALUE; } @@ -131,6 +165,7 @@ struct AppLaunchEvent : public ::android::Parcelable { switch (type) { case Type::kIntentStarted: PARCEL_WRITE_OR_RETURN(writeIntent, parcel); + PARCEL_WRITE_OR_RETURN(parcel->writeInt64, timestamp_nanos); break; case Type::kIntentFailed: // No extra arguments. @@ -141,10 +176,15 @@ struct AppLaunchEvent : public ::android::Parcelable { break; case Type::kActivityLaunchFinished: PARCEL_WRITE_OR_RETURN(writeActivityRecordProto, parcel); + PARCEL_WRITE_OR_RETURN(parcel->writeInt64, timestamp_nanos); break; case Type::kActivityLaunchCancelled: PARCEL_WRITE_OR_RETURN(writeActivityRecordProtoNullable, parcel); break; + case Type::kReportFullyDrawn: + PARCEL_WRITE_OR_RETURN(writeActivityRecordProtoNullable, parcel); + PARCEL_WRITE_OR_RETURN(parcel->writeInt64, timestamp_nanos); + break; default: DCHECK(false) << "attempted to write an uninitialized AppLaunchEvent to Parcel"; return android::BAD_VALUE; @@ -320,6 +360,9 @@ inline std::ostream& operator<<(std::ostream& os, const AppLaunchEvent::Type& ty case AppLaunchEvent::Type::kActivityLaunchFinished: os << "kActivityLaunchFinished"; break; + case AppLaunchEvent::Type::kReportFullyDrawn: + os << "kReportFullyDrawn"; + break; default: os << "(unknown)"; } @@ -378,6 +421,11 @@ inline std::ostream& operator<<(std::ostream& os, const AppLaunchEvent& e) { // title or component name. os << "'" << e.activity_record_proto->identifier().title() << "'"; } + os << ","; + + os << "timestamp_nanos=" << e.timestamp_nanos << ","; + os << ","; + os << "}"; return os; diff --git a/include/binder/dexopt_event.h b/include/binder/dexopt_event.h new file mode 100644 index 0000000..cb506f4 --- /dev/null +++ b/include/binder/dexopt_event.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2020 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. + */ + +#ifndef IORAP_BINDER_DEXOPT_EVENT_H_ +#define IORAP_BINDER_DEXOPT_EVENT_H_ + +#include "binder/common.h" +#include "binder/auto_parcelable.h" +#include "common/introspection.h" + +namespace iorap { +namespace binder { + +struct DexOptEvent : public AutoParcelable<DexOptEvent> { + enum class Type : int32_t { + kPackageUpdate = 0, + }; + + Type type; + std::string package_name; +}; + +IORAP_INTROSPECT_ADAPT_STRUCT(DexOptEvent, type, package_name); + +} +} +IORAP_JAVA_NAMESPACE_BINDER_TYPEDEF(DexOptEvent) + +#endif // IORAP_BINDER_DEXOPT_EVENT_H_ diff --git a/include/binder/job_scheduled_event.h b/include/binder/job_scheduled_event.h new file mode 100644 index 0000000..f85f39b --- /dev/null +++ b/include/binder/job_scheduled_event.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2018 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. + */ + +#ifndef IORAP_BINDER_JOB_SCHEDULED_EVENT_H_ +#define IORAP_BINDER_JOB_SCHEDULED_EVENT_H_ + +#include "binder/common.h" +#include "binder/auto_parcelable.h" +#include "common/introspection.h" + +namespace iorap { +namespace binder { + +struct JobScheduledEvent : public AutoParcelable<JobScheduledEvent> { + enum class Type : int32_t { + kStartJob = 0, + kStopJob = 1, + }; + + Type type; + int32_t job_id; + + enum class Sort : int32_t { + kIdleMaintenance = 0, + }; + + Sort sort; + + constexpr bool operator==(const JobScheduledEvent& other) const { + return type == other.type + && job_id == other.job_id + && sort == other.sort; + } + + constexpr bool operator!=(const JobScheduledEvent& other) const { + return !(*this == other); + } +}; + +IORAP_INTROSPECT_ADAPT_STRUCT(JobScheduledEvent, type, job_id, sort); + +} +} +IORAP_JAVA_NAMESPACE_BINDER_TYPEDEF(JobScheduledEvent) + +#endif // IORAP_BINDER_JOB_SCHEDULED_EVENT_H_ diff --git a/include/binder/request_id.h b/include/binder/request_id.h index c41ff3c..71a2edd 100644 --- a/include/binder/request_id.h +++ b/include/binder/request_id.h @@ -25,6 +25,14 @@ namespace binder { struct RequestId : public AutoParcelable<RequestId> { int64_t request_id; + + constexpr bool operator==(const RequestId& other) const { + return request_id == other.request_id; + } + + constexpr bool operator!=(const RequestId& other) const { + return !(*this == other); + } }; IORAP_INTROSPECT_ADAPT_STRUCT(RequestId, request_id); diff --git a/include/binder/task_result.h b/include/binder/task_result.h index 3fc3ff9..b060f3f 100644 --- a/include/binder/task_result.h +++ b/include/binder/task_result.h @@ -34,6 +34,17 @@ struct TaskResult : public AutoParcelable<TaskResult> { }; State state; + + TaskResult() = default; + explicit TaskResult(State state) : state(state) {} + + constexpr bool operator==(const TaskResult& other) const { + return state == other.state; + } + + constexpr bool operator!=(const TaskResult& other) const { + return !(*this == other); + } }; IORAP_INTROSPECT_ADAPT_STRUCT(TaskResult, state); @@ -16,6 +16,7 @@ service iorapd /system/bin/iorapd class main user iorapd group iorapd + capabilities DAC_READ_SEARCH writepid /dev/cpuset/system-background/tasks # TODO: should this be something else like performance/tasks? # the main 'activity hint' thread needs to be fairly high priority to kick off @@ -26,4 +27,4 @@ on property:ro.iorapd.enable=false on post-fs-data # Create directory for iorapd (see iorapd_data_file in selinux file_contexts). - mkdir /data/misc/iorapd/ 0770 iorapd iorapd + mkdir /data/misc/iorapd/ 0750 iorapd system diff --git a/seccomp_policy/prefetcherd.arm.policy b/seccomp_policy/prefetcherd.arm.policy new file mode 120000 index 0000000..a4642af --- /dev/null +++ b/seccomp_policy/prefetcherd.arm.policy @@ -0,0 +1 @@ +prefetcherd.arm64.policy
\ No newline at end of file diff --git a/seccomp_policy/prefetcherd.arm64.policy b/seccomp_policy/prefetcherd.arm64.policy new file mode 100644 index 0000000..a796ad1 --- /dev/null +++ b/seccomp_policy/prefetcherd.arm64.policy @@ -0,0 +1,21 @@ +# Copyright (C) 2019 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. + +# main usage: fadvise to prefetch data +fadvise64: 1 + +# bionic's fdsan requires this +getrlimit: 1 + +@include /system/etc/seccomp_policy/crash_dump.arm64.policy diff --git a/seccomp_policy/prefetcherd.x86.policy b/seccomp_policy/prefetcherd.x86.policy new file mode 120000 index 0000000..a4642af --- /dev/null +++ b/seccomp_policy/prefetcherd.x86.policy @@ -0,0 +1 @@ +prefetcherd.arm64.policy
\ No newline at end of file diff --git a/seccomp_policy/prefetcherd.x86_64.policy b/seccomp_policy/prefetcherd.x86_64.policy new file mode 120000 index 0000000..a4642af --- /dev/null +++ b/seccomp_policy/prefetcherd.x86_64.policy @@ -0,0 +1 @@ +prefetcherd.arm64.policy
\ No newline at end of file diff --git a/src/binder/iiorap_def.h b/src/binder/iiorap_def.h index 0c1eac8..5763380 100644 --- a/src/binder/iiorap_def.h +++ b/src/binder/iiorap_def.h @@ -29,6 +29,9 @@ FN_BEGIN(::com::google::android::startup::iorap::,IIorap) FN(setTaskListener, (const ::android::sp<::com::google::android::startop::iorap::,ITaskListener,>&,listener)) /*NOLINT*/ \ FN(onAppLaunchEvent,(const ::com::google::android::startop::iorap::,RequestId,&,request), \ (const ::com::google::android::startop::iorap::,AppLaunchEvent,&,event)) \ +FN(onJobScheduledEvent, \ + (const ::com::google::android::startop::iorap::,RequestId,&,request), \ + (const ::com::google::android::startop::iorap::,JobScheduledEvent,&,event)) \ FN(onPackageEvent, (const ::com::google::android::startop::iorap::,RequestId,&,request), \ (const ::com::google::android::startop::iorap::,PackageEvent,&,event)) \ FN(onAppIntentEvent,(const ::com::google::android::startop::iorap::,RequestId,&,request), \ @@ -39,6 +42,8 @@ FN(onSystemServiceEvent, FN(onSystemServiceUserEvent, \ (const ::com::google::android::startop::iorap::,RequestId,&,request), \ (const ::com::google::android::startop::iorap::,SystemServiceUserEvent,&,event))\ +FN(onDexOptEvent, (const ::com::google::android::startop::iorap::,RequestId,&,request), \ + (const ::com::google::android::startop::iorap::,DexOptEvent,&,event)) \ FN_END() \ // Convenience macros to unpack the 2nd parameter from IIORAP_IFACE_DEF#FN calls. diff --git a/src/binder/iiorap_impl.cc b/src/binder/iiorap_impl.cc index a6f6409..de5a55d 100644 --- a/src/binder/iiorap_impl.cc +++ b/src/binder/iiorap_impl.cc @@ -24,6 +24,11 @@ #include <binder/BinderService.h> #include <binder/IPCThreadState.h> #include <include/binder/request_id.h> +#include <utils/Printer.h> + +#include <codecvt> +#include <locale> +#include <utility> /* * Definitions for the IIorap binder native service implementation. @@ -76,10 +81,42 @@ static std::atomic<bool> s_service_params_ready_{false}; static ServiceParams s_service_params_; static std::atomic<ServiceParams*> s_service_params_atomic_; +// Convert an android::String16 (UTF-16) to a UTF-8 std::string. +static std::string String16ToStdString(const ::android::String16& s16) { + std::u16string u16{s16.string()}; + std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> convert; + + std::string res = convert.to_bytes(u16); + return res; +} + } // namespace anonymous class IIorapImpl::Impl { + // ITaskListener implementation for iorap::manager::EventManager. + struct EventManagerTaskCallbacks : public iorap::manager::TaskResultCallbacks { + explicit EventManagerTaskCallbacks(iorap::borrowed<IIorapImpl::Impl*> impl) { + CHECK(impl != nullptr); + impl_ = impl; + } + + virtual void OnProgress(iorap::binder::RequestId request_id, iorap::binder::TaskResult task_result) override { + impl_->ReplyWithResult(request_id, /*completed*/false, std::move(task_result)); + } + virtual void OnComplete(iorap::binder::RequestId request_id, iorap::binder::TaskResult task_result) override { + impl_->ReplyWithResult(request_id, /*completed*/true, std::move(task_result)); + } + + virtual ~EventManagerTaskCallbacks() {} + + iorap::borrowed<IIorapImpl::Impl*> impl_; + }; + public: + ~Impl() { + package_manager_->UnregisterPackageChangeObserver(package_change_observer_); + } + void SetTaskListener(const ::android::sp<ITaskListener>& listener) { ::android::sp<ITaskListener> old_listener = listener_; if (old_listener != nullptr && listener != nullptr) { @@ -93,7 +130,7 @@ class IIorapImpl::Impl { if (listener == nullptr) { // No listener. Cannot send anything back to the client. // This could be normal, e.g. client had set listener to null before disconnecting. - LOG(WARNING) << "Drop result, no listener registered."; + LOG(DEBUG) << "Drop result, no listener registered."; // TODO: print the result with ostream operator<< return; } @@ -111,6 +148,26 @@ class IIorapImpl::Impl { } } + void ReplyWithResult(const RequestId& request_id, bool completed, TaskResult result) { + ::android::sp<ITaskListener> listener = listener_; + if (listener == nullptr) { + // No listener. Cannot send anything back to the client. + // This could be normal, e.g. client had set listener to null before disconnecting. + LOG(DEBUG) << "Drop result, no listener registered."; + // TODO: print the result with ostream operator<< + return; + } + + // TODO: verbose, not info. + if (completed) { + LOG(VERBOSE) << "ITaskListener::onComplete (request_id=" << request_id.request_id << ")"; + listener->onComplete(request_id, result); + } else { + LOG(VERBOSE) << "ITaskListener::onProgress (request_id=" << request_id.request_id << ")"; + listener->onProgress(request_id, result); + } + } + bool OnAppLaunchEvent(const RequestId& request_id, const AppLaunchEvent& event) { if (MaybeHandleFakeBehavior(request_id)) { @@ -120,6 +177,89 @@ class IIorapImpl::Impl { return service_params_.event_manager_->OnAppLaunchEvent(request_id, event); } + bool OnDexOptEvent(const RequestId& request_id, const DexOptEvent& event) { + if (MaybeHandleFakeBehavior(request_id)) { + return true; + } + + return service_params_.event_manager_->OnDexOptEvent(request_id, event); + } + + bool OnJobScheduledEvent(const RequestId& request_id, + const JobScheduledEvent& event) { + if (MaybeHandleFakeBehavior(request_id)) { + return true; + } + + return service_params_.event_manager_->OnJobScheduledEvent(request_id, event); + } + + void Dump(/*borrow*/::android::Printer& printer, + const ::android::Vector<::android::String16>& args) { + + if (args.size() == 0) { + service_params_.event_manager_->Dump(/*borrow*/printer); + return; + } + + ::android::String16 arg_prev; + for (const ::android::String16& arg : args) { + bool unknown = false; + if (arg == ::android::String16("--all") || arg == ::android::String16("-a")) { + // using 'dumpsys' or 'bugreport' passes a single '-a' flag to this function. + service_params_.event_manager_->Dump(/*borrow*/printer); + } else if (arg == ::android::String16("--refresh-properties")) { + service_params_.event_manager_->RefreshSystemProperties(/*borrow*/printer); + printer.printLine("System properties refreshed."); + } else if (arg == ::android::String16("--compile-package")) { + // Intentionally left blank. + } else if (arg_prev == ::android::String16("--compile-package")) { + std::string package_name = String16ToStdString(arg); + + if (!service_params_.event_manager_->CompilePackage(/*borrow*/printer, package_name)) { + printer.printFormatLine("Failed to compile package %s.", package_name.c_str()); + } else { + printer.printFormatLine("Package %s compiled.", package_name.c_str()); + } + } else if (arg == ::android::String16("--purge-package")) { + // Intentionally left blank. + } else if (arg_prev == ::android::String16("--purge-package")) { + std::string package_name = String16ToStdString(arg); + + if (!service_params_.event_manager_->PurgePackage(/*borrow*/printer, package_name)) { + printer.printFormatLine("Failed to purge package %s.", package_name.c_str()); + } else { + printer.printFormatLine("Package %s purged.", package_name.c_str()); + } + } else { + unknown = true; + } + + if (unknown && arg != ::android::String16("--help")) { + printer.printLine("Invalid arguments."); + printer.printLine(""); + + printer.printLine("Arguments were:"); + for (const ::android::String16& arg16 : args) { + printer.printFormatLine(" '%s'", String16ToStdString(arg16).c_str()); + } + printer.printLine(""); + } + + if (unknown || arg == ::android::String16("--help")) { + printer.printLine("Iorapd dumpsys commands:"); + printer.printLine(" (none),--all,-a: Print state information for debugging iorapd."); + printer.printLine(" --help: Display this help menu"); + printer.printLine(" --compile-package <name>: Compile single package on device"); + printer.printLine(" --purge-package <name>: Delete database entries/files for package"); + printer.printLine(" --refresh-properties: Refresh system properties"); + return; + } + + arg_prev = arg; + } + } + void HandleFakeBehavior(const RequestId& request_id) { DCHECK(service_params_.fake_); @@ -141,11 +281,36 @@ class IIorapImpl::Impl { ::android::sp<ITaskListener> listener_; - Impl(ServiceParams p) : service_params_{std::move(p)} { + Impl(ServiceParams p) : service_params_{std::move(p)}, event_manager_callbacks_{new EventManagerTaskCallbacks{this}} { CHECK(service_params_.event_manager_ != nullptr); + + service_params_.event_manager_->SetTaskResultCallbacks( + std::static_pointer_cast<manager::TaskResultCallbacks>(event_manager_callbacks_)); + + // Init the package change observer. + package_manager_ = PackageManagerRemote::Create(); + + if (package_manager_ == nullptr) { + LOG(FATAL) << "Failed to get package manager service in IIorapImpl::Impl"; + return; + } + + package_change_observer_ = + new PackageChangeObserver(service_params_.event_manager_); + package_manager_death_recipient_ = + new PackageManagerDeathRecipient(package_manager_, package_change_observer_); + + package_manager_->RegisterPackageChangeObserver(package_change_observer_); + package_manager_-> + RegisterPackageManagerDeathRecipient(package_manager_death_recipient_); + } ServiceParams service_params_; + std::shared_ptr<EventManagerTaskCallbacks> event_manager_callbacks_; + android::sp<PackageChangeObserver> package_change_observer_; + android::sp<PackageManagerDeathRecipient> package_manager_death_recipient_; + std::shared_ptr<PackageManagerRemote> package_manager_; }; using Impl = IIorapImpl::Impl; @@ -203,9 +368,21 @@ bool IIorapImpl::Start(std::shared_ptr<manager::EventManager> event_manager) { // Release edge synchronizes-with the top of this function. s_service_started_.store(true); + // TODO: IIRC thread-start(t1) synchronizes-with t1.main, so we should be able + // to delete the majority of atomics for any pre-thread-start initialization... + return true; } +::android::status_t IIorapImpl::dump(int fd, const ::android::Vector<::android::String16>& args) { + + ::android::FdPrinter printer{fd}; + + impl_->Dump(printer, args); + + return ::android::NO_ERROR; +} + namespace { #define MAYBE_HAVE_FAKE_BEHAVIOR(self, request_id) \ @@ -260,6 +437,48 @@ Status SendArgs(const char* function_name, } template <typename ... Args> +Status SendArgs(const char* function_name, + Impl* self, + const RequestId& request_id, + const DexOptEvent& event) { + DCHECK_EQ(std::string(function_name), "onDexOptEvent"); + LOG(VERBOSE) << "IIorap::onDexOptEvent"; + + MAYBE_HAVE_FAKE_BEHAVIOR(self, request_id); + + if (self->OnDexOptEvent(request_id, event)) { + return Status::ok(); + } else { + return Status::fromStatusT(::android::BAD_VALUE); + } +} + +template <typename ... Args> +Status SendArgs(const char* function_name, + Impl* self, + const RequestId& request_id, + const JobScheduledEvent& event) { + DCHECK_EQ(std::string(function_name), "onJobScheduledEvent"); + LOG(VERBOSE) << "IIorap::onJobScheduledEvent"; + + MAYBE_HAVE_FAKE_BEHAVIOR(self, request_id); + + if (self->OnJobScheduledEvent(request_id, event)) { + return Status::ok(); + } else { + // TODO: I suppose this should write out an exception back, + // like a service-specific error or something. + // + // It depends on whether or not we even have any synchronous + // errors. + // + // Most of the work here is done async, so it should handle + // async callbacks. + return Status::fromStatusT(::android::BAD_VALUE); + } +} + +template <typename ... Args> Status Send(const char* function_name, Args&&... args) { LOG(VERBOSE) << "IIorap::Send(" << function_name << ")"; diff --git a/src/binder/iiorap_impl.h b/src/binder/iiorap_impl.h index 811497f..ae1422f 100644 --- a/src/binder/iiorap_impl.h +++ b/src/binder/iiorap_impl.h @@ -18,6 +18,8 @@ #define IORAP_BINDER_IIORAP_IMPL_H #include "binder/iiorap_def.h" +#include "binder/package_change_observer.h" +#include "binder/package_manager_remote.h" #include "common/macros.h" #include "com/google/android/startop/iorap/BnIorap.h" @@ -45,6 +47,9 @@ public: static bool Start(std::shared_ptr<iorap::manager::EventManager> event_manager); static constexpr const char* getServiceName() { return "iorapd"; }; + virtual ::android::status_t dump(int fd, + const ::android::Vector<::android::String16>& args) override; + // Join all parameter declarations by splitting each parameter with a comma. // Types are used fully. #define IIORAP_IMPL_ARGS(...) \ @@ -65,7 +70,6 @@ private: std::unique_ptr<Impl> impl_; }; - } } diff --git a/src/binder/package_change_observer.cc b/src/binder/package_change_observer.cc new file mode 100644 index 0000000..1907af8 --- /dev/null +++ b/src/binder/package_change_observer.cc @@ -0,0 +1,37 @@ +// Copyright (C) 2020 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. + +#include "package_change_observer.h" +#include "package_manager_remote.h" +#include "manager/event_manager.h" + +#include <android-base/logging.h> +#include <android-base/properties.h> + +namespace iorap::binder { + +PackageChangeObserver::PackageChangeObserver( + std::shared_ptr<iorap::manager::EventManager> event_manager) : + event_manager_(event_manager){} + +android::binder::Status PackageChangeObserver::onPackageChanged( + const android::content::pm::PackageChangeEvent& event) { + LOG(DEBUG) << "Received PackageChangeObserver::onPackageChanged"; + if (event_manager_->OnPackageChanged(event)) { + return android::binder::Status::ok(); + } else { + return android::binder::Status::fromStatusT(android::BAD_VALUE); + } +} +} // namespace iorap::binder diff --git a/src/binder/package_change_observer.h b/src/binder/package_change_observer.h new file mode 100644 index 0000000..ac488ac --- /dev/null +++ b/src/binder/package_change_observer.h @@ -0,0 +1,42 @@ +// Copyright (C) 2020 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. + +#ifndef IORAP_SRC_PACKAGE_CHANGE_OBSERVER_H_ +#define IORAP_SRC_PACKAGE_CHANGE_OBSERVER_H_ + +#include "binder/iiorap_def.h" + +#include <android/content/pm/BnPackageChangeObserver.h> +#include <android/content/pm/PackageChangeEvent.h> +#include <android/content/pm/IPackageManagerNative.h> + +namespace iorap::manager { + class EventManager; +}; + +namespace iorap::binder { + +class PackageChangeObserver : public android::content::pm::BnPackageChangeObserver { + public: + PackageChangeObserver(std::shared_ptr<iorap::manager::EventManager> event_manager); + + // Callback when the package is changed. + android::binder::Status onPackageChanged( + const ::android::content::pm::PackageChangeEvent& event) override; + private: + std::shared_ptr<iorap::manager::EventManager> event_manager_; +}; +} // namespace iorap::binder + +#endif // IORAP_SRC_PACKAGE_CHANGE_OBSERVER_H_ diff --git a/src/binder/package_manager_remote.cc b/src/binder/package_manager_remote.cc new file mode 100644 index 0000000..daeb6af --- /dev/null +++ b/src/binder/package_manager_remote.cc @@ -0,0 +1,194 @@ +// Copyright (C) 2020 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. + +#include "package_manager_remote.h" + +#include <android-base/logging.h> +#include <android-base/properties.h> + +#include <chrono> +#include <thread> + +namespace iorap::binder { + +const constexpr int64_t kTimeoutMs = 60 * 1000; // 1 min +const constexpr int64_t kIntervalMs = 1000; // 1 sec + +std::shared_ptr<PackageManagerRemote> PackageManagerRemote::Create() { + std::shared_ptr<PackageManagerRemote> package_manager = + std::make_shared<PackageManagerRemote>(); + if (package_manager->ReconnectWithTimeout(kTimeoutMs)) { + return package_manager; + } + return nullptr; +} + +android::sp<IPackageManager> PackageManagerRemote::GetPackageService() { + android::sp<android::IBinder> binder = android::defaultServiceManager()->getService( + android::String16{"package_native"}); + if (binder == nullptr) { + LOG(ERROR) << "Cannot get package manager service!"; + return nullptr; + } + + return android::interface_cast<IPackageManager>(binder); +} + +std::optional<int64_t> PackageManagerRemote::GetPackageVersion( + const std::string& package_name) { + int64_t version_code; + android::binder::Status status = InvokeRemote( + [this, &version_code, &package_name]() { + return package_service_->getVersionCodeForPackage( + android::String16(package_name.c_str()), /*out*/&version_code); + }); + if (status.isOk()) { + return version_code; + } else { + LOG(WARNING) << "Failed to get version: " + << status.toString8().c_str() + << " for " << package_name + << ". Retry to connect package manager service."; + return std::nullopt; + } +} + +std::optional<VersionMap> PackageManagerRemote::GetPackageVersionMap() { + VersionMap package_version_map; + std::optional<std::vector<std::string>> packages = GetAllPackages(); + if (!packages) { + LOG(DEBUG) << "Failed to get all packages. The package manager may be down."; + return std::nullopt; + } + LOG(DEBUG) << "PackageManagerRemote::GetPackageVersionMap: " + << packages->size() + << " packages are found."; + + for (const std::string& package : *packages) { + std::optional<int64_t> version = GetPackageVersion(package); + if (!version) { + LOG(DEBUG) << "Cannot get version for " << package + << "Package manager may be down"; + return std::nullopt; + } + package_version_map[package] = *version; + } + + return package_version_map; +} + +std::optional<std::vector<std::string>> PackageManagerRemote::GetAllPackages() { + std::vector<std::string> packages; + android::binder::Status status = InvokeRemote( + [this, &packages]() { + return package_service_->getAllPackages(/*out*/&packages); + }); + + if (status.isOk()) { + return packages; + } + + LOG(ERROR) << "Failed to get all packages: " << status.toString8().c_str(); + return std::nullopt; + +} + +bool PackageManagerRemote::ReconnectWithTimeout(int64_t timeout_ms) { + int64_t count = 0; + package_service_ = nullptr; + std::chrono::duration interval = std::chrono::milliseconds(1000); + std::chrono::duration timeout = std::chrono::milliseconds(timeout_ms); + + while (package_service_ == nullptr) { + LOG(WARNING) << "Reconnect to package manager service: " << ++count << " times"; + package_service_ = GetPackageService(); + std::this_thread::sleep_for(interval); + if (count * interval >= timeout) { + LOG(FATAL) << "Fail to create version map in " + << timeout.count() + << " milliseconds." + << " Reason: Failed to connect to package manager service." + << " Is system_server down?"; + return false; + } + } + + return true; +} + +template <typename T> +android::binder::Status PackageManagerRemote::InvokeRemote(T&& lambda) { + android::binder::Status status = + static_cast<android::binder::Status>(lambda()); + if (status.isOk()) { + return status; + } + + if (!ReconnectWithTimeout(kTimeoutMs)) { + return status; + } + + return lambda(); +} + +void PackageManagerRemote::RegisterPackageChangeObserver( + android::sp<PackageChangeObserver> observer) { + LOG(DEBUG) << "Register package change observer."; + android::binder::Status status = InvokeRemote( + [this, &observer]() { + return package_service_->registerPackageChangeObserver(observer); + }); + + if (!status.isOk()) { + LOG(FATAL) << "Cannot register package change observer."; + } +} + +void PackageManagerRemote::UnregisterPackageChangeObserver( + android::sp<PackageChangeObserver> observer) { + LOG(DEBUG) << "Unregister package change observer."; + android::binder::Status status = InvokeRemote( + [this, &observer]() { + return package_service_->unregisterPackageChangeObserver(observer); + }); + + if (!status.isOk()) { + LOG(WARNING) << "Cannot unregister package change observer."; + } +} + +void PackageManagerRemote::RegisterPackageManagerDeathRecipient( + android::sp<PackageManagerDeathRecipient> death_recipient) { + LOG(DEBUG) << "Register package manager death recipient."; + android::status_t status = + android::IInterface::asBinder(package_service_.get())->linkToDeath(death_recipient); + + if (status == android::OK) { + return; + } + + if (!ReconnectWithTimeout(kTimeoutMs) || + android::OK != android::IInterface::asBinder( + package_service_.get())->linkToDeath(death_recipient)) { + LOG(FATAL) << "Failed to register package manager death recipient."; + } +} + +void PackageManagerDeathRecipient::binderDied(const android::wp<android::IBinder>& /* who */) { + LOG(DEBUG) << "PackageManagerDeathRecipient::binderDied try to re-register"; + package_manager_->RegisterPackageChangeObserver(observer_); + package_manager_-> + RegisterPackageManagerDeathRecipient(this); +} +} // namespace iorap::package_manager diff --git a/src/binder/package_manager_remote.h b/src/binder/package_manager_remote.h new file mode 100644 index 0000000..9b0dcd9 --- /dev/null +++ b/src/binder/package_manager_remote.h @@ -0,0 +1,83 @@ +// Copyright (C) 2020 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. + +#ifndef IORAP_SRC_PACKAGE_MANAGER_REMOTE_H_ +#define IORAP_SRC_PACKAGE_MANAGER_REMOTE_H_ + +#include "binder/package_change_observer.h" + +#include <android/content/pm/IPackageManagerNative.h> +#include <binder/IServiceManager.h> + +#include <optional> +#include <unordered_map> + +namespace iorap::binder { + +using IPackageManager = android::content::pm::IPackageManagerNative; +// A map between package name and its version. +using VersionMap = std::unordered_map<std::string, int64_t>; + +class PackageManagerRemote; + +class PackageManagerDeathRecipient : public android::IBinder::DeathRecipient { +public: + PackageManagerDeathRecipient(std::shared_ptr<PackageManagerRemote> package_manager, + android::sp<PackageChangeObserver> observer) : + package_manager_(package_manager), observer_(observer) {} + // android::IBinder::DeathRecipient override: + void binderDied(const android::wp<android::IBinder>& /* who */) override; + +private: + std::shared_ptr<PackageManagerRemote> package_manager_; + + android::sp<PackageChangeObserver> observer_; +}; + +class PackageManagerRemote { + public: + static std::shared_ptr<PackageManagerRemote> Create(); + + // Gets the package version based on the package name. + std::optional<int64_t> GetPackageVersion(const std::string& package_name); + + // Gets a map of package name and its version. + std::optional<VersionMap> GetPackageVersionMap(); + + void RegisterPackageChangeObserver(android::sp<PackageChangeObserver> observer); + + void UnregisterPackageChangeObserver(android::sp<PackageChangeObserver> observer); + + void RegisterPackageManagerDeathRecipient( + android::sp<PackageManagerDeathRecipient> death_recipient); + + private: + template <typename T> + android::binder::Status InvokeRemote(T&& lambda); + + // Reconnects to the package manager service. + // Retry until timeout. + bool ReconnectWithTimeout(int64_t timeout_ms); + + // Gets the package manager service. + static android::sp<IPackageManager> GetPackageService(); + + // Gets all package names. + std::optional<std::vector<std::string>> GetAllPackages(); + + android::sp<IPackageManager> package_service_; +}; +} // namespace iorap::package_manager + +#endif // IORAP_SRC_PACKAGE_MANAGER_REMOTE_H_ diff --git a/src/binder/package_version_map.cc b/src/binder/package_version_map.cc new file mode 100644 index 0000000..784bb1b --- /dev/null +++ b/src/binder/package_version_map.cc @@ -0,0 +1,117 @@ +// Copyright (C) 2020 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. + +#include "package_version_map.h" + +#include <android-base/logging.h> +#include <android-base/properties.h> + +namespace iorap::binder { + +std::shared_ptr<PackageVersionMap> PackageVersionMap::Create() { + std::shared_ptr<PackageManagerRemote> package_manager = + PackageManagerRemote::Create(); + if (!package_manager) { + return std::make_shared<PackageVersionMap>(); + } + + std::optional<VersionMap> map = package_manager->GetPackageVersionMap(); + return std::make_shared<PackageVersionMap>(package_manager, map); +} + +void PackageVersionMap::UpdateAll() {std::lock_guard<std::mutex> lock(mutex_); + size_t old_size = version_map_->size(); + std::optional<VersionMap> new_version_map = + package_manager_->GetPackageVersionMap(); + if (!new_version_map) { + LOG(DEBUG) << "Failed to get the latest version map"; + return; + } + version_map_ = std::move(new_version_map); + LOG(DEBUG) << "Update for version is done. The size is from " << old_size + << " to " << version_map_->size(); +} + +bool PackageVersionMap::Update(std::string package_name, int64_t version) { + std::lock_guard<std::mutex> lock(mutex_); + if (!version_map_) { + LOG(DEBUG) << "The version map doesn't exist. " + << "The package manager may be down."; + return false; + } + + VersionMap::iterator it = version_map_->find(package_name); + if (it == version_map_->end()) { + LOG(DEBUG) << "New installed package " + << package_name + << " with version " + << version; + (*version_map_)[package_name] = version; + return true; + } + + if (it->second != version) { + LOG(DEBUG) << "New version package " + << package_name + << " with version " + << version; + (*version_map_)[package_name] = version; + return true; + } + + LOG(DEBUG) << "Same version package " + << package_name + << " with version " + << version; + return false; +} + +size_t PackageVersionMap::Size() { + if (!version_map_) { + LOG(DEBUG) << "The version map doesn't exist. " + << "The package manager may be down."; + return -1; + } + return version_map_->size(); +} + +std::optional<int64_t> PackageVersionMap::GetOrQueryPackageVersion( + const std::string& package_name) { + std::lock_guard<std::mutex> lock(mutex_); + if (!version_map_) { + LOG(DEBUG) << "The version map doesn't exist. " + << "The package manager may be down."; + return std::nullopt; + } + + VersionMap::iterator it = version_map_->find(package_name); + if (it == version_map_->end()) { + LOG(DEBUG) << "Cannot find version for: " << package_name + << " in the hash table"; + std::optional<int64_t> version = + package_manager_->GetPackageVersion(package_name); + if (version) { + LOG(VERBOSE) << "Find version for: " << package_name << " on the fly."; + (*version_map_)[package_name] = *version; + return *version; + } else { + LOG(ERROR) << "Cannot find version for: " << package_name + << " on the fly."; + return -1; + } + } + + return it->second; +} +} // namespace iorap::binder diff --git a/src/binder/package_version_map.h b/src/binder/package_version_map.h new file mode 100644 index 0000000..f2048fe --- /dev/null +++ b/src/binder/package_version_map.h @@ -0,0 +1,83 @@ +// Copyright (C) 2020 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. + +#ifndef IORAP_SRC_PACKAGE_VERSION_MAP_H_ +#define IORAP_SRC_PACKAGE_VERSION_MAP_H_ + +#include <android/content/pm/IPackageManagerNative.h> +#include <binder/IServiceManager.h> + +#include <optional> +#include <unordered_map> + +#include "package_manager_remote.h" + +namespace iorap::binder { + +class PackageVersionMap { + public: + static std::shared_ptr<PackageVersionMap> Create(); + + PackageVersionMap(std::shared_ptr<PackageManagerRemote> package_manager, + std::optional<VersionMap> version_map) + : package_manager_(package_manager), + version_map_(version_map) {} + + PackageVersionMap() + : package_manager_(nullptr), version_map_(std::nullopt) {} + + // Updates the version specified by 'package_name' to 'version'. + // + // Post-condition: Find(package_name) == version. + // * if the package is newly installed, insert and return true. + // * if the package version is changed, update the version to the + // given one and return true. + // * otherwise, return false. + bool Update(std::string package_name, int64_t version); + + void UpdateAll(); + + // Finds the version of the package in the hash table. + // -1 means the app is installed by unversioned. + // Empty means the app is not inside the RAM version map, maybe due to + // the app is newly installed. + std::optional<int64_t> Find(const std::string& package_name) { + VersionMap::iterator it = version_map_->find(package_name); + if (it == version_map_->end()) { + return std::nullopt; + } + return it->second; + } + + size_t Size(); + + // Gets or queries the version for the package. + // + // The method firstly access the hash map in the RAM, which is built when + // iorapd starts. If the version is not in the map, it tries the query + // the package manager via IPC, with a cost of ~0.6ms. + // + // If no version can be found for some reason, return -1, + // because when an app has no version the package manager returns -1. + std::optional<int64_t> GetOrQueryPackageVersion( + const std::string& package_name); + + private: + std::shared_ptr<PackageManagerRemote> package_manager_; + std::optional<VersionMap> version_map_; + std::mutex mutex_; +}; +} // namespace iorap::binder + +#endif // IORAP_SRC_PACKAGE_MANAGER_REMOTE_H_ diff --git a/src/common/async_pool.h b/src/common/async_pool.h new file mode 100644 index 0000000..51cd38c --- /dev/null +++ b/src/common/async_pool.h @@ -0,0 +1,91 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_COMMON_ASYNC_POOL_H_ +#define IORAP_SRC_COMMON_ASYNC_POOL_H_ + +#include <atomic> +#include <vector> +#include <deque> +#include <future> + +#include <condition_variable> +#include <future> + +namespace iorap::common { + +class AsyncPool { + std::atomic<bool> shutting_down_{false}; + std::deque<std::future<void>> futures_; + + std::mutex mutex_; + std::condition_variable cond_var_; + + public: + + // Any threads calling 'Join' should eventually unblock + // once all functors have run to completition. + void Shutdown() { + shutting_down_ = true; + + cond_var_.notify_all(); + } + + // Block forever until Shutdown is called *and* all + // functors passed to 'LaunchAsync' have run to completition. + void Join() { + std::unique_lock<std::mutex> lock(mutex_); + while (true) { + // Pop all items eagerly + while (true) { + auto it = futures_.begin(); + if (it == futures_.end()) { + break; + } + + std::future<void> future = std::move(*it); + futures_.pop_front(); + + lock.unlock(); // do not stall callers of LaunchAsync + future.get(); + lock.lock(); + } + + if (shutting_down_) { + break; + } + + // Wait until we either get more items or ask to be shutdown. + cond_var_.wait(lock); + } + } + + // Execute the functor 'u' in a new thread asynchronously. + // Using this spawns a new thread each time to immediately begin + // async execution. + template <typename T> + void LaunchAsync(T&& u) { + auto future = std::async(std::launch::async, std::forward<T>(u)); + + { + std::unique_lock<std::mutex> lock(mutex_); + futures_.push_back(std::move(future)); + } + cond_var_.notify_one(); + } +}; + +} // namespace iorap::common + +#endif // IORAP_SRC_COMMON_ASYNC_POOL_H_ diff --git a/src/common/cmd_utils.h b/src/common/cmd_utils.h new file mode 100644 index 0000000..4494119 --- /dev/null +++ b/src/common/cmd_utils.h @@ -0,0 +1,170 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_COMMON_CMD_UTILS_H_ +#define IORAP_SRC_COMMON_CMD_UTILS_H_ + +#include <android-base/parsebool.h> +#include <android-base/properties.h> + +#include <iostream> +#include <sstream> +#include <optional> +#include <vector> + +namespace iorap::common { +// Create execve-compatible argv. +// The lifetime is tied to that of vector. +inline std::unique_ptr<const char*[]> VecToArgv(const char* program_name, + const std::vector<std::string>& vector) { + // include program name in argv[0] + // include a NULL sentinel in the end. + std::unique_ptr<const char*[]> ptr{new const char*[vector.size() + 2]}; + + // program name + ptr[0] = program_name; + + // all the argv + for (size_t i = 0; i < vector.size(); ++i) { + ptr[i+1] = vector[i].c_str(); + } + + // null sentinel + ptr[vector.size() + 1] = nullptr; + + return ptr; +} + +// Appends an args to the argv. +template <class T> +void AppendArgs(std::vector<std::string>& argv, + const T& value) { + std::stringstream ss; + ss << value; + argv.push_back(ss.str()); +} + +// Appends an args to the argv. +template <class T, class T2> +void AppendArgs(std::vector<std::string>& argv, + const T& value, + const T2& value2) { + AppendArgs(argv, value); + AppendArgs(argv, value2); +} + +// Appends a named argument to the argv. +// +// For example if <name> is "--property" and <value> is int(200): +// the string "--property=200" is appended to the argv. +template <class T, class T2> +void AppendNamedArg(std::vector<std::string>& argv, + const T& name, + const T2& value) { + std::stringstream ss; + ss << name; + ss << "="; + ss << value; + + argv.push_back(ss.str()); +} + +// Appends args from a vector to the argv repeatedly to argv. +// +// For example, if <args> is "--timestamp" and <values> is [100, 200]. +// The "--timestamp 100" and "--timestamp 200" are appended. +template <class T> +void AppendArgsRepeatedly(std::vector<std::string>& argv, + std::string args, + const std::vector<T>& values) { + for (const T& v : values) { + AppendArgs(argv, args, v); + } +} + +// Appends args from a vector to the argv repeatedly to argv. +// +// For example, if values is [input1.pb, input2.pb], +// then the "input1.pb" and "input2.pb" are appended. +template <class T> +void AppendArgsRepeatedly(std::vector<std::string>& argv, + const std::vector<T>& values) { + for (const T& v : values) { + AppendArgs(argv, v); + } +} + +// Appends a named argument to the argv repeatedly with different values. +// +// For example if <name> is "--property" and <value> is [int(200), int(400)]: +// the strings "--property=200" and "--property=400" are both appended to the argv. +template <class T, class T2> +void AppendNamedArgRepeatedly(std::vector<std::string>& argv, + const T& name, + const std::vector<T2>& values) { + for (const T2& v :values) { + AppendNamedArg(argv, name, v); + } +} + +// Get the value of the property. +// Firstly, try to find the environment variable. If it does not exist, +// try to get the property. If neither, use the default value.. +// +// For example, for prop foo.bar.baz, it will first check for +// FOO_BAR_BAZ environment variable. +inline std::string GetEnvOrProperty(const std::string& prop, const std::string& default_val) { + std::string env_str = prop; + // a.b.c -> a_b_c + std::replace(env_str.begin(), env_str.end(), '.', '_'); + // a_b_c -> A_B_C + std::transform(env_str.begin(), env_str.end(), env_str.begin(), ::toupper); + char *env = getenv(env_str.c_str()); + if (env) { + return std::string(env); + } + return ::android::base::GetProperty(prop, default_val); +} + +// Get the boolean value of the property. +// Firstly, try to find the environment variable. If it does not exist, +// try to get the property. If neither, use the default value.. +// +// For example, for prop foo.bar.baz, it will first check for +// FOO_BAR_BAZ environment variable. +inline bool GetBoolEnvOrProperty(const std::string& prop, bool default_val) { + std::string env_str = prop; + // a.b.c -> a_b_c + std::replace(env_str.begin(), env_str.end(), '.', '_'); + // a_b_c -> A_B_C + std::transform(env_str.begin(), env_str.end(), env_str.begin(), ::toupper); + char *env = getenv(env_str.c_str()); + if (env) { + using ::android::base::ParseBoolResult; + + switch (::android::base::ParseBool(env)) { + case ParseBoolResult::kError: + break; + case ParseBoolResult::kFalse: + return false; + case ParseBoolResult::kTrue: + return true; + } + } + return ::android::base::GetBoolProperty(prop, default_val); +} + +} // namespace iorap::common + +#endif // IORAP_SRC_COMMON_CMD_UTILS_H_ diff --git a/src/common/expected.h b/src/common/expected.h index 3d8eef7..c58e63f 100644 --- a/src/common/expected.h +++ b/src/common/expected.h @@ -292,7 +292,13 @@ struct expected { return data_.value(); } - // TODO: arrow operator? + constexpr const T* _Nonnull operator->() const { + return &data_.value(); + } + + constexpr T* _Nonnull operator->() { + return &data_.value(); + } constexpr T& value() & { CHECK(has_value()); diff --git a/src/common/loggers.h b/src/common/loggers.h new file mode 100644 index 0000000..1dbb2dc --- /dev/null +++ b/src/common/loggers.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2019 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. + */ + +#ifndef IORAP_SRC_COMMON_LOGGERS +#define IORAP_SRC_COMMON_LOGGERS + +#include <android-base/logging.h> + +namespace iorap { +namespace common { + +// Log to both Stderr and Logd for convenience when running this from the command line. +class StderrAndLogdLogger { + public: + explicit StderrAndLogdLogger(android::base::LogId default_log_id = android::base::MAIN) +#ifdef __ANDROID__ + : logd_(default_log_id) +#endif + { + } + + void operator()(::android::base::LogId id, + ::android::base::LogSeverity sev, + const char* tag, + const char* file, + unsigned int line, + const char* message) { +#ifdef __ANDROID__ + logd_(id, sev, tag, file, line, message); +#endif + StderrLogger(id, sev, tag, file, line, message); + } + + private: +#ifdef __ANDROID__ + ::android::base::LogdLogger logd_; +#endif +}; + +} // namespace iorap +} // namespace common + +#endif diff --git a/src/common/printer.h b/src/common/printer.h new file mode 100644 index 0000000..272e459 --- /dev/null +++ b/src/common/printer.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2020 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. + */ + +#ifndef IORAP_UTILS_PRINTER_H_ +#define IORAP_UTILS_PRINTER_H_ + +#include <utils/Printer.h> + +#include <string.h> + +namespace iorap::common { + +class StderrLogPrinter : public ::android::Printer { +public: + // Create a printer using the specified logcat and log priority + // - Unless ignoreBlankLines is false, print blank lines to logcat + // (Note that the default ALOG behavior is to ignore blank lines) + StderrLogPrinter(const char* logtag, + android_LogPriority priority = ANDROID_LOG_DEBUG, + const char* prefix = nullptr, + bool ignore_blank_lines = false) + : log_printer_{logtag, priority, prefix, ignore_blank_lines} { + logtag_ = logtag; + prefix_ = prefix; + ignore_blank_lines_ = ignore_blank_lines; + } + + // Print the specified line to logcat. No \n at the end is necessary. + virtual void printLine(const char* string) override { + if (ignore_blank_lines_ && strlen(string) == 0) { + return; + } + std::cerr << logtag_ << ": "; + if (prefix_ != nullptr) { + std::cerr << prefix_; + } + std::cerr << string << std::endl; + log_printer_.printLine(string); + } + private: + ::android::LogPrinter log_printer_; + const char* logtag_; + const char* prefix_; + bool ignore_blank_lines_; +}; + +} // namespace iorap::common + +#endif // IORAP_UTILS_PRINTER_H_ diff --git a/src/common/rx_async.h b/src/common/rx_async.h new file mode 100644 index 0000000..d16f5ae --- /dev/null +++ b/src/common/rx_async.h @@ -0,0 +1,77 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_COMMON_RX_ASYNC_H_ +#define IORAP_SRC_COMMON_RX_ASYNC_H_ + +#include "common/async_pool.h" + +#include <rxcpp/rx.hpp> + +namespace iorap::common { + +// Helper functions to operate with rx chains asynchronously. +class RxAsync { + public: + // Subscribe to the observable on a new thread asynchronously. + // If no observe_on/subscribe_on is used, the chain will execute + // on that new thread. + // + // Returns the composite_subscription which can be used to + // unsubscribe from if we want to abort the chain early. + template <typename T, typename U> + static rxcpp::composite_subscription SubscribeAsync( + AsyncPool& async_pool, + T&& observable, + U&& subscriber) { + rxcpp::composite_subscription subscription; + + async_pool.LaunchAsync([subscription, // safe copy: ref-counted + observable=std::forward<T>(observable), + subscriber=std::forward<U>(subscriber)]() mutable { + observable + .as_blocking() + .subscribe(subscription, + std::forward<decltype(subscriber)>(subscriber)); + }); + + return subscription; + } + + template <typename T, typename U, typename E> + static rxcpp::composite_subscription SubscribeAsync( + AsyncPool& async_pool, + T&& observable, + U&& on_next, + E&& on_error) { + rxcpp::composite_subscription subscription; + + async_pool.LaunchAsync([subscription, // safe copy: ref-counted + observable=std::forward<T>(observable), + on_next=std::forward<U>(on_next), + on_error=std::forward<E>(on_error)]() mutable { + observable + .as_blocking() + .subscribe(subscription, + std::forward<decltype(on_next)>(on_next), + std::forward<decltype(on_error)>(on_error)); + }); + + return subscription; + } +}; + +} // namespace iorap::common + +#endif // IORAP_SRC_COMMON_RX_ASYNC_H_ diff --git a/src/common/trace.h b/src/common/trace.h new file mode 100644 index 0000000..a07d7bc --- /dev/null +++ b/src/common/trace.h @@ -0,0 +1,48 @@ +// Copyright (C) 2020 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. + +#ifndef IORAP_COMMON_TRACE_H_ +#define IORAP_COMMON_TRACE_H_ + +#include <cutils/trace.h> + +#include <cstdio> +#include <sstream> + +namespace iorap { + +// TODO: refactor into utils/Trace.h + +class ScopedFormatTrace { + public: + template <typename ... Args> + ScopedFormatTrace(uint64_t tag, const char* fmt, Args&&... args) : tag_{tag} { + char buffer[1024]; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-security" + snprintf(buffer, sizeof(buffer), fmt, args...); +#pragma GCC diagnostic pop + atrace_begin(tag, buffer); + } + + ~ScopedFormatTrace() { + atrace_end(tag_); + } + private: + uint64_t tag_; +}; + +} // namespace iorap + +#endif // IORAP_COMMON_TRACE_H_ diff --git a/src/compiler/compiler.cc b/src/compiler/compiler.cc new file mode 100644 index 0000000..7d0e624 --- /dev/null +++ b/src/compiler/compiler.cc @@ -0,0 +1,949 @@ +// Copyright (C) 2019 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. + +#include "compiler/compiler.h" + +#include "common/debug.h" +#include "common/expected.h" + +#include "perfetto/rx_producer.h" // TODO: refactor BinaryWireProtobuf to separate header. +#include "inode2filename/inode.h" +#include "inode2filename/search_directories.h" +#include "serialize/protobuf_io.h" + +#include <android-base/unique_fd.h> +#include <android-base/parseint.h> +#include <android-base/file.h> + +#include <perfetto/trace/trace.pb.h> // ::perfetto::protos::Trace +#include <perfetto/trace/trace_packet.pb.h> // ::perfetto::protos::TracePacket + +#include "rxcpp/rx.hpp" +#include <iostream> +#include <fstream> +#include <optional> +#include <utility> +#include <regex> + +#include <sched.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <syscall.h> +#include <fcntl.h> +#include <unistd.h> + +namespace iorap::compiler { + +using Inode = iorap::inode2filename::Inode; +using InodeResult = iorap::inode2filename::InodeResult; +using SearchDirectories = iorap::inode2filename::SearchDirectories; + +template <typename T> +using ProtobufPtr = iorap::perfetto::ProtobufPtr<T>; + +struct PerfettoTraceProtoInfo { + /* The perfetto trace proto. */ + ::iorap::perfetto::PerfettoTraceProto proto; + /* + * The timestamp limit of the trace. + * It's used to truncate the trace file. + */ + uint64_t timestamp_limit_ns; +}; + +struct PerfettoTracePtrInfo { + /* Deserialized protobuf data containing the perfetto trace. */ + ProtobufPtr<::perfetto::protos::Trace> trace_ptr; + /* + * The timestamp limit of the trace. + * It's used to truncate the trace file. + */ + uint64_t timestamp_limit_ns; +}; + +// Attempt to read protobufs from the filenames. +// Emits one (or none) protobuf for each filename, in the same order as the filenames. +// On any errors, the items are dropped (errors are written to the error LOG). +// +// All work is done on the same Coordinator as the Subscriber. +template <typename ProtoT /*extends MessageLite*/> +auto/*observable<PerfettoTracePtrInfo>*/ ReadProtosFromFileNames( + rxcpp::observable<CompilationInput> file_infos) { + using BinaryWireProtoT = ::iorap::perfetto::PerfettoTraceProto; + + return file_infos + .map([](const CompilationInput& file_info) -> + std::optional<PerfettoTraceProtoInfo> { + LOG(VERBOSE) << "compiler::ReadProtosFromFileNames " << file_info.filename + << " TimeStampLimit "<< file_info.timestamp_limit_ns << " [begin]"; + std::optional<BinaryWireProtoT> maybe_proto = + BinaryWireProtoT::ReadFullyFromFile(file_info.filename); + if (!maybe_proto) { + LOG(ERROR) << "Failed to read file: " << file_info.filename; + return std::nullopt; + } + return {{std::move(maybe_proto.value()), file_info.timestamp_limit_ns}}; + }) + .filter([](const std::optional<PerfettoTraceProtoInfo>& proto_info) { + return proto_info.has_value(); + }) + .map([](std::optional<PerfettoTraceProtoInfo>& proto_info) -> + PerfettoTraceProtoInfo { + return proto_info.value(); + }) // TODO: refactor to something that flattens the optional, and logs in one operator. + .map([](PerfettoTraceProtoInfo& proto_info) -> + std::optional<PerfettoTracePtrInfo> { + std::optional<ProtobufPtr<ProtoT>> t = proto_info.proto.template MaybeUnserialize<ProtoT>(); + if (!t) { + LOG(ERROR) << "Failed to parse protobuf: "; // TODO: filename. + return std::nullopt; + } + return {{std::move(t.value()), proto_info.timestamp_limit_ns}}; + }) + .filter([](const std::optional<PerfettoTracePtrInfo>& trace_info) { + return trace_info.has_value(); + }) + .map([](std::optional<PerfettoTracePtrInfo>& trace_info) -> + PerfettoTracePtrInfo { + LOG(VERBOSE) << "compiler::ReadProtosFromFileNames [success]"; + return trace_info.value(); + // TODO: protobufs have no move constructor. this might be inefficient? + }); + +/* + return filenames + .map([](const std::string& filename) { + LOG(VERBOSE) << "compiler::ReadProtosFromFileNames " << filename << " [begin]"; + std::optional<BinaryWireProtoT> maybe_proto = + BinaryWireProtoT::ReadFullyFromFile(filename); + if (!maybe_proto) { + LOG(ERROR) << "Failed to read file: " << filename; + } + + std::unique_ptr<BinaryWireProtoT> ptr; + if (maybe_proto) { + ptr.reset(new BinaryWireProtoT{std::move(*maybe_proto)}); + } + return ptr; + }) + .filter([](const std::unique_ptr<BinaryWireProtoT>& proto) { + return proto != nullptr; + }) + .map([](std::unique_ptr<BinaryWireProtoT>& proto) { + std::optional<ProtoT> t = proto->template MaybeUnserialize<ProtoT>(); + if (!t) { + LOG(ERROR) << "Failed to parse protobuf: "; // TODO: filename. + } + return t; + }) + .filter([](const std::optional<ProtoT>& proto) { + return proto.has_value(); + }) + .map([](std::optional<ProtoT> proto) -> ProtoT { + LOG(VERBOSE) << "compiler::ReadProtosFromFileNames [success]"; + return std::move(proto.value()); + // TODO: protobufs have no move constructor. this might be inefficient? + }); + */ +} + +auto/*observable<PerfettoTracePtrInfo>*/ ReadPerfettoTraceProtos( + std::vector<CompilationInput> file_infos) { + auto filename_obs = rxcpp::observable<>::iterate(std::move(file_infos)); + rxcpp::observable<PerfettoTracePtrInfo> obs = + ReadProtosFromFileNames<::perfetto::protos::Trace>(std::move(filename_obs)); + return obs; +} + +// A flattened data representation of an MmFileMap*FtraceEvent. +// This representation is used for streaming processing. +// +// Note: Perfetto applies a 'union' over all possible fields on all possible devices +// (and uses the max sizeof per-field). +// +// Since all protobuf fields are optional, fields not present on a particular device are always +// null +struct PageCacheFtraceEvent { + /* + * Ftrace buffer-specific + */ + uint32_t cpu; // e.g. 0-7 for the cpu core number. + + /* + * Ftrace-event general data + */ + + // Nanoseconds since an epoch. + // Epoch is configurable by writing into trace_clock. + // By default this timestamp is CPU local. + uint64_t timestamp; + // Kernel pid (do not confuse with userspace pid aka tgid) + uint32_t pid; + + // Tagged by our code while parsing the ftraces: + uint64_t timestamp_relative; // timestamp relative to first ftrace within a Trace protobuf. + bool add_to_page_cache; // AddToPageCache=true, DeleteFromPageCache=false. + + /* + * mm_filemap-specific data + * + * Fields are common: + * - MmFilemapAddToPageCacheFtraceEvent + * - MmFilemapDeleteFromPageCacheFtraceEvent + */ + uint64_t pfn; // page frame number (physical) - null on some devices, e.g. marlin + uint64_t i_ino; // inode number (use in conjunction with s_dev) + uint64_t index; // offset into file: this is a multiple of the page size (usually 4096). + uint64_t s_dev; // (dev_t) device number + uint64_t page; // struct page*. - null on some devices, e.g. blueline. + + Inode inode() const { + return Inode::FromDeviceAndInode(static_cast<dev_t>(s_dev), + static_cast<ino_t>(i_ino)); + } +}; + +std::ostream& operator<<(std::ostream& os, const PageCacheFtraceEvent& e) { + os << "{"; + os << "cpu:" << e.cpu << ","; + os << "timestamp:" << e.timestamp << ","; + os << "pid:" << e.pid << ","; + os << "timestamp_relative:" << e.timestamp_relative << ","; + os << "add_to_page_cache:" << e.add_to_page_cache << ","; + os << "pfn:" << e.pfn << ","; + os << "i_ino:" << e.i_ino << ","; + os << "index:" << e.index << ","; + os << "s_dev:" << e.s_dev << ","; + os << "page:" << e.page; + os << "}"; + + return os; +} + +/* + * Gets the start timestamp. + * + * It is the minimium timestamp. + */ +std::optional<uint64_t> GetStartTimestamp(const ::perfetto::protos::Trace& trace) { + std::optional<uint64_t> timestamp_relative_start; + // Traverse each timestamp to get the minimium one. + for (const ::perfetto::protos::TracePacket& packet : trace.packet()) { + if (packet.has_timestamp()) { + timestamp_relative_start = timestamp_relative_start? + std::min(*timestamp_relative_start, packet.timestamp()) : packet.timestamp(); + } + if (!packet.has_ftrace_events()) { + continue; + } + const ::perfetto::protos::FtraceEventBundle& ftrace_event_bundle = + packet.ftrace_events(); + for (const ::perfetto::protos::FtraceEvent& event : ftrace_event_bundle.event()) { + if (event.has_timestamp()) { + timestamp_relative_start = timestamp_relative_start? + std::min(*timestamp_relative_start, event.timestamp()) : event.timestamp(); + } + } + } + return timestamp_relative_start; +} + +/* + * sample blueline output: + * + * $ adb shell cat /d/tracing/events/filemap/mm_filemap_add_to_page_cache/format + * + * name: mm_filemap_add_to_page_cache + * ID: 178 + * format: + * field:unsigned short common_type; offset:0; size:2; signed:0; + * field:unsigned char common_flags; offset:2; size:1; signed:0; + * field:unsigned char common_preempt_count; offset:3; size:1; signed:0; + * field:int common_pid; offset:4; size:4; signed:1; + * + * field:unsigned long pfn; offset:8; size:8; signed:0; + * field:unsigned long i_ino; offset:16; size:8; signed:0; + * field:unsigned long index; offset:24; size:8; signed:0; + * field:dev_t s_dev; offset:32; size:4; signed:0; + * + * print fmt: "dev %d:%d ino %lx page=%p pfn=%lu ofs=%lu", ((unsigned int) ((REC->s_dev) >> 20)), + * ((unsigned int) ((REC->s_dev) & ((1U << 20) - 1))), REC->i_ino, + * (((struct page *)(((0xffffffffffffffffUL) - ((1UL) << ((39) - 1)) + 1) - + * ((1UL) << ((39) - 12 - 1 + 6))) - (memstart_addr >> 12)) + (REC->pfn)), + * REC->pfn, REC->index << 12 + */ + +auto /*observable<PageCacheFtraceEvent>*/ SelectPageCacheFtraceEvents( + PerfettoTracePtrInfo trace_info) { + const ::perfetto::protos::Trace& trace = *(trace_info.trace_ptr); + + constexpr bool kDebugFunction = true; + + return rxcpp::observable<>::create<PageCacheFtraceEvent>( + [trace=std::move(trace), timestamp_limit_ns=trace_info.timestamp_limit_ns] + (rxcpp::subscriber<PageCacheFtraceEvent> sub) { + uint64_t timestamp = 0; + uint64_t timestamp_relative = 0; + + std::optional<uint64_t> timestamp_relative_start = GetStartTimestamp(trace); + uint32_t cpu = 0; + uint32_t pid = 0; + bool add_to_page_cache = true; + + auto on_next_page_cache_event = [&](const auto& mm_event) { + PageCacheFtraceEvent out; + out.timestamp = timestamp; + out.cpu = cpu; + out.pid = pid; + + out.timestamp_relative = timestamp_relative; + out.add_to_page_cache = add_to_page_cache; + + out.pfn = mm_event.pfn(); + out.i_ino = mm_event.i_ino(); + out.index = mm_event.index(); + out.s_dev = mm_event.s_dev(); + out.page = mm_event.page(); + + sub.on_next(std::move(out)); + }; + + for (const ::perfetto::protos::TracePacket& packet : trace.packet()) { + // Break out of all loops if we are unsubscribed. + if (!sub.is_subscribed()) { + if (kDebugFunction) LOG(VERBOSE) << "compiler::SelectPageCacheFtraceEvents unsubscribe"; + return; + } + + if (kDebugFunction) LOG(VERBOSE) << "compiler::SelectPageCacheFtraceEvents TracePacket"; + + if (packet.has_timestamp()) { + timestamp_relative_start = timestamp_relative_start.value_or(packet.timestamp()); + timestamp = packet.timestamp(); // XX: should we call 'has_timestamp()' ? + } else { + timestamp = 0; + } + + if (packet.has_ftrace_events()) { + const ::perfetto::protos::FtraceEventBundle& ftrace_event_bundle = + packet.ftrace_events(); + + cpu = ftrace_event_bundle.cpu(); // XX: has_cpu ? + + for (const ::perfetto::protos::FtraceEvent& event : ftrace_event_bundle.event()) { + // Break out of all loops if we are unsubscribed. + if (!sub.is_subscribed()) { + return; + } + + if (event.has_timestamp()) { + timestamp = event.timestamp(); + if(timestamp > timestamp_limit_ns) { + LOG(VERBOSE) << "The timestamp is " << timestamp << + ", which exceeds the limit "<< timestamp_limit_ns; + continue; + } + } else { + DCHECK(packet.has_timestamp() == false) + << "Timestamp in outer packet but not inner packet"; + // XX: use timestamp from the perfetto TracePacket ??? + // REVIEWERS: not sure if this is ok, does it use the same clock source and + // is the packet data going to be the same clock sample as the Ftrace event? + } + + if (timestamp_relative_start){ + timestamp_relative = timestamp - *timestamp_relative_start; + } else { + timestamp_relative = 0; + } + + pid = event.pid(); // XX: has_pid ? + + if (event.has_mm_filemap_add_to_page_cache()) { + add_to_page_cache = true; + + const ::perfetto::protos::MmFilemapAddToPageCacheFtraceEvent& mm_event = + event.mm_filemap_add_to_page_cache(); + + on_next_page_cache_event(mm_event); + } else if (event.has_mm_filemap_delete_from_page_cache()) { + add_to_page_cache = false; + + const ::perfetto::protos::MmFilemapDeleteFromPageCacheFtraceEvent& mm_event = + event.mm_filemap_delete_from_page_cache(); + + on_next_page_cache_event(mm_event); + } + } + } else { + if (kDebugFunction) { + LOG(VERBOSE) << "compiler::SelectPageCacheFtraceEvents no ftrace event bundle"; + } + } + } + + if (kDebugFunction) { + LOG(VERBOSE) << "compiler::SelectPageCacheFtraceEvents#on_completed"; + } + + // Let subscriber know there are no more items. + sub.on_completed(); + }); +} + +auto /*observable<Inode*/ SelectDistinctInodesFromTraces( + rxcpp::observable<PerfettoTracePtrInfo> traces) { + // Emit only unique (s_dev, i_ino) pairs from all Trace protos. + auto obs = traces + .flat_map([](PerfettoTracePtrInfo trace) { + rxcpp::observable<PageCacheFtraceEvent> obs = SelectPageCacheFtraceEvents(std::move(trace)); + // FIXME: dont check this in + // return obs; + //return obs.take(100); // for faster development + return obs; + }) // TODO: Upstream bug? using []()::perfetto::protos::Trace&) causes a compilation error. + .map([](const PageCacheFtraceEvent& event) -> Inode { + return Inode::FromDeviceAndInode(static_cast<dev_t>(event.s_dev), + static_cast<ino_t>(event.i_ino)); + }) + .tap([](const Inode& inode) { + LOG(VERBOSE) << "SelectDistinctInodesFromTraces (pre-distinct): " << inode; + }) + .distinct() // observable<Inode>*/ + ; + + return obs; +} +// TODO: static assert checks for convertible return values. + +auto/*observable<InodeResult>*/ ResolveInodesToFileNames( + rxcpp::observable<Inode> inodes, + inode2filename::InodeResolverDependencies dependencies) { + std::shared_ptr<inode2filename::InodeResolver> inode_resolver = + inode2filename::InodeResolver::Create(std::move(dependencies)); + return inode_resolver->FindFilenamesFromInodes(std::move(inodes)); +} + +using InodeMap = std::unordered_map<Inode, std::string /*filename*/>; +auto /*just observable<InodeMap>*/ ReduceResolvedInodesToMap( + rxcpp::observable<InodeResult> inode_results) { + return inode_results.reduce( + InodeMap{}, + [](InodeMap m, InodeResult result) { + if (result) { + LOG(VERBOSE) << "compiler::ReduceResolvedInodesToMap insert " << result; + m.insert({std::move(result.inode), std::move(result.data.value())}); + } else { + // TODO: side stats for how many of these are failed to resolve? + LOG(WARNING) << "compiler: Failed to resolve inode, " << result; + } + return m; + }, + [](InodeMap m) { + return m; // TODO: use an identity function + }); // emits exactly 1 InodeMap value. +} + +struct ResolvedPageCacheFtraceEvent { + std::string filename; + PageCacheFtraceEvent event; +}; + +std::ostream& operator<<(std::ostream& os, const ResolvedPageCacheFtraceEvent& e) { + os << "{"; + os << "filename:\"" << e.filename << "\","; + os << e.event; + os << "}"; + + return os; +} + +struct CombinedState { + CombinedState() = default; + explicit CombinedState(InodeMap inode_map) : inode_map{std::move(inode_map)} {} + explicit CombinedState(PageCacheFtraceEvent event) : ftrace_event{std::move(event)} {} + + CombinedState(InodeMap inode_map, PageCacheFtraceEvent event) + : inode_map(std::move(inode_map)), + ftrace_event{std::move(event)} {} + + std::optional<InodeMap> inode_map; + std::optional<PageCacheFtraceEvent> ftrace_event; + + bool HasAll() const { + return inode_map.has_value() && ftrace_event.has_value(); + } + + const InodeMap& GetInodeMap() const { + DCHECK(HasAll()); + return inode_map.value(); + } + + InodeMap& GetInodeMap() { + DCHECK(HasAll()); + return inode_map.value(); + } + + const PageCacheFtraceEvent& GetEvent() const { + DCHECK(HasAll()); + return ftrace_event.value(); + } + + PageCacheFtraceEvent& GetEvent() { + DCHECK(HasAll()); + return ftrace_event.value(); + } + + void Merge(CombinedState&& other) { + if (other.inode_map) { + inode_map = std::move(other.inode_map); + } + if (other.ftrace_event) { + ftrace_event = std::move(other.ftrace_event); + } + } +}; + +std::ostream& operator<<(std::ostream& os, const CombinedState& s) { + os << "CombinedState{inode_map:"; + if (s.inode_map) { + os << "|sz=" << (s.inode_map.value().size()) << "|"; + } else { + os << "(null)"; + } + os << ",event:"; + if (s.ftrace_event) { + //os << s.ftrace_event.value().timestamp << "ns"; + os << s.ftrace_event.value(); + } else { + os << "(null)"; + } + os << "}"; + return os; +} + +auto/*observable<ResolvedPageCacheFtraceEvent>*/ ResolvePageCacheEntriesFromProtos( + rxcpp::observable<PerfettoTracePtrInfo> traces, + inode2filename::InodeResolverDependencies dependencies) { + + // 1st chain = emits exactly 1 InodeMap. + + // [proto, proto, proto...] -> [inode, inode, inode, ...] + auto/*observable<Inode>*/ distinct_inodes = SelectDistinctInodesFromTraces(traces); + rxcpp::observable<Inode> distinct_inodes_obs = distinct_inodes.as_dynamic(); + // [inode, inode, inode, ...] -> [(inode, {filename|error}), ...] + auto/*observable<InodeResult>*/ inode_names = ResolveInodesToFileNames(distinct_inodes_obs, + std::move(dependencies)); + // rxcpp has no 'join' operators, so do a manual join with concat. + auto/*observable<InodeMap>*/ inode_name_map = ReduceResolvedInodesToMap(inode_names); + + // 2nd chain = emits all PageCacheFtraceEvent + auto/*observable<PageCacheFtraceEvent>*/ page_cache_ftrace_events = traces + .flat_map([](PerfettoTracePtrInfo trace) { + rxcpp::observable<PageCacheFtraceEvent> obs = SelectPageCacheFtraceEvents(std::move(trace)); + return obs; + }); + + auto inode_name_map_precombine = inode_name_map + .map([](InodeMap inode_map) { + LOG(VERBOSE) << "compiler::ResolvePageCacheEntriesFromProtos#inode_name_map_precombine "; + return CombinedState{std::move(inode_map)}; + }); + + auto page_cache_ftrace_events_precombine = page_cache_ftrace_events + .map([](PageCacheFtraceEvent event) { + LOG(VERBOSE) + << "compiler::ResolvePageCacheEntriesFromProtos#page_cache_ftrace_events_precombine " + << event; + return CombinedState{std::move(event)}; + }); + + // Combine 1st+2nd chain. + // + // concat subscribes to each observable, waiting until its completed, before subscribing + // to the next observable and waiting again. + // + // During all this, every #on_next is immediately forwarded to the downstream observables. + // In our case, we want to block until InodeNameMap is ready, and re-iterate all ftrace events. + auto/*observable<ResolvedPageCacheFtraceEvent>*/ resolved_events = inode_name_map_precombine + .concat(page_cache_ftrace_events_precombine) + .scan(CombinedState{}, + [](CombinedState current_state, CombinedState delta_state) { + LOG(VERBOSE) << "compiler::ResolvePageCacheEntriesFromProtos#scan " + << "current=" << current_state << "," + << "delta=" << delta_state; + // IT0 = (,) + (InodeMap,) + // IT1 = (InodeMap,) + (,Event) + // IT2..N = (InodeMap,Event1) + (,Event2) + current_state.Merge(std::move(delta_state)); + return current_state; + }) + .filter([](const CombinedState& state) { + return state.HasAll(); + }) + .map([](CombinedState& state) -> std::optional<ResolvedPageCacheFtraceEvent> { + PageCacheFtraceEvent& event = state.GetEvent(); + const InodeMap& inode_map = state.GetInodeMap(); + + auto it = inode_map.find(event.inode()); + if (it != inode_map.end()) { + std::string filename = it->second; + LOG(VERBOSE) << "compiler::ResolvePageCacheEntriesFromProtos combine_latest " << event; + return ResolvedPageCacheFtraceEvent{std::move(filename), std::move(event)}; + } else { + LOG(ERROR) << "compiler: FtraceEvent's inode did not have resolved filename: " << event; + return std::nullopt; + } + }) + .filter( + [](std::optional<ResolvedPageCacheFtraceEvent> maybe_event) { + return maybe_event.has_value(); + }) + .map([](std::optional<ResolvedPageCacheFtraceEvent> maybe_event) { + return std::move(maybe_event.value()); + }); + // -> observable<ResolvedPageCacheFtraceEvent> + + return resolved_events; +} + +namespace detail { +bool multiless_one(const std::string& a, const std::string& b) { + return std::lexicographical_compare(a.begin(), a.end(), + b.begin(), b.end()); +} + +template <typename T> +constexpr bool multiless_one(T&& a, T&& b) { // a < b + using std::less; // ADL + return less<std::decay_t<T>>{}(std::forward<T>(a), std::forward<T>(b)); +} + +constexpr bool multiless() { + return false; // [] < [] is always false. +} + +template <typename T, typename ... Args> +constexpr bool multiless(T&& a, T&& b, Args&&... args) { + if (a != b) { + return multiless_one(std::forward<T>(a), std::forward<T>(b)); + } else { + return multiless(std::forward<Args>(args)...); + } +} + +} // namespace detail + +// Return [A0...An] < [B0...Bn] ; vector-like scalar comparison of each field. +// Arguments are passed in the order A0,B0,A1,B1,...,An,Bn. +template <typename ... Args> +constexpr bool multiless(Args&&... args) { + return detail::multiless(std::forward<Args>(args)...); +} + +struct CompilerPageCacheEvent { + std::string filename; + uint64_t timestamp_relative; // use relative timestamp because absolute values aren't comparable + // across different trace protos. + // relative timestamps can be said to be 'approximately' comparable. + // assuming we compare the same application startup's trace times. + bool add_to_page_cache; // AddToPageCache=true, DeleteFromPageCache=false. + uint64_t index; // offset into file: this is a multiple of the page size (usually 4096). + + // All other data from the ftrace is dropped because we don't currently use it in the + // compiler algorithms. + + CompilerPageCacheEvent() = default; + CompilerPageCacheEvent(const ResolvedPageCacheFtraceEvent& resolved) + : CompilerPageCacheEvent(resolved.filename, resolved.event) { + } + + CompilerPageCacheEvent(ResolvedPageCacheFtraceEvent&& resolved) + : CompilerPageCacheEvent(std::move(resolved.filename), std::move(resolved.event)) { + } + + // Compare all fields (except the timestamp field). + static bool LessIgnoringTimestamp(const CompilerPageCacheEvent& a, + const CompilerPageCacheEvent& b) { + return multiless(a.filename, b.filename, + a.add_to_page_cache, b.add_to_page_cache, + a.index, b.index); + } + + // Compare all fields. Timestamps get highest precedence. + bool operator<(const CompilerPageCacheEvent& rhs) const { + return multiless(timestamp_relative, rhs.timestamp_relative, + filename, rhs.filename, + add_to_page_cache, rhs.add_to_page_cache, + index, rhs.index); + } + + private: + CompilerPageCacheEvent(std::string filename, const PageCacheFtraceEvent& event) + : filename(std::move(filename)), + timestamp_relative(event.timestamp_relative), + add_to_page_cache(event.add_to_page_cache), + index(event.index) { + } +}; + +std::ostream& operator<<(std::ostream& os, const CompilerPageCacheEvent& e) { + os << "{"; + os << "filename:\"" << e.filename << "\","; + os << "timestamp:" << e.timestamp_relative << ","; + os << "add_to_page_cache:" << e.add_to_page_cache << ","; + os << "index:" << e.index; + os << "}"; + return os; +} + +// Filter an observable chain of 'ResolvedPageCacheFtraceEvent' +// into an observable chain of 'ResolvedPageCacheFtraceEvent'. +// +// Any items emitted by the input chain that match the regular expression +// specified by blacklist_filter are not emitted into the output chain. +auto/*observable<ResolvedPageCacheFtraceEvent>*/ ApplyBlacklistToPageCacheEvents( + rxcpp::observable<ResolvedPageCacheFtraceEvent> resolved_events, + std::optional<std::string> blacklist_filter) { + bool has_re = blacklist_filter.has_value(); + // default regex engine is ecmascript. + std::regex reg_exp{blacklist_filter ? *blacklist_filter : std::string("")}; + + return resolved_events.filter( + [reg_exp, has_re](const ResolvedPageCacheFtraceEvent& event) { + if (!has_re) { + return true; + } + // Remove any entries that match the regex in --blacklist-filter/-bf. + bool res = std::regex_search(event.filename, reg_exp); + if (res) { + LOG(VERBOSE) << "Blacklist filter removed '" << event.filename << "' from chain."; + } + return !res; + }); +} + +// Compile an observable chain of 'ResolvedPageCacheFtraceEvent' into +// an observable chain of distinct, timestamp-ordered, CompilerPageCacheEvent. +// +// This is a reducing operation: No items are emitted until resolved_events is completed. +auto/*observable<CompilerPageCacheEvent>*/ CompilePageCacheEvents( + rxcpp::observable<ResolvedPageCacheFtraceEvent> resolved_events) { + + struct CompilerPageCacheEventIgnoringTimestampLess { + bool operator()(const CompilerPageCacheEvent& lhs, + const CompilerPageCacheEvent& rhs) const { + return CompilerPageCacheEvent::LessIgnoringTimestamp(lhs, rhs); + } + }; + + // Greedy O(N) compilation algorithm. + // + // This produces an inoptimal result (e.g. a small timestamp + // that might occur only 1% of the time nevertheless wins out), but the + // algorithm itself is quite simple, and doesn't require any heuristic tuning. + + // First pass: *Merge* into set that ignores the timestamp value for order, but retains + // the smallest timestamp value if the same key is re-inserted. + using IgnoreTimestampForOrderingSet = + std::set<CompilerPageCacheEvent, CompilerPageCacheEventIgnoringTimestampLess>; + // Second pass: *Sort* data by smallest timestamp first. + using CompilerPageCacheEventSet = + std::set<CompilerPageCacheEvent>; + + return resolved_events + .map( + [](ResolvedPageCacheFtraceEvent event) { + // Drop all the extra metadata like pid, cpu, etc. + // When we merge we could keep a list of the original data, but there is no advantage + // to doing so. + return CompilerPageCacheEvent{std::move(event)}; + } + ) + .reduce( + IgnoreTimestampForOrderingSet{}, + [](IgnoreTimestampForOrderingSet set, CompilerPageCacheEvent event) { + // Add each event to the set, keying by everything but the timestamp. + // If the key is already inserted, re-insert with the smaller timestamp value. + auto it = set.find(event); + + if (it == set.end()) { + // Need to insert new element. + set.insert(std::move(event)); + } else if (it->timestamp_relative > event.timestamp_relative) { + // Replace existing element: the new element has a smaller timestamp. + it = set.erase(it); + // Amortized O(1) time if insertion happens in the position before the hint. + set.insert(it, std::move(event)); + } // else: Skip insertion. Element already present with the minimum timestamp. + + return set; + }, + [](IgnoreTimestampForOrderingSet set) { + // Extract all elements from 'set', re-insert into 'ts_set'. + // The values are now ordered by timestamp (and then the rest of the fields). + CompilerPageCacheEventSet ts_set; + ts_set.merge(std::move(set)); + + + std::shared_ptr<CompilerPageCacheEventSet> final_set{ + new CompilerPageCacheEventSet{std::move(ts_set)}}; + return final_set; + // return ts_set; + }) // observable<CompilerPageCacheEventSet> (just) + .flat_map( + [](std::shared_ptr<CompilerPageCacheEventSet> final_set) { + // TODO: flat_map seems to make a copy of the parameter _every single iteration_ + // without the shared_ptr it would just make a copy of the set every time it went + // through the iterate function. + // Causing absurdly slow compile times x1000 slower than we wanted. + // TODO: file a bug upstream and/or fix upstream. + CompilerPageCacheEventSet& ts_set = *final_set; + // [](CompilerPageCacheEventSet& ts_set) { + LOG(DEBUG) << "compiler: Merge-pass completed (" << ts_set.size() << " entries)."; + //return rxcpp::sources::iterate(std::move(ts_set)); + return rxcpp::sources::iterate(ts_set).map([](CompilerPageCacheEvent e) { return e; }); + } + ); // observable<CompilerPageCacheEvent> +} + +/** Makes a vector of info that includes filename and timestamp limit. */ +std::vector<CompilationInput> MakeCompilationInputs( + std::vector<std::string> input_file_names, + std::vector<uint64_t> timestamp_limit_ns){ + // If the timestamp limit is empty, set the limit to max value + // for each trace file. + if (timestamp_limit_ns.empty()) { + for (size_t i = 0; i < input_file_names.size(); i++) { + timestamp_limit_ns.push_back(std::numeric_limits<uint64_t>::max()); + } + } + DCHECK_EQ(input_file_names.size(), timestamp_limit_ns.size()); + std::vector<CompilationInput> file_infos; + for (size_t i = 0; i < input_file_names.size(); i++) { + file_infos.push_back({input_file_names[i], timestamp_limit_ns[i]}); + } + return file_infos; +} + +bool PerformCompilation(std::vector<CompilationInput> perfetto_traces, + std::string output_file_name, + bool output_proto, + std::optional<std::string> blacklist_filter, + inode2filename::InodeResolverDependencies dependencies) { + auto trace_protos = ReadPerfettoTraceProtos(std::move(perfetto_traces)); + auto resolved_events = ResolvePageCacheEntriesFromProtos(std::move(trace_protos), + std::move(dependencies)); + auto filtered_events = + ApplyBlacklistToPageCacheEvents(std::move(resolved_events), blacklist_filter); + auto compiled_events = CompilePageCacheEvents(std::move(filtered_events)); + + std::ofstream ofs; + if (!output_file_name.empty()) { + + if (!output_proto) { + ofs.open(output_file_name); + + if (!ofs) { + LOG(ERROR) << "compiler: Failed to open output file for writing: " << output_file_name; + return false; + } + } + } + + auto trace_file_proto = serialize::ArenaPtr<serialize::proto::TraceFile>::Make(); + + // Fast lookup of filename -> FileIndex id. + std::unordered_map<std::string, int64_t /*file handle id*/> file_path_map; + int64_t file_handle_id = 0; + + int counter = 0; + compiled_events + // .as_blocking() + .tap([&](CompilerPageCacheEvent& event) { + if (!output_proto) { + return; + } + + if (!event.add_to_page_cache) { + // Skip DeleteFromPageCache events, they are only used for intermediate. + return; + } + + DCHECK(trace_file_proto->mutable_index() != nullptr); + serialize::proto::TraceFileIndex& index = *trace_file_proto->mutable_index(); + int64_t file_handle; + + // Add TraceFileIndexEntry if it doesn't exist. + + auto it = file_path_map.find(event.filename); + if (it == file_path_map.end()) { + file_handle = file_handle_id++; + file_path_map[event.filename] = file_handle; + + serialize::proto::TraceFileIndexEntry* entry = index.add_entries(); + DCHECK(entry != nullptr); + entry->set_id(file_handle); + entry->set_file_name(event.filename); + + if (kIsDebugBuild) { + int i = static_cast<int>(file_handle); + const serialize::proto::TraceFileIndexEntry& entry_ex = index.entries(i); + DCHECK_EQ(entry->id(), entry_ex.id()); + DCHECK_EQ(entry->file_name(), entry_ex.file_name()); + } + } else { + file_handle = it->second; + } + int kPageSize = 4096; // TODO: don't hardcode the page size. + + // Add TraceFileEntry. + DCHECK(trace_file_proto->mutable_list() != nullptr); + serialize::proto::TraceFileEntry* entry = trace_file_proto->mutable_list()->add_entries(); + DCHECK(entry != nullptr); + + entry->set_index_id(file_handle); + // Page index -> file offset in bytes. + entry->set_file_offset(static_cast<int64_t>(event.index) * kPageSize); + entry->set_file_length(kPageSize); + }) + .subscribe([&](CompilerPageCacheEvent event) { + if (!output_proto) { + if (output_file_name.empty()) { + LOG(INFO) << "CompilerPageCacheEvent" << event << std::endl; + } else { + ofs << event << "\n"; // TODO: write in proto format instead. + } + } + ++counter; + }); + + if (output_proto) { + LOG(DEBUG) << "compiler: WriteFully to begin into " << output_file_name; + ::google::protobuf::MessageLite& message = *trace_file_proto.get(); + if (auto res = serialize::ProtobufIO::WriteFully(message, output_file_name); !res) { + errno = res.error(); + PLOG(ERROR) << "compiler: Failed to write protobuf to file: " << output_file_name; + return false; + } else { + LOG(INFO) << "compiler: Wrote protobuf " << output_file_name; + } + } + + LOG(DEBUG) << "compiler: Compilation completed (" << counter << " events)."; + + return true; +} + +} // namespace iorap::compiler diff --git a/src/compiler/compiler.h b/src/compiler/compiler.h new file mode 100644 index 0000000..1fa9ff1 --- /dev/null +++ b/src/compiler/compiler.h @@ -0,0 +1,65 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_COMPILER_COMPILER_H_ +#define IORAP_SRC_COMPILER_COMPILER_H_ + +#include "inode2filename/inode_resolver.h" + +#include <optional> +#include <string> +#include <vector> + +namespace iorap::compiler { +struct CompilationInput { + /* The name of the perfetto trace. */ + std::string filename; + /* + * The timestamp limit of the trace. + * It's used to truncate the trace file. + */ + uint64_t timestamp_limit_ns; +}; + +// Compile one or more perfetto TracePacket protobufs that are stored on the filesystem +// by the filenames given with `input_file_names` and timestamp limit given with +// timestamp_limit_ns. +// +// For each input file name and timestamp limit, ignore any events from the input that +// exceed the associated timestamp limit. +// +// If blacklist_filter is non-null, ignore any file entries whose file path matches the +// regular expression in blacklist_filter. +// +// The result is stored into the file path specified by `output_file_name`. +// +// This is a blocking function which returns only when compilation finishes. The return value +// determines success/failure. +// +// Operation is transactional -- that is if there is a failure, `output_file_name` is untouched. +bool PerformCompilation(std::vector<iorap::compiler::CompilationInput> perfetto_traces, + std::string output_file_name, + bool output_proto, + std::optional<std::string> blacklist_filter, + inode2filename::InodeResolverDependencies dependencies); + +// The size and order of timestamp_limit_ns should match that of +// input_file_names, if not empty. +// If timestamp_limit_ns is empty, will use the max uint64_t. +std::vector<CompilationInput> MakeCompilationInputs( + std::vector<std::string> input_file_names, + std::vector<uint64_t> timestamp_limit_ns); +} + +#endif // IORAP_SRC_COMPILER_COMPILER_H_ diff --git a/src/compiler/main.cc b/src/compiler/main.cc new file mode 100644 index 0000000..1ecfaed --- /dev/null +++ b/src/compiler/main.cc @@ -0,0 +1,207 @@ +// Copyright (C) 2019 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. + +#include "common/cmd_utils.h" +#include "common/debug.h" +#include "compiler/compiler.h" +#include "inode2filename/inode_resolver.h" + +#include <android-base/parseint.h> +#include <android-base/logging.h> + +#include <iostream> +#include <limits> +#include <optional> +#include <string> + +#if defined(IORAP_COMPILER_MAIN) + +namespace iorap::compiler { + +void Usage(char** argv) { + std::cerr << "Usage: " << argv[0] << " [--output-proto=output.pb] input1.pb [input2.pb ...]" << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Request a compilation of multiple inputs (format: PerfettoTraceProto)." << std::endl; + std::cerr << " The result is a TraceFile, representing a merged compiled trace with inodes resolved." << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Optional flags:" << std::endl; + std::cerr << " --help,-h Print this Usage." << std::endl; + std::cerr << " --blacklist-filter,-bf Specify regex acting as a blacklist filter." << std::endl; + std::cerr << " Filepaths matching this regex are removed from the output file." << std::endl; + std::cerr << " --output-text,-ot Output ascii text instead of protobuf (default off)." << std::endl; + std::cerr << " --output-proto $,-op $ TraceFile tracebuffer output file (default stdout)." << std::endl; + std::cerr << " --inode-textcache $,-it $ Resolve inode->filename from textcache (disables diskscan)." << std::endl; + std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl; + std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl; + std::cerr << " --timestamp_limit_ns,-tl Set the limit timestamp in nanoseconds for the compiled trace. " + "The order and size of the timestamp should match that of " + "the input trace files. If not specified at all, All of" + "the timestamps are set to max."<< std::endl; + exit(1); +} + +int Main(int argc, char** argv) { + android::base::InitLogging(argv); + android::base::SetLogger(android::base::StderrLogger); + + bool wait_for_keystroke = false; + bool enable_verbose = false; + + std::optional<std::string> arg_blacklist_filter; + std::string arg_output_proto; + bool arg_output_text = false; + std::optional<std::string> arg_inode_textcache; + + std::vector<uint64_t> timestamp_limit_ns; + + if (argc == 1) { + // Need at least 1 input file to do anything. + Usage(argv); + } + + std::vector<std::string> arg_input_filenames; + + for (int arg = 1; arg < argc; ++arg) { + std::string argstr = argv[arg]; + bool has_arg_next = (arg+1)<argc; + std::string arg_next = has_arg_next ? argv[arg+1] : ""; + + if (argstr == "--help" || argstr == "-h") { + Usage(argv); + } else if (argstr == "--output-proto" || argstr == "-op") { + if (!has_arg_next) { + std::cerr << "Missing --output-proto <value>" << std::endl; + return 1; + } + arg_output_proto = arg_next; + ++arg; + } else if (argstr == "--output-text" || argstr == "-ot") { + arg_output_text = true; + } else if (argstr == "--inode-textcache" || argstr == "-it") { + if (!has_arg_next) { + std::cerr << "Missing --inode-textcache <value>" << std::endl; + return 1; + } + arg_inode_textcache = arg_next; + ++arg; + } else if (argstr == "--blacklist-filter" || argstr == "-bf") { + if (!has_arg_next) { + std::cerr << "Missing --blacklist-filter <value>" << std::endl; + return 1; + } + arg_blacklist_filter = arg_next; + ++arg; + } + else if (argstr == "--verbose" || argstr == "-v") { + enable_verbose = true; + } else if (argstr == "--wait" || argstr == "-w") { + wait_for_keystroke = true; + } else if (argstr == "--timestamp_limit_ns" || argstr == "-tl") { + if (!has_arg_next) { + std::cerr << "Missing --timestamp_limit_ns <value>" << std::endl; + return 1; + } + uint64_t timestamp; + if (!::android::base::ParseUint<uint64_t>(arg_next, ×tamp)) { + std::cerr << "Invalid --timestamp-limit-ns "<< arg_next << std::endl; + return 1; + } + timestamp_limit_ns.push_back(timestamp); + ++arg; + } else { + arg_input_filenames.push_back(argstr); + } + } + + if (!timestamp_limit_ns.empty() && + timestamp_limit_ns.size() != arg_input_filenames.size()) { + std::cerr << "The size of timestamp limits doesn't match the size of input files." + << std::endl; + return 1; + } + + if (enable_verbose) { + android::base::SetMinimumLogSeverity(android::base::VERBOSE); + + LOG(VERBOSE) << "Verbose check"; + LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild; + } else { + android::base::SetMinimumLogSeverity(android::base::DEBUG); + } + + // Useful to attach a debugger... + // 1) $> iorap.cmd.compiler -w <args> + // 2) $> gdbclient <pid> + if (wait_for_keystroke) { + LOG(INFO) << "Self pid: " << getpid(); + LOG(INFO) << "Press any key to continue..."; + std::cin >> wait_for_keystroke; + } + + auto system_call = std::make_unique<SystemCallImpl>(); + + using namespace inode2filename; + + InodeResolverDependencies ir_dependencies; + // Passed from command-line. + if (arg_inode_textcache) { + ir_dependencies.data_source = DataSourceKind::kTextCache; + ir_dependencies.text_cache_filename = arg_inode_textcache; + ir_dependencies.verify = VerifyKind::kNone; // required for determinism. + } else { + ir_dependencies.data_source = DataSourceKind::kDiskScan; + LOG(WARNING) << "--inode-textcache unspecified. " + << "Inodes will be resolved by scanning the disk, which makes compilation " + << "non-deterministic."; + } + // TODO: add command line. + ir_dependencies.root_directories.push_back("/system"); + ir_dependencies.root_directories.push_back("/apex"); + ir_dependencies.root_directories.push_back("/data"); + ir_dependencies.root_directories.push_back("/vendor"); + ir_dependencies.root_directories.push_back("/product"); + ir_dependencies.root_directories.push_back("/metadata"); + // Hardcoded. + if (iorap::common::GetBoolEnvOrProperty("iorap.inode2filename.out_of_process", true)) { + ir_dependencies.process_mode = ProcessMode::kOutOfProcessIpc; + } else { + ir_dependencies.process_mode = ProcessMode::kInProcessDirect; + } + ir_dependencies.system_call = /*borrowed*/system_call.get(); + + int return_code = 0; + std::vector<CompilationInput> perfetto_traces = + MakeCompilationInputs(arg_input_filenames, timestamp_limit_ns); + return_code = + !PerformCompilation(std::move(perfetto_traces), + std::move(arg_output_proto), + !arg_output_text, + arg_blacklist_filter, + std::move(ir_dependencies)); + + // Uncomment this if we want to leave the process around to inspect it from adb shell. + // sleep(100000); + + // 0 -> successfully wrote the proto out to file. + // 1 -> failed along the way (#on_error and also see the error logs). + return return_code; +} + +} // namespace iorap::compiler + +int main(int argc, char** argv) { + return ::iorap::compiler::Main(argc, argv); +} + +#endif // IORAP_COMPILER_MAIN diff --git a/src/db/app_component_name.h b/src/db/app_component_name.h new file mode 100644 index 0000000..e364163 --- /dev/null +++ b/src/db/app_component_name.h @@ -0,0 +1,130 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_DB_APP_COMPONENT_NAME_H_ +#define IORAP_SRC_DB_APP_COMPONENT_NAME_H_ + +namespace iorap::db { + +struct AppComponentName { + std::string package; + std::string activity_name; + + // Turns the activity name to the fully qualified name. + // For example, if the activity name is ".MainActivity" and the package is + // foo.bar. Then the fully qualified name is foo.bar.MainActivity. + AppComponentName Canonicalize() const { + if (!activity_name.empty() && activity_name[0] == '.') { + return {package, package + activity_name}; + } + return {package, activity_name}; + } + + static bool HasAppComponentName(const std::string& s) { + return s.find('/') != std::string::npos; + } + + // "com.foo.bar/.A" -> {"com.foo.bar", ".A"} + static AppComponentName FromString(const std::string& s) { + constexpr const char delimiter = '/'; + + if (!HasAppComponentName(s)) { + return {std::move(s), ""}; + } + + std::string package = s.substr(0, s.find(delimiter)); + + std::string activity_name = s; + activity_name.erase(0, s.find(delimiter) + sizeof(delimiter)); + + return {std::move(package), std::move(activity_name)}; + } + + // {"com.foo.bar", ".A"} -> "com.foo.bar/.A" + std::string ToString() const { + return package + "/" + activity_name; + } + + /* + * '/' is encoded into %2F + * '%' is encoded into %25 + * + * This allows the component name to be be used as a file name + * ('/' is illegal due to being a path separator) with minimal + * munging. + */ + + // "com.foo.bar%2F.A%25" -> {"com.foo.bar", ".A%"} + static AppComponentName FromUrlEncodedString(const std::string& s) { + std::string cpy = s; + Replace(cpy, "%2F", "/"); + Replace(cpy, "%25", "%"); + + return FromString(cpy); + } + + // {"com.foo.bar", ".A%"} -> "com.foo.bar%2F.A%25" + std::string ToUrlEncodedString() const { + std::string s = ToString(); + Replace(s, "%", "%25"); + Replace(s, "/", "%2F"); + return s; + } + + /* + * '/' is encoded into @@ + * '%' is encoded into ^^ + * + * Two purpose: + * 1. This allows the package name to be used as a file name + * ('/' is illegal due to being a path separator) with minimal + * munging. + * 2. This allows the package name to be used in .mk file because + * '%' is a special char and cannot be easily escaped in Makefile. + * + * This is a workround for test purpose. + * Only package name is used because activity name varies on + * different testing framework. + * Hopefully, the double "@@" and "^^" are not used in other cases. + */ + // {"com.foo.bar", ".A%"} -> "com.foo.bar" + std::string ToMakeFileSafeEncodedPkgString() const { + std::string s = package; + Replace(s, "/", "@@"); + Replace(s, "%", "^^"); + return s; + } + + private: + static bool Replace(std::string& str, const std::string& from, const std::string& to) { + // TODO: call in a loop to replace all occurrences, not just the first one. + const size_t start_pos = str.find(from); + if (start_pos == std::string::npos) { + return false; + } + + str.replace(start_pos, from.length(), to); + + return true; +} +}; + +inline std::ostream& operator<<(std::ostream& os, const AppComponentName& name) { + os << name.ToString(); + return os; +} + +} // namespace iorap::db + +#endif // IORAP_SRC_DB_APP_COMPONENT_NAME_H_ diff --git a/src/db/clean_up.cc b/src/db/clean_up.cc new file mode 100644 index 0000000..de1412d --- /dev/null +++ b/src/db/clean_up.cc @@ -0,0 +1,115 @@ +// Copyright (C) 2020 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. + +#include "db/clean_up.h" + +#include <android-base/file.h> + +#include <cstdio> +#include <filesystem> +#include <fstream> +#include <iostream> +#include <limits> +#include <optional> +#include <string> +#include <vector> + +#include "db/file_models.h" +#include "db/models.h" + +namespace iorap::db { + +void CleanUpFilesForActivity(const db::DbHandle& db, + const db::VersionedComponentName& vcn) { + LOG(DEBUG) << "Clean up files for activity " << vcn.GetActivity(); + // Remove perfetto traces. + std::vector<db::RawTraceModel> raw_traces = + db::RawTraceModel::SelectByVersionedComponentName(db, vcn); + for (db::RawTraceModel raw_trace : raw_traces) { + std::string file_path = raw_trace.file_path; + LOG(DEBUG) << "Remove file: " << file_path; + std::filesystem::remove(file_path.c_str()); + raw_trace.Delete(); + } + + // Remove compiled traces. + std::optional<db::PrefetchFileModel> prefetch_file = + db::PrefetchFileModel::SelectByVersionedComponentName(db, vcn); + + if (prefetch_file) { + std::string file_path = prefetch_file->file_path; + LOG(DEBUG) << "Remove file: " << file_path; + std::filesystem::remove(file_path.c_str()); + prefetch_file->Delete(); + } +} + +void CleanUpFilesForPackage(const db::DbHandle& db, + int package_id, + const std::string& package_name, + int64_t version) { + LOG(DEBUG) << "Clean up files for package " << package_name << " with version " + << version; + std::vector<db::ActivityModel> activities = + db::ActivityModel::SelectByPackageId(db, package_id); + + for (db::ActivityModel activity : activities) { + db::VersionedComponentName vcn{package_name, activity.name, version}; + CleanUpFilesForActivity(db, vcn); + } +} + +void CleanUpFilesForPackage(const db::DbHandle& db, + const std::string& package_name, + int64_t version) { + std::optional<PackageModel> package = + PackageModel::SelectByNameAndVersion(db, package_name.c_str(), version); + + if (!package) { + LOG(DEBUG) << "No package to clean up " << package_name << " with version " << version; + return; + } + + CleanUpFilesForPackage(db, package->id, package_name, version); +} + +void CleanUpFilesForDb(const db::DbHandle& db) { + std::vector<db::PackageModel> packages = db::PackageModel::SelectAll(db); + for (db::PackageModel package : packages) { + CleanUpFilesForPackage(db, package.id, package.name, package.version); + } +} + +void CleanUpFilesForPackage(const std::string& db_path, + const std::string& package_name) { + iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path); + db::DbHandle db{db_schema.db()}; + CleanUpFilesForPackage(db, package_name); +} + + +void CleanUpFilesForPackage(const db::DbHandle& db, + const std::string& package_name) { + std::vector<PackageModel> packages = PackageModel::SelectByName(db, package_name.c_str());; + + for (PackageModel& package : packages) { + CleanUpFilesForPackage(db, package.id, package.name, package.version); + } + + if (packages.empty()) { + LOG(DEBUG) << "No package rows to clean up " << package_name; + } +} + +} // namespace iorap::db diff --git a/src/db/clean_up.h b/src/db/clean_up.h new file mode 100644 index 0000000..08b7bde --- /dev/null +++ b/src/db/clean_up.h @@ -0,0 +1,54 @@ +// Copyright (C) 2020 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. + +#ifndef IORAP_SRC_DB_CLEANER_H_ +#define IORAP_SRC_DB_CLEANER_H_ + +#include <android/content/pm/IPackageManagerNative.h> + +#include <string> +#include <vector> + +#include "binder/package_version_map.h" +#include "db/file_models.h" + +namespace iorap::db { + +// Clean up perfetto traces and compiled traces in disk and rows +// in raw_traces and prefetch_files in the db. +void CleanUpFilesForDb(const db::DbHandle& db); + +// Clean up perfetto traces and compiled traces in disk and rows +// in raw_traces and prefetch_files in the db for a package id. +void CleanUpFilesForPackage(const db::DbHandle& db, + int package_id, + const std::string& package_name, + int64_t version); + +// Clean up all package rows (and files) associated with a package by name. +void CleanUpFilesForPackage(const std::string& db_path, + const std::string& package_name); + +// Clean up all package rows (and files) associated with a package by name. +void CleanUpFilesForPackage(const db::DbHandle& db, + const std::string& package_name); +// Clean up perfetto traces and compiled traces in disk and rows +// in raw_traces and prefetch_files in the db for a package name +// and version. +void CleanUpFilesForPackage(const db::DbHandle& db, + const std::string& package_name, + int64_t version); +} // namespace iorap::db + +#endif // IORAP_SRC_DB_CLEANER_H_ diff --git a/src/db/file_models.cc b/src/db/file_models.cc new file mode 100644 index 0000000..0fe6d8f --- /dev/null +++ b/src/db/file_models.cc @@ -0,0 +1,181 @@ +// Copyright (C) 2019 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. + +#include "common/cmd_utils.h" +#include "db/file_models.h" +#include "db/models.h" + +#include <android-base/file.h> +#include <android-base/properties.h> + +#include <algorithm> +#include <sstream> +#include <sys/stat.h> +#include <sys/types.h> +#include <time.h> +#include <unistd.h> + +namespace iorap::db { + +static constexpr const char* kRootPathProp = "iorapd.root.dir"; +static const unsigned int kPerfettoMaxTraces = + ::android::base::GetUintProperty("iorapd.perfetto.max_traces", /*default*/10u); + +static uint64_t GetTimeNanoseconds() { + struct timespec now; + clock_gettime(CLOCK_REALTIME, &now); + + uint64_t now_ns = (now.tv_sec * 1000000000LL + now.tv_nsec); + return now_ns; +} + +static bool IsDir(const std::string& dirpath) { + struct stat st; + if (stat(dirpath.c_str(), &st) == 0) { + if (S_ISDIR(st.st_mode)) { + return true; + } + } + return false; +} + +// Given some path /a/b/c create all of /a, /a/b, /a/b/c/ recursively. +static bool MkdirWithParents(const std::string& path) { + size_t prev_end = 0; + while (prev_end < path.size()) { + size_t next_end = path.find('/', prev_end + 1); + + std::string dir_path = path.substr(0, next_end); + if (!IsDir(dir_path)) { +#if defined(_WIN32) + int ret = mkdir(dir_path.c_str()); +#else + mode_t old_mask = umask(0); + // The user permission is 5 to allow system server to + // read the files. No other users could do that because + // the upper directory only allows system server and iorapd + // to access. Also selinux rules prevent other users to + // read files here. + int ret = mkdir(dir_path.c_str(), 0755); + umask(old_mask); +#endif + if (ret != 0) { + PLOG(ERROR) << "failed to create dir " << dir_path; + return false; + } + } + prev_end = next_end; + + if (next_end == std::string::npos) { + break; + } + } + return true; +} + +FileModelBase::FileModelBase(VersionedComponentName vcn) + : vcn_{std::move(vcn)} { + root_path_ = common::GetEnvOrProperty(kRootPathProp, + /*default*/"/data/misc/iorapd"); +} + +std::string FileModelBase::BaseDir() const { + std::stringstream ss; + + ss << root_path_ << "/" << vcn_.GetPackage() << "/"; + ss << vcn_.GetVersion(); + ss << "/"; + ss << vcn_.GetActivity() << "/"; + ss << SubDir(); + + return ss.str(); +} + +std::string FileModelBase::FilePath() const { + std::stringstream ss; + ss << BaseDir(); + ss << "/"; + ss << BaseFile(); + + return ss.str(); +} + +bool FileModelBase::MkdirWithParents() { + LOG(VERBOSE) << "MkdirWithParents: " << BaseDir(); + return ::iorap::db::MkdirWithParents(BaseDir()); +} + +PerfettoTraceFileModel::PerfettoTraceFileModel(VersionedComponentName vcn, + uint64_t timestamp) + : FileModelBase{std::move(vcn)}, timestamp_{timestamp} { +} + +PerfettoTraceFileModel PerfettoTraceFileModel::CalculateNewestFilePath(VersionedComponentName vcn) { + uint64_t timestamp = GetTimeNanoseconds(); + return PerfettoTraceFileModel{vcn, timestamp}; +} + +std::string PerfettoTraceFileModel::BaseFile() const { + std::stringstream ss; + ss << timestamp_ << ".perfetto_trace.pb"; + return ss.str(); +} + +void PerfettoTraceFileModel::DeleteOlderFiles(DbHandle& db, VersionedComponentName vcn) { + std::vector<RawTraceModel> raw_traces = + RawTraceModel::SelectByVersionedComponentName(db, vcn); + + if (WOULD_LOG(VERBOSE)) { + size_t raw_traces_size = raw_traces.size(); + for (size_t i = 0; i < raw_traces_size; ++i) { + LOG(VERBOSE) << "DeleteOlderFiles - selected " << raw_traces[i]; + } + LOG(VERBOSE) << "DeleteOlderFiles - queried total " << raw_traces_size << " records"; + } + + size_t items_to_delete = 0; + if (raw_traces.size() > kPerfettoMaxTraces) { + items_to_delete = raw_traces.size() - kPerfettoMaxTraces; + } else { + LOG(VERBOSE) << "DeleteOlderFiles - don't delete older raw traces, too few files: " + << " wanted at least " << kPerfettoMaxTraces << ", but got " << raw_traces.size(); + } + + for (size_t i = 0; i < items_to_delete; ++i) { + RawTraceModel& raw_trace = raw_traces[i]; // sorted ascending -> items to delete are first. + std::string err_msg; + + if (!::android::base::RemoveFileIfExists(raw_trace.file_path, /*out*/&err_msg)) { + LOG(ERROR) << "Failed to remove raw trace file: " << raw_trace.file_path + << ", reason: " << err_msg; + } else { + raw_trace.Delete(); + LOG(DEBUG) << "Deleted raw trace for " << vcn << " at " << raw_trace.file_path; + } + } +} + +CompiledTraceFileModel::CompiledTraceFileModel(VersionedComponentName vcn) + : FileModelBase{std::move(vcn)} { +} + +CompiledTraceFileModel CompiledTraceFileModel::CalculateNewestFilePath(VersionedComponentName vcn) { + return CompiledTraceFileModel{vcn}; +} + +std::string CompiledTraceFileModel::BaseFile() const { + return "compiled_trace.pb"; +} + +} // namespace iorap::db diff --git a/src/db/file_models.h b/src/db/file_models.h new file mode 100644 index 0000000..135c98a --- /dev/null +++ b/src/db/file_models.h @@ -0,0 +1,124 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_DB_FILE_MODELS_H_ +#define IORAP_SRC_DB_FILE_MODELS_H_ + +#include <optional> +#include <ostream> +#include <string> + +namespace iorap::db { + +struct VersionedComponentName { + VersionedComponentName(std::string package, + std::string activity, + int64_t version) + : package_{std::move(package)}, + activity_{std::move(activity)}, + version_{version} { + } + + const std::string& GetPackage() const { + return package_; + } + + const std::string& GetActivity() const { + return activity_; + } + + int GetVersion() const { + return version_; + } + + private: + std::string package_; + std::string activity_; + int64_t version_; +}; + +inline std::ostream& operator<<(std::ostream& os, const VersionedComponentName& vcn) { + os << vcn.GetPackage() << "/" << vcn.GetActivity() << "@" << vcn.GetVersion(); + return os; +} + +class FileModelBase { + protected: + FileModelBase(VersionedComponentName vcn); + + virtual std::string SubDir() const = 0; + // Include the last file component only (/a/b/c.txt -> c.txt) + virtual std::string BaseFile() const = 0; + + virtual ~FileModelBase() {} + + public: + virtual std::string ModelName() const = 0; + // Return the absolute file path to this FileModel. + std::string FilePath() const; + + // Include the full path minus the basefile (/a/b/c.txt -> /a/b) + std::string BaseDir() const; + + // Create the base dir recursively (e.g. mkdir -p $basedir). + bool MkdirWithParents(); + private: + VersionedComponentName vcn_; + std::string subdir_; + std::string filename_; + std::string root_path_; +}; + +inline std::ostream& operator<<(std::ostream& os, const FileModelBase& fmb) { + os << fmb.ModelName() << "{'" << fmb.FilePath() << "'}"; + return os; +} + +class DbHandle; + +class PerfettoTraceFileModel : public FileModelBase { + protected: + virtual std::string ModelName() const override { return "PerfettoTrace"; } + virtual std::string SubDir() const override { return "raw_traces"; } + virtual std::string BaseFile() const override; + + PerfettoTraceFileModel(VersionedComponentName vcn, + uint64_t timestamp); + + public: + static PerfettoTraceFileModel CalculateNewestFilePath(VersionedComponentName vcn); + static void DeleteOlderFiles(DbHandle& db, VersionedComponentName vcn); + + virtual ~PerfettoTraceFileModel() {} + private: + uint64_t timestamp_; +}; + +class CompiledTraceFileModel : public FileModelBase { + protected: + virtual std::string ModelName() const override { return "CompiledTrace"; } + virtual std::string SubDir() const override { return "compiled_traces"; } + virtual std::string BaseFile() const override; + + CompiledTraceFileModel(VersionedComponentName vcn); + + public: + static CompiledTraceFileModel CalculateNewestFilePath(VersionedComponentName vcn); + + virtual ~CompiledTraceFileModel() {} +}; + +} // namespace iorap::db + +#endif // IORAP_SRC_DB_FILE_MODELS_H_ diff --git a/src/db/main.cc b/src/db/main.cc new file mode 100644 index 0000000..2edd961 --- /dev/null +++ b/src/db/main.cc @@ -0,0 +1,230 @@ +// Copyright (C) 2019 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. + +#include "common/debug.h" +#include "common/loggers.h" +#include "db/app_component_name.h" +#include "db/models.h" + +#include <android-base/parseint.h> +#include <android-base/logging.h> + +#include <iostream> +#include <optional> +#include <string_view> +#include <string> +#include <vector> + +#include <sqlite3.h> + +#include <signal.h> + +namespace iorap::db { + +void Usage(char** argv) { + std::cerr << "Usage: " << argv[0] << " <path-to-sqlite.db>" << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Interface with the iorap sqlite database and issue commands." << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Optional flags:" << std::endl; + std::cerr << " --help,-h Print this Usage." << std::endl; + std::cerr << " --register-raw-trace,-rrt Register raw trace file path." << std::endl; + std::cerr << " --register-compiled-trace,-rct Register compiled trace file path." << std::endl; + std::cerr << " --insert-component,-ic Add component if it doesn't exist." << std::endl; + std::cerr << " --initialize,-i Initialize new database." << std::endl; + std::cerr << " --rescan,-rs Update all from canonical directories." << std::endl; + std::cerr << " --prune,-pr Remove any stale file paths." << std::endl; + std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl; + std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl; + exit(1); +} + +void error_log_sqlite_callback(void *pArg, int iErrCode, const char *zMsg) { + LOG(ERROR) << "SQLite error (" << iErrCode << "): " << zMsg; +} + +const constexpr int64_t kNoVersion = -1; + +int Main(int argc, char** argv) { + // Go to system logcat + stderr when running from command line. + android::base::InitLogging(argv, iorap::common::StderrAndLogdLogger{android::base::SYSTEM}); + + bool wait_for_keystroke = false; + bool enable_verbose = false; + + bool command_format_text = false; // false = binary. + + int arg_input_fd = -1; + int arg_output_fd = -1; + + std::vector<std::string> arg_input_filenames; + bool arg_use_sockets = false; + + std::vector<std::pair<std::string,std::string>> arg_register_raw_trace; + std::vector<std::pair<std::string,std::string>> arg_register_compiled_trace; + + std::vector<std::string> arg_insert_component; + + bool arg_initialize = false; + bool arg_rescan = false; + bool arg_prune = false; + + LOG(VERBOSE) << "argparse: argc=" << argc; + + for (int arg = 1; arg < argc; ++arg) { + std::string argstr = argv[arg]; + bool has_arg_next = (arg+1)<argc; + std::string arg_next = has_arg_next ? argv[arg+1] : ""; + + bool has_arg_next_next = (arg+2)<argc; + std::string arg_next_next = has_arg_next_next ? argv[arg+2] : ""; + + LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr; + + if (argstr == "--help" || argstr == "-h") { + Usage(argv); + } else if (argstr == "--register-raw-trace" || argstr == "-rrt") { + if (!has_arg_next_next) { + LOG(ERROR) << "--register-raw-trace <component/name> <filepath>"; + Usage(argv); + } + arg_register_raw_trace.push_back({arg_next, arg_next_next}); + } else if (argstr == "--register-compiled-trace" || argstr == "-rct") { + if (!has_arg_next_next) { + LOG(ERROR) << "--register-compiled-trace <component/name> <filepath>"; + Usage(argv); + } + arg_register_compiled_trace.push_back({arg_next, arg_next_next}); + } else if (argstr == "--insert-component" || argstr == "-ic") { + if (!has_arg_next) { + LOG(ERROR) << "--insert-component <component/name>"; + Usage(argv); + } + arg_insert_component.push_back(arg_next); + } else if (argstr == "--initialize" || argstr == "-i") { + arg_initialize = true; + } else if (argstr == "--rescan" || argstr == "-rs") { + arg_rescan = true; + } else if (argstr == "--prune" || argstr == "-pr") { + arg_prune = true; + } else if (argstr == "--verbose" || argstr == "-v") { + enable_verbose = true; + } else if (argstr == "--wait" || argstr == "-w") { + wait_for_keystroke = true; + } else { + arg_input_filenames.push_back(argstr); + } + } + + if (arg_input_filenames.empty()) { + LOG(ERROR) << "Missing positional filename to a sqlite database."; + Usage(argv); + } + + if (enable_verbose) { + android::base::SetMinimumLogSeverity(android::base::VERBOSE); + + LOG(VERBOSE) << "Verbose check"; + LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild; + } else { + android::base::SetMinimumLogSeverity(android::base::DEBUG); + } + + LOG(VERBOSE) << "argparse: argc=" << argc; + + for (int arg = 1; arg < argc; ++arg) { + std::string argstr = argv[arg]; + + LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr; + } + + // Useful to attach a debugger... + // 1) $> iorap.cmd.readahead -w <args> + // 2) $> gdbclient <pid> + if (wait_for_keystroke) { + LOG(INFO) << "Self pid: " << getpid(); + + raise(SIGSTOP); + // LOG(INFO) << "Press any key to continue..."; + // std::cin >> wait_for_keystroke; + } + + // auto system_call = std::make_unique<SystemCallImpl>(); + // TODO: mock readahead calls? + // + // Uncomment this if we want to leave the process around to inspect it from adb shell. + // sleep(100000); + + int return_code = 0; + + LOG(VERBOSE) << "Hello world"; + + + do { + SchemaModel schema_model = SchemaModel::GetOrCreate(arg_input_filenames[0]); + DbHandle db = schema_model.db(); + if (arg_initialize) { + // Drop tables and restart from scratch. All rows are effectively dropped. + schema_model.Reinitialize(); + } + + for (const auto& component_and_file_name : arg_register_raw_trace) { + AppComponentName component_name = AppComponentName::FromString(component_and_file_name.first); + const std::string& file_path = component_and_file_name.second; + + LOG(VERBOSE) << "--register-raw-trace " << component_name << ", file_path: " << file_path; + + std::optional<ActivityModel> activity = + ActivityModel::SelectOrInsert(db, + component_name.package, + kNoVersion, + component_name.activity_name); + DCHECK(activity.has_value()); + LOG(DEBUG) << "Component selected/inserted: " << *activity; + } + + for (const std::string& component : arg_insert_component) { + AppComponentName component_name = AppComponentName::FromString(component); + + LOG(VERBOSE) << "raw component: " << component; + LOG(VERBOSE) << "package: " << component_name.package; + LOG(VERBOSE) << "activity name: " << component_name.activity_name; + + LOG(VERBOSE) << "--insert-component " << component_name; + + std::optional<ActivityModel> activity = + ActivityModel::SelectOrInsert(db, + component_name.package, + kNoVersion, + component_name.activity_name); + + DCHECK(activity.has_value()); + LOG(DEBUG) << "Component selected/inserted: " << *activity; + } + } while (false); + + LOG(VERBOSE) << "main: Terminating"; + + // 0 -> successfully executed all commands. + // 1 -> failed along the way (#on_error and also see the error logs). + return return_code; +} + +} // namespace iorap::db + +#if defined(IORAP_DB_MAIN) +int main(int argc, char** argv) { + return ::iorap::db::Main(argc, argv); +} +#endif // IORAP_DB_MAIN diff --git a/src/db/models.cc b/src/db/models.cc new file mode 100644 index 0000000..851a061 --- /dev/null +++ b/src/db/models.cc @@ -0,0 +1,21 @@ +// Copyright (C) 2019 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. + +#include "db/models.h" + +namespace iorap::db { + +std::optional<DbHandle> SchemaModel::s_singleton_; + +} // namespace iorap::db diff --git a/src/db/models.h b/src/db/models.h new file mode 100644 index 0000000..df6beb6 --- /dev/null +++ b/src/db/models.h @@ -0,0 +1,1130 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_DB_MODELS_H_ +#define IORAP_SRC_DB_MODELS_H_ + +#include "clean_up.h" +#include "file_models.h" + +#include <android-base/logging.h> +#include <utils/String8.h> + +#include <filesystem> +#include <iostream> +#include <optional> +#include <ostream> +#include <string> +#include <sstream> +#include <type_traits> +#include <vector> + +#include <sqlite3.h> + +namespace iorap::db { + +const constexpr int kDbVersion = 2; + +struct SqliteDbDeleter { + void operator()(sqlite3* db) { + if (db != nullptr) { + LOG(VERBOSE) << "sqlite3_close for: " << db; + sqlite3_close(db); + } + } +}; + +class DbHandle { + public: + // Take over ownership of sqlite3 db. + explicit DbHandle(sqlite3* db) + : db_{std::shared_ptr<sqlite3>{db, SqliteDbDeleter{}}}, + mutex_{std::make_shared<std::mutex>()} { + } + + sqlite3* get() { + return db_.get(); + } + + operator sqlite3*() { + return db_.get(); + } + + std::mutex& mutex() { + return *mutex_.get(); + } + + private: + std::shared_ptr<sqlite3> db_; + std::shared_ptr<std::mutex> mutex_; +}; + +class ScopedLockDb { + public: + ScopedLockDb(std::mutex& mutex) : mutex(mutex) { + mutex.lock(); + } + + ScopedLockDb(DbHandle& handle) : ScopedLockDb(handle.mutex()) { + } + + ~ScopedLockDb() { + mutex.unlock(); + } + private: + std::mutex& mutex; +}; + +class DbStatement { + public: + template <typename ... Args> + static DbStatement Prepare(DbHandle db, const std::string& sql, Args&&... args) { + return Prepare(db, sql.c_str(), std::forward<Args>(args)...); + } + + template <typename ... Args> + static DbStatement Prepare(DbHandle db, const char* sql, Args&&... args) { + DCHECK(db.get() != nullptr); + DCHECK(sql != nullptr); + + // LOG(VERBOSE) << "Prepare DB=" << db.get(); + + sqlite3_stmt* stmt = nullptr; + int rc = sqlite3_prepare_v2(db.get(), sql, -1, /*out*/&stmt, nullptr); + + DbStatement db_stmt{db, stmt}; + DCHECK(db_stmt.CheckOk(rc)) << sql; + db_stmt.BindAll(std::forward<Args>(args)...); + + return db_stmt; + } + + DbStatement(DbHandle db, sqlite3_stmt* stmt) : db_(db), stmt_(stmt) { + } + + sqlite3_stmt* get() { + return stmt_; + } + + DbHandle db() { + return db_; + } + + // Successive BindAll calls *do not* start back at the 0th bind position. + template <typename T, typename ... Args> + void BindAll(T&& arg, Args&&... args) { + Bind(std::forward<T>(arg)); + BindAll(std::forward<Args>(args)...); + } + + void BindAll() {} + + template <typename T> + void Bind(const std::optional<T>& value) { + if (value) { + Bind(*value); + } else { + BindNull(); + } + } + + void Bind(bool value) { + CheckOk(sqlite3_bind_int(stmt_, bind_counter_++, value)); + } + + void Bind(int value) { + CheckOk(sqlite3_bind_int(stmt_, bind_counter_++, value)); + } + + void Bind(uint64_t value) { + CheckOk(sqlite3_bind_int64(stmt_, bind_counter_++, static_cast<int64_t>(value))); + } + + void Bind(const char* value) { + if (value != nullptr) { + //sqlite3_bind_text(stmt_, /*index*/bind_counter_++, value, -1, SQLITE_STATIC); + CheckOk(sqlite3_bind_text(stmt_, /*index*/bind_counter_++, value, -1, SQLITE_TRANSIENT)); + } else { + BindNull(); + } + } + + void Bind(const std::string& value) { + Bind(value.c_str()); + } + + template <typename E, typename = std::enable_if_t<std::is_enum_v<E>>> + void Bind(E value) { + Bind(static_cast<std::underlying_type_t<E>>(value)); + } + + void BindNull() { + CheckOk(sqlite3_bind_null(stmt_, bind_counter_++)); + } + + int Step() { + ++step_counter_; + return sqlite3_step(stmt_); + } + + bool Step(int expected) { + int rc = Step(); + if (rc != expected) { + LOG(ERROR) << "SQLite error: " << sqlite3_errmsg(db_.get()); + return false; + } + return true; + } + + // Successive ColumnAll calls start at the 0th column again. + template <typename T, typename ... Args> + void ColumnAll(T& first, Args&... rest) { + Column(first); + ColumnAll(rest...); + // Reset column counter back to 0 + column_counter_ = 0; + } + + void ColumnAll() {} + + template <typename T> + void Column(std::optional<T>& value) { + T tmp; + Column(/*out*/tmp); + + if (!tmp) { // disambiguate 0 and NULL + const unsigned char* text = sqlite3_column_text(stmt_, column_counter_ - 1); + if (text == nullptr) { + value = std::nullopt; + return; + } + } + value = std::move(tmp); + } + + template <typename E, typename = std::enable_if_t<std::is_enum_v<E>>> + void Column(E& value) { + std::underlying_type_t<E> tmp; + Column(/*out*/tmp); + value = static_cast<E>(tmp); + } + + void Column(bool& value) { + value = sqlite3_column_int(stmt_, column_counter_++); + } + + void Column(int& value) { + value = sqlite3_column_int(stmt_, column_counter_++); + } + + void Column(uint64_t& value) { + value = static_cast<uint64_t>(sqlite3_column_int64(stmt_, column_counter_++)); + } + + void Column(std::string& value) { + const unsigned char* text = sqlite3_column_text(stmt_, column_counter_++); + + DCHECK(text != nullptr) << "Column should be marked NOT NULL, otherwise use optional<string>"; + if (text == nullptr) { + LOG(ERROR) << "Got NULL back for column " << column_counter_-1 + << "; is this column marked NOT NULL?"; + value = "(((null)))"; // Don't segfault, keep going. + return; + } + + value = std::string{reinterpret_cast<const char*>(text)}; + } + + const char* ExpandedSql() { + char* p = sqlite3_expanded_sql(stmt_); + if (p == nullptr) { + return "(nullptr)"; + } + return p; + } + + const char* Sql() { + const char* p = sqlite3_sql(stmt_); + if (p == nullptr) { + return "(nullptr)"; + } + return p; + } + + + DbStatement(DbStatement&& other) + : db_{other.db_}, stmt_{other.stmt_}, bind_counter_{other.bind_counter_}, + step_counter_{other.step_counter_} { + other.db_ = DbHandle{nullptr}; + other.stmt_ = nullptr; + } + + ~DbStatement() { + if (stmt_ != nullptr) { + DCHECK_GT(step_counter_, 0) << " forgot to call Step()?"; + sqlite3_finalize(stmt_); + } + } + + private: + bool CheckOk(int rc, int expected = SQLITE_OK) { + if (rc != expected) { + LOG(ERROR) << "Got error for SQL query: '" << Sql() << "'" + << ", expanded: '" << ExpandedSql() << "'"; + LOG(ERROR) << "Failed SQLite api call (" << rc << "): " << sqlite3_errstr(rc); + } + return rc == expected; + } + + DbHandle db_; + sqlite3_stmt* stmt_; + int bind_counter_ = 1; + int step_counter_ = 0; + int column_counter_ = 0; +}; + +class DbQueryBuilder { + public: + // Returns the row ID that was inserted last. + template <typename... Args> + static std::optional<int> Insert(DbHandle db, const std::string& sql, Args&&... args) { + ScopedLockDb lock{db}; + + sqlite3_int64 last_rowid = sqlite3_last_insert_rowid(db.get()); + DbStatement stmt = DbStatement::Prepare(db, sql, std::forward<Args>(args)...); + + if (!stmt.Step(SQLITE_DONE)) { + return std::nullopt; + } + + last_rowid = sqlite3_last_insert_rowid(db.get()); + DCHECK_GT(last_rowid, 0); + + return static_cast<int>(last_rowid); + } + + template <typename... Args> + static bool Delete(DbHandle db, const std::string& sql, Args&&... args) { + return ExecuteOnce(db, sql, std::forward<Args>(args)...); + } + + template <typename... Args> + static bool Update(DbHandle db, const std::string& sql, Args&&... args) { + return ExecuteOnce(db, sql, std::forward<Args>(args)...); + } + + template <typename... Args> + static bool ExecuteOnce(DbHandle db, const std::string& sql, Args&&... args) { + ScopedLockDb lock{db}; + + DbStatement stmt = DbStatement::Prepare(db, sql, std::forward<Args>(args)...); + + if (!stmt.Step(SQLITE_DONE)) { + return false; + } + + return true; + } + + template <typename... Args> + static bool SelectOnce(DbStatement& stmt, Args&... args) { + int rc = stmt.Step(); + switch (rc) { + case SQLITE_ROW: + stmt.ColumnAll(/*out*/args...); + return true; + case SQLITE_DONE: + return false; + default: + LOG(ERROR) << "Failed to step (" << rc << "): " << sqlite3_errmsg(stmt.db()); + return false; + } + } +}; + +class Model { + public: + DbHandle db() const { + return db_; + } + + Model(DbHandle db) : db_{db} { + } + + private: + DbHandle db_; +}; + +class SchemaModel : public Model { + public: + static SchemaModel GetOrCreate(std::string location) { + int rc = sqlite3_config(SQLITE_CONFIG_LOG, ErrorLogCallback, /*data*/nullptr); + + if (rc != SQLITE_OK) { + LOG(FATAL) << "Failed to configure logging"; + } + + sqlite3* db = nullptr; + bool is_deprecated = false; + if (location != ":memory:") { + // Try to open DB if it already exists. + rc = sqlite3_open_v2(location.c_str(), /*out*/&db, SQLITE_OPEN_READWRITE, /*vfs*/nullptr); + + if (rc == SQLITE_OK) { + LOG(INFO) << "Opened existing database at '" << location << "'"; + SchemaModel schema{DbHandle{db}, location}; + if (schema.Version() == kDbVersion) { + return schema; + } else { + LOG(DEBUG) << "The version is old, reinit the db." + << " old version is " + << schema.Version() + << " and new version is " + << kDbVersion; + CleanUpFilesForDb(schema.db()); + is_deprecated = true; + } + } + } + + if (is_deprecated) { + // Remove the db and recreate it. + // TODO: migrate to a newer version without deleting the old one. + std::filesystem::remove(location.c_str()); + } + + // Create a new DB if one didn't exist already. + rc = sqlite3_open(location.c_str(), /*out*/&db); + + if (rc != SQLITE_OK) { + LOG(FATAL) << "Failed to open DB: " << sqlite3_errmsg(db); + } + + SchemaModel schema{DbHandle{db}, location}; + schema.Reinitialize(); + // TODO: migrate versions upwards when we rev the schema version + + int old_version = schema.Version(); + LOG(VERBOSE) << "Loaded schema version: " << old_version; + + return schema; + } + + void MarkSingleton() { + s_singleton_ = db(); + } + + static DbHandle GetSingleton() { + DCHECK(s_singleton_.has_value()); + return *s_singleton_; + } + + void Reinitialize() { + const char* sql_to_initialize = R"SQLC0D3( + DROP TABLE IF EXISTS schema_versions; + DROP TABLE IF EXISTS packages; + DROP TABLE IF EXISTS activities; + DROP TABLE IF EXISTS app_launch_histories; + DROP TABLE IF EXISTS raw_traces; + DROP TABLE IF EXISTS prefetch_files; +)SQLC0D3"; + char* err_msg = nullptr; + int rc = sqlite3_exec(db().get(), + sql_to_initialize, + /*callback*/nullptr, + /*arg*/0, + /*out*/&err_msg); + if (rc != SQLITE_OK) { + LOG(FATAL) << "Failed to drop tables: " << err_msg ? err_msg : "nullptr"; + } + + CreateSchema(); + LOG(INFO) << "Reinitialized database at '" << location_ << "'"; + } + + int Version() { + std::string query = "SELECT MAX(version) FROM schema_versions;"; + DbStatement stmt = DbStatement::Prepare(db(), query); + + int return_value = 0; + if (!DbQueryBuilder::SelectOnce(stmt, /*out*/return_value)) { + LOG(ERROR) << "Failed to query schema version"; + return -1; + } + + return return_value; + } + + protected: + SchemaModel(DbHandle db, std::string location) : Model{db}, location_(location) { + } + + private: + static std::optional<DbHandle> s_singleton_; + + void CreateSchema() { + const char* sql_to_initialize = R"SQLC0D3( + CREATE TABLE schema_versions( + version INTEGER NOT NULL + ); + + CREATE TABLE packages( + id INTEGER NOT NULL, + name TEXT NOT NULL, + version INTEGER NOT NULL, + + PRIMARY KEY(id) + ); + + CREATE TABLE activities( + id INTEGER NOT NULL, + name TEXT NOT NULL, + package_id INTEGER NOT NULL, + + PRIMARY KEY(id), + FOREIGN KEY (package_id) REFERENCES packages (id) ON DELETE CASCADE + ); + + CREATE TABLE app_launch_histories( + id INTEGER NOT NULL PRIMARY KEY, + activity_id INTEGER NOT NULL, + -- 1:Cold, 2:Warm, 3:Hot + temperature INTEGER CHECK (temperature IN (1, 2, 3)) NOT NULL, + trace_enabled INTEGER CHECK(trace_enabled in (TRUE, FALSE)) NOT NULL, + readahead_enabled INTEGER CHECK(trace_enabled in (TRUE, FALSE)) NOT NULL, + -- absolute timestamp since epoch + intent_started_ns INTEGER CHECK(intent_started_ns IS NULL or intent_started_ns >= 0), + -- absolute timestamp since epoch + total_time_ns INTEGER CHECK(total_time_ns IS NULL or total_time_ns >= 0), + -- absolute timestamp since epoch + report_fully_drawn_ns INTEGER CHECK(report_fully_drawn_ns IS NULL or report_fully_drawn_ns >= 0), + + FOREIGN KEY (activity_id) REFERENCES activities (id) ON DELETE CASCADE + ); + + CREATE TABLE raw_traces( + id INTEGER NOT NULL PRIMARY KEY, + history_id INTEGER NOT NULL, + file_path TEXT NOT NULL, + + FOREIGN KEY (history_id) REFERENCES app_launch_histories (id) ON DELETE CASCADE + ); + + CREATE TABLE prefetch_files( + id INTEGER NOT NULL PRIMARY KEY, + activity_id INTEGER NOT NULL, + file_path TEXT NOT NULL, + + FOREIGN KEY (activity_id) REFERENCES activities (id) ON DELETE CASCADE + ); +)SQLC0D3"; + + char* err_msg = nullptr; + int rc = sqlite3_exec(db().get(), + sql_to_initialize, + /*callback*/nullptr, + /*arg*/0, + /*out*/&err_msg); + + if (rc != SQLITE_OK) { + LOG(FATAL) << "Failed to create tables: " << err_msg ? err_msg : "nullptr"; + } + + const char* sql_to_insert_schema_version = R"SQLC0D3( + INSERT INTO schema_versions VALUES(%d) + )SQLC0D3"; + rc = sqlite3_exec(db().get(), + android::String8::format(sql_to_insert_schema_version, + kDbVersion), + /*callback*/nullptr, + /*arg*/0, + /*out*/&err_msg); + + if (rc != SQLITE_OK) { + LOG(FATAL) << "Failed to insert the schema version: " + << err_msg ? err_msg : "nullptr"; + } + } + + static void ErrorLogCallback(void *pArg, int iErrCode, const char *zMsg) { + LOG(ERROR) << "SQLite error (" << iErrCode << "): " << zMsg; + } + + std::string location_; +}; + +class PackageModel : public Model { + protected: + PackageModel(DbHandle db) : Model{db} { + } + + public: + static std::optional<PackageModel> SelectById(DbHandle db, int id) { + ScopedLockDb lock{db}; + int original_id = id; + + std::string query = "SELECT * FROM packages WHERE id = ?1 LIMIT 1;"; + DbStatement stmt = DbStatement::Prepare(db, query, id); + + PackageModel p{db}; + if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) { + return std::nullopt; + } + + return p; + } + + static std::vector<PackageModel> SelectByName(DbHandle db, const char* name) { + ScopedLockDb lock{db}; + + std::string query = "SELECT * FROM packages WHERE name = ?1;"; + DbStatement stmt = DbStatement::Prepare(db, query, name); + + std::vector<PackageModel> packages; + + PackageModel p{db}; + while (DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) { + packages.push_back(p); + } + + return packages; + } + + static std::optional<PackageModel> SelectByNameAndVersion(DbHandle db, + const char* name, + int version) { + ScopedLockDb lock{db}; + + std::string query = + "SELECT * FROM packages WHERE name = ?1 AND version = ?2 LIMIT 1;"; + DbStatement stmt = DbStatement::Prepare(db, query, name, version); + + PackageModel p{db}; + if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) { + return std::nullopt; + } + + return p; + } + + static std::vector<PackageModel> SelectAll(DbHandle db) { + ScopedLockDb lock{db}; + + std::string query = "SELECT * FROM packages;"; + DbStatement stmt = DbStatement::Prepare(db, query); + + std::vector<PackageModel> packages; + PackageModel p{db}; + while (DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.version)) { + packages.push_back(p); + } + + return packages; + } + + static std::optional<PackageModel> Insert(DbHandle db, + std::string name, + int version) { + const char* sql = "INSERT INTO packages (name, version) VALUES (?1, ?2);"; + + std::optional<int> inserted_row_id = + DbQueryBuilder::Insert(db, sql, name, version); + if (!inserted_row_id) { + return std::nullopt; + } + + PackageModel p{db}; + p.name = name; + p.version = version; + p.id = *inserted_row_id; + + return p; + } + + bool Delete() { + const char* sql = "DELETE FROM packages WHERE id = ?"; + + return DbQueryBuilder::Delete(db(), sql, id); + } + + int id; + std::string name; + int version; +}; + +inline std::ostream& operator<<(std::ostream& os, const PackageModel& p) { + os << "PackageModel{id=" << p.id << ",name=" << p.name << ","; + os << "version="; + os << p.version; + os << "}"; + return os; +} + +class ActivityModel : public Model { + protected: + ActivityModel(DbHandle db) : Model{db} { + } + + public: + static std::optional<ActivityModel> SelectById(DbHandle db, int id) { + ScopedLockDb lock{db}; + int original_id = id; + + std::string query = "SELECT * FROM activities WHERE id = ? LIMIT 1;"; + DbStatement stmt = DbStatement::Prepare(db, query, id); + + ActivityModel p{db}; + if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.package_id)) { + return std::nullopt; + } + + return p; + } + + static std::optional<ActivityModel> SelectByNameAndPackageId(DbHandle db, + const char* name, + int package_id) { + ScopedLockDb lock{db}; + + std::string query = "SELECT * FROM activities WHERE name = ? AND package_id = ? LIMIT 1;"; + DbStatement stmt = DbStatement::Prepare(db, query, name, package_id); + + ActivityModel p{db}; + if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.package_id)) { + return std::nullopt; + } + + return p; + } + + static std::vector<ActivityModel> SelectByPackageId(DbHandle db, + int package_id) { + ScopedLockDb lock{db}; + + std::string query = "SELECT * FROM activities WHERE package_id = ?;"; + DbStatement stmt = DbStatement::Prepare(db, query, package_id); + + std::vector<ActivityModel> activities; + ActivityModel p{db}; + while (DbQueryBuilder::SelectOnce(stmt, p.id, p.name, p.package_id)) { + activities.push_back(p); + } + + return activities; + } + + static std::optional<ActivityModel> Insert(DbHandle db, + std::string name, + int package_id) { + const char* sql = "INSERT INTO activities (name, package_id) VALUES (?1, ?2);"; + + std::optional<int> inserted_row_id = + DbQueryBuilder::Insert(db, sql, name, package_id); + if (!inserted_row_id) { + return std::nullopt; + } + + ActivityModel p{db}; + p.id = *inserted_row_id; + p.name = name; + p.package_id = package_id; + + return p; + } + + // Try to select by package_name+activity_name, otherwise insert into both tables. + // Package version is ignored for selects. + static std::optional<ActivityModel> SelectOrInsert( + DbHandle db, + std::string package_name, + int package_version, + std::string activity_name) { + std::optional<PackageModel> package = PackageModel::SelectByNameAndVersion(db, + package_name.c_str(), + package_version); + if (!package) { + package = PackageModel::Insert(db, package_name, package_version); + DCHECK(package.has_value()); + } + + std::optional<ActivityModel> activity = + ActivityModel::SelectByNameAndPackageId(db, + activity_name.c_str(), + package->id); + if (!activity) { + activity = Insert(db, activity_name, package->id); + // XX: should we really return an optional here? This feels like it should never fail. + } + + return activity; + } + + int id; + std::string name; + int package_id; // PackageModel::id +}; + +inline std::ostream& operator<<(std::ostream& os, const ActivityModel& p) { + os << "ActivityModel{id=" << p.id << ",name=" << p.name << ","; + os << "package_id=" << p.package_id << "}"; + return os; +} + +class AppLaunchHistoryModel : public Model { + protected: + AppLaunchHistoryModel(DbHandle db) : Model{db} { + } + + public: + enum class Temperature : int32_t { + kUninitialized = -1, // Note: Not a valid SQL value. + kCold = 1, + kWarm = 2, + kHot = 3, + }; + + static std::optional<AppLaunchHistoryModel> SelectById(DbHandle db, int id) { + ScopedLockDb lock{db}; + int original_id = id; + + std::string query = "SELECT * FROM app_launch_histories WHERE id = ? LIMIT 1;"; + DbStatement stmt = DbStatement::Prepare(db, query, id); + + AppLaunchHistoryModel p{db}; + if (!DbQueryBuilder::SelectOnce(stmt, + p.id, + p.activity_id, + p.temperature, + p.trace_enabled, + p.readahead_enabled, + p.intent_started_ns, + p.total_time_ns, + p.report_fully_drawn_ns)) { + return std::nullopt; + } + + return p; + } + + // Selects the activity history for an activity id. + // The requirements are: + // * Should be cold run. + // * Pefetto trace is enabled. + // * intent_start_ns is *NOT* null. + static std::vector<AppLaunchHistoryModel> SelectActivityHistoryForCompile( + DbHandle db, + int activity_id) { + ScopedLockDb lock{db}; + std::string query = "SELECT * FROM app_launch_histories " + "WHERE activity_id = ?1 AND" + " temperature = 1 AND" + " trace_enabled = TRUE AND" + " intent_started_ns IS NOT NULL;"; + DbStatement stmt = DbStatement::Prepare(db, query, activity_id); + std::vector<AppLaunchHistoryModel> result; + + AppLaunchHistoryModel p{db}; + while (DbQueryBuilder::SelectOnce(stmt, + p.id, + p.activity_id, + p.temperature, + p.trace_enabled, + p.readahead_enabled, + p.intent_started_ns, + p.total_time_ns, + p.report_fully_drawn_ns)) { + result.push_back(p); + } + return result; + } + + static std::optional<AppLaunchHistoryModel> Insert(DbHandle db, + int activity_id, + AppLaunchHistoryModel::Temperature temperature, + bool trace_enabled, + bool readahead_enabled, + std::optional<uint64_t> intent_started_ns, + std::optional<uint64_t> total_time_ns, + std::optional<uint64_t> report_fully_drawn_ns) + { + const char* sql = "INSERT INTO app_launch_histories (activity_id, temperature, trace_enabled, " + "readahead_enabled, intent_started_ns, " + "total_time_ns, report_fully_drawn_ns) " + "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7);"; + + std::optional<int> inserted_row_id = + DbQueryBuilder::Insert(db, + sql, + activity_id, + temperature, + trace_enabled, + readahead_enabled, + intent_started_ns, + total_time_ns, + report_fully_drawn_ns); + if (!inserted_row_id) { + return std::nullopt; + } + + AppLaunchHistoryModel p{db}; + p.id = *inserted_row_id; + p.activity_id = activity_id; + p.temperature = temperature; + p.trace_enabled = trace_enabled; + p.readahead_enabled = readahead_enabled; + p.intent_started_ns = intent_started_ns; + p.total_time_ns = total_time_ns; + p.report_fully_drawn_ns = report_fully_drawn_ns; + + return p; + } + + static bool UpdateReportFullyDrawn(DbHandle db, + int history_id, + uint64_t report_fully_drawn_ns) + { + const char* sql = "UPDATE app_launch_histories " + "SET report_fully_drawn_ns = ?1 " + "WHERE id = ?2;"; + + bool result = DbQueryBuilder::Update(db, sql, report_fully_drawn_ns, history_id); + + if (!result) { + LOG(ERROR)<< "Failed to update history_id:"<< history_id + << ", report_fully_drawn_ns: " << report_fully_drawn_ns; + } + return result; + } + + int id; + int activity_id; // ActivityModel::id + Temperature temperature = Temperature::kUninitialized; + bool trace_enabled; + bool readahead_enabled; + std::optional<uint64_t> intent_started_ns; + std::optional<uint64_t> total_time_ns; + std::optional<uint64_t> report_fully_drawn_ns; +}; + +inline std::ostream& operator<<(std::ostream& os, const AppLaunchHistoryModel& p) { + os << "AppLaunchHistoryModel{id=" << p.id << "," + << "activity_id=" << p.activity_id << "," + << "temperature=" << static_cast<int>(p.temperature) << "," + << "trace_enabled=" << p.trace_enabled << "," + << "readahead_enabled=" << p.readahead_enabled << "," + << "intent_started_ns="; + if (p.intent_started_ns) { + os << *p.intent_started_ns; + } else { + os << "(nullopt)"; + } + os << ","; + os << "total_time_ns="; + if (p.total_time_ns) { + os << *p.total_time_ns; + } else { + os << "(nullopt)"; + } + os << ","; + os << "report_fully_drawn_ns="; + if (p.report_fully_drawn_ns) { + os << *p.report_fully_drawn_ns; + } else { + os << "(nullopt)"; + } + os << "}"; + return os; +} + +class RawTraceModel : public Model { + protected: + RawTraceModel(DbHandle db) : Model{db} { + } + + public: + + // Return raw_traces, sorted ascending by the id. + static std::vector<RawTraceModel> SelectByVersionedComponentName(DbHandle db, + VersionedComponentName vcn) { + ScopedLockDb lock{db}; + + const char* sql = + "SELECT raw_traces.id, raw_traces.history_id, raw_traces.file_path " + "FROM raw_traces " + "INNER JOIN app_launch_histories ON raw_traces.history_id = app_launch_histories.id " + "INNER JOIN activities ON activities.id = app_launch_histories.activity_id " + "INNER JOIN packages ON packages.id = activities.package_id " + "WHERE packages.name = ? AND activities.name = ? AND packages.version = ?" + "ORDER BY raw_traces.id ASC"; + + DbStatement stmt = DbStatement::Prepare(db, + sql, + vcn.GetPackage(), + vcn.GetActivity(), + vcn.GetVersion()); + + std::vector<RawTraceModel> results; + + RawTraceModel p{db}; + while (DbQueryBuilder::SelectOnce(stmt, p.id, p.history_id, p.file_path)) { + results.push_back(p); + } + + return results; + } + + static std::optional<RawTraceModel> SelectByHistoryId(DbHandle db, int history_id) { + ScopedLockDb lock{db}; + + const char* sql = + "SELECT id, history_id, file_path " + "FROM raw_traces " + "WHERE history_id = ?1 " + "LIMIT 1;"; + + DbStatement stmt = DbStatement::Prepare(db, sql, history_id); + + RawTraceModel p{db}; + if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.history_id, p.file_path)) { + return std::nullopt; + } + + return p; + } + + static std::optional<RawTraceModel> Insert(DbHandle db, + int history_id, + std::string file_path) { + const char* sql = "INSERT INTO raw_traces (history_id, file_path) VALUES (?1, ?2);"; + + std::optional<int> inserted_row_id = + DbQueryBuilder::Insert(db, sql, history_id, file_path); + if (!inserted_row_id) { + return std::nullopt; + } + + RawTraceModel p{db}; + p.id = *inserted_row_id; + p.history_id = history_id; + p.file_path = file_path; + + return p; + } + + bool Delete() { + const char* sql = "DELETE FROM raw_traces WHERE id = ?"; + + return DbQueryBuilder::Delete(db(), sql, id); + } + + int id; + int history_id; + std::string file_path; +}; + +inline std::ostream& operator<<(std::ostream& os, const RawTraceModel& p) { + os << "RawTraceModel{id=" << p.id << ",history_id=" << p.history_id << ","; + os << "file_path=" << p.file_path << "}"; + return os; +} + +class PrefetchFileModel : public Model { + protected: + PrefetchFileModel(DbHandle db) : Model{db} { + } + + public: + static std::optional<PrefetchFileModel> SelectByVersionedComponentName( + DbHandle db, + VersionedComponentName vcn) { + ScopedLockDb lock{db}; + + const char* sql = + "SELECT prefetch_files.id, prefetch_files.activity_id, prefetch_files.file_path " + "FROM prefetch_files " + "INNER JOIN activities ON activities.id = prefetch_files.activity_id " + "INNER JOIN packages ON packages.id = activities.package_id " + "WHERE packages.name = ? AND activities.name = ? AND packages.version = ?"; + + DbStatement stmt = DbStatement::Prepare(db, + sql, + vcn.GetPackage(), + vcn.GetActivity(), + vcn.GetVersion()); + + PrefetchFileModel p{db}; + + if (!DbQueryBuilder::SelectOnce(stmt, p.id, p.activity_id, p.file_path)) { + return std::nullopt; + } + + return p; + } + + static std::vector<PrefetchFileModel> SelectAll(DbHandle db) { + ScopedLockDb lock{db}; + + std::string query = + "SELECT prefetch_files.id, prefetch_files.activity_id, prefetch_files.file_path " + "FROM prefetch_files"; + DbStatement stmt = DbStatement::Prepare(db, query); + + std::vector<PrefetchFileModel> prefetch_files; + PrefetchFileModel p{db}; + while (DbQueryBuilder::SelectOnce(stmt, p.id, p.activity_id, p.file_path)) { + prefetch_files.push_back(p); + } + + return prefetch_files; + } + + static std::optional<PrefetchFileModel> Insert(DbHandle db, + int activity_id, + std::string file_path) { + const char* sql = "INSERT INTO prefetch_files (activity_id, file_path) VALUES (?1, ?2);"; + + std::optional<int> inserted_row_id = + DbQueryBuilder::Insert(db, sql, activity_id, file_path); + if (!inserted_row_id) { + return std::nullopt; + } + + PrefetchFileModel p{db}; + p.id = *inserted_row_id; + p.activity_id = activity_id; + p.file_path = file_path; + + return p; + } + + bool Delete() { + const char* sql = "DELETE FROM prefetch_files WHERE id = ?"; + + return DbQueryBuilder::Delete(db(), sql, id); + } + + int id; + int activity_id; + std::string file_path; +}; + +inline std::ostream& operator<<(std::ostream& os, const PrefetchFileModel& p) { + os << "PrefetchFileModel{id=" << p.id << ",activity_id=" << p.activity_id << ","; + os << "file_path=" << p.file_path << "}"; + return os; +} + +} // namespace iorap::db + +#endif // IORAP_SRC_DB_MODELS_H_ diff --git a/src/inode2filename/data_source.cc b/src/inode2filename/data_source.cc new file mode 100644 index 0000000..5fcce73 --- /dev/null +++ b/src/inode2filename/data_source.cc @@ -0,0 +1,187 @@ +// Copyright (C) 2019 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. + +#include "inode2filename/data_source.h" + +#include "common/cmd_utils.h" +#include "inode2filename/inode_resolver.h" +#include "inode2filename/search_directories.h" + +#include <android-base/logging.h> + +#include <fstream> +#include <stdio.h> + +namespace rx = rxcpp; + +namespace iorap::inode2filename { + +std::vector<std::string> ToArgs(DataSourceKind data_source_kind) { + const char* value = nullptr; + + switch (data_source_kind) { + case DataSourceKind::kDiskScan: + value = "diskscan"; + break; + case DataSourceKind::kTextCache: + value = "textcache"; + break; + case DataSourceKind::kBpf: + value = "bpf"; + break; + } + + std::vector<std::string> args; + iorap::common::AppendNamedArg(args, "--data-source", value); + return args; +} + +std::vector<std::string> ToArgs(const DataSourceDependencies& deps) { + std::vector<std::string> args; + + iorap::common::AppendArgsRepeatedly(args, ToArgs(deps.data_source)); + // intentionally skip system_call; it does not have a command line equivalent + iorap::common::AppendNamedArgRepeatedly(args, "--root", deps.root_directories); + + if (deps.text_cache_filename) { + iorap::common::AppendNamedArg(args, "--textcache", *(deps.text_cache_filename)); + } + + return args; +} + +class DiskScanDataSource : public DataSource { + public: + DiskScanDataSource(DataSourceDependencies dependencies) + : DataSource(std::move(dependencies)) { + DCHECK_NE(dependencies_.root_directories.size(), 0u) << "Root directories can't be empty"; + } + + virtual rxcpp::observable<InodeResult> EmitInodes() const override { + SearchDirectories searcher{/*borrow*/dependencies_.system_call}; + return searcher.ListAllFilenames(dependencies_.root_directories); + } + + // Since not all Inodes emitted are the ones searched for, doing additional stat(2) calls here + // would be redundant. + // + // We set the device number to a dummy value here (-1) so that InodeResolver + // can fill it in later with stat(2). This is effectively the same thing as always doing + // verification. + virtual bool ResultIncludesDeviceNumber() const { return false; }; + + virtual ~DiskScanDataSource() {} +}; + +static inline void LeftTrim(/*inout*/std::string& s) { + s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) { + return !std::isspace(ch); + })); +} + +class TextCacheDataSource : public DataSource { + public: + TextCacheDataSource(DataSourceDependencies dependencies) + : DataSource(std::move(dependencies)) { + DCHECK(dependencies_.text_cache_filename.has_value()) << "Must have text cache filename"; + } + + virtual rxcpp::observable<InodeResult> EmitInodes() const override { + const std::string& file_name = *dependencies_.text_cache_filename; + + return rx::observable<>::create<InodeResult>( + [file_name](rx::subscriber<InodeResult> dest) { + LOG(VERBOSE) << "TextCacheDataSource (lambda)"; + + std::ifstream ifs{file_name}; + + if (!ifs.is_open()) { + dest.on_error(rxcpp::util::make_error_ptr( + std::ios_base::failure("Could not open specified text cache filename"))); + return; + } + + while (dest.is_subscribed() && ifs) { + LOG(VERBOSE) << "TextCacheDataSource (read line)"; + // TODO. + + uint64_t device_number = 0; + uint64_t inode_number = 0; + uint64_t file_size = 0; + + // Parse lines of form: + // "$device_number $inode $filesize $filename..." + // This format conforms to system/extras/pagecache/pagecache.py + + ifs >> device_number; + ifs >> inode_number; + ifs >> file_size; + (void)file_size; // Not used in iorapd. + + std::string value_filename; + std::getline(/*inout*/ifs, /*out*/value_filename); + + if (value_filename.empty()) { + // Ignore empty lines. + continue; + } + + // getline, unlike ifstream, does not ignore spaces. + // There's always at least 1 space in a textcache output file. + // However, drop *all* spaces on the left since filenames starting with a space are + // ambiguous to us. + LeftTrim(/*inout*/value_filename); + + Inode inode = Inode::FromDeviceAndInode(static_cast<dev_t>(device_number), + static_cast<ino_t>(inode_number)); + + LOG(VERBOSE) << "TextCacheDataSource (on_next) " << inode << "->" << value_filename; + dest.on_next(InodeResult::makeSuccess(inode, value_filename)); + } + + dest.on_completed(); + } + ); + + // TODO: plug into the filtering and verification graph. + } + + virtual ~TextCacheDataSource() {} +}; + +DataSource::DataSource(DataSourceDependencies dependencies) + : dependencies_{std::move(dependencies)} { + DCHECK(dependencies_.system_call != nullptr); +} + +std::shared_ptr<DataSource> DataSource::Create(DataSourceDependencies dependencies) { + switch (dependencies.data_source) { + case DataSourceKind::kDiskScan: + return std::shared_ptr<DataSource>{new DiskScanDataSource{std::move(dependencies)}}; + case DataSourceKind::kTextCache: + return std::shared_ptr<DataSource>{new TextCacheDataSource{std::move(dependencies)}}; + case DataSourceKind::kBpf: + // TODO: BPF-based data source. + LOG(FATAL) << "Not implemented yet"; + return nullptr; + default: + LOG(FATAL) << "Invalid data source value"; + return nullptr; + } +} + +void DataSource::StartRecording() {} +void DataSource::StopRecording() {} + +} // namespace iorap::inode2filename diff --git a/src/inode2filename/data_source.h b/src/inode2filename/data_source.h new file mode 100644 index 0000000..36c8383 --- /dev/null +++ b/src/inode2filename/data_source.h @@ -0,0 +1,74 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_INODE2FILENAME_DATA_SOURCE_H_ +#define IORAP_SRC_INODE2FILENAME_DATA_SOURCE_H_ + +#include "inode2filename/inode_result.h" +#include "inode2filename/system_call.h" + +#include <rxcpp/rx.hpp> + +#include <memory> +#include <optional> +#include <string> +#include <vector> +namespace iorap::inode2filename { + +enum class DataSourceKind { + kDiskScan, + kTextCache, + kBpf, +}; + +std::vector<std::string> ToArgs(DataSourceKind data_source_kind); + +struct DataSourceDependencies { + DataSourceKind data_source = DataSourceKind::kDiskScan; + borrowed<SystemCall*> system_call = nullptr; + + // kDiskScan-specific options. Other data sources ignore these fields. + std::vector<std::string> root_directories; + // kTextCache-specific options. Other data sources ignore these fields. + std::optional<std::string> text_cache_filename; +}; + +std::vector<std::string> ToArgs(const DataSourceDependencies& deps); + +class DataSource : std::enable_shared_from_this<DataSource> { + public: + static std::shared_ptr<DataSource> Create(DataSourceDependencies dependencies); + + virtual void StartRecording(); // XX: feels like this should be BPF-specific. + virtual void StopRecording(); + + // Emit all inode->filename mappings (i.e. an infinite lazy list). + // The specific order is determined by the extra dependency options. + // + // The work must terminate if all subscriptions are removed. + virtual rxcpp::observable<InodeResult> EmitInodes() const = 0; + + // Does the InodeResult include a valid device number? + // If returning false, the InodeResolver fills in the missing device number with stat(2). + virtual bool ResultIncludesDeviceNumber() const { return true; }; + + protected: + virtual ~DataSource() {} + DataSource(DataSourceDependencies dependencies); + DataSourceDependencies dependencies_; +}; + +} // namespace iorap::inode2filename + +#endif // IORAP_SRC_INODE2FILENAME_DATA_SOURCE_H_ diff --git a/src/inode2filename/inode.cc b/src/inode2filename/inode.cc index cdb2325..cc665ea 100644 --- a/src/inode2filename/inode.cc +++ b/src/inode2filename/inode.cc @@ -79,3 +79,9 @@ bool Inode::Parse(const std::string& str, Inode* out, std::string* error_msg) { } } // namespace iorap::inode2filename + +// Ensure our pollution-free aliases match the typedefs in the system headers. +static_assert(std::is_same_v<iorap::inode2filename::dev_t, dev_t>); +static_assert(std::is_same_v<iorap::inode2filename::ino_t, ino_t>); + +// TODO: consider some tests for major, minor, etc.
\ No newline at end of file diff --git a/src/inode2filename/inode.h b/src/inode2filename/inode.h index 2dd5611..f336a14 100644 --- a/src/inode2filename/inode.h +++ b/src/inode2filename/inode.h @@ -23,22 +23,97 @@ namespace iorap::inode2filename { +// Avoid polluting headers. +#if defined(__ANDROID__) +# if !defined(__LP64__) +/* This historical accident means that we had a 32-bit dev_t on 32-bit architectures. */ +using dev_t = uint32_t; +# else +using dev_t = uint64_t; +# endif +using ino_t = unsigned long; +#else +# if !defined(__x86_64__) +using dev_t = unsigned long long; +using ino_t = unsigned long long; +# else +using dev_t = unsigned long; +using ino_t = unsigned long; +# endif +#endif + +#ifdef makedev +#undef makedev +#endif + +/** Combines `major` and `minor` into a device number. */ +constexpr inline dev_t makedev(unsigned int major, unsigned int minor) { + return + (((major) & 0xfffff000ULL) << 32) | (((major) & 0xfffULL) << 8) | + (((minor) & 0xffffff00ULL) << 12) | (((minor) & 0xffULL)); +} + +#ifdef major +#undef major +#endif + +/** Extracts the major part of a device number. */ +constexpr inline unsigned int major(dev_t dev) { + return + ((unsigned) ((((unsigned long long) (dev) >> 32) & 0xfffff000) | (((dev) >> 8) & 0xfff))); +} + +#ifdef minor +#undef minor +#endif + +/** Extracts the minor part of a device number. */ +constexpr inline unsigned int minor(dev_t dev) { + return + ((unsigned) ((((dev) >> 12) & 0xffffff00) | ((dev) & 0xff))); +}; +// Note: above definitions copied from sysmacros.h, to avoid polluting global namespace in a header. + +/* + * A convenient datum representing a (dev_t, ino_t) tuple. + * + * ino_t values may be reused across different devices (e.g. different partitions), + * so we need the full tuple to uniquely identify an inode on a system. + */ struct Inode { size_t device_major; // dev_t = makedev(major, minor) size_t device_minor; size_t inode; // ino_t = inode + // "Major:minor:inode" OR "dev_t@inode" static bool Parse(const std::string& str, /*out*/Inode* out, /*out*/std::string* error_msg); - bool operator==(const Inode& rhs) const { + constexpr bool operator==(const Inode& rhs) const { return device_major == rhs.device_major && device_minor == rhs.device_minor && inode == rhs.inode; } - bool operator!=(const Inode& rhs) const { + constexpr bool operator!=(const Inode& rhs) const { return !(*this == rhs); } + + Inode() = default; + constexpr Inode(size_t device_major, size_t device_minor, size_t inode) + : device_major{device_major}, device_minor{device_minor}, inode{inode} { + } + + static constexpr Inode FromDeviceAndInode(dev_t dev, ino_t inode) { + return Inode{major(dev), minor(dev), static_cast<size_t>(inode)}; + } + + constexpr dev_t GetDevice() const { + return makedev(device_major, device_minor); + } + + constexpr ino_t GetInode() const { + return static_cast<ino_t>(inode); + } }; inline std::ostream& operator<<(std::ostream& os, const Inode& inode) { @@ -62,4 +137,14 @@ namespace std { }; } // namespace std +namespace rxcpp { +template <class T, typename> +struct filtered_hash; + +// support for the 'distinct' rx operator. +template <> +struct filtered_hash<iorap::inode2filename::Inode, void> : std::hash<iorap::inode2filename::Inode> { +}; +} // namespace rxcpp + #endif // IORAP_SRC_INODE2FILENAME_INODE_H_ diff --git a/src/inode2filename/inode_resolver.cc b/src/inode2filename/inode_resolver.cc new file mode 100644 index 0000000..5e2945d --- /dev/null +++ b/src/inode2filename/inode_resolver.cc @@ -0,0 +1,207 @@ +// Copyright (C) 2019 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. + +#include "inode2filename/inode_resolver.h" + +#include "common/cmd_utils.h" +#include "inode2filename/out_of_process_inode_resolver.h" +#include "inode2filename/search_directories.h" + +#include <android-base/logging.h> + +#include <fstream> +#include <stdio.h> + +namespace rx = rxcpp; + +namespace iorap::inode2filename { + +std::vector<std::string> ToArgs(ProcessMode process_mode) { + const char* value = nullptr; + + switch (process_mode) { + case ProcessMode::kInProcessDirect: + value = "in"; + break; + case ProcessMode::kInProcessIpc: + value = "in-ipc"; + break; + case ProcessMode::kOutOfProcessIpc: + value = "out"; + break; + } + + std::vector<std::string> args; + iorap::common::AppendNamedArg(args, "--process-mode", value); + return args; +} + +std::vector<std::string> ToArgs(VerifyKind verify_kind) { + const char* value = nullptr; + + switch (verify_kind) { + case VerifyKind::kNone: + value = "none"; + break; + case VerifyKind::kStat: + value = "stat"; + break; + } + + std::vector<std::string> args; + iorap::common::AppendNamedArg(args, "--verify", value); + return args; +} + +std::vector<std::string> ToArgs(const InodeResolverDependencies& deps) { + std::vector<std::string> args = ToArgs(*static_cast<const DataSourceDependencies*>(&deps)); + iorap::common::AppendArgsRepeatedly(args, ToArgs(deps.process_mode)); + iorap::common::AppendArgsRepeatedly(args, ToArgs(deps.verify)); + + return args; +} + +struct InodeResolver::Impl { + Impl(InodeResolverDependencies dependencies) + : dependencies_{std::move(dependencies)} { + DCHECK(dependencies_.system_call != nullptr); + data_source_ = DataSource::Create(/*downcast*/dependencies_); + } + Impl(InodeResolverDependencies dependencies, std::shared_ptr<DataSource> data_source) + : dependencies_{std::move(dependencies)} { + DCHECK(dependencies_.system_call != nullptr); + data_source_ = std::move(data_source); + DCHECK(data_source_ != nullptr); + } + InodeResolverDependencies dependencies_; + std::shared_ptr<DataSource> data_source_; +}; + +InodeResolver::InodeResolver(InodeResolverDependencies dependencies) + : impl_(new InodeResolver::Impl{std::move(dependencies)}) { +} + +InodeResolver::InodeResolver(InodeResolverDependencies dependencies, + std::shared_ptr<DataSource> data_source) + : impl_(new InodeResolver::Impl{std::move(dependencies), std::move(data_source)}) { +} + +std::shared_ptr<InodeResolver> InodeResolver::Create(InodeResolverDependencies dependencies) { + if (dependencies.process_mode == ProcessMode::kInProcessDirect) { + return std::shared_ptr<InodeResolver>{ + new InodeResolver{std::move(dependencies)}}; + } else if (dependencies.process_mode == ProcessMode::kOutOfProcessIpc) { + return std::shared_ptr<InodeResolver>{ + new OutOfProcessInodeResolver{std::move(dependencies)}}; + } else { + CHECK(false); + } + return nullptr; +} + +std::shared_ptr<InodeResolver> InodeResolver::Create(InodeResolverDependencies dependencies, + std::shared_ptr<DataSource> data_source) { + if (dependencies.process_mode == ProcessMode::kInProcessDirect) { + return std::shared_ptr<InodeResolver>{ + new InodeResolver{std::move(dependencies), std::move(data_source)}}; + } else if (dependencies.process_mode == ProcessMode::kOutOfProcessIpc) { + CHECK(false); // directly providing a DataSource only makes sense in-process + } else { + CHECK(false); + } + return nullptr; +} + +rxcpp::observable<InodeResult> + InodeResolver::FindFilenamesFromInodes(rxcpp::observable<Inode> inodes) const { + + // It's inefficient to search for inodes until the full search list is available, + // so first reduce to a vector so we can access all the inodes simultaneously. + return inodes.reduce(std::vector<Inode>{}, + [](std::vector<Inode> vec, Inode inode) { + vec.push_back(inode); + return vec; + }, + [](std::vector<Inode> v) { + return v; // TODO: use an identity function + }) + .flat_map([self=shared_from_this()](std::vector<Inode> vec) { + // All borrowed values (e.g. SystemCall) must outlive the observable. + return self->FindFilenamesFromInodes(vec); + } + ); +} + +rxcpp::observable<InodeResult> +InodeResolver::FindFilenamesFromInodes(std::vector<Inode> inodes) const { + const DataSource& data_source = *impl_->data_source_; + const InodeResolverDependencies& dependencies = impl_->dependencies_; + + // Get lazy list of inodes from the data source. + rxcpp::observable<InodeResult> all_inodes = impl_->data_source_->EmitInodes(); + + // Filter it according to the source+dependency requirements. + // Unsubscribe from 'all_inodes' early if all inodes are matched early. + const bool needs_device_number = !data_source.ResultIncludesDeviceNumber(); + const bool needs_verification = dependencies.verify == VerifyKind::kStat; + SearchDirectories search{impl_->dependencies_.system_call}; + return search.FilterFilenamesForSpecificInodes(all_inodes, + inodes, + needs_device_number, + needs_verification); +} + +rxcpp::observable<InodeResult> +InodeResolver::EmitAll() const { + const DataSource& data_source = *impl_->data_source_; + const InodeResolverDependencies& dependencies = impl_->dependencies_; + + // Get lazy list of inodes from the data source. + rxcpp::observable<InodeResult> all_inodes = impl_->data_source_->EmitInodes(); + + // Apply verification and fill-in missing device numbers. + const bool needs_device_number = !data_source.ResultIncludesDeviceNumber(); + const bool needs_verification = dependencies.verify == VerifyKind::kStat; + SearchDirectories search{impl_->dependencies_.system_call}; + return search.EmitAllFilenames(all_inodes, + needs_device_number, + needs_verification); +} + +InodeResolver::~InodeResolver() { + // std::unique_ptr requires complete types, but we hide the definition in the header. + delete impl_; + // XX: Does this work if we just force the dtor definition into the .cc file with a unique_ptr? +} + +InodeResolverDependencies& InodeResolver::GetDependencies() { + return impl_->dependencies_; +} + +const InodeResolverDependencies& InodeResolver::GetDependencies() const { + return impl_->dependencies_; +} + +void InodeResolver::StartRecording() { + impl_->data_source_->StartRecording(); +} + +void InodeResolver::StopRecording() { + impl_->data_source_->StopRecording(); +} + +// TODO: refactor more code from search_directories into this file. +// XX: do we also need a DataSink class? lets see if recording gets more complicated. + +} // namespace iorap::inode2filename diff --git a/src/inode2filename/inode_resolver.h b/src/inode2filename/inode_resolver.h new file mode 100644 index 0000000..218640f --- /dev/null +++ b/src/inode2filename/inode_resolver.h @@ -0,0 +1,121 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_INODE2FILENAME_INODE_RESOLVER_H_ +#define IORAP_SRC_INODE2FILENAME_INODE_RESOLVER_H_ + +#include "common/expected.h" +#include "inode2filename/data_source.h" +#include "inode2filename/inode.h" +#include "inode2filename/system_call.h" + +#include <rxcpp/rx.hpp> + +#include <memory> +#include <optional> +#include <string> +#include <vector> +namespace iorap::inode2filename { + +enum class ProcessMode { + // Test modes: + kInProcessDirect, // Execute the code directly. + kInProcessIpc, // Execute code via IPC layer using multiple threads. + // Shipping mode: + kOutOfProcessIpc, // Execute code via fork+exec with IPC. + + // Note: in-process system-wide stat(2)/readdir/etc is blocked by selinux. + // Attempting to call the test modes will fail with -EPERM. + // + // Use fork+exec mode in shipping configurations, which spawns inode2filename + // as a separate command. +}; + +enum class VerifyKind { + kNone, + kStat, +}; + +std::vector<std::string> ToArgs(VerifyKind verify_kind); + +struct InodeResolverDependencies : public DataSourceDependencies { + ProcessMode process_mode = ProcessMode::kInProcessDirect; + VerifyKind verify{VerifyKind::kStat}; // Filter out results that aren't up-to-date with stat(2) ? +}; + +std::vector<std::string> ToArgs(const InodeResolverDependencies& deps); + +// Create an rx-observable chain that allows searching for inode->filename mappings given +// a set of inode keys. +class InodeResolver : public std::enable_shared_from_this<InodeResolver> { + public: + static std::shared_ptr<InodeResolver> Create(InodeResolverDependencies dependencies, + std::shared_ptr<DataSource> data_source); // nonnull + + // Convenience function for above: Uses DataSource::Create for the data-source. + static std::shared_ptr<InodeResolver> Create(InodeResolverDependencies dependencies); + + // Search the associated data source to map each inode in 'inodes' to a file path. + // + // Observes DataSource::EmitInodes(), which is unsubscribed from early once all inodes are found. + // + // Notes: + // * Searching does not begin until all 'inodes' are observed to avoid rescanning. + // * If the observable is unsubscribed to prior to completion, searching will halt. + // + // Post-condition: All emitted results are in inodes, and all inodes are in emitted results. + rxcpp::observable<InodeResult> + FindFilenamesFromInodes(rxcpp::observable<Inode> inodes) const; + // TODO: feels like we could turn this into a general helper? + // Convenience function for above. + virtual rxcpp::observable<InodeResult> + FindFilenamesFromInodes(std::vector<Inode> inodes) const; + + // Enumerate *all* inodes available from the data source, associating it with a filepath. + // + // Depending on the data source (e.g. diskscan), it can take a very long time for this observable + // to complete. The intended use-case is for development/debugging, not for production. + // + // Observes DataSource::EmitInodes() until it reaches #on_completed. + // + // Notes: + // * If the observable is unsubscribed to prior to completion, searching will halt. + virtual rxcpp::observable<InodeResult> + EmitAll() const; + + // Notifies the DataSource to begin recording. + // Some DataSources may be continuously refreshing, but only if recording is enabled. + // To get the most up-to-date data, toggle recording before reading the inodes out. + void StartRecording(); // XX: feels like this should be BPF-specific. + + // Notifies the DataSource to stop recording. + // Some DataSources may be continuously refreshing, but only if recording is enabled. + // The snapshot of data returned by e.g. #EmitAll would then not change outside of recording. + void StopRecording(); + + virtual ~InodeResolver(); + private: + struct Impl; + Impl* impl_; + + protected: + InodeResolver(InodeResolverDependencies dependencies); + InodeResolver(InodeResolverDependencies dependencies, std::shared_ptr<DataSource> data_source); + InodeResolverDependencies& GetDependencies(); + const InodeResolverDependencies& GetDependencies() const; +}; + +} + +#endif // IORAP_SRC_INODE2FILENAME_INODE_RESOLVER_H_ diff --git a/src/inode2filename/inode_result.cc b/src/inode2filename/inode_result.cc new file mode 100644 index 0000000..139b038 --- /dev/null +++ b/src/inode2filename/inode_result.cc @@ -0,0 +1,62 @@ +// Copyright (C) 2019 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. + +#include "inode2filename/inode_result.h" + +#include <string.h> + +namespace iorap::inode2filename { + +std::optional<std::string_view> InodeResult::ErrorMessage() const { + if (data) { + return std::nullopt; + } + + const int err_no = data.error(); + return std::string_view{ + [=]() -> const char * { + switch (err_no) { + case InodeResult::kCouldNotFindFilename: + return "Could not find filename"; + case InodeResult::kVerificationFailed: + return "Verification failed"; + default: + return strerror(err_no); + } + }() + }; +} + +std::ostream& operator<<(std::ostream& os, const InodeResult& result) { + os << "InodeResult{"; + if (result) { + os << "OK,"; + } else { + os << "ERR,"; + } + + os << result.inode << ","; + + if (result) { + os << "\"" << result.data.value() << "\""; + } else { + os << result.data.error(); + os << " (" << *result.ErrorMessage() << ")"; + } + + os << "}"; + return os; +} + +} // namespace iorap::inode2filename
\ No newline at end of file diff --git a/src/inode2filename/inode_result.h b/src/inode2filename/inode_result.h new file mode 100644 index 0000000..df352fb --- /dev/null +++ b/src/inode2filename/inode_result.h @@ -0,0 +1,82 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_INODE2FILENAME_INODE_RESULT_H_ +#define IORAP_SRC_INODE2FILENAME_INODE_RESULT_H_ + +#include "common/expected.h" +#include "inode2filename/inode.h" +#include "inode2filename/inode_result.h" +#include "inode2filename/system_call.h" + +#include <rxcpp/rx.hpp> + +#include <memory> +#include <optional> +#include <string> +#include <vector> +namespace iorap::inode2filename { + +// Tuple of (Inode -> (Filename|Errno)) +struct InodeResult { + // We set this error when all root directories have been searched and + // yet we still could not find a corresponding filename for the inode under search. + static constexpr int kCouldNotFindFilename = ENOKEY; + + // An initial inode->filename mapping was found, but subsequent verification for it failed. + static constexpr int kVerificationFailed = EKEYEXPIRED; + + // There is always an inode, but sometimes we may fail to resolve the filename. + Inode inode; + // Value: Contains the filename (with a root directory as a prefix). + // Error: Contains the errno, usually one of the above, otherwise some system error. + iorap::expected<std::string /*filename*/, int /*errno*/> data; + + static InodeResult makeSuccess(Inode inode, std::string filename) { + return InodeResult{inode, std::move(filename)}; + } + + static InodeResult makeFailure(Inode inode, int err_no) { + return InodeResult{inode, iorap::unexpected{err_no}}; + } + + constexpr explicit operator bool() const { + return data.has_value(); + } + + constexpr bool operator==(const InodeResult& other) const { + if (inode == other.inode) { + if (data && other.data) { + return *data == *other.data; + } else if (!data && !other.data) { + return data.error() == other.data.error(); + } + // TODO: operator== for expected + } + return false; + } + + constexpr bool operator!=(const InodeResult& other) const { + return !(*this == other); + } + + // Returns a human-readable error message, or 'nullopt' if there was no error. + std::optional<std::string_view> ErrorMessage() const; +}; + +std::ostream& operator<<(std::ostream& os, const InodeResult& result); + +} // namespace iorap::inode2filename + +#endif // IORAP_SRC_INODE2FILENAME_INODE_RESULT_H_
\ No newline at end of file diff --git a/src/inode2filename/main.cc b/src/inode2filename/main.cc index 2da364c..38d6eab 100644 --- a/src/inode2filename/main.cc +++ b/src/inode2filename/main.cc @@ -14,12 +14,18 @@ #include "common/debug.h" #include "common/expected.h" -#include "inode2filename/search_directories.h" +#include "inode2filename/inode_resolver.h" -using namespace iorap::inode2filename; // NOLINT +#include <android-base/strings.h> + +#include <iostream> +#include <fstream> +#include <string_view> #if defined(IORAP_INODE2FILENAME_MAIN) +namespace iorap::inode2filename { + void Usage(char** argv) { std::cerr << "Usage: " << argv[0] << " <options> <<inode_syntax>> [inode_syntax1 inode_syntax2 ...]" << std::endl; std::cerr << "" << std::endl; @@ -28,25 +34,174 @@ void Usage(char** argv) { std::cerr << " the program will terminate." << std::endl; std::cerr << "" << std::endl; std::cerr << " Inode syntax: ('dev_t@inode' | 'major:minor:inode')" << std::endl; + std::cerr << "" << std::endl; // CLI-only flags. std::cerr << " --help,-h Print this Usage." << std::endl; - std::cerr << " --root,-r Add root directory (default '.'). Repeatable." << std::endl; std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl; std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl; + std::cerr << "" << std::endl; // General flags. + std::cerr << " --all,-a Enumerate all inode->filename mappings in the dataset (default off)." << std::endl; + std::cerr << " All <<inode_syntaxN>> arguments are ignored." << std::endl; + std::cerr << " --data-source=, Choose a data source (default 'diskscan')." << std::endl; + std::cerr << " -ds " << std::endl; + std::cerr << " diskscan Scan disk recursively using readdir." << std::endl; + std::cerr << " textcache Use the file from the '--output-format=text'." << std::endl; + std::cerr << " bpf Query kernel BPF maps (experimental)." << std::endl; + std::cerr << " --output=,-o Choose an output file (default 'stdout')." << std::endl; + std::cerr << " --output-format=, Choose an output format (default 'log')." << std::endl; + std::cerr << " -of " << std::endl; + std::cerr << " log Log human-readable, non-parsable format to stdout+logcat." << std::endl; + std::cerr << " textcache Results are in the same format as system/extras/pagecache." << std::endl; + std::cerr << " ipc Results are in a binary inter-process communications format" << std::endl; + std::cerr << " --process-mode=, Choose a process mode (default 'in'). Test-oriented." << std::endl; + std::cerr << " -pm " << std::endl; + std::cerr << " in Use a single process to do the work in." << std::endl; + std::cerr << " out Out-of-process work (forks into a -pm=in)." << std::endl; + std::cerr << " --verify=,-vy Verification modes for the data source (default 'stat')." << std::endl; + std::cerr << " stat Use stat(2) call to validate data inodes are up-to-date. " << std::endl; + std::cerr << " none Trust that the data-source is up-to-date without checking." << std::endl; + std::cerr << "" << std::endl; // --data-source=<?> specific flags. + std::cerr << " Data-source-specific commands:" << std::endl; + std::cerr << " --data-source=diskscan" << std::endl; + std::cerr << " --root=,-r Add root directory (default '.'). Repeatable." << std::endl; + std::cerr << " --data-source=textcache" << std::endl; + std::cerr << " --textcache=,-tc Name of file that contains the textcache." << std::endl; + std::cerr << "" << std::endl; // Programmatic flags. + std::cerr << " --in-fd=# Input file descriptor. Default input is from argv." << std::endl; + std::cerr << " --out-fd=# Output file descriptor. Default stdout." << std::endl; exit(1); } -static fruit::Component<SearchDirectories> GetSearchDirectoriesComponent() { +static fruit::Component<SystemCall> GetSystemCallComponent() { return fruit::createComponent().bind<SystemCall, SystemCallImpl>(); } +std::optional<DataSourceKind> ParseDataSourceKind(std::string_view str) { + if (str == "diskscan") { + return DataSourceKind::kDiskScan; + } else if (str == "textcache") { + return DataSourceKind::kTextCache; + } else if (str == "bpf") { + return DataSourceKind::kBpf; + } + return std::nullopt; +} + +enum class OutputFormatKind { + kLog, + kTextCache, + kIpc, +}; + +std::optional<OutputFormatKind> ParseOutputFormatKind(std::string_view str) { + if (str == "log") { + return OutputFormatKind::kLog; + } else if (str == "textcache") { + return OutputFormatKind::kTextCache; + } else if (str == "ipc") { + return OutputFormatKind::kIpc; + } + return std::nullopt; +} + +std::optional<VerifyKind> ParseVerifyKind(std::string_view str) { + if (str == "none") { + return VerifyKind::kNone; + } else if (str == "stat") { + return VerifyKind::kStat; + } + return std::nullopt; +} + +std::optional<ProcessMode> ParseProcessMode(std::string_view str) { + if (str == "in") { + return ProcessMode::kInProcessDirect; + } else if (str == "out") { + return ProcessMode::kOutOfProcessIpc; + } + return std::nullopt; +} + +bool StartsWith(std::string_view haystack, std::string_view needle) { + return haystack.size() >= needle.size() + && haystack.compare(0, needle.size(), needle) == 0; +} + +bool EndsWith(std::string_view haystack, std::string_view needle) { + return haystack.size() >= needle.size() + && haystack.compare(haystack.size() - needle.size(), haystack.npos, needle) == 0; +} + +bool StartsWithOneOf(std::string_view haystack, + std::string_view needle, + std::string_view needle2) { + return StartsWith(haystack, needle) || StartsWith(haystack, needle2); +} + +enum ParseError { + kParseSkip, + kParseFailed, +}; + +std::optional<std::string> ParseNamedArgument(std::initializer_list<std::string> names, + std::string argstr, + std::optional<std::string> arg_next, + /*inout*/ + int* arg_pos) { + for (const std::string& name : names) { + { + // Try parsing only 'argstr' for '--foo=bar' type parameters. + std::vector<std::string> split_str = ::android::base::Split(argstr, "="); + if (split_str.size() >= 2) { + /* + std::cerr << "ParseNamedArgument(name=" << name << ", argstr='" + << argstr << "')" << std::endl; + */ + + if (split_str[0] + "=" == name) { + return split_str[1]; + } + } + } + //if (EndsWith(name, "=")) { + // continue; + /*} else */ { + // Try parsing 'argstr arg_next' for '-foo bar' type parameters. + if (argstr == name) { + ++(*arg_pos); + + if (arg_next) { + return arg_next; + } else { + // Missing argument, e.g. '-foo' was the last token in the argv. + std::cerr << "Missing " << name << " flag value." << std::endl; + exit(1); + } + } + } + } + + return std::nullopt; +} + int main(int argc, char** argv) { android::base::InitLogging(argv); android::base::SetLogger(android::base::StderrLogger); + bool all = false; bool wait_for_keystroke = false; bool enable_verbose = false; std::vector<std::string> root_directories; std::vector<Inode> inode_list; + int recording_time_sec = 0; + + DataSourceKind data_source = DataSourceKind::kDiskScan; + OutputFormatKind output_format = OutputFormatKind::kLog; + VerifyKind verify = VerifyKind::kStat; + ProcessMode process_mode = ProcessMode::kInProcessDirect; + + std::optional<std::string> output_filename; + std::optional<int /*fd*/> in_fd, out_fd; // input-output file descriptors [for fork+exec]. + std::optional<std::string> text_cache_filename; if (argc == 1) { Usage(argv); @@ -54,22 +209,80 @@ int main(int argc, char** argv) { for (int arg = 1; arg < argc; ++arg) { std::string argstr = argv[arg]; - bool has_arg_next = (arg+1)<argc; - std::string arg_next = has_arg_next ? argv[arg+1] : ""; + std::optional<std::string> arg_next; + if ((arg + 1) < argc) { + arg_next = argv[arg+1]; + } if (argstr == "--help" || argstr == "-h") { Usage(argv); - } else if (argstr == "--root" || argstr == "-r") { - if (!has_arg_next) { - std::cerr << "Missing --root <value>" << std::endl; - return 1; - } - root_directories.push_back(arg_next); - ++arg; + } else if (auto val = ParseNamedArgument({"--root=", "-r"}, argstr, arg_next, /*inout*/&arg); + val) { + root_directories.push_back(*val); } else if (argstr == "--verbose" || argstr == "-v") { enable_verbose = true; } else if (argstr == "--wait" || argstr == "-w") { wait_for_keystroke = true; + } + else if (argstr == "--all" || argstr == "-a") { + all = true; + } else if (auto val = ParseNamedArgument({"--data-source=", "-ds"}, + argstr, + arg_next, + /*inout*/&arg); + val) { + auto ds = ParseDataSourceKind(*val); + if (!ds) { + std::cerr << "Invalid --data-source=<value>" << std::endl; + return 1; + } + data_source = *ds; + } else if (auto val = ParseNamedArgument({"--output=", "-o"}, + argstr, + arg_next, + /*inout*/&arg); + val) { + output_filename = *val; + } else if (auto val = ParseNamedArgument({"--process-mode=", "-pm"}, + argstr, + arg_next, + /*inout*/&arg); + val) { + auto pm = ParseProcessMode(*val); + if (!pm) { + std::cerr << "Invalid --process-mode=<value>" << std::endl; + return 1; + } + process_mode = *pm; + } + else if (auto val = ParseNamedArgument({"--output-format=", "-of"}, + argstr, + arg_next, + /*inout*/&arg); + val) { + auto of = ParseOutputFormatKind(*val); + if (!of) { + std::cerr << "Missing --output-format=<value>" << std::endl; + return 1; + } + output_format = *of; + } else if (auto val = ParseNamedArgument({"--verify=", "-vy="}, + argstr, + arg_next, + /*inout*/&arg); + val) { + auto vy = ParseVerifyKind(*val); + if (!vy) { + std::cerr << "Invalid --verify=<value>" << std::endl; + return 1; + } + verify = *vy; + } else if (auto val = ParseNamedArgument({"--textcache=", "-tc"}, + argstr, + arg_next, + /*inout*/&arg); + val) { + text_cache_filename = *val; } else { Inode maybe_inode{}; @@ -94,10 +307,23 @@ int main(int argc, char** argv) { root_directories.push_back("."); } - if (inode_list.size() == 0) { - DCHECK_EQ(true, false); - std::cerr << "Provide at least one inode." << std::endl; + if (inode_list.size() == 0 && !all) { + std::cerr << "Provide at least one inode. Or use --all to dump everything." << std::endl; return 1; + } else if (all && inode_list.size() > 0) { + std::cerr << "[WARNING]: --all flag ignores all inodes passed on command line." << std::endl; + } + + std::ofstream fout; + if (output_filename) { + fout.open(*output_filename); + if (!fout) { + std::cerr << "Failed to open output file for writing: \"" << *output_filename << "\""; + return 1; + } + } else { + fout.open("/dev/null"); // have to open *something* otherwise rdbuf fails. + fout.basic_ios<char>::rdbuf(std::cout.rdbuf()); } if (enable_verbose) { @@ -109,7 +335,12 @@ int main(int argc, char** argv) { for (auto& inode_num : inode_list) { LOG(VERBOSE) << "Searching for inode " << inode_num; } + + LOG(VERBOSE) << "Dumping all inodes? " << all; } + // else use + // $> ANDROID_LOG_TAGS='*:d' iorap.inode2filename <args> + // which will enable arbitrary log levels. // Useful to attach a debugger... // 1) $> inode2filename -w <args> @@ -120,33 +351,90 @@ int main(int argc, char** argv) { std::cin >> wait_for_keystroke; } - fruit::Injector<SearchDirectories> injector(GetSearchDirectoriesComponent); - SearchDirectories* search_directories = injector.get<SearchDirectories*>(); + fruit::Injector<SystemCall> injector(GetSystemCallComponent); + + InodeResolverDependencies ir_dependencies; + // Passed from command-line. + ir_dependencies.data_source = data_source; + ir_dependencies.process_mode = process_mode; + ir_dependencies.root_directories = root_directories; + ir_dependencies.text_cache_filename = text_cache_filename; + ir_dependencies.verify = verify; + // Hardcoded. + ir_dependencies.system_call = injector.get<SystemCall*>(); + + std::shared_ptr<InodeResolver> inode_resolver = + InodeResolver::Create(ir_dependencies); - auto/*observable[2]*/ [inode_results, connectable] = - search_directories->FindFilenamesFromInodesPair( - std::move(root_directories), - std::move(inode_list), - SearchMode::kInProcessDirect); + inode_resolver->StartRecording(); + sleep(recording_time_sec); // TODO: add cli flag for this when we add something that needs it. + inode_resolver->StopRecording(); - int return_code = 1; - inode_results.subscribe([&return_code](const InodeResult& result) { + auto/*observable<InodeResult>*/ inode_results = all + ? inode_resolver->EmitAll() + : inode_resolver->FindFilenamesFromInodes(std::move(inode_list)); + + int return_code = 2; + inode_results.subscribe( + /*on_next*/[&return_code, output_format, &fout](const InodeResult& result) { if (result) { - LOG(DEBUG) << "Inode match: " << result.inode << ", " << result.data.value(); - std::cout << "Inode match: " << result.inode << ", " << result.data.value() << std::endl; + LOG(DEBUG) << "Inode match: " << result; + if (output_format == OutputFormatKind::kLog) { + fout << "\033[1;32m[OK]\033[0m " + << result.inode + << " \"" << result.data.value() << "\"" << std::endl; + } else if (output_format == OutputFormatKind::kIpc) { + fout << "K " + << result.inode + << " " << result.data.value() << std::endl; + } else if (output_format == OutputFormatKind::kTextCache) { + // Same format as TextCacheDataSource (system/extras/pagecache/pagecache.py -d) + // "$device_number $inode $filesize $filename..." + const Inode& inode = result.inode; + fout << inode.GetDevice() << " " + << inode.GetInode() + << " -1 " // always -1 for filesize, since we don't track what it is. + << result.data.value() << "\n"; // don't use endl which flushes, for faster writes. + } else { + LOG(FATAL) << "Not implemented this kind of --output-format"; + } + return_code = 0; } else { - LOG(WARNING) << "Failed to match inode: " << result.inode; + LOG(DEBUG) << "Failed to match inode: " << result; + if (output_format == OutputFormatKind::kLog) { + fout << "\033[1;31m[ERR]\033[0m " + << result.inode + << " '" << *result.ErrorMessage() << "'" << std::endl; + } else if (output_format == OutputFormatKind::kIpc) { + fout << "E " + << result.inode + << " " << result.data.error() << std::endl; + } + else if (output_format == OutputFormatKind::kTextCache) { + // Don't add bad results to the textcache. They are dropped. + } else { + LOG(FATAL) << "Not implemented this kind of --output-format"; + } } + }, /*on_error*/[&return_code](rxcpp::util::error_ptr error) { + // Usually occurs very early on before we see the first result. + // In this case the error is terminal so we just end up exiting out soon. + return_code = 3; + LOG(ERROR) << "Critical error: " << rxcpp::util::what(error); }); - // Normally #subscribe would start emitting items immediately, but this does nothing yet - // because one of the nodes in the flow graph was published. Published streams make the entire - // downstream inert until #connect is called. - connectable->connect(); - - // 0 -> found at least a single match, 1 -> could not find any matches. + // 0 -> found at least a single match, + // 1 -> bad parameters, + // 2 -> could not find any matches, + // 3 -> rxcpp on_error. return return_code; } +} // namespace iorap::inode2filename + +int main(int argc, char** argv) { + return ::iorap::inode2filename::main(argc, argv); +} + #endif diff --git a/src/inode2filename/out_of_process_inode_resolver.cc b/src/inode2filename/out_of_process_inode_resolver.cc new file mode 100644 index 0000000..88ce6e0 --- /dev/null +++ b/src/inode2filename/out_of_process_inode_resolver.cc @@ -0,0 +1,425 @@ +// Copyright (C) 2020 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. + +#include "common/cmd_utils.h" +#include "inode2filename/inode_resolver.h" +#include "inode2filename/out_of_process_inode_resolver.h" + +#include <android-base/file.h> +#include <android-base/logging.h> +#include <android-base/unique_fd.h> + +#include <sstream> +#include <stdio.h> +#include <unistd.h> + +namespace rx = rxcpp; + +namespace iorap::inode2filename { + +using ::android::base::unique_fd; +using ::android::base::borrowed_fd; + +static const char* GetCommandFileName() { + // Avoid ENOENT by execve by specifying the absolute path of inode2filename. +#ifdef __ANDROID__ + return "/system/bin/iorap.inode2filename"; +#else + static const char* file_name = nullptr; + + if (file_name == nullptr) { + char* out_dir = getenv("ANDROID_HOST_OUT"); + static std::string file_name_str = out_dir; + if (out_dir != nullptr) { + file_name_str += "/bin/"; + } else { + // Assume it's in the same directory as the binary we are in. + std::string self_path; + CHECK(::android::base::Readlink("/proc/self/exe", /*out*/&self_path)); + + std::string self_dir = ::android::base::Dirname(self_path); + file_name_str = self_dir + "/"; + } + file_name_str += "iorap.inode2filename"; + + file_name = file_name_str.c_str(); + } + + return file_name; +#endif +} + +std::error_code ErrorCodeFromErrno() { + int err = errno; + return std::error_code(err, std::system_category()); +} + +std::ios_base::failure IosBaseFailureWithErrno(const char* message) { + std::error_code ec = ErrorCodeFromErrno(); + return std::ios_base::failure(message, ec); +} + +static constexpr bool kDebugFgets = false; + +// This always contains the 'newline' character at the end of the string. +// If there is not, the string is both empty and we hit EOF (or an error occurred). +std::string FgetsWholeLine(FILE* stream, + bool* eof) { + DCHECK(stream != nullptr); + DCHECK(eof != nullptr); + + char buf[1024]; + + std::string str; + *eof = false; + + while (true) { + memset(buf, '\0', sizeof(buf)); + + char* out = fgets(&buf[0], sizeof(buf), stream); + + if (out == nullptr) { + // either EOF or error. + + *eof = true; + if (feof(stream)) { + return str; + } else { + // error! :( + PLOG(ERROR) << "failed to fgets"; + return str; + } + } + + if (kDebugFgets) { + std::string dbg; + + for (size_t i = 0; i < sizeof(buf); ++i) { + if (buf[i] == '\0') { + break; + } + + int val = buf[i]; + + dbg += "," + std::to_string(val); + } + + LOG(DEBUG) << "fgets ascii: " << dbg; + } + + str += buf; + + // fgets always reads at most count-1 characters. + // the last character is always '\0' + // the second-to-last character would be \n if we read the full line, + // and any other character otherwise. + if (!str.empty() && str.back() == '\n') { + // we read the whole line: do not need to call fgets again. + break; + } + } + + return str; +} + +static inline void LeftTrim(/*inout*/std::string& s) { + s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) { + return !std::isspace(ch); + })); +} + +// Parses an --output-format=ipc kind of line into an InodeResult. +// Returns nullopt if parsing failed. +std::optional<InodeResult> ParseFromLine(const std::string& line) { + // inode <- INT:INT:INT + // line_ok <- 'K ' inode ' ' STRING + // line_err <- 'E ' inode ' ' INT + // + // result <- line_ok | line_err + + std::stringstream ss{line}; + + bool result_ok = false; + + std::string ok_or_error; + ss >> ok_or_error; + + if (ss.fail()) { + return std::nullopt; + } + + if (ok_or_error == "K") { + result_ok = true; + } else if (ok_or_error == "E") { + result_ok = false; + } else { + return std::nullopt; + } + + std::string inode_s; + ss >> inode_s; + + if (ss.fail()) { + return std::nullopt; + } + + Inode inode; + + std::string inode_parse_error_msg; + if (!Inode::Parse(inode_s, /*out*/&inode, /*out*/&inode_parse_error_msg)) { + return std::nullopt; + } + + if (result_ok == false) { + int error_code; + ss >> error_code; + + if (ss.fail()) { + return std::nullopt; + } + + return InodeResult::makeFailure(inode, error_code); + } else if (result_ok == true) { + std::string rest_of_line; + + // parse " string with potential spaces[\n]" + // into "string with potential spaces" + std::getline(/*inout*/ss, /*out*/rest_of_line); + LeftTrim(/*inout*/rest_of_line); + + if (ss.fail()) { + return std::nullopt; + } + + const std::string& file_name = rest_of_line; + + return InodeResult::makeSuccess(inode, file_name); + } + + return std::nullopt; +} + +struct OutOfProcessInodeResolver::Impl { + Impl() { + } + + private: + // Create the argv we will pass to the forked inode2filename, corresponds to #EmitAll. + std::vector<std::string> CreateArgvAll(const InodeResolverDependencies& deps) const { + std::vector<std::string> argv; + argv.push_back("--all"); + + return CreateArgv(deps, std::move(argv)); + } + + // Create the argv we will pass to the forked inode2filename, corresponds to + // #FindFilenamesFromInodes. + std::vector<std::string> CreateArgvFind(const InodeResolverDependencies& deps, + const std::vector<Inode>& inodes) const { + std::vector<std::string> argv; + iorap::common::AppendArgsRepeatedly(argv, inodes); + + return CreateArgv(deps, std::move(argv)); + } + + std::vector<std::string> CreateArgv(const InodeResolverDependencies& deps, + std::vector<std::string> append_argv) const { + InodeResolverDependencies deps_oop = deps; + deps_oop.process_mode = ProcessMode::kInProcessDirect; + + std::vector<std::string> argv = ToArgs(deps_oop); + + argv.push_back("--output-format=ipc"); + + if (iorap::common::GetBoolEnvOrProperty("iorap.inode2filename.log.verbose", false)) { + argv.push_back("--verbose"); + } + + iorap::common::AppendArgsRepeatedly(argv, std::move(append_argv)); + + return argv; + } + + public: + // fork+exec into inode2filename with 'inodes' as the search list. + // Each result is parsed into a dest#on_next(result). + // If a fatal error occurs, dest#on_error is called once and no other callbacks are called. + void EmitFromCommandFind(rxcpp::subscriber<InodeResult>& dest, + const InodeResolverDependencies& deps, + const std::vector<Inode>& inodes) { + // Trivial case: complete immediately. + // Executing inode2filename with empty search list will just print the --help menu. + if (inodes.empty()) { + dest.on_completed(); + } + + std::vector<std::string> argv = CreateArgvFind(deps, inodes); + EmitFromCommandWithArgv(/*inout*/dest, std::move(argv), inodes.size()); + } + + // fork+exec into inode2filename with --all (listing *all* inodes). + // Each result is parsed into a dest#on_next(result). + // If a fatal error occurs, dest#on_error is called once and no other callbacks are called. + void EmitFromCommandAll(rxcpp::subscriber<InodeResult>& dest, + const InodeResolverDependencies& deps) { + std::vector<std::string> argv = CreateArgvAll(deps); + EmitFromCommandWithArgv(/*inout*/dest, std::move(argv), /*result_count*/std::nullopt); + } + + private: + void EmitFromCommandWithArgv(rxcpp::subscriber<InodeResult>& dest, + std::vector<std::string> argv_vec, + std::optional<size_t> result_count) { + unique_fd pipe_reader, pipe_writer; + if (!::android::base::Pipe(/*out*/&pipe_reader, /*out*/&pipe_writer)) { + dest.on_error( + rxcpp::util::make_error_ptr( + IosBaseFailureWithErrno("Failed to create out-going pipe for inode2filename"))); + return; + } + + pid_t child = fork(); + if (child == -1) { + dest.on_error( + rxcpp::util::make_error_ptr( + IosBaseFailureWithErrno("Failed to fork process for inode2filename"))); + return; + } else if (child > 0) { // we are the caller of this function + LOG(DEBUG) << "forked into a process for inode2filename , pid = " << child; + } else { + // we are the child that was forked + + const char* kCommandFileName = GetCommandFileName(); + + std::stringstream argv; // for debugging. + for (std::string arg : argv_vec) { + argv << arg << ' '; + } + LOG(DEBUG) << "fork+exec: " << kCommandFileName << " " << argv.str(); + + // Redirect only stdout. stdin is unused, stderr is same as parent. + if (dup2(pipe_writer.get(), STDOUT_FILENO) == -1) { + // Trying to call #on_error does not make sense here because we are in a forked process, + // the only thing we can do is crash definitively. + PLOG(FATAL) << "Failed to dup2 for inode2filename"; + } + + std::unique_ptr<const char *[]> argv_ptr = + common::VecToArgv(kCommandFileName, argv_vec); + + if (execve(kCommandFileName, + (char **)argv_ptr.get(), + /*envp*/nullptr) == -1) { + // Trying to call #on_error does not make sense here because we are in a forked process, + // the only thing we can do is crash definitively. + PLOG(FATAL) << "Failed to execve process for inode2filename"; + } + // This should never return. + } + + // Immediately close the writer end of the pipe because we never use it. + pipe_writer.reset(); + + // Convert pipe(reader) file descriptor into FILE*. + std::unique_ptr<FILE, int(*)(FILE*)> file_reader{ + ::android::base::Fdopen(std::move(pipe_reader), /*mode*/"r"), fclose}; + if (!file_reader) { + dest.on_error( + rxcpp::util::make_error_ptr( + IosBaseFailureWithErrno("Failed to fdopen for inode2filename"))); + return; + } + + size_t actual_result_count = 0; + + bool file_eof = false; + while (!file_eof) { + std::string inode2filename_line = FgetsWholeLine(file_reader.get(), /*out*/&file_eof); + + if (inode2filename_line.empty()) { + if (!file_eof) { + // Ignore empty lines. + LOG(WARNING) << "inode2filename: got empty line"; + } + continue; + } + + LOG(DEBUG) << "inode2filename output-line: " << inode2filename_line; + + std::optional<InodeResult> res = ParseFromLine(inode2filename_line); + if (!res) { + std::string error_msg = "Invalid output: "; + error_msg += inode2filename_line; + dest.on_error( + rxcpp::util::make_error_ptr(std::ios_base::failure(error_msg))); + return; + } + dest.on_next(*res); + + ++actual_result_count; + } + + LOG(DEBUG) << "inode2filename output-eof"; + + // Ensure that the # of inputs into the rx stream match the # of outputs. + // This is validating the post-condition of FindFilenamesFromInodes. + if (result_count && actual_result_count != *result_count) { + std::stringstream ss; + ss << "Invalid number of results, expected: " << *result_count; + ss << ", actual: " << actual_result_count; + + dest.on_error( + rxcpp::util::make_error_ptr(std::ios_base::failure(ss.str()))); + return; + } + + CHECK(child > 0); // we are in the parent process, parse the IPC output of inode2filename + dest.on_completed(); + } +}; + +rxcpp::observable<InodeResult> + OutOfProcessInodeResolver::FindFilenamesFromInodes(std::vector<Inode> inodes) const { + return rxcpp::observable<>::create<InodeResult>( + [self=std::static_pointer_cast<const OutOfProcessInodeResolver>(shared_from_this()), + inodes=std::move(inodes)]( + rxcpp::subscriber<InodeResult> s) { + self->impl_->EmitFromCommandFind(s, self->GetDependencies(), inodes); + }); +} + +rxcpp::observable<InodeResult> + OutOfProcessInodeResolver::EmitAll() const { + auto self = std::static_pointer_cast<const OutOfProcessInodeResolver>(shared_from_this()); + CHECK(self != nullptr); + CHECK(self->impl_ != nullptr); + + return rxcpp::observable<>::create<InodeResult>( + [self](rxcpp::subscriber<InodeResult> s) { + CHECK(self != nullptr); + CHECK(self->impl_ != nullptr); + self->impl_->EmitFromCommandAll(s, self->GetDependencies()); + }); +} + +OutOfProcessInodeResolver::OutOfProcessInodeResolver(InodeResolverDependencies dependencies) + : InodeResolver{std::move(dependencies)}, impl_{new Impl{}} { +} + +OutOfProcessInodeResolver::~OutOfProcessInodeResolver() { + // std::unique_ptr requires complete types, but we hide the definition in the header. + delete impl_; +} + +} // namespace iorap::inode2filename diff --git a/src/inode2filename/out_of_process_inode_resolver.h b/src/inode2filename/out_of_process_inode_resolver.h new file mode 100644 index 0000000..c9f4291 --- /dev/null +++ b/src/inode2filename/out_of_process_inode_resolver.h @@ -0,0 +1,44 @@ +// Copyright (C) 2020 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. + +#ifndef IORAP_SRC_INODE2FILENAME_OUT_OF_PROCESS_INDOE_RESOLVER_H_ +#define IORAP_SRC_INODE2FILENAME_OUT_OF_PROCESS_INDOE_RESOLVER_H_ + +#include "common/expected.h" +#include "inode2filename/inode_resolver.h" + +namespace iorap::inode2filename { + +// Create an InodeResolver that fork+exec+pipes into the binary 'iorap.inode2filename' +// and transmits the results back via an IPC mechanism. +// +// This is instantiated by InodeResolver::Create + ProcessMode::kOutOfProcessIpc +class OutOfProcessInodeResolver : public InodeResolver { + public: + virtual rxcpp::observable<InodeResult> + FindFilenamesFromInodes(std::vector<Inode> inodes) const override; + + virtual rxcpp::observable<InodeResult> + EmitAll() const override; + + OutOfProcessInodeResolver(InodeResolverDependencies dependencies); + ~OutOfProcessInodeResolver(); + private: + struct Impl; + Impl* impl_; +}; + +} + +#endif // IORAP_SRC_INODE2FILENAME_OUT_OF_PROCESS_INDOE_RESOLVER_H_ diff --git a/src/inode2filename/search_directories.cc b/src/inode2filename/search_directories.cc index 2ec09d9..1d31671 100644 --- a/src/inode2filename/search_directories.cc +++ b/src/inode2filename/search_directories.cc @@ -53,11 +53,45 @@ using android::base::StringPrintf; // NOLINT namespace iorap::inode2filename { +#define DEBUG_INODE_SET 0 + // A multimap of 'ino_t -> List[Inode]' (where the value Inodes have the same ino_t as the key). // // A flat list of Inodes is turned into the above map, then keys can be removed one at a time // until the InodeSet eventually becomes empty. struct InodeSet { + + InodeSet() = default; +#if DEBUG_INODE_SET + InodeSet(const InodeSet& other) { + LOG(INFO) << "InodeSet-copyctor"; + set_ = other.set_; + } + + InodeSet(InodeSet&& other) { + LOG(INFO) << "InodeSet-movector"; + set_ = std::move(other.set_); + } + + InodeSet& operator=(const InodeSet& other) { + LOG(INFO) << "InodeSet-opassign-copy"; + set_ = other.set_; + return *this; + } + + InodeSet& operator=(InodeSet&& other) { + LOG(INFO) << "InodeSet-opassign-move"; + set_ = std::move(other.set_); + return *this; + } +#else + InodeSet(InodeSet&& other) = default; + InodeSet& operator=(InodeSet&& other) = default; + // Copying InodeSet can be very expensive, refuse to even allow compiling such code. + InodeSet(const InodeSet& other) = delete; + InodeSet& operator=(const InodeSet& other) = delete; +#endif + struct ValueRange { auto/*Iterable<Inode>*/ begin() { return begin_; @@ -149,7 +183,7 @@ struct InodeSet { }); if (found != inode_list.end()) { - const Inode& inode = found->second; + Inode inode = found->second; LOG(VERBOSE) << "InodeSet:FindAndRemoveInodeInList *success* inode+device " << inode; DCHECK(found->second.inode == stat_buf.st_ino); // Erase the inode from the list. This is important. @@ -160,6 +194,33 @@ struct InodeSet { return std::nullopt; } + // Match all fields of an Inode against another Inode. + // + // The returned Inode (if any) is removed from the InodeSet; it will not be returned by + // FindInodeList in future calls. + std::optional<Inode> FindAndRemoveInodeInList(ValueRange inode_list, + const Inode& inode) { + LOG(VERBOSE) << "FindAndRemoveInodeInList " << inode_list << ", " + << inode << "}"; + + auto /*iterator*/ found = std::find_if(inode_list.begin(), + inode_list.end(), + [&](const std::pair<ino_t, Inode>& pair) { + return inode == pair.second; + }); + + if (found != inode_list.end()) { + Inode inode = found->second; + LOG(VERBOSE) << "InodeSet:FindAndRemoveInodeInList *success* inode+device " << inode; + DCHECK_EQ(found->second, inode); + // Erase the inode from the list. This is important. + set_.erase(found); + return inode; + } + + return std::nullopt; + } + // TODO: equality and string operators for testing/logging. private: // Explanation: readdir returns a 'file' -> 'ino_t inode' mapping. @@ -641,7 +702,8 @@ struct StatError { }; std::ostream& operator<<(std::ostream& os, const StatError& e) { - os << "StatError{" << e.err_no << "," << e.path_name << "}"; + os << "StatError{" << e.err_no << "," << e.path_name + << ": " << strerror(e.err_no) << "}"; return os; } @@ -685,6 +747,12 @@ struct SearchState { // The InodeSet removes any matching 'Inode'. std::optional<SearchMatch> match; + SearchState() = default; + SearchState(SearchState&& other) = default; + + // Do not copy this because copying InodeSet is excruciatingly slow. + SearchState(const SearchState& other) = delete; + // TODO: make sure this doesn't copy [inodes], as that would be unnecessarily expensive. }; @@ -727,18 +795,19 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode // DirectoryEntry is missing the dev_t portion, so we may need to call scan(2) again // to confirm the dev_t. We skip calling scan(2) when the ino_t does not match. // InodeSet lets us optimally avoid calling scan(2). - SearchState initial; - initial.inode_set = InodeSet::OfList(inode_search_list); + std::shared_ptr<SearchState> initial = std::make_shared<SearchState>(); + initial->inode_set = InodeSet::OfList(inode_search_list); auto/*[observable<SearchState>,Connectable]*/ search_state_results = find_all_subdir_entries.scan( std::move(initial), - [system_call=system_call](SearchState search_state, const DirectoryEntry& dir_entry) { + [system_call=system_call](std::shared_ptr<SearchState> search_state, + const DirectoryEntry& dir_entry) { LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#Scan " - << dir_entry << ", state: " << search_state; + << dir_entry << ", state: " << *search_state; - search_state.match = std::nullopt; + search_state->match = std::nullopt; - InodeSet* inodes = &search_state.inode_set; + InodeSet* inodes = &search_state->inode_set; // Find all the possible inodes across different devices. InodeSet::ValueRange inode_list = inodes->FindInodeList(dir_entry.d_ino); @@ -754,23 +823,23 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode std::optional<Inode> inode = inodes->FindAndRemoveInodeInList(inode_list, stat_buf); if (inode) { - search_state.match = SearchMatch{inode.value(), dir_entry.filename}; + search_state->match = SearchMatch{inode.value(), dir_entry.filename}; } }); - return search_state; // implicit move. + return search_state; } // Avoid exhausting a potentially 'infinite' stream of files by terminating as soon // as we find every single inode we care about. - ).take_while([](const SearchState& state) { + ).take_while([](std::shared_ptr<SearchState> state) { // Also emit the last item that caused the search set to go empty. - bool cond = !state.inode_set.Empty() || state.match; + bool cond = !state->inode_set.Empty() || state->match; if (WOULD_LOG(VERBOSE)) { static int kCounter = 0; LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#take_while (" << kCounter++ << ",is_empty:" - << state.inode_set.Empty() << ", match:" << state.match.has_value(); + << state->inode_set.Empty() << ", match:" << state->match.has_value(); } // Minor O(1) implementation inefficiency: // (Too minor to fix but it can be strange if looking at the logs or readdir traces). @@ -781,8 +850,8 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode // This means that for cond to go to false, we would've read one extra item and then discarded // it. If that item was the first child of a directory, that means we essentially did // one redundant pass of doing a readdir. - // // In other words if the search set goes to empty while the current item is a directory, + // // it will definitely readdir on it at least once as we try to get the first child in // OnTreeTraversal. // @@ -792,7 +861,7 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode if (!cond) { LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#take_while " - << "should now terminate for " << state; + << "should now terminate for " << *state; } return cond; @@ -813,8 +882,10 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode // The 'matched_inode_values' only touches the match. // Either stream can 'std::move' from those fields because they don't move each other's fields. auto/*observable<InodeResult>*/ matched_inode_values = search_state_results - .filter([](const SearchState& search_state) { return search_state.match.has_value(); }) - .map([](SearchState& search_state) { return std::move(search_state.match.value()); }) + .filter([](std::shared_ptr<SearchState> search_state) { + return search_state->match.has_value(); }) + .map([](std::shared_ptr<SearchState> search_state) { + return std::move(search_state->match.value()); }) // observable<SearchMatch> .map([](SearchMatch search_match) { return InodeResult::makeSuccess(search_match.inode, std::move(search_match.filename)); @@ -823,10 +894,10 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode auto/*observable<?>*/ unmatched_inode_values = search_state_results // The 'last' SearchState is the one that contains all the remaining inodes. .take_last(1) // observable<SearchState> - .flat_map([](const SearchState& search_state) { + .flat_map([](std::shared_ptr<SearchState> search_state) { LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#unmatched -- flat_map"; // Aside: Could've used a move here if the inodes weren't so lightweight already. - return search_state.inode_set.IterateValues(); }) + return search_state->inode_set.IterateValues(); }) // observable<Inode> .map([](const Inode& inode) { LOG(VERBOSE) << "SearchDirectoriesForMatchingInodes#unmatched -- map"; @@ -848,11 +919,10 @@ auto/*[observable<InodeResult>, connectable]*/ SearchDirectoriesForMatchingInode return std::make_pair(all_inode_results, search_state_results); } - rxcpp::observable<InodeResult> SearchDirectories::FindFilenamesFromInodes( std::vector<std::string> root_directories, std::vector<Inode> inode_list, - SearchMode mode) { + SearchMode mode) const { DCHECK(mode == SearchMode::kInProcessDirect) << " other modes not implemented yet"; auto/*observable[2]*/ [inode_results, connectable] = SearchDirectoriesForMatchingInodes( @@ -860,7 +930,7 @@ rxcpp::observable<InodeResult> SearchDirectories::FindFilenamesFromInodes( std::move(inode_list), system_call_); - return inode_results; + return inode_results.ref_count(connectable); } // I think we could avoid this with auto_connect, which rxcpp doesn't seem to have. @@ -898,7 +968,7 @@ std::pair<rxcpp::observable<InodeResult>, std::unique_ptr<SearchDirectories::RxA SearchDirectories::FindFilenamesFromInodesPair( std::vector<std::string> root_directories, std::vector<Inode> inode_list, - SearchMode mode) { + SearchMode mode) const { DCHECK(mode == SearchMode::kInProcessDirect) << " other modes not implemented yet"; auto/*observable[2]*/ [inode_results, connectable] = SearchDirectoriesForMatchingInodes( @@ -912,4 +982,385 @@ std::pair<rxcpp::observable<InodeResult>, std::unique_ptr<SearchDirectories::RxA return {inode_results, std::move(connectable_ptr)}; } +rxcpp::observable<InodeResult> + SearchDirectories::FindFilenamesFromInodes(std::vector<std::string> root_directories, + rxcpp::observable<Inode> inodes, + SearchMode mode) const { + + // It's inefficient to search for inodes until the full search list is available, + // so first reduce to a vector so we can access all the inodes simultaneously. + return inodes.reduce(std::vector<Inode>{}, + [](std::vector<Inode> vec, Inode inode) { + vec.push_back(inode); + return vec; + }, + [](std::vector<Inode> v){ + return v; // TODO: use an identity function + }) + .flat_map([root_directories=std::move(root_directories), mode, self=*this] + (std::vector<Inode> vec) { + // All borrowed values (e.g. SystemCall) must outlive the observable. + return self.FindFilenamesFromInodes(root_directories, vec, mode); + } + ); +} + +auto/*[observable<InodeResult>]*/ EmitAllInodesFromDirectories( + std::vector<std::string> root_dirs, + borrowed<SystemCall*> system_call) { + + // Create a (lazy) observable that will emit each DirectoryEntry that is a recursive subchild + // of root_dirs. Emission will be stopped when its unsubscribed from. + // + // This is done by calling readdir(3) lazily. + auto/*obs<DirectoryEntry>*/ find_all_subdir_entries = ([&]() { + DirectoryEntry sentinel = DirectoryEntry::CreateSentinel(std::move(root_dirs)); + auto/*obs<DirectoryEntryResult*/ results = sentinel.GetSubTreePreOrderEntries(system_call); + + // Drop any errors by logging them to logcat. "Unwrap" the expected into the underlying data. + auto/*obs<DirectoryEntry*>*/ expected_drop_errors = MapExpectedOrLogError(std::move(results)); + return expected_drop_errors; + })(); + + // Fill in -1 for the dev_t since readdir only returns the ino_t. + // The caller of this function is expected to call stat(2) later on to fill in + // the full data. + return find_all_subdir_entries.map([](DirectoryEntry e) { + return InodeResult::makeSuccess(Inode::FromDeviceAndInode(-1, e.d_ino), std::move(e.filename)); + }); +} + +rxcpp::observable<InodeResult> + SearchDirectories::ListAllFilenames(std::vector<std::string> root_directories) const { + // TODO: refactor implementation into DiskScanDataSource. + return EmitAllInodesFromDirectories(std::move(root_directories), + /*borrowed*/system_call_); +} + +struct FilterState { + // Emit 'match' Inodes corresponding to the ones here. + InodeSet inode_set; + + // An inode matching one of the ones in inode_set was discovered in the most-recently + // emitted SearchState. + // + // The InodeSet removes any matching 'Inode'. + std::optional<InodeResult> match; + + FilterState() = default; + FilterState(FilterState&& other) = default; + + // Copying the InodeSet is expensive, so forbid any copies. + FilterState(const FilterState& other) = delete; +}; + +std::ostream& operator<<(std::ostream& os, const FilterState& s) { + os << "FilterState{match:"; + // Print the 'match' first. The InodeSet could be very large so it could be truncated in logs. + if (s.match) { + os << s.match.value(); + } else { + os << "(none)"; + } + os << ", inode_set:" << s.inode_set << "}"; + return os; +} + +rxcpp::observable<InodeResult> SearchDirectories::FilterFilenamesForSpecificInodes( + rxcpp::observable<InodeResult> all_inodes, + std::vector<Inode> inode_list, + bool missing_device_number, // missing dev_t portion? + bool needs_verification) const { + // TODO: refactor into InodeResolver + + borrowed<SystemCall*> system_call = system_call_; + + // InodeResult may be missing the dev_t portion, so we may need to call scan(2) again + // to confirm the dev_t. We skip calling scan(2) when the ino_t does not match. + // InodeSet lets us optimally avoid calling scan(2). + std::shared_ptr<FilterState> initial = std::make_shared<FilterState>(); + initial->inode_set = InodeSet::OfList(inode_list); + + auto/*[observable<FilterState>,Connectable]*/ filter_state_results = all_inodes.scan( + std::move(initial), + [system_call, missing_device_number] + (std::shared_ptr<FilterState> filter_state, InodeResult inode_result) { + LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#Scan " + << inode_result << ", state: " << *filter_state; + + filter_state->match = std::nullopt; + + InodeSet* inodes = &filter_state->inode_set; + + // Find all the possible (dev_t, ino_t) potential needles given an ino_t in the haystack. + InodeSet::ValueRange inode_list = inodes->FindInodeList(inode_result.inode.inode); + + // This inode result doesn't correspond to any inodes we are searching for. + if (!inode_list) { + // Drop the result and keep going. + return filter_state; + } + + if (missing_device_number) { + // Need to fill in dev_t by calling stat(2). + VisitValueOrLogError(std::move(inode_result.data), [&](std::string filename) { + StatResult maybe_stat = Stat(filename, system_call); + VisitValueOrLogError(maybe_stat, [&](const struct stat& stat_buf) { + // Try to match the specific inode. Usually this will not result in a match (nullopt). + std::optional<Inode> inode = inodes->FindAndRemoveInodeInList(inode_list, stat_buf); + + if (inode) { + filter_state->match = InodeResult::makeSuccess(inode.value(), std::move(filename)); + } + }); + + // Note: stat errors are logged here to make the error closer to the occurrence. + // In theory, we could just return it as an InodeResult but then the error would + // just get logged elsewhere. + }); + } else { + // Trust the dev_t in InodeResult is valid. Later passes can verify it. + + // Try to match the specific inode. Usually this will not result in a match (nullopt). + std::optional<Inode> inode = + inodes->FindAndRemoveInodeInList(inode_list, inode_result.inode); + + if (inode) { + filter_state->match = inode_result; + } + + // Note that the InodeResult doesn't necessarily need to have a valid filename here. + // If the earlier pass returned an error-ed result, this will forward the error code. + } + + return filter_state; + } + // Avoid exhausting a potentially 'infinite' stream of files by terminating as soon + // as we find every single inode we care about. + ).take_while([](std::shared_ptr<FilterState> state) { + // Also emit the last item that caused the search set to go empty. + bool cond = !state->inode_set.Empty() || state->match; + + if (WOULD_LOG(VERBOSE)) { + static int kCounter = 0; + LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#take_while (" << kCounter++ << + ",is_empty:" + << state->inode_set.Empty() << ", match:" << state->match.has_value(); + } + // Minor O(1) implementation inefficiency: + // (Too minor to fix but it can be strange if looking at the logs or readdir traces). + // + // Note, because we return 'true' after the search set went empty, + // the overall stream graph still pulls from filter_state_results exactly once more: + // + // This means that for cond to go to false, we would've read one extra item and then discarded + // it. If that item was the first child of a directory, that means we essentially did + // one redundant pass of doing a readdir. + // In other words if the search set goes to empty while the current item is a directory, + // + // it will definitely readdir on it at least once as we try to get the first child in + // OnTreeTraversal. + // + // This could be fixed with a 'take_until(Predicate)' operator which doesn't discard + // the last item when the condition becomes false. However rxcpp seems to lack this operator, + // whereas RxJava has it. + + if (!cond) { + LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#take_while " + << "should now terminate for " << *state; + } + + return cond; + }).publish(); + // The publish here is mandatory. The stream is consumed twice (once by matched and once by + // unmatched streams). Without the publish, once all items from 'matched' were consumed it would + // start another instance of 'filter_state_results' (i.e. it appears as if the search + // is restarted). + // + // By using 'publish', the filter_state_results is effectively shared by both downstream nodes. + // Note that this also requires the subscriber to additionally call #connect on the above stream, + // otherwise no work will happen. + + // Lifetime notes: + // + // The the 'FilterState' is emitted into both below streams simultaneously. + // The 'unmatched_inode_values' only touches the inode_set. + // The 'matched_inode_values' only touches the match. + // Either stream can 'std::move' from those fields because they don't move each other's fields. + auto/*observable<InodeResult>*/ matched_inode_values = filter_state_results + .filter([](std::shared_ptr<FilterState> filter_state) { + return filter_state->match.has_value(); }) + .map([](std::shared_ptr<FilterState> filter_state) { + return std::move(filter_state->match.value()); }); + // observable<InodeResult> + + auto/*observable<?>*/ unmatched_inode_values = filter_state_results + // The 'last' FilterState is the one that contains all the remaining inodes. + .take_last(1) // observable<FilterState> + .flat_map([](std::shared_ptr<FilterState> filter_state) { + LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#unmatched -- flat_map"; + // Aside: Could've used a move here if the inodes weren't so lightweight already. + return filter_state->inode_set.IterateValues(); }) + // observable<Inode> + .map([](const Inode& inode) { + LOG(VERBOSE) << "FilterFilenamesForSpecificInodes#unmatched -- map"; + return InodeResult::makeFailure(inode, InodeResult::kCouldNotFindFilename); + }); + // observable<InodeResult> + + // The matched and unmatched InodeResults are emitted together. + // Use merge, not concat, because we need both observables to be subscribed to simultaneously. + + auto/*observable<InodeResult*/ all_inode_results = + matched_inode_values.merge(unmatched_inode_values); + + // Verify the inode results by calling stat(2). + // Unverified results are turned into an error. + + auto/*observable<InodeResult>*/ verified_inode_results = + all_inode_results.map([needs_verification, system_call](InodeResult result) { + if (!needs_verification || !result) { + // Skip verification if requested, or if the result didn't have a filename. + return result; + } + + const std::string& filename = result.data.value(); + StatResult maybe_stat = Stat(filename, system_call); + + if (maybe_stat) + { + if (result.inode == Inode::FromDeviceAndInode(maybe_stat->st_dev, maybe_stat->st_ino)) { + return result; + } else { + LOG(WARNING) + << "FilterFilenamesForSpecificInodes#verified fail out-of-date inode: " << result; + return InodeResult::makeFailure(result.inode, InodeResult::kVerificationFailed); + } + } else { + // Forward stat errors directly, as it could be a missing security rule, + // but turn -ENOENT into casual verification errors. + const StatError& err = maybe_stat.error(); + int error_code = err.err_no; + if (err.err_no == ENOENT) { + error_code = InodeResult::kVerificationFailed; + + // TODO: Don't LOG(WARNING) here because this could be very common if we + // access the data much much later after the initial results were read in. + LOG(WARNING) + << "FilterFilenamesForSpecificInodes#verified fail out-of-date filename: " << result; + } else { + LOG(ERROR) + << "FilterFilenamesForSpecificInodes#verified stat(2) failure: " << err; + } + + return InodeResult::makeFailure(result.inode, error_code); + } + }); + + // Now that all mid-stream observables have been connected, turn the Connectable observable + // into a regular observable. + return verified_inode_results.ref_count(filter_state_results); +} + +rxcpp::observable<InodeResult> SearchDirectories::EmitAllFilenames( + rxcpp::observable<InodeResult> all_inodes, + bool missing_device_number, // missing dev_t portion? + bool needs_verification) const { + // TODO: refactor into InodeResolver + + borrowed<SystemCall*> system_call = system_call_; + + // InodeResult may be missing the dev_t portion, so we may need to call scan(2) again + // to confirm the dev_t. + + using EmitAllState = std::optional<InodeResult>; + + auto/*[observable<FilterState>,Connectable]*/ all_inode_results = all_inodes.map( + [system_call, missing_device_number](InodeResult inode_result) { + LOG(VERBOSE) << "EmitAllFilenames#map " + << inode_result; + + // Could fail if the device number is missing _and_ stat(2) fails. + EmitAllState match = std::nullopt; + + if (missing_device_number) { + // Need to fill in dev_t by calling stat(2). + VisitValueOrLogError(std::move(inode_result.data), [&](std::string filename) { + StatResult maybe_stat = Stat(filename, system_call); + VisitValueOrLogError(maybe_stat, [&](const struct stat& stat_buf) { + Inode inode = Inode::FromDeviceAndInode(stat_buf.st_dev, stat_buf.st_ino); + match = InodeResult::makeSuccess(inode, std::move(filename)); + }); + + // Note: stat errors are logged here to make the error closer to the occurrence. + // In theory, we could just return it as an InodeResult but then the error would + // just get logged elsewhere. + }); + } else { + // Trust the dev_t in InodeResult is valid. Later passes can verify it. + match = std::move(inode_result); + + // Note that the InodeResult doesn't necessarily need to have a valid filename here. + // If the earlier pass returned an error-ed result, this will forward the error code. + } + + return match; // implicit move. + } + ); + + auto/*observable<InodeResult>*/ matched_inode_values = all_inode_results + .filter([](const EmitAllState& filter_state) { return filter_state.has_value(); }) + .map([](EmitAllState& filter_state) { return std::move(filter_state.value()); }); + // observable<InodeResult> + + // Verify the inode results by calling stat(2). + // Unverified results are turned into an error. + + auto/*observable<InodeResult>*/ verified_inode_results = + matched_inode_values.map([needs_verification, system_call](InodeResult result) { + if (!needs_verification || !result) { + // Skip verification if requested, or if the result didn't have a filename. + return result; + } + + const std::string& filename = result.data.value(); + StatResult maybe_stat = Stat(filename, system_call); + + if (maybe_stat) + { + if (result.inode == Inode::FromDeviceAndInode(maybe_stat->st_dev, maybe_stat->st_ino)) { + return result; + } else { + LOG(WARNING) + << "EmitAllFilenames#verified fail out-of-date inode: " << result; + return InodeResult::makeFailure(result.inode, InodeResult::kVerificationFailed); + } + } else { + // Forward stat errors directly, as it could be a missing security rule, + // but turn -ENOENT into casual verification errors. + const StatError& err = maybe_stat.error(); + int error_code = err.err_no; + if (err.err_no == ENOENT) { + error_code = InodeResult::kVerificationFailed; + + // TODO: Don't LOG(WARNING) here because this could be very common if we + // access the data much much later after the initial results were read in. + LOG(WARNING) + << "EmitAllFilenames#verified fail out-of-date filename: " << result; + } else { + LOG(ERROR) + << "EmitAllFilenames#verified stat(2) failure: " << err; + } + + return InodeResult::makeFailure(result.inode, error_code); + } + }); + + // TODO: refactor this function some more with the Find(inode_set) equivalent. + + // Now that all mid-stream observables have been connected, turn the Connectable observable + // into a regular observable. + return verified_inode_results; +} + } // namespace iorap::inode2filename diff --git a/src/inode2filename/search_directories.h b/src/inode2filename/search_directories.h index 8156574..0b4af78 100644 --- a/src/inode2filename/search_directories.h +++ b/src/inode2filename/search_directories.h @@ -15,52 +15,17 @@ #ifndef IORAP_SRC_INODE2FILENAME_SEARCH_DIRECTORIES_H_ #define IORAP_SRC_INODE2FILENAME_SEARCH_DIRECTORIES_H_ -#include "common/expected.h" #include "inode2filename/inode.h" #include "inode2filename/system_call.h" +#include "inode2filename/inode_resolver.h" #include <fruit/fruit.h> #include <rxcpp/rx.hpp> namespace iorap::inode2filename { -// Tuple of (Inode -> (Filename|Errno)) -struct InodeResult { - // We set this error when all root directories have been searched and - // yet we still could not find a corresponding filename for the inode under search. - static constexpr int kCouldNotFindFilename = -ENOENT; - - Inode inode; - // Value: Contains the filename (with a root directory as a prefix). - // Error: Contains the errno, usually -ENOENT or perhaps a security error. - iorap::expected<std::string /*filename*/, int /*errno*/> data; - - static InodeResult makeSuccess(Inode inode, std::string filename) { - return InodeResult{inode, std::move(filename)}; - } - - static InodeResult makeFailure(Inode inode, int err_no) { - return InodeResult{inode, iorap::unexpected{err_no}}; - } - - constexpr operator bool() const { - return data.has_value(); - } -}; - -enum class SearchMode { - // Test modes: - kInProcessDirect, // Execute the code directly. - kInProcessIpc, // Execute code via IPC layer using multiple threads. - // Shipping mode: - kOutOfProcessIpc, // Execute code via fork+exec with IPC. - - // Note: in-process system-wide stat(2)/readdir/etc is blocked by selinux. - // Attempting to call the test modes will fail with -EPERM. - // - // Use fork+exec mode in shipping configurations, which spawns inode2filename - // as a separate command. -}; +// TODO: rename. +using SearchMode = ProcessMode; struct SearchDirectories { // Type-erased subset of rxcpp::connectable_observable<?> @@ -100,7 +65,7 @@ struct SearchDirectories { rxcpp::observable<InodeResult> FindFilenamesFromInodes(std::vector<std::string> root_directories, std::vector<Inode> inode_list, - SearchMode mode); + SearchMode mode) const; // Create a cold observable of inode results (a lazy stream) corresponding // to the inode search list. @@ -126,7 +91,37 @@ struct SearchDirectories { std::pair<rxcpp::observable<InodeResult>, std::unique_ptr<RxAnyConnectable>> FindFilenamesFromInodesPair(std::vector<std::string> root_directories, std::vector<Inode> inode_list, - SearchMode mode); + SearchMode mode) const; + + // No items on the output stream will be emitted until 'inodes' completes. + // + // The current algorithm is a naive DFS, so if it began too early it would either + // miss the search items or require traversal restarts. + // + // See above for more details. + rxcpp::observable<InodeResult> + FindFilenamesFromInodes(std::vector<std::string> root_directories, + rxcpp::observable<Inode> inodes, + SearchMode mode) const; + + rxcpp::observable<InodeResult> + ListAllFilenames(std::vector<std::string> root_directories) const; + + rxcpp::observable<InodeResult> FilterFilenamesForSpecificInodes( + // haystack that will be subscribed to until all in inode_list are found. + rxcpp::observable<InodeResult> all_inodes, + // key list: traverse all_inodes until we emit all results from inode_list. + std::vector<Inode> inode_list, + // all_inodes have a missing device number: use stat(2) to fill it in. + bool missing_device_number, + bool needs_verification) const; + + rxcpp::observable<InodeResult> EmitAllFilenames( + // haystack that will be subscribed to until all in inode_list are found. + rxcpp::observable<InodeResult> all_inodes, + // all_inodes have a missing device number: use stat(2) to fill it in. + bool missing_device_number, + bool needs_verification) const; // Any borrowed parameters here can also be borrowed by the observables returned by the above // member functions. diff --git a/src/iorapd/main.cc b/src/iorapd/main.cc index ab73fe5..8d806ba 100644 --- a/src/iorapd/main.cc +++ b/src/iorapd/main.cc @@ -16,6 +16,8 @@ #include "binder/iiorap_impl.h" #include "common/debug.h" +#include "common/loggers.h" +#include "db/models.h" #include "manager/event_manager.h" #include <android-base/logging.h> @@ -27,27 +29,6 @@ static constexpr const char* kServiceName = iorap::binder::IIorapImpl::getServiceName(); -// Log to both Stderr and Logd for convenience when running this from the command line. -class StderrAndLogdLogger { - public: - explicit StderrAndLogdLogger(android::base::LogId default_log_id = android::base::MAIN) - : logd_(default_log_id) { - } - - void operator()(::android::base::LogId id, - ::android::base::LogSeverity sev, - const char* tag, - const char* file, - unsigned int line, - const char* message) { - logd_(id, sev, tag, file, line, message); - StderrLogger(id, sev, tag, file, line, message); - } - - private: - ::android::base::LogdLogger logd_; -}; - int main(int /*argc*/, char** argv) { if (android::base::GetBoolProperty("iorapd.log.verbose", iorap::kIsDebugBuild)) { // Show verbose logs if the property is enabled or if we are a debug build. @@ -55,23 +36,35 @@ int main(int /*argc*/, char** argv) { } // Logs go to system logcat. - android::base::InitLogging(argv, StderrAndLogdLogger{android::base::SYSTEM}); + android::base::InitLogging(argv, iorap::common::StderrAndLogdLogger{android::base::SYSTEM}); + LOG(INFO) << kServiceName << " (the prefetchening) firing up"; { - android::ScopedTrace trace_main{ATRACE_TAG_PACKAGE_MANAGER, "main"}; - LOG(INFO) << kServiceName << " (the prefetchening) firing up"; + android::ScopedTrace trace_db_init{ATRACE_TAG_ACTIVITY_MANAGER, "IorapNativeService::db_init"}; + iorap::db::SchemaModel db_schema = + iorap::db::SchemaModel::GetOrCreate( + android::base::GetProperty("iorapd.db.location", + "/data/misc/iorapd/sqlite.db")); + db_schema.MarkSingleton(); + } - android::ScopedTrace trace_start{ATRACE_TAG_PACKAGE_MANAGER, "IorapNativeService::start"}; + std::shared_ptr<iorap::manager::EventManager> event_manager; + { + android::ScopedTrace trace_start{ATRACE_TAG_ACTIVITY_MANAGER, "IorapNativeService::start"}; // TODO: use fruit for this DI. - auto /*std::shared_ptr<EventManager>*/ event_manager = + event_manager = iorap::manager::EventManager::Create(); - if (!iorap::binder::IIorapImpl::Start(std::move(event_manager))) { + if (!iorap::binder::IIorapImpl::Start(event_manager)) { LOG(ERROR) << "Unable to start IorapNativeService"; exit(1); } } + // This must be logged after all other initialization has finished. + LOG(INFO) << kServiceName << " (the prefetchening) readied up"; + + event_manager->Join(); // TODO: shutdown somewhere? // Block until something else shuts down the binder service. android::IPCThreadState::self()->joinThreadPool(); LOG(INFO) << kServiceName << " shutting down"; diff --git a/src/maintenance/controller.cc b/src/maintenance/controller.cc new file mode 100644 index 0000000..daaf08f --- /dev/null +++ b/src/maintenance/controller.cc @@ -0,0 +1,620 @@ +// Copyright (C) 2019 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. + +#include "compiler/compiler.h" +#include "maintenance/controller.h" + +#include "common/cmd_utils.h" +#include "common/debug.h" +#include "common/expected.h" +#include "common/trace.h" + +#include "db/models.h" +#include "inode2filename/inode.h" +#include "inode2filename/search_directories.h" +#include "prefetcher/read_ahead.h" + +#include <android-base/file.h> +#include <utils/Printer.h> + +#include <chrono> +#include <ctime> +#include <iostream> +#include <filesystem> +#include <fstream> +#include <limits> +#include <mutex> +#include <optional> +#include <vector> +#include <string> +#include <sys/wait.h> + +namespace iorap::maintenance { + +const constexpr int64_t kCompilerCheckIntervalMs = 10; +static constexpr size_t kMinTracesForCompilation = 1; + +struct LastJobInfo { + time_t last_run_ns_{0}; + size_t activities_last_compiled_{0}; +}; + +LastJobInfo last_job_info_; +std::mutex last_job_info_mutex_; + +// Gets the path of output compiled trace. +db::CompiledTraceFileModel CalculateNewestFilePath( + const std::string& package_name, + const std::string& activity_name, + int version) { + db::VersionedComponentName versioned_component_name{ + package_name, activity_name, version}; + + db::CompiledTraceFileModel output_file = + db::CompiledTraceFileModel::CalculateNewestFilePath(versioned_component_name); + + return output_file; +} + +using ArgString = const char*; + +static constexpr const char kCommandFileName[] = "/system/bin/iorap.cmd.compiler"; + +int Exec::Execve(const std::string& pathname, + std::vector<std::string>& argv_vec, + char *const envp[]) { + std::unique_ptr<ArgString[]> argv_ptr = + common::VecToArgv(kCommandFileName, argv_vec); + + return execve(pathname.c_str(), (char**)argv_ptr.get(), envp); +} + +pid_t Exec::Fork() { + return fork(); +} + +// Represents the parameters used when fork+exec compiler. +struct CompilerForkParameters { + std::vector<std::string> input_pbs; + std::vector<uint64_t> timestamp_limit_ns; + std::string output_proto; + ControllerParameters controller_params; + + CompilerForkParameters(const std::vector<compiler::CompilationInput>& perfetto_traces, + const std::string& output_proto, + ControllerParameters controller_params) : + output_proto(output_proto), controller_params(controller_params) { + for (compiler::CompilationInput perfetto_trace : perfetto_traces) { + input_pbs.push_back(perfetto_trace.filename); + timestamp_limit_ns.push_back(perfetto_trace.timestamp_limit_ns); + } + } +}; + +std::vector<std::string> MakeCompilerParams(const CompilerForkParameters& params) { + std::vector<std::string> argv; + ControllerParameters controller_params = params.controller_params; + + common::AppendArgsRepeatedly(argv, params.input_pbs); + common::AppendArgsRepeatedly(argv, "--timestamp_limit_ns", params.timestamp_limit_ns); + + if (controller_params.output_text) { + argv.push_back("--output-text"); + } + + common::AppendArgs(argv, "--output-proto", params.output_proto); + + if (controller_params.inode_textcache) { + common::AppendArgs(argv, "--inode-textcache", *controller_params.inode_textcache); + } + + if (controller_params.verbose) { + argv.push_back("--verbose"); + } + + return argv; +} + +// Sets a watch dog for the given pid and kill it if timeout. +std::thread SetTimeoutWatchDog(pid_t pid, int64_t timeout_ms, std::atomic<bool>& cancel_watchdog) { + std::thread watchdog_thread{[pid, timeout_ms, &cancel_watchdog]() { + std::chrono::time_point start = std::chrono::system_clock::now(); + std::chrono::milliseconds timeout(timeout_ms); + while (!cancel_watchdog) { + int status = kill(pid, 0); + if (status != 0) { + LOG(DEBUG) << "Process (" << pid << ") doesn't exist now."; + break; + } + std::chrono::time_point cur = std::chrono::system_clock::now(); + if (cur - start > timeout) { + LOG(INFO) << "Process (" << pid << ") is timeout!"; + LOG(INFO) << "start time: " + << std::chrono::system_clock::to_time_t(start) + << " end time: " + << std::chrono::system_clock::to_time_t(cur) + << " timeout: " + << timeout_ms; + kill(pid, SIGKILL); + break; + } + usleep(kCompilerCheckIntervalMs * 1000); + } + }}; + + return watchdog_thread; +} + +bool StartViaFork(const CompilerForkParameters& params) { + const ControllerParameters& controller_params = params.controller_params; + pid_t child = controller_params.exec->Fork(); + + if (child == -1) { + LOG(FATAL) << "Failed to fork a process for compilation"; + } else if (child > 0) { // we are the caller of this function + LOG(DEBUG) << "forked into a process for compilation , pid = " << child; + + int64_t compiler_timeout_ms = + android::base::GetIntProperty("iorapd.maintenance.compiler_timeout_ms", + /*default*/ 10 * 60 * 1000); // 10 min + std::atomic<bool> cancel_watchdog(false); + std::thread watchdog_thread = SetTimeoutWatchDog(child, compiler_timeout_ms, cancel_watchdog); + int wstatus; + waitpid(child, /*out*/&wstatus, /*options*/0); + + // Terminate the thread after the compiler process is killed or done. + LOG(DEBUG) << "Terminate the watch dog thread."; + cancel_watchdog = true; + watchdog_thread.join(); + + if (!WIFEXITED(wstatus)) { + LOG(ERROR) << "Child terminated abnormally, status: " << WEXITSTATUS(wstatus); + return false; + } + + int status = WEXITSTATUS(wstatus); + LOG(DEBUG) << "Child terminated, status: " << status; + if (status == 0) { + LOG(DEBUG) << "Iorap compilation succeeded"; + return true; + } else { + LOG(ERROR) << "Iorap compilation failed"; + return false; + } + } else { + // we are the child that was forked. + std::vector<std::string> argv_vec = MakeCompilerParams(params); + std::unique_ptr<ArgString[]> argv_ptr = + common::VecToArgv(kCommandFileName, argv_vec); + + std::stringstream argv; // for debugging. + for (std::string arg : argv_vec) { + argv << arg << ' '; + } + LOG(DEBUG) << "fork+exec: " << kCommandFileName << " " << argv.str(); + + controller_params.exec->Execve(kCommandFileName, + argv_vec, + /*envp*/nullptr); + // This should never return. + } + return false; +} + +// Gets the perfetto trace infos in the histories. +std::vector<compiler::CompilationInput> GetPerfettoTraceInfo( + const db::DbHandle& db, + const std::vector<db::AppLaunchHistoryModel>& histories) { + std::vector<compiler::CompilationInput> perfetto_traces; + + for(db::AppLaunchHistoryModel history : histories) { + // Get perfetto trace. + std::optional<db::RawTraceModel> raw_trace = + db::RawTraceModel::SelectByHistoryId(db, history.id); + if (!raw_trace) { + // This is normal: non-cold launches do not have traces. + continue; + } + + uint64_t timestamp_limit = std::numeric_limits<uint64_t>::max(); + // Get corresponding timestamp limit. + if (history.report_fully_drawn_ns) { + timestamp_limit = *history.report_fully_drawn_ns; + } else if (history.total_time_ns) { + timestamp_limit = *history.total_time_ns; + } else { + LOG(DEBUG) << " No timestamp exists. Using the max value."; + } + perfetto_traces.push_back({raw_trace->file_path, timestamp_limit}); + } + return perfetto_traces; +} + +// Helper struct for printing vector. +template <class T> +struct VectorPrinter { + std::vector<T>& values; +}; + +std::ostream& operator<<(std::ostream& os, + const struct compiler::CompilationInput& perfetto_trace) { + os << "file_path: " << perfetto_trace.filename << " " + << "timestamp_limit: " << perfetto_trace.timestamp_limit_ns; + return os; +} + +template <class T> +std::ostream& operator<<(std::ostream& os, const struct VectorPrinter<T>& printer) { + os << "[\n"; + for (T i : printer.values) { + os << i << ",\n"; + } + os << "]\n"; + return os; +} + +// Compiled the perfetto traces for an activity. +bool CompileActivity(const db::DbHandle& db, + int package_id, + const std::string& package_name, + const std::string& activity_name, + int version, + const ControllerParameters& params) { + ScopedFormatTrace atrace_compile_package(ATRACE_TAG_PACKAGE_MANAGER, + "Compile activity %s", + activity_name.c_str()); + + LOG(DEBUG) << "CompileActivity: " << package_name << "/" << activity_name << "@" << version; + + db::CompiledTraceFileModel output_file = + CalculateNewestFilePath(package_name, activity_name, version); + + std::string file_path = output_file.FilePath(); + + if (!params.recompile) { + if (std::filesystem::exists(file_path)) { + LOG(DEBUG) << "compiled trace exists in " << file_path; + + db::VersionedComponentName vcn{package_name, activity_name, version}; + std::optional<db::PrefetchFileModel> prefetch_file = + db::PrefetchFileModel::SelectByVersionedComponentName(db, vcn); + if (prefetch_file) { + return true; + } else { + LOG(WARNING) << "Missing corresponding prefetch_file db row for " << vcn; + // let it go and compile again. we'll insert the prefetch_file at the bottom. + } + } + } + + std::optional<db::ActivityModel> activity = + db::ActivityModel::SelectByNameAndPackageId(db, activity_name.c_str(), package_id); + if (!activity) { + LOG(ERROR) << "Cannot find activity for package_id: " << package_id + <<" activity_name: " <<activity_name; + return false; + } + + int activity_id = activity->id; + + std::vector<db::AppLaunchHistoryModel> histories = + db::AppLaunchHistoryModel::SelectActivityHistoryForCompile(db, activity_id); + + { + std::vector<compiler::CompilationInput> perfetto_traces = + GetPerfettoTraceInfo(db, histories); + + if (perfetto_traces.size() < params.min_traces) { + LOG(DEBUG) << "The number of perfetto traces is " << perfetto_traces.size() + <<", which is less than " << params.min_traces; + return false; + } + + { + std::lock_guard<std::mutex> last_job_info_guard{last_job_info_mutex_}; + last_job_info_.activities_last_compiled_++; + } + + // Show the compilation config. + LOG(DEBUG) << "Try to compiled package_id: " << package_id + << " package_name: " << package_name + << " activity_name: " << activity_name + << " version: " << version + << " file_path: " << file_path + << " verbose: " << params.verbose + << " perfetto_traces: " + << VectorPrinter<compiler::CompilationInput>{perfetto_traces}; + if (params.inode_textcache) { + LOG(DEBUG) << "inode_textcache: " << *params.inode_textcache; + } + + CompilerForkParameters compiler_params{perfetto_traces, file_path, params}; + + if (!output_file.MkdirWithParents()) { + LOG(ERROR) << "Compile activity failed. Failed to mkdirs " << file_path; + return false; + } + + ScopedFormatTrace atrace_compile_fork(ATRACE_TAG_PACKAGE_MANAGER, + "Fork+exec iorap.cmd.compiler", + activity_name.c_str()); + if (!StartViaFork(compiler_params)) { + LOG(ERROR) << "Compilation failed for package_id:" << package_id + << " activity_name: " << activity_name; + return false; + } + } + + std::optional<db::PrefetchFileModel> compiled_trace = + db::PrefetchFileModel::Insert(db, activity_id, file_path); + if (!compiled_trace) { + LOG(ERROR) << "Cannot insert compiled trace activity_id: " << activity_id + << " file_path: " << file_path; + return false; + } + return true; +} + +// Compiled the perfetto traces for activities in an package. +bool CompilePackage(const db::DbHandle& db, + const std::string& package_name, + int version, + const ControllerParameters& params) { + ScopedFormatTrace atrace_compile_package(ATRACE_TAG_PACKAGE_MANAGER, + "Compile package %s", + package_name.c_str()); + + std::optional<db::PackageModel> package = + db::PackageModel::SelectByNameAndVersion(db, package_name.c_str(), version); + + if (!package) { + LOG(ERROR) << "Cannot find package for package_name: " + << package_name + << " and version " + << version; + return false; + } + + std::vector<db::ActivityModel> activities = + db::ActivityModel::SelectByPackageId(db, package->id); + + bool ret = true; + for (db::ActivityModel activity : activities) { + if (!CompileActivity(db, package->id, package->name, activity.name, version, params)) { + ret = false; + } + } + return ret; +} + +// Compiled the perfetto traces for packages in a device. +bool CompileAppsOnDevice(const db::DbHandle& db, const ControllerParameters& params) { + { + std::lock_guard<std::mutex> last_job_info_guard{last_job_info_mutex_}; + last_job_info_.activities_last_compiled_ = 0; + } + + std::vector<db::PackageModel> packages = db::PackageModel::SelectAll(db); + bool ret = true; + for (db::PackageModel package : packages) { + if (!CompilePackage(db, package.name, package.version, params)) { + ret = false; + } + } + + { + std::lock_guard<std::mutex> last_job_info_guard{last_job_info_mutex_}; + last_job_info_.last_run_ns_ = time(nullptr); + } + + return ret; +} + +// Compiled the perfetto traces for a single package in a device. +bool CompileSingleAppOnDevice(const db::DbHandle& db, + const ControllerParameters& params, + const std::string& package_name) { + std::vector<db::PackageModel> packages = db::PackageModel::SelectByName(db, package_name.c_str()); + bool ret = true; + for (db::PackageModel package : packages) { + if (!CompilePackage(db, package.name, package.version, params)) { + ret = false; + } + } + + return ret; +} + +bool Compile(const std::string& db_path, const ControllerParameters& params) { + iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path); + db::DbHandle db{db_schema.db()}; + return CompileAppsOnDevice(db, params); +} + +bool Compile(const std::string& db_path, + const std::string& package_name, + int version, + const ControllerParameters& params) { + iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path); + db::DbHandle db{db_schema.db()}; + return CompilePackage(db, package_name, version, params); +} + +bool Compile(const std::string& db_path, + const std::string& package_name, + const std::string& activity_name, + int version, + const ControllerParameters& params) { + iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path); + db::DbHandle db{db_schema.db()}; + + std::optional<db::PackageModel> package = + db::PackageModel::SelectByNameAndVersion(db, package_name.c_str(), version); + + if (!package) { + LOG(ERROR) << "Cannot find package with name " + << package_name + << " and version " + << version; + return false; + } + return CompileActivity(db, package->id, package_name, activity_name, version, params); +} + +static std::string TimeToString(time_t the_time) { + tm tm_buf{}; + tm* tm_ptr = localtime_r(&the_time, &tm_buf); + + if (tm_ptr != nullptr) { + char time_buffer[256]; + strftime(time_buffer, sizeof(time_buffer), "%a %b %d %H:%M:%S %Y", tm_ptr); + return std::string{time_buffer}; + } else { + return std::string{"(nullptr)"}; + } +} + +static std::string GetTimestampForPrefetchFile(const db::PrefetchFileModel& prefetch_file) { + std::filesystem::path path{prefetch_file.file_path}; + + std::error_code ec{}; + auto last_write_time = std::filesystem::last_write_time(path, /*out*/ec); + if (ec) { + return std::string("Failed to get last write time: ") + ec.message(); + } + + time_t time = decltype(last_write_time)::clock::to_time_t(last_write_time); + + std::string time_str = TimeToString(time); + return time_str; +} + +void DumpPackageActivity(const db::DbHandle& db, + ::android::Printer& printer, + const db::PackageModel& package, + const db::ActivityModel& activity) { + int package_id = package.id; + const std::string& package_name = package.name; + int package_version = package.version; + const std::string& activity_name = activity.name; + db::VersionedComponentName vcn{package_name, activity_name, package_version}; + + // com.google.Settings/com.google.Settings.ActivityMain@1234567890 + printer.printFormatLine(" %s/%s@%d", + package_name.c_str(), + activity_name.c_str(), + package_version); + + std::optional<db::PrefetchFileModel> prefetch_file = + db::PrefetchFileModel::SelectByVersionedComponentName(db, vcn); + + std::vector<db::AppLaunchHistoryModel> histories = + db::AppLaunchHistoryModel::SelectActivityHistoryForCompile(db, activity.id); + std::vector<compiler::CompilationInput> perfetto_traces = + GetPerfettoTraceInfo(db, histories); + + if (prefetch_file) { + bool exists_on_disk = std::filesystem::exists(prefetch_file->file_path); + + std::optional<size_t> prefetch_byte_sum = + prefetcher::ReadAhead::PrefetchSizeInBytes(prefetch_file->file_path); + + if (exists_on_disk) { + printer.printFormatLine(" Compiled Status: Usable compiled trace"); + } else { + printer.printFormatLine(" Compiled Status: Prefetch file deleted from disk."); + } + + if (prefetch_byte_sum) { + printer.printFormatLine(" Bytes to be prefetched: %zu", *prefetch_byte_sum); + } else { + printer.printFormatLine(" Bytes to be prefetched: (bad file path)" ); + } + + printer.printFormatLine(" Time compiled: %s", + GetTimestampForPrefetchFile(*prefetch_file).c_str()); + printer.printFormatLine(" %s", prefetch_file->file_path.c_str()); + } else { + size_t size = perfetto_traces.size(); + + if (size >= kMinTracesForCompilation) { + printer.printFormatLine(" Compiled Status: Raw traces pending compilation (%zu)", + perfetto_traces.size()); + } else { + size_t remaining = kMinTracesForCompilation - size; + printer.printFormatLine(" Compiled Status: Need %zu more traces for compilation", + remaining); + } + } + + printer.printFormatLine(" Raw traces:"); + printer.printFormatLine(" Trace count: %zu", perfetto_traces.size()); + + for (compiler::CompilationInput& compilation_input : perfetto_traces) { + std::string& raw_trace_file_name = compilation_input.filename; + + printer.printFormatLine(" %s", raw_trace_file_name.c_str()); + } +} + +void DumpPackage(const db::DbHandle& db, + ::android::Printer& printer, + db::PackageModel package) { + std::vector<db::ActivityModel> activities = + db::ActivityModel::SelectByPackageId(db, package.id); + + for (db::ActivityModel& activity : activities) { + DumpPackageActivity(db, printer, package, activity); + } +} + +void DumpAllPackages(const db::DbHandle& db, ::android::Printer& printer) { + printer.printLine("Package history in database:"); + + std::vector<db::PackageModel> packages = db::PackageModel::SelectAll(db); + for (db::PackageModel package : packages) { + DumpPackage(db, printer, package); + } + + printer.printLine(""); +} + +void Dump(const db::DbHandle& db, ::android::Printer& printer) { + bool locked = last_job_info_mutex_.try_lock(); + + LastJobInfo info = last_job_info_; + + printer.printFormatLine("Background job:"); + if (!locked) { + printer.printLine(""""" (possible deadlock)"); + } + if (info.last_run_ns_ != time_t{0}) { + std::string time_str = TimeToString(info.last_run_ns_); + + printer.printFormatLine(" Last run at: %s", time_str.c_str()); + } else { + printer.printFormatLine(" Last run at: (None)"); + } + printer.printFormatLine(" Activities last compiled: %zu", info.activities_last_compiled_); + + printer.printLine(""); + + if (locked) { + last_job_info_mutex_.unlock(); + } + + DumpAllPackages(db, printer); +} + +} // namespace iorap::maintenance diff --git a/src/maintenance/controller.h b/src/maintenance/controller.h new file mode 100644 index 0000000..dbe6df9 --- /dev/null +++ b/src/maintenance/controller.h @@ -0,0 +1,113 @@ +// Copyright (C) 2019 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. + +#ifndef IORAP_SRC_MAINTENANCE_COMPILER_CONTROLLER_H_ +#define IORAP_SRC_MAINTENANCE_COMPILER_CONTROLLER_H_ + +#include "db/file_models.h" +#include "inode2filename/inode_resolver.h" + +#include <string> +#include <vector> + +namespace android { +class Printer; +} // namespace android + +namespace iorap::maintenance { + +// Enabling mock for testing purpose. +class IExec { + public: + virtual int Execve(const std::string& pathname, + std::vector<std::string>& argv_vec, + char *const envp[]) = 0; + virtual int Fork() = 0; + virtual ~IExec() = default; +}; + +class Exec : public IExec { + public: + virtual int Execve(const std::string& pathname, + std::vector<std::string>& argv_vec, + char *const envp[]); + virtual int Fork(); +}; + +// Represents the parameters used for compilation controller. +struct ControllerParameters { + bool output_text; + // The path of inode2filepath file. + std::optional<std::string> inode_textcache; + bool verbose; + bool recompile; + uint64_t min_traces; + std::shared_ptr<IExec> exec; + + ControllerParameters(bool output_text, + std::optional<std::string> inode_textcache, + bool verbose, + bool recompile, + uint64_t min_traces, + std::shared_ptr<IExec> exec) : + output_text(output_text), + inode_textcache(inode_textcache), + verbose(verbose), + recompile(recompile), + min_traces(min_traces), + exec(exec) { + } +}; + +// Control the compilation of perfetto traces in the sqlite db. +// +// The strategy now is to compile all the existing perfetto traces for an activity +// and skip ones if the number of perfetto traces is less than the min_traces. +// +// By default, the program doesn't replace the existing compiled trace, it just +// return true. To force replace the existing compiled trace, set `force` to true. +// +// The timestamp limit of the each perfetto trace is determined by `report_fully_drawn_ns` +// timestamp. If it doesn't exists, use `total_time_ns`. If neither of them exists, +// use the max. + +// Compile all activities of all packages in the database. +bool Compile(const std::string& db_path, const ControllerParameters& params); + +// Compile all activities in the package. +// If the version is not given, an arbitrary package that has the same name is used. +bool Compile(const std::string& db_path, + const std::string& package_name, + int version, + const ControllerParameters& params); + +// Compile trace for the activity. +// If the version is not given, an arbitrary package has the same name is used. +bool Compile(const std::string& db_path, + const std::string& package_name, + const std::string& activity_name, + int version, + const ControllerParameters& params); +// Visible for testing. +bool CompileAppsOnDevice(const db::DbHandle& db, const ControllerParameters& params); + +bool CompileSingleAppOnDevice(const db::DbHandle& db, + const ControllerParameters& params, + const std::string& package_name); + +void Dump(const db::DbHandle& db, ::android::Printer& printer); + +} // iorap::maintenance + +#endif // IORAP_SRC_MAINTENANCE_COMPILER_CONTROLLER_H_ diff --git a/src/maintenance/db_cleaner.cc b/src/maintenance/db_cleaner.cc new file mode 100644 index 0000000..56eff70 --- /dev/null +++ b/src/maintenance/db_cleaner.cc @@ -0,0 +1,66 @@ +// Copyright (C) 2020 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. + +#include "maintenance/db_cleaner.h" + +#include <android-base/file.h> + +#include <cstdio> +#include <filesystem> +#include <fstream> +#include <iostream> +#include <limits> +#include <optional> +#include <string> +#include <vector> + +#include "db/clean_up.h" +#include "db/file_models.h" +#include "db/models.h" + +namespace iorap::maintenance { + +// Enable foreign key restriction. +const constexpr char* kForeignKeyOnSql = "PRAGMA foreign_keys = ON;"; + +void CleanUpDatabase(const db::DbHandle& db, + std::shared_ptr<binder::PackageVersionMap> version_map) { + std::vector<db::PackageModel> packages = db::PackageModel::SelectAll(db); + // Enable cascade deletion. + if (!db::DbQueryBuilder::ExecuteOnce(db, kForeignKeyOnSql)) { + LOG(ERROR) << "Fail to turn on foreign key restraint!"; + } + + for (db::PackageModel package : packages) { + std::optional<int64_t> version = version_map->Find(package.name); + if (!version) { + LOG(DEBUG) << "Fail to find version for package " << package.name + << " with version " << package.version + << ". The package manager may be down."; + continue; + } + // Package is cleanup if it + // * is not in the version map, it may be uninstalled + // * has an different version with the latest one + if (*version != package.version) { + db::CleanUpFilesForPackage(db, package.id, package.name, package.version); + if (!package.Delete()) { + LOG(ERROR) << "Fail to delete package " << package.name + << " with version " << package.version; + } + } + } +} + +} // namespace iorap::maintenance diff --git a/src/maintenance/db_cleaner.h b/src/maintenance/db_cleaner.h new file mode 100644 index 0000000..1168bd5 --- /dev/null +++ b/src/maintenance/db_cleaner.h @@ -0,0 +1,34 @@ +// Copyright (C) 2020 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. + +#ifndef IORAP_SRC_MAINTENANCE_VERSION_UPDATE_H_ +#define IORAP_SRC_MAINTENANCE_VERSION_UPDATE_H_ + +#include <android/content/pm/IPackageManagerNative.h> + +#include <string> +#include <vector> + +#include "binder/package_version_map.h" +#include "db/file_models.h" + +namespace iorap::maintenance { + +// Clean up the database. +// Remove all relevant data for old-version packages. +void CleanUpDatabase(const db::DbHandle& db, + std::shared_ptr<binder::PackageVersionMap> version_map); +} // namespace iorap::maintenance + +#endif // IORAP_SRC_MAINTENANCE_VERSION_UPDATE_H_ diff --git a/src/maintenance/main.cc b/src/maintenance/main.cc new file mode 100644 index 0000000..16b2a35 --- /dev/null +++ b/src/maintenance/main.cc @@ -0,0 +1,194 @@ +// Copyright (C) 2019 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. + +#include "common/debug.h" +#include "compiler/compiler.h" +#include "maintenance/controller.h" +#include "db/clean_up.h" + +#include <android-base/parseint.h> +#include <android-base/properties.h> +#include <android-base/logging.h> + +#include <iostream> +#include <optional> + +#if defined(IORAP_MAINTENANCE_MAIN) + +namespace iorap::maintenance { + +void Usage(char** argv) { + std::cerr << "Usage: " << argv[0] << " <path of sqlite db>" << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Compile the perfetto trace for an package and activity." << std::endl; + std::cerr << " The info of perfetto trace is stored in the sqlite db." << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Optional flags:" << std::endl; + std::cerr << " --package $,-p $ Package name." << std::endl; + std::cerr << " --version $,-ve $ Package version." << std::endl; + std::cerr << " --activity $,-a $ Activity name." << std::endl; + std::cerr << " --inode-textcache $,-it $ Resolve inode->filename from textcache." << std::endl; + std::cerr << " --help,-h Print this Usage." << std::endl; + std::cerr << " --recompile,-r Force re-compilation, which replace the existing compiled trace ." << std::endl; + std::cerr << " --purge-package,-pp Purge all files associated with a package." << std::endl; + std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl; + std::cerr << " --output-text,-ot Output ascii text instead of protobuf (default off)." << std::endl; + std::cerr << " --min_traces,-mt The min number of perfetto traces needed for compilation (default 1)." + << std::endl; + exit(1); +} + + +int Main(int argc, char** argv){ + android::base::InitLogging(argv); + android::base::SetLogger(android::base::StderrLogger); + + if (argc == 1) { + // Need at least 1 input file to do anything. + Usage(argv); + } + + std::vector<std::string> arg_input_filenames; + std::optional<std::string> arg_package; + std::optional<std::string> arg_purge_package; + int arg_version = -1; + std::optional<std::string> arg_activity; + std::optional<std::string> arg_inode_textcache; + bool recompile = false; + bool enable_verbose = false; + bool arg_output_text = false; + uint64_t arg_min_traces = 1; + + for (int arg = 1; arg < argc; ++arg) { + std::string argstr = argv[arg]; + bool has_arg_next = (arg+1)<argc; + std::string arg_next = has_arg_next ? argv[arg+1] : ""; + + if (argstr == "--help" || argstr == "-h") { + Usage(argv); + } else if (argstr == "--package" || argstr == "-p") { + if (!has_arg_next) { + std::cerr << "Missing --package <value>" << std::endl; + return 1; + } + arg_package = arg_next; + ++arg; + } else if (argstr == "--version" || argstr == "-ve") { + if (!has_arg_next) { + std::cerr << "Missing --version <value>" << std::endl; + return 1; + } + int version; + if (!android::base::ParseInt<int>(arg_next, &version)) { + std::cerr << "Invalid --version " << arg_next << std::endl; + return 1; + } + arg_version = version; + ++arg; + } else if (argstr == "--activity" || argstr == "-a") { + if (!has_arg_next) { + std::cerr << "Missing --activity <value>" << std::endl; + return 1; + } + arg_activity = arg_next; + ++arg; + } else if (argstr == "--inode-textcache" || argstr == "-it") { + if (!has_arg_next) { + std::cerr << "Missing --inode-textcache <value>" << std::endl; + return 1; + } + arg_inode_textcache = arg_next; + ++arg; + } else if (argstr == "--purge-package" || argstr == "-pp") { + if (!has_arg_next) { + std::cerr << "Missing --purge-package <value>" << std::endl; + return 1; + } + arg_purge_package = arg_next; + ++arg; + } + else if (argstr == "--verbose" || argstr == "-v") { + enable_verbose = true; + } else if (argstr == "--recompile" || argstr == "-r") { + recompile = true; + } else if (argstr == "--output-text" || argstr == "-ot") { + arg_output_text = true; + } else if (argstr == "--min_traces" || argstr == "-mt") { + if (!has_arg_next) { + std::cerr << "Missing --min_traces <value>" << std::endl; + return 1; + } + arg_min_traces = std::stoul(arg_next); + ++arg; + } else { + arg_input_filenames.push_back(argstr); + } + } + + if (arg_input_filenames.empty()) { + LOG(ERROR) << "Missing filename to a sqlite database."; + Usage(argv); + } else if (arg_input_filenames.size() > 1) { + LOG(ERROR) << "More than one filename to a sqlite database."; + Usage(argv); + } + + std::string db_path = arg_input_filenames[0]; + + if (enable_verbose) { + android::base::SetMinimumLogSeverity(android::base::VERBOSE); + + LOG(VERBOSE) << "Verbose check"; + LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild; + } else { + android::base::SetMinimumLogSeverity(android::base::DEBUG); + } + + if (arg_purge_package) { + db::CleanUpFilesForPackage(db_path, *arg_purge_package); + return 0; + // Don't do any more work because SchemaModel can only be created once. + } + + maintenance::ControllerParameters params{ + arg_output_text, + arg_inode_textcache, + enable_verbose, + recompile, + arg_min_traces, + std::make_shared<Exec>()}; + + int ret_code = 0; + if (arg_package && arg_activity) { + ret_code = !Compile(std::move(db_path), + std::move(*arg_package), + std::move(*arg_activity), + arg_version, + params); + } else if (arg_package) { + ret_code = !Compile(std::move(db_path), std::move(*arg_package), arg_version, params); + } else { + ret_code = !Compile(std::move(db_path), params); + } + return ret_code; +} + +} // iorap::maintenance + +int main(int argc, char** argv) { + return ::iorap::maintenance::Main(argc, argv); +} + + +#endif // IORAP_MAINTENANCE_MAIN diff --git a/src/manager/event_manager.cc b/src/manager/event_manager.cc index 3b75b89..bae676b 100644 --- a/src/manager/event_manager.cc +++ b/src/manager/event_manager.cc @@ -14,94 +14,94 @@ * limitations under the License. */ +#include "binder/package_version_map.h" #include "common/debug.h" #include "common/expected.h" +#include "common/printer.h" +#include "common/rx_async.h" +#include "common/trace.h" +#include "db/app_component_name.h" +#include "db/file_models.h" +#include "db/models.h" +#include "maintenance/controller.h" +#include "maintenance/db_cleaner.h" #include "manager/event_manager.h" #include "perfetto/rx_producer.h" +#include "prefetcher/read_ahead.h" +#include "prefetcher/task_id.h" +#include <android-base/chrono_utils.h> +#include <android-base/strings.h> #include <android-base/properties.h> #include <rxcpp/rx.hpp> +#include <server_configurable_flags/get_flags.h> +#include <utils/misc.h> +#include <utils/Trace.h> #include <atomic> +#include <filesystem> #include <functional> +#include <type_traits> +#include <unordered_map> using rxcpp::observe_on_one_worker; namespace iorap::manager { -using binder::RequestId; using binder::AppLaunchEvent; +using binder::DexOptEvent; +using binder::JobScheduledEvent; +using binder::RequestId; +using binder::TaskResult; + +using common::AsyncPool; +using common::RxAsync; + using perfetto::PerfettoStreamCommand; using perfetto::PerfettoTraceProto; -struct AppComponentName { - std::string package; - std::string activity_name; +using db::AppComponentName; - static bool HasAppComponentName(const std::string& s) { - return s.find('/') != std::string::npos; - } +static std::atomic<bool> s_tracing_allowed{false}; +static std::atomic<bool> s_readahead_allowed{false}; +static std::atomic<uint64_t> s_min_traces{3}; - // "com.foo.bar/.A" -> {"com.foo.bar", ".A"} - static AppComponentName FromString(const std::string& s) { - constexpr const char delimiter = '/'; - std::string package = s.substr(0, delimiter); +struct PackageBlacklister { + // "x.y.z;foo.bar.baz" colon-separated list of substrings + PackageBlacklister(std::string blacklist_string) { + LOG(VERBOSE) << "Configuring package blacklister with string: " << blacklist_string; - std::string activity_name = s; - activity_name.erase(0, s.find(delimiter) + sizeof(delimiter)); + std::vector<std::string> split = ::android::base::Split(blacklist_string, ";"); - return {std::move(package), std::move(activity_name)}; - } - - // {"com.foo.bar", ".A"} -> "com.foo.bar/.A" - std::string ToString() const { - return package + "/" + activity_name; + // Ignore any l/r whitespace or empty strings. + for (const std::string& s : split) { + std::string t = ::android::base::Trim(s); + if (!t.empty()) { + LOG(INFO) << "Blacklisted package: " << t << "; will not optimize."; + packages_.push_back(t); + } + } } - /* - * '/' is encoded into %2F - * '%' is encoded into %25 - * - * This allows the component name to be be used as a file name - * ('/' is illegal due to being a path separator) with minimal - * munging. - */ + PackageBlacklister() = default; - // "com.foo.bar%2F.A%25" -> {"com.foo.bar", ".A%"} - static AppComponentName FromUrlEncodedString(const std::string& s) { - std::string cpy = s; - Replace(cpy, "%2F", "/"); - Replace(cpy, "%25", "%"); + bool IsBlacklisted(const std::string& package_name) const { + return std::find(packages_.begin(), packages_.end(), package_name) != packages_.end(); + } - return FromString(cpy); + bool IsBlacklisted(const AppComponentName& component_name) const { + return IsBlacklisted(component_name.package); } - // {"com.foo.bar", ".A%"} -> "com.foo.bar%2F.A%25" - std::string ToUrlEncodedString() const { - std::string s = ToString(); - Replace(s, "%", "%25"); - Replace(s, "/", "%2F"); - return s; + bool IsBlacklisted(const std::optional<AppComponentName>& component_name) const { + return component_name.has_value() && IsBlacklisted(component_name->package); } private: - static bool Replace(std::string& str, const std::string& from, const std::string& to) { - // TODO: call in a loop to replace all occurrences, not just the first one. - const size_t start_pos = str.find(from); - if (start_pos == std::string::npos) { - return false; - } - - str.replace(start_pos, from.length(), to); - - return true; -} + std::vector<std::string> packages_; }; -std::ostream& operator<<(std::ostream& os, const AppComponentName& name) { - os << name.ToString(); - return os; -} +using PackageVersionMap = std::unordered_map<std::string, int64_t>; // Main logic of the #OnAppLaunchEvent scan method. // @@ -112,26 +112,74 @@ std::ostream& operator<<(std::ostream& os, const AppComponentName& name) { // of #scan to another. struct AppLaunchEventState { std::optional<AppComponentName> component_name_; - + // Sequence ID is shared amongst the same app launch sequence, + // but changes whenever a new app launch sequence begins. + size_t sequence_id_ = static_cast<size_t>(-1); + std::optional<AppLaunchEvent::Temperature> temperature_; + + // Push data to perfetto rx chain for associating + // the raw_trace with the history_id. + std::optional<rxcpp::subscriber<int>> history_id_subscriber_; + rxcpp::observable<int> history_id_observable_; + + std::optional<uint64_t> intent_started_ns_; + std::optional<uint64_t> total_time_ns_; + + // Used by kReportFullyDrawn to find the right history_id. + // We assume no interleaving between different sequences. + // This assumption is checked in the Java service code. + std::optional<uint64_t> recent_history_id_; + + // labeled as 'shared' due to rx not being able to handle move-only objects. + // lifetime: in practice equivalent to unique_ptr. + std::shared_ptr<prefetcher::ReadAhead> read_ahead_; + bool allowed_readahead_{true}; + bool is_read_ahead_{false}; + std::optional<prefetcher::TaskId> read_ahead_task_; + + bool allowed_tracing_{true}; bool is_tracing_{false}; std::optional<rxcpp::composite_subscription> rx_lifetime_; std::vector<rxcpp::composite_subscription> rx_in_flight_; + PackageBlacklister package_blacklister_{}; + borrowed<perfetto::RxProducerFactory*> perfetto_factory_; // not null borrowed<observe_on_one_worker*> thread_; // not null borrowed<observe_on_one_worker*> io_thread_; // not null + borrowed<AsyncPool*> async_pool_; // not null + + std::shared_ptr<binder::PackageVersionMap> version_map_; explicit AppLaunchEventState(borrowed<perfetto::RxProducerFactory*> perfetto_factory, + bool allowed_readahead, + bool allowed_tracing, + PackageBlacklister package_blacklister, borrowed<observe_on_one_worker*> thread, - borrowed<observe_on_one_worker*> io_thread) { + borrowed<observe_on_one_worker*> io_thread, + borrowed<AsyncPool*> async_pool, + std::shared_ptr<binder::PackageVersionMap> version_map) + : read_ahead_{std::make_shared<prefetcher::ReadAhead>()} + { perfetto_factory_ = perfetto_factory; DCHECK(perfetto_factory_ != nullptr); + allowed_readahead_ = allowed_readahead; + allowed_tracing_ = allowed_tracing; + + package_blacklister_ = package_blacklister; + thread_ = thread; DCHECK(thread_ != nullptr); io_thread_ = io_thread; DCHECK(io_thread_ != nullptr); + + async_pool_ = async_pool; + DCHECK(async_pool_ != nullptr); + + version_map_ = version_map; + DCHECK(version_map_ != nullptr); } // Updates the values in this struct only as a side effect. @@ -141,11 +189,57 @@ struct AppLaunchEventState { void OnNewEvent(const AppLaunchEvent& event) { LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent: " << event; + android::ScopedTrace trace_db_init{ATRACE_TAG_ACTIVITY_MANAGER, + "IorapNativeService::OnAppLaunchEvent"}; + using Type = AppLaunchEvent::Type; + DCHECK_GE(event.sequence_id, 0); + sequence_id_ = static_cast<size_t>(event.sequence_id); + allowed_readahead_ = s_readahead_allowed; + allowed_tracing_ = s_tracing_allowed; + switch (event.type) { case Type::kIntentStarted: { + const std::string& package_name = event.intent_proto->component().package_name(); + const std::string& class_name = event.intent_proto->component().class_name(); + AppComponentName component_name{package_name, class_name}; + component_name = component_name.Canonicalize(); + component_name_ = component_name; + + if (package_blacklister_.IsBlacklisted(component_name)) { + LOG(DEBUG) << "kIntentStarted: package " << component_name.package + << " ignored due to blacklisting."; + break; + } + + // Create a new history ID chain for each new app start-up sequence. + auto history_id_observable = rxcpp::observable<>::create<int>( + [&](rxcpp::subscriber<int> subscriber) { + history_id_subscriber_ = std::move(subscriber); + LOG(VERBOSE) << " set up the history id subscriber "; + }) + .tap([](int history_id) { LOG(VERBOSE) << " tap rx history id = " << history_id; }) + .replay(1); // Remember the history id in case we subscribe too late. + + history_id_observable_ = history_id_observable; + + // Immediately turn observable hot, creating the subscriber. + history_id_observable.connect(); + DCHECK(!IsTracing()); + + // The time should be set before perfetto tracing. + // Record the timestamp even no perfetto tracing is triggered, + // because the tracing may start in the following ActivityLaunched + // event. Otherwise, there will be no starting timestamp and + // trace without starting timestamp is not considered for compilation. + if (event.timestamp_nanos >= 0) { + intent_started_ns_ = event.timestamp_nanos; + } else { + LOG(WARNING) << "Negative event timestamp: " << event.timestamp_nanos; + } + // Optimistically start tracing if we have the activity in the intent. if (!event.intent_proto->has_component()) { // Can't do anything if there is no component in the proto. @@ -153,51 +247,93 @@ struct AppLaunchEventState { break; } - const std::string& package_name = event.intent_proto->component().package_name(); - const std::string& class_name = event.intent_proto->component().class_name(); - AppComponentName component_name{package_name, class_name}; - - component_name_ = component_name; - rx_lifetime_ = StartTracing(std::move(component_name)); + if (allowed_readahead_) { + StartReadAhead(sequence_id_, component_name); + } + if (allowed_tracing_ && !IsReadAhead()) { + rx_lifetime_ = StartTracing(std::move(component_name)); + } break; } case Type::kIntentFailed: + if (package_blacklister_.IsBlacklisted(component_name_)) { + LOG(VERBOSE) << "kIntentFailed: package " << component_name_->package + << " ignored due to blacklisting."; + break; + } + AbortTrace(); + AbortReadAhead(); + + if (history_id_subscriber_) { + history_id_subscriber_->on_error(rxcpp::util::make_error_ptr( + std::ios_base::failure("Aborting due to intent failed"))); + history_id_subscriber_ = std::nullopt; + } + break; case Type::kActivityLaunched: { + const std::string& title = event.activity_record_proto->identifier().title(); + if (!AppComponentName::HasAppComponentName(title)) { + // Proto comment claim this is sometimes a window title. + // We need the actual 'package/component' here, so just ignore it if it's a title. + LOG(WARNING) << "App launched without a component name: " << event; + break; + } + + AppComponentName component_name = AppComponentName::FromString(title); + component_name = component_name.Canonicalize(); + component_name_ = component_name; + + if (package_blacklister_.IsBlacklisted(component_name_)) { + LOG(VERBOSE) << "kActivityLaunched: package " << component_name_->package + << " ignored due to blacklisting."; + break; + } + // Cancel tracing for warm/hot. // Restart tracing if the activity was unexpected. AppLaunchEvent::Temperature temperature = event.temperature; + temperature_ = temperature; if (temperature != AppLaunchEvent::Temperature::kCold) { LOG(DEBUG) << "AppLaunchEventState#OnNewEvent aborting trace due to non-cold temperature"; + AbortTrace(); - } else if (!IsTracing()) { // and the temperature is Cold. + AbortReadAhead(); + } else if (!IsTracing() && !IsReadAhead()) { // and the temperature is Cold. // Start late trace when intent didn't have a component name LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent need to start new trace"; - const std::string& title = event.activity_record_proto->identifier().title(); - if (!AppComponentName::HasAppComponentName(title)) { - // Proto comment claim this is sometimes a window title. - // We need the actual 'package/component' here, so just ignore it if it's a title. - LOG(WARNING) << "App launched without a component name: " << event; - break; + if (allowed_readahead_ && !IsReadAhead()) { + StartReadAhead(sequence_id_, component_name); + } + if (allowed_tracing_ && !IsTracing() && !IsReadAhead()) { + rx_lifetime_ = StartTracing(std::move(component_name)); } - - AppComponentName component_name = AppComponentName::FromString(title); - - component_name_ = component_name; - rx_lifetime_ = StartTracing(std::move(component_name)); } else { // FIXME: match actual component name against intent component name. // abort traces if they don't match. - LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent already tracing"; + if (allowed_tracing_) { + LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent already tracing"; + } + LOG(VERBOSE) << "AppLaunchEventState#OnNewEvent already doing readahead"; } break; } case Type::kActivityLaunchFinished: + if (package_blacklister_.IsBlacklisted(component_name_)) { + LOG(VERBOSE) << "kActivityLaunchFinished: package " << component_name_->package + << " ignored due to blacklisting."; + break; + } + + if (event.timestamp_nanos >= 0) { + total_time_ns_ = event.timestamp_nanos; + } + RecordDbLaunchHistory(); // Finish tracing and collect trace buffer. // // TODO: this happens automatically when perfetto finishes its @@ -205,22 +341,138 @@ struct AppLaunchEventState { if (IsTracing()) { MarkPendingTrace(); } + FinishReadAhead(); break; case Type::kActivityLaunchCancelled: + if (package_blacklister_.IsBlacklisted(component_name_)) { + LOG(VERBOSE) << "kActivityLaunchCancelled: package " << component_name_->package + << " ignored due to blacklisting."; + break; + } + // Abort tracing. AbortTrace(); + AbortReadAhead(); + break; + case Type::kReportFullyDrawn: { + if (package_blacklister_.IsBlacklisted(component_name_)) { + LOG(VERBOSE) << "kReportFullyDrawn: package " << component_name_->package + << " ignored due to blacklisting."; + break; + } + + if (!recent_history_id_) { + LOG(WARNING) << "Dangling kReportFullyDrawn event"; + return; + } + UpdateReportFullyDrawn(*recent_history_id_, event.timestamp_nanos); + recent_history_id_ = std::nullopt; break; + } default: DCHECK(false) << "invalid type: " << event; // binder layer should've rejected this. LOG(ERROR) << "invalid type: " << event; // binder layer should've rejected this. } } + // Is there an in-flight readahead task currently? + bool IsReadAhead() const { + return read_ahead_task_.has_value(); + } + + // Gets the compiled trace. + // If a compiled trace exists in sqlite, use that one. Otherwise, try + // to find a prebuilt one. + std::optional<std::string> GetCompiledTrace(const AppComponentName& component_name) { + ScopedFormatTrace atrace_get_compiled_trace(ATRACE_TAG_ACTIVITY_MANAGER, "GetCompiledTrace"); + // Firstly, try to find the compiled trace from sqlite. + android::base::Timer timer{}; + db::DbHandle db{db::SchemaModel::GetSingleton()}; + std::optional<int> version = + version_map_->GetOrQueryPackageVersion(component_name.package); + if (!version) { + LOG(DEBUG) << "The version is NULL, maybe package manager is down."; + return std::nullopt; + } + db::VersionedComponentName vcn{component_name.package, + component_name.activity_name, + *version}; + + std::optional<db::PrefetchFileModel> compiled_trace = + db::PrefetchFileModel::SelectByVersionedComponentName(db, vcn); + + std::chrono::milliseconds duration_ms = timer.duration(); + LOG(DEBUG) << "EventManager: Looking up compiled trace done in " + << duration_ms.count() // the count of ticks. + << "ms."; + + if (compiled_trace) { + if (std::filesystem::exists(compiled_trace->file_path)) { + return compiled_trace->file_path; + } else { + LOG(DEBUG) << "Compiled trace in sqlite doesn't exists. file_path: " + << compiled_trace->file_path; + } + } + + LOG(DEBUG) << "Cannot find compiled trace in sqlite for package_name: " + << component_name.package + << " activity_name: " + << component_name.activity_name; + + // If sqlite doesn't have the compiled trace, try the prebuilt path. + std::string file_path = "/product/iorap-trace/"; + file_path += component_name.ToMakeFileSafeEncodedPkgString(); + file_path += ".compiled_trace.pb"; + + if (std::filesystem::exists(file_path)) { + return file_path; + } + + LOG(DEBUG) << "Prebuilt compiled trace doesn't exists. file_path: " + << file_path; + + return std::nullopt; + } + + void StartReadAhead(size_t id, const AppComponentName& component_name) { + DCHECK(allowed_readahead_); + DCHECK(!IsReadAhead()); + + std::optional<std::string> file_path = GetCompiledTrace(component_name); + if (!file_path) { + LOG(VERBOSE) << "Cannot find a compiled trace."; + return; + } + + prefetcher::TaskId task{id, *file_path}; + read_ahead_->BeginTask(task); + // TODO: non-void return signature? + + read_ahead_task_ = std::move(task); + } + + void FinishReadAhead() { + // if no readahead task exist, do nothing. + if (!IsReadAhead()){ + return; + } + + read_ahead_->FinishTask(*read_ahead_task_); + read_ahead_task_ = std::nullopt; + } + + void AbortReadAhead() { + FinishReadAhead(); + } + bool IsTracing() const { return is_tracing_; } - rxcpp::composite_subscription StartTracing(AppComponentName component_name) { + std::optional<rxcpp::composite_subscription> StartTracing( + AppComponentName component_name) { + DCHECK(allowed_tracing_); DCHECK(!IsTracing()); auto /*observable<PerfettoStreamCommand>*/ perfetto_commands = @@ -245,30 +497,73 @@ struct AppLaunchEventState { rxcpp::composite_subscription lifetime; - trace_proto_stream + auto stream_via_threads = trace_proto_stream .tap([](const PerfettoTraceProto& trace_proto) { LOG(VERBOSE) << "StartTracing -- PerfettoTraceProto received (1)"; }) + .combine_latest(history_id_observable_) .observe_on(*thread_) // All work prior to 'observe_on' is handled on thread_. .subscribe_on(*thread_) // All work prior to 'observe_on' is handled on thread_. .observe_on(*io_thread_) // Write data on an idle-class-priority thread. - .tap([](const PerfettoTraceProto& trace_proto) { + .tap([](std::tuple<PerfettoTraceProto, int> trace_tuple) { LOG(VERBOSE) << "StartTracing -- PerfettoTraceProto received (2)"; - }) - .as_blocking() // TODO: remove. - .subscribe(/*out*/lifetime, - /*on_next*/[component_name] - (PerfettoTraceProto trace_proto) { - std::string file_path = "/data/misc/iorapd/"; - file_path += component_name.ToUrlEncodedString(); - file_path += ".perfetto_trace.pb"; + }); - // TODO: timestamp each file into a subdirectory. + std::optional<int> version = + version_map_->GetOrQueryPackageVersion(component_name_->package); + if (!version) { + LOG(DEBUG) << "The version is NULL, maybe package manager is down."; + return std::nullopt; + } + db::VersionedComponentName versioned_component_name{component_name.package, + component_name.activity_name, + *version}; + lifetime = RxAsync::SubscribeAsync(*async_pool_, + std::move(stream_via_threads), + /*on_next*/[versioned_component_name] + (std::tuple<PerfettoTraceProto, int> trace_tuple) { + PerfettoTraceProto& trace_proto = std::get<0>(trace_tuple); + int history_id = std::get<1>(trace_tuple); + + db::PerfettoTraceFileModel file_model = + db::PerfettoTraceFileModel::CalculateNewestFilePath(versioned_component_name); + + std::string file_path = file_model.FilePath(); + + ScopedFormatTrace atrace_write_to_file(ATRACE_TAG_ACTIVITY_MANAGER, + "Perfetto Write Trace To File %s", + file_path.c_str()); + + if (!file_model.MkdirWithParents()) { + LOG(ERROR) << "Cannot save TraceBuffer; failed to mkdirs " << file_path; + return; + } if (!trace_proto.WriteFullyToFile(file_path)) { LOG(ERROR) << "Failed to save TraceBuffer to " << file_path; } else { LOG(INFO) << "Perfetto TraceBuffer saved to file: " << file_path; + + ScopedFormatTrace atrace_update_raw_traces_table( + ATRACE_TAG_ACTIVITY_MANAGER, + "update raw_traces table history_id = %d", + history_id); + db::DbHandle db{db::SchemaModel::GetSingleton()}; + std::optional<db::RawTraceModel> raw_trace = + db::RawTraceModel::Insert(db, history_id, file_path); + + if (!raw_trace) { + LOG(ERROR) << "Failed to insert raw_traces for " << file_path; + } else { + LOG(VERBOSE) << "Inserted into db: " << *raw_trace; + + ScopedFormatTrace atrace_delete_older_files( + ATRACE_TAG_ACTIVITY_MANAGER, + "Delete older trace files for package"); + + // Ensure we don't have too many files per-app. + db::PerfettoTraceFileModel::DeleteOlderFiles(db, versioned_component_name); + } } }, /*on_error*/[](rxcpp::util::error_ptr err) { @@ -282,12 +577,23 @@ struct AppLaunchEventState { void AbortTrace() { LOG(VERBOSE) << "AppLaunchEventState - AbortTrace"; + + // if the tracing is not running, do nothing. + if (!IsTracing()){ + return; + } + is_tracing_ = false; if (rx_lifetime_) { // TODO: it would be good to call perfetto Destroy. + rx_in_flight_.erase(std::remove(rx_in_flight_.begin(), + rx_in_flight_.end(), *rx_lifetime_), + rx_in_flight_.end()); + LOG(VERBOSE) << "AppLaunchEventState - AbortTrace - Unsubscribe"; rx_lifetime_->unsubscribe(); + rx_lifetime_.reset(); } } @@ -309,8 +615,187 @@ struct AppLaunchEventState { LOG(VERBOSE) << "AppLaunchEventState - MarkPendingTrace - lifetime was empty"; } + is_tracing_ = false; // FIXME: how do we clear this vector? } + + void RecordDbLaunchHistory() { + std::optional<db::AppLaunchHistoryModel> history = InsertDbLaunchHistory(); + + // RecordDbLaunchHistory happens-after kIntentStarted + if (!history_id_subscriber_.has_value()) { + LOG(WARNING) << "Logic error? Should always have a subscriber here."; + return; + } + + // Ensure that the history id rx chain is terminated either with an error or with + // the newly inserted app_launch_histories.id + if (!history) { + history_id_subscriber_->on_error(rxcpp::util::make_error_ptr( + std::ios_base::failure("Failed to insert history id"))); + recent_history_id_ = std::nullopt; + } else { + // Note: we must have already subscribed, or this value will disappear. + LOG(VERBOSE) << "history_id_subscriber on_next history_id=" << history->id; + history_id_subscriber_->on_next(history->id); + history_id_subscriber_->on_completed(); + + recent_history_id_ = history->id; + } + history_id_subscriber_ = std::nullopt; + } + + std::optional<db::AppLaunchHistoryModel> InsertDbLaunchHistory() { + // TODO: deferred queue into a different lower priority thread. + if (!component_name_ || !temperature_) { + LOG(VERBOSE) << "Skip RecordDbLaunchHistory, no component name available."; + + return std::nullopt; + } + + android::ScopedTrace trace{ATRACE_TAG_ACTIVITY_MANAGER, + "IorapNativeService::RecordDbLaunchHistory"}; + db::DbHandle db{db::SchemaModel::GetSingleton()}; + + using namespace iorap::db; + + std::optional<int> version = + version_map_->GetOrQueryPackageVersion(component_name_->package); + if (!version) { + LOG(DEBUG) << "The version is NULL, maybe package manager is down."; + return std::nullopt; + } + std::optional<ActivityModel> activity = + ActivityModel::SelectOrInsert(db, + component_name_->package, + *version, + component_name_->activity_name); + + if (!activity) { + LOG(WARNING) << "Failed to query activity row for : " << *component_name_; + return std::nullopt; + } + + auto temp = static_cast<db::AppLaunchHistoryModel::Temperature>(*temperature_); + + std::optional<AppLaunchHistoryModel> alh = + AppLaunchHistoryModel::Insert(db, + activity->id, + temp, + IsTracing(), + IsReadAhead(), + intent_started_ns_, + total_time_ns_, + // ReportFullyDrawn event normally occurs after this. Need update later. + /* report_fully_drawn_ns= */ std::nullopt); + //Repo + if (!alh) { + LOG(WARNING) << "Failed to insert app_launch_histories row"; + return std::nullopt; + } + + LOG(VERBOSE) << "RecordDbLaunchHistory: " << *alh; + return alh; + } + + void UpdateReportFullyDrawn(int history_id, uint64_t timestamp_ns) { + LOG(DEBUG) << "Update kReportFullyDrawn for history_id:" + << history_id + << " timestamp_ns: " + << timestamp_ns; + + android::ScopedTrace trace{ATRACE_TAG_ACTIVITY_MANAGER, + "IorapNativeService::UpdateReportFullyDrawn"}; + db::DbHandle db{db::SchemaModel::GetSingleton()}; + + bool result = + db::AppLaunchHistoryModel::UpdateReportFullyDrawn(db, + history_id, + timestamp_ns); + + if (!result) { + LOG(WARNING) << "Failed to update app_launch_histories row"; + } + } +}; + +struct AppLaunchEventDefender { + binder::AppLaunchEvent::Type last_event_type_{binder::AppLaunchEvent::Type::kUninitialized}; + + enum class Result { + kAccept, // Pass-through the new event. + kOverwrite, // Overwrite the new event with a different event. + kReject // Completely reject the new event, it will not be delivered. + }; + + Result OnAppLaunchEvent(binder::RequestId request_id, + const binder::AppLaunchEvent& event, + binder::AppLaunchEvent* overwrite) { + using Type = binder::AppLaunchEvent::Type; + CHECK(overwrite != nullptr); + + // Ensure only legal transitions are allowed. + switch (last_event_type_) { + case Type::kUninitialized: + case Type::kIntentFailed: + case Type::kActivityLaunchCancelled: + case Type::kReportFullyDrawn: { // From a terminal state, only go to kIntentStarted + if (event.type != Type::kIntentStarted) { + LOG(WARNING) << "Rejecting transition from " << last_event_type_ << " to " << event.type; + last_event_type_ = Type::kUninitialized; + return Result::kReject; + } else { + LOG(VERBOSE) << "Accept transition from " << last_event_type_ << " to " << event.type; + last_event_type_ = event.type; + return Result::kAccept; + } + } + case Type::kIntentStarted: { + if (event.type == Type::kIntentFailed || + event.type == Type::kActivityLaunched) { + LOG(VERBOSE) << "Accept transition from " << last_event_type_ << " to " << event.type; + last_event_type_ = event.type; + return Result::kAccept; + } else { + LOG(WARNING) << "Overwriting transition from kIntentStarted to " + << event.type << " into kIntentFailed"; + last_event_type_ = Type::kIntentFailed; + + *overwrite = event; + overwrite->type = Type::kIntentFailed; + return Result::kOverwrite; + } + } + case Type::kActivityLaunched: { + if (event.type == Type::kActivityLaunchFinished || + event.type == Type::kActivityLaunchCancelled) { + LOG(VERBOSE) << "Accept transition from " << last_event_type_ << " to " << event.type; + last_event_type_ = event.type; + return Result::kAccept; + } else { + LOG(WARNING) << "Overwriting transition from kActivityLaunched to " + << event.type << " into kActivityLaunchCancelled"; + last_event_type_ = Type::kActivityLaunchCancelled; + + *overwrite = event; + overwrite->type = Type::kActivityLaunchCancelled; + return Result::kOverwrite; + } + } + case Type::kActivityLaunchFinished: { + if (event.type == Type::kIntentStarted || + event.type == Type::kReportFullyDrawn) { + LOG(VERBOSE) << "Accept transition from " << last_event_type_ << " to " << event.type; + last_event_type_ = event.type; + return Result::kAccept; + } else { + LOG(WARNING) << "Rejecting transition from " << last_event_type_ << " to " << event.type; + last_event_type_ = Type::kUninitialized; + return Result::kReject; + } + } + } + } }; // Convert callback pattern into reactive pattern. @@ -387,6 +872,70 @@ struct AppLaunchEventSubject { std::optional<rxcpp::subscriber<RefWrapper>> subscriber_; }; +// Convert callback pattern into reactive pattern. +struct JobScheduledEventSubject { + JobScheduledEventSubject() {} + + void Subscribe(rxcpp::subscriber<std::pair<RequestId, JobScheduledEvent>> subscriber) { + DCHECK(ready_ != true) << "Cannot Subscribe twice"; + + subscriber_ = std::move(subscriber); + + // Release edge of synchronizes-with AcquireIsReady. + ready_.store(true); + } + + void OnNext(RequestId request_id, JobScheduledEvent e) { + if (!AcquireIsReady()) { + return; + } + + if (!subscriber_->is_subscribed()) { + return; + } + + subscriber_->on_next(std::pair<RequestId, JobScheduledEvent>{std::move(request_id), std::move(e)}); + + } + + void OnCompleted() { + if (!AcquireIsReady()) { + return; + } + + subscriber_->on_completed(); + } + + private: + bool AcquireIsReady() { + // Synchronizes-with the release-edge in Subscribe. + // This can happen much later, only once the subscription actually happens. + + // However, as far as I know, 'rxcpp::subscriber' is not thread safe, + // (but the observable chain itself can be made thread-safe via #observe_on, etc). + // so we must avoid reading it until it has been fully synchronized. + // + // TODO: investigate rxcpp subscribers and see if we can get rid of this atomics, + // to make it simpler. + return ready_.load(); + } + + // TODO: also track the RequestId ? + + std::atomic<bool> ready_{false}; + + std::optional<rxcpp::subscriber<std::pair<RequestId, JobScheduledEvent>>> subscriber_; +}; + +std::ostream& operator<<(std::ostream& os, const android::content::pm::PackageChangeEvent& event) { + os << "PackageChangeEvent{"; + os << "packageName=" << event.packageName << ","; + os << "version=" << event.version << ","; + os << "lastUpdateTimeMillis=" << event.lastUpdateTimeMillis; + os << "}"; + return os; +} + class EventManager::Impl { public: Impl(/*borrow*/perfetto::RxProducerFactory& perfetto_factory) @@ -394,15 +943,36 @@ class EventManager::Impl { worker_thread_(rxcpp::observe_on_new_thread()), worker_thread2_(rxcpp::observe_on_new_thread()), io_thread_(perfetto::ObserveOnNewIoThread()) { + // Try to create version map + RetryCreateVersionMap(); - // TODO: read all properties from one config class. - tracing_allowed_ = ::android::base::GetBoolProperty("iorapd.perfetto.enable", /*default*/false); + iorap::common::StderrLogPrinter printer{"iorapd"}; + RefreshSystemProperties(printer); - if (tracing_allowed_) { - rx_lifetime_ = InitializeRxGraph(); - } else { - LOG(WARNING) << "Tracing disabled by iorapd.perfetto.enable=false"; - } + rx_lifetime_ = InitializeRxGraph(); + rx_lifetime_jobs_ = InitializeRxGraphForJobScheduledEvents(); + + android::add_sysprop_change_callback(&Impl::OnSyspropChanged, /*priority*/-10000); + } + + void RetryCreateVersionMap() { + android::base::Timer timer{}; + version_map_ = binder::PackageVersionMap::Create(); + std::chrono::milliseconds duration_ms = timer.duration(); + LOG(DEBUG) << "Got versions for " + << version_map_->Size() + << " packages in " + << duration_ms.count() + << "ms"; + } + + void SetTaskResultCallbacks(std::shared_ptr<TaskResultCallbacks> callbacks) { + DCHECK(callbacks_.expired()); + callbacks_ = callbacks; + } + + void Join() { + async_pool_.Join(); } bool OnAppLaunchEvent(RequestId request_id, @@ -411,11 +981,75 @@ class EventManager::Impl { << "request_id=" << request_id.request_id << "," << event; - app_launch_event_subject_.OnNext(event); + // Filter any incoming events through a defender that enforces + // that all state transitions are as contractually documented in + // ActivityMetricsLaunchObserver's javadoc. + AppLaunchEvent overwrite_event{}; + AppLaunchEventDefender::Result result = + app_launch_event_defender_.OnAppLaunchEvent(request_id, event, /*out*/&overwrite_event); + + switch (result) { + case AppLaunchEventDefender::Result::kAccept: + app_launch_event_subject_.OnNext(event); + return true; + case AppLaunchEventDefender::Result::kOverwrite: + app_launch_event_subject_.OnNext(overwrite_event); + return false; + case AppLaunchEventDefender::Result::kReject: + // Intentionally left-empty: we drop the event completely. + return false; + } + + // In theory returns BAD_VALUE to the other side of this binder connection. + // In practice we use 'oneway' flags so this doesn't matter on a regular build. + return false; + } + + bool OnDexOptEvent(RequestId request_id, + const DexOptEvent& event) { + LOG(VERBOSE) << "EventManager::OnDexOptEvent(" + << "request_id=" << request_id.request_id << "," + << event.package_name + << ")"; + + return PurgePackage(event.package_name); + } + + bool OnJobScheduledEvent(RequestId request_id, + const JobScheduledEvent& event) { + LOG(VERBOSE) << "EventManager::OnJobScheduledEvent(" + << "request_id=" << request_id.request_id << ",event=TODO)."; + + job_scheduled_event_subject_.OnNext(std::move(request_id), event); + return true; // No errors. + } + + bool OnPackageChanged(const android::content::pm::PackageChangeEvent& event) { + LOG(DEBUG) << "Received " << event; + if (event.isDeleted) { + // Do nothing if the package is deleted rignt now. + // The package will be removed from db during maintenance. + return true; + } + // Update the version map. + if (version_map_->Update(event.packageName, event.version)) { + return true; + } + + // Sometimes a package is updated without any version change. + // Clean it up in this case. + db::DbHandle db{db::SchemaModel::GetSingleton()}; + db::CleanUpFilesForPackage(db, event.packageName, event.version); return true; } + void Dump(/*borrow*/::android::Printer& printer) { + ::iorap::prefetcher::ReadAhead::Dump(printer); + ::iorap::perfetto::PerfettoConsumerImpl::Dump(/*borrow*/printer); + ::iorap::maintenance::Dump(db::SchemaModel::GetSingleton(), printer); + } + rxcpp::composite_subscription InitializeRxGraph() { LOG(VERBOSE) << "EventManager::InitializeRxGraph"; @@ -426,7 +1060,21 @@ class EventManager::Impl { rxcpp::composite_subscription lifetime; - AppLaunchEventState initial_state{&perfetto_factory_, &worker_thread2_, &io_thread_}; + if (!tracing_allowed_) { + LOG(WARNING) << "Tracing disabled by system property"; + } + if (!readahead_allowed_) { + LOG(WARNING) << "Readahead disabled by system property"; + } + + AppLaunchEventState initial_state{&perfetto_factory_, + readahead_allowed_, + tracing_allowed_, + package_blacklister_, + &worker_thread2_, + &io_thread_, + &async_pool_, + version_map_}; app_launch_events_ .subscribe_on(worker_thread_) .scan(std::move(initial_state), @@ -442,12 +1090,227 @@ class EventManager::Impl { return lifetime; } + // Runs the maintenance code to compile perfetto traces to compiled + // trace. + void StartMaintenance(bool output_text, + std::optional<std::string> inode_textcache, + bool verbose, + bool recompile, + uint64_t min_traces) { + ScopedFormatTrace atrace_bg_scope(ATRACE_TAG_PACKAGE_MANAGER, + "Background Job Scope"); + + { + ScopedFormatTrace atrace_update_versions(ATRACE_TAG_PACKAGE_MANAGER, + "Update package versions map cache"); + // Update the version map. + version_map_->UpdateAll(); + } + + db::DbHandle db{db::SchemaModel::GetSingleton()}; + { + ScopedFormatTrace atrace_cleanup_db(ATRACE_TAG_PACKAGE_MANAGER, + "Clean up obsolete data in database"); + // Cleanup the obsolete data in the database. + maintenance::CleanUpDatabase(db, version_map_); + } + + { + ScopedFormatTrace atrace_compile_apps(ATRACE_TAG_PACKAGE_MANAGER, + "Compile apps on device"); + // Compilation + maintenance::ControllerParameters params{ + output_text, + inode_textcache, + verbose, + recompile, + min_traces, + std::make_shared<maintenance::Exec>()}; + + LOG(DEBUG) << "StartMaintenance: min_traces=" << min_traces; + maintenance::CompileAppsOnDevice(db, params); + } + } + + rxcpp::composite_subscription InitializeRxGraphForJobScheduledEvents() { + LOG(VERBOSE) << "EventManager::InitializeRxGraphForJobScheduledEvents"; + + using RequestAndJobEvent = std::pair<RequestId, JobScheduledEvent>; + + job_scheduled_events_ = rxcpp::observable<>::create<RequestAndJobEvent>( + [&](rxcpp::subscriber<RequestAndJobEvent> subscriber) { + job_scheduled_event_subject_.Subscribe(std::move(subscriber)); + }); + + rxcpp::composite_subscription lifetime; + + job_scheduled_events_ + .observe_on(worker_thread_) // async handling. + .tap([this](const RequestAndJobEvent& e) { + LOG(VERBOSE) << "EventManager#JobScheduledEvent#tap(1) - job begins"; + this->NotifyProgress(e.first, TaskResult{TaskResult::State::kBegan}); + + StartMaintenance(/*output_text=*/false, + /*inode_textcache=*/std::nullopt, + /*verbose=*/false, + /*recompile=*/false, + s_min_traces); + + // TODO: probably this shouldn't be emitted until most of the usual DCHECKs + // (for example, validate a job isn't already started, the request is not reused, etc). + // In this way we could block from the client until it sees 'kBegan' and Log.wtf otherwise. + }) + .tap([](const RequestAndJobEvent& e) { + // TODO. Actual work. + LOG(VERBOSE) << "EventManager#JobScheduledEvent#tap(2) - job is being processed"; + + // TODO: abort functionality for in-flight jobs. + // + // maybe something like scan that returns an observable<Job> + flat map to that job. + // then we could unsubscribe from the scan to do a partial abort? need to try it and see if it works. + // + // other option is to create a new outer subscription for each job id which seems less ideal. + }) + .subscribe(/*out*/lifetime, + /*on_next*/ + [this](const RequestAndJobEvent& e) { + LOG(VERBOSE) << "EventManager#JobScheduledEvent#subscribe - job completed"; + this->NotifyComplete(e.first, TaskResult{TaskResult::State::kCompleted}); + } +#if 0 + , + /*on_error*/ + [](rxcpp::util::error_ptr err) { + LOG(ERROR) << "Scheduled job event failed: " << rxcpp::util::what(err); + + //std::shared_ptr<TaskResultCallbacks> callbacks = callbacks_.lock(); + //if (callbacks != nullptr) { + // FIXME: How do we get the request ID back out of the error? Seems like a problem. + // callbacks->OnComplete(, TaskResult{TaskResult::kError}); + // We may have to wrap with an iorap::expected instead of using on_error. + //} + + // FIXME: need to add a 'OnErrorResumeNext' operator? + DCHECK(false) << "forgot to implement OnErrorResumeNext"; + } +#endif + ); + + // TODO: error output should happen via an observable. + + return lifetime; + } + + void NotifyComplete(RequestId request_id, TaskResult result) { + std::shared_ptr<TaskResultCallbacks> callbacks = callbacks_.lock(); + if (callbacks != nullptr) { + callbacks->OnComplete(std::move(request_id), std::move(result)); + } else { + LOG(WARNING) << "EventManager: TaskResultCallbacks may have been released early"; + } + } + + void NotifyProgress(RequestId request_id, TaskResult result) { + std::shared_ptr<TaskResultCallbacks> callbacks = callbacks_.lock(); + if (callbacks != nullptr) { + callbacks->OnProgress(std::move(request_id), std::move(result)); + } else { + LOG(WARNING) << "EventManager: TaskResultCallbacks may have been released early"; + } + } + + static void OnSyspropChanged() { + LOG(DEBUG) << "OnSyspropChanged"; + } + + void RefreshSystemProperties(::android::Printer& printer) { + // TODO: read all properties from one config class. + // PH properties do not work if they contain ".". "_" was instead used here. + const char* ph_namespace = "runtime_native_boot"; + tracing_allowed_ = server_configurable_flags::GetServerConfigurableFlag( + ph_namespace, + "iorap_perfetto_enable", + ::android::base::GetProperty("iorapd.perfetto.enable", /*default*/"true")) == "true"; + s_tracing_allowed = tracing_allowed_; + printer.printFormatLine("iorapd.perfetto.enable = %s", tracing_allowed_ ? "true" : "false"); + + readahead_allowed_ = server_configurable_flags::GetServerConfigurableFlag( + ph_namespace, + "iorap_readahead_enable", + ::android::base::GetProperty("iorapd.readahead.enable", /*default*/"true")) == "true"; + s_readahead_allowed = readahead_allowed_; + printer.printFormatLine("iorapd.readahead.enable = %s", s_readahead_allowed ? "true" : "false"); + + s_min_traces = + ::android::base::GetUintProperty<uint64_t>("iorapd.maintenance.min_traces", /*default*/1); + uint64_t min_traces = s_min_traces; + printer.printFormatLine("iorapd.maintenance.min_traces = %" PRIu64, min_traces); + + package_blacklister_ = PackageBlacklister{ + /* Colon-separated string list of blacklisted packages, e.g. + * "foo.bar.baz;com.fake.name" would blacklist {"foo.bar.baz", "com.fake.name"} packages. + * + * Blacklisted packages are ignored by iorapd. + */ + server_configurable_flags::GetServerConfigurableFlag( + ph_namespace, + "iorap_blacklisted_packages", + ::android::base::GetProperty("iorapd.blacklist_packages", + /*default*/"")) + }; + + LOG(DEBUG) << "RefreshSystemProperties"; + } + + bool PurgePackage(::android::Printer& printer, const std::string& package_name) { + (void)printer; + return PurgePackage(package_name); + } + + bool PurgePackage(const std::string& package_name) { + db::DbHandle db{db::SchemaModel::GetSingleton()}; + db::CleanUpFilesForPackage(db, package_name); + LOG(DEBUG) << "PurgePackage: " << package_name; + return true; + } + + bool CompilePackage(::android::Printer& printer, const std::string& package_name) { + (void)printer; + + ScopedFormatTrace atrace_compile_app(ATRACE_TAG_PACKAGE_MANAGER, + "Compile one app on device"); + + maintenance::ControllerParameters params{ + /*output_text*/false, + /*inode_textcache*/std::nullopt, + WOULD_LOG(VERBOSE), + /*recompile*/false, + s_min_traces, + std::make_shared<maintenance::Exec>()}; + + db::DbHandle db{db::SchemaModel::GetSingleton()}; + bool res = maintenance::CompileSingleAppOnDevice(db, std::move(params), package_name); + LOG(DEBUG) << "CompilePackage: " << package_name; + + return res; + } + + bool readahead_allowed_{true}; + perfetto::RxProducerFactory& perfetto_factory_; bool tracing_allowed_{true}; + PackageBlacklister package_blacklister_{}; + + std::weak_ptr<TaskResultCallbacks> callbacks_; // avoid cycles with weakptr. + using AppLaunchEventRefWrapper = AppLaunchEventSubject::RefWrapper; rxcpp::observable<AppLaunchEventRefWrapper> app_launch_events_; AppLaunchEventSubject app_launch_event_subject_; + AppLaunchEventDefender app_launch_event_defender_; + + rxcpp::observable<std::pair<RequestId, JobScheduledEvent>> job_scheduled_events_; + JobScheduledEventSubject job_scheduled_event_subject_; rxcpp::observable<RequestId> completed_requests_; @@ -456,8 +1319,14 @@ class EventManager::Impl { observe_on_one_worker worker_thread2_; // low priority idle-class thread for IO operations. observe_on_one_worker io_thread_; + // async futures pool for async rx operations. + AsyncPool async_pool_; + + rxcpp::composite_subscription rx_lifetime_; // app launch events + rxcpp::composite_subscription rx_lifetime_jobs_; // job scheduled events - rxcpp::composite_subscription rx_lifetime_; + // package version map + std::shared_ptr<binder::PackageVersionMap> version_map_; //INTENTIONAL_COMPILER_ERROR_HERE: // FIXME: @@ -488,9 +1357,47 @@ std::shared_ptr<EventManager> EventManager::Create(perfetto::RxProducerFactory& return p; } +void EventManager::SetTaskResultCallbacks(std::shared_ptr<TaskResultCallbacks> callbacks) { + return impl_->SetTaskResultCallbacks(std::move(callbacks)); +} + +void EventManager::Join() { + return impl_->Join(); +} + bool EventManager::OnAppLaunchEvent(RequestId request_id, const AppLaunchEvent& event) { return impl_->OnAppLaunchEvent(request_id, event); } +bool EventManager::OnDexOptEvent(RequestId request_id, + const DexOptEvent& event) { + return impl_->OnDexOptEvent(request_id, event); +} + +bool EventManager::OnJobScheduledEvent(RequestId request_id, + const JobScheduledEvent& event) { + return impl_->OnJobScheduledEvent(request_id, event); +} + +bool EventManager::OnPackageChanged(const android::content::pm::PackageChangeEvent& event) { + return impl_->OnPackageChanged(event); +} + +void EventManager::Dump(/*borrow*/::android::Printer& printer) { + return impl_->Dump(printer); +} + +void EventManager::RefreshSystemProperties(::android::Printer& printer) { + return impl_->RefreshSystemProperties(printer); +} + +bool EventManager::PurgePackage(::android::Printer& printer, const std::string& package_name) { + return impl_->PurgePackage(printer, package_name); +} + +bool EventManager::CompilePackage(::android::Printer& printer, const std::string& package_name) { + return impl_->CompilePackage(printer, package_name); +} + } // namespace iorap::manager diff --git a/src/manager/event_manager.h b/src/manager/event_manager.h index 5355296..fa09eec 100644 --- a/src/manager/event_manager.h +++ b/src/manager/event_manager.h @@ -18,21 +18,50 @@ #define IORAP_MANAGER_EVENT_MANAGER_H_ #include "binder/app_launch_event.h" +#include "binder/dexopt_event.h" +#include "binder/job_scheduled_event.h" #include "binder/request_id.h" +#include "binder/task_result.h" + +#include <android/content/pm/PackageChangeEvent.h> #include <memory> +namespace android { +class Printer; +} // namespace android + namespace iorap::perfetto { - struct RxProducerFactory; +struct RxProducerFactory; } // namespace iorap::perfetto namespace iorap::manager { +// These callbacks are invoked by the EventManager to provide asynchronous notification for the status +// of an event handler. +// +// Calling 'On_Event' in EventManager should be considered merely to start the task. +// Calling 'OnComplete' here is considered to terminate the request (either with a success or error). +// OnProgress is optional, but if it is called it must be called prior to 'OnComplete'. +// +// All callbacks for the same request-id are sequentially consistent. +class TaskResultCallbacks { + public: + virtual void OnProgress(iorap::binder::RequestId request_id, iorap::binder::TaskResult task_result) {} + virtual void OnComplete(iorap::binder::RequestId request_id, iorap::binder::TaskResult task_result) {} + + virtual ~TaskResultCallbacks() {} +}; + class EventManager { public: static std::shared_ptr<EventManager> Create(); static std::shared_ptr<EventManager> Create( /*borrow*/perfetto::RxProducerFactory& perfetto_factory); + void SetTaskResultCallbacks(std::shared_ptr<TaskResultCallbacks> callbacks); + + // Joins any background threads created by EventManager. + void Join(); // Handles an AppLaunchEvent: // @@ -45,6 +74,41 @@ class EventManager { bool OnAppLaunchEvent(binder::RequestId request_id, const binder::AppLaunchEvent& event); + // Handles a DexOptEvent: + // + // Clean up the invalidate traces after package is updated by dexopt. + bool OnDexOptEvent(binder::RequestId request_id, + const binder::DexOptEvent& event); + + + // Handles a JobScheduledEvent: + // + // * Start/stop background jobs (typically for idle maintenance). + // * For example, this could kick off a background compiler. + bool OnJobScheduledEvent(binder::RequestId request_id, + const binder::JobScheduledEvent& event); + + // Handles a PackageChangeEvent: + // + // * The package manager service send this event for package install + // update or delete. + bool OnPackageChanged(const android::content::pm::PackageChangeEvent& event); + + // Print to adb shell dumpsys (for bugreport info). + void Dump(/*borrow*/::android::Printer& printer); + + // A dumpsys --refresh-properties command signaling that we should + // refresh our system properties. + void RefreshSystemProperties(::android::Printer& printer); + + // A dumpsys --purge-package <name> command signaling + // that all db rows and files associated with a package should be deleted. + bool PurgePackage(::android::Printer& printer, const std::string& package_name); + + // A dumpsys --compile-package <name> command signaling + // that a package should be recompiled. + bool CompilePackage(::android::Printer& printer, const std::string& package_name); + class Impl; private: std::unique_ptr<Impl> impl_; diff --git a/src/perfetto/perfetto_consumer.cc b/src/perfetto/perfetto_consumer.cc new file mode 100644 index 0000000..4fe677b --- /dev/null +++ b/src/perfetto/perfetto_consumer.cc @@ -0,0 +1,608 @@ +// Copyright (C) 2020 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. + +#include "perfetto/perfetto_consumer.h" + +#include "common/trace.h" + +#include <android-base/logging.h> +#include <android-base/properties.h> +#include <utils/Looper.h> +#include <utils/Printer.h> + +#include <limits> +#include <map> +#include <memory> +#include <mutex> +#include <sstream> +#include <vector> + +#include <inttypes.h> +#include <time.h> + +namespace iorap::perfetto { + +using State = PerfettoConsumer::State; +using Handle = PerfettoConsumer::Handle; +static constexpr Handle kInvalidHandle = PerfettoConsumer::kInvalidHandle; +using OnStateChangedCb = PerfettoConsumer::OnStateChangedCb; +using TraceBuffer = PerfettoConsumer::TraceBuffer; + +enum class StateKind { + kUncreated, + kCreated, + kStartedTracing, + kReadTracing, + kTimedOutDestroyed, // same as kDestroyed but timed out. + kDestroyed, // calling kDestroyed before timing out. +}; + +std::ostream& operator<<(std::ostream& os, StateKind kind) { + switch (kind) { + case StateKind::kUncreated: + os << "kUncreated"; + break; + case StateKind::kCreated: + os << "kCreated"; + break; + case StateKind::kStartedTracing: + os << "kStartedTracing"; + break; + case StateKind::kReadTracing: + os << "kReadTracing"; + break; + case StateKind::kTimedOutDestroyed: + os << "kTimedOutDestroyed"; + break; + case StateKind::kDestroyed: + os << "kDestroyed"; + break; + default: + os << "(invalid)"; + break; + } + return os; +} + +std::string ToString(StateKind kind) { + std::stringstream ss; + ss << kind; + return ss.str(); +} + +static constexpr uint64_t kSecToNano = 1000000000LL; + +static uint64_t GetTimeNanoseconds() { + struct timespec now; + clock_gettime(CLOCK_REALTIME, &now); + + uint64_t now_ns = (now.tv_sec * kSecToNano + now.tv_nsec); + return now_ns; +} + +// Describe the state of our handle in detail for debugging/logging. +struct HandleDescription { + Handle handle_; + StateKind kind_{StateKind::kUncreated}; // Our state. required for correctness. + OnStateChangedCb callback_{nullptr}; // Required for Destroy callbacks. + void* callback_arg_{nullptr}; + + // For dumping to logs: + State state_{State::kSessionNotFound}; // perfetto state + std::optional<uint64_t> started_tracing_ns_; // when StartedTracing last called. + std::optional<uint64_t> read_trace_ns_; // When ReadTrace last called. + std::uint64_t last_transition_ns_{0}; + std::optional<uint64_t> trace_cookie_; // atrace beginning at StartTracing. + bool trace_ended_{false}; // atrace ending at ReadTrace or Destroy. + + HandleDescription(Handle handle): handle_(handle) {} +}; + +// pimpl idiom to hide the implementation details from header +// +// Track and verify that our perfetto usage is sane. +struct PerfettoConsumerImpl::Impl { + Impl() : raw_{new PerfettoConsumerRawImpl{}}, + message_handler_{new TraceMessageHandler{this}} { + std::thread watchdog_thread{ [this]() { + ::android::sp<::android::Looper> looper; + { + std::lock_guard<std::mutex> guard{looper_mutex_}; + looper = ::android::Looper::prepare(/*opts*/0); + looper_ = looper; + } + + static constexpr int kTimeoutMillis = std::numeric_limits<int>::max(); + + while (true) { + // Execute any pending callbacks, otherwise just block forever. + int result = looper->pollAll(kTimeoutMillis); + + if (result == ::android::Looper::POLL_ERROR) { + LOG(ERROR) << "PerfettoConsumerImpl::Looper got a POLL_ERROR"; + } else { + LOG(DEBUG) << "PerfettoConsumerImpl::Looper result was " << result; + } + } + }}; + + // Let thread run freely on its own. + watchdog_thread.detach(); + + // Block until looper_ is prepared. + while (true) { + std::lock_guard<std::mutex> guard{looper_mutex_}; + if (looper_ != nullptr) { + break; + } + } + } + + private: + std::unique_ptr<PerfettoConsumerRawImpl> raw_; + std::map<Handle, HandleDescription> states_; + + // We need this to be a counter to avoid memory leaks. + Handle last_created_{0}; + Handle last_destroyed_{0}; + uint64_t trace_cookie_{0}; + + std::mutex mutex_; // Guard above values. + + ::android::sp<::android::Looper> looper_; + std::mutex looper_mutex_; // Guard looper_. + + struct TraceMessageHandler : public ::android::MessageHandler { + TraceMessageHandler(Impl* impl) : impl_{impl} { + CHECK(impl != nullptr); + } + + Impl* impl_; + + virtual void handleMessage(const ::android::Message& message) override { + impl_->OnTraceMessage(static_cast<Handle>(message.what)); + } + }; + + ::android::sp<TraceMessageHandler> message_handler_; + + public: + Handle Create(const void* config_proto, + size_t config_len, + OnStateChangedCb callback, + void* callback_arg) { + LOG(VERBOSE) << "PerfettoConsumer::Create(" + << "config_len=" << config_len << ")"; + Handle handle = raw_->Create(config_proto, config_len, callback, callback_arg); + + std::lock_guard<std::mutex> guard{mutex_}; + + // Assume every Handle starts at 0 and then increments by 1 every Create. + ++last_created_; + CHECK_EQ(last_created_, handle) << "perfetto handle had unexpected behavior."; + // Without this^ increment-by-1 behavior our detection of untracked state values is broken. + // If we have to, we can go with Untracked=Uncreated|Destroyed but it's better to distinguish + // the two if possible. + + HandleDescription handle_desc{handle}; + handle_desc.handle_ = handle; + handle_desc.callback_ = callback; + handle_desc.callback_arg_ = callback_arg; + UpdateHandleDescription(/*inout*/&handle_desc, StateKind::kCreated); + + // assume we never wrap around due to using int64 + bool inserted = states_.insert({handle, handle_desc}).second; + CHECK(inserted) << "perfetto handle was re-used: " << handle; + + return handle; + } + + void StartTracing(Handle handle) { + LOG(DEBUG) << "PerfettoConsumer::StartTracing(handle=" << handle << ")"; + + uint64_t trace_cookie; + { + std::lock_guard<std::mutex> guard{mutex_}; + + auto it = states_.find(handle); + if (it == states_.end()) { + LOG(ERROR) << "Cannot StartTracing(" << handle << "), untracked handle"; + return; + } + HandleDescription& handle_desc = it->second; + + raw_->StartTracing(handle); + UpdateHandleDescription(/*inout*/&handle_desc, StateKind::kStartedTracing); + } + + // Use a looper here to add a timeout and immediately destroy the trace buffer. + CHECK_LE(static_cast<int64_t>(handle), static_cast<int64_t>(std::numeric_limits<int>::max())); + int message_code = static_cast<int>(handle); + ::android::Message message{message_code}; + + std::lock_guard<std::mutex> looper_guard{looper_mutex_}; + looper_->sendMessageDelayed(static_cast<nsecs_t>(GetPropertyTraceTimeoutNs()), + message_handler_, + message); + } + + TraceBuffer ReadTrace(Handle handle) { + LOG(DEBUG) << "PerfettoConsumer::ReadTrace(handle=" << handle << ")"; + + std::lock_guard<std::mutex> guard{mutex_}; + + auto it = states_.find(handle); + if (it == states_.end()) { + LOG(ERROR) << "Cannot ReadTrace(" << handle << "), untracked handle"; + return TraceBuffer{}; + } + + HandleDescription& handle_desc = it->second; + + TraceBuffer trace_buffer = raw_->ReadTrace(handle); + UpdateHandleDescription(/*inout*/&handle_desc, StateKind::kReadTracing); + + return trace_buffer; + } + + void Destroy(Handle handle) { + HandleDescription handle_desc{handle}; + TryDestroy(handle, /*do_destroy*/true, /*out*/&handle_desc);; + } + + bool TryDestroy(Handle handle, bool do_destroy, /*out*/HandleDescription* handle_desc_out) { + CHECK(handle_desc_out != nullptr); + + LOG(VERBOSE) << "PerfettoConsumer::Destroy(handle=" << handle << ")"; + + std::lock_guard<std::mutex> guard{mutex_}; + + auto it = states_.find(handle); + if (it == states_.end()) { + // Leniency for calling Destroy multiple times. It's not a mistake. + LOG(ERROR) << "Cannot Destroy(" << handle << "), untracked handle"; + return false; + } + + HandleDescription& handle_desc = it->second; + + if (do_destroy) { + raw_->Destroy(handle); + } + UpdateHandleDescription(/*inout*/&handle_desc, StateKind::kDestroyed); + + *handle_desc_out = handle_desc; + + // No longer track this handle to avoid memory leaks. + last_destroyed_ = handle; + states_.erase(it); + + return true; + } + + State PollState(Handle handle) { + // Just pass-through the call, we never use it directly anyway. + return raw_->PollState(handle); + } + + // Either fetch or infer the current handle state from a handle. + // Meant for debugging/logging only. + HandleDescription GetOrInferHandleDescription(Handle handle) { + std::lock_guard<std::mutex> guard{mutex_}; + + auto it = states_.find(handle); + if (it == states_.end()) { + HandleDescription state{handle}; + // If it's untracked it hasn't been created yet, or it was already destroyed. + if (IsDestroyed(handle)) { + UpdateHandleDescription(/*inout*/&state, StateKind::kDestroyed); + } else { + if (!IsUncreated(handle)) { + LOG(WARNING) << "bad state detection"; + } + UpdateHandleDescription(/*inout*/&state, StateKind::kUncreated); + } + return state; + } + return it->second; + } + + void OnTraceMessage(Handle handle) { + LOG(VERBOSE) << "OnTraceMessage(" << static_cast<int64_t>(handle) << ")"; + HandleDescription handle_desc{handle}; + { + std::lock_guard<std::mutex> guard{mutex_}; + + auto it = states_.find(handle); + if (it == states_.end()) { + // Handle values are never re-used, so we can simply ignore the message here + // instead of having to remove it from the message queue. + LOG(VERBOSE) << "OnTraceMessage(" << static_cast<int64_t>(handle) + << ") no longer tracked handle"; + return; + } + handle_desc = it->second; + } + + // First check. Has this trace been active for too long? + uint64_t now_ns = GetTimeNanoseconds(); + if (handle_desc.kind_ == StateKind::kStartedTracing) { + // Ignore other kinds of traces because they don't exhaust perfetto resources. + CHECK(handle_desc.started_tracing_ns_.has_value()) << static_cast<int64_t>(handle); + + uint64_t started_tracing_ns = *handle_desc.started_tracing_ns_; + + if ((now_ns - started_tracing_ns) > GetPropertyTraceTimeoutNs()) { + LOG(WARNING) << "Perfetto Handle timed out after " << (now_ns - started_tracing_ns) << "ns" + << ", forcibly destroying"; + + // Let the callback handler call Destroy. + handle_desc.callback_(handle, State::kTraceFailed, handle_desc.callback_arg_); + } + } + + // Second check. Are there too many traces now? Cull the old traces. + std::vector<HandleDescription> handle_list; + do { + std::lock_guard<std::mutex> guard{mutex_}; + + size_t max_trace_count = GetPropertyMaxTraceCount(); + if (states_.size() > max_trace_count) { + size_t overflow_count = states_.size() - max_trace_count; + LOG(WARNING) << "Too many perfetto handles, overflowed by " << overflow_count + << ", pruning down to " << max_trace_count; + } else { + break; + } + + size_t prune_count = states_.size() - max_trace_count; + auto it = states_.begin(); + for (size_t i = 0; i < prune_count; ++i) { + // Simply prune by handle 1,2,3,4... + // We could do better with a timestamp if we wanted to. + ++it; + handle_list.push_back(it->second); + } + } while (false); + + for (HandleDescription& handle_desc : handle_list) { + LOG(DEBUG) << "Perfetto handle pruned: " << static_cast<int64_t>(handle); + + // Let the callback handler call Destroy. + handle_desc.callback_(handle, State::kTraceFailed, handle_desc.callback_arg_); + } + } + + private: + static uint64_t GetPropertyTraceTimeoutNs() { + static uint64_t value = // property is timeout in seconds + ::android::base::GetUintProperty<uint64_t>("iorapd.perfetto.timeout", /*default*/10); + return value * kSecToNano; + } + + static size_t GetPropertyMaxTraceCount() { + static size_t value = + ::android::base::GetUintProperty<size_t>("iorapd.perfetto.max_traces", /*default*/5); + return value; + } + + void UpdateHandleDescription(/*inout*/HandleDescription* handle_desc, StateKind kind) { + CHECK(handle_desc != nullptr); + handle_desc->kind_ = kind; + handle_desc->state_ = raw_->PollState(handle_desc->handle_); + + handle_desc->last_transition_ns_ = GetTimeNanoseconds(); + if (kind == StateKind::kStartedTracing) { + if (!handle_desc->started_tracing_ns_) { + handle_desc->started_tracing_ns_ = handle_desc->last_transition_ns_; + + handle_desc->trace_cookie_ = ++trace_cookie_; + + atrace_async_begin(ATRACE_TAG_ACTIVITY_MANAGER, + "Perfetto Scoped Trace", + *handle_desc->trace_cookie_); + atrace_int(ATRACE_TAG_ACTIVITY_MANAGER, + "Perfetto::Trace Handle", + static_cast<int32_t>(handle_desc->handle_)); + } + } + + if (kind == StateKind::kReadTracing) { + if (!handle_desc->read_trace_ns_) { + handle_desc->read_trace_ns_ = handle_desc->last_transition_ns_; + + if (handle_desc->trace_cookie_.has_value() && !handle_desc->trace_ended_) { + atrace_async_end(ATRACE_TAG_ACTIVITY_MANAGER, + "Perfetto Scoped Trace", + handle_desc->trace_cookie_.value()); + + handle_desc->trace_ended_ = true; + } + } + } + + // If Destroy is called prior to ReadTrace, mark the atrace as finished. + if (kind == StateKind::kDestroyed && handle_desc->trace_cookie_ && !handle_desc->trace_ended_) { + atrace_async_end(ATRACE_TAG_ACTIVITY_MANAGER, + "Perfetto Scoped Trace", + *handle_desc->trace_cookie_); + handle_desc->trace_ended_ = true; + } + } + + // The following state detection is for debugging only. + // We figure out if something is destroyed, uncreated, or live. + + // Does not distinguish between kTimedOutDestroyed and kDestroyed. + bool IsDestroyed(Handle handle) const { + auto it = states_.find(handle); + if (it != states_.end()) { + // Tracked values are not destroyed yet. + return false; + } + + if (handle == kInvalidHandle) { + return false; + } + + // The following assumes handles are incrementally generated: + if (it == states_.end()) { + // value is in range of [0, last_destroyed] => destroyed. + return handle <= last_destroyed_; + } + + auto min_it = states_.begin(); + if (handle < min_it->first) { + // value smaller than anything tracked: it was destroyed and we stopped tracking it. + return true; + } + + auto max_it = states_.rbegin(); + if (handle > max_it->first) { + // value too big: it's uncreated; + return false; + } + + // else it was a value that was previously tracked within [min,max] but no longer + return true; + } + + bool IsUncreated(Handle handle) const { + auto it = states_.find(handle); + if (it != states_.end()) { + // Tracked values are not uncreated. + return false; + } + + if (handle == kInvalidHandle) { + // Strangely enough, an invalid handle can never be created. + return true; + } + + // The following assumes handles are incrementally generated: + if (it == states_.end()) { + // value is in range of (last_destroyed, inf) => uncreated. + return handle > last_destroyed_; + } + + auto min_it = states_.begin(); + if (handle < min_it->first) { + // value smaller than anything tracked: it was destroyed and we stopped tracking it. + return false; + } + + auto max_it = states_.rbegin(); + if (handle > max_it->first) { + // value too big: it's uncreated; + return true; + } + + // else it was a value that was previously tracked within [min,max] but no longer + return false; + } + + public: + void Dump(::android::Printer& printer) { + // Locking can fail if we dump during a deadlock, so just do a best-effort lock here. + bool is_it_locked = mutex_.try_lock(); + + printer.printFormatLine("Perfetto consumer state:"); + if (!is_it_locked) { + printer.printLine(""""" (possible deadlock)"); + } + printer.printFormatLine(" Last destroyed handle: %" PRId64, last_destroyed_); + printer.printFormatLine(" Last created handle: %" PRId64, last_created_); + printer.printFormatLine(""); + printer.printFormatLine(" In-flight handles:"); + + for (auto it = states_.begin(); it != states_.end(); ++it) { + HandleDescription& handle_desc = it->second; + uint64_t started_tracing = + handle_desc.started_tracing_ns_ ? *handle_desc.started_tracing_ns_ : 0; + printer.printFormatLine(" Handle %" PRId64, handle_desc.handle_); + printer.printFormatLine(" Kind: %s", ToString(handle_desc.kind_).c_str()); + printer.printFormatLine(" Perfetto State: %d", static_cast<int>(handle_desc.state_)); + printer.printFormatLine(" Started tracing at: %" PRIu64, started_tracing); + printer.printFormatLine(" Last transition at: %" PRIu64, + handle_desc.last_transition_ns_); + } + if (states_.empty()) { + printer.printFormatLine(" (None)"); + } + + printer.printFormatLine(""); + + if (is_it_locked) { // u.b. if calling unlock on an unlocked mutex. + mutex_.unlock(); + } + } + + static PerfettoConsumerImpl::Impl* GetImplSingleton() { + static PerfettoConsumerImpl::Impl impl; + return &impl; + } +}; + +// Use a singleton because fruit instantiates a new PerfettoConsumer object for every +// new rx chain in RxProducerFactory. However, we want to track all perfetto transitions globally +// through 1 impl object. +// +// TODO: Avoiding a singleton would mean a more significant refactoring to remove the fruit/perfetto +// usage. + + +// +// Forward all calls to PerfettoConsumerImpl::Impl +// + +PerfettoConsumerImpl::~PerfettoConsumerImpl() { + // delete impl_; // TODO: no singleton +} + +void PerfettoConsumerImpl::Initialize() { + // impl_ = new PerfettoConsumerImpl::Impl(); // TODO: no singleton + impl_ = PerfettoConsumerImpl::Impl::GetImplSingleton(); +} + +void PerfettoConsumerImpl::Dump(::android::Printer& printer) { + PerfettoConsumerImpl::Impl::GetImplSingleton()->Dump(/*borrow*/printer); +} + +PerfettoConsumer::Handle PerfettoConsumerImpl::Create(const void* config_proto, + size_t config_len, + PerfettoConsumer::OnStateChangedCb callback, + void* callback_arg) { + return impl_->Create(config_proto, + config_len, + callback, + callback_arg); +} + +void PerfettoConsumerImpl::StartTracing(PerfettoConsumer::Handle handle) { + impl_->StartTracing(handle); +} + +PerfettoConsumer::TraceBuffer PerfettoConsumerImpl::ReadTrace(PerfettoConsumer::Handle handle) { + return impl_->ReadTrace(handle); +} + +void PerfettoConsumerImpl::Destroy(PerfettoConsumer::Handle handle) { + impl_->Destroy(handle); +} + +PerfettoConsumer::State PerfettoConsumerImpl::PollState(PerfettoConsumer::Handle handle) { + return impl_->PollState(handle); +} + +} // namespace iorap::perfetto diff --git a/src/perfetto/perfetto_consumer.h b/src/perfetto/perfetto_consumer.h index ce04ffd..2d828c0 100644 --- a/src/perfetto/perfetto_consumer.h +++ b/src/perfetto/perfetto_consumer.h @@ -18,6 +18,10 @@ #include <fruit/fruit.h> #include <perfetto/public/consumer_api.h> // libperfetto +namespace android { +class Printer; +} // namespace android + namespace iorap::perfetto { // Abstract out the Perfetto C API behind a virtual interface: @@ -48,9 +52,9 @@ struct PerfettoConsumer { }; // "Live" implementation that calls down to libperfetto. -struct PerfettoConsumerImpl : public PerfettoConsumer { +struct PerfettoConsumerRawImpl : public PerfettoConsumer { // Marks this constructor as the one to use for injection. - INJECT(PerfettoConsumerImpl()) = default; + INJECT(PerfettoConsumerRawImpl()) = default; virtual Handle Create(const void* config_proto, size_t config_len, @@ -77,7 +81,32 @@ struct PerfettoConsumerImpl : public PerfettoConsumer { return ::perfetto::consumer::PollState(handle); } - virtual ~PerfettoConsumerImpl() {} + virtual ~PerfettoConsumerRawImpl() {} +}; + +// "Safe" implementation that has extra checking around it. +class PerfettoConsumerImpl : public PerfettoConsumer { + public: + // Marks this constructor as the one to use for injection. + INJECT(PerfettoConsumerImpl()) { Initialize(); } + + virtual Handle Create(const void* config_proto, + size_t config_len, + OnStateChangedCb callback, + void* callback_arg) override; + virtual void StartTracing(Handle handle) override; + virtual TraceBuffer ReadTrace(Handle handle) override; + virtual void Destroy(Handle handle) override; + virtual State PollState(Handle handle) override; + + virtual ~PerfettoConsumerImpl(); + + static void Dump(/*borrow*/::android::Printer& printer); + + private: + void Initialize(); + struct Impl; + PerfettoConsumerImpl::Impl* impl_; }; } // namespace iorap::perfetto diff --git a/src/perfetto/rx_producer.cc b/src/perfetto/rx_producer.cc index 14311a1..824600c 100644 --- a/src/perfetto/rx_producer.cc +++ b/src/perfetto/rx_producer.cc @@ -83,7 +83,7 @@ PerfettoDependencies::Component PerfettoDependencies::CreateComponent() { .bind<PerfettoConsumer, PerfettoConsumerImpl>() .registerProvider([]() /* -> TraceConfig */ { return CreateConfig(kTraceDurationMs, - /*deferred_start*/true, + /*deferred_start*/false, kBufferSize); }); } @@ -199,6 +199,12 @@ class StateChangedSubject { using State = ::perfetto::consumer::State; using Handle = ::perfetto::consumer::Handle; + // Static members to solve use-after-free bug. + // The object is accessed from not only perfetto thread, but also iorap + // thread. Use this global map to manage it. + static std::mutex state_subject_mutex_; + static std::unordered_map<Handle, StateChangedSubject*> state_subject_map_; + StateChangedSubject(const ::perfetto::protos::TraceConfig& trace_config, rxcpp::subscriber<PerfettoStateChange> destination, std::shared_ptr<PerfettoConsumer> perfetto_consumer) @@ -391,7 +397,9 @@ class StateChangedSubject { bound_.store(true); // seq_cst release. } - // Thread safety: Called by libperfetto background thread (same one every time). + + // Called by libperfetto background thread (same one every time) and iorap + // thread. static void CallbackOnStateChanged(Handle handle, State state, void* callback_arg) { LOG(VERBOSE) << "CallbackOnStateChanged(handle=" << handle << ",state=" << state << ",callback_arg=" << callback_arg << ")"; @@ -399,24 +407,30 @@ class StateChangedSubject { // Validate OnStateChanged callback invariants, guaranteed by libperfetto. DCHECK_NE(handle, ::perfetto::consumer::kInvalidHandle); - // Note: Perfetto guarantees this callback always occurs on the same thread, - // so we don't need to do any extra thread synchronization here since we are only mutating - // StateChangedSubject from within this function. - // TODO: the memory ordering guarantees should be explicitly specified in consumer_api.h: // This isn't specific enough: // "The callback will be invoked on an internal thread and must not block." // However looking at the implementation it posts onto a single-thread task runner, // so this must be the case. - StateChangedSubject* state_subject = reinterpret_cast<StateChangedSubject*>(callback_arg); // This current thread owns 'StateChangedSubject', no other threads must access it. // Explicit synchronization is not necessary. - if (!state_subject->OnStateChanged(handle, state)) { - // Clean up the state tracker when we reach a terminal state. - // This means that no future callbacks will occur anymore. - delete state_subject; + { + std::lock_guard<std::mutex> guard(StateChangedSubject::state_subject_mutex_); + auto it = StateChangedSubject::state_subject_map_.find(handle); + // If the object is already deleted, do nothing. + if (it == StateChangedSubject::state_subject_map_.end()) { + return; + } + + StateChangedSubject* state_subject = it->second; + if (!state_subject->OnStateChanged(handle, state)) { + // Clean up the state tracker when we reach a terminal state. + // This means that no future callbacks will occur anymore. + StateChangedSubject::state_subject_map_.erase(it); + delete state_subject; + } } } @@ -447,6 +461,10 @@ class StateChangedSubject { // of just being subject-like? }; +std::mutex StateChangedSubject::state_subject_mutex_; +std::unordered_map<::perfetto::consumer::Handle, + StateChangedSubject*> StateChangedSubject::state_subject_map_; + // Note: The states will be emitted on a separate thread, so e.g. #as_blocking() // needs to be used to avoid dropping everything on the floor. // @@ -484,6 +502,11 @@ static auto /*[observable<State>, shared_ptr<PerfettoConsumerHandle>]*/ return; } + { + std::lock_guard<std::mutex> guard(StateChangedSubject::state_subject_mutex_); + StateChangedSubject::state_subject_map_[handle] = state_subject.get(); + } + std::shared_ptr<PerfettoConsumerHandle> safe_handle{ new PerfettoConsumerHandle{perfetto_consumer, handle}}; @@ -567,11 +590,63 @@ bool BinaryWireProtobuf<T>::WriteStringToFd(int fd) const { return true; } +template <typename T> +std::optional<BinaryWireProtobuf<T>> BinaryWireProtobuf<T>::ReadFullyFromFile( + const std::string& path, + bool follow_symlinks) { + std::vector<std::byte> data; + + int flags = O_RDONLY | O_CLOEXEC | O_BINARY | (follow_symlinks ? 0 : O_NOFOLLOW); + android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(path.c_str(), flags))); + if (fd == -1) { + return std::nullopt; + } + + if (ReadFdToString(fd.get(), /*out*/&data)) { + return BinaryWireProtobuf<T>{std::move(data)}; + } else { + return std::nullopt; + } +} + +template <typename T> +bool BinaryWireProtobuf<T>::operator==(const BinaryWireProtobuf<T>& other) const { + if (data_.size() != other.data_.size()) { + return false; + } + return std::equal(data_.begin(), data_.end(), other.data_.begin()); +} + +template <typename T> +bool BinaryWireProtobuf<T>::ReadFdToString(int fd, /*out*/std::vector<std::byte>* content) { + DCHECK(content != nullptr); + + content->clear(); + + struct stat sb; + if (fstat(fd, /*out*/&sb) != -1 && sb.st_size > 0) { + content->reserve(sb.st_size); + } + + char buf[BUFSIZ]; + auto it = content->begin(); + ssize_t n; + while ((n = TEMP_FAILURE_RETRY(read(fd, &buf[0], sizeof(buf)))) > 0) { + content->insert(it, + reinterpret_cast<std::byte*>(&buf[0]), + reinterpret_cast<std::byte*>(&buf[n])); + + std::advance(/*inout*/it, static_cast<size_t>(n)); + + static_assert(sizeof(char) == sizeof(std::byte), "sanity check for reinterpret cast"); + } + return (n == 0) ? true : false; +} + // explicit template instantiation. template struct BinaryWireProtobuf<::google::protobuf::MessageLite>; // TODO: refactor this not to need the template instantiation. -#if defined(__ANDROID__) // Copy of the 2.6.18 kernel header (linux/ioprio.h) #define IOPRIO_WHO_PROCESS (1) @@ -584,7 +659,6 @@ template struct BinaryWireProtobuf<::google::protobuf::MessageLite>; #define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT) #define IOPRIO_PRIO_DATA(mask) ((mask) & IOPRIO_PRIO_MASK) #define IOPRIO_PRIO_VALUE(class, data) (((class) << IOPRIO_CLASS_SHIFT) | data) -#endif static int ioprio_get(int which, int who) { return syscall(SYS_ioprio_get, which, who); diff --git a/src/perfetto/rx_producer.h b/src/perfetto/rx_producer.h index f4c40b4..4e93f0d 100644 --- a/src/perfetto/rx_producer.h +++ b/src/perfetto/rx_producer.h @@ -51,10 +51,39 @@ struct PerfettoDependencies { uint32_t buffer_size = 4096); }; +namespace detail { + template <typename T> + struct concept_message_lite_base { + static_assert(std::is_base_of_v<::google::protobuf::MessageLite, T>, + "T must inherit from MessageLite"); + using type = T; + }; + + template <typename T> + using concept_message_lite_base_t = typename concept_message_lite_base<T>::type; +} // namespace detail + +/* + * In Android's version of libprotobuf, move-constructors are not generated. + * This results in a legitimate (~10sec per TracePacket being compiled) slowdown, + * so we need to avoid it everywhere. + * + * 1) Don't copy the protos, move them instead. + * 2) Use 'shared_ptr' because rxcpp won't compile with unique_ptr. + */ +template <typename T> +using ProtobufPtr = std::shared_ptr<detail::concept_message_lite_base_t<const T>>; + +template <typename T> +using ProtobufMutablePtr = std::shared_ptr<detail::concept_message_lite_base_t<T>>; + // This acts as a lightweight type marker so that we know what data has actually // encoded under the hood. template <typename T> struct BinaryWireProtobuf { + static_assert(std::is_base_of_v<::google::protobuf::MessageLite, T>, + "T should be a base class of MessageLite"); + std::vector<std::byte>& data() { return data_; } @@ -78,13 +107,21 @@ struct BinaryWireProtobuf { data_.data()); } + explicit BinaryWireProtobuf(std::vector<std::byte> data) : data_{std::move(data)} { + } + + // You wouldn't want to accidentally copy a giant multi-megabyte chunk would you? + // BinaryWireProtobuf(const BinaryWireProtobuf& other) = delete; // FIXME: rx likes to copy. + BinaryWireProtobuf(const BinaryWireProtobuf& other) = default; + BinaryWireProtobuf(BinaryWireProtobuf&& other) = default; + // Important: Deserialization could fail, for example data is truncated or // some minor disc corruption occurred. template <typename U> - std::optional<U> MaybeUnserialize() { - U unencoded; + std::optional<ProtobufPtr<U>> MaybeUnserialize() { + ProtobufMutablePtr<U> unencoded{new U{}}; - if (!unencoded.ParseFromArray(data_.data(), data_.size())) { + if (!unencoded->ParseFromArray(data_.data(), data_.size())) { return std::nullopt; } @@ -94,10 +131,20 @@ struct BinaryWireProtobuf { bool WriteFullyToFile(const std::string& path, bool follow_symlinks = false) const; + static std::optional<BinaryWireProtobuf<T>> ReadFullyFromFile(const std::string& path, + bool follow_symlinks = false); + + bool operator==(const BinaryWireProtobuf<T>& other) const; + bool operator!=(const BinaryWireProtobuf<T>& other) const { + return !(*this == other); + } + private: static bool CleanUpAfterFailedWrite(const std::string& path); bool WriteStringToFd(int fd) const; + static bool ReadFdToString(int fd, /*out*/std::vector<std::byte>* data); + std::vector<std::byte> data_; }; diff --git a/src/prefetcher/main.cc b/src/prefetcher/main.cc new file mode 100644 index 0000000..94ba141 --- /dev/null +++ b/src/prefetcher/main.cc @@ -0,0 +1,190 @@ +// Copyright (C) 2019 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. + +#include "common/debug.h" +#include "common/loggers.h" +#include "prefetcher/prefetcher_daemon.h" + +#include <android-base/parseint.h> +#include <android-base/logging.h> + +#include <iostream> +#include <optional> +#include <string_view> +#include <string> +#include <vector> + +#include <signal.h> + +#if defined(IORAP_PREFETCHER_MAIN) + +namespace iorap::prefetcher { + +void Usage(char** argv) { + std::cerr << "Usage: " << argv[0] << " [--input-fd=#] [--output-fd=#]" << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Run the readahead daemon which can prefetch files given a command." << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Optional flags:" << std::endl; + std::cerr << " --help,-h Print this Usage." << std::endl; + std::cerr << " --input-fd,-if Input FD (default stdin)." << std::endl; + std::cerr << " --output-fd,-of Output FD (default stdout)." << std::endl; + std::cerr << " --use-sockets,-us Use AF_UNIX sockets (default off)." << std::endl; + std::cerr << " --command-format=[text|binary],-cf (default text)." << std::endl; + std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl; + std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl; + exit(1); +} + +int Main(int argc, char** argv) { + // Go to system logcat + stderr when running from command line. + android::base::InitLogging(argv, iorap::common::StderrAndLogdLogger{android::base::SYSTEM}); + + bool wait_for_keystroke = false; + bool enable_verbose = false; + + bool command_format_text = false; // false = binary. + + int arg_input_fd = -1; + int arg_output_fd = -1; + + std::vector<std::string> arg_input_filenames; + bool arg_use_sockets = false; + + LOG(VERBOSE) << "argparse: argc=" << argc; + + for (int arg = 1; arg < argc; ++arg) { + std::string argstr = argv[arg]; + bool has_arg_next = (arg+1)<argc; + std::string arg_next = has_arg_next ? argv[arg+1] : ""; + + LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr; + + if (argstr == "--help" || argstr == "-h") { + Usage(argv); + } else if (argstr == "--input-fd" || argstr == "-if") { + if (!has_arg_next) { + LOG(ERROR) << "--input-fd=<numeric-value>"; + Usage(argv); + } + if (!::android::base::ParseInt(arg_next, /*out*/&arg_input_fd)) { + LOG(ERROR) << "--input-fd value must be numeric"; + Usage(argv); + } + } else if (argstr == "--output-fd" || argstr == "-of") { + if (!has_arg_next) { + LOG(ERROR) << "--output-fd=<numeric-value>"; + Usage(argv); + } + if (!::android::base::ParseInt(arg_next, /*out*/&arg_output_fd)) { + LOG(ERROR) << "--output-fd value must be numeric"; + Usage(argv); + } + } else if (argstr == "--command-format=" || argstr == "-cf") { + if (!has_arg_next) { + LOG(ERROR) << "--command-format=text|binary"; + Usage(argv); + } + if (arg_next == "text") { + command_format_text = true; + } else if (arg_next == "binary") { + command_format_text = false; + } else { + LOG(ERROR) << "--command-format must be one of {text,binary}"; + Usage(argv); + } + } else if (argstr == "--use-sockets" || argstr == "-us") { + arg_use_sockets = true; + } else if (argstr == "--verbose" || argstr == "-v") { + enable_verbose = true; + } else if (argstr == "--wait" || argstr == "-w") { + wait_for_keystroke = true; + } else { + arg_input_filenames.push_back(argstr); + } + } + + if (enable_verbose) { + android::base::SetMinimumLogSeverity(android::base::VERBOSE); + + LOG(VERBOSE) << "Verbose check"; + LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild; + } else { + android::base::SetMinimumLogSeverity(android::base::DEBUG); + } + + LOG(VERBOSE) << "argparse: argc=" << argc; + + for (int arg = 1; arg < argc; ++arg) { + std::string argstr = argv[arg]; + + LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr; + } + + // Useful to attach a debugger... + // 1) $> iorap.cmd.readahead -w <args> + // 2) $> gdbclient <pid> + if (wait_for_keystroke) { + LOG(INFO) << "Self pid: " << getpid(); + + raise(SIGSTOP); + // LOG(INFO) << "Press any key to continue..."; + // std::cin >> wait_for_keystroke; + } + + // auto system_call = std::make_unique<SystemCallImpl>(); + // TODO: mock readahead calls? + // + // Uncomment this if we want to leave the process around to inspect it from adb shell. + // sleep(100000); + + int return_code = 0; + + LOG(VERBOSE) << "Hello world"; + + if (arg_input_fd == -1) { + arg_input_fd = STDIN_FILENO; + } + if (arg_output_fd == -1) { + arg_output_fd = STDOUT_FILENO; + } + + PrefetcherForkParameters params{}; + params.input_fd = arg_input_fd; + params.output_fd = arg_output_fd; + params.format_text = command_format_text; + params.use_sockets = arg_use_sockets; + + LOG(VERBOSE) << "main: Starting PrefetcherDaemon: " + << "input_fd=" << params.input_fd + << ",output_fd=" << params.output_fd; + { + PrefetcherDaemon daemon; + // Blocks until receiving an exit command. + daemon.Main(std::move(params)); + } + LOG(VERBOSE) << "main: Terminating"; + + // 0 -> successfully executed all commands. + // 1 -> failed along the way (#on_error and also see the error logs). + return return_code; +} + +} // namespace iorap::prefetcher + +int main(int argc, char** argv) { + return ::iorap::prefetcher::Main(argc, argv); +} + +#endif // IORAP_PREFETCHER_MAIN diff --git a/src/prefetcher/main_client.cc b/src/prefetcher/main_client.cc new file mode 100644 index 0000000..ff7ee6d --- /dev/null +++ b/src/prefetcher/main_client.cc @@ -0,0 +1,160 @@ +// Copyright (C) 2019 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. + +#include "common/debug.h" +#include "prefetcher/read_ahead.h" +#include "prefetcher/task_id.h" + +#include <android-base/parseint.h> +#include <android-base/logging.h> + +#include <iostream> +#include <optional> +#include <string_view> +#include <string> +#include <vector> + +#include <signal.h> +#include <unistd.h> + + +namespace iorap::prefetcher { + +static void UsageClient(char** argv) { + std::cerr << "UsageClient: " << argv[0] << " <path-to-compiled-trace.pb> [... pathN]" << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Run the readahead daemon which can prefetch files given a command." << std::endl; + std::cerr << "" << std::endl; + std::cerr << " Optional flags:" << std::endl; + std::cerr << " --help,-h Print this UsageClient." << std::endl; + std::cerr << " --verbose,-v Set verbosity (default off)." << std::endl; + std::cerr << " --task-duration-ms,-tdm Set task duration (default: 0ms)." << std::endl; + std::cerr << " --use-sockets,-us Use AF_UNIX sockets (default: off)" << std::endl; + std::cerr << " --wait,-w Wait for key stroke before continuing (default off)." << std::endl; + exit(1); +} + +int MainClient(int argc, char** argv) { + android::base::InitLogging(argv); + android::base::SetLogger(android::base::StderrLogger); + + bool wait_for_keystroke = false; + bool enable_verbose = false; + + bool command_format_text = false; // false = binary. + + unsigned int arg_task_duration_ms = 10000; + std::vector<std::string> arg_input_filenames; + bool arg_use_sockets = false; + + LOG(VERBOSE) << "argparse: argc=" << argc; + + for (int arg = 1; arg < argc; ++arg) { + std::string argstr = argv[arg]; + bool has_arg_next = (arg+1)<argc; + std::string arg_next = has_arg_next ? argv[arg+1] : ""; + + LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr; + + if (argstr == "--help" || argstr == "-h") { + UsageClient(argv); + } else if (argstr == "--use-sockets" || argstr == "-us") { + arg_use_sockets = true; + } else if (argstr == "--verbose" || argstr == "-v") { + enable_verbose = true; + } else if (argstr == "--wait" || argstr == "-w") { + wait_for_keystroke = true; + } else if (argstr == "--task-duration-ms" || argstr == "-tdm") { + if (!has_arg_next) { + LOG(ERROR) << "--task-duration-ms: requires uint parameter"; + UsageClient(argv); + } else if (!::android::base::ParseUint(arg_next, &arg_task_duration_ms)) { + LOG(ERROR) << "--task-duration-ms: requires non-negative parameter"; + UsageClient(argv); + } + } else { + arg_input_filenames.push_back(argstr); + } + } + + if (enable_verbose) { + android::base::SetMinimumLogSeverity(android::base::VERBOSE); + + LOG(VERBOSE) << "Verbose check"; + LOG(VERBOSE) << "Debug check: " << ::iorap::kIsDebugBuild; + } else { + android::base::SetMinimumLogSeverity(android::base::DEBUG); + } + + LOG(VERBOSE) << "argparse: argc=" << argc; + + for (int arg = 1; arg < argc; ++arg) { + std::string argstr = argv[arg]; + + LOG(VERBOSE) << "argparse: argv[" << arg << "]=" << argstr; + } + + // Useful to attach a debugger... + // 1) $> iorap.cmd.readahead -w <args> + // 2) $> gdbclient <pid> + if (wait_for_keystroke) { + LOG(INFO) << "Self pid: " << getpid(); + + raise(SIGSTOP); + // LOG(INFO) << "Press any key to continue..."; + // std::cin >> wait_for_keystroke; + } + + // auto system_call = std::make_unique<SystemCallImpl>(); + // TODO: mock readahead calls? + // + // Uncomment this if we want to leave the process around to inspect it from adb shell. + // sleep(100000); + + int return_code = 0; + + LOG(VERBOSE) << "Hello world"; + + ReadAhead read_ahead{arg_use_sockets}; // Don't count the time it takes to fork+exec. + + size_t task_id_counter = 0; + for (const std::string& compiled_trace_path : arg_input_filenames) { + TaskId task_id{task_id_counter++, compiled_trace_path}; + + LOG(DEBUG) << "main: ReadAhead BeginTask: " + << "task_duration_ms=" << arg_task_duration_ms << "," + << task_id; + + read_ahead.BeginTask(task_id); + usleep(arg_task_duration_ms*1000); + + LOG(DEBUG) << "main: ReadAhead FinishTask: " << task_id; + + read_ahead.FinishTask(task_id); + } + LOG(VERBOSE) << "main: Terminating"; + + // 0 -> successfully executed all commands. + // 1 -> failed along the way (#on_error and also see the error logs). + return return_code; +} + +} // namespace iorap::prefetcher + +#if defined(IORAP_PREFETCHER_MAIN_CLIENT) +int main(int argc, char** argv) { + return ::iorap::prefetcher::MainClient(argc, argv); +} + +#endif // IORAP_PREFETCHER_MAIN_CLIENT diff --git a/src/prefetcher/minijail.cc b/src/prefetcher/minijail.cc new file mode 100644 index 0000000..df4b11b --- /dev/null +++ b/src/prefetcher/minijail.cc @@ -0,0 +1,49 @@ +// Copyright (C) 2019 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. + +#include "prefetcher/minijail.h" + +#include <android-base/logging.h> +#include <libminijail.h> + +namespace iorap::prefetcher { + +static const char kSeccompFilePath[] = "/system/etc/seccomp_policy/iorap.prefetcherd.policy"; + +bool MiniJail() { + /* no seccomp policy for this architecture */ + if (access(kSeccompFilePath, R_OK) == -1) { + LOG(WARNING) << "No seccomp filter defined for this architecture."; + return true; + } + + struct minijail* jail = minijail_new(); + if (jail == NULL) { + LOG(WARNING) << "Failed to create minijail."; + return false; + } + + minijail_no_new_privs(jail); + minijail_log_seccomp_filter_failures(jail); + minijail_use_seccomp_filter(jail); + minijail_parse_seccomp_filters(jail, kSeccompFilePath); + minijail_enter(jail); + minijail_destroy(jail); + + LOG(DEBUG) << "minijail installed."; + + return true; +} + +} diff --git a/src/prefetcher/minijail.h b/src/prefetcher/minijail.h new file mode 100644 index 0000000..9caefe6 --- /dev/null +++ b/src/prefetcher/minijail.h @@ -0,0 +1,23 @@ +// Copyright (C) 2019 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. + +#ifndef SRC_PREFETCHER_MINIJAIL_H +#define SRC_PREFETCHER_MINIJAIL_H + +namespace iorap::prefetcher { +// Install a minijail using seccomp_policy/prefetcherd.{ARCH}.policy file. +bool MiniJail(); +} + +#endif // SRC_PREFETCHER_MINIJAIL_H diff --git a/src/prefetcher/prefetcher_daemon.cc b/src/prefetcher/prefetcher_daemon.cc new file mode 100644 index 0000000..f4b9087 --- /dev/null +++ b/src/prefetcher/prefetcher_daemon.cc @@ -0,0 +1,1367 @@ +// Copyright (C) 2019 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. + +#include "prefetcher/minijail.h" +#include "common/cmd_utils.h" +#include "prefetcher/prefetcher_daemon.h" +#include "prefetcher/session_manager.h" +#include "prefetcher/session.h" + +#include <android-base/logging.h> +#include <android-base/properties.h> + +#include <deque> +#include <iomanip> +#include <string> +#include <sstream> +#include <vector> + +#include <fcntl.h> +#include <string.h> +#include <sys/socket.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <sys/un.h> +#include <unistd.h> + +namespace iorap::prefetcher { + +// Gate super-spammy IPC logging behind a property. +// This is beyond merely annoying, enabling this logging causes prefetching to be about 1000x slower. +static bool LogVerboseIpc() { + static bool initialized = false; + static bool verbose_ipc; + + if (initialized == false) { + initialized = true; + + verbose_ipc = + ::android::base::GetBoolProperty("iorapd.readahead.verbose_ipc", /*default*/false); + } + + return verbose_ipc; +} + +static const bool kInstallMiniJail = + ::android::base::GetBoolProperty("iorapd.readahead.minijail", /*default*/true); + +static constexpr const char kCommandFileName[] = "/system/bin/iorap.prefetcherd"; + +static constexpr size_t kPipeBufferSize = 1024 * 1024; // matches /proc/sys/fs/pipe-max-size + +using ArgString = const char*; + +std::ostream& operator<<(std::ostream& os, ReadAheadKind ps) { + switch (ps) { + case ReadAheadKind::kFadvise: + os << "fadvise"; + break; + case ReadAheadKind::kMmapLocked: + os << "mmap"; + break; + case ReadAheadKind::kMlock: + os << "mlock"; + break; + default: + os << "<invalid>"; + } + return os; +} + +std::ostream& operator<<(std::ostream& os, CommandChoice choice) { + switch (choice) { + case CommandChoice::kRegisterFilePath: + os << "kRegisterFilePath"; + break; + case CommandChoice::kUnregisterFilePath: + os << "kUnregisterFilePath"; + break; + case CommandChoice::kReadAhead: + os << "kReadAhead"; + break; + case CommandChoice::kExit: + os << "kExit"; + break; + case CommandChoice::kCreateSession: + os << "kCreateSession"; + break; + case CommandChoice::kDestroySession: + os << "kDestroySession"; + break; + case CommandChoice::kDumpSession: + os << "kDumpSession"; + break; + case CommandChoice::kDumpEverything: + os << "kDumpEverything"; + break; + case CommandChoice::kCreateFdSession: + os << "kCreateFdSession"; + break; + default: + CHECK(false) << "forgot to handle this choice"; + break; + } + return os; +} + +std::ostream& operator<<(std::ostream& os, const Command& command) { + os << "Command{"; + os << "choice=" << command.choice << ","; + + bool has_session_id = true; + bool has_id = true; + switch (command.choice) { + case CommandChoice::kDumpEverything: + case CommandChoice::kExit: + has_session_id = false; + FALLTHROUGH_INTENDED; + case CommandChoice::kCreateFdSession: + case CommandChoice::kCreateSession: + case CommandChoice::kDestroySession: + case CommandChoice::kDumpSession: + has_id = false; + break; + default: + break; + } + + if (has_session_id) { + os << "sid=" << command.session_id << ","; + } + + if (has_id) { + os << "id=" << command.id << ","; + } + + switch (command.choice) { + case CommandChoice::kRegisterFilePath: + os << "file_path="; + + if (command.file_path) { + os << *(command.file_path); + } else { + os << "(nullopt)"; + } + break; + case CommandChoice::kUnregisterFilePath: + break; + case CommandChoice::kReadAhead: + os << "read_ahead_kind=" << command.read_ahead_kind << ","; + os << "length=" << command.length << ","; + os << "offset=" << command.offset << ","; + break; + case CommandChoice::kExit: + break; + case CommandChoice::kCreateFdSession: + os << "fd="; + if (command.fd.has_value()) { + os << command.fd.value(); + } else { + os << "(nullopt)"; + } + os << ","; + FALLTHROUGH_INTENDED; + case CommandChoice::kCreateSession: + os << "description="; + if (command.file_path) { + os << "'" << *(command.file_path) << "'"; + } else { + os << "(nullopt)"; + } + break; + case CommandChoice::kDestroySession: + break; + case CommandChoice::kDumpSession: + break; + case CommandChoice::kDumpEverything: + break; + default: + CHECK(false) << "forgot to handle this choice"; + break; + } + + os << "}"; + + return os; +} + +template <typename T> +struct ParseResult { + T value; + char* next_token; + size_t stream_size; + + ParseResult() : value{}, next_token{nullptr}, stream_size{} { + } + + constexpr operator bool() const { + return next_token != nullptr; + } +}; + +// Very spammy: Keep it off by default. Set to true if changing this code. +static constexpr bool kDebugParsingRead = false; + +#define DEBUG_PREAD if (kDebugParsingRead) LOG(VERBOSE) << "ParsingRead " + + + +// Parse a strong type T from a buffer stream. +// If there's insufficient space left to parse the value, an empty ParseResult is returned. +template <typename T> +ParseResult<T> ParsingRead(char* stream, size_t stream_size) { + if (stream == nullptr) { + DEBUG_PREAD << "stream was null"; + return {}; + } + + if constexpr (std::is_same_v<T, std::string>) { + ParseResult<uint32_t> length = ParsingRead<uint32_t>(stream, stream_size); + + if (!length) { + DEBUG_PREAD << "could not find length"; + // Not enough bytes left? + return {}; + } + + ParseResult<std::string> string_result; + string_result.value.reserve(length); + + stream = length.next_token; + stream_size = length.stream_size; + + for (size_t i = 0; i < length.value; ++i) { + ParseResult<char> char_result = ParsingRead<char>(stream, stream_size); + + stream = char_result.next_token; + stream_size = char_result.stream_size; + + if (!char_result) { + DEBUG_PREAD << "too few chars in stream, expected length: " << length.value; + // Not enough bytes left? + return {}; + } + + string_result.value += char_result.value; + + DEBUG_PREAD << "string preliminary is : " << string_result.value; + } + + DEBUG_PREAD << "parsed string to: " << string_result.value; + string_result.next_token = stream; + return string_result; + } else { + if (sizeof(T) > stream_size) { + return {}; + } + + ParseResult<T> result; + result.next_token = stream + sizeof(T); + result.stream_size = stream_size - sizeof(T); + + memcpy(&result.value, stream, sizeof(T)); + + return result; + } +} + +// Convenience overload to chain multiple ParsingRead together. +template <typename T, typename U> +ParseResult<T> ParsingRead(ParseResult<U> result) { + return ParsingRead<T>(result.next_token, result.stream_size); +} + +class CommandParser { + public: + CommandParser(PrefetcherForkParameters params) { + params_ = params; + } + + std::vector<Command> ParseSocketCommands(bool& eof) { + eof = false; + + std::vector<Command> commands_vec; + + std::vector<char> buf_vector; + buf_vector.resize(1024*1024); // 1MB. + char* buf = &buf_vector[0]; + + // Binary only parsing. The higher level code can parse text + // with ifstream if it really wants to. + char* stream = &buf[0]; + size_t stream_size = buf_vector.size(); + + while (true) { + if (stream_size == 0) { + // TODO: reply with an overflow command. + LOG(WARNING) << "prefetcher_daemon command overflow, dropping all commands."; + stream = &buf[0]; + stream_size = buf_vector.size(); + memset(&buf[0], /*c*/0, buf_vector.size()); + } + + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon block recvmsg for commands (fd=" << params_.input_fd << ")"; + } + + ssize_t count; + struct msghdr hdr; + memset(&hdr, 0, sizeof(hdr)); + + { + union { + struct cmsghdr cmh; + char control[CMSG_SPACE(sizeof(int))]; + } control_un; + memset(&control_un, 0, sizeof(control_un)); + + /* Set 'control_un' to describe ancillary data that we want to receive */ + control_un.cmh.cmsg_len = CMSG_LEN(sizeof(int)); /* fd is sizeof(int) */ + control_un.cmh.cmsg_level = SOL_SOCKET; + control_un.cmh.cmsg_type = SCM_CREDENTIALS; + + // the regular message data will be read into stream + struct iovec iov; + memset(&iov, 0, sizeof(iov)); + iov.iov_base = stream; + iov.iov_len = stream_size; + + /* Set hdr fields to describe 'control_un' */ + hdr.msg_control = control_un.control; + hdr.msg_controllen = sizeof(control_un.control); + hdr.msg_iov = &iov; + hdr.msg_iovlen = 1; + hdr.msg_name = nullptr; /* no peer address */ + hdr.msg_namelen = 0; + + count = TEMP_FAILURE_RETRY(recvmsg(params_.input_fd, &hdr, /*flags*/0)); + } + + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon recvmsg " << count << " for stream size:" << stream_size; + } + + if (count < 0) { + PLOG(ERROR) << "failed to recvmsg from input fd"; + break; + // TODO: let the daemon be restarted by higher level code? + } else if (count == 0) { + LOG(WARNING) << "prefetcher_daemon input_fd end-of-file; terminating"; + eof = true; + break; + // TODO: let the daemon be restarted by higher level code? + } + + { + /* Extract fd from ancillary data if present */ + struct cmsghdr* hp; + hp = CMSG_FIRSTHDR(&hdr); + if (hp && + // FIXME: hp->cmsg_len returns an absurdly large value. is it overflowing? + // (hp->cmsg_len == CMSG_LEN(sizeof(int))) && + (hp->cmsg_level == SOL_SOCKET) && + (hp->cmsg_type == SCM_RIGHTS)) { + + int passed_fd = *(int*) CMSG_DATA(hp); + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon received FD " << passed_fd; + } + + // tack the FD into our dequeue. + // we assume the FDs are sent in-order same as the regular iov are sent in-order. + longbuf_fds_.insert(longbuf_fds_.end(), passed_fd); + } else if (hp != nullptr) { + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon::read got CMSG but it wasn't matching SCM_RIGHTS," + << "cmsg_len=" << hp->cmsg_len << "," + << "cmsg_level=" << hp->cmsg_level << "," + << "cmsg_type=" << hp->cmsg_type; + } + } + } + + longbuf_.insert(longbuf_.end(), stream, stream + count); + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon updated longbuf size: " << longbuf_.size(); + } + + // reconstruct a stream of [iov_Command chdr_fd?]* back into [Command]* + { + if (longbuf_.size() == 0) { + break; + } + + std::vector<char> v(longbuf_.begin(), + longbuf_.end()); + + std::vector<int> v_fds{longbuf_fds_.begin(), longbuf_fds_.end()}; + + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon longbuf_ size: " << v.size(); + if (WOULD_LOG(VERBOSE)) { + std::stringstream dump; + dump << std::hex << std::setfill('0'); + for (size_t i = 0; i < v.size(); ++i) { + dump << std::setw(2) << static_cast<unsigned>(v[i]); + } + + LOG(VERBOSE) << "PrefetcherDaemon longbuf_ dump: " << dump.str(); + } + LOG(VERBOSE) << "PrefetcherDaemon longbuf_fds_ size: " << v_fds.size(); + if (WOULD_LOG(VERBOSE)) { + std::stringstream dump; + for (size_t i = 0; i < v_fds.size(); ++i) { + dump << v_fds[i] << ", "; + } + + LOG(VERBOSE) << "PrefetcherDaemon longbuf_fds_ dump: " << dump.str(); + } + + } + + size_t v_fds_off = 0; + size_t consumed_fds_total = 0; + + size_t v_off = 0; + size_t consumed_bytes = std::numeric_limits<size_t>::max(); + size_t consumed_total = 0; + + while (true) { + std::optional<Command> maybe_command; + maybe_command = Command::Read(&v[v_off], v.size() - v_off, &consumed_bytes); + consumed_total += consumed_bytes; + // Normal every time we get to the end of a buffer. + if (!maybe_command) { + if (LogVerboseIpc()) { + LOG(VERBOSE) << "failed to read command, v_off=" << v_off << ",v_size:" << v.size(); + } + break; + } + + if (maybe_command->RequiresFd()) { + if (v_fds_off < v_fds.size()) { + maybe_command->fd = v_fds[v_fds_off++]; + consumed_fds_total++; + if (LogVerboseIpc()) { + LOG(VERBOSE) << "Append the FD to " << *maybe_command; + } + } else { + LOG(WARNING) << "Failed to acquire FD for " << *maybe_command; + } + } + + // in the next pass ignore what we already consumed. + v_off += consumed_bytes; + + // true as long we don't hit the 'break' above. + DCHECK_EQ(v_off, consumed_total); + if (LogVerboseIpc()) { + LOG(VERBOSE) << "success to read command, v_off=" << v_off << ",v_size:" << v.size() + << "," << *maybe_command; + + // Pretty-print a single command for debugging/testing. + LOG(VERBOSE) << *maybe_command; + } + + // add to the commands we parsed. + commands_vec.push_back(*maybe_command); + } + + // erase however many were consumed + longbuf_.erase(longbuf_.begin(), longbuf_.begin() + consumed_total); + + // erase however many FDs were consumed. + longbuf_fds_.erase(longbuf_fds_.begin(), longbuf_fds_.begin() + consumed_fds_total); + } + break; + } + + return commands_vec; + } + + std::vector<Command> ParseCommands(bool& eof) { + eof = false; + + std::vector<Command> commands_vec; + + std::vector<char> buf_vector; + buf_vector.resize(kPipeBufferSize); + char* buf = &buf_vector[0]; + + // Binary only parsing. The higher level code can parse text + // with ifstream if it really wants to. + char* stream = &buf[0]; + size_t stream_size = buf_vector.size(); + + while (true) { + if (stream_size == 0) { + // TODO: reply with an overflow command. + LOG(WARNING) << "prefetcher_daemon command overflow, dropping all commands."; + stream = &buf[0]; + stream_size = buf_vector.size(); + memset(&buf[0], /*c*/0, buf_vector.size()); + } + + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon block read for commands (fd=" << params_.input_fd << ")"; + } + ssize_t count = TEMP_FAILURE_RETRY(read(params_.input_fd, stream, stream_size)); + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon::read " << count << " for stream size:" << stream_size; + } + + if (count < 0) { + PLOG(ERROR) << "failed to read from input fd"; + break; + // TODO: let the daemon be restarted by higher level code? + } else if (count == 0) { + LOG(WARNING) << "prefetcher_daemon input_fd end-of-file; terminating"; + eof = true; + break; + // TODO: let the daemon be restarted by higher level code? + } + + longbuf_.insert(longbuf_.end(), stream, stream + count); + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon updated longbuf size: " << longbuf_.size(); + } + + std::optional<Command> maybe_command; + { + if (longbuf_.size() == 0) { + break; + } + + std::vector<char> v(longbuf_.begin(), + longbuf_.end()); + + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon longbuf_ size: " << v.size(); + if (WOULD_LOG(VERBOSE)) { + std::stringstream dump; + dump << std::hex << std::setfill('0'); + for (size_t i = 0; i < v.size(); ++i) { + dump << std::setw(2) << static_cast<unsigned>(v[i]); + } + + LOG(VERBOSE) << "PrefetcherDaemon longbuf_ dump: " << dump.str(); + } + } + + size_t v_off = 0; + size_t consumed_bytes = std::numeric_limits<size_t>::max(); + size_t consumed_total = 0; + + while (true) { + maybe_command = Command::Read(&v[v_off], v.size() - v_off, &consumed_bytes); + consumed_total += consumed_bytes; + // Normal every time we get to the end of a buffer. + if (!maybe_command) { + if (LogVerboseIpc()) { + LOG(VERBOSE) << "failed to read command, v_off=" << v_off << ",v_size:" << v.size(); + } + break; + } + + // in the next pass ignore what we already consumed. + v_off += consumed_bytes; + + // true as long we don't hit the 'break' above. + DCHECK_EQ(v_off, consumed_total); + if (LogVerboseIpc()) { + LOG(VERBOSE) << "success to read command, v_off=" << v_off << ",v_size:" << v.size() + << "," << *maybe_command; + + // Pretty-print a single command for debugging/testing. + LOG(VERBOSE) << *maybe_command; + } + + // add to the commands we parsed. + commands_vec.push_back(*maybe_command); + } + + // erase however many were consumed + longbuf_.erase(longbuf_.begin(), longbuf_.begin() + consumed_total); + } + break; + } + + return commands_vec; + } + + private: + bool IsTextMode() const { + return params_.format_text; + } + + PrefetcherForkParameters params_; + + // A buffer long enough to contain a lot of buffers. + // This handles reads that only contain a partial command. + std::deque<char> longbuf_; + + // File descriptor buffers. + std::deque<int> longbuf_fds_; +}; + +static constexpr bool kDebugCommandRead = true; + +#define DEBUG_READ if (kDebugCommandRead) LOG(VERBOSE) << "Command::Read " + +std::optional<Command> Command::Read(char* buf, size_t buf_size, /*out*/size_t* consumed_bytes) { + *consumed_bytes = 0; + if (buf == nullptr) { + return std::nullopt; + } + + Command cmd{}; // zero-initialize any unused fields + ParseResult<CommandChoice> parsed_choice = ParsingRead<CommandChoice>(buf, buf_size); + cmd.choice = parsed_choice.value; + + if (!parsed_choice) { + DEBUG_READ << "no choice"; + return std::nullopt; + } + + switch (parsed_choice.value) { + case CommandChoice::kRegisterFilePath: { + ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice); + if (!parsed_session_id) { + DEBUG_READ << "no parsed session id"; + return std::nullopt; + } + + ParseResult<uint32_t> parsed_id = ParsingRead<uint32_t>(parsed_session_id); + if (!parsed_id) { + DEBUG_READ << "no parsed id"; + return std::nullopt; + } + + ParseResult<std::string> parsed_file_path = ParsingRead<std::string>(parsed_id); + + if (!parsed_file_path) { + DEBUG_READ << "no file path"; + return std::nullopt; + } + *consumed_bytes = parsed_file_path.next_token - buf; + + cmd.session_id = parsed_session_id.value; + cmd.id = parsed_id.value; + cmd.file_path = parsed_file_path.value; + + break; + } + case CommandChoice::kUnregisterFilePath: { + ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice); + if (!parsed_session_id) { + DEBUG_READ << "no parsed session id"; + return std::nullopt; + } + + ParseResult<uint32_t> parsed_id = ParsingRead<uint32_t>(parsed_session_id); + if (!parsed_id) { + DEBUG_READ << "no parsed id"; + return std::nullopt; + } + *consumed_bytes = parsed_id.next_token - buf; + + cmd.session_id = parsed_session_id.value; + cmd.id = parsed_id.value; + + break; + } + case CommandChoice::kReadAhead: { + ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice); + if (!parsed_session_id) { + DEBUG_READ << "no parsed session id"; + return std::nullopt; + } + + ParseResult<uint32_t> parsed_id = ParsingRead<uint32_t>(parsed_session_id); + if (!parsed_id) { + DEBUG_READ << "no parsed id"; + return std::nullopt; + } + + ParseResult<ReadAheadKind> parsed_kind = ParsingRead<ReadAheadKind>(parsed_id); + if (!parsed_kind) { + DEBUG_READ << "no parsed kind"; + return std::nullopt; + } + ParseResult<uint64_t> parsed_length = ParsingRead<uint64_t>(parsed_kind); + if (!parsed_length) { + DEBUG_READ << "no parsed length"; + return std::nullopt; + } + ParseResult<uint64_t> parsed_offset = ParsingRead<uint64_t>(parsed_length); + if (!parsed_offset) { + DEBUG_READ << "no parsed offset"; + return std::nullopt; + } + *consumed_bytes = parsed_offset.next_token - buf; + + cmd.session_id = parsed_session_id.value; + cmd.id = parsed_id.value; + cmd.read_ahead_kind = parsed_kind.value; + cmd.length = parsed_length.value; + cmd.offset = parsed_offset.value; + + break; + } + case CommandChoice::kCreateSession: + case CommandChoice::kCreateFdSession: { + ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice); + if (!parsed_session_id) { + DEBUG_READ << "no parsed session id"; + return std::nullopt; + } + + ParseResult<std::string> parsed_description = ParsingRead<std::string>(parsed_session_id); + + if (!parsed_description) { + DEBUG_READ << "no description"; + return std::nullopt; + } + *consumed_bytes = parsed_description.next_token - buf; + + cmd.session_id = parsed_session_id.value; + cmd.file_path = parsed_description.value; + + break; + } + case CommandChoice::kDestroySession: + case CommandChoice::kDumpSession: { + ParseResult<uint32_t> parsed_session_id = ParsingRead<uint32_t>(parsed_choice); + if (!parsed_session_id) { + DEBUG_READ << "no parsed session id"; + return std::nullopt; + } + + *consumed_bytes = parsed_session_id.next_token - buf; + + cmd.session_id = parsed_session_id.value; + + break; + } + case CommandChoice::kExit: + case CommandChoice::kDumpEverything: + *consumed_bytes = parsed_choice.next_token - buf; + // Only need to parse the choice. + break; + default: + LOG(FATAL) << "unrecognized command number " << static_cast<uint32_t>(parsed_choice.value); + break; + } + + return cmd; +} + +bool Command::Write(char* buf, size_t buf_size, /*out*/size_t* produced_bytes) const { + *produced_bytes = 0; + if (buf == nullptr) { + LOG(WARNING) << "null buf, is this expected?"; + return false; + } + + bool has_enough_space = false; + size_t space_requirement = std::numeric_limits<size_t>::max(); + + space_requirement = sizeof(choice); + + switch (choice) { + case CommandChoice::kRegisterFilePath: + space_requirement += sizeof(session_id); + space_requirement += sizeof(id); + space_requirement += sizeof(uint32_t); // string length + + if (!file_path) { + LOG(WARNING) << "Missing file path for kRegisterFilePath"; + return false; + } + + space_requirement += file_path->size(); // string contents + break; + case CommandChoice::kUnregisterFilePath: + space_requirement += sizeof(session_id); + space_requirement += sizeof(id); + break; + case CommandChoice::kReadAhead: + space_requirement += sizeof(session_id); + space_requirement += sizeof(id); + space_requirement += sizeof(read_ahead_kind); + space_requirement += sizeof(length); + space_requirement += sizeof(offset); + break; + case CommandChoice::kCreateSession: + case CommandChoice::kCreateFdSession: + space_requirement += sizeof(session_id); + space_requirement += sizeof(uint32_t); // string length + + if (!file_path) { + LOG(WARNING) << "Missing file path for kCreateSession"; + return false; + } + + space_requirement += file_path->size(); // string contents + break; + case CommandChoice::kDestroySession: + case CommandChoice::kDumpSession: + space_requirement += sizeof(session_id); + break; + case CommandChoice::kExit: + case CommandChoice::kDumpEverything: + // Only need space for the choice. + break; + default: + LOG(FATAL) << "unrecognized command number " << static_cast<uint32_t>(choice); + break; + } + + if (buf_size < space_requirement) { + return false; + } + + *produced_bytes = space_requirement; + + // Always write out the choice. + size_t buf_offset = 0; + + memcpy(&buf[buf_offset], &choice, sizeof(choice)); + buf_offset += sizeof(choice); + + switch (choice) { + case CommandChoice::kRegisterFilePath: + memcpy(&buf[buf_offset], &session_id, sizeof(session_id)); + buf_offset += sizeof(session_id); + memcpy(&buf[buf_offset], &id, sizeof(id)); + buf_offset += sizeof(id); + + { + uint32_t string_length = static_cast<uint32_t>(file_path->size()); + memcpy(&buf[buf_offset], &string_length, sizeof(string_length)); + buf_offset += sizeof(string_length); + } + + DCHECK(file_path.has_value()); + + memcpy(&buf[buf_offset], file_path->c_str(), file_path->size()); + buf_offset += file_path->size(); + break; + case CommandChoice::kUnregisterFilePath: + memcpy(&buf[buf_offset], &session_id, sizeof(session_id)); + buf_offset += sizeof(session_id); + memcpy(&buf[buf_offset], &id, sizeof(id)); + buf_offset += sizeof(id); + break; + case CommandChoice::kReadAhead: + memcpy(&buf[buf_offset], &session_id, sizeof(session_id)); + buf_offset += sizeof(session_id); + memcpy(&buf[buf_offset], &id, sizeof(id)); + buf_offset += sizeof(id); + memcpy(&buf[buf_offset], &read_ahead_kind, sizeof(read_ahead_kind)); + buf_offset += sizeof(read_ahead_kind); + memcpy(&buf[buf_offset], &length, sizeof(length)); + buf_offset += sizeof(length); + memcpy(&buf[buf_offset], &offset, sizeof(offset)); + buf_offset += sizeof(offset); + break; + case CommandChoice::kCreateSession: + case CommandChoice::kCreateFdSession: + memcpy(&buf[buf_offset], &session_id, sizeof(session_id)); + buf_offset += sizeof(session_id); + + { + uint32_t string_length = static_cast<uint32_t>(file_path->size()); + memcpy(&buf[buf_offset], &string_length, sizeof(string_length)); + buf_offset += sizeof(string_length); + } + + DCHECK(file_path.has_value()); + + memcpy(&buf[buf_offset], file_path->c_str(), file_path->size()); + buf_offset += file_path->size(); + + DCHECK_EQ(buf_offset, space_requirement) << *this << ",file_path_size:" << file_path->size(); + DCHECK_EQ(buf_offset, *produced_bytes) << *this; + + break; + case CommandChoice::kDestroySession: + case CommandChoice::kDumpSession: + memcpy(&buf[buf_offset], &session_id, sizeof(session_id)); + buf_offset += sizeof(session_id); + break; + case CommandChoice::kExit: + case CommandChoice::kDumpEverything: + // Only need to write out the choice. + break; + default: + LOG(FATAL) << "should have fallen out in the above switch" + << static_cast<uint32_t>(choice); + break; + } + + DCHECK_EQ(buf_offset, space_requirement) << *this; + DCHECK_EQ(buf_offset, *produced_bytes) << *this; + + return true; +} + +class PrefetcherDaemon::Impl { + public: + std::optional<PrefetcherForkParameters> StartPipesViaFork() { + int pipefds[2]; + if (pipe(&pipefds[0]) != 0) { + PLOG(FATAL) << "Failed to create read/write pipes"; + } + + if (WOULD_LOG(VERBOSE)) { + long pipe_size = static_cast<long>(fcntl(pipefds[0], F_GETPIPE_SZ)); + if (pipe_size < 0) { + PLOG(ERROR) << "Failed to F_GETPIPE_SZ:"; + } + LOG(VERBOSE) << "StartPipesViaFork: default pipe size: " << pipe_size; + } + + for (int i = 0; i < 2; ++i) { + // Default pipe size is usually 64KB. + // Increase to 1MB so that iorapd has to rarely run during prefetching. + if (fcntl(pipefds[i], F_SETPIPE_SZ, kPipeBufferSize) < 0) { + PLOG(FATAL) << "Failed to increase pipe size to max"; + } + } + + pipefd_read_ = pipefds[0]; + pipefd_write_ = pipefds[1]; + + PrefetcherForkParameters params; + params.input_fd = pipefd_read_; + params.output_fd = pipefd_write_; + params.format_text = false; + params.use_sockets = false; + + bool res = StartViaFork(params); + if (res) { + return params; + } else { + return std::nullopt; + } + } + +std::optional<PrefetcherForkParameters> StartSocketViaFork() { + int socket_fds[2]; + if (socketpair(AF_UNIX, SOCK_STREAM, /*protocol*/0, &socket_fds[0]) != 0) { + PLOG(FATAL) << "Failed to create read/write socketpair"; + } + + pipefd_read_ = socket_fds[0]; // iorapd writer, iorap.prefetcherd reader + pipefd_write_ = socket_fds[1]; // iorapd reader, iorap.prefetcherd writer + + PrefetcherForkParameters params; + params.input_fd = pipefd_read_; + params.output_fd = pipefd_write_; + params.format_text = false; + params.use_sockets = true; + + bool res = StartViaFork(params); + if (res) { + return params; + } else { + return std::nullopt; + } + } + + bool StartViaFork(PrefetcherForkParameters params) { + params_ = params; + + forked_ = true; + child_ = fork(); + + if (child_ == -1) { + LOG(FATAL) << "Failed to fork PrefetcherDaemon"; + } else if (child_ > 0) { // we are the caller of this function + LOG(DEBUG) << "forked into iorap.prefetcherd, pid = " << child_; + + return true; + } else { + // we are the child that was forked. + std::stringstream argv; // for logging + std::vector<std::string> argv_vec; + + { + std::stringstream s; + s << "--input-fd"; + argv_vec.push_back(s.str()); + + std::stringstream s2; + s2 << params.input_fd; + argv_vec.push_back(s2.str()); + + argv << " --input-fd" << " " << params.input_fd; + } + + { + std::stringstream s; + s << "--output-fd"; + argv_vec.push_back(s.str()); + + std::stringstream s2; + s2 << params.output_fd; + argv_vec.push_back(s2.str()); + + argv << " --output-fd" << " " << params.output_fd; + } + + + if (params.use_sockets) { + std::stringstream s; + s << "--use-sockets"; + argv_vec.push_back(s.str()); + + argv << " --use-sockets"; + } + + if (WOULD_LOG(VERBOSE)) { + std::stringstream s; + s << "--verbose"; + argv_vec.push_back(s.str()); + + argv << " --verbose"; + } + + std::unique_ptr<ArgString[]> argv_ptr = common::VecToArgv(kCommandFileName, argv_vec); + + LOG(DEBUG) << "fork+exec: " << kCommandFileName << " " + << argv.str(); + execve(kCommandFileName, (char **)argv_ptr.get(), /*envp*/nullptr); + // This should never return. + _exit(EXIT_FAILURE); + } + + DCHECK(false); + return false; + } + + // TODO: Not very useful since this can never return 'true' + // -> in the child we would've already execd which loses all this code. + bool IsDaemon() { + // In the child the pid is always 0. + return child_ > 0; + } + + bool Main(PrefetcherForkParameters params) { + LOG(VERBOSE) << "PrefetcherDaemon::Main " << params; + + CommandParser command_parser{params}; + + Command next_command{}; + + std::vector<Command> many_commands; + + // Ensure alogd is pre-initialized before installing minijail. + LOG(DEBUG) << "Installing minijail"; + + // Install seccomp filter using libminijail. + if (kInstallMiniJail) { + MiniJail(); + } + + while (true) { + bool eof = false; + + if (params.use_sockets) { + // use recvmsg(2). supports receiving FDs. + many_commands = command_parser.ParseSocketCommands(/*out*/eof); + } else { + // use read(2). does not support receiving FDs. + many_commands = command_parser.ParseCommands(/*out*/eof); + } + + if (eof) { + LOG(WARNING) << "PrefetcherDaemon got EOF, terminating"; + return true; + } + + for (auto& command : many_commands) { + if (LogVerboseIpc()) { + LOG(VERBOSE) << "PrefetcherDaemon got command: " << command; + } + + if (command.choice == CommandChoice::kExit) { + LOG(DEBUG) << "PrefetcherDaemon got kExit command, terminating"; + return true; + } + + if (!ReceiveCommand(command)) { + // LOG(WARNING) << "PrefetcherDaemon command processing failure: " << command; + } + + // ReceiveCommand should dup to keep the FD. Avoid leaks. + if (command.fd.has_value()) { + close(*command.fd); + } + } + } + + LOG(VERBOSE) << "PrefetcherDaemon::Main got exit, terminating"; + + return true; + // Terminate. + } + + Impl(PrefetcherDaemon* daemon) { + session_manager_ = SessionManager::CreateManager(SessionKind::kInProcessDirect); + DCHECK(session_manager_ != nullptr); + }; + + ~Impl() { + // Don't do anything if we never called 'StartViaFork' + if (forked_) { + if (!IsDaemon()) { + int status; + waitpid(child_, /*out*/&status, /*options*/0); + } else { + LOG(WARNING) << "execve should have avoided this path"; + // DCHECK(false) << "not possible because the execve would avoid this path"; + } + } + } + + bool SendCommand(const Command& command) { + // Only parent is the sender. + DCHECK(forked_); + //DCHECK(!IsDaemon()); + + char buf[1024]; + size_t stream_size; + if (!command.Write(buf, sizeof(buf), /*out*/&stream_size)) { + PLOG(ERROR) << "Failed to serialize command: " << command; + return false; + } + + if (LogVerboseIpc()) { + LOG(VERBOSE) << "pre-write(fd=" << pipefd_write_ << ", buf=" << buf + << ", size=" << stream_size<< ")"; + } + + if (params_.use_sockets) { + /* iov contains the normal message (Command) */ + struct iovec iov; + memset(&iov, 0, sizeof(iov)); + iov.iov_base = &buf[0]; + iov.iov_len = stream_size; + + struct msghdr msg; + memset(&msg, 0, sizeof(msg)); + + /* point to iov to transmit */ + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + + /* no dest address; socket is connected */ + msg.msg_name = nullptr; + msg.msg_namelen = 0; + + // append a CMSG with SCM_RIGHTS if we have an FD. + if (command.fd.has_value()) { + union { + struct cmsghdr cmh; + char control[CMSG_SPACE(sizeof(int))]; /* sized to hold an fd (int) */ + } control_un; + memset(&control_un, 0, sizeof(control_un)); + + msg.msg_control = &control_un.control[0]; + msg.msg_controllen = sizeof(control_un.control); + + struct cmsghdr *hp; + hp = CMSG_FIRSTHDR(&msg); + hp->cmsg_len = CMSG_LEN(sizeof(int)); + hp->cmsg_level = SOL_SOCKET; + hp->cmsg_type = SCM_RIGHTS; + *((int *) CMSG_DATA(hp)) = *(command.fd); + + DCHECK(command.RequiresFd()) << command; + + if (LogVerboseIpc()) { + LOG(VERBOSE) << "append FD to sendmsg: " << *(command.fd); + } + } + + // TODO: add CMSG for the FD passage. + + if (TEMP_FAILURE_RETRY(sendmsg(pipefd_write_, &msg, /*flags*/0)) < 0) { + PLOG(ERROR) << "Failed to sendmsg command: " << command; + return false; + } + } else { + if (TEMP_FAILURE_RETRY(write(pipefd_write_, buf, stream_size)) < 0) { + PLOG(ERROR) << "Failed to write command: " << command; + return false; + } + } + + if (LogVerboseIpc()) { + LOG(VERBOSE) << "write(fd=" << pipefd_write_ << ", buf=" << buf + << ", size=" << stream_size<< ")"; + } + + // TODO: also read the reply? + return true; + } + + bool ReceiveCommand(const Command& command) { + // Only child is the command receiver. + // DCHECK(IsDaemon()); + + switch (command.choice) { + case CommandChoice::kRegisterFilePath: { + std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id); + + if (!session) { + LOG(ERROR) << "ReceiveCommand: Could not find session for command: " << command; + return false; + } + + CHECK(command.file_path.has_value()) << command; + return session->RegisterFilePath(command.id, *command.file_path); + } + case CommandChoice::kUnregisterFilePath: { + std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id); + + if (!session) { + LOG(ERROR) << "ReceiveCommand: Could not find session for command: " << command; + return false; + } + + return session->UnregisterFilePath(command.id); + } + case CommandChoice::kReadAhead: { + std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id); + + if (!session) { + LOG(ERROR) << "ReceiveCommand: Could not find session for command: " << command; + return false; + } + + return session->ReadAhead(command.id, command.read_ahead_kind, command.length, command.offset); + } + // TODO: unreadahead + case CommandChoice::kExit: { + LOG(WARNING) << "kExit should be handled earlier."; + return true; + } + case CommandChoice::kCreateSession: { + std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id); + if (session != nullptr) { + LOG(ERROR) << "ReceiveCommand: session for ID already exists: " << command; + return false; + } + CHECK(command.file_path.has_value()) << command; + if (session_manager_->CreateSession(command.session_id, /*description*/*command.file_path) + == nullptr) { + LOG(ERROR) << "ReceiveCommand: Failure to kCreateSession: " << command; + return false; + } + return true; + } + case CommandChoice::kDestroySession: { + if (!session_manager_->DestroySession(command.session_id)) { + LOG(ERROR) << "ReceiveCommand: Failure to kDestroySession: " << command; + return false; + } + return true; + } + case CommandChoice::kDumpSession: { + std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id); + + if (!session) { + LOG(ERROR) << "ReceiveCommand: Could not find session for command: " << command; + return false; + } + + // TODO: Consider doing dumpsys support somehow? + session->Dump(LOG_STREAM(DEBUG), /*multiline*/true); + return true; + } + case CommandChoice::kDumpEverything: { + session_manager_->Dump(LOG_STREAM(DEBUG), /*multiline*/true); + break; + } + case CommandChoice::kCreateFdSession: { + std::shared_ptr<Session> session = session_manager_->FindSession(command.session_id); + if (session != nullptr) { + LOG(ERROR) << "ReceiveCommand: session for ID already exists: " << command; + return false; + } + CHECK(command.file_path.has_value()) << command; + CHECK(command.fd.has_value()) << command; + + LOG(VERBOSE) << "ReceiveCommand: kCreateFdSession fd=" << *(command.fd); + + // TODO: Maybe use CreateFdSession instead? + session = + session_manager_->CreateSession(command.session_id, + /*description*/*command.file_path, + command.fd.value()); + if (session == nullptr) { + LOG(ERROR) << "ReceiveCommand: Failure to kCreateFdSession: " << command; + return false; + } + + return session->ProcessFd(*command.fd); + } + } + + return true; + } + + pid_t child_; + bool forked_; + int pipefd_read_; + int pipefd_write_; + PrefetcherForkParameters params_; + // do not ever use an indirect session manager here, as it would cause a lifetime cycle. + std::unique_ptr<SessionManager> session_manager_; // direct only. +}; + +PrefetcherDaemon::PrefetcherDaemon() + : impl_{new Impl{this}} { + LOG(VERBOSE) << "PrefetcherDaemon() constructor"; +} + +bool PrefetcherDaemon::StartViaFork(PrefetcherForkParameters params) { + return impl_->StartViaFork(std::move(params)); +} + + +std::optional<PrefetcherForkParameters> PrefetcherDaemon::StartPipesViaFork() { + return impl_->StartPipesViaFork(); +} + +std::optional<PrefetcherForkParameters> PrefetcherDaemon::StartSocketViaFork() { + return impl_->StartSocketViaFork(); +} + +bool PrefetcherDaemon::Main(PrefetcherForkParameters params) { + return impl_->Main(params); +} + +bool PrefetcherDaemon::SendCommand(const Command& command) { + return impl_->SendCommand(command); +} + +PrefetcherDaemon::~PrefetcherDaemon() { + // required for unique_ptr for incomplete types. +} + +} // namespace iorap::prefetcher diff --git a/src/prefetcher/prefetcher_daemon.h b/src/prefetcher/prefetcher_daemon.h new file mode 100644 index 0000000..693f871 --- /dev/null +++ b/src/prefetcher/prefetcher_daemon.h @@ -0,0 +1,130 @@ +// Copyright (C) 2019 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. + +#ifndef PREFETCHER_DAEMON_H_ +#define PREFETCHER_DAEMON_H_ + +#include "prefetcher/session_manager.h" + +#include <memory> +#include <optional> +#include <ostream> + +namespace iorap { +namespace prefetcher { + +struct PrefetcherForkParameters { + int input_fd; + int output_fd; + bool use_sockets; // use the socket path instead of simpler read/write path. + bool format_text; // true=>text, false=>binary +}; + +inline std::ostream& operator<<(std::ostream& os, const PrefetcherForkParameters& p) { + os << "PrefetcherForkParameters{"; + os << "input_fd=" << p.input_fd << ","; + os << "output_fd=" << p.output_fd << ","; + os << "format_text=" << p.format_text << ","; + os << "use_sockets=" << p.use_sockets << ","; + os << "}"; + return os; +} + + +#ifndef READ_AHEAD_KIND +enum class ReadAheadKind : uint32_t { + kFadvise = 0, + kMmapLocked = 1, + kMlock = 2, +}; +#define READ_AHEAD_KIND 1 +#endif + +std::ostream& operator<<(std::ostream& os, ReadAheadKind k); + +enum class CommandChoice : uint32_t { + kRegisterFilePath, // kRegisterFilePath <sid:uint32> <id:uint32> <path:c-string> + kUnregisterFilePath, // kUnregisterFilePath <sid:uint32> <id:uint32> + kReadAhead, // kReadAhead <sid:uint32> <id:uint32> <kind:uint32_t> <length:uint64> <offset:uint64> + kExit, // kExit + kCreateSession, // kCreateSession <sid:uint32> <description:c-string> + kDestroySession, // kDestroySession <sid:uint32> + kDumpSession, // kDumpSession <sid:uint32> + kDumpEverything, // kDumpEverything + kCreateFdSession, // kCreateFdSession $CMSG{<fd:int>} <sid:uint32> <description:c-string> +}; + +struct Command { + CommandChoice choice; + uint32_t session_id; + uint32_t id; // file_path_id + std::optional<std::string> file_path; // required for choice=kRegisterFilePath. + // also serves as the description for choice=kCreateSession + + // choice=kReadAhead + ReadAheadKind read_ahead_kind; + uint64_t length; + uint64_t offset; + + std::optional<int> fd; // only valid in kCreateFdSession. + + // Deserialize from a char buffer. + // This can only fail if buf_size is too small. + static std::optional<Command> Read(char* buf, size_t buf_size, /*out*/size_t* consumed_bytes); + // Serialize to a char buffer. + // This can only fail if the buf_size is too small. + bool Write(char* buf, size_t buf_size, /*out*/size_t* produced_bytes) const; + + bool RequiresFd() const { + return choice == CommandChoice::kCreateFdSession; + } +}; + +std::ostream& operator<<(std::ostream& os, const Command& command); + +class PrefetcherDaemon { + public: + PrefetcherDaemon(); + ~PrefetcherDaemon(); + + // Asynchronously launch a new fork. + // + // The destructor will waitpid automatically on the child process. + bool StartViaFork(PrefetcherForkParameters params); + + // Launch a new fork , returning the pipes as input/output fds. + std::optional<PrefetcherForkParameters> StartPipesViaFork(); + + // Launch a new fork , returning the socket pair as input/output fds. + std::optional<PrefetcherForkParameters> StartSocketViaFork(); + + // Execute the main code in-process. + // + // Intended as the execve target. + bool Main(PrefetcherForkParameters params); + + // Send a command via IPC. + // The caller must be the parent process after using StartViaFork. + bool SendCommand(const Command& command); + + private: + class Impl; + std::unique_ptr<PrefetcherDaemon::Impl> impl_; +}; + +} // namespace prefetcher +} // namespace iorap + +#endif + diff --git a/src/prefetcher/read_ahead.cc b/src/prefetcher/read_ahead.cc new file mode 100644 index 0000000..164f2ff --- /dev/null +++ b/src/prefetcher/read_ahead.cc @@ -0,0 +1,435 @@ +// Copyright (C) 2017 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. + +#include "read_ahead.h" + +#include "common/trace.h" +#include "prefetcher/session_manager.h" +#include "prefetcher/session.h" +#include "prefetcher/task_id.h" +#include "serialize/arena_ptr.h" +#include "serialize/protobuf_io.h" + +#include <android-base/chrono_utils.h> +#include <android-base/logging.h> +#include <android-base/scopeguard.h> +#include <android-base/properties.h> +#include <android-base/unique_fd.h> +#include <cutils/trace.h> +#include <deque> +#include <fcntl.h> +#include <functional> +#include <stdint.h> +#include <sys/mman.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unordered_map> +#include <utils/Printer.h> + +namespace iorap { +namespace prefetcher { + +enum class PrefetchStrategy { + kFadvise = 0, + kMmapLocked = 1, + kMlock = 2, +}; + +std::ostream& operator<<(std::ostream& os, PrefetchStrategy ps) { + switch (ps) { + case PrefetchStrategy::kFadvise: + os << "fadvise"; + break; + case PrefetchStrategy::kMmapLocked: + os << "mmap"; + break; + case PrefetchStrategy::kMlock: + os << "mlock"; + break; + default: + os << "<invalid>"; + } + return os; +} + +static constexpr PrefetchStrategy kPrefetchStrategy = PrefetchStrategy::kFadvise; + +static PrefetchStrategy GetPrefetchStrategy() { + PrefetchStrategy strat = PrefetchStrategy::kFadvise; + + std::string prefetch_env = + ::android::base::GetProperty("iorapd.readahead.strategy", /*default*/""); + + if (prefetch_env == "") { + LOG(VERBOSE) + << "ReadAhead strategy defaulted. Did you want to set iorapd.readahead.strategy ?"; + } else if (prefetch_env == "mmap") { + strat = PrefetchStrategy::kMmapLocked; + LOG(VERBOSE) << "ReadAhead strategy: kMmapLocked"; + } else if (prefetch_env == "mlock") { + strat = PrefetchStrategy::kMlock; + LOG(VERBOSE) << "ReadAhead strategy: kMlock"; + } else if (prefetch_env == "fadvise") { + strat = PrefetchStrategy::kFadvise; + LOG(VERBOSE) << "ReadAhead strategy: kFadvise"; + } else { + LOG(WARNING) << "Unknown iorapd.readahead.strategy: " << prefetch_env << ", ignoring"; + } + + return strat; +} + +struct TaskData { + TaskId task_id; // also the session ID. + + size_t SessionId() const { + if (session != nullptr) { + DCHECK_EQ(session->SessionId(), task_id.id); + } + + // good enough to be used as the session ID. Task IDs are always monotonically increasing. + return task_id.id; + } + + std::shared_ptr<Session> session; + int32_t trace_cookie; // async trace cookie in BeginTask/FinishTask. +}; + +// Remember the last 5 files being prefetched. +static constexpr size_t kRecentDataCount = 5; + +struct RecentData { + TaskId task_id; + size_t file_lengths_sum; +}; + +struct RecentDataKeeper { + std::deque<RecentData> recents_; + std::mutex mutex_; + + void RecordRecent(TaskId task_id, size_t file_lengths_sum) { + std::lock_guard<std::mutex> guard{mutex_}; + + while (recents_.size() > kRecentDataCount) { + recents_.pop_front(); + } + recents_.push_back(RecentData{std::move(task_id), file_lengths_sum}); + } + + void Dump(/*borrow*/::android::Printer& printer) { + bool locked = mutex_.try_lock(); + + printer.printFormatLine("Recent prefetches:"); + if (!locked) { + printer.printLine(""""" (possible deadlock)"); + } + + for (const RecentData& data : recents_) { + printer.printFormatLine(" %s", data.task_id.path.c_str()); + printer.printFormatLine(" Task ID: %zu", data.task_id.id); + printer.printFormatLine(" Bytes count: %zu", data.file_lengths_sum); + } + + if (recents_.empty()) { + printer.printFormatLine(" (None)"); + } + + printer.printLine(""); + + if (locked) { + mutex_.unlock(); + } + } +}; + +struct ReadAhead::Impl { + Impl(bool use_sockets) { + // Flip this property to test in-process vs out-of-process for the prefetcher code. + bool out_of_process = + ::android::base::GetBoolProperty("iorapd.readahead.out_of_process", /*default*/true); + + SessionKind session_kind = + out_of_process ? SessionKind::kOutOfProcessIpc : SessionKind::kInProcessDirect; + + if (use_sockets) { + session_kind = SessionKind::kOutOfProcessSocket; + } + + session_manager_ = SessionManager::CreateManager(session_kind); + session_kind_ = session_kind; + } + + std::unique_ptr<SessionManager> session_manager_; + SessionKind session_kind_; + std::unordered_map<size_t /*task index*/, TaskData> read_ahead_file_map_; + static RecentDataKeeper recent_data_keeper_; + int32_t trace_cookie_{0}; + + bool UseSockets() const { + return session_kind_ == SessionKind::kOutOfProcessSocket; + } +}; + +RecentDataKeeper ReadAhead::Impl::recent_data_keeper_{}; + +ReadAhead::ReadAhead() : ReadAhead(/*use_sockets*/false) { +} + +ReadAhead::ReadAhead(bool use_sockets) : impl_(new Impl(use_sockets)) { +} + +ReadAhead::~ReadAhead() {} + +static bool PerformReadAhead(std::shared_ptr<Session> session, size_t path_id, ReadAheadKind kind, size_t length, size_t offset) { + return session->ReadAhead(path_id, kind, length, offset); +} + +void ReadAhead::FinishTask(const TaskId& id) { + auto it = impl_->read_ahead_file_map_.find(id.id); + if (it == impl_->read_ahead_file_map_.end()) { + LOG(DEBUG) << "Could not find any TaskData for " << id; + return; + } + + TaskData& task_data = it->second; + atrace_async_end(ATRACE_TAG_ACTIVITY_MANAGER, + "ReadAhead Task Scope (for File Descriptors)", + task_data.trace_cookie); + + auto deleter = [&]() { + impl_->read_ahead_file_map_.erase(it); + }; + auto scope_guard = android::base::make_scope_guard(deleter); + (void)scope_guard; + + LOG(VERBOSE) << "ReadAhead (Finish)"; + + if (!impl_->session_manager_->DestroySession(task_data.SessionId())) { + LOG(WARNING) << "ReadAhead: Failed to destroy Session " << task_data.SessionId(); + } +} + +void ReadAhead::BeginTaskForSockets(const TaskId& id, int32_t trace_cookie) { + LOG(VERBOSE) << "BeginTaskForSockets: " << id; + + // TODO: atrace. + android::base::Timer timer{}; + android::base::Timer open_timer{}; + + int trace_file_fd_raw = + TEMP_FAILURE_RETRY(open(id.path.c_str(), /*flags*/O_RDONLY)); + + android::base::unique_fd trace_file_fd{trace_file_fd_raw}; + + if (!trace_file_fd.ok()) { + PLOG(ERROR) << "ReadAhead failed to open trace file: " << id.path; + return; + } + + TaskData task_data; + task_data.task_id = id; + task_data.trace_cookie = trace_cookie; + + std::shared_ptr<Session> session = + impl_->session_manager_->CreateSession(task_data.SessionId(), + /*description*/id.path, + trace_file_fd.get()); + task_data.session = session; + CHECK(session != nullptr); + + task_data.trace_cookie = ++trace_cookie; + + // TODO: maybe getprop and a single line by default? + session->Dump(LOG_STREAM(INFO), /*multiline*/true); + + impl_->read_ahead_file_map_[id.id] = std::move(task_data); + // FinishTask is identical, as it just destroys the session. +} + +void ReadAhead::BeginTask(const TaskId& id) { + { + struct timeval now; + gettimeofday(&now, nullptr); + + uint64_t now_usec = (now.tv_sec * 1000000LL + now.tv_usec); + LOG(DEBUG) << "BeginTask: beginning usec: " << now_usec; + } + + int32_t trace_cookie = ++impl_->trace_cookie_; + atrace_async_begin(ATRACE_TAG_ACTIVITY_MANAGER, + "ReadAhead Task Scope (for File Descriptors)", + trace_cookie); + + if (impl_->UseSockets()) { + BeginTaskForSockets(id, trace_cookie); + return; + } + + LOG(VERBOSE) << "BeginTask: " << id; + + // TODO: atrace. + android::base::Timer timer{}; + + // TODO: refactor this code with SessionDirect::ProcessFd ? + TaskData task_data; + task_data.task_id = id; + task_data.trace_cookie = trace_cookie; + + ScopedFormatTrace atrace_begin_task(ATRACE_TAG_ACTIVITY_MANAGER, + "ReadAhead::BeginTask %s", + id.path.c_str()); + + // Include CreateSession above the Protobuf deserialization so that we can include + // the 'total_duration' as part of the Session dump (relevant when we use IPC mode only). + std::shared_ptr<Session> session = + impl_->session_manager_->CreateSession(task_data.SessionId(), + /*description*/id.path); + + android::base::Timer open_timer{}; + + // XX: Should we rename all the 'Create' to 'Make', or rename the 'Make' to 'Create' ? + // Unfortunately make_unique, make_shared, etc is the standard C++ terminology. + serialize::ArenaPtr<serialize::proto::TraceFile> trace_file_ptr = + serialize::ProtobufIO::Open(id.path); + + if (trace_file_ptr == nullptr) { + // TODO: distinguish between missing trace (this is OK, most apps wont have one) + // and a bad error. + LOG(DEBUG) << "ReadAhead could not start, missing trace file? " << id.path; + return; + } + + task_data.session = session; + CHECK(session != nullptr); + + ReadAheadKind kind = static_cast<ReadAheadKind>(GetPrefetchStrategy()); + + // TODO: The "Task[Id]" should probably be the one owning the trace file. + // When the task is fully complete, the task can be deleted and the + // associated arenas can go with them. + + // TODO: we should probably have the file entries all be relative + // to the package path? + + // Open every file in the trace index. + const serialize::proto::TraceFileIndex& index = trace_file_ptr->index(); + + size_t count_entries = 0; + { + ScopedFormatTrace atrace_register_file_paths(ATRACE_TAG_ACTIVITY_MANAGER, + "ReadAhead::RegisterFilePaths %s", + id.path.c_str()); + for (const serialize::proto::TraceFileIndexEntry& index_entry : index.entries()) { + LOG(VERBOSE) << "ReadAhead: found file entry: " << index_entry.file_name(); + + if (index_entry.id() < 0) { + LOG(WARNING) << "ReadAhead: Skip bad TraceFileIndexEntry, negative ID not allowed: " + << index_entry.id(); + continue; + } + + size_t path_id = index_entry.id(); + const auto& path_file_name = index_entry.file_name(); + + if (!session->RegisterFilePath(path_id, path_file_name)) { + LOG(WARNING) << "ReadAhead: Failed to register file path: " << path_file_name; + } else { + ++count_entries; + } + } + } + LOG(VERBOSE) << "ReadAhead: Registered " << count_entries << " file paths"; + std::chrono::milliseconds open_duration_ms = open_timer.duration(); + + LOG(DEBUG) << "ReadAhead: Opened file&headers in " << open_duration_ms.count() << "ms"; + + size_t length_sum = 0; + size_t entry_offset = 0; + { + ScopedFormatTrace atrace_perform_read_ahead(ATRACE_TAG_ACTIVITY_MANAGER, + "ReadAhead::PerformReadAhead entries=%zu, path=%s", + count_entries, + id.path.c_str()); + + // Go through every trace entry and readahead every (file,offset,len) tuple. + const serialize::proto::TraceFileList& file_list = trace_file_ptr->list(); + for (const serialize::proto::TraceFileEntry& file_entry : file_list.entries()) { + ++entry_offset; + + if (file_entry.file_length() < 0 || file_entry.file_offset() < 0) { + LOG(WARNING) << "ReadAhead entry negative file length or offset, illegal: " + << "index_id=" << file_entry.index_id() << ", skipping"; + continue; + } + + // Attempt to perform readahead. This can generate more warnings dynamically. + if (!PerformReadAhead(session, file_entry.index_id(), kind, file_entry.file_length(), file_entry.file_offset())) { + // TODO: Do we need below at all? The always-on Dump already prints a % of failed entries. + // LOG(WARNING) << "Failed readahead, bad file length/offset in entry @ " << (entry_offset - 1); + } + + length_sum += static_cast<size_t>(file_entry.file_length()); + } + } + + { + ScopedFormatTrace atrace_session_dump(ATRACE_TAG_ACTIVITY_MANAGER, + "ReadAhead Session Dump entries=%zu", + entry_offset); + // TODO: maybe getprop and a single line by default? + session->Dump(LOG_STREAM(INFO), /*multiline*/true); + } + + atrace_int(ATRACE_TAG_ACTIVITY_MANAGER, + "ReadAhead Bytes Length", + static_cast<int32_t>(length_sum)); + + impl_->read_ahead_file_map_[id.id] = std::move(task_data); + + ReadAhead::Impl::recent_data_keeper_.RecordRecent(id, length_sum); +} + +void ReadAhead::Dump(::android::Printer& printer) { + ReadAhead::Impl::recent_data_keeper_.Dump(printer); +} + +std::optional<size_t> ReadAhead::PrefetchSizeInBytes(const std::string& file_path) { + serialize::ArenaPtr<serialize::proto::TraceFile> trace_file_ptr = + serialize::ProtobufIO::Open(file_path); + + if (trace_file_ptr == nullptr) { + LOG(WARNING) << "PrefetchSizeInBytes: bad file at " << file_path; + return std::nullopt; + } + + size_t length_sum = 0; + const serialize::proto::TraceFileList& file_list = trace_file_ptr->list(); + for (const serialize::proto::TraceFileEntry& file_entry : file_list.entries()) { + + if (file_entry.file_length() < 0 || file_entry.file_offset() < 0) { + LOG(WARNING) << "ReadAhead entry negative file length or offset, illegal: " + << "index_id=" << file_entry.index_id() << ", skipping"; + continue; + } + + length_sum += static_cast<size_t>(file_entry.file_length()); + } + + return length_sum; +} + +} // namespace prefetcher +} // namespace iorap + diff --git a/src/prefetcher/read_ahead.h b/src/prefetcher/read_ahead.h new file mode 100644 index 0000000..afc6ec8 --- /dev/null +++ b/src/prefetcher/read_ahead.h @@ -0,0 +1,63 @@ +// Copyright (C) 2017 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. + +#ifndef PREFETCHER_READAHEAD_H_ +#define PREFETCHER_READAHEAD_H_ + +#include <memory> +#include <optional> + +namespace android { +class Printer; +} // namespace android + +namespace iorap { +namespace prefetcher { + +struct TaskId; +struct ReadAheadFileEntry; + +// Manage I/O readahead for a task. +class ReadAhead { + struct Impl; + public: + // Process a task *now*. Currently will block until all readaheads have been + // issued for all entries in that task. + // + // Any memory mapped or file descriptors opened as a side effect must be + // cleaned up with #FinishTask. + void BeginTask(const TaskId& id); + // Complete a task, releasing any memory/file descriptors associated with it. + void FinishTask(const TaskId& id); + + static void Dump(/*borrow*/::android::Printer& printer); + + // Calculate the sum of file_lengths. Returns nullopt if the file path does not + // point to a valid compiled TraceFile. + static std::optional<size_t> PrefetchSizeInBytes(const std::string& file_path); + + ReadAhead(bool use_sockets); + + ReadAhead(); + ~ReadAhead(); + private: + void BeginTaskForSockets(const TaskId& id, int32_t trace_cookie); + std::unique_ptr<Impl> impl_; +}; + +} // namespace prefetcher +} // namespace iorap + +#endif + diff --git a/src/prefetcher/session.cc b/src/prefetcher/session.cc new file mode 100644 index 0000000..e998580 --- /dev/null +++ b/src/prefetcher/session.cc @@ -0,0 +1,724 @@ +// Copyright (C) 2019 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. + +#include "session.h" + +#include "prefetcher/prefetcher_daemon.h" +#include "prefetcher/task_id.h" +#include "serialize/arena_ptr.h" +#include "serialize/protobuf_io.h" + +#include <android-base/logging.h> +#include <android-base/properties.h> +#include <android-base/unique_fd.h> +#include <fcntl.h> +#include <functional> +#include <stdint.h> +#include <sys/mman.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unordered_map> + +namespace iorap { +namespace prefetcher { + +// Print per-entry details even if successful. Default-off, too spammy. +static constexpr bool kLogVerboseReadAhead = false; + +std::ostream& operator<<(std::ostream& os, const Session& session) { + session.Dump(os, /*multiline*/false); + return os; +} + +Session::Session() { +} + +void SessionBase::Dump(std::ostream& os, bool multiline) const { + if (!multiline) { + os << "Session{"; + os << "session_id=" << SessionId(); + os << "}"; + return; + } else { + os << "Session (id=" << SessionId() << ")" << std::endl; + return; + } +} + +SessionBase::SessionBase(size_t session_id, std::string description) + : session_id_{session_id}, description_{description} { +} + +std::optional<std::string_view> SessionBase::GetFilePath(size_t path_id) const { + auto it = path_map_.find(path_id); + if (it != path_map_.end()) { + return {it->second}; + } else { + return std::nullopt; + } +} + +bool SessionBase::RemoveFilePath(size_t path_id) { + auto it = path_map_.find(path_id); + if (it != path_map_.end()) { + path_map_.erase(it); + return true; + } else { + return false; + } +} + +bool SessionBase::InsertFilePath(size_t path_id, std::string file_path) { + path_map_.insert({path_id, std::move(file_path)}); + return true; +} + +bool SessionBase::ProcessFd(int fd) { + // Only SessionDirect has an implementation of this. + // TODO: Maybe add a CommandChoice::kProcessFd ? instead of kCreateFdSession? + LOG(FATAL) << "SessionBase::ProcessFd is not implemented"; + + return false; +} + +// +// Direct +// + +std::ostream& operator<<(std::ostream& os, const SessionDirect::Entry& entry) { + os << "Entry{"; + os << "path_id=" << entry.path_id << ","; + os << "kind=" << static_cast<int>(entry.kind) << ","; + os << "length=" << entry.length << ","; + os << "offset=" << entry.offset << ","; + os << "}"; + + return os; +} + +// Just in case the failures are slowing down performance, turn them off. +// static constexpr bool kLogFailures = true; +static constexpr bool kLogFailures = false; + +bool SessionDirect::RegisterFilePath(size_t path_id, std::string_view file_path) { + std::string file_path_str{file_path}; // no c_str for string_view. + + auto fd = TEMP_FAILURE_RETRY(open(file_path_str.c_str(), O_RDONLY)); + if (fd < 0) { + if (kLogFailures) { + PLOG(ERROR) << "Failed to register file path: " << file_path << ", id=" << path_id + << ", open(2) failed: "; + } + fd = android::base::unique_fd{}; // mark as 'bad' descriptor. + } + + LOG(VERBOSE) << "RegisterFilePath path_id=" << path_id << ", file_path=" << file_path_str; + + if (!InsertFilePath(path_id, std::move(file_path_str))) { + return false; + } + + path_fd_map_.insert(std::make_pair(path_id, std::move(fd))); + DCHECK(entry_list_map_[path_id].empty()); + + return true; +} + + +bool SessionDirect::UnregisterFilePath(size_t path_id) { + if (!RemoveFilePath(path_id)) { + return false; + } + + { // Scoped FD reference lifetime. + auto maybe_fd = GetFdForPath(path_id); + + DCHECK(*maybe_fd != nullptr); + const android::base::unique_fd& entry_fd = **maybe_fd; + + auto list = entry_list_map_[path_id]; + + for (const EntryMapping& entry_mapping : list) { + ReadAheadKind kind = entry_mapping.entry.kind; + + switch (kind) { + case ReadAheadKind::kFadvise: + // Nothing to do. + break; + case ReadAheadKind::kMmapLocked: + FALLTHROUGH_INTENDED; + case ReadAheadKind::kMlock: + // Don't do any erases in the unregister file path to avoid paying O(n^2) erase cost. + UnmapWithoutErase(entry_mapping); + break; + } + } + } + + auto it = entry_list_map_.find(path_id); + auto end = entry_list_map_.end(); + DCHECK(it != end); + entry_list_map_.erase(it); + + // Close the FD for this file path. + auto fd_it = path_fd_map_.find(path_id); + DCHECK(fd_it != path_fd_map_.end()); + path_fd_map_.erase(fd_it); + + return true; +} + +// Note: return a pointer because optional doesn't hold references directly. +std::optional<android::base::unique_fd*> SessionDirect::GetFdForPath(size_t path_id) { + auto it = path_fd_map_.find(path_id); + if (it == path_fd_map_.end()) { + return std::nullopt; + } else { + return &it->second; + } +} + +bool SessionDirect::ReadAhead(size_t path_id, + ReadAheadKind kind, + size_t length, + size_t offset) { + // Take by-reference so we can mutate list at the end. + auto& list = entry_list_map_[path_id]; + + Entry entry{path_id, kind, length, offset}; + EntryMapping entry_mapping{entry, /*address*/nullptr, /*success*/false}; + + bool success = true; + + auto maybe_fd = GetFdForPath(path_id); + if (!maybe_fd) { + LOG(ERROR) << "SessionDirect: Failed to find FD for path_id=" << path_id; + return false; + } + + DCHECK(*maybe_fd != nullptr); + const android::base::unique_fd& entry_fd = **maybe_fd; + + std::optional<std::string_view> file_name_opt = GetFilePath(path_id); + DCHECK(file_name_opt.has_value()); // if one map has it, all maps have it. + std::string_view file_name = *file_name_opt; + + if (!entry_fd.ok()) { + LOG(VERBOSE) << "SessionDirect: No file descriptor for (path_id=" << path_id << ") " + << "path '" << file_name << "', failed to readahead entry."; + // Even failures get kept with success=false. + list.push_back(entry_mapping); + return false; + } + + switch (kind) { + case ReadAheadKind::kFadvise: + if (posix_fadvise(entry_fd, offset, length, POSIX_FADV_WILLNEED) < 0) { + PLOG(ERROR) << "SessionDirect: Failed to fadvise entry " << file_name + << ", offset=" << offset << ", length=" << length; + success = false; + } + break; + case ReadAheadKind::kMmapLocked: + FALLTHROUGH_INTENDED; + case ReadAheadKind::kMlock: { + const bool need_mlock = kind == ReadAheadKind::kMlock; + + int flags = MAP_SHARED; + if (!need_mlock) { + // MAP_LOCKED is a best-effort to lock the page. it could still be + // paged in later at a fault. + flags |= MAP_LOCKED; + } + + entry_mapping.address = + mmap(/*addr*/nullptr, length, PROT_READ, flags, entry_fd, offset); + + if (entry_mapping.address == nullptr) { + PLOG(ERROR) << "SessionDirect: Failed to mmap entry " << file_name + << ", offset=" << offset << ", length=" << length; + success = false; + break; + } + + // Strong guarantee that page will be locked if mlock returns successfully. + if (need_mlock && mlock(entry_mapping.address, length) < 0) { + PLOG(ERROR) << "SessionDirect: Failed to mlock entry " << file_name + << ", offset=" << offset << ", length=" << length; + // We already have a mapping address, so we should add it to the list. + // However this didn't succeed 100% because the lock failed, so return false later. + success = false; + } + } + } + + // Keep track of success so we know in Dump() what the number of failed entry mappings were. + entry_mapping.success = success; + + // Keep track of this so that we can clean it up later in UnreadAhead. + list.push_back(entry_mapping); + + if (entry_mapping.success) { + if (kLogVerboseReadAhead) { + LOG(VERBOSE) << "SessionDirect: ReadAhead for " << entry_mapping.entry; + } + } // else one of the errors above already did print. + + return success; +} + +bool SessionDirect::UnreadAhead(size_t path_id, + ReadAheadKind kind, + size_t length, + size_t offset) { + Entry entry{path_id, kind, length, offset}; + + auto list = entry_list_map_[path_id]; + if (list.empty()) { + return false; + } + + std::optional<EntryMapping> entry_mapping; + size_t idx = 0; + + for (size_t i = 0; i < list.size(); ++i) { + if (entry == list[i].entry) { + entry_mapping = list[i]; + idx = 0; + break; + } + } + + if (!entry_mapping) { + return false; + } + + switch (kind) { + case ReadAheadKind::kFadvise: + // Nothing to do. + // TODO: maybe fadvise(RANDOM)? + return true; + case ReadAheadKind::kMmapLocked: + FALLTHROUGH_INTENDED; + case ReadAheadKind::kMlock: + UnmapWithoutErase(*entry_mapping); + return true; + } + + list.erase(list.begin() + idx); + + // FDs close only with UnregisterFilePath. + return true; +} + +void SessionDirect::UnmapWithoutErase(const EntryMapping& entry_mapping) { + void* address = entry_mapping.address; + size_t length = entry_mapping.entry.length; + + // munmap also unlocks. Do not need explicit munlock. + if (munmap(address, length) < 0) { + PLOG(WARNING) << "ReadAhead (Finish): Failed to munmap address: " + << address << ", length: " << length; + } + +} + +bool SessionDirect::ProcessFd(int fd) { + // TODO: the path is advisory, but it would still be cleaner to pass it separately + const char* fd_path = SessionDescription().c_str(); + + android::base::Timer open_timer{}; + android::base::Timer total_timer{}; + + serialize::ArenaPtr<serialize::proto::TraceFile> trace_file_ptr = + serialize::ProtobufIO::Open(fd, fd_path); + + if (trace_file_ptr == nullptr) { + LOG(ERROR) << "SessionDirect::ProcessFd failed, corrupted protobuf format? " << fd_path; + return false; + } + + // TODO: maybe make it part of a kProcessFd type of command? + ReadAheadKind kind = ReadAheadKind::kFadvise; + + // TODO: The "Task[Id]" should probably be the one owning the trace file. + // When the task is fully complete, the task can be deleted and the + // associated arenas can go with them. + + // TODO: we should probably have the file entries all be relative + // to the package path? + + // Open every file in the trace index. + const serialize::proto::TraceFileIndex& index = trace_file_ptr->index(); + + size_t count_entries = 0; + for (const serialize::proto::TraceFileIndexEntry& index_entry : index.entries()) { + LOG(VERBOSE) << "ReadAhead: found file entry: " << index_entry.file_name(); + + if (index_entry.id() < 0) { + LOG(WARNING) << "ReadAhead: Skip bad TraceFileIndexEntry, negative ID not allowed: " + << index_entry.id(); + continue; + } + + size_t path_id = index_entry.id(); + const auto& path_file_name = index_entry.file_name(); + + if (!this->RegisterFilePath(path_id, path_file_name)) { + LOG(WARNING) << "ReadAhead: Failed to register file path: " << path_file_name; + ++count_entries; + } + } + LOG(VERBOSE) << "ReadAhead: Registered " << count_entries << " file paths"; + std::chrono::milliseconds open_duration_ms = open_timer.duration(); + + LOG(DEBUG) << "ProcessFd: open+parsed headers in " << open_duration_ms.count() << "ms"; + + // Go through every trace entry and readahead every (file,offset,len) tuple. + size_t entry_offset = 0; + const serialize::proto::TraceFileList& file_list = trace_file_ptr->list(); + for (const serialize::proto::TraceFileEntry& file_entry : file_list.entries()) { + ++entry_offset; + + if (file_entry.file_length() < 0 || file_entry.file_offset() < 0) { + LOG(WARNING) << "ProcessFd entry negative file length or offset, illegal: " + << "index_id=" << file_entry.index_id() << ", skipping"; + continue; + } + + // Attempt to perform readahead. This can generate more warnings dynamically. + if (!this->ReadAhead(file_entry.index_id(), + kind, + file_entry.file_length(), + file_entry.file_offset())) { + if (kLogFailures) { + LOG(WARNING) << "Failed readahead, bad file length/offset in entry @ " + << (entry_offset - 1); + } + } + } + + std::chrono::milliseconds total_duration_ms = total_timer.duration(); + LOG(DEBUG) << "ProcessFd: total duration " << total_duration_ms.count() << "ms"; + + { + struct timeval now; + gettimeofday(&now, nullptr); + + uint64_t now_usec = (now.tv_sec * 1000000LL + now.tv_usec); + LOG(DEBUG) << "ProcessFd: finishing usec: " << now_usec; + } + + return true; +} + + +static bool IsDumpEveryEntry() { + // Set to 'true' to dump every single entry for debugging (multiline). + // Otherwise it only prints per-file-path summaries. + return ::android::base::GetBoolProperty("iorapd.readahead.dump_all", /*default*/false); +} + +static bool IsDumpEveryPath() { + // Dump per-file-path (entry) stats. Defaults to on if the above property is on. + return ::android::base::GetBoolProperty("iorapd.readahead.dump_paths", /*default*/false); +} + +void SessionDirect::Dump(std::ostream& os, bool multiline) const { + { + struct timeval now; + gettimeofday(&now, nullptr); + + uint64_t now_usec = (now.tv_sec * 1000000LL + now.tv_usec); + LOG(DEBUG) << "SessionDirect::Dump: beginning usec: " << now_usec; + } + + size_t path_count = entry_list_map_.size(); + + size_t read_ahead_entries = 0; + size_t read_ahead_bytes = 0; + + size_t overall_entry_count = 0; + size_t overall_byte_count = 0; + for (auto it = entry_list_map_.begin(); it != entry_list_map_.end(); ++it) { + const auto& entry_mapping_list = it->second; + + for (size_t j = 0; j < entry_mapping_list.size(); ++j) { + const EntryMapping& entry_mapping = entry_mapping_list[j]; + const Entry& entry = entry_mapping.entry; + + ++overall_entry_count; + overall_byte_count += entry.length; + + if (entry_mapping.success) { + ++read_ahead_entries; + read_ahead_bytes += entry.length; + } + } + } + + double overall_success_entry_rate = + read_ahead_entries * 100.0 / overall_entry_count; + double overall_success_byte_rate = + read_ahead_bytes * 100.0 / overall_byte_count; + + size_t fd_count = path_fd_map_.size(); + size_t good_fd_count = 0; + for (auto it = path_fd_map_.begin(); it != path_fd_map_.end(); ++it) { + if (it->second.ok()) { + ++good_fd_count; + } + } + double good_fd_rate = good_fd_count * 100.0 / fd_count; + // double bad_fd_rate = (fd_count - good_fd_count) * 1.0 / fd_count; + + if (!multiline) { + os << "SessionDirect{"; + os << "session_id=" << SessionId() << ","; + + os << "file_paths=" << path_count << " (good: " << good_fd_rate << "),"; + os << "read_ahead_entries=" << read_ahead_entries; + os << "(" << overall_success_entry_rate << "%),"; + os << "read_ahead_bytes=" << read_ahead_bytes << ""; + os << "(" << overall_success_byte_rate << "%),"; + os << "timer=" << timer_.duration().count() << ","; + + os << "}"; + return; + } else { + // Always try to pay attention to these stats below. + // They can be signs of potential performance problems. + os << "Session Direct (id=" << SessionId() << ")" << std::endl; + + os << " Summary: " << std::endl; + os << " Description = " << SessionDescription() << std::endl; + os << " Duration = " << timer_.duration().count() << "ms" << std::endl; + os << " Total File Paths=" << path_count << " (good: " << good_fd_rate << "%)" << std::endl; + os << " Total Entries=" << overall_entry_count; + os << " (good: " << overall_success_entry_rate << "%)" << std::endl; + os << " Total Bytes=" << overall_byte_count << ""; + os << " (good: " << overall_success_byte_rate << "%)" << std::endl; + os << std::endl; + + // Probably too spammy, but they could narrow down the issue for a problem in above stats. + if (!IsDumpEveryPath() && !IsDumpEveryEntry()) { + return; + } + + for (auto it = entry_list_map_.begin(); it != entry_list_map_.end(); ++it) { + size_t path_id = it->first; + const auto& entry_mapping_list = it->second; + + std::optional<std::string_view> file_path = GetFilePath(path_id); + os << " File Path (id=" << path_id << "): "; + if (file_path.has_value()) { + os << "'" << *file_path << "'"; + } else { + os << "(nullopt)"; + } + + auto fd_it = path_fd_map_.find(path_id); + os << ", FD="; + if (fd_it != path_fd_map_.end()) { + const android::base::unique_fd& fd = fd_it->second; + os << fd.get(); // -1 for failed fd. + } else { + os << "(none)"; + } + os << std::endl; + + size_t total_entries = entry_mapping_list.size(); + size_t total_bytes = 0; + + size_t local_read_ahead_entries = 0; + size_t local_read_ahead_bytes = 0; + for (size_t j = 0; j < entry_mapping_list.size(); ++j) { + const EntryMapping& entry_mapping = entry_mapping_list[j]; + const Entry& entry = entry_mapping.entry; + + total_bytes += entry.length; + + // Sidenote: Bad FDs will have 100% failed mappings. + // Good FDs may sometimes have failed mappings. + if (entry_mapping.success) { + ++local_read_ahead_entries; + local_read_ahead_bytes += entry.length; + } + + if (IsDumpEveryEntry()) { + os << " Entry " << j << " details:" << std::endl; + os << " " << entry << std::endl; + os << " Mapping " << (entry_mapping.success ? "Succeeded" : "Failed") + << ", Address " << entry_mapping.address << std::endl; + } + } + + double entry_success_rate = local_read_ahead_entries * 100.0 / total_entries; + double bytes_success_rate = local_read_ahead_bytes * 100.0 / total_bytes; + + double entry_failure_rate = (total_entries - local_read_ahead_entries) * 100.0 / total_entries; + double bytes_failure_rate = (total_bytes - local_read_ahead_bytes) * 100.0 / total_bytes; + + os << " Successful: Entries=" << local_read_ahead_entries + << " (" << entry_success_rate << "%)" + << ", Bytes=" << local_read_ahead_bytes + << " (" << bytes_success_rate << "%)" + << std::endl; + os << " Failed: Entries=" << (total_entries - local_read_ahead_entries) + << " (" << entry_failure_rate << "%)" + << ", Bytes=" << (total_bytes - local_read_ahead_bytes) + << " (" << bytes_failure_rate << "%)" + << std::endl; + os << " Total: Entries=" << total_entries + << ", Bytes=" << total_bytes + << std::endl; + } + + return; + } +} + +SessionDirect::~SessionDirect() { + for (auto it = entry_list_map_.begin(); it != entry_list_map_.end();) { + size_t path_id = it->first; + + ++it; // the iterator is removed in the following Unregister method. + UnregisterFilePath(path_id); + } +} + +// +// Indirect +// + +SessionIndirect::SessionIndirect(size_t session_id, + std::string description, + std::shared_ptr<PrefetcherDaemon> daemon, + bool send_command) + : SessionBase{session_id, description}, + daemon_{daemon} { + // Don't do anything in e.g. subclasses. + if (!send_command) { + return; + } + + Command cmd{}; + cmd.choice = CommandChoice::kCreateSession; + cmd.session_id = session_id; + cmd.file_path = description; + + LOG(VERBOSE) << "SessionIndirect: " << cmd; + + if (!daemon_->SendCommand(cmd)) { + LOG(FATAL) << "SessionIndirect: Failure to create session " << session_id + << ", description: " << description; + } +} + +SessionIndirect::~SessionIndirect() { + Command cmd{}; + cmd.choice = CommandChoice::kDestroySession; + cmd.session_id = SessionId(); + + if (!daemon_->SendCommand(cmd)) { + LOG(WARNING) << "SessionIndirect: Failure to destroy session " << SessionId() + << ", description: " << SessionDescription(); + } +} + +void SessionIndirect::Dump(std::ostream& os, bool multiline) const { + // SessionBase::Dump(os, multiline); + // TODO: does having the local dump do anything for us? + + Command cmd{}; + cmd.choice = CommandChoice::kDumpSession; + cmd.session_id = SessionId(); + + daemon_->SendCommand(cmd); +} + +bool SessionIndirect::RegisterFilePath(size_t path_id, std::string_view file_path) { + Command cmd{}; + cmd.choice = CommandChoice::kRegisterFilePath; + cmd.session_id = SessionId(); + cmd.id = path_id; + cmd.file_path = file_path; + + return daemon_->SendCommand(cmd); +} + +bool SessionIndirect::UnregisterFilePath(size_t path_id) { + Command cmd{}; + cmd.choice = CommandChoice::kUnregisterFilePath; + cmd.session_id = SessionId(); + cmd.id = path_id; + + return daemon_->SendCommand(cmd); +} +bool SessionIndirect::ReadAhead(size_t path_id, + ReadAheadKind kind, + size_t length, + size_t offset) { + Command cmd{}; + cmd.choice = CommandChoice::kReadAhead; + cmd.session_id = SessionId(); + cmd.id = path_id; + cmd.read_ahead_kind = kind; + cmd.length = length; + cmd.offset = offset; + + return daemon_->SendCommand(cmd); +} + +bool SessionIndirect::UnreadAhead(size_t path_id, + ReadAheadKind kind, + size_t length, + size_t offset) { + LOG(WARNING) << "UnreadAhead: command not implemented yet"; + return true; +} + +// +// IndirectSocket +// + +SessionIndirectSocket::SessionIndirectSocket(size_t session_id, + int fd, + std::string description, + std::shared_ptr<PrefetcherDaemon> daemon) + : SessionIndirect{session_id, description, daemon, /*send_command*/false} { + // TODO: all of the WriteCommand etc in the daemon. + Command cmd{}; + cmd.choice = CommandChoice::kCreateFdSession; + cmd.fd = fd; + cmd.session_id = session_id; + cmd.file_path = description; + + LOG(VERBOSE) << "SessionIndirectSocket: " << cmd; + + if (!daemon_->SendCommand(cmd)) { + LOG(FATAL) << "SessionIndirectSocket: Failure to create session " << session_id + << ", description: " << description; + } + + // This goes into the SessionDirect ctor + SessionDirect::ProcessFd + // as implemented in PrefetcherDaemon::ReceiveCommand +} + +SessionIndirectSocket::~SessionIndirectSocket() { +} + +} // namespace prefetcher +} // namespace iorap diff --git a/src/prefetcher/session.h b/src/prefetcher/session.h new file mode 100644 index 0000000..a4a9e6b --- /dev/null +++ b/src/prefetcher/session.h @@ -0,0 +1,236 @@ +// Copyright (C) 2019 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. + +#ifndef PREFETCHER_SESSION_H_ +#define PREFETCHER_SESSION_H_ + +#include <android-base/chrono_utils.h> +#include <android-base/unique_fd.h> + +#include <optional> +#include <memory> +#include <string> +#include <string_view> +#include <unordered_map> +#include <vector> + +namespace iorap { +namespace prefetcher { + +#ifndef READ_AHEAD_KIND +#define READ_AHEAD_KIND 1 +enum class ReadAheadKind : uint32_t { + kFadvise = 0, + kMmapLocked = 1, + kMlock = 2, +}; +#endif + +class Session { + public: + virtual bool RegisterFilePath(size_t path_id, std::string_view file_path) = 0; + virtual bool UnregisterFilePath(size_t path_id) = 0; + + // Immediately perform a readahead now. + // Fadvise: the readahead will have been queued by the kernel. + // MmapLocked/Mlock: the memory is pinned by the requested process. + virtual bool ReadAhead(size_t path_id, ReadAheadKind kind, size_t length, size_t offset) = 0; + + // Cancels a readahead previously done. + // The length/offset should match the call of ReadAhead. + virtual bool UnreadAhead(size_t path_id, ReadAheadKind kind, size_t length, size_t offset) = 0; + + // Multi-line detailed dump, e.g. for dumpsys. + // Single-line summary dump, e.g. for logcat. + virtual void Dump(std::ostream& os, bool multiline) const = 0; + + // Process the FD for kCreateFdSession. + // Assumes there's a compiled_trace.pb at the fd, calling this function + // will immediately process it and execute any read-aheads. + // + // FD is borrowed only for the duration of the function call. + virtual bool ProcessFd(int fd) = 0; + + // Get the session ID associated with this session. + // Session IDs are distinct, they are not used for new sessions. + virtual size_t SessionId() const = 0; + + // Get this session's description. + // Only useful for logging/dumping. + virtual const std::string& SessionDescription() const = 0; + + // Implicitly unregister any remaining file paths. + // All read-aheads are also cancelled. + virtual ~Session() {} + + protected: + Session(); +}; + +// Single-line summary dump of Session. +std::ostream& operator<<(std::ostream&os, const Session& session); + +class SessionBase : public Session { + public: + virtual void Dump(std::ostream& os, bool multiline) const override; + virtual ~SessionBase() {} + + virtual size_t SessionId() const override { + return session_id_; + } + + virtual const std::string& SessionDescription() const override { + return description_; + } + + virtual bool ProcessFd(int fd) override; + + protected: + SessionBase(size_t session_id, std::string description); + std::optional<std::string_view> GetFilePath(size_t path_id) const; + bool RemoveFilePath(size_t path_id); + bool InsertFilePath(size_t path_id, std::string file_path); + + android::base::Timer timer_{}; + private: + // Note: Store filename for easier debugging and for dumping. + std::unordered_map</*path_id*/size_t, std::string> path_map_; + size_t session_id_; + std::string description_; +}; + +// In-process session. +class SessionDirect : public SessionBase { + public: + virtual bool RegisterFilePath(size_t path_id, std::string_view file_path) override; + + virtual bool UnregisterFilePath(size_t path_id) override; + virtual bool ReadAhead(size_t path_id, + ReadAheadKind kind, + size_t length, + size_t offset); + + virtual bool UnreadAhead(size_t path_id, + ReadAheadKind kind, + size_t length, + size_t offset) override; + + virtual bool ProcessFd(int fd) override; + + virtual void Dump(std::ostream& os, bool multiline) const override; + + virtual ~SessionDirect(); + + SessionDirect(size_t session_id, std::string description) + : SessionBase{session_id, std::move(description)} { + } + protected: + struct Entry { + size_t path_id; + ReadAheadKind kind; + size_t length; + size_t offset; + + constexpr bool operator==(const Entry& other) const { + return path_id == other.path_id && + kind == other.kind && + length == other.length && + offset == other.offset; + } + constexpr bool operator!=(const Entry& other) const { + return !(*this == other); + } + + friend std::ostream& operator<<(std::ostream& os, const Entry& entry); + }; + + struct EntryMapping { + Entry entry; + void* address; + bool success; + }; + + // bool EntryReadAhead(const Entry& entry) const; + // bool EntryUnReadAhead(const Entry& entry) const; + + void UnmapWithoutErase(const EntryMapping& entry_mapping); + std::optional<android::base::unique_fd*> GetFdForPath(size_t path_id); + + private: + std::unordered_map</*path_id*/size_t, std::vector<EntryMapping>> entry_list_map_; + std::unordered_map</*path_id*/size_t, android::base::unique_fd> path_fd_map_; + + public: + friend std::ostream& operator<<(std::ostream& os, const SessionDirect::Entry& entry); +}; + +std::ostream& operator<<(std::ostream& os, const SessionDirect::Entry& entry); + +class PrefetcherDaemon; + +// Out-of-process session. Requires prefetcher daemon. +class SessionIndirect : public SessionBase { + public: + virtual bool RegisterFilePath(size_t path_id, std::string_view file_path) override; + + virtual bool UnregisterFilePath(size_t path_id) override; + virtual bool ReadAhead(size_t path_id, + ReadAheadKind kind, + size_t length, + size_t offset) override; + + virtual bool UnreadAhead(size_t path_id, + ReadAheadKind kind, + size_t length, + size_t offset) override; + + virtual void Dump(std::ostream& os, bool multiline) const override; + + // Creates a new session indirectly. + // Writes to daemon the new session command. + SessionIndirect(size_t session_id, + std::string description, + std::shared_ptr<PrefetcherDaemon> daemon, + bool send_command = true); + + // Destroys the current session. + // Writes to daemon that the session is to be destroyed. + virtual ~SessionIndirect(); + + protected: + std::shared_ptr<PrefetcherDaemon> daemon_; +}; + +// Out-of-process session. Requires prefetcher daemon. +class SessionIndirectSocket : public SessionIndirect { + public: + // Creates a new session indirectly. + // Writes to daemon the new session command. + SessionIndirectSocket(size_t session_id, + int fd, + std::string description, + std::shared_ptr<PrefetcherDaemon> daemon); + // Destroys the current session. + // Writes to daemon that the session is to be destroyed. + virtual ~SessionIndirectSocket(); + + private: +}; + + +} // namespace prefetcher +} // namespace iorap + +#endif + diff --git a/src/prefetcher/session_manager.cc b/src/prefetcher/session_manager.cc new file mode 100644 index 0000000..d6fab1f --- /dev/null +++ b/src/prefetcher/session_manager.cc @@ -0,0 +1,281 @@ +// Copyright (C) 2019 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. + +#include "session_manager.h" + +#include "prefetcher/prefetcher_daemon.h" +#include "prefetcher/session.h" +#include "prefetcher/task_id.h" +#include "serialize/arena_ptr.h" +#include "serialize/protobuf_io.h" + +#include <android-base/logging.h> +#include <android-base/chrono_utils.h> +#include <android-base/unique_fd.h> +#include <fcntl.h> +#include <functional> +#include <stdint.h> +#include <sys/mman.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unordered_map> + +namespace iorap { +namespace prefetcher { + +std::ostream& operator<<(std::ostream& os, const SessionManager& manager) { + manager.Dump(os, /*multiline*/false); + return os; +} + +SessionManager::SessionManager() { +} + +class SessionManagerBase : public SessionManager { + public: + virtual void Dump(std::ostream& os, bool multiline) const { + if (!multiline) { + os << "SessionManager{"; + + os << "sessions=["; + for (auto it = sessions_map_.begin(); + it != sessions_map_.end(); + ++it) { + os << "(" << it->second.description << ") "; + it->second.session->Dump(os, /*multiline*/false); + } + os << "]"; + return; + } + + os << "SessionManager (session count = " << sessions_map_.size() << "):" << std::endl; + os << std::endl; + + for (auto it = sessions_map_.begin(); + it != sessions_map_.end(); + ++it) { + os << "Description: " << it->second.description << std::endl; + it->second.session->Dump(os, /*multiline*/true); + } + + // TODO: indentations? Use this pseudo line break for the time being. + os << "--------------------------------" << std::endl; + } + + virtual ~SessionManagerBase() {} + + virtual std::shared_ptr<Session> FindSession(size_t session_id) const override { + auto it = sessions_map_.find(session_id); + if (it != sessions_map_.end()) { + DCHECK_EQ(session_id, it->second.SessionId()); + return it->second.session; + } else { + return nullptr; + } + } + + virtual bool DestroySession(size_t session_id) override { + auto it = sessions_map_.find(session_id); + if (it != sessions_map_.end()) { + sessions_map_.erase(it); + return true; + } else { + return false; + } + } + + protected: + void InsertNewSession(std::shared_ptr<Session> session, std::string description) { + DCHECK(!FindSession(session->SessionId())) << "session cannot already exist"; + + size_t session_id = session->SessionId(); + + SessionData data; + data.session = std::move(session); + data.description = std::move(description); + + sessions_map_.insert({session_id, std::move(data)}); + } + + private: + struct SessionData { + std::shared_ptr<Session> session; + std::string description; + + size_t SessionId() const { + return session->SessionId(); + } + }; + + std::unordered_map</*session_id*/size_t, SessionData> sessions_map_; +}; + +class SessionManagerDirect : public SessionManagerBase { + public: + virtual std::shared_ptr<Session> CreateSession(size_t session_id, + std::string description) override { + LOG(VERBOSE) << "CreateSessionDirect id=" << session_id << ", description=" << description; + + std::shared_ptr<Session> session = + std::static_pointer_cast<Session>(std::make_shared<SessionDirect>(session_id, + description)); + DCHECK(FindSession(session_id) == nullptr); + InsertNewSession(session, std::move(description)); + return session; + } + + SessionManagerDirect() { + // Intentionally left empty. + } + + private: +}; + + +class SessionManagerIndirect : public SessionManagerBase { + public: + virtual std::shared_ptr<Session> CreateSession(size_t session_id, + std::string description) override { + LOG(VERBOSE) << "CreateSessionIndirect id=" << session_id << ", description=" << description; + + std::shared_ptr<Session> session = + std::static_pointer_cast<Session>(std::make_shared<SessionIndirect>(session_id, + description, + daemon_)); + InsertNewSession(session, description); + return session; + } + + SessionManagerIndirect() : daemon_{std::make_shared<PrefetcherDaemon>()} { + //StartViaFork etc. + // TODO: also expose a 'MainLoop(...) -> daemon::Main(..)' somehow in the base interface. + auto params = daemon_->StartPipesViaFork(); + if (!params) { + LOG(FATAL) << "Failed to fork+exec iorap.prefetcherd"; + } + } + + virtual ~SessionManagerIndirect() { + Command cmd{}; + cmd.choice = CommandChoice::kExit; + + if (!daemon_->SendCommand(cmd)) { + LOG(FATAL) << "Failed to nicely exit iorap.prefetcherd"; + } + } + + virtual void Dump(std::ostream& os, bool multiline) const override { + Command cmd{}; + cmd.choice = CommandChoice::kDumpEverything; + + if (!daemon_->SendCommand(cmd)) { + LOG(ERROR) << "Failed to transmit kDumpEverything to iorap.prefetcherd"; + } + } + + + private: + // No lifetime cycle: PrefetcherDaemon only has a SessionManagerDirect in it. + std::shared_ptr<PrefetcherDaemon> daemon_; +}; + +class SessionManagerIndirectSocket : public SessionManagerBase { + public: + virtual std::shared_ptr<Session> CreateSession(size_t session_id, + std::string description) override { + DCHECK(false) << "not supposed to create a regular session for Socket"; + + LOG(VERBOSE) << "CreateSessionIndirect id=" << session_id << ", description=" << description; + + std::shared_ptr<Session> session = + std::static_pointer_cast<Session>(std::make_shared<SessionIndirect>(session_id, + description, + daemon_)); + InsertNewSession(session, description); + return session; + } + + virtual std::shared_ptr<Session> CreateSession(size_t session_id, + std::string description, + std::optional<int> fd) override { + CHECK(fd.has_value()); + LOG(VERBOSE) << "CreateSessionIndirectSocket id=" << session_id + << ", description=" << description + << ", fd=" << *fd; + + std::shared_ptr<Session> session = + std::static_pointer_cast<Session>(std::make_shared<SessionIndirectSocket>(session_id, + *fd, + description, + daemon_)); + InsertNewSession(session, description); + return session; + } + + SessionManagerIndirectSocket() : daemon_{std::make_shared<PrefetcherDaemon>()} { + auto params = daemon_->StartSocketViaFork(); + if (!params) { + LOG(FATAL) << "Failed to fork+exec iorap.prefetcherd"; + } + } + + virtual ~SessionManagerIndirectSocket() { + Command cmd{}; + cmd.choice = CommandChoice::kExit; + + if (!daemon_->SendCommand(cmd)) { + LOG(FATAL) << "Failed to nicely exit iorap.prefetcherd"; + } + } + + virtual void Dump(std::ostream& os, bool multiline) const override { + Command cmd{}; + cmd.choice = CommandChoice::kDumpEverything; + + if (!daemon_->SendCommand(cmd)) { + LOG(ERROR) << "Failed to transmit kDumpEverything to iorap.prefetcherd"; + } + } + + + private: + // No lifetime cycle: PrefetcherDaemon only has a SessionManagerDirect in it. + std::shared_ptr<PrefetcherDaemon> daemon_; +}; + +std::unique_ptr<SessionManager> SessionManager::CreateManager(SessionKind kind) { + LOG(VERBOSE) << "SessionManager::CreateManager kind=" << kind; + + switch (kind) { + case SessionKind::kInProcessDirect: { + SessionManager* ptr = new SessionManagerDirect(); + return std::unique_ptr<SessionManager>{ptr}; + } + case SessionKind::kOutOfProcessIpc: { + SessionManager* ptr = new SessionManagerIndirect(); + return std::unique_ptr<SessionManager>{ptr}; + } + case SessionKind::kOutOfProcessSocket: { + SessionManager* ptr = new SessionManagerIndirectSocket(); + return std::unique_ptr<SessionManager>{ptr}; + } + default: { + LOG(FATAL) << "Invalid session kind: " << static_cast<int>(kind); + break; + } + } +} + +} // namespace prefetcher +} // namespace iorap diff --git a/src/prefetcher/session_manager.h b/src/prefetcher/session_manager.h new file mode 100644 index 0000000..45120d5 --- /dev/null +++ b/src/prefetcher/session_manager.h @@ -0,0 +1,91 @@ +// Copyright (C) 2019 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. + +#ifndef PREFETCHER_SESSION_MANAGER_H_ +#define PREFETCHER_SESSION_MANAGER_H_ + +#include <optional> +#include <ostream> +#include <memory> + +namespace iorap { +namespace prefetcher { + +class Session; + +enum class SessionKind : uint32_t { + kInProcessDirect, + kOutOfProcessIpc, + kOutOfProcessSocket, +}; + +inline std::ostream& operator<<(std::ostream& os, SessionKind kind) { + if (kind == SessionKind::kInProcessDirect) { + os << "kInProcessDirect"; + } else if (kind == SessionKind::kOutOfProcessIpc) { + os << "kOutOfProcessIpc"; + } else if (kind == SessionKind::kOutOfProcessSocket) { + os << "kOutOfProcessSocket"; + } else { + os << "(invalid)"; + } + return os; +} + +class SessionManager { + public: + static std::unique_ptr<SessionManager> CreateManager(SessionKind kind); + + // Create a new session. The description is used by Dump. + // Manager maintains a strong ref to this session, so DestroySession must also + // be called prior to all refs dropping to 0. + virtual std::shared_ptr<Session> CreateSession(size_t session_id, + std::string description) = 0; + + // Create a new session. The description is used by Dump. + // Manager maintains a strong ref to this session, so DestroySession must also + // be called prior to all refs dropping to 0. + virtual std::shared_ptr<Session> CreateSession(size_t session_id, + std::string description, + std::optional<int> fd) { + return CreateSession(session_id, description); + } + + // Look up an existing session that was already created. + // Returns null if there is no such session. + virtual std::shared_ptr<Session> FindSession(size_t session_id) const = 0; + + // Drop all manager references to an existing session. + // Returns false if the session does not exist already. + virtual bool DestroySession(size_t session_id) = 0; + + // Multi-line detailed dump, e.g. for dumpsys. + // Single-line summary dump, e.g. for logcat. + virtual void Dump(std::ostream& os, bool multiline) const = 0; + + // Note: session lifetime is tied to manager. The manager has strong pointers to sessions. + virtual ~SessionManager() {} + + protected: + SessionManager(); +}; + +// Single-line summary dump of Session. +std::ostream& operator<<(std::ostream&os, const SessionManager& session); + +} // namespace prefetcher +} // namespace iorap + +#endif + diff --git a/src/prefetcher/task_id.h b/src/prefetcher/task_id.h new file mode 100644 index 0000000..dc26954 --- /dev/null +++ b/src/prefetcher/task_id.h @@ -0,0 +1,39 @@ +// Copyright (C) 2017 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. + +#ifndef PREFETCHER_TASK_ID_H_ +#define PREFETCHER_TASK_ID_H_ + +#include <ostream> +#include <string> + +namespace iorap { +namespace prefetcher { + +struct TaskId { + size_t id; // Unique monotonically increasing ID. + std::string path; // File path to the trace file. + + friend std::ostream& operator<<(std::ostream& os, const TaskId& task_id) { + os << "TaskId { id: " << task_id.id << ", path: " << task_id.path << "}"; + return os; + } + +}; + +} // namespace prefetcher +} // namespace iorap + +#endif + diff --git a/src/serialize/TraceFile.proto b/src/serialize/TraceFile.proto new file mode 100644 index 0000000..fc72d0d --- /dev/null +++ b/src/serialize/TraceFile.proto @@ -0,0 +1,47 @@ +// Copyright (C) 2017 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. + +syntax = "proto2"; // use required fields, which aren't in proto3. + +package iorap.serialize.proto; // C++ namespace iorap::serialize::proto +option java_package = "com.google.android.iorap"; +option optimize_for = LITE_RUNTIME; + +// TODO: should these fields be 'packed' for "smaller encoding" ? + +message TraceFile { + required TraceFileIndex index = 1; + required TraceFileList list = 2; +} + +message TraceFileIndex { + repeated TraceFileIndexEntry entries = 1; +} + +message TraceFileIndexEntry { + required int64 id = 1; + required string file_name = 2; +} + +message TraceFileList { + repeated TraceFileEntry entries = 1; +} + +message TraceFileEntry { + required int64 index_id = 1; + required int64 file_offset = 2; + required int64 file_length = 3; +} + +// XX: use nested messages?
\ No newline at end of file diff --git a/src/serialize/arena_ptr.h b/src/serialize/arena_ptr.h new file mode 100644 index 0000000..d8bea26 --- /dev/null +++ b/src/serialize/arena_ptr.h @@ -0,0 +1,76 @@ +// Copyright (C) 2017 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. + +#ifndef SERIALIZE_ARENA_PTR_H_ +#define SERIALIZE_ARENA_PTR_H_ + +#include <google/protobuf/arena.h> +#include <memory> + +namespace iorap { +namespace serialize { + +/** + * @file + * + * Helpers for protobuf arena allocators. We use smart pointers + * with an arena embedded inside of them to avoid caring about the + * arena in other parts of libiorap. + */ + +// Arena-managed objects must not be deleted manually. +// When the Arena goes out of scope, it cleans everything up itself. +template <typename T> +void DoNotDelete(T*) {} + +template <typename T, typename Base = std::unique_ptr<T, decltype(&DoNotDelete<T>)>> +struct ArenaPtr : public Base { + template <typename... Args> + static ArenaPtr<T> Make(Args&& ... args) { + ArenaPtr<T> arena_ptr(nullptr); + arena_ptr.reset(google::protobuf::Arena::Create<T>(arena_ptr.arena_.get(), + std::forward<Args>(args)...)); + return arena_ptr; + } + + ArenaPtr(std::nullptr_t) : Base(nullptr, &DoNotDelete<T>) {} // NOLINT explicit. + + private: + // Use a unique_ptr because Arena doesn't support move semantics. + std::unique_ptr<google::protobuf::Arena> arena_{new google::protobuf::Arena{}}; +}; + +template <typename T, typename Base = std::shared_ptr<T>> +struct ArenaSharedPtr : public Base { + template <typename... Args> + static ArenaSharedPtr<T> Make(Args&& ... args) { + ArenaSharedPtr<T> arena_ptr(nullptr, &DoNotDelete<T>); + arena_ptr.reset(google::protobuf::Arena::Create<T>(arena_ptr.arena_.get(), + std::forward<Args>(args)...)); + return arena_ptr; + } + + ArenaSharedPtr() = default; + template <typename Deleter> + ArenaSharedPtr(std::nullptr_t, Deleter d) : Base(nullptr, d) {} // NOLINT explicit. + + private: + std::shared_ptr<google::protobuf::Arena> arena_{new google::protobuf::Arena{}}; +}; + +} // namespace serialize +} // namespace iorap + +#endif + diff --git a/src/serialize/protobuf_io.cc b/src/serialize/protobuf_io.cc new file mode 100644 index 0000000..1b6420f --- /dev/null +++ b/src/serialize/protobuf_io.cc @@ -0,0 +1,173 @@ +// Copyright (C) 2017 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. + +#include "protobuf_io.h" + +#include "common/trace.h" +#include "serialize/arena_ptr.h" + +#include <android-base/chrono_utils.h> +#include <android-base/logging.h> +#include <android-base/unique_fd.h> +#include <fcntl.h> +#include <sys/mman.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <unistd.h> +#include <utils/Trace.h> + +#include "google/protobuf/io/zero_copy_stream_impl_lite.h" +#include "system/iorap/src/serialize/TraceFile.pb.h" + +namespace iorap { +namespace serialize { + +ArenaPtr<proto::TraceFile> ProtobufIO::Open(std::string file_path) { + // TODO: file a bug about this. + // Note: can't use {} here, clang think it's narrowing from long->int. + android::base::unique_fd fd(TEMP_FAILURE_RETRY(::open(file_path.c_str(), O_RDONLY))); + if (fd.get() < 0) { + PLOG(DEBUG) << "ProtobufIO: open failed: " << file_path; + return nullptr; + } + + return Open(fd.get(), file_path.c_str()); +} + +ArenaPtr<proto::TraceFile> ProtobufIO::Open(int fd, const char* file_path) { + + ScopedFormatTrace atrace_protobuf_io_open(ATRACE_TAG_ACTIVITY_MANAGER, + "ProtobufIO::Open %s", + file_path); + android::base::Timer timer{}; + + struct stat buf; + if (fstat(fd, /*out*/&buf) < 0) { + PLOG(ERROR) << "ProtobufIO: open error, fstat failed: " << file_path; + return nullptr; + } + // XX: off64_t for stat::st_size ? + + // Using the mmap appears to be the only way to do zero-copy with protobuf lite. + void* data = mmap(/*addr*/nullptr, + buf.st_size, + PROT_READ, MAP_SHARED | MAP_POPULATE, + fd, + /*offset*/0); + if (data == nullptr) { + PLOG(ERROR) << "ProtobufIO: open error, mmap failed: " << file_path; + return nullptr; + } + + ArenaPtr<proto::TraceFile> protobuf_trace_file = ArenaPtr<proto::TraceFile>::Make(); + if (protobuf_trace_file == nullptr) { + LOG(ERROR) << "ProtobufIO: open error, failed to create arena: " << file_path; + return nullptr; + } + + google::protobuf::io::ArrayInputStream protobuf_input_stream{data, static_cast<int>(buf.st_size)}; + if (!protobuf_trace_file->ParseFromZeroCopyStream(/*in*/&protobuf_input_stream)) { + // XX: Does protobuf on android already have the right LogHandler ? + LOG(ERROR) << "ProtobufIO: open error, protobuf parsing failed: " << file_path; + return nullptr; + } + + if (munmap(data, buf.st_size) < 0) { + PLOG(WARNING) << "ProtobufIO: open problem, munmap failed, possibly memory leak? " + << file_path; + } + + LOG(VERBOSE) << "ProtobufIO: open succeeded: " << file_path << ", duration: " << timer; + return protobuf_trace_file; +} + +iorap::expected<size_t /*bytes written*/, int /*errno*/> ProtobufIO::WriteFully( + const ::google::protobuf::MessageLite& message, + std::string_view file_path) { + + std::string str{file_path}; + android::base::unique_fd fd(TEMP_FAILURE_RETRY( + ::open(str.c_str(), + O_CREAT | O_TRUNC | O_RDWR, + S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP))); // ugo: rw-rw---- + if (fd.get() < 0) { + int err = errno; + PLOG(ERROR) << "ProtobufIO: open failed: " << file_path; + return unexpected{err}; + } + + return WriteFully(message, fd.get(), file_path); +} + +iorap::expected<size_t /*bytes written*/, int /*errno*/> ProtobufIO::WriteFully( + const ::google::protobuf::MessageLite& message, + int fd, + std::string_view file_path) { + + int byte_size = message.ByteSize(); + if (byte_size < 0) { + DCHECK(false) << "Invalid protobuf size: " << byte_size; + LOG(ERROR) << "ProtobufIO: Invalid protobuf size: " << byte_size; + return unexpected{EDOM}; + } + size_t serialized_size = static_cast<size_t>(byte_size); + + // Change the file to be exactly the length of the protobuf. + if (ftruncate(fd, static_cast<off_t>(serialized_size)) < 0) { + int err = errno; + PLOG(ERROR) << "ProtobufIO: ftruncate (size=" << serialized_size << ") failed"; + return unexpected{err}; + } + + // Using the mmap appears to be the only way to do zero-copy with protobuf lite. + void* data = mmap(/*addr*/nullptr, + serialized_size, + PROT_WRITE, + MAP_SHARED, + fd, + /*offset*/0); + if (data == nullptr) { + int err = errno; + PLOG(ERROR) << "ProtobufIO: mmap failed: " << file_path; + return unexpected{err}; + } + + // Zero-copy write from protobuf to file via memory-map. + ::google::protobuf::io::ArrayOutputStream output_stream{data, byte_size}; + if (!message.SerializeToZeroCopyStream(/*inout*/&output_stream)) { + // This should never happen since we pre-allocated the file and memory map to be large + // enough to store the full protobuf. + DCHECK(false) << "ProtobufIO:: SerializeToZeroCopyStream failed despite precalculating size"; + LOG(ERROR) << "ProtobufIO: SerializeToZeroCopyStream failed"; + return unexpected{EXFULL}; + } + + // Guarantee that changes are written back prior to munmap. + if (msync(data, static_cast<size_t>(serialized_size), MS_SYNC) < 0) { + int err = errno; + PLOG(ERROR) << "ProtobufIO: msync failed"; + return unexpected{err}; + } + + if (munmap(data, serialized_size) < 0) { + PLOG(WARNING) << "ProtobufIO: munmap failed, possibly memory leak? " + << file_path; + } + + return serialized_size; +} + +} // namespace serialize +} // namespace iorap + diff --git a/src/serialize/protobuf_io.h b/src/serialize/protobuf_io.h new file mode 100644 index 0000000..1092fd7 --- /dev/null +++ b/src/serialize/protobuf_io.h @@ -0,0 +1,64 @@ +// Copyright (C) 2017 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. + +#ifndef SERIALIZE_PROTOBUF_IO_H_ +#define SERIALIZE_PROTOBUF_IO_H_ + +#include "common/expected.h" +#include "serialize/arena_ptr.h" +#include "system/iorap/src/serialize/TraceFile.pb.h" + +#include <string> +#include <string_view> + +namespace iorap { +namespace serialize { + +// XX: either the namespace should be called pb|proto[buf] +// or we should hide the protobuf-ness from the names and call this class "IO" , "Reader", etc? +// although an obvious name might be the "OpenFactory" or "ProtobufFacade" that reads too much +// like a bad joke. + +// Helpers to read a TraceFile protobuf from a file [descriptor]. +class ProtobufIO { + public: + // XX: proto::TraceFile seems annoying, maybe just serialize::TraceFile ? + + // Open the protobuf associated at the filepath. Returns null on failure. + static ArenaPtr<proto::TraceFile> Open(std::string file_path); + // Open the protobuf from the file descriptor. Returns null on failure. + static ArenaPtr<proto::TraceFile> Open(int fd, const char* file_path = "<unknown>"); + + // Save the protobuf by overwriting the file at file_path. + // The file state is indeterminate at failure. + // Returns # of bytes written out on success, otherwise the errno value. + static iorap::expected<size_t /*bytes written*/, int /*errno*/> WriteFully( + const ::google::protobuf::MessageLite& message, + std::string_view file_path); + // Save the protobuf by truncating the file already open at 'fd'. + // The file state is indeterminate at failure. + // Returns # of bytes written out on success, otherwise the errno value. + static iorap::expected<size_t /*bytes written*/, int /*errno*/> WriteFully( + const ::google::protobuf::MessageLite& message, + int fd, + std::string_view file_path = "<unknown>"); + + ProtobufIO() = delete; +}; + +} // namespace serialize +} // namespace iorap + +#endif + diff --git a/tests/src/compiler/compiler_test.cc b/tests/src/compiler/compiler_test.cc new file mode 100644 index 0000000..fb3e70b --- /dev/null +++ b/tests/src/compiler/compiler_test.cc @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2019 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. + */ + +#include "common/debug.h" +#include "compiler/compiler.h" +#include "inode2filename/inode_resolver.h" + +#include <cstdio> +#include <fstream> +#include <string> +#include <vector> + +#include <android-base/file.h> +#include <gtest/gtest.h> + +namespace iorap::compiler { + +static std::string GetTestDataPath(const std::string& fn) { + static std::string exec_dir = android::base::GetExecutableDirectory(); + return exec_dir + "/tests/src/compiler/testdata/" + fn; +} + +class CompilerTest: public ::testing::Test{ + protected: + void SetUp() override { + ir_dependencies.data_source = inode2filename::DataSourceKind::kTextCache; + ir_dependencies.text_cache_filename = GetTestDataPath("common_textcache"); + ir_dependencies.verify = inode2filename::VerifyKind::kNone; // required for determinism. + ir_dependencies.root_directories.push_back("/system"); + ir_dependencies.root_directories.push_back("/apex"); + ir_dependencies.root_directories.push_back("/data"); + ir_dependencies.root_directories.push_back("/vendor"); + ir_dependencies.root_directories.push_back("/product"); + ir_dependencies.root_directories.push_back("/metadata"); + } + + inode2filename::InodeResolverDependencies ir_dependencies; +}; + +TEST_F(CompilerTest, SingleTraceDuration) { + std::vector<std::string> input_file_names{GetTestDataPath("common_perfetto_trace.pb")}; + std::vector<uint64_t> timestamp_limit_ns{260390390018596UL}; + TemporaryFile tmp_file; + char* output_file_name = tmp_file.path; + bool output_proto = false; + + + std::vector<CompilationInput> perfetto_traces = + MakeCompilationInputs(input_file_names, timestamp_limit_ns); + bool result = PerformCompilation(perfetto_traces, + output_file_name, + output_proto, + /*blacklist_filter*/std::nullopt, + ir_dependencies); + std::ifstream ifs(output_file_name); + + // The extra paren is needed to avoid compilation error: + // "parentheses were disambiguated as a function declaration". + std::string content{std::istreambuf_iterator<char>(ifs), + std::istreambuf_iterator<char>()}; + + EXPECT_EQ(result, true); + EXPECT_EQ(content, "{filename:\"/product/app/CalculatorGooglePrebuilt/" + "CalculatorGooglePrebuilt.apk\"," + "timestamp:7641303," + "add_to_page_cache:1," + "index:540}\n"); +} + +TEST_F(CompilerTest, MultiTraceDuration) { + std::vector<std::string> input_file_names{GetTestDataPath("common_perfetto_trace.pb"), + GetTestDataPath("common_perfetto_trace2.pb")}; + std::vector<uint64_t> timestamp_limit_ns{260390390018596UL, 333215840452006UL}; + TemporaryFile tmp_file; + char* output_file_name = tmp_file.path; + bool output_proto = false; + + std::vector<CompilationInput> perfetto_traces = + MakeCompilationInputs(input_file_names, timestamp_limit_ns); + bool result = PerformCompilation(perfetto_traces, + output_file_name, + output_proto, + /*blacklist_filter*/std::nullopt, + ir_dependencies); + std::ifstream ifs(output_file_name); + std::string content{std::istreambuf_iterator<char>(ifs), + std::istreambuf_iterator<char>()}; + + EXPECT_EQ(result, true); + EXPECT_EQ(content, "{filename:\"/apex/com.android.art/lib64/libperfetto_hprof.so\"," + "timestamp:4388958," + "add_to_page_cache:1," + "index:227}\n" + "{filename:\"/product/app/CalculatorGooglePrebuilt/" + "CalculatorGooglePrebuilt.apk\"," + "timestamp:7641303," + "add_to_page_cache:1," + "index:540}\n"); +} + +TEST_F(CompilerTest, NoTraceDuration) { + std::vector<std::string> input_file_names{GetTestDataPath("common_perfetto_trace.pb")}; + TemporaryFile tmp_file; + char* output_file_name = tmp_file.path; + bool output_proto = false; + + std::vector<CompilationInput> perfetto_traces = + MakeCompilationInputs(input_file_names, /* timestamp_limit_ns= */{}); + bool result = PerformCompilation(perfetto_traces, + output_file_name, + output_proto, + /*blacklist_filter*/std::nullopt, + ir_dependencies); + std::ifstream ifs(output_file_name); + size_t line_num = std::count((std::istreambuf_iterator<char>(ifs)), + (std::istreambuf_iterator<char>()), + '\n'); + + EXPECT_EQ(result, true); + EXPECT_EQ(line_num, 1675UL); +} + +TEST_F(CompilerTest, BlacklistFilterArtFiles) { + std::vector<std::string> input_file_names{GetTestDataPath("common_perfetto_trace.pb")}; + TemporaryFile tmp_file; + char* output_file_name = tmp_file.path; + bool output_proto = false; + + std::string blacklist_filter = "[.](art|oat|odex|vdex|dex)$"; + + // iorap.cmd.compiler -op output.pb -it common_textcache -ot + // --blacklist-filter "[.](art|oat|odex|vdex|dex)$" common_perfetto_trace.pb + + std::vector<CompilationInput> perfetto_traces = + MakeCompilationInputs(input_file_names, /* timestamp_limit_ns= */{}); + bool result = PerformCompilation(perfetto_traces, + output_file_name, + output_proto, + blacklist_filter, + ir_dependencies); + std::ifstream ifs(output_file_name); + size_t line_num = std::count((std::istreambuf_iterator<char>(ifs)), + (std::istreambuf_iterator<char>()), + '\n'); + + EXPECT_EQ(result, true); + EXPECT_EQ(line_num, 1617UL); +} +} // namespace iorap::compiler diff --git a/tests/src/compiler/testdata/common_perfetto_trace.pb b/tests/src/compiler/testdata/common_perfetto_trace.pb Binary files differnew file mode 100644 index 0000000..e03bffa --- /dev/null +++ b/tests/src/compiler/testdata/common_perfetto_trace.pb diff --git a/tests/src/compiler/testdata/common_perfetto_trace2.pb b/tests/src/compiler/testdata/common_perfetto_trace2.pb Binary files differnew file mode 100644 index 0000000..968de83 --- /dev/null +++ b/tests/src/compiler/testdata/common_perfetto_trace2.pb diff --git a/tests/src/compiler/testdata/common_textcache b/tests/src/compiler/testdata/common_textcache new file mode 100644 index 0000000..177b1d4 --- /dev/null +++ b/tests/src/compiler/testdata/common_textcache @@ -0,0 +1,14756 @@ +23 19549 -1 /system +23 20138 -1 /system/usr +1848 13 -1 /system/usr/icu +23 1492539 -1 /system/usr/idc +64768 3192 -1 /system/usr/idc/qwerty.idc +64768 3193 -1 /system/usr/idc/qwerty2.idc +64768 3191 -1 /system/usr/idc/AVRCP.idc +23 1492543 -1 /system/usr/keylayout +64768 3222 -1 /system/usr/keylayout/Vendor_054c_Product_0268_Version_8111.kl +64768 3219 -1 /system/usr/keylayout/Vendor_054c_Product_0268.kl +64768 3232 -1 /system/usr/keylayout/Vendor_054c_Product_0ba0_Version_8111.kl +64768 3247 -1 /system/usr/keylayout/Vendor_1bad_Product_f016.kl +64768 3226 -1 /system/usr/keylayout/Vendor_054c_Product_05c4_Version_8111.kl +64768 3229 -1 /system/usr/keylayout/Vendor_054c_Product_09cc_Version_8100.kl +64768 3241 -1 /system/usr/keylayout/Vendor_1689_Product_fd00.kl +64768 3233 -1 /system/usr/keylayout/Vendor_057e_Product_2009.kl +64768 3217 -1 /system/usr/keylayout/Vendor_046d_Product_c299.kl +64768 3204 -1 /system/usr/keylayout/Vendor_045e_Product_028e.kl +64768 3243 -1 /system/usr/keylayout/Vendor_1689_Product_fe00.kl +64768 3252 -1 /system/usr/keylayout/Vendor_22b8_Product_093d.kl +64768 3214 -1 /system/usr/keylayout/Vendor_046d_Product_c21d.kl +64768 3218 -1 /system/usr/keylayout/Vendor_046d_Product_c532.kl +64768 3231 -1 /system/usr/keylayout/Vendor_054c_Product_0ba0.kl +64768 3253 -1 /system/usr/keylayout/Vendor_2378_Product_1008.kl +64768 3251 -1 /system/usr/keylayout/Vendor_1d79_Product_0009.kl +64768 3209 -1 /system/usr/keylayout/Vendor_045e_Product_02ea.kl +64768 3205 -1 /system/usr/keylayout/Vendor_045e_Product_02d1.kl +64768 3246 -1 /system/usr/keylayout/Vendor_1949_Product_0401.kl +64768 3234 -1 /system/usr/keylayout/Vendor_0583_Product_2060.kl +64768 3203 -1 /system/usr/keylayout/Vendor_0079_Product_0011.kl +64768 3239 -1 /system/usr/keylayout/Vendor_12bd_Product_d015.kl +64768 3206 -1 /system/usr/keylayout/Vendor_045e_Product_02dd.kl +64768 3242 -1 /system/usr/keylayout/Vendor_1689_Product_fd01.kl +64768 3208 -1 /system/usr/keylayout/Vendor_045e_Product_02e3.kl +64768 3221 -1 /system/usr/keylayout/Vendor_054c_Product_0268_Version_8100.kl +64768 3248 -1 /system/usr/keylayout/Vendor_1bad_Product_f023.kl +64768 3213 -1 /system/usr/keylayout/Vendor_046d_Product_c219.kl +64768 3220 -1 /system/usr/keylayout/Vendor_054c_Product_0268_Version_8000.kl +64768 3227 -1 /system/usr/keylayout/Vendor_054c_Product_09cc.kl +64768 3216 -1 /system/usr/keylayout/Vendor_046d_Product_c294.kl +64768 3212 -1 /system/usr/keylayout/Vendor_046d_Product_c216.kl +64768 3223 -1 /system/usr/keylayout/Vendor_054c_Product_05c4.kl +64768 3249 -1 /system/usr/keylayout/Vendor_1bad_Product_f027.kl +64768 3240 -1 /system/usr/keylayout/Vendor_1532_Product_0900.kl +64768 3244 -1 /system/usr/keylayout/Vendor_18d1_Product_2c40.kl +64768 3236 -1 /system/usr/keylayout/Vendor_0b05_Product_4500.kl +64768 3224 -1 /system/usr/keylayout/Vendor_054c_Product_05c4_Version_8000.kl +64768 3207 -1 /system/usr/keylayout/Vendor_045e_Product_02e0.kl +64768 3238 -1 /system/usr/keylayout/Vendor_1038_Product_1412.kl +64768 3202 -1 /system/usr/keylayout/Generic.kl +64768 3215 -1 /system/usr/keylayout/Vendor_046d_Product_c21f.kl +64768 3225 -1 /system/usr/keylayout/Vendor_054c_Product_05c4_Version_8100.kl +64768 3255 -1 /system/usr/keylayout/qwerty.kl +64768 3245 -1 /system/usr/keylayout/Vendor_18d1_Product_5018.kl +64768 3210 -1 /system/usr/keylayout/Vendor_045e_Product_02fd.kl +64768 3250 -1 /system/usr/keylayout/Vendor_1bad_Product_f036.kl +64768 3230 -1 /system/usr/keylayout/Vendor_054c_Product_09cc_Version_8111.kl +64768 3254 -1 /system/usr/keylayout/Vendor_2378_Product_100a.kl +64768 3211 -1 /system/usr/keylayout/Vendor_046d_Product_b501.kl +64768 3228 -1 /system/usr/keylayout/Vendor_054c_Product_09cc_Version_8000.kl +64768 3201 -1 /system/usr/keylayout/AVRCP.kl +64768 3237 -1 /system/usr/keylayout/Vendor_0e6f_Product_02a4.kl +64768 3235 -1 /system/usr/keylayout/Vendor_05ac_Product_0239.kl +23 1492599 -1 /system/usr/keychars +64768 3199 -1 /system/usr/keychars/qwerty2.kcm +64768 3198 -1 /system/usr/keychars/qwerty.kcm +64768 3195 -1 /system/usr/keychars/Generic.kcm +64768 3196 -1 /system/usr/keychars/Vendor_18d1_Product_5018.kcm +64768 3197 -1 /system/usr/keychars/Virtual.kcm +23 31566 -1 /system/usr/hyphen-data +64768 3121 -1 /system/usr/hyphen-data/hyph-bn.hyb +64768 3118 -1 /system/usr/hyphen-data/hyph-be.lic.txt +64768 3187 -1 /system/usr/hyphen-data/hyph-und-ethi.hyb +64768 3119 -1 /system/usr/hyphen-data/hyph-bg.hyb +64768 3173 -1 /system/usr/hyphen-data/hyph-or.hyb +64768 3148 -1 /system/usr/hyphen-data/hyph-ga.lic.txt +64768 3115 -1 /system/usr/hyphen-data/hyph-as.hyb +64768 3152 -1 /system/usr/hyphen-data/hyph-hi.lic.txt +64768 3188 -1 /system/usr/hyphen-data/hyph-und-ethi.lic.txt +64768 3141 -1 /system/usr/hyphen-data/hyph-et.hyb +64768 3135 -1 /system/usr/hyphen-data/hyph-en-gb.hyb +64768 3147 -1 /system/usr/hyphen-data/hyph-ga.hyb +64768 3146 -1 /system/usr/hyphen-data/hyph-fr.lic.txt +64768 3179 -1 /system/usr/hyphen-data/hyph-sl.hyb +64768 3136 -1 /system/usr/hyphen-data/hyph-en-gb.lic.txt +64768 3120 -1 /system/usr/hyphen-data/hyph-bg.lic.txt +64768 3117 -1 /system/usr/hyphen-data/hyph-be.hyb +64768 3129 -1 /system/usr/hyphen-data/hyph-de-1901.hyb +64768 3144 -1 /system/usr/hyphen-data/hyph-eu.lic.txt +64768 3181 -1 /system/usr/hyphen-data/hyph-ta.hyb +64768 3164 -1 /system/usr/hyphen-data/hyph-ml.lic.txt +64768 3183 -1 /system/usr/hyphen-data/hyph-te.hyb +64768 3142 -1 /system/usr/hyphen-data/hyph-et.lic.txt +64768 3157 -1 /system/usr/hyphen-data/hyph-hy.hyb +64768 3175 -1 /system/usr/hyphen-data/hyph-pa.hyb +64768 3116 -1 /system/usr/hyphen-data/hyph-as.lic.txt +64768 3156 -1 /system/usr/hyphen-data/hyph-hu.lic.txt +64768 3125 -1 /system/usr/hyphen-data/hyph-cy.hyb +64768 3185 -1 /system/usr/hyphen-data/hyph-tk.hyb +64768 3154 -1 /system/usr/hyphen-data/hyph-hr.lic.txt +64768 3169 -1 /system/usr/hyphen-data/hyph-nb.hyb +64768 3127 -1 /system/usr/hyphen-data/hyph-da.hyb +64768 3171 -1 /system/usr/hyphen-data/hyph-nn.hyb +64768 3158 -1 /system/usr/hyphen-data/hyph-hy.lic.txt +64768 3145 -1 /system/usr/hyphen-data/hyph-fr.hyb +64768 3165 -1 /system/usr/hyphen-data/hyph-mn-cyrl.hyb +64768 3159 -1 /system/usr/hyphen-data/hyph-kn.hyb +64768 3161 -1 /system/usr/hyphen-data/hyph-la.hyb +64768 3155 -1 /system/usr/hyphen-data/hyph-hu.hyb +64768 3166 -1 /system/usr/hyphen-data/hyph-mn-cyrl.lic.txt +64768 3174 -1 /system/usr/hyphen-data/hyph-or.lic.txt +64768 3172 -1 /system/usr/hyphen-data/hyph-nn.lic.txt +64768 3149 -1 /system/usr/hyphen-data/hyph-gu.hyb +64768 3137 -1 /system/usr/hyphen-data/hyph-en-us.hyb +64768 3130 -1 /system/usr/hyphen-data/hyph-de-1901.lic.txt +64768 3163 -1 /system/usr/hyphen-data/hyph-ml.hyb +64768 3138 -1 /system/usr/hyphen-data/hyph-en-us.lic.txt +64768 3150 -1 /system/usr/hyphen-data/hyph-gu.lic.txt +64768 3170 -1 /system/usr/hyphen-data/hyph-nb.lic.txt +64768 3131 -1 /system/usr/hyphen-data/hyph-de-1996.hyb +64768 3140 -1 /system/usr/hyphen-data/hyph-es.lic.txt +64768 3134 -1 /system/usr/hyphen-data/hyph-de-ch-1901.lic.txt +64768 3184 -1 /system/usr/hyphen-data/hyph-te.lic.txt +64768 3180 -1 /system/usr/hyphen-data/hyph-sl.lic.txt +64768 3177 -1 /system/usr/hyphen-data/hyph-pt.hyb +64768 3178 -1 /system/usr/hyphen-data/hyph-pt.lic.txt +64768 3143 -1 /system/usr/hyphen-data/hyph-eu.hyb +64768 3162 -1 /system/usr/hyphen-data/hyph-la.lic.txt +64768 3132 -1 /system/usr/hyphen-data/hyph-de-1996.lic.txt +64768 3186 -1 /system/usr/hyphen-data/hyph-tk.lic.txt +64768 3128 -1 /system/usr/hyphen-data/hyph-da.lic.txt +64768 3123 -1 /system/usr/hyphen-data/hyph-cu.hyb +64768 3133 -1 /system/usr/hyphen-data/hyph-de-ch-1901.hyb +64768 3124 -1 /system/usr/hyphen-data/hyph-cu.lic.txt +64768 3168 -1 /system/usr/hyphen-data/hyph-mr.lic.txt +64768 3126 -1 /system/usr/hyphen-data/hyph-cy.lic.txt +64768 3139 -1 /system/usr/hyphen-data/hyph-es.hyb +64768 3122 -1 /system/usr/hyphen-data/hyph-bn.lic.txt +64768 3182 -1 /system/usr/hyphen-data/hyph-ta.lic.txt +64768 3160 -1 /system/usr/hyphen-data/hyph-kn.lic.txt +64768 3151 -1 /system/usr/hyphen-data/hyph-hi.hyb +64768 3176 -1 /system/usr/hyphen-data/hyph-pa.lic.txt +64768 3153 -1 /system/usr/hyphen-data/hyph-hr.hyb +64768 3167 -1 /system/usr/hyphen-data/hyph-mr.hyb +23 1448261 -1 /system/usr/share +23 1492642 -1 /system/usr/share/bmd +64768 3258 -1 /system/usr/share/bmd/RFFspeed_501.bmd +64768 3259 -1 /system/usr/share/bmd/RFFstd_501.bmd +23 1448262 -1 /system/usr/share/zoneinfo +64768 3262 -1 /system/usr/share/zoneinfo/tzdata +64768 3261 -1 /system/usr/share/zoneinfo/tz_version +25 19553 -1 /system/vendor +23 177181 -1 /system/app +23 1492646 -1 /system/app/GooglePrintRecommendationService +64768 107 -1 /system/app/GooglePrintRecommendationService/GooglePrintRecommendationService.apk +23 1492648 -1 /system/app/OsuLogin +64768 124 -1 /system/app/OsuLogin/OsuLogin.apk +23 180674 -1 /system/app/RcsService +64768 148 -1 /system/app/RcsService/RcsService.apk +23 1492650 -1 /system/app/vzw_msdc_api +64768 186 -1 /system/app/vzw_msdc_api/vzw_msdc_api.apk +23 1492652 -1 /system/app/LiveWallpapersPicker +64768 117 -1 /system/app/LiveWallpapersPicker/LiveWallpapersPicker.apk +23 180572 -1 /system/app/Bluetooth +64768 76 -1 /system/app/Bluetooth/Bluetooth.apk +23 1492654 -1 /system/app/Bluetooth/lib +23 1492655 -1 /system/app/Bluetooth/lib/arm64 +64768 2466 -1 /system/app/Bluetooth/lib/arm64/libbluetooth_jni.so +23 1492657 -1 /system/app/CarrierDefaultApp +64768 93 -1 /system/app/CarrierDefaultApp/CarrierDefaultApp.apk +23 1492659 -1 /system/app/CtsShimPrebuilt +64768 101 -1 /system/app/CtsShimPrebuilt/CtsShimPrebuilt.apk +23 180635 -1 /system/app/PresencePolling +64768 133 -1 /system/app/PresencePolling/PresencePolling.apk +23 1492661 -1 /system/app/PrintSpooler +64768 135 -1 /system/app/PrintSpooler/PrintSpooler.apk +23 1492663 -1 /system/app/PrintSpooler/lib +23 1492664 -1 /system/app/PrintSpooler/lib/arm64 +64768 2645 -1 /system/app/PrintSpooler/lib/arm64/libprintspooler_jni.so +23 220731 -1 /system/app/datastatusnotification +64768 168 -1 /system/app/datastatusnotification/datastatusnotification.apk +23 180745 -1 /system/app/Stk +64768 156 -1 /system/app/Stk/Stk.apk +23 180747 -1 /system/app/NfcNci +64768 119 -1 /system/app/NfcNci/NfcNci.apk +23 1492667 -1 /system/app/NfcNci/lib +23 1492668 -1 /system/app/NfcNci/lib/arm64 +64768 2632 -1 /system/app/NfcNci/lib/arm64/libnfc_nci_jni.so +23 1492670 -1 /system/app/SafetyRegulatoryInfo +64768 150 -1 /system/app/SafetyRegulatoryInfo/SafetyRegulatoryInfo.apk +23 1492672 -1 /system/app/HTMLViewer +64768 109 -1 /system/app/HTMLViewer/HTMLViewer.apk +23 1492674 -1 /system/app/PartnerBookmarksProvider +64768 131 -1 /system/app/PartnerBookmarksProvider/PartnerBookmarksProvider.apk +23 1492676 -1 /system/app/QAS_DVC_MSP +64768 140 -1 /system/app/QAS_DVC_MSP/QAS_DVC_MSP.apk +23 1492678 -1 /system/app/BookmarkProvider +64768 83 -1 /system/app/BookmarkProvider/BookmarkProvider.apk +23 1492680 -1 /system/app/Traceur +64768 158 -1 /system/app/Traceur/Traceur.apk +23 1492682 -1 /system/app/CertInstaller +64768 95 -1 /system/app/CertInstaller/CertInstaller.apk +23 1492684 -1 /system/app/ConferenceDialer +64768 99 -1 /system/app/ConferenceDialer/ConferenceDialer.apk +23 1492686 -1 /system/app/embms +64768 170 -1 /system/app/embms/embms.apk +23 1492688 -1 /system/app/radioconfig +64768 178 -1 /system/app/radioconfig/radioconfig.apk +23 1492690 -1 /system/app/CompanionDeviceManager +64768 97 -1 /system/app/CompanionDeviceManager/CompanionDeviceManager.apk +23 1492692 -1 /system/app/KeyChain +64768 111 -1 /system/app/KeyChain/KeyChain.apk +23 1492694 -1 /system/app/KeyChain/oat +23 1492695 -1 /system/app/KeyChain/oat/arm64 +64768 115 -1 /system/app/KeyChain/oat/arm64/KeyChain.vdex +64768 114 -1 /system/app/KeyChain/oat/arm64/KeyChain.odex +23 1492698 -1 /system/app/EasterEgg +64768 103 -1 /system/app/EasterEgg/EasterEgg.apk +23 180608 -1 /system/app/QTIDiagServices +64768 144 -1 /system/app/QTIDiagServices/QTIDiagServices.apk +23 1492700 -1 /system/app/PacProcessor +64768 126 -1 /system/app/PacProcessor/PacProcessor.apk +23 1492702 -1 /system/app/PacProcessor/lib +23 1492703 -1 /system/app/PacProcessor/lib/arm64 +64768 2572 -1 /system/app/PacProcessor/lib/arm64/libjni_pacprocessor.so +23 1492706 -1 /system/app/uimremoteserver +64768 184 -1 /system/app/uimremoteserver/uimremoteserver.apk +23 1492708 -1 /system/app/BuiltInPrintService +23 1492709 -1 /system/app/BuiltInPrintService/lib +23 1492710 -1 /system/app/BuiltInPrintService/lib/arm64 +64768 2497 -1 /system/app/BuiltInPrintService/lib/arm64/libcups.so +64768 2722 -1 /system/app/BuiltInPrintService/lib/arm64/libwfds.so +64768 85 -1 /system/app/BuiltInPrintService/BuiltInPrintService.apk +23 1492716 -1 /system/app/SimAppDialog +64768 154 -1 /system/app/SimAppDialog/SimAppDialog.apk +23 180788 -1 /system/app/uceShimService +64768 180 -1 /system/app/uceShimService/uceShimService.apk +23 1492718 -1 /system/app/QAS_DVC_MSP_VZW +64768 142 -1 /system/app/QAS_DVC_MSP_VZW/QAS_DVC_MSP_VZW.apk +23 1492720 -1 /system/app/CaptivePortalLogin +64768 91 -1 /system/app/CaptivePortalLogin/CaptivePortalLogin.apk +23 180738 -1 /system/app/ims +64768 172 -1 /system/app/ims/ims.apk +23 1492722 -1 /system/app/ims/lib +23 1492723 -1 /system/app/ims/lib/arm64 +64768 2562 -1 /system/app/ims/lib/arm64/libimsmedia_jni.so +64768 2561 -1 /system/app/ims/lib/arm64/libimscamera_jni.so +23 225345 -1 /system/app/atfwd +64768 166 -1 /system/app/atfwd/atfwd.apk +23 180707 -1 /system/app/SecureElement +64768 152 -1 /system/app/SecureElement/SecureElement.apk +23 1492727 -1 /system/app/WallpaperBackup +23 1492728 -1 /system/app/WallpaperBackup/oat +23 1492729 -1 /system/app/WallpaperBackup/oat/arm64 +64768 163 -1 /system/app/WallpaperBackup/oat/arm64/WallpaperBackup.odex +64768 164 -1 /system/app/WallpaperBackup/oat/arm64/WallpaperBackup.vdex +64768 160 -1 /system/app/WallpaperBackup/WallpaperBackup.apk +23 180774 -1 /system/app/QtiTelephonyService +64768 146 -1 /system/app/QtiTelephonyService/QtiTelephonyService.apk +23 1492733 -1 /system/app/uimremoteclient +64768 182 -1 /system/app/uimremoteclient/uimremoteclient.apk +23 1492735 -1 /system/app/BasicDreams +64768 74 -1 /system/app/BasicDreams/BasicDreams.apk +23 1492737 -1 /system/app/GoogleExtShared +64768 105 -1 /system/app/GoogleExtShared/GoogleExtShared.apk +23 1492739 -1 /system/app/BluetoothMidiService +64768 81 -1 /system/app/BluetoothMidiService/BluetoothMidiService.apk +23 19562 -1 /system/lib64 +64768 2264 -1 /system/lib64/android.frameworks.bufferhub@1.0.so +64768 2265 -1 /system/lib64/android.frameworks.displayservice@1.0.so +64768 2266 -1 /system/lib64/android.frameworks.schedulerservice@1.0.so +64768 2267 -1 /system/lib64/android.frameworks.sensorservice@1.0.so +64768 2268 -1 /system/lib64/android.frameworks.stats@1.0.so +64768 2269 -1 /system/lib64/android.frameworks.vr.composer@2.0.so +64768 2270 -1 /system/lib64/android.hardware.atrace@1.0.so +64768 2271 -1 /system/lib64/android.hardware.audio.common-util.so +64768 2272 -1 /system/lib64/android.hardware.audio.common@2.0-util.so +64768 2273 -1 /system/lib64/android.hardware.audio.common@2.0.so +64768 2274 -1 /system/lib64/android.hardware.audio.common@4.0-util.so +64768 2275 -1 /system/lib64/android.hardware.audio.common@4.0.so +64768 2276 -1 /system/lib64/android.hardware.audio.common@5.0-util.so +64768 2277 -1 /system/lib64/android.hardware.audio.common@5.0.so +64768 2278 -1 /system/lib64/android.hardware.audio.effect@2.0.so +64768 2279 -1 /system/lib64/android.hardware.audio.effect@4.0.so +64768 2280 -1 /system/lib64/android.hardware.audio.effect@5.0.so +64768 2281 -1 /system/lib64/android.hardware.audio@2.0.so +64768 2282 -1 /system/lib64/android.hardware.audio@4.0.so +64768 2283 -1 /system/lib64/android.hardware.audio@5.0.so +64768 2284 -1 /system/lib64/android.hardware.biometrics.fingerprint@2.1.so +64768 2285 -1 /system/lib64/android.hardware.bluetooth.a2dp@1.0.so +64768 2286 -1 /system/lib64/android.hardware.bluetooth.audio@2.0.so +64768 2287 -1 /system/lib64/android.hardware.bluetooth@1.0.so +64768 2288 -1 /system/lib64/android.hardware.boot@1.0.so +64768 2289 -1 /system/lib64/android.hardware.broadcastradio@1.0.so +64768 2290 -1 /system/lib64/android.hardware.broadcastradio@1.1.so +64768 2291 -1 /system/lib64/android.hardware.cas.native@1.0.so +64768 2292 -1 /system/lib64/android.hardware.cas@1.0.so +64768 2293 -1 /system/lib64/android.hardware.configstore-utils.so +64768 2294 -1 /system/lib64/android.hardware.configstore@1.0.so +64768 2295 -1 /system/lib64/android.hardware.configstore@1.1.so +64768 2296 -1 /system/lib64/android.hardware.confirmationui@1.0.so +64768 2297 -1 /system/lib64/android.hardware.contexthub@1.0.so +64768 2298 -1 /system/lib64/android.hardware.drm@1.0.so +64768 2299 -1 /system/lib64/android.hardware.drm@1.1.so +64768 2300 -1 /system/lib64/android.hardware.drm@1.2.so +64768 2301 -1 /system/lib64/android.hardware.dumpstate@1.0.so +64768 2302 -1 /system/lib64/android.hardware.gatekeeper@1.0.so +64768 2303 -1 /system/lib64/android.hardware.gnss.measurement_corrections@1.0.so +64768 2304 -1 /system/lib64/android.hardware.gnss.visibility_control@1.0.so +64768 2305 -1 /system/lib64/android.hardware.gnss@1.0.so +64768 2306 -1 /system/lib64/android.hardware.gnss@1.1.so +64768 2307 -1 /system/lib64/android.hardware.gnss@2.0.so +64768 2308 -1 /system/lib64/android.hardware.graphics.allocator@2.0.so +64768 2309 -1 /system/lib64/android.hardware.graphics.allocator@3.0.so +64768 2310 -1 /system/lib64/android.hardware.graphics.allocator@4.0.so +64768 2311 -1 /system/lib64/android.hardware.graphics.bufferqueue@1.0.so +64768 2312 -1 /system/lib64/android.hardware.graphics.bufferqueue@2.0.so +64768 2313 -1 /system/lib64/android.hardware.graphics.common@1.0.so +64768 2314 -1 /system/lib64/android.hardware.graphics.common@1.1.so +64768 2315 -1 /system/lib64/android.hardware.graphics.common@1.2.so +64768 2316 -1 /system/lib64/android.hardware.graphics.composer@2.1.so +64768 2317 -1 /system/lib64/android.hardware.graphics.composer@2.2.so +64768 2318 -1 /system/lib64/android.hardware.graphics.composer@2.3.so +64768 2319 -1 /system/lib64/android.hardware.graphics.composer@2.4.so +64768 2320 -1 /system/lib64/android.hardware.graphics.mapper@2.0.so +64768 2321 -1 /system/lib64/android.hardware.graphics.mapper@2.1.so +64768 2322 -1 /system/lib64/android.hardware.graphics.mapper@3.0.so +64768 2323 -1 /system/lib64/android.hardware.graphics.mapper@4.0.so +64768 2324 -1 /system/lib64/android.hardware.health.storage@1.0.so +64768 2325 -1 /system/lib64/android.hardware.health@1.0.so +64768 2326 -1 /system/lib64/android.hardware.health@2.0.so +64768 2327 -1 /system/lib64/android.hardware.input.classifier@1.0.so +64768 2328 -1 /system/lib64/android.hardware.input.common@1.0.so +64768 2329 -1 /system/lib64/android.hardware.ir@1.0.so +64768 2330 -1 /system/lib64/android.hardware.keymaster@3.0.so +64768 2331 -1 /system/lib64/android.hardware.keymaster@4.0.so +64768 2332 -1 /system/lib64/android.hardware.light@2.0.so +64768 2333 -1 /system/lib64/android.hardware.media.bufferpool@2.0.so +64768 2334 -1 /system/lib64/android.hardware.media.c2@1.0.so +64768 2335 -1 /system/lib64/android.hardware.media.omx@1.0.so +64768 2336 -1 /system/lib64/android.hardware.media@1.0.so +64768 2337 -1 /system/lib64/android.hardware.memtrack@1.0.so +64768 2338 -1 /system/lib64/android.hardware.nfc@1.0.so +64768 2339 -1 /system/lib64/android.hardware.nfc@1.1.so +64768 2340 -1 /system/lib64/android.hardware.nfc@1.2.so +64768 2341 -1 /system/lib64/android.hardware.power.stats@1.0.so +64768 2342 -1 /system/lib64/android.hardware.power@1.0.so +64768 2343 -1 /system/lib64/android.hardware.power@1.1.so +64768 2344 -1 /system/lib64/android.hardware.power@1.2.so +64768 2345 -1 /system/lib64/android.hardware.power@1.3.so +64768 2346 -1 /system/lib64/android.hardware.radio.config@1.0.so +64768 2347 -1 /system/lib64/android.hardware.radio.deprecated@1.0.so +64768 2348 -1 /system/lib64/android.hardware.radio@1.0.so +64768 2349 -1 /system/lib64/android.hardware.radio@1.1.so +64768 2350 -1 /system/lib64/android.hardware.radio@1.2.so +64768 2351 -1 /system/lib64/android.hardware.radio@1.3.so +64768 2352 -1 /system/lib64/android.hardware.radio@1.4.so +64768 2353 -1 /system/lib64/android.hardware.renderscript@1.0.so +64768 2354 -1 /system/lib64/android.hardware.secure_element@1.0.so +23 1492752 -1 /system/lib64/drm +64768 2389 -1 /system/lib64/drm/libfwdlockengine.so +64768 2355 -1 /system/lib64/android.hardware.sensors@1.0.so +64768 2356 -1 /system/lib64/android.hardware.sensors@2.0.so +64768 2357 -1 /system/lib64/android.hardware.soundtrigger@2.0.so +64768 2358 -1 /system/lib64/android.hardware.soundtrigger@2.1.so +64768 2359 -1 /system/lib64/android.hardware.soundtrigger@2.2.so +64768 2360 -1 /system/lib64/android.hardware.tetheroffload.config@1.0.so +64768 2361 -1 /system/lib64/android.hardware.thermal@1.0.so +64768 2362 -1 /system/lib64/android.hardware.tv.cec@1.0.so +64768 2363 -1 /system/lib64/android.hardware.tv.input@1.0.so +64768 2364 -1 /system/lib64/android.hardware.usb.gadget@1.0.so +64768 2365 -1 /system/lib64/android.hardware.vibrator@1.0.so +64768 2366 -1 /system/lib64/android.hardware.vibrator@1.1.so +64768 2367 -1 /system/lib64/android.hardware.vibrator@1.2.so +64768 2368 -1 /system/lib64/android.hardware.vibrator@1.3.so +64768 2369 -1 /system/lib64/android.hardware.vibrator@1.4.so +64768 2370 -1 /system/lib64/android.hardware.vr@1.0.so +64768 2371 -1 /system/lib64/android.hardware.wifi@1.0.so +64768 2372 -1 /system/lib64/android.hidl.allocator@1.0.so +64768 2373 -1 /system/lib64/android.hidl.memory.token@1.0.so +64768 2374 -1 /system/lib64/android.hidl.memory@1.0.so +64768 2375 -1 /system/lib64/android.hidl.safe_union@1.0.so +64768 2376 -1 /system/lib64/android.hidl.token@1.0-utils.so +64768 2377 -1 /system/lib64/android.hidl.token@1.0.so +64768 2378 -1 /system/lib64/android.system.net.netd@1.0.so +64768 2379 -1 /system/lib64/android.system.net.netd@1.1.so +64768 2380 -1 /system/lib64/android.system.suspend@1.0.so +64768 2381 -1 /system/lib64/android.system.wifi.keystore@1.0.so +64768 2382 -1 /system/lib64/apex_aidl_interface-cpp.so +23 19565 -1 /system/lib64/bootstrap +64768 2384 -1 /system/lib64/bootstrap/libc.so +64768 2385 -1 /system/lib64/bootstrap/libdl.so +64768 2386 -1 /system/lib64/bootstrap/libm.so +64768 2387 -1 /system/lib64/dnsresolver_aidl_interface-V2-cpp.so +64768 2390 -1 /system/lib64/gsi_aidl_interface-cpp.so +64768 2391 -1 /system/lib64/heapprofd_client.so +23 33143 -1 /system/lib64/hw +64768 2393 -1 /system/lib64/hw/android.hidl.memory@1.0-impl.so +64768 2394 -1 /system/lib64/hw/audio.a2dp.default.so +64768 2395 -1 /system/lib64/hw/audio.hearing_aid.default.so +64768 2396 -1 /system/lib64/ld-android.so +64768 2397 -1 /system/lib64/lib-imsvideocodec.so +64768 2398 -1 /system/lib64/lib-imsvt.so +64768 2399 -1 /system/lib64/lib-imsvtextutils.so +64768 2400 -1 /system/lib64/lib-imsvtutils.so +64768 2401 -1 /system/lib64/libEGL.so +64768 2402 -1 /system/lib64/libETC1.so +64768 2403 -1 /system/lib64/libFFTEm.so +64768 2404 -1 /system/lib64/libGLESv1_CM.so +64768 2405 -1 /system/lib64/libGLESv2.so +64768 2406 -1 /system/lib64/libGLESv3.so +64768 2407 -1 /system/lib64/libGPQTEEC_system.so +64768 2408 -1 /system/lib64/libGPTEE_system.so +64768 2409 -1 /system/lib64/libLLVM_android.so +64768 2410 -1 /system/lib64/libOpenMAXAL.so +64768 2411 -1 /system/lib64/libOpenSLES.so +64768 2412 -1 /system/lib64/libQTEEConnector_system.so +64768 2413 -1 /system/lib64/libRS.so +64768 2414 -1 /system/lib64/libRSCacheDir.so +64768 2415 -1 /system/lib64/libRSCpuRef.so +64768 2416 -1 /system/lib64/libRSDriver.so +64768 2417 -1 /system/lib64/libRS_internal.so +64768 2418 -1 /system/lib64/libRScpp.so +64768 2419 -1 /system/lib64/libSurfaceFlingerProp.so +64768 2420 -1 /system/lib64/libaaudio.so +64768 2421 -1 /system/lib64/libaaudio_internal.so +64768 2422 -1 /system/lib64/libaaudioservice.so +64768 2423 -1 /system/lib64/libadbd.so +64768 2424 -1 /system/lib64/libadbd_services.so +64768 2425 -1 /system/lib64/libamidi.so +64768 2426 -1 /system/lib64/libandroid.so +64768 2427 -1 /system/lib64/libandroid_net.so +64768 2428 -1 /system/lib64/libandroid_runtime.so +64768 2429 -1 /system/lib64/libandroid_runtime_lazy.so +64768 2430 -1 /system/lib64/libandroid_servers.so +64768 2431 -1 /system/lib64/libandroidfw.so +64768 2432 -1 /system/lib64/libappfuse.so +64768 2433 -1 /system/lib64/libartpalette-system.so +64768 2434 -1 /system/lib64/libasyncio.so +64768 2435 -1 /system/lib64/libaudio-resampler.so +64768 2436 -1 /system/lib64/libaudioclient.so +64768 2437 -1 /system/lib64/libaudioeffect_jni.so +64768 2438 -1 /system/lib64/libaudioflinger.so +64768 2439 -1 /system/lib64/libaudiofoundation.so +64768 2440 -1 /system/lib64/libaudiohal.so +64768 2441 -1 /system/lib64/libaudiohal@2.0.so +64768 2442 -1 /system/lib64/libaudiohal@4.0.so +64768 2443 -1 /system/lib64/libaudiohal@5.0.so +64768 2444 -1 /system/lib64/libaudiohal_deathhandler.so +64768 2445 -1 /system/lib64/libaudiomanager.so +64768 2446 -1 /system/lib64/libaudiopolicy.so +64768 2447 -1 /system/lib64/libaudiopolicyenginedefault.so +64768 2448 -1 /system/lib64/libaudiopolicymanager.so +64768 2449 -1 /system/lib64/libaudiopolicymanagerdefault.so +64768 2450 -1 /system/lib64/libaudiopolicyservice.so +64768 2451 -1 /system/lib64/libaudioprocessing.so +64768 2452 -1 /system/lib64/libaudiospdif.so +64768 2453 -1 /system/lib64/libaudioutils.so +64768 2454 -1 /system/lib64/libavservices_minijail.so +64768 2455 -1 /system/lib64/libbacktrace.so +64768 2456 -1 /system/lib64/libbase.so +64768 2457 -1 /system/lib64/libbcc.so +64768 2458 -1 /system/lib64/libbcinfo.so +64768 2459 -1 /system/lib64/libbinder.so +64768 2460 -1 /system/lib64/libbinder_ndk.so +64768 2461 -1 /system/lib64/libbinderthreadstate.so +64768 2462 -1 /system/lib64/libbinderwrapper.so +64768 2463 -1 /system/lib64/libblas.so +64768 2464 -1 /system/lib64/libbluetooth-binder.so +64768 2465 -1 /system/lib64/libbluetooth.so +64768 2466 -1 /system/lib64/libbluetooth_jni.so +64768 2467 -1 /system/lib64/libbootanimation.so +64768 2468 -1 /system/lib64/libbootloader_message.so +64768 2469 -1 /system/lib64/libbpf.so +64768 2470 -1 /system/lib64/libbpf_android.so +64768 2471 -1 /system/lib64/libbrillo-binder.so +64768 2472 -1 /system/lib64/libbrillo-stream.so +64768 2473 -1 /system/lib64/libbrillo.so +64768 2474 -1 /system/lib64/libbufferhub.so +64768 2475 -1 /system/lib64/libbufferhubqueue.so +64768 2476 -1 /system/lib64/libc++.so +1888 34 -1 /system/lib64/libc.so +64768 2478 -1 /system/lib64/libc_scudo.so +64768 2479 -1 /system/lib64/libcamera2ndk.so +64768 2480 -1 /system/lib64/libcamera_client.so +64768 2481 -1 /system/lib64/libcamera_metadata.so +64768 2482 -1 /system/lib64/libcap.so +64768 2483 -1 /system/lib64/libcgrouprc.so +64768 2484 -1 /system/lib64/libchrome.so +64768 2485 -1 /system/lib64/libclang_rt.asan-aarch64-android.so +64768 2486 -1 /system/lib64/libclcore.bc +64768 2487 -1 /system/lib64/libclcore_debug.bc +64768 2488 -1 /system/lib64/libclcore_debug_g.bc +64768 2489 -1 /system/lib64/libclcore_g.bc +64768 2490 -1 /system/lib64/libcodec2.so +64768 2491 -1 /system/lib64/libcodec2_client.so +64768 2492 -1 /system/lib64/libcodec2_hidl_client@1.0.so +64768 2493 -1 /system/lib64/libcodec2_vndk.so +64768 2494 -1 /system/lib64/libcompiler_rt.so +64768 2495 -1 /system/lib64/libcrypto.so +64768 2496 -1 /system/lib64/libcrypto_utils.so +64768 2497 -1 /system/lib64/libcups.so +64768 2498 -1 /system/lib64/libcurl.so +64768 2499 -1 /system/lib64/libcutils.so +64768 2500 -1 /system/lib64/libdatasource.so +64768 2501 -1 /system/lib64/libdebuggerd_client.so +64768 2502 -1 /system/lib64/libdepthphoto.so +64768 2503 -1 /system/lib64/libdexfile_support.so +64768 2504 -1 /system/lib64/libdiskconfig.so +64768 2505 -1 /system/lib64/libdisplayservicehidl.so +1888 35 -1 /system/lib64/libdl.so +64768 2507 -1 /system/lib64/libdl_android.so +64768 2508 -1 /system/lib64/libdng_sdk.so +64768 2509 -1 /system/lib64/libdrm.so +64768 2510 -1 /system/lib64/libdrmframework.so +64768 2511 -1 /system/lib64/libdrmframework_jni.so +64768 2512 -1 /system/lib64/libdumpstateaidl.so +64768 2513 -1 /system/lib64/libdumpstateutil.so +64768 2514 -1 /system/lib64/libdumputils.so +64768 2515 -1 /system/lib64/libdynamic_depth.so +64768 2516 -1 /system/lib64/libeffectsconfig.so +64768 2517 -1 /system/lib64/libevent.so +64768 2518 -1 /system/lib64/libexif.so +64768 2519 -1 /system/lib64/libexpat.so +64768 2520 -1 /system/lib64/libext2_blkid.so +64768 2521 -1 /system/lib64/libext2_com_err.so +64768 2522 -1 /system/lib64/libext2_e2p.so +64768 2523 -1 /system/lib64/libext2_misc.so +64768 2524 -1 /system/lib64/libext2_quota.so +64768 2525 -1 /system/lib64/libext2_uuid.so +64768 2526 -1 /system/lib64/libext2fs.so +64768 2527 -1 /system/lib64/libext4_utils.so +64768 2528 -1 /system/lib64/libf2fs_sparseblock.so +64768 2529 -1 /system/lib64/libfec.so +64768 2530 -1 /system/lib64/libfilterfw.so +64768 2531 -1 /system/lib64/libfilterpack_imageproc.so +64768 2532 -1 /system/lib64/libfmq.so +64768 2533 -1 /system/lib64/libfruit.so +64768 2534 -1 /system/lib64/libfs_mgr.so +64768 2535 -1 /system/lib64/libfscrypt.so +64768 2536 -1 /system/lib64/libft2.so +64768 2537 -1 /system/lib64/libfuse.so +64768 2538 -1 /system/lib64/libfuse_jni.so +64768 2539 -1 /system/lib64/libgatekeeper.so +64768 2540 -1 /system/lib64/libgatekeeper_aidl.so +64768 2541 -1 /system/lib64/libgraphicsenv.so +64768 2542 -1 /system/lib64/libgsi.so +64768 2543 -1 /system/lib64/libgtest_prod.so +64768 2544 -1 /system/lib64/libgui.so +64768 2545 -1 /system/lib64/libhardware.so +64768 2546 -1 /system/lib64/libhardware_legacy.so +64768 2547 -1 /system/lib64/libharfbuzz_ng.so +64768 2548 -1 /system/lib64/libheif.so +64768 2549 -1 /system/lib64/libhidcommand_jni.so +64768 2550 -1 /system/lib64/libhidl-gen-hash.so +64768 2551 -1 /system/lib64/libhidl-gen-utils.so +64768 2552 -1 /system/lib64/libhidlallocatorutils.so +64768 2553 -1 /system/lib64/libhidlbase.so +64768 2554 -1 /system/lib64/libhidlmemory.so +64768 2555 -1 /system/lib64/libhidltransport.so +64768 2556 -1 /system/lib64/libhwbinder.so +64768 2557 -1 /system/lib64/libhwui.so +64768 2558 -1 /system/lib64/libidmap2.so +64768 2559 -1 /system/lib64/libimage_io.so +64768 2560 -1 /system/lib64/libimg_utils.so +64768 2561 -1 /system/lib64/libimscamera_jni.so +64768 2562 -1 /system/lib64/libimsmedia_jni.so +64768 2563 -1 /system/lib64/libincident.so +64768 2564 -1 /system/lib64/libinput.so +64768 2565 -1 /system/lib64/libinputflinger.so +64768 2566 -1 /system/lib64/libinputflinger_base.so +64768 2567 -1 /system/lib64/libinputreader.so +64768 2568 -1 /system/lib64/libinputreporter.so +64768 2569 -1 /system/lib64/libinputservice.so +64768 2570 -1 /system/lib64/libion.so +64768 2571 -1 /system/lib64/libiprouteutil.so +64768 2572 -1 /system/lib64/libjni_pacprocessor.so +64768 2573 -1 /system/lib64/libjnigraphics.so +64768 2574 -1 /system/lib64/libjpeg.so +64768 2575 -1 /system/lib64/libjsoncpp.so +64768 2576 -1 /system/lib64/libkeymaster4support.so +64768 2577 -1 /system/lib64/libkeymaster_messages.so +64768 2578 -1 /system/lib64/libkeymaster_portable.so +64768 2579 -1 /system/lib64/libkeystore-engine.so +64768 2580 -1 /system/lib64/libkeystore_aidl.so +64768 2581 -1 /system/lib64/libkeystore_binder.so +64768 2582 -1 /system/lib64/libkeystore_parcelables.so +64768 2583 -1 /system/lib64/libkeyutils.so +64768 2584 -1 /system/lib64/liblayers_proto.so +64768 2585 -1 /system/lib64/libldacBT_abr.so +64768 2586 -1 /system/lib64/libldacBT_enc.so +64768 2587 -1 /system/lib64/liblockagent.so +64768 2588 -1 /system/lib64/liblog.so +64768 2589 -1 /system/lib64/liblogwrap.so +64768 2590 -1 /system/lib64/liblp.so +64768 2591 -1 /system/lib64/liblpdump.so +64768 2592 -1 /system/lib64/liblpdump_interface-cpp.so +64768 2593 -1 /system/lib64/liblz4.so +64768 2594 -1 /system/lib64/liblzma.so +1888 36 -1 /system/lib64/libm.so +64768 2596 -1 /system/lib64/libmdnssd.so +64768 2597 -1 /system/lib64/libmedia.so +64768 2598 -1 /system/lib64/libmedia_codeclist.so +64768 2599 -1 /system/lib64/libmedia_helper.so +64768 2600 -1 /system/lib64/libmedia_jni.so +64768 2601 -1 /system/lib64/libmedia_jni_utils.so +64768 2602 -1 /system/lib64/libmedia_omx.so +64768 2603 -1 /system/lib64/libmedia_omx_client.so +64768 2604 -1 /system/lib64/libmediadrm.so +64768 2605 -1 /system/lib64/libmediadrmmetrics_lite.so +64768 2606 -1 /system/lib64/libmediaextractorservice.so +64768 2607 -1 /system/lib64/libmedialogservice.so +64768 2608 -1 /system/lib64/libmediametrics.so +64768 2609 -1 /system/lib64/libmediandk.so +64768 2610 -1 /system/lib64/libmediandk_utils.so +64768 2611 -1 /system/lib64/libmediautils.so +64768 2612 -1 /system/lib64/libmeminfo.so +64768 2613 -1 /system/lib64/libmemtrack.so +64768 2614 -1 /system/lib64/libmemunreachable.so +64768 2615 -1 /system/lib64/libmetricslogger.so +64768 2616 -1 /system/lib64/libminijail.so +64768 2617 -1 /system/lib64/libminikin.so +64768 2618 -1 /system/lib64/libminui.so +64768 2619 -1 /system/lib64/libmtp.so +64768 2620 -1 /system/lib64/libnativebridge_lazy.so +64768 2621 -1 /system/lib64/libnativeloader_lazy.so +64768 2622 -1 /system/lib64/libnativewindow.so +64768 2623 -1 /system/lib64/libnbaio.so +64768 2624 -1 /system/lib64/libnblog.so +64768 2625 -1 /system/lib64/libnetd_client.so +64768 2626 -1 /system/lib64/libnetdbpf.so +64768 2627 -1 /system/lib64/libnetdutils.so +64768 2628 -1 /system/lib64/libnetlink.so +64768 2629 -1 /system/lib64/libnetutils.so +64768 2630 -1 /system/lib64/libneuralnetworks_packageinfo.so +64768 2631 -1 /system/lib64/libnfc-nci.so +64768 2632 -1 /system/lib64/libnfc_nci_jni.so +64768 2633 -1 /system/lib64/libnl.so +64768 2634 -1 /system/lib64/libpackagelistparser.so +64768 2635 -1 /system/lib64/libpcap.so +64768 2636 -1 /system/lib64/libpcre2.so +64768 2637 -1 /system/lib64/libpdfium.so +64768 2638 -1 /system/lib64/libpdx_default_transport.so +64768 2639 -1 /system/lib64/libperfetto.so +64768 2640 -1 /system/lib64/libperfetto_android_internal.so +64768 2641 -1 /system/lib64/libpiex.so +64768 2642 -1 /system/lib64/libpng.so +64768 2643 -1 /system/lib64/libpower.so +64768 2644 -1 /system/lib64/libpowermanager.so +64768 2645 -1 /system/lib64/libprintspooler_jni.so +64768 2646 -1 /system/lib64/libprocessgroup.so +64768 2647 -1 /system/lib64/libprocessgroup_setup.so +64768 2648 -1 /system/lib64/libprocinfo.so +64768 2649 -1 /system/lib64/libprotobuf-cpp-full.so +64768 2650 -1 /system/lib64/libprotobuf-cpp-lite.so +64768 2651 -1 /system/lib64/libprotoutil.so +64768 2652 -1 /system/lib64/libpsi.so +64768 2653 -1 /system/lib64/libqcbor_system.so +64768 2654 -1 /system/lib64/libqtaguid.so +64768 2655 -1 /system/lib64/libradio_metadata.so +64768 2656 -1 /system/lib64/librcc.so +64768 2657 -1 /system/lib64/librs_jni.so +64768 2658 -1 /system/lib64/librtp_jni.so +64768 2659 -1 /system/lib64/libsanitizer-status.so +64768 2660 -1 /system/lib64/libschedulerservicehidl.so +64768 2661 -1 /system/lib64/libscudo_wrapper.so +64768 2662 -1 /system/lib64/libsdm-disp-apis.so +64768 2663 -1 /system/lib64/libseccam.so +64768 2664 -1 /system/lib64/libsecureui_svcsock_system.so +64768 2665 -1 /system/lib64/libselinux.so +64768 2666 -1 /system/lib64/libsensor.so +64768 2667 -1 /system/lib64/libsensorprivacy.so +64768 2668 -1 /system/lib64/libsensorservice.so +64768 2669 -1 /system/lib64/libsensorservicehidl.so +64768 2670 -1 /system/lib64/libservices.so +64768 2671 -1 /system/lib64/libsfplugin_ccodec.so +64768 2672 -1 /system/lib64/libsfplugin_ccodec_utils.so +64768 2673 -1 /system/lib64/libsmcinvokecred.so +64768 2674 -1 /system/lib64/libsns_fastRPC_util.so +64768 2675 -1 /system/lib64/libsoftkeymasterdevice.so +64768 2676 -1 /system/lib64/libsonic.so +64768 2677 -1 /system/lib64/libsonivox.so +64768 2678 -1 /system/lib64/libsoundpool.so +64768 2679 -1 /system/lib64/libsoundtrigger.so +64768 2680 -1 /system/lib64/libsoundtriggerservice.so +64768 2681 -1 /system/lib64/libsparse.so +64768 2682 -1 /system/lib64/libspeexresampler.so +64768 2683 -1 /system/lib64/libsqlite.so +64768 2684 -1 /system/lib64/libsquashfs_utils.so +64768 2685 -1 /system/lib64/libssl.so +64768 2686 -1 /system/lib64/libstagefright.so +64768 2687 -1 /system/lib64/libstagefright_amrnb_common.so +64768 2688 -1 /system/lib64/libstagefright_bufferpool@2.0.1.so +64768 2689 -1 /system/lib64/libstagefright_bufferqueue_helper.so +64768 2690 -1 /system/lib64/libstagefright_codecbase.so +64768 2691 -1 /system/lib64/libstagefright_foundation.so +64768 2692 -1 /system/lib64/libstagefright_http_support.so +64768 2693 -1 /system/lib64/libstagefright_omx.so +64768 2694 -1 /system/lib64/libstagefright_omx_utils.so +64768 2695 -1 /system/lib64/libstagefright_xmlparser.so +64768 2696 -1 /system/lib64/libstatslog.so +64768 2697 -1 /system/lib64/libstatssocket.so +64768 2698 -1 /system/lib64/libstdc++.so +64768 2699 -1 /system/lib64/libsurfaceflinger.so +64768 2700 -1 /system/lib64/libsuspend.so +64768 2701 -1 /system/lib64/libsync.so +64768 2702 -1 /system/lib64/libsysutils.so +64768 2703 -1 /system/lib64/libtextclassifier.so +64768 2704 -1 /system/lib64/libtextclassifier_hash.so +64768 2705 -1 /system/lib64/libtflite.so +64768 2706 -1 /system/lib64/libtimestats_proto.so +64768 2707 -1 /system/lib64/libtinyalsa.so +64768 2708 -1 /system/lib64/libtinyxml2.so +64768 2709 -1 /system/lib64/libtombstoned_client.so +64768 2710 -1 /system/lib64/libtzcom.so +64768 2711 -1 /system/lib64/libui.so +64768 2712 -1 /system/lib64/libunwindstack.so +64768 2713 -1 /system/lib64/libusbhost.so +64768 2714 -1 /system/lib64/libutils.so +64768 2715 -1 /system/lib64/libutilscallstack.so +64768 2716 -1 /system/lib64/libvibrator.so +64768 2717 -1 /system/lib64/libvintf.so +64768 2718 -1 /system/lib64/libvndksupport.so +64768 2719 -1 /system/lib64/libvulkan.so +64768 2720 -1 /system/lib64/libwebviewchromium_loader.so +64768 2721 -1 /system/lib64/libwebviewchromium_plat_support.so +64768 2722 -1 /system/lib64/libwfds.so +64768 2723 -1 /system/lib64/libwifi-jni.so +64768 2724 -1 /system/lib64/libwifi-system-iface.so +64768 2725 -1 /system/lib64/libwifikeystorehal.so +64768 2726 -1 /system/lib64/libwilhelm.so +64768 2727 -1 /system/lib64/libxml2.so +64768 2728 -1 /system/lib64/libz.so +64768 2729 -1 /system/lib64/libziparchive.so +64768 2730 -1 /system/lib64/netd_aidl_interface-V2-cpp.so +64768 2731 -1 /system/lib64/netd_aidl_interface-cpp.so +64768 2732 -1 /system/lib64/netd_event_listener_interface-V1-cpp.so +64768 2733 -1 /system/lib64/netd_event_listener_interface-cpp.so +64768 2734 -1 /system/lib64/oemnetd_aidl_interface-cpp.so +64768 2735 -1 /system/lib64/pppol2tp-android.so +64768 2736 -1 /system/lib64/pppopptp-android.so +64768 2737 -1 /system/lib64/server_configurable_flags.so +64768 2738 -1 /system/lib64/slicer.so +64768 2739 -1 /system/lib64/suspend_control_aidl_interface-cpp.so +23 16903 -1 /system/lib64/vndk-R +64768 2741 -1 /system/lib64/vndk-R/android.frameworks.cameraservice.common@2.0.so +64768 2742 -1 /system/lib64/vndk-R/android.frameworks.cameraservice.device@2.0.so +64768 2743 -1 /system/lib64/vndk-R/android.frameworks.cameraservice.service@2.0.so +64768 2744 -1 /system/lib64/vndk-R/android.frameworks.displayservice@1.0.so +64768 2745 -1 /system/lib64/vndk-R/android.frameworks.schedulerservice@1.0.so +64768 2746 -1 /system/lib64/vndk-R/android.frameworks.sensorservice@1.0.so +64768 2747 -1 /system/lib64/vndk-R/android.frameworks.stats@1.0.so +64768 2748 -1 /system/lib64/vndk-R/android.hardware.atrace@1.0.so +64768 2749 -1 /system/lib64/vndk-R/android.hardware.audio.common@2.0.so +64768 2750 -1 /system/lib64/vndk-R/android.hardware.audio.common@4.0.so +64768 2751 -1 /system/lib64/vndk-R/android.hardware.audio.common@5.0.so +64768 2752 -1 /system/lib64/vndk-R/android.hardware.audio.effect@2.0.so +64768 2753 -1 /system/lib64/vndk-R/android.hardware.audio.effect@4.0.so +64768 2754 -1 /system/lib64/vndk-R/android.hardware.audio.effect@5.0.so +64768 2755 -1 /system/lib64/vndk-R/android.hardware.audio@2.0.so +64768 2756 -1 /system/lib64/vndk-R/android.hardware.audio@4.0.so +64768 2757 -1 /system/lib64/vndk-R/android.hardware.audio@5.0.so +64768 2758 -1 /system/lib64/vndk-R/android.hardware.authsecret@1.0.so +64768 2759 -1 /system/lib64/vndk-R/android.hardware.automotive.audiocontrol@1.0.so +64768 2760 -1 /system/lib64/vndk-R/android.hardware.automotive.can@1.0.so +64768 2761 -1 /system/lib64/vndk-R/android.hardware.automotive.evs@1.0.so +64768 2762 -1 /system/lib64/vndk-R/android.hardware.automotive.evs@1.1.so +64768 2763 -1 /system/lib64/vndk-R/android.hardware.automotive.vehicle@2.0.so +64768 2764 -1 /system/lib64/vndk-R/android.hardware.biometrics.face@1.0.so +64768 2765 -1 /system/lib64/vndk-R/android.hardware.biometrics.fingerprint@2.1.so +64768 2766 -1 /system/lib64/vndk-R/android.hardware.bluetooth.a2dp@1.0.so +64768 2767 -1 /system/lib64/vndk-R/android.hardware.bluetooth.audio@2.0.so +64768 2768 -1 /system/lib64/vndk-R/android.hardware.bluetooth@1.0.so +64768 2769 -1 /system/lib64/vndk-R/android.hardware.boot@1.0.so +64768 2770 -1 /system/lib64/vndk-R/android.hardware.boot@1.1.so +64768 2771 -1 /system/lib64/vndk-R/android.hardware.broadcastradio@1.0.so +64768 2772 -1 /system/lib64/vndk-R/android.hardware.broadcastradio@1.1.so +64768 2773 -1 /system/lib64/vndk-R/android.hardware.broadcastradio@2.0.so +64768 2774 -1 /system/lib64/vndk-R/android.hardware.camera.common@1.0.so +64768 2775 -1 /system/lib64/vndk-R/android.hardware.camera.device@1.0.so +64768 2776 -1 /system/lib64/vndk-R/android.hardware.camera.device@3.2.so +64768 2777 -1 /system/lib64/vndk-R/android.hardware.camera.device@3.3.so +64768 2778 -1 /system/lib64/vndk-R/android.hardware.camera.device@3.4.so +64768 2779 -1 /system/lib64/vndk-R/android.hardware.camera.device@3.5.so +64768 2780 -1 /system/lib64/vndk-R/android.hardware.camera.metadata@3.2.so +64768 2781 -1 /system/lib64/vndk-R/android.hardware.camera.metadata@3.3.so +64768 2782 -1 /system/lib64/vndk-R/android.hardware.camera.metadata@3.4.so +64768 2783 -1 /system/lib64/vndk-R/android.hardware.camera.metadata@3.5.so +64768 2784 -1 /system/lib64/vndk-R/android.hardware.camera.provider@2.4.so +64768 2785 -1 /system/lib64/vndk-R/android.hardware.camera.provider@2.5.so +64768 2786 -1 /system/lib64/vndk-R/android.hardware.cas.native@1.0.so +64768 2787 -1 /system/lib64/vndk-R/android.hardware.cas@1.0.so +64768 2788 -1 /system/lib64/vndk-R/android.hardware.cas@1.1.so +64768 2789 -1 /system/lib64/vndk-R/android.hardware.configstore-utils.so +64768 2790 -1 /system/lib64/vndk-R/android.hardware.configstore@1.0.so +64768 2791 -1 /system/lib64/vndk-R/android.hardware.configstore@1.1.so +64768 2792 -1 /system/lib64/vndk-R/android.hardware.confirmationui-support-lib.so +64768 2793 -1 /system/lib64/vndk-R/android.hardware.confirmationui@1.0.so +64768 2794 -1 /system/lib64/vndk-R/android.hardware.contexthub@1.0.so +64768 2795 -1 /system/lib64/vndk-R/android.hardware.drm@1.0.so +64768 2796 -1 /system/lib64/vndk-R/android.hardware.drm@1.1.so +64768 2797 -1 /system/lib64/vndk-R/android.hardware.drm@1.2.so +64768 2798 -1 /system/lib64/vndk-R/android.hardware.dumpstate@1.0.so +64768 2799 -1 /system/lib64/vndk-R/android.hardware.fastboot@1.0.so +64768 2800 -1 /system/lib64/vndk-R/android.hardware.gatekeeper@1.0.so +64768 2801 -1 /system/lib64/vndk-R/android.hardware.gnss.measurement_corrections@1.0.so +64768 2802 -1 /system/lib64/vndk-R/android.hardware.gnss.visibility_control@1.0.so +64768 2803 -1 /system/lib64/vndk-R/android.hardware.gnss@1.0.so +64768 2804 -1 /system/lib64/vndk-R/android.hardware.gnss@1.1.so +64768 2805 -1 /system/lib64/vndk-R/android.hardware.gnss@2.0.so +64768 2806 -1 /system/lib64/vndk-R/android.hardware.graphics.allocator@2.0.so +64768 2807 -1 /system/lib64/vndk-R/android.hardware.graphics.allocator@3.0.so +64768 2808 -1 /system/lib64/vndk-R/android.hardware.graphics.allocator@4.0.so +64768 2809 -1 /system/lib64/vndk-R/android.hardware.graphics.bufferqueue@1.0.so +64768 2810 -1 /system/lib64/vndk-R/android.hardware.graphics.bufferqueue@2.0.so +64768 2811 -1 /system/lib64/vndk-R/android.hardware.graphics.composer@2.1.so +64768 2812 -1 /system/lib64/vndk-R/android.hardware.graphics.composer@2.2.so +64768 2813 -1 /system/lib64/vndk-R/android.hardware.graphics.composer@2.3.so +64768 2814 -1 /system/lib64/vndk-R/android.hardware.graphics.composer@2.4.so +64768 2815 -1 /system/lib64/vndk-R/android.hardware.health.storage@1.0.so +64768 2816 -1 /system/lib64/vndk-R/android.hardware.health@1.0.so +64768 2817 -1 /system/lib64/vndk-R/android.hardware.health@2.0.so +64768 2818 -1 /system/lib64/vndk-R/android.hardware.input.classifier@1.0.so +64768 2819 -1 /system/lib64/vndk-R/android.hardware.input.common@1.0.so +64768 2820 -1 /system/lib64/vndk-R/android.hardware.ir@1.0.so +64768 2821 -1 /system/lib64/vndk-R/android.hardware.keymaster@3.0.so +64768 2822 -1 /system/lib64/vndk-R/android.hardware.keymaster@4.0.so +64768 2823 -1 /system/lib64/vndk-R/android.hardware.light@2.0.so +64768 2824 -1 /system/lib64/vndk-R/android.hardware.media.bufferpool@1.0.so +64768 2825 -1 /system/lib64/vndk-R/android.hardware.media.bufferpool@2.0.so +64768 2826 -1 /system/lib64/vndk-R/android.hardware.media.c2@1.0.so +64768 2827 -1 /system/lib64/vndk-R/android.hardware.media.omx@1.0.so +64768 2828 -1 /system/lib64/vndk-R/android.hardware.media@1.0.so +64768 2900 -1 /system/lib64/vndk-R/libadf.so +64768 2829 -1 /system/lib64/vndk-R/android.hardware.memtrack@1.0.so +64768 2830 -1 /system/lib64/vndk-R/android.hardware.neuralnetworks@1.0.so +64768 2831 -1 /system/lib64/vndk-R/android.hardware.neuralnetworks@1.1.so +64768 2832 -1 /system/lib64/vndk-R/android.hardware.neuralnetworks@1.2.so +64768 2833 -1 /system/lib64/vndk-R/android.hardware.neuralnetworks@1.3.so +64768 2834 -1 /system/lib64/vndk-R/android.hardware.nfc@1.0.so +64768 2835 -1 /system/lib64/vndk-R/android.hardware.nfc@1.1.so +64768 2836 -1 /system/lib64/vndk-R/android.hardware.nfc@1.2.so +64768 2837 -1 /system/lib64/vndk-R/android.hardware.oemlock@1.0.so +64768 2838 -1 /system/lib64/vndk-R/android.hardware.power.stats@1.0.so +64768 2839 -1 /system/lib64/vndk-R/android.hardware.power@1.0.so +64768 2840 -1 /system/lib64/vndk-R/android.hardware.power@1.1.so +64768 2841 -1 /system/lib64/vndk-R/android.hardware.power@1.2.so +64768 2842 -1 /system/lib64/vndk-R/android.hardware.power@1.3.so +64768 2843 -1 /system/lib64/vndk-R/android.hardware.radio.config@1.0.so +64768 2844 -1 /system/lib64/vndk-R/android.hardware.radio.config@1.1.so +64768 2845 -1 /system/lib64/vndk-R/android.hardware.radio.config@1.2.so +64768 2846 -1 /system/lib64/vndk-R/android.hardware.radio.deprecated@1.0.so +64768 2847 -1 /system/lib64/vndk-R/android.hardware.radio@1.0.so +64768 2848 -1 /system/lib64/vndk-R/android.hardware.radio@1.1.so +64768 2849 -1 /system/lib64/vndk-R/android.hardware.radio@1.2.so +64768 2850 -1 /system/lib64/vndk-R/android.hardware.radio@1.3.so +64768 2851 -1 /system/lib64/vndk-R/android.hardware.radio@1.4.so +64768 2852 -1 /system/lib64/vndk-R/android.hardware.secure_element@1.0.so +64768 2853 -1 /system/lib64/vndk-R/android.hardware.secure_element@1.1.so +64768 2854 -1 /system/lib64/vndk-R/android.hardware.sensors@1.0.so +64768 2855 -1 /system/lib64/vndk-R/android.hardware.sensors@2.0.so +64768 2856 -1 /system/lib64/vndk-R/android.hardware.soundtrigger@2.0-core.so +64768 2857 -1 /system/lib64/vndk-R/android.hardware.soundtrigger@2.0.so +64768 2858 -1 /system/lib64/vndk-R/android.hardware.soundtrigger@2.1.so +64768 2859 -1 /system/lib64/vndk-R/android.hardware.soundtrigger@2.2.so +64768 2860 -1 /system/lib64/vndk-R/android.hardware.tetheroffload.config@1.0.so +64768 2861 -1 /system/lib64/vndk-R/android.hardware.tetheroffload.control@1.0.so +64768 2862 -1 /system/lib64/vndk-R/android.hardware.thermal@1.0.so +64768 2863 -1 /system/lib64/vndk-R/android.hardware.thermal@1.1.so +64768 2864 -1 /system/lib64/vndk-R/android.hardware.thermal@2.0.so +64768 2865 -1 /system/lib64/vndk-R/android.hardware.tv.cec@1.0.so +64768 2866 -1 /system/lib64/vndk-R/android.hardware.tv.cec@2.0.so +64768 2867 -1 /system/lib64/vndk-R/android.hardware.tv.input@1.0.so +64768 2868 -1 /system/lib64/vndk-R/android.hardware.tv.tuner@1.0.so +64768 2869 -1 /system/lib64/vndk-R/android.hardware.usb.gadget@1.0.so +64768 2870 -1 /system/lib64/vndk-R/android.hardware.usb@1.0.so +64768 2871 -1 /system/lib64/vndk-R/android.hardware.usb@1.1.so +64768 2872 -1 /system/lib64/vndk-R/android.hardware.usb@1.2.so +64768 2873 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.0.so +64768 2874 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.1.so +64768 2875 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.2.so +64768 2876 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.3.so +64768 2877 -1 /system/lib64/vndk-R/android.hardware.vibrator@1.4.so +64768 2878 -1 /system/lib64/vndk-R/android.hardware.vr@1.0.so +64768 2879 -1 /system/lib64/vndk-R/android.hardware.weaver@1.0.so +64768 2880 -1 /system/lib64/vndk-R/android.hardware.wifi.hostapd@1.0.so +64768 2881 -1 /system/lib64/vndk-R/android.hardware.wifi.hostapd@1.1.so +64768 2882 -1 /system/lib64/vndk-R/android.hardware.wifi.offload@1.0.so +64768 2883 -1 /system/lib64/vndk-R/android.hardware.wifi.supplicant@1.0.so +64768 2884 -1 /system/lib64/vndk-R/android.hardware.wifi.supplicant@1.1.so +64768 2885 -1 /system/lib64/vndk-R/android.hardware.wifi.supplicant@1.2.so +64768 2886 -1 /system/lib64/vndk-R/android.hardware.wifi.supplicant@1.3.so +64768 2887 -1 /system/lib64/vndk-R/android.hardware.wifi@1.0.so +64768 2888 -1 /system/lib64/vndk-R/android.hardware.wifi@1.1.so +64768 2889 -1 /system/lib64/vndk-R/android.hardware.wifi@1.2.so +64768 2890 -1 /system/lib64/vndk-R/android.hardware.wifi@1.3.so +64768 2891 -1 /system/lib64/vndk-R/android.hardware.wifi@1.4.so +64768 2892 -1 /system/lib64/vndk-R/android.hidl.allocator@1.0.so +64768 2893 -1 /system/lib64/vndk-R/android.hidl.memory.block@1.0.so +64768 2894 -1 /system/lib64/vndk-R/android.hidl.token@1.0-utils.so +64768 2895 -1 /system/lib64/vndk-R/android.hidl.token@1.0.so +64768 2896 -1 /system/lib64/vndk-R/android.system.net.netd@1.0.so +64768 2897 -1 /system/lib64/vndk-R/android.system.net.netd@1.1.so +64768 2898 -1 /system/lib64/vndk-R/android.system.suspend@1.0.so +64768 2899 -1 /system/lib64/vndk-R/android.system.wifi.keystore@1.0.so +64768 2901 -1 /system/lib64/vndk-R/libaudioroute.so +64768 2902 -1 /system/lib64/vndk-R/libaudioutils.so +64768 2903 -1 /system/lib64/vndk-R/libbinder.so +64768 2904 -1 /system/lib64/vndk-R/libcamera_metadata.so +64768 2905 -1 /system/lib64/vndk-R/libcap.so +64768 2906 -1 /system/lib64/vndk-R/libclang_rt.scudo-aarch64-android.so +64768 2907 -1 /system/lib64/vndk-R/libclang_rt.scudo_minimal-aarch64-android.so +64768 2908 -1 /system/lib64/vndk-R/libclang_rt.ubsan_standalone-aarch64-android.so +64768 2909 -1 /system/lib64/vndk-R/libcn-cbor.so +64768 2910 -1 /system/lib64/vndk-R/libcodec2.so +64768 2911 -1 /system/lib64/vndk-R/libcrypto.so +64768 2912 -1 /system/lib64/vndk-R/libcrypto_utils.so +64768 2913 -1 /system/lib64/vndk-R/libcurl.so +64768 2914 -1 /system/lib64/vndk-R/libdiskconfig.so +64768 2915 -1 /system/lib64/vndk-R/libdumpstateutil.so +64768 2916 -1 /system/lib64/vndk-R/libevent.so +64768 2917 -1 /system/lib64/vndk-R/libexif.so +64768 2918 -1 /system/lib64/vndk-R/libexpat.so +64768 2919 -1 /system/lib64/vndk-R/libfmq.so +64768 2920 -1 /system/lib64/vndk-R/libgatekeeper.so +64768 2921 -1 /system/lib64/vndk-R/libgui.so +64768 2922 -1 /system/lib64/vndk-R/libhardware_legacy.so +64768 2923 -1 /system/lib64/vndk-R/libhidlallocatorutils.so +64768 2924 -1 /system/lib64/vndk-R/libjpeg.so +64768 2925 -1 /system/lib64/vndk-R/libkeymaster_messages.so +64768 2926 -1 /system/lib64/vndk-R/libkeymaster_portable.so +64768 2927 -1 /system/lib64/vndk-R/libldacBT_abr.so +64768 2928 -1 /system/lib64/vndk-R/libldacBT_enc.so +64768 2929 -1 /system/lib64/vndk-R/liblz4.so +64768 2930 -1 /system/lib64/vndk-R/libmedia_helper.so +64768 2931 -1 /system/lib64/vndk-R/libmedia_omx.so +64768 2932 -1 /system/lib64/vndk-R/libmemtrack.so +64768 2933 -1 /system/lib64/vndk-R/libminijail.so +64768 2934 -1 /system/lib64/vndk-R/libmkbootimg_abi_check.so +64768 2935 -1 /system/lib64/vndk-R/libnetutils.so +64768 2936 -1 /system/lib64/vndk-R/libnl.so +64768 2937 -1 /system/lib64/vndk-R/libpcre2.so +64768 2938 -1 /system/lib64/vndk-R/libpiex.so +64768 2939 -1 /system/lib64/vndk-R/libpng.so +64768 2940 -1 /system/lib64/vndk-R/libpower.so +64768 2941 -1 /system/lib64/vndk-R/libprocinfo.so +64768 2942 -1 /system/lib64/vndk-R/libprotobuf-cpp-full-3.9.1.so +64768 2945 -1 /system/lib64/vndk-R/libradio_metadata.so +64768 2943 -1 /system/lib64/vndk-R/libprotobuf-cpp-lite-3.9.1.so +64768 2944 -1 /system/lib64/vndk-R/libpuresoftkeymasterdevice.so +64768 2946 -1 /system/lib64/vndk-R/libselinux.so +64768 2947 -1 /system/lib64/vndk-R/libsoftkeymasterdevice.so +64768 2948 -1 /system/lib64/vndk-R/libspeexresampler.so +64768 2949 -1 /system/lib64/vndk-R/libsqlite.so +64768 2950 -1 /system/lib64/vndk-R/libssl.so +64768 2951 -1 /system/lib64/vndk-R/libstagefright_bufferpool@2.0.so +64768 2952 -1 /system/lib64/vndk-R/libstagefright_bufferqueue_helper.so +64768 2953 -1 /system/lib64/vndk-R/libstagefright_foundation.so +64768 2954 -1 /system/lib64/vndk-R/libstagefright_omx.so +64768 2955 -1 /system/lib64/vndk-R/libstagefright_omx_utils.so +64768 2956 -1 /system/lib64/vndk-R/libstagefright_xmlparser.so +64768 2957 -1 /system/lib64/vndk-R/libsysutils.so +64768 2958 -1 /system/lib64/vndk-R/libtinyalsa.so +64768 2959 -1 /system/lib64/vndk-R/libtinyxml2.so +64768 2960 -1 /system/lib64/vndk-R/libui.so +64768 2961 -1 /system/lib64/vndk-R/libusbhost.so +64768 2962 -1 /system/lib64/vndk-R/libwifi-system-iface.so +64768 2963 -1 /system/lib64/vndk-R/libxml2.so +64768 2964 -1 /system/lib64/vndk-R/libyuv.so +64768 2965 -1 /system/lib64/vndk-R/libziparchive.so +23 18481 -1 /system/lib64/vndk-sp-R +64768 2984 -1 /system/lib64/vndk-sp-R/libbase.so +64768 2993 -1 /system/lib64/vndk-sp-R/libhidlmemory.so +64768 2992 -1 /system/lib64/vndk-sp-R/libhidlbase.so +64768 2967 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.common@1.0.so +64768 2983 -1 /system/lib64/vndk-sp-R/libbacktrace.so +64768 2995 -1 /system/lib64/vndk-sp-R/libjsoncpp.so +64768 2972 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.mapper@3.0.so +23 33142 -1 /system/lib64/vndk-sp-R/hw +64768 2979 -1 /system/lib64/vndk-sp-R/hw/android.hidl.memory@1.0-impl.so +64768 2969 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.common@1.2.so +64768 2977 -1 /system/lib64/vndk-sp-R/android.hidl.safe_union@1.0.so +64768 2986 -1 /system/lib64/vndk-sp-R/libbinderthreadstate.so +64768 2982 -1 /system/lib64/vndk-sp-R/libRS_internal.so +64768 2974 -1 /system/lib64/vndk-sp-R/android.hardware.renderscript@1.0.so +64768 2970 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.mapper@2.0.so +64768 2985 -1 /system/lib64/vndk-sp-R/libbcinfo.so +64768 2988 -1 /system/lib64/vndk-sp-R/libc++.so +64768 2987 -1 /system/lib64/vndk-sp-R/libblas.so +64768 2981 -1 /system/lib64/vndk-sp-R/libRSDriver.so +64768 2975 -1 /system/lib64/vndk-sp-R/android.hidl.memory.token@1.0.so +64768 2990 -1 /system/lib64/vndk-sp-R/libcutils.so +64768 2989 -1 /system/lib64/vndk-sp-R/libcompiler_rt.so +64768 2996 -1 /system/lib64/vndk-sp-R/liblzma.so +64768 2999 -1 /system/lib64/vndk-sp-R/libutils.so +64768 2968 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.common@1.1.so +64768 2991 -1 /system/lib64/vndk-sp-R/libhardware.so +64768 2998 -1 /system/lib64/vndk-sp-R/libunwindstack.so +64768 2980 -1 /system/lib64/vndk-sp-R/libRSCpuRef.so +64768 3001 -1 /system/lib64/vndk-sp-R/libz.so +64768 2994 -1 /system/lib64/vndk-sp-R/libion.so +64768 2971 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.mapper@2.1.so +64768 3000 -1 /system/lib64/vndk-sp-R/libutilscallstack.so +64768 2976 -1 /system/lib64/vndk-sp-R/android.hidl.memory@1.0.so +64768 2973 -1 /system/lib64/vndk-sp-R/android.hardware.graphics.mapper@4.0.so +64768 2997 -1 /system/lib64/vndk-sp-R/libprocessgroup.so +23 1509502 -1 /system/xbin +64768 3265 -1 /system/xbin/su +23 25397 -1 /system/framework +64768 1628 -1 /system/framework/services.jar.bprof +64768 1429 -1 /system/framework/boot-framework-atb-backward-compatibility.vdex +64768 1428 -1 /system/framework/boot-ext.vdex +64768 1260 -1 /system/framework/android.test.base.jar +64768 1436 -1 /system/framework/bouncycastle.jar +64768 1423 -1 /system/framework/bmgr.jar +64768 1453 -1 /system/framework/framework-res.apk +64768 1444 -1 /system/framework/content.jar +64768 1256 -1 /system/framework/QtiTelephonyServicelibrary.jar +64768 1272 -1 /system/framework/apex-okhttp.vdex +64768 1637 -1 /system/framework/uimremoteserverlibrary.jar +64768 1433 -1 /system/framework/boot-telephony-common.vdex +64768 1269 -1 /system/framework/apex-framework-atb-backward-compatibility.vdex +64768 1263 -1 /system/framework/apache-xml.jar +23 38594 -1 /system/framework/oat +23 38595 -1 /system/framework/oat/arm64 +64768 1547 -1 /system/framework/oat/arm64/android.hidl.manager-V1.0-java.odex +64768 1563 -1 /system/framework/oat/arm64/com.android.location.provider.odex +64768 1553 -1 /system/framework/oat/arm64/android.test.runner.odex +64768 1544 -1 /system/framework/oat/arm64/am.vdex +64768 1586 -1 /system/framework/oat/arm64/locksettings.vdex +64768 1539 -1 /system/framework/oat/arm64/LteDirectDiscoveryLibrary.odex +64768 1554 -1 /system/framework/oat/arm64/android.test.runner.vdex +64768 1567 -1 /system/framework/oat/arm64/com.android.mediadrm.signer.odex +64768 1596 -1 /system/framework/oat/arm64/radioconfiginterfacelibrary.vdex +64768 1578 -1 /system/framework/oat/arm64/hid.vdex +64768 1592 -1 /system/framework/oat/arm64/org.apache.http.legacy.vdex +64768 1546 -1 /system/framework/oat/arm64/android.hidl.base-V1.0-java.vdex +64768 1560 -1 /system/framework/oat/arm64/bu.vdex +64768 1562 -1 /system/framework/oat/arm64/com.android.future.usb.accessory.vdex +64768 1597 -1 /system/framework/oat/arm64/radioconfiglibrary.odex +64768 1559 -1 /system/framework/oat/arm64/bu.odex +64768 1609 -1 /system/framework/oat/arm64/svc.vdex +64768 1612 -1 /system/framework/oat/arm64/uiautomator.odex +64768 1577 -1 /system/framework/oat/arm64/hid.odex +64768 1594 -1 /system/framework/oat/arm64/qcrilhook.vdex +64768 1571 -1 /system/framework/oat/arm64/content.odex +64768 1591 -1 /system/framework/oat/arm64/org.apache.http.legacy.odex +64768 1588 -1 /system/framework/oat/arm64/media.vdex +64768 1579 -1 /system/framework/oat/arm64/input.odex +64768 1575 -1 /system/framework/oat/arm64/ethernet-service.odex +64768 1551 -1 /system/framework/oat/arm64/android.test.mock.odex +64768 1619 -1 /system/framework/oat/arm64/vr.vdex +64768 1617 -1 /system/framework/oat/arm64/uimremoteserverlibrary.vdex +64768 1598 -1 /system/framework/oat/arm64/radioconfiglibrary.vdex +64768 1555 -1 /system/framework/oat/arm64/appwidget.odex +64768 1599 -1 /system/framework/oat/arm64/requestsync.odex +64768 1545 -1 /system/framework/oat/arm64/android.hidl.base-V1.0-java.odex +64768 1614 -1 /system/framework/oat/arm64/uimremoteclientlibrary.odex +64768 1570 -1 /system/framework/oat/arm64/com.android.nfc_extras.vdex +64768 1572 -1 /system/framework/oat/arm64/content.vdex +64768 1606 -1 /system/framework/oat/arm64/statsd-service.odex +64768 1602 -1 /system/framework/oat/arm64/services.odex +64768 1581 -1 /system/framework/oat/arm64/javax.obex.odex +64768 1618 -1 /system/framework/oat/arm64/vr.odex +64768 1605 -1 /system/framework/oat/arm64/sm.vdex +64768 1558 -1 /system/framework/oat/arm64/bmgr.vdex +64768 1576 -1 /system/framework/oat/arm64/ethernet-service.vdex +64768 1615 -1 /system/framework/oat/arm64/uimremoteclientlibrary.vdex +64768 1543 -1 /system/framework/oat/arm64/am.odex +64768 1583 -1 /system/framework/oat/arm64/jobscheduler-service.odex +64768 1552 -1 /system/framework/oat/arm64/android.test.mock.vdex +64768 1601 -1 /system/framework/oat/arm64/services.art +64768 1556 -1 /system/framework/oat/arm64/appwidget.vdex +64768 1548 -1 /system/framework/oat/arm64/android.hidl.manager-V1.0-java.vdex +64768 1557 -1 /system/framework/oat/arm64/bmgr.odex +64768 1613 -1 /system/framework/oat/arm64/uiautomator.vdex +64768 1549 -1 /system/framework/oat/arm64/android.test.base.odex +64768 1608 -1 /system/framework/oat/arm64/svc.odex +64768 1568 -1 /system/framework/oat/arm64/com.android.mediadrm.signer.vdex +64768 1595 -1 /system/framework/oat/arm64/radioconfiginterfacelibrary.odex +64768 1587 -1 /system/framework/oat/arm64/media.odex +64768 1566 -1 /system/framework/oat/arm64/com.android.media.remotedisplay.vdex +64768 1589 -1 /system/framework/oat/arm64/monkey.odex +64768 1603 -1 /system/framework/oat/arm64/services.vdex +64768 1565 -1 /system/framework/oat/arm64/com.android.media.remotedisplay.odex +64768 1593 -1 /system/framework/oat/arm64/qcrilhook.odex +64768 1550 -1 /system/framework/oat/arm64/android.test.base.vdex +64768 1564 -1 /system/framework/oat/arm64/com.android.location.provider.vdex +64768 1573 -1 /system/framework/oat/arm64/dpm.odex +64768 1561 -1 /system/framework/oat/arm64/com.android.future.usb.accessory.odex +64768 1607 -1 /system/framework/oat/arm64/statsd-service.vdex +64768 1611 -1 /system/framework/oat/arm64/telecom.vdex +64768 1569 -1 /system/framework/oat/arm64/com.android.nfc_extras.odex +64768 1540 -1 /system/framework/oat/arm64/LteDirectDiscoveryLibrary.vdex +64768 1542 -1 /system/framework/oat/arm64/QtiTelephonyServicelibrary.vdex +64768 1574 -1 /system/framework/oat/arm64/dpm.vdex +64768 1584 -1 /system/framework/oat/arm64/jobscheduler-service.vdex +64768 1585 -1 /system/framework/oat/arm64/locksettings.odex +64768 1616 -1 /system/framework/oat/arm64/uimremoteserverlibrary.odex +64768 1541 -1 /system/framework/oat/arm64/QtiTelephonyServicelibrary.odex +64768 1590 -1 /system/framework/oat/arm64/monkey.vdex +64768 1582 -1 /system/framework/oat/arm64/javax.obex.vdex +64768 1580 -1 /system/framework/oat/arm64/input.vdex +64768 1600 -1 /system/framework/oat/arm64/requestsync.vdex +64768 1610 -1 /system/framework/oat/arm64/telecom.odex +64768 1604 -1 /system/framework/oat/arm64/sm.odex +23 180917 -1 /system/framework/oat/arm +64768 1474 -1 /system/framework/oat/arm/android.hidl.manager-V1.0-java.odex +64768 1490 -1 /system/framework/oat/arm/com.android.location.provider.odex +64768 1480 -1 /system/framework/oat/arm/android.test.runner.odex +64768 1471 -1 /system/framework/oat/arm/am.vdex +64768 1509 -1 /system/framework/oat/arm/locksettings.vdex +64768 1466 -1 /system/framework/oat/arm/LteDirectDiscoveryLibrary.odex +64768 1481 -1 /system/framework/oat/arm/android.test.runner.vdex +64768 1494 -1 /system/framework/oat/arm/com.android.mediadrm.signer.odex +64768 1519 -1 /system/framework/oat/arm/radioconfiginterfacelibrary.vdex +64768 1503 -1 /system/framework/oat/arm/hid.vdex +64768 1515 -1 /system/framework/oat/arm/org.apache.http.legacy.vdex +64768 1473 -1 /system/framework/oat/arm/android.hidl.base-V1.0-java.vdex +64768 1487 -1 /system/framework/oat/arm/bu.vdex +64768 1489 -1 /system/framework/oat/arm/com.android.future.usb.accessory.vdex +64768 1520 -1 /system/framework/oat/arm/radioconfiglibrary.odex +64768 1486 -1 /system/framework/oat/arm/bu.odex +64768 1527 -1 /system/framework/oat/arm/svc.vdex +64768 1530 -1 /system/framework/oat/arm/uiautomator.odex +64768 1502 -1 /system/framework/oat/arm/hid.odex +64768 1517 -1 /system/framework/oat/arm/qcrilhook.vdex +64768 1498 -1 /system/framework/oat/arm/content.odex +64768 1514 -1 /system/framework/oat/arm/org.apache.http.legacy.odex +64768 1511 -1 /system/framework/oat/arm/media.vdex +64768 1504 -1 /system/framework/oat/arm/input.odex +64768 1478 -1 /system/framework/oat/arm/android.test.mock.odex +64768 1537 -1 /system/framework/oat/arm/vr.vdex +64768 1535 -1 /system/framework/oat/arm/uimremoteserverlibrary.vdex +64768 1521 -1 /system/framework/oat/arm/radioconfiglibrary.vdex +64768 1482 -1 /system/framework/oat/arm/appwidget.odex +64768 1522 -1 /system/framework/oat/arm/requestsync.odex +64768 1472 -1 /system/framework/oat/arm/android.hidl.base-V1.0-java.odex +64768 1532 -1 /system/framework/oat/arm/uimremoteclientlibrary.odex +64768 1497 -1 /system/framework/oat/arm/com.android.nfc_extras.vdex +64768 1499 -1 /system/framework/oat/arm/content.vdex +64768 1506 -1 /system/framework/oat/arm/javax.obex.odex +64768 1536 -1 /system/framework/oat/arm/vr.odex +64768 1525 -1 /system/framework/oat/arm/sm.vdex +64768 1485 -1 /system/framework/oat/arm/bmgr.vdex +64768 1533 -1 /system/framework/oat/arm/uimremoteclientlibrary.vdex +64768 1470 -1 /system/framework/oat/arm/am.odex +64768 1479 -1 /system/framework/oat/arm/android.test.mock.vdex +64768 1483 -1 /system/framework/oat/arm/appwidget.vdex +64768 1475 -1 /system/framework/oat/arm/android.hidl.manager-V1.0-java.vdex +64768 1484 -1 /system/framework/oat/arm/bmgr.odex +64768 1531 -1 /system/framework/oat/arm/uiautomator.vdex +64768 1476 -1 /system/framework/oat/arm/android.test.base.odex +64768 1526 -1 /system/framework/oat/arm/svc.odex +64768 1495 -1 /system/framework/oat/arm/com.android.mediadrm.signer.vdex +64768 1518 -1 /system/framework/oat/arm/radioconfiginterfacelibrary.odex +64768 1510 -1 /system/framework/oat/arm/media.odex +64768 1493 -1 /system/framework/oat/arm/com.android.media.remotedisplay.vdex +64768 1512 -1 /system/framework/oat/arm/monkey.odex +64768 1492 -1 /system/framework/oat/arm/com.android.media.remotedisplay.odex +64768 1516 -1 /system/framework/oat/arm/qcrilhook.odex +64768 1477 -1 /system/framework/oat/arm/android.test.base.vdex +64768 1491 -1 /system/framework/oat/arm/com.android.location.provider.vdex +64768 1500 -1 /system/framework/oat/arm/dpm.odex +64768 1488 -1 /system/framework/oat/arm/com.android.future.usb.accessory.odex +64768 1529 -1 /system/framework/oat/arm/telecom.vdex +64768 1496 -1 /system/framework/oat/arm/com.android.nfc_extras.odex +64768 1467 -1 /system/framework/oat/arm/LteDirectDiscoveryLibrary.vdex +64768 1469 -1 /system/framework/oat/arm/QtiTelephonyServicelibrary.vdex +64768 1501 -1 /system/framework/oat/arm/dpm.vdex +64768 1508 -1 /system/framework/oat/arm/locksettings.odex +64768 1534 -1 /system/framework/oat/arm/uimremoteserverlibrary.odex +64768 1468 -1 /system/framework/oat/arm/QtiTelephonyServicelibrary.odex +64768 1513 -1 /system/framework/oat/arm/monkey.vdex +64768 1507 -1 /system/framework/oat/arm/javax.obex.vdex +64768 1505 -1 /system/framework/oat/arm/input.vdex +64768 1523 -1 /system/framework/oat/arm/requestsync.vdex +64768 1528 -1 /system/framework/oat/arm/telecom.odex +64768 1524 -1 /system/framework/oat/arm/sm.odex +64768 1430 -1 /system/framework/boot-framework.vdex +64768 1626 -1 /system/framework/requestsync.jar +64768 1442 -1 /system/framework/com.android.nfc_extras.jar +64768 1440 -1 /system/framework/com.android.media.remotedisplay.jar +64768 1258 -1 /system/framework/android.hidl.base-V1.0-java.jar +64768 1435 -1 /system/framework/boot.vdex +64768 1449 -1 /system/framework/embmslibrary.jar +64768 1273 -1 /system/framework/apex-telephony-common.vdex +64768 1443 -1 /system/framework/conscrypt.jar +64768 1623 -1 /system/framework/qcrilhook.jar +64768 1632 -1 /system/framework/svc.jar +64768 1262 -1 /system/framework/android.test.runner.jar +64768 1426 -1 /system/framework/boot-core-icu4j.vdex +64768 1264 -1 /system/framework/apex-apache-xml.vdex +64768 1451 -1 /system/framework/ext.jar +64768 1439 -1 /system/framework/com.android.location.provider.jar +64768 1627 -1 /system/framework/services.jar +64768 1441 -1 /system/framework/com.android.mediadrm.signer.jar +64768 1261 -1 /system/framework/android.test.mock.jar +64768 1275 -1 /system/framework/apex.vdex +64768 1454 -1 /system/framework/framework.jar +64768 1267 -1 /system/framework/apex-core-libart.vdex +64768 1259 -1 /system/framework/android.hidl.manager-V1.0-java.jar +64768 1432 -1 /system/framework/boot-okhttp.vdex +64768 1458 -1 /system/framework/javax.obex.jar +23 30842 -1 /system/framework/arm64 +2054 362 -1 /system/framework/arm64/boot-ims-common.art +64768 1429 -1 /system/framework/arm64/boot-framework-atb-backward-compatibility.vdex +2054 356 -1 /system/framework/arm64/boot-bouncycastle.art +64768 1428 -1 /system/framework/arm64/boot-ext.vdex +64768 1409 -1 /system/framework/arm64/boot-ims-common.oat +64768 1354 -1 /system/framework/arm64/apex-bouncycastle.art +64768 1421 -1 /system/framework/arm64/boot.oat +64768 1272 -1 /system/framework/arm64/apex-okhttp.vdex +64768 1433 -1 /system/framework/arm64/boot-telephony-common.vdex +64768 1269 -1 /system/framework/arm64/apex-framework-atb-backward-compatibility.vdex +64768 1430 -1 /system/framework/arm64/boot-framework.vdex +64768 1382 -1 /system/framework/arm64/apex-voip-common.oat +64768 1352 -1 /system/framework/arm64/apex-apache-xml.oat +64768 1360 -1 /system/framework/arm64/apex-core-libart.art +64768 1435 -1 /system/framework/arm64/boot.vdex +64768 1397 -1 /system/framework/arm64/boot-core-libart.oat +64768 1273 -1 /system/framework/arm64/apex-telephony-common.vdex +64768 1351 -1 /system/framework/arm64/apex-apache-xml.art +2054 359 -1 /system/framework/arm64/boot-ext.art +64768 1426 -1 /system/framework/arm64/boot-core-icu4j.vdex +64768 1264 -1 /system/framework/arm64/apex-apache-xml.vdex +64768 1373 -1 /system/framework/arm64/apex-ims-common.oat +2054 357 -1 /system/framework/arm64/boot-apache-xml.art +64768 1275 -1 /system/framework/arm64/apex.vdex +64768 1267 -1 /system/framework/arm64/apex-core-libart.vdex +64768 1372 -1 /system/framework/arm64/apex-ims-common.art +64768 1361 -1 /system/framework/arm64/apex-core-libart.oat +2054 360 -1 /system/framework/arm64/boot-telephony-common.art +64768 1385 -1 /system/framework/arm64/apex.oat +64768 1432 -1 /system/framework/arm64/boot-okhttp.vdex +2054 352 -1 /system/framework/arm64/boot.art +64768 1427 -1 /system/framework/arm64/boot-core-libart.vdex +64768 1418 -1 /system/framework/arm64/boot-voip-common.oat +64768 1268 -1 /system/framework/arm64/apex-ext.vdex +64768 1270 -1 /system/framework/arm64/apex-framework.vdex +64768 1369 -1 /system/framework/arm64/apex-framework.art +64768 1367 -1 /system/framework/arm64/apex-framework-atb-backward-compatibility.oat +64768 1366 -1 /system/framework/arm64/apex-framework-atb-backward-compatibility.art +64768 1388 -1 /system/framework/arm64/boot-apache-xml.oat +64768 1403 -1 /system/framework/arm64/boot-framework-atb-backward-compatibility.oat +64768 1358 -1 /system/framework/arm64/apex-core-icu4j.oat +64768 1378 -1 /system/framework/arm64/apex-telephony-common.art +64768 1406 -1 /system/framework/arm64/boot-framework.oat +2054 363 -1 /system/framework/arm64/boot-framework-atb-backward-compatibility.art +2054 361 -1 /system/framework/arm64/boot-voip-common.art +64768 1363 -1 /system/framework/arm64/apex-ext.art +64768 1424 -1 /system/framework/arm64/boot-apache-xml.vdex +64768 1434 -1 /system/framework/arm64/boot-voip-common.vdex +64768 1376 -1 /system/framework/arm64/apex-okhttp.oat +64768 1355 -1 /system/framework/arm64/apex-bouncycastle.oat +64768 1266 -1 /system/framework/arm64/apex-core-icu4j.vdex +64768 1271 -1 /system/framework/arm64/apex-ims-common.vdex +64768 1394 -1 /system/framework/arm64/boot-core-icu4j.oat +2054 354 -1 /system/framework/arm64/boot-core-icu4j.art +64768 1381 -1 /system/framework/arm64/apex-voip-common.art +64768 1415 -1 /system/framework/arm64/boot-telephony-common.oat +64768 1375 -1 /system/framework/arm64/apex-okhttp.art +64768 1274 -1 /system/framework/arm64/apex-voip-common.vdex +64768 1431 -1 /system/framework/arm64/boot-ims-common.vdex +2054 355 -1 /system/framework/arm64/boot-okhttp.art +64768 1391 -1 /system/framework/arm64/boot-bouncycastle.oat +64768 1379 -1 /system/framework/arm64/apex-telephony-common.oat +64768 1412 -1 /system/framework/arm64/boot-okhttp.oat +64768 1425 -1 /system/framework/arm64/boot-bouncycastle.vdex +64768 1357 -1 /system/framework/arm64/apex-core-icu4j.art +2054 358 -1 /system/framework/arm64/boot-framework.art +64768 1370 -1 /system/framework/arm64/apex-framework.oat +2054 353 -1 /system/framework/arm64/boot-core-libart.art +64768 1400 -1 /system/framework/arm64/boot-ext.oat +64768 1364 -1 /system/framework/arm64/apex-ext.oat +64768 1265 -1 /system/framework/arm64/apex-bouncycastle.vdex +64768 1384 -1 /system/framework/arm64/apex.art +64768 1438 -1 /system/framework/com.android.future.usb.accessory.jar +64768 1427 -1 /system/framework/boot-core-libart.vdex +64768 1625 -1 /system/framework/radioconfiglibrary.jar +64768 1639 -1 /system/framework/vr.jar +64768 1629 -1 /system/framework/services.jar.prof +64768 1437 -1 /system/framework/bu.jar +64768 1268 -1 /system/framework/apex-ext.vdex +64768 1255 -1 /system/framework/LteDirectDiscoveryLibrary.jar +64768 1620 -1 /system/framework/okhttp.jar +64768 1270 -1 /system/framework/apex-framework.vdex +64768 1459 -1 /system/framework/jobscheduler-service.jar +64768 1257 -1 /system/framework/am.jar +64768 1631 -1 /system/framework/statsd-service.jar +64768 1622 -1 /system/framework/org.apache.http.legacy.jar.prof +64768 1621 -1 /system/framework/org.apache.http.legacy.jar +64768 1276 -1 /system/framework/appwidget.jar +64768 1452 -1 /system/framework/framework-atb-backward-compatibility.jar +64768 1634 -1 /system/framework/telephony-common.jar +64768 1633 -1 /system/framework/telecom.jar +64768 1460 -1 /system/framework/lockagent.jar +64768 1636 -1 /system/framework/uimremoteclientlibrary.jar +64768 1635 -1 /system/framework/uiautomator.jar +64768 1446 -1 /system/framework/core-libart.jar +64768 1424 -1 /system/framework/boot-apache-xml.vdex +64768 1455 -1 /system/framework/hid.jar +64768 1434 -1 /system/framework/boot-voip-common.vdex +64768 1266 -1 /system/framework/apex-core-icu4j.vdex +64768 1463 -1 /system/framework/monkey.jar +23 18052 -1 /system/framework/arm +2054 374 -1 /system/framework/arm/boot-ims-common.art +64768 1429 -1 /system/framework/arm/boot-framework-atb-backward-compatibility.vdex +2054 368 -1 /system/framework/arm/boot-bouncycastle.art +64768 1428 -1 /system/framework/arm/boot-ext.vdex +64768 1336 -1 /system/framework/arm/boot-ims-common.oat +64768 1281 -1 /system/framework/arm/apex-bouncycastle.art +64768 1348 -1 /system/framework/arm/boot.oat +64768 1272 -1 /system/framework/arm/apex-okhttp.vdex +64768 1433 -1 /system/framework/arm/boot-telephony-common.vdex +64768 1269 -1 /system/framework/arm/apex-framework-atb-backward-compatibility.vdex +64768 1430 -1 /system/framework/arm/boot-framework.vdex +64768 1309 -1 /system/framework/arm/apex-voip-common.oat +64768 1279 -1 /system/framework/arm/apex-apache-xml.oat +64768 1287 -1 /system/framework/arm/apex-core-libart.art +64768 1435 -1 /system/framework/arm/boot.vdex +64768 1324 -1 /system/framework/arm/boot-core-libart.oat +64768 1273 -1 /system/framework/arm/apex-telephony-common.vdex +64768 1278 -1 /system/framework/arm/apex-apache-xml.art +2054 371 -1 /system/framework/arm/boot-ext.art +64768 1426 -1 /system/framework/arm/boot-core-icu4j.vdex +64768 1264 -1 /system/framework/arm/apex-apache-xml.vdex +64768 1300 -1 /system/framework/arm/apex-ims-common.oat +2054 369 -1 /system/framework/arm/boot-apache-xml.art +64768 1275 -1 /system/framework/arm/apex.vdex +64768 1267 -1 /system/framework/arm/apex-core-libart.vdex +64768 1299 -1 /system/framework/arm/apex-ims-common.art +64768 1288 -1 /system/framework/arm/apex-core-libart.oat +2054 372 -1 /system/framework/arm/boot-telephony-common.art +64768 1312 -1 /system/framework/arm/apex.oat +64768 1432 -1 /system/framework/arm/boot-okhttp.vdex +2054 364 -1 /system/framework/arm/boot.art +64768 1427 -1 /system/framework/arm/boot-core-libart.vdex +64768 1345 -1 /system/framework/arm/boot-voip-common.oat +64768 1268 -1 /system/framework/arm/apex-ext.vdex +64768 1270 -1 /system/framework/arm/apex-framework.vdex +64768 1296 -1 /system/framework/arm/apex-framework.art +64768 1294 -1 /system/framework/arm/apex-framework-atb-backward-compatibility.oat +64768 1293 -1 /system/framework/arm/apex-framework-atb-backward-compatibility.art +64768 1315 -1 /system/framework/arm/boot-apache-xml.oat +64768 1330 -1 /system/framework/arm/boot-framework-atb-backward-compatibility.oat +64768 1285 -1 /system/framework/arm/apex-core-icu4j.oat +64768 1305 -1 /system/framework/arm/apex-telephony-common.art +64768 1333 -1 /system/framework/arm/boot-framework.oat +2054 375 -1 /system/framework/arm/boot-framework-atb-backward-compatibility.art +2054 373 -1 /system/framework/arm/boot-voip-common.art +64768 1290 -1 /system/framework/arm/apex-ext.art +64768 1424 -1 /system/framework/arm/boot-apache-xml.vdex +64768 1434 -1 /system/framework/arm/boot-voip-common.vdex +64768 1303 -1 /system/framework/arm/apex-okhttp.oat +64768 1282 -1 /system/framework/arm/apex-bouncycastle.oat +64768 1266 -1 /system/framework/arm/apex-core-icu4j.vdex +64768 1271 -1 /system/framework/arm/apex-ims-common.vdex +64768 1321 -1 /system/framework/arm/boot-core-icu4j.oat +2054 366 -1 /system/framework/arm/boot-core-icu4j.art +64768 1308 -1 /system/framework/arm/apex-voip-common.art +64768 1342 -1 /system/framework/arm/boot-telephony-common.oat +64768 1302 -1 /system/framework/arm/apex-okhttp.art +64768 1274 -1 /system/framework/arm/apex-voip-common.vdex +64768 1431 -1 /system/framework/arm/boot-ims-common.vdex +2054 367 -1 /system/framework/arm/boot-okhttp.art +64768 1318 -1 /system/framework/arm/boot-bouncycastle.oat +64768 1306 -1 /system/framework/arm/apex-telephony-common.oat +64768 1339 -1 /system/framework/arm/boot-okhttp.oat +64768 1425 -1 /system/framework/arm/boot-bouncycastle.vdex +64768 1284 -1 /system/framework/arm/apex-core-icu4j.art +2054 370 -1 /system/framework/arm/boot-framework.art +64768 1297 -1 /system/framework/arm/apex-framework.oat +2054 365 -1 /system/framework/arm/boot-core-libart.art +64768 1327 -1 /system/framework/arm/boot-ext.oat +64768 1291 -1 /system/framework/arm/apex-ext.oat +64768 1265 -1 /system/framework/arm/apex-bouncycastle.vdex +64768 1311 -1 /system/framework/arm/apex.art +64768 1461 -1 /system/framework/locksettings.jar +64768 1457 -1 /system/framework/input.jar +64768 1450 -1 /system/framework/ethernet-service.jar +64768 1271 -1 /system/framework/apex-ims-common.vdex +64768 1462 -1 /system/framework/media.jar +64768 1274 -1 /system/framework/apex-voip-common.vdex +64768 1431 -1 /system/framework/boot-ims-common.vdex +64768 1456 -1 /system/framework/ims-common.jar +64768 1445 -1 /system/framework/core-icu4j.jar +64768 1425 -1 /system/framework/boot-bouncycastle.vdex +64768 1624 -1 /system/framework/radioconfiginterfacelibrary.jar +64768 1630 -1 /system/framework/sm.jar +64768 1447 -1 /system/framework/core-oj.jar +64768 1638 -1 /system/framework/voip-common.jar +64768 1265 -1 /system/framework/apex-bouncycastle.vdex +64768 1448 -1 /system/framework/dpm.jar +24 19551 -1 /system/system_ext +23 6440 -1 /system/apex +64768 63 -1 /system/apex/com.android.art.debug.apex +64768 69 -1 /system/apex/com.android.resolv.apex +64768 64 -1 /system/apex/com.android.conscrypt.apex +64768 65 -1 /system/apex/com.android.i18n.apex +64768 66 -1 /system/apex/com.android.media.apex +64768 67 -1 /system/apex/com.android.media.swcodec.apex +64768 71 -1 /system/apex/com.android.tzdata.apex +64768 62 -1 /system/apex/com.android.apex.cts.shim.apex +64768 70 -1 /system/apex/com.android.runtime.apex +64768 68 -1 /system/apex/com.android.neuralnetworks.apex +64768 600 -1 /system/build.prop +23 18599 -1 /system/lib +64768 1641 -1 /system/lib/android.frameworks.bufferhub@1.0.so +64768 1642 -1 /system/lib/android.frameworks.cameraservice.common@2.0.so +64768 1643 -1 /system/lib/android.frameworks.cameraservice.device@2.0.so +64768 1644 -1 /system/lib/android.frameworks.cameraservice.service@2.0.so +64768 1645 -1 /system/lib/android.frameworks.schedulerservice@1.0.so +64768 1646 -1 /system/lib/android.frameworks.sensorservice@1.0.so +64768 1647 -1 /system/lib/android.frameworks.vr.composer@2.0.so +64768 1648 -1 /system/lib/android.hardware.audio.common@2.0.so +64768 1649 -1 /system/lib/android.hardware.audio.common@5.0.so +64768 1650 -1 /system/lib/android.hardware.biometrics.fingerprint@2.1.so +64768 1651 -1 /system/lib/android.hardware.bluetooth.a2dp@1.0.so +64768 1652 -1 /system/lib/android.hardware.bluetooth.audio@2.0.so +64768 1653 -1 /system/lib/android.hardware.bluetooth@1.0.so +64768 1654 -1 /system/lib/android.hardware.broadcastradio@1.0.so +64768 1655 -1 /system/lib/android.hardware.broadcastradio@1.1.so +64768 1656 -1 /system/lib/android.hardware.camera.common@1.0.so +64768 1657 -1 /system/lib/android.hardware.camera.device@1.0.so +64768 1658 -1 /system/lib/android.hardware.camera.device@3.2.so +64768 1659 -1 /system/lib/android.hardware.camera.device@3.3.so +64768 1660 -1 /system/lib/android.hardware.camera.device@3.4.so +64768 1661 -1 /system/lib/android.hardware.camera.device@3.5.so +64768 1662 -1 /system/lib/android.hardware.camera.provider@2.4.so +64768 1663 -1 /system/lib/android.hardware.camera.provider@2.5.so +64768 1664 -1 /system/lib/android.hardware.cas.native@1.0.so +64768 1665 -1 /system/lib/android.hardware.cas@1.0.so +64768 1666 -1 /system/lib/android.hardware.configstore-utils.so +64768 1667 -1 /system/lib/android.hardware.configstore@1.0.so +64768 1668 -1 /system/lib/android.hardware.configstore@1.1.so +64768 1669 -1 /system/lib/android.hardware.contexthub@1.0.so +64768 1670 -1 /system/lib/android.hardware.drm@1.0.so +64768 1671 -1 /system/lib/android.hardware.drm@1.1.so +64768 1672 -1 /system/lib/android.hardware.drm@1.2.so +64768 1673 -1 /system/lib/android.hardware.gnss.measurement_corrections@1.0.so +64768 1674 -1 /system/lib/android.hardware.gnss.visibility_control@1.0.so +64768 1675 -1 /system/lib/android.hardware.gnss@1.0.so +64768 1676 -1 /system/lib/android.hardware.gnss@1.1.so +64768 1677 -1 /system/lib/android.hardware.gnss@2.0.so +64768 1678 -1 /system/lib/android.hardware.graphics.allocator@2.0.so +64768 1679 -1 /system/lib/android.hardware.graphics.allocator@3.0.so +64768 1680 -1 /system/lib/android.hardware.graphics.allocator@4.0.so +64768 1681 -1 /system/lib/android.hardware.graphics.bufferqueue@1.0.so +64768 1682 -1 /system/lib/android.hardware.graphics.bufferqueue@2.0.so +64768 1683 -1 /system/lib/android.hardware.graphics.common@1.0.so +64768 1684 -1 /system/lib/android.hardware.graphics.common@1.1.so +64768 1685 -1 /system/lib/android.hardware.graphics.common@1.2.so +64768 1686 -1 /system/lib/android.hardware.graphics.composer@2.1.so +64768 1687 -1 /system/lib/android.hardware.graphics.composer@2.2.so +64768 1688 -1 /system/lib/android.hardware.graphics.composer@2.3.so +64768 1689 -1 /system/lib/android.hardware.graphics.composer@2.4.so +64768 1690 -1 /system/lib/android.hardware.graphics.mapper@2.0.so +64768 1691 -1 /system/lib/android.hardware.graphics.mapper@2.1.so +64768 1692 -1 /system/lib/android.hardware.graphics.mapper@3.0.so +64768 1693 -1 /system/lib/android.hardware.graphics.mapper@4.0.so +64768 1694 -1 /system/lib/android.hardware.input.classifier@1.0.so +64768 1695 -1 /system/lib/android.hardware.input.common@1.0.so +64768 1696 -1 /system/lib/android.hardware.ir@1.0.so +64768 1697 -1 /system/lib/android.hardware.keymaster@3.0.so +64768 1698 -1 /system/lib/android.hardware.keymaster@4.0.so +64768 1699 -1 /system/lib/android.hardware.light@2.0.so +64768 1700 -1 /system/lib/android.hardware.media.bufferpool@2.0.so +64768 1701 -1 /system/lib/android.hardware.media.c2@1.0.so +64768 1702 -1 /system/lib/android.hardware.media.omx@1.0.so +64768 1703 -1 /system/lib/android.hardware.media@1.0.so +64768 1704 -1 /system/lib/android.hardware.memtrack@1.0.so +64768 1705 -1 /system/lib/android.hardware.power.stats@1.0.so +64768 1706 -1 /system/lib/android.hardware.power@1.0.so +64768 1707 -1 /system/lib/android.hardware.power@1.1.so +64768 1708 -1 /system/lib/android.hardware.power@1.2.so +64768 1709 -1 /system/lib/android.hardware.power@1.3.so +64768 1710 -1 /system/lib/android.hardware.radio.config@1.0.so +64768 1711 -1 /system/lib/android.hardware.radio.deprecated@1.0.so +64768 1712 -1 /system/lib/android.hardware.radio@1.0.so +64768 1713 -1 /system/lib/android.hardware.radio@1.1.so +64768 1714 -1 /system/lib/android.hardware.radio@1.2.so +64768 1715 -1 /system/lib/android.hardware.radio@1.3.so +64768 1716 -1 /system/lib/android.hardware.radio@1.4.so +64768 1717 -1 /system/lib/android.hardware.renderscript@1.0.so +64768 1718 -1 /system/lib/android.hardware.secure_element@1.0.so +64768 1719 -1 /system/lib/android.hardware.sensors@1.0.so +64768 1720 -1 /system/lib/android.hardware.sensors@2.0.so +64768 1721 -1 /system/lib/android.hardware.tetheroffload.config@1.0.so +64768 1722 -1 /system/lib/android.hardware.thermal@1.0.so +64768 1723 -1 /system/lib/android.hardware.tv.cec@1.0.so +64768 1724 -1 /system/lib/android.hardware.tv.input@1.0.so +64768 1725 -1 /system/lib/android.hardware.vibrator@1.0.so +64768 1726 -1 /system/lib/android.hardware.vibrator@1.1.so +64768 1727 -1 /system/lib/android.hardware.vibrator@1.2.so +64768 1728 -1 /system/lib/android.hardware.vibrator@1.3.so +64768 1729 -1 /system/lib/android.hardware.vibrator@1.4.so +64768 1730 -1 /system/lib/android.hardware.vr@1.0.so +64768 1731 -1 /system/lib/android.hardware.wifi@1.0.so +64768 1732 -1 /system/lib/android.hidl.allocator@1.0.so +64768 1733 -1 /system/lib/android.hidl.memory.token@1.0.so +64768 1734 -1 /system/lib/android.hidl.memory@1.0.so +64768 1735 -1 /system/lib/android.hidl.safe_union@1.0.so +64768 1736 -1 /system/lib/android.hidl.token@1.0-utils.so +64768 1737 -1 /system/lib/android.hidl.token@1.0.so +64768 1738 -1 /system/lib/android.system.suspend@1.0.so +23 1558810 -1 /system/lib/bootstrap +64768 1740 -1 /system/lib/bootstrap/libc.so +64768 1741 -1 /system/lib/bootstrap/libdl.so +64768 1742 -1 /system/lib/bootstrap/libm.so +23 19172 -1 /system/lib/drm +64768 1744 -1 /system/lib/drm/libfwdlockengine.so +64768 1745 -1 /system/lib/heapprofd_client.so +23 1558815 -1 /system/lib/hw +64768 1747 -1 /system/lib/hw/android.hidl.memory@1.0-impl.so +64768 1748 -1 /system/lib/hw/audio.a2dp.default.so +64768 1749 -1 /system/lib/hw/audio.hearing_aid.default.so +64768 1750 -1 /system/lib/ld-android.so +64768 1751 -1 /system/lib/lib-imsvideocodec.so +64768 1752 -1 /system/lib/lib-imsvt.so +64768 1753 -1 /system/lib/lib-imsvtextutils.so +64768 1754 -1 /system/lib/lib-imsvtutils.so +64768 1755 -1 /system/lib/libEGL.so +64768 1756 -1 /system/lib/libETC1.so +64768 1757 -1 /system/lib/libFFTEm.so +64768 1758 -1 /system/lib/libGLESv1_CM.so +64768 1759 -1 /system/lib/libGLESv2.so +64768 1760 -1 /system/lib/libGLESv3.so +64768 1761 -1 /system/lib/libGPQTEEC_system.so +64768 1762 -1 /system/lib/libGPTEE_system.so +64768 1763 -1 /system/lib/libOpenMAXAL.so +64768 1764 -1 /system/lib/libOpenSLES.so +64768 1765 -1 /system/lib/libQTEEConnector_system.so +64768 1766 -1 /system/lib/libRS.so +64768 1767 -1 /system/lib/libRSCacheDir.so +64768 1768 -1 /system/lib/libRSCpuRef.so +64768 1769 -1 /system/lib/libRSDriver.so +64768 1770 -1 /system/lib/libRS_internal.so +64768 1771 -1 /system/lib/libRScpp.so +64768 1772 -1 /system/lib/libSurfaceFlingerProp.so +64768 1773 -1 /system/lib/libaaudio.so +64768 1774 -1 /system/lib/libaaudio_internal.so +64768 1775 -1 /system/lib/libamidi.so +64768 1776 -1 /system/lib/libandroid.so +64768 1777 -1 /system/lib/libandroid_net.so +64768 1778 -1 /system/lib/libandroid_runtime.so +64768 1779 -1 /system/lib/libandroid_runtime_lazy.so +64768 1780 -1 /system/lib/libandroid_servers.so +64768 1781 -1 /system/lib/libandroidfw.so +64768 1782 -1 /system/lib/libappfuse.so +64768 1783 -1 /system/lib/libartpalette-system.so +64768 1784 -1 /system/lib/libasyncio.so +64768 1785 -1 /system/lib/libaudio-resampler.so +64768 1786 -1 /system/lib/libaudioclient.so +64768 1787 -1 /system/lib/libaudioeffect_jni.so +64768 1788 -1 /system/lib/libaudiomanager.so +64768 1789 -1 /system/lib/libaudiopolicy.so +64768 1790 -1 /system/lib/libaudioutils.so +64768 1791 -1 /system/lib/libbacktrace.so +64768 1792 -1 /system/lib/libbase.so +64768 1793 -1 /system/lib/libbcinfo.so +64768 1794 -1 /system/lib/libbinder.so +64768 1795 -1 /system/lib/libbinder_ndk.so +64768 1796 -1 /system/lib/libbinderthreadstate.so +64768 1797 -1 /system/lib/libblas.so +64768 1798 -1 /system/lib/libbluetooth.so +64768 1798 -1 /system/lib/libbluetooth_qti.so +64768 1800 -1 /system/lib/libbpf.so +64768 1801 -1 /system/lib/libbpf_android.so +64768 1802 -1 /system/lib/libbufferhub.so +64768 1803 -1 /system/lib/libbufferhubqueue.so +64768 1804 -1 /system/lib/libc++.so +1888 21 -1 /system/lib/libc.so +64768 1806 -1 /system/lib/libcamera2ndk.so +64768 1807 -1 /system/lib/libcamera_client.so +64768 1808 -1 /system/lib/libcamera_metadata.so +64768 1809 -1 /system/lib/libcameraservice.so +64768 1810 -1 /system/lib/libcap.so +64768 1811 -1 /system/lib/libcgrouprc.so +64768 1812 -1 /system/lib/libchrome.so +64768 1813 -1 /system/lib/libclang_rt.asan-arm-android.so +64768 1814 -1 /system/lib/libclcore.bc +64768 1815 -1 /system/lib/libclcore_debug.bc +64768 1816 -1 /system/lib/libclcore_debug_g.bc +64768 1817 -1 /system/lib/libclcore_g.bc +64768 1818 -1 /system/lib/libclcore_neon.bc +64768 1819 -1 /system/lib/libcodec2.so +64768 1820 -1 /system/lib/libcodec2_client.so +64768 1821 -1 /system/lib/libcodec2_hidl_client@1.0.so +64768 1822 -1 /system/lib/libcodec2_vndk.so +64768 1823 -1 /system/lib/libcompiler_rt.so +64768 1824 -1 /system/lib/libcrypto.so +64768 1825 -1 /system/lib/libcutils.so +64768 1826 -1 /system/lib/libdatasource.so +64768 1827 -1 /system/lib/libdebuggerd_client.so +64768 1828 -1 /system/lib/libdepthphoto.so +64768 1829 -1 /system/lib/libdexfile_support.so +1888 22 -1 /system/lib/libdl.so +64768 1831 -1 /system/lib/libdl_android.so +64768 1832 -1 /system/lib/libdng_sdk.so +64768 1833 -1 /system/lib/libdrm.so +64768 1834 -1 /system/lib/libdrmframework.so +64768 1835 -1 /system/lib/libdrmframework_jni.so +64768 1836 -1 /system/lib/libdynamic_depth.so +64768 1837 -1 /system/lib/libevent.so +64768 1838 -1 /system/lib/libexif.so +64768 1839 -1 /system/lib/libexpat.so +64768 1840 -1 /system/lib/libfilterfw.so +64768 1841 -1 /system/lib/libfilterpack_imageproc.so +64768 1842 -1 /system/lib/libfmq.so +64768 1843 -1 /system/lib/libft2.so +64768 1844 -1 /system/lib/libgatekeeper.so +64768 1845 -1 /system/lib/libgraphicsenv.so +64768 1846 -1 /system/lib/libgui.so +64768 1847 -1 /system/lib/libhardware.so +64768 1848 -1 /system/lib/libhardware_legacy.so +64768 1849 -1 /system/lib/libharfbuzz_ng.so +64768 1850 -1 /system/lib/libheif.so +64768 1851 -1 /system/lib/libhidl-gen-utils.so +64768 1852 -1 /system/lib/libhidlallocatorutils.so +64768 1853 -1 /system/lib/libhidlbase.so +64768 1854 -1 /system/lib/libhidlmemory.so +64768 1855 -1 /system/lib/libhidltransport.so +64768 1856 -1 /system/lib/libhwbinder.so +64768 1857 -1 /system/lib/libhwui.so +64768 1858 -1 /system/lib/libimage_io.so +64768 1859 -1 /system/lib/libimg_utils.so +64768 1860 -1 /system/lib/libimscamera_jni.so +64768 1861 -1 /system/lib/libimsmedia_jni.so +64768 1862 -1 /system/lib/libinput.so +64768 1863 -1 /system/lib/libinputflinger.so +64768 1864 -1 /system/lib/libinputflinger_base.so +64768 1865 -1 /system/lib/libinputreader.so +64768 1866 -1 /system/lib/libinputreporter.so +64768 1867 -1 /system/lib/libinputservice.so +64768 1868 -1 /system/lib/libion.so +64768 1869 -1 /system/lib/libiprouteutil.so +64768 1870 -1 /system/lib/libjnigraphics.so +64768 1871 -1 /system/lib/libjpeg.so +64768 1872 -1 /system/lib/libkeymaster4support.so +64768 1873 -1 /system/lib/libkeystore_aidl.so +64768 1874 -1 /system/lib/libkeystore_binder.so +64768 1875 -1 /system/lib/libkeystore_parcelables.so +64768 1876 -1 /system/lib/liblayers_proto.so +64768 1877 -1 /system/lib/libldacBT_abr.so +64768 1878 -1 /system/lib/libldacBT_enc.so +64768 1879 -1 /system/lib/liblog.so +64768 1880 -1 /system/lib/liblogwrap.so +64768 1881 -1 /system/lib/liblz4.so +64768 1882 -1 /system/lib/liblzma.so +1888 23 -1 /system/lib/libm.so +64768 1884 -1 /system/lib/libmdnssd.so +64768 1885 -1 /system/lib/libmedia.so +64768 1886 -1 /system/lib/libmedia_codeclist.so +64768 1887 -1 /system/lib/libmedia_helper.so +64768 1888 -1 /system/lib/libmedia_jni.so +64768 1889 -1 /system/lib/libmedia_jni_utils.so +64768 1890 -1 /system/lib/libmedia_omx.so +64768 1891 -1 /system/lib/libmedia_omx_client.so +64768 1892 -1 /system/lib/libmediadrm.so +64768 1893 -1 /system/lib/libmediadrmmetrics_lite.so +64768 1894 -1 /system/lib/libmediametrics.so +64768 1915 -1 /system/lib/libnl.so +64768 1895 -1 /system/lib/libmediandk.so +64768 1896 -1 /system/lib/libmediandk_utils.so +64768 1897 -1 /system/lib/libmediaplayerservice.so +64768 1898 -1 /system/lib/libmediautils.so +64768 1899 -1 /system/lib/libmeminfo.so +64768 1900 -1 /system/lib/libmemtrack.so +64768 1901 -1 /system/lib/libmemunreachable.so +64768 1902 -1 /system/lib/libminikin.so +64768 1903 -1 /system/lib/libminui.so +64768 1904 -1 /system/lib/libmtp.so +64768 1905 -1 /system/lib/libnativebridge_lazy.so +64768 1906 -1 /system/lib/libnativeloader_lazy.so +64768 1907 -1 /system/lib/libnativewindow.so +64768 1908 -1 /system/lib/libnblog.so +64768 1909 -1 /system/lib/libnetd_client.so +64768 1910 -1 /system/lib/libnetdbpf.so +64768 1911 -1 /system/lib/libnetdutils.so +64768 1912 -1 /system/lib/libnetlink.so +64768 1913 -1 /system/lib/libnetutils.so +64768 1914 -1 /system/lib/libneuralnetworks_packageinfo.so +64768 1916 -1 /system/lib/libpackagelistparser.so +64768 1917 -1 /system/lib/libpcre2.so +64768 1918 -1 /system/lib/libpdfium.so +64768 1919 -1 /system/lib/libpdx_default_transport.so +64768 1920 -1 /system/lib/libpiex.so +64768 1921 -1 /system/lib/libpng.so +64768 1922 -1 /system/lib/libpower.so +64768 1923 -1 /system/lib/libpowermanager.so +64768 1924 -1 /system/lib/libprocessgroup.so +64768 1925 -1 /system/lib/libprocinfo.so +64768 1926 -1 /system/lib/libprotobuf-cpp-full.so +64768 1927 -1 /system/lib/libprotobuf-cpp-lite.so +64768 1928 -1 /system/lib/libpsi.so +64768 1929 -1 /system/lib/libqcbor_system.so +64768 1930 -1 /system/lib/libradio_metadata.so +64768 1931 -1 /system/lib/librcc.so +64768 1932 -1 /system/lib/libresourcemanagerservice.so +64768 1933 -1 /system/lib/librs_jni.so +64768 1934 -1 /system/lib/librtp_jni.so +64768 1935 -1 /system/lib/libschedulerservicehidl.so +64768 1936 -1 /system/lib/libsdm-disp-apis.so +64768 1937 -1 /system/lib/libseccam.so +64768 1938 -1 /system/lib/libsecureui_svcsock_system.so +64768 1939 -1 /system/lib/libselinux.so +64768 1940 -1 /system/lib/libsensor.so +64768 1941 -1 /system/lib/libsensorprivacy.so +64768 1942 -1 /system/lib/libsensorservice.so +64768 1943 -1 /system/lib/libsensorservicehidl.so +64768 1944 -1 /system/lib/libsfplugin_ccodec.so +64768 1945 -1 /system/lib/libsfplugin_ccodec_utils.so +64768 1946 -1 /system/lib/libsmcinvokecred.so +64768 1947 -1 /system/lib/libsns_fastRPC_util.so +64768 1948 -1 /system/lib/libsonic.so +64768 1949 -1 /system/lib/libsonivox.so +64768 1950 -1 /system/lib/libsoundpool.so +64768 1951 -1 /system/lib/libsoundtrigger.so +64768 1952 -1 /system/lib/libspeexresampler.so +64768 1953 -1 /system/lib/libsqlite.so +64768 1954 -1 /system/lib/libssl.so +64768 1955 -1 /system/lib/libstagefright.so +64768 1956 -1 /system/lib/libstagefright_amrnb_common.so +64768 1957 -1 /system/lib/libstagefright_bufferpool@2.0.1.so +64768 1958 -1 /system/lib/libstagefright_bufferqueue_helper.so +64768 1959 -1 /system/lib/libstagefright_codecbase.so +64768 1960 -1 /system/lib/libstagefright_foundation.so +64768 1961 -1 /system/lib/libstagefright_http_support.so +64768 1962 -1 /system/lib/libstagefright_httplive.so +64768 1963 -1 /system/lib/libstagefright_omx.so +64768 1964 -1 /system/lib/libstagefright_omx_utils.so +64768 1965 -1 /system/lib/libstagefright_xmlparser.so +64768 1966 -1 /system/lib/libstatslog.so +64768 1967 -1 /system/lib/libstdc++.so +64768 1968 -1 /system/lib/libsurfaceflinger.so +64768 1969 -1 /system/lib/libsync.so +64768 1970 -1 /system/lib/libsysutils.so +64768 1971 -1 /system/lib/libtextclassifier.so +64768 1972 -1 /system/lib/libtextclassifier_hash.so +64768 1973 -1 /system/lib/libtflite.so +64768 1974 -1 /system/lib/libtimestats_proto.so +64768 1975 -1 /system/lib/libtinyalsa.so +64768 1976 -1 /system/lib/libtinyxml2.so +64768 1977 -1 /system/lib/libtombstoned_client.so +64768 1978 -1 /system/lib/libtzcom.so +64768 1979 -1 /system/lib/libui.so +64768 1980 -1 /system/lib/libunwindstack.so +64768 1981 -1 /system/lib/libusbhost.so +64768 1982 -1 /system/lib/libutils.so +64768 1983 -1 /system/lib/libutilscallstack.so +64768 1984 -1 /system/lib/libvibrator.so +64768 1985 -1 /system/lib/libvintf.so +64768 1986 -1 /system/lib/libvndksupport.so +64768 1987 -1 /system/lib/libvulkan.so +64768 1988 -1 /system/lib/libwebviewchromium_loader.so +64768 1989 -1 /system/lib/libwebviewchromium_plat_support.so +64768 1990 -1 /system/lib/libwifi-jni.so +64768 1991 -1 /system/lib/libwilhelm.so +64768 1992 -1 /system/lib/libxml2.so +64768 1993 -1 /system/lib/libyuv.so +64768 1994 -1 /system/lib/libz.so +64768 1995 -1 /system/lib/libziparchive.so +23 1558912 -1 /system/lib/rfsa +23 1558913 -1 /system/lib/rfsa/adsp +64768 1998 -1 /system/lib/rfsa/adsp/libsns_low_lat_stream_skel.so +64768 1999 -1 /system/lib/server_configurable_flags.so +64768 2000 -1 /system/lib/suspend_control_aidl_interface-cpp.so +23 16892 -1 /system/lib/vndk-R +64768 2002 -1 /system/lib/vndk-R/android.frameworks.cameraservice.common@2.0.so +64768 2003 -1 /system/lib/vndk-R/android.frameworks.cameraservice.device@2.0.so +64768 2004 -1 /system/lib/vndk-R/android.frameworks.cameraservice.service@2.0.so +64768 2005 -1 /system/lib/vndk-R/android.frameworks.displayservice@1.0.so +64768 2006 -1 /system/lib/vndk-R/android.frameworks.schedulerservice@1.0.so +64768 2007 -1 /system/lib/vndk-R/android.frameworks.sensorservice@1.0.so +64768 2008 -1 /system/lib/vndk-R/android.frameworks.stats@1.0.so +64768 2009 -1 /system/lib/vndk-R/android.hardware.atrace@1.0.so +64768 2010 -1 /system/lib/vndk-R/android.hardware.audio.common@2.0.so +64768 2011 -1 /system/lib/vndk-R/android.hardware.audio.common@4.0.so +64768 2012 -1 /system/lib/vndk-R/android.hardware.audio.common@5.0.so +64768 2013 -1 /system/lib/vndk-R/android.hardware.audio.effect@2.0.so +64768 2014 -1 /system/lib/vndk-R/android.hardware.audio.effect@4.0.so +64768 2015 -1 /system/lib/vndk-R/android.hardware.audio.effect@5.0.so +64768 2016 -1 /system/lib/vndk-R/android.hardware.audio@2.0.so +64768 2017 -1 /system/lib/vndk-R/android.hardware.audio@4.0.so +64768 2018 -1 /system/lib/vndk-R/android.hardware.audio@5.0.so +64768 2019 -1 /system/lib/vndk-R/android.hardware.authsecret@1.0.so +64768 2020 -1 /system/lib/vndk-R/android.hardware.automotive.audiocontrol@1.0.so +64768 2021 -1 /system/lib/vndk-R/android.hardware.automotive.can@1.0.so +64768 2022 -1 /system/lib/vndk-R/android.hardware.automotive.evs@1.0.so +64768 2023 -1 /system/lib/vndk-R/android.hardware.automotive.evs@1.1.so +64768 2024 -1 /system/lib/vndk-R/android.hardware.automotive.vehicle@2.0.so +64768 2025 -1 /system/lib/vndk-R/android.hardware.biometrics.face@1.0.so +64768 2026 -1 /system/lib/vndk-R/android.hardware.biometrics.fingerprint@2.1.so +64768 2027 -1 /system/lib/vndk-R/android.hardware.bluetooth.a2dp@1.0.so +64768 2028 -1 /system/lib/vndk-R/android.hardware.bluetooth.audio@2.0.so +64768 2029 -1 /system/lib/vndk-R/android.hardware.bluetooth@1.0.so +64768 2030 -1 /system/lib/vndk-R/android.hardware.boot@1.0.so +64768 2031 -1 /system/lib/vndk-R/android.hardware.boot@1.1.so +64768 2032 -1 /system/lib/vndk-R/android.hardware.broadcastradio@1.0.so +64768 2033 -1 /system/lib/vndk-R/android.hardware.broadcastradio@1.1.so +64768 2034 -1 /system/lib/vndk-R/android.hardware.broadcastradio@2.0.so +64768 2035 -1 /system/lib/vndk-R/android.hardware.camera.common@1.0.so +64768 2036 -1 /system/lib/vndk-R/android.hardware.camera.device@1.0.so +64768 2037 -1 /system/lib/vndk-R/android.hardware.camera.device@3.2.so +64768 2038 -1 /system/lib/vndk-R/android.hardware.camera.device@3.3.so +64768 2039 -1 /system/lib/vndk-R/android.hardware.camera.device@3.4.so +64768 2040 -1 /system/lib/vndk-R/android.hardware.camera.device@3.5.so +64768 2041 -1 /system/lib/vndk-R/android.hardware.camera.metadata@3.2.so +64768 2042 -1 /system/lib/vndk-R/android.hardware.camera.metadata@3.3.so +64768 2043 -1 /system/lib/vndk-R/android.hardware.camera.metadata@3.4.so +64768 2044 -1 /system/lib/vndk-R/android.hardware.camera.metadata@3.5.so +64768 2045 -1 /system/lib/vndk-R/android.hardware.camera.provider@2.4.so +64768 2046 -1 /system/lib/vndk-R/android.hardware.camera.provider@2.5.so +64768 2047 -1 /system/lib/vndk-R/android.hardware.cas.native@1.0.so +64768 2048 -1 /system/lib/vndk-R/android.hardware.cas@1.0.so +64768 2049 -1 /system/lib/vndk-R/android.hardware.cas@1.1.so +64768 2050 -1 /system/lib/vndk-R/android.hardware.configstore-utils.so +64768 2051 -1 /system/lib/vndk-R/android.hardware.configstore@1.0.so +64768 2052 -1 /system/lib/vndk-R/android.hardware.configstore@1.1.so +64768 2053 -1 /system/lib/vndk-R/android.hardware.confirmationui-support-lib.so +64768 2054 -1 /system/lib/vndk-R/android.hardware.confirmationui@1.0.so +64768 2055 -1 /system/lib/vndk-R/android.hardware.contexthub@1.0.so +64768 2056 -1 /system/lib/vndk-R/android.hardware.drm@1.0.so +64768 2057 -1 /system/lib/vndk-R/android.hardware.drm@1.1.so +64768 2058 -1 /system/lib/vndk-R/android.hardware.drm@1.2.so +64768 2059 -1 /system/lib/vndk-R/android.hardware.dumpstate@1.0.so +64768 2060 -1 /system/lib/vndk-R/android.hardware.fastboot@1.0.so +64768 2061 -1 /system/lib/vndk-R/android.hardware.gatekeeper@1.0.so +64768 2062 -1 /system/lib/vndk-R/android.hardware.gnss.measurement_corrections@1.0.so +64768 2063 -1 /system/lib/vndk-R/android.hardware.gnss.visibility_control@1.0.so +64768 2064 -1 /system/lib/vndk-R/android.hardware.gnss@1.0.so +64768 2065 -1 /system/lib/vndk-R/android.hardware.gnss@1.1.so +64768 2066 -1 /system/lib/vndk-R/android.hardware.gnss@2.0.so +64768 2067 -1 /system/lib/vndk-R/android.hardware.graphics.allocator@2.0.so +64768 2068 -1 /system/lib/vndk-R/android.hardware.graphics.allocator@3.0.so +64768 2069 -1 /system/lib/vndk-R/android.hardware.graphics.allocator@4.0.so +64768 2070 -1 /system/lib/vndk-R/android.hardware.graphics.bufferqueue@1.0.so +64768 2071 -1 /system/lib/vndk-R/android.hardware.graphics.bufferqueue@2.0.so +64768 2072 -1 /system/lib/vndk-R/android.hardware.graphics.composer@2.1.so +64768 2073 -1 /system/lib/vndk-R/android.hardware.graphics.composer@2.2.so +64768 2074 -1 /system/lib/vndk-R/android.hardware.graphics.composer@2.3.so +64768 2075 -1 /system/lib/vndk-R/android.hardware.graphics.composer@2.4.so +64768 2076 -1 /system/lib/vndk-R/android.hardware.health.storage@1.0.so +64768 2077 -1 /system/lib/vndk-R/android.hardware.health@1.0.so +64768 2078 -1 /system/lib/vndk-R/android.hardware.health@2.0.so +64768 2079 -1 /system/lib/vndk-R/android.hardware.input.classifier@1.0.so +64768 2080 -1 /system/lib/vndk-R/android.hardware.input.common@1.0.so +64768 2081 -1 /system/lib/vndk-R/android.hardware.ir@1.0.so +64768 2082 -1 /system/lib/vndk-R/android.hardware.keymaster@3.0.so +64768 2083 -1 /system/lib/vndk-R/android.hardware.keymaster@4.0.so +64768 2084 -1 /system/lib/vndk-R/android.hardware.light@2.0.so +64768 2085 -1 /system/lib/vndk-R/android.hardware.media.bufferpool@1.0.so +64768 2086 -1 /system/lib/vndk-R/android.hardware.media.bufferpool@2.0.so +64768 2087 -1 /system/lib/vndk-R/android.hardware.media.c2@1.0.so +64768 2088 -1 /system/lib/vndk-R/android.hardware.media.omx@1.0.so +64768 2089 -1 /system/lib/vndk-R/android.hardware.media@1.0.so +64768 2161 -1 /system/lib/vndk-R/libadf.so +64768 2090 -1 /system/lib/vndk-R/android.hardware.memtrack@1.0.so +64768 2091 -1 /system/lib/vndk-R/android.hardware.neuralnetworks@1.0.so +64768 2092 -1 /system/lib/vndk-R/android.hardware.neuralnetworks@1.1.so +64768 2093 -1 /system/lib/vndk-R/android.hardware.neuralnetworks@1.2.so +64768 2094 -1 /system/lib/vndk-R/android.hardware.neuralnetworks@1.3.so +64768 2095 -1 /system/lib/vndk-R/android.hardware.nfc@1.0.so +64768 2096 -1 /system/lib/vndk-R/android.hardware.nfc@1.1.so +64768 2097 -1 /system/lib/vndk-R/android.hardware.nfc@1.2.so +64768 2098 -1 /system/lib/vndk-R/android.hardware.oemlock@1.0.so +64768 2099 -1 /system/lib/vndk-R/android.hardware.power.stats@1.0.so +64768 2100 -1 /system/lib/vndk-R/android.hardware.power@1.0.so +64768 2101 -1 /system/lib/vndk-R/android.hardware.power@1.1.so +64768 2102 -1 /system/lib/vndk-R/android.hardware.power@1.2.so +64768 2103 -1 /system/lib/vndk-R/android.hardware.power@1.3.so +64768 2104 -1 /system/lib/vndk-R/android.hardware.radio.config@1.0.so +64768 2105 -1 /system/lib/vndk-R/android.hardware.radio.config@1.1.so +64768 2106 -1 /system/lib/vndk-R/android.hardware.radio.config@1.2.so +64768 2107 -1 /system/lib/vndk-R/android.hardware.radio.deprecated@1.0.so +64768 2108 -1 /system/lib/vndk-R/android.hardware.radio@1.0.so +64768 2109 -1 /system/lib/vndk-R/android.hardware.radio@1.1.so +64768 2110 -1 /system/lib/vndk-R/android.hardware.radio@1.2.so +64768 2111 -1 /system/lib/vndk-R/android.hardware.radio@1.3.so +64768 2112 -1 /system/lib/vndk-R/android.hardware.radio@1.4.so +64768 2113 -1 /system/lib/vndk-R/android.hardware.secure_element@1.0.so +64768 2114 -1 /system/lib/vndk-R/android.hardware.secure_element@1.1.so +64768 2115 -1 /system/lib/vndk-R/android.hardware.sensors@1.0.so +64768 2116 -1 /system/lib/vndk-R/android.hardware.sensors@2.0.so +64768 2117 -1 /system/lib/vndk-R/android.hardware.soundtrigger@2.0-core.so +64768 2118 -1 /system/lib/vndk-R/android.hardware.soundtrigger@2.0.so +64768 2119 -1 /system/lib/vndk-R/android.hardware.soundtrigger@2.1.so +64768 2120 -1 /system/lib/vndk-R/android.hardware.soundtrigger@2.2.so +64768 2121 -1 /system/lib/vndk-R/android.hardware.tetheroffload.config@1.0.so +64768 2122 -1 /system/lib/vndk-R/android.hardware.tetheroffload.control@1.0.so +64768 2123 -1 /system/lib/vndk-R/android.hardware.thermal@1.0.so +64768 2124 -1 /system/lib/vndk-R/android.hardware.thermal@1.1.so +64768 2125 -1 /system/lib/vndk-R/android.hardware.thermal@2.0.so +64768 2126 -1 /system/lib/vndk-R/android.hardware.tv.cec@1.0.so +64768 2127 -1 /system/lib/vndk-R/android.hardware.tv.cec@2.0.so +64768 2128 -1 /system/lib/vndk-R/android.hardware.tv.input@1.0.so +64768 2129 -1 /system/lib/vndk-R/android.hardware.tv.tuner@1.0.so +64768 2130 -1 /system/lib/vndk-R/android.hardware.usb.gadget@1.0.so +64768 2131 -1 /system/lib/vndk-R/android.hardware.usb@1.0.so +64768 2132 -1 /system/lib/vndk-R/android.hardware.usb@1.1.so +64768 2133 -1 /system/lib/vndk-R/android.hardware.usb@1.2.so +64768 2134 -1 /system/lib/vndk-R/android.hardware.vibrator@1.0.so +64768 2135 -1 /system/lib/vndk-R/android.hardware.vibrator@1.1.so +64768 2136 -1 /system/lib/vndk-R/android.hardware.vibrator@1.2.so +64768 2137 -1 /system/lib/vndk-R/android.hardware.vibrator@1.3.so +64768 2138 -1 /system/lib/vndk-R/android.hardware.vibrator@1.4.so +64768 2139 -1 /system/lib/vndk-R/android.hardware.vr@1.0.so +64768 2140 -1 /system/lib/vndk-R/android.hardware.weaver@1.0.so +64768 2141 -1 /system/lib/vndk-R/android.hardware.wifi.hostapd@1.0.so +64768 2142 -1 /system/lib/vndk-R/android.hardware.wifi.hostapd@1.1.so +64768 2143 -1 /system/lib/vndk-R/android.hardware.wifi.offload@1.0.so +64768 2144 -1 /system/lib/vndk-R/android.hardware.wifi.supplicant@1.0.so +64768 2145 -1 /system/lib/vndk-R/android.hardware.wifi.supplicant@1.1.so +64768 2146 -1 /system/lib/vndk-R/android.hardware.wifi.supplicant@1.2.so +64768 2147 -1 /system/lib/vndk-R/android.hardware.wifi.supplicant@1.3.so +64768 2148 -1 /system/lib/vndk-R/android.hardware.wifi@1.0.so +64768 2149 -1 /system/lib/vndk-R/android.hardware.wifi@1.1.so +64768 2150 -1 /system/lib/vndk-R/android.hardware.wifi@1.2.so +64768 2151 -1 /system/lib/vndk-R/android.hardware.wifi@1.3.so +64768 2152 -1 /system/lib/vndk-R/android.hardware.wifi@1.4.so +64768 2153 -1 /system/lib/vndk-R/android.hidl.allocator@1.0.so +64768 2154 -1 /system/lib/vndk-R/android.hidl.memory.block@1.0.so +64768 2155 -1 /system/lib/vndk-R/android.hidl.token@1.0-utils.so +64768 2156 -1 /system/lib/vndk-R/android.hidl.token@1.0.so +64768 2157 -1 /system/lib/vndk-R/android.system.net.netd@1.0.so +64768 2158 -1 /system/lib/vndk-R/android.system.net.netd@1.1.so +64768 2159 -1 /system/lib/vndk-R/android.system.suspend@1.0.so +64768 2160 -1 /system/lib/vndk-R/android.system.wifi.keystore@1.0.so +64768 2162 -1 /system/lib/vndk-R/libaudioroute.so +64768 2163 -1 /system/lib/vndk-R/libaudioutils.so +64768 2164 -1 /system/lib/vndk-R/libbinder.so +64768 2165 -1 /system/lib/vndk-R/libcamera_metadata.so +64768 2166 -1 /system/lib/vndk-R/libcap.so +64768 2167 -1 /system/lib/vndk-R/libclang_rt.scudo-arm-android.so +64768 2168 -1 /system/lib/vndk-R/libclang_rt.scudo_minimal-arm-android.so +64768 2169 -1 /system/lib/vndk-R/libclang_rt.ubsan_standalone-arm-android.so +64768 2170 -1 /system/lib/vndk-R/libcn-cbor.so +64768 2171 -1 /system/lib/vndk-R/libcodec2.so +64768 2172 -1 /system/lib/vndk-R/libcrypto.so +64768 2173 -1 /system/lib/vndk-R/libcrypto_utils.so +64768 2174 -1 /system/lib/vndk-R/libcurl.so +64768 2175 -1 /system/lib/vndk-R/libdiskconfig.so +64768 2176 -1 /system/lib/vndk-R/libdumpstateutil.so +64768 2177 -1 /system/lib/vndk-R/libevent.so +64768 2178 -1 /system/lib/vndk-R/libexif.so +64768 2179 -1 /system/lib/vndk-R/libexpat.so +64768 2180 -1 /system/lib/vndk-R/libfmq.so +64768 2181 -1 /system/lib/vndk-R/libgatekeeper.so +64768 2182 -1 /system/lib/vndk-R/libgui.so +64768 2183 -1 /system/lib/vndk-R/libhardware_legacy.so +64768 2184 -1 /system/lib/vndk-R/libhidlallocatorutils.so +64768 2185 -1 /system/lib/vndk-R/libjpeg.so +64768 2186 -1 /system/lib/vndk-R/libkeymaster_messages.so +64768 2187 -1 /system/lib/vndk-R/libkeymaster_portable.so +64768 2188 -1 /system/lib/vndk-R/libldacBT_abr.so +64768 2189 -1 /system/lib/vndk-R/libldacBT_enc.so +64768 2190 -1 /system/lib/vndk-R/liblz4.so +64768 2191 -1 /system/lib/vndk-R/libmedia_helper.so +64768 2192 -1 /system/lib/vndk-R/libmedia_omx.so +64768 2193 -1 /system/lib/vndk-R/libmemtrack.so +64768 2194 -1 /system/lib/vndk-R/libminijail.so +64768 2195 -1 /system/lib/vndk-R/libmkbootimg_abi_check.so +64768 2196 -1 /system/lib/vndk-R/libnetutils.so +64768 2197 -1 /system/lib/vndk-R/libnl.so +64768 2198 -1 /system/lib/vndk-R/libpcre2.so +64768 2199 -1 /system/lib/vndk-R/libpiex.so +64768 2200 -1 /system/lib/vndk-R/libpng.so +64768 2201 -1 /system/lib/vndk-R/libpower.so +64768 2202 -1 /system/lib/vndk-R/libprocinfo.so +64768 2203 -1 /system/lib/vndk-R/libprotobuf-cpp-full-3.9.1.so +64768 2204 -1 /system/lib/vndk-R/libprotobuf-cpp-lite-3.9.1.so +64768 2205 -1 /system/lib/vndk-R/libpuresoftkeymasterdevice.so +64768 2206 -1 /system/lib/vndk-R/libradio_metadata.so +64768 2207 -1 /system/lib/vndk-R/libselinux.so +64768 2208 -1 /system/lib/vndk-R/libsoftkeymasterdevice.so +64768 2209 -1 /system/lib/vndk-R/libspeexresampler.so +64768 2210 -1 /system/lib/vndk-R/libsqlite.so +64768 2211 -1 /system/lib/vndk-R/libssl.so +64768 2212 -1 /system/lib/vndk-R/libstagefright_bufferpool@2.0.so +64768 2213 -1 /system/lib/vndk-R/libstagefright_bufferqueue_helper.so +64768 2214 -1 /system/lib/vndk-R/libstagefright_foundation.so +64768 2215 -1 /system/lib/vndk-R/libstagefright_omx.so +64768 2216 -1 /system/lib/vndk-R/libstagefright_omx_utils.so +64768 2217 -1 /system/lib/vndk-R/libstagefright_xmlparser.so +64768 2218 -1 /system/lib/vndk-R/libsysutils.so +64768 2219 -1 /system/lib/vndk-R/libtinyalsa.so +64768 2220 -1 /system/lib/vndk-R/libtinyxml2.so +64768 2221 -1 /system/lib/vndk-R/libui.so +64768 2222 -1 /system/lib/vndk-R/libusbhost.so +64768 2223 -1 /system/lib/vndk-R/libwifi-system-iface.so +64768 2224 -1 /system/lib/vndk-R/libxml2.so +64768 2225 -1 /system/lib/vndk-R/libyuv.so +64768 2226 -1 /system/lib/vndk-R/libziparchive.so +23 18600 -1 /system/lib/vndk-sp-R +64768 2245 -1 /system/lib/vndk-sp-R/libbase.so +64768 2254 -1 /system/lib/vndk-sp-R/libhidlmemory.so +64768 2253 -1 /system/lib/vndk-sp-R/libhidlbase.so +64768 2228 -1 /system/lib/vndk-sp-R/android.hardware.graphics.common@1.0.so +64768 2244 -1 /system/lib/vndk-sp-R/libbacktrace.so +64768 2256 -1 /system/lib/vndk-sp-R/libjsoncpp.so +64768 2233 -1 /system/lib/vndk-sp-R/android.hardware.graphics.mapper@3.0.so +23 33285 -1 /system/lib/vndk-sp-R/hw +64768 2240 -1 /system/lib/vndk-sp-R/hw/android.hidl.memory@1.0-impl.so +64768 2230 -1 /system/lib/vndk-sp-R/android.hardware.graphics.common@1.2.so +64768 2238 -1 /system/lib/vndk-sp-R/android.hidl.safe_union@1.0.so +64768 2247 -1 /system/lib/vndk-sp-R/libbinderthreadstate.so +64768 2243 -1 /system/lib/vndk-sp-R/libRS_internal.so +64768 2235 -1 /system/lib/vndk-sp-R/android.hardware.renderscript@1.0.so +64768 2231 -1 /system/lib/vndk-sp-R/android.hardware.graphics.mapper@2.0.so +64768 2246 -1 /system/lib/vndk-sp-R/libbcinfo.so +64768 2249 -1 /system/lib/vndk-sp-R/libc++.so +64768 2248 -1 /system/lib/vndk-sp-R/libblas.so +64768 2242 -1 /system/lib/vndk-sp-R/libRSDriver.so +64768 2236 -1 /system/lib/vndk-sp-R/android.hidl.memory.token@1.0.so +64768 2251 -1 /system/lib/vndk-sp-R/libcutils.so +64768 2250 -1 /system/lib/vndk-sp-R/libcompiler_rt.so +64768 2257 -1 /system/lib/vndk-sp-R/liblzma.so +64768 2260 -1 /system/lib/vndk-sp-R/libutils.so +64768 2229 -1 /system/lib/vndk-sp-R/android.hardware.graphics.common@1.1.so +64768 2252 -1 /system/lib/vndk-sp-R/libhardware.so +64768 2259 -1 /system/lib/vndk-sp-R/libunwindstack.so +64768 2241 -1 /system/lib/vndk-sp-R/libRSCpuRef.so +64768 2262 -1 /system/lib/vndk-sp-R/libz.so +64768 2255 -1 /system/lib/vndk-sp-R/libion.so +64768 2232 -1 /system/lib/vndk-sp-R/android.hardware.graphics.mapper@2.1.so +64768 2261 -1 /system/lib/vndk-sp-R/libutilscallstack.so +64768 2237 -1 /system/lib/vndk-sp-R/android.hidl.memory@1.0.so +64768 2234 -1 /system/lib/vndk-sp-R/android.hardware.graphics.mapper@4.0.so +64768 2258 -1 /system/lib/vndk-sp-R/libprocessgroup.so +2054 44 -1 /system/lib/libfruit.so +23 32095 -1 /system/fonts +64768 1000 -1 /system/fonts/AndroidClock.ttf +64768 1001 -1 /system/fonts/CarroisGothicSC-Regular.ttf +64768 1002 -1 /system/fonts/ComingSoon.ttf +64768 1003 -1 /system/fonts/CutiveMono.ttf +64768 1004 -1 /system/fonts/DancingScript-Bold.ttf +64768 1005 -1 /system/fonts/DancingScript-Regular.ttf +64768 1230 -1 /system/fonts/DroidSans-Bold.ttf +64768 1237 -1 /system/fonts/DroidSans.ttf +64768 1008 -1 /system/fonts/DroidSansMono.ttf +64768 1009 -1 /system/fonts/NotoColorEmoji.ttf +64768 1010 -1 /system/fonts/NotoNaskhArabic-Bold.ttf +64768 1011 -1 /system/fonts/NotoNaskhArabic-Regular.ttf +64768 1012 -1 /system/fonts/NotoNaskhArabicUI-Bold.ttf +64768 1013 -1 /system/fonts/NotoNaskhArabicUI-Regular.ttf +64768 1014 -1 /system/fonts/NotoSansAdlam-Regular.ttf +64768 1015 -1 /system/fonts/NotoSansAhom-Regular.otf +64768 1016 -1 /system/fonts/NotoSansAnatolianHieroglyphs-Regular.otf +64768 1017 -1 /system/fonts/NotoSansArmenian-Bold.otf +64768 1018 -1 /system/fonts/NotoSansArmenian-Medium.otf +64768 1019 -1 /system/fonts/NotoSansArmenian-Regular.otf +64768 1020 -1 /system/fonts/NotoSansAvestan-Regular.ttf +64768 1021 -1 /system/fonts/NotoSansBalinese-Regular.ttf +64768 1022 -1 /system/fonts/NotoSansBamum-Regular.ttf +64768 1023 -1 /system/fonts/NotoSansBassaVah-Regular.otf +64768 1024 -1 /system/fonts/NotoSansBatak-Regular.ttf +64768 1025 -1 /system/fonts/NotoSansBengali-Bold.otf +64768 1026 -1 /system/fonts/NotoSansBengali-Medium.otf +64768 1027 -1 /system/fonts/NotoSansBengali-Regular.otf +64768 1028 -1 /system/fonts/NotoSansBengaliUI-Bold.otf +64768 1029 -1 /system/fonts/NotoSansBengaliUI-Medium.otf +64768 1030 -1 /system/fonts/NotoSansBengaliUI-Regular.otf +64768 1031 -1 /system/fonts/NotoSansBhaiksuki-Regular.otf +64768 1032 -1 /system/fonts/NotoSansBrahmi-Regular.ttf +64768 1033 -1 /system/fonts/NotoSansBuginese-Regular.ttf +64768 1034 -1 /system/fonts/NotoSansBuhid-Regular.ttf +64768 1035 -1 /system/fonts/NotoSansCJK-Regular.ttc +64768 1036 -1 /system/fonts/NotoSansCanadianAboriginal-Regular.ttf +64768 1037 -1 /system/fonts/NotoSansCarian-Regular.ttf +64768 1038 -1 /system/fonts/NotoSansChakma-Regular.otf +64768 1039 -1 /system/fonts/NotoSansCham-Bold.ttf +64768 1040 -1 /system/fonts/NotoSansCham-Regular.ttf +64768 1041 -1 /system/fonts/NotoSansCherokee-Regular.ttf +64768 1042 -1 /system/fonts/NotoSansCoptic-Regular.ttf +64768 1043 -1 /system/fonts/NotoSansCuneiform-Regular.ttf +64768 1044 -1 /system/fonts/NotoSansCypriot-Regular.ttf +64768 1045 -1 /system/fonts/NotoSansDeseret-Regular.ttf +64768 1046 -1 /system/fonts/NotoSansDevanagari-Bold.otf +64768 1047 -1 /system/fonts/NotoSansDevanagari-Medium.otf +64768 1048 -1 /system/fonts/NotoSansDevanagari-Regular.otf +64768 1049 -1 /system/fonts/NotoSansDevanagariUI-Bold.otf +64768 1050 -1 /system/fonts/NotoSansDevanagariUI-Medium.otf +64768 1051 -1 /system/fonts/NotoSansDevanagariUI-Regular.otf +64768 1052 -1 /system/fonts/NotoSansEgyptianHieroglyphs-Regular.ttf +64768 1053 -1 /system/fonts/NotoSansElbasan-Regular.otf +64768 1054 -1 /system/fonts/NotoSansEthiopic-Bold.ttf +64768 1055 -1 /system/fonts/NotoSansEthiopic-Regular.ttf +64768 1056 -1 /system/fonts/NotoSansGeorgian-Bold.otf +64768 1057 -1 /system/fonts/NotoSansGeorgian-Medium.otf +64768 1058 -1 /system/fonts/NotoSansGeorgian-Regular.otf +64768 1059 -1 /system/fonts/NotoSansGlagolitic-Regular.ttf +64768 1060 -1 /system/fonts/NotoSansGothic-Regular.ttf +64768 1061 -1 /system/fonts/NotoSansGujarati-Bold.ttf +64768 1062 -1 /system/fonts/NotoSansGujarati-Regular.ttf +64768 1063 -1 /system/fonts/NotoSansGujaratiUI-Bold.ttf +64768 1064 -1 /system/fonts/NotoSansGujaratiUI-Regular.ttf +64768 1065 -1 /system/fonts/NotoSansGurmukhi-Bold.ttf +64768 1066 -1 /system/fonts/NotoSansGurmukhi-Regular.ttf +64768 1067 -1 /system/fonts/NotoSansGurmukhiUI-Bold.ttf +64768 1068 -1 /system/fonts/NotoSansGurmukhiUI-Regular.ttf +64768 1069 -1 /system/fonts/NotoSansHanunoo-Regular.ttf +64768 1070 -1 /system/fonts/NotoSansHatran-Regular.otf +64768 1071 -1 /system/fonts/NotoSansHebrew-Bold.ttf +64768 1072 -1 /system/fonts/NotoSansHebrew-Regular.ttf +64768 1073 -1 /system/fonts/NotoSansImperialAramaic-Regular.ttf +64768 1074 -1 /system/fonts/NotoSansInscriptionalPahlavi-Regular.ttf +64768 1075 -1 /system/fonts/NotoSansInscriptionalParthian-Regular.ttf +64768 1076 -1 /system/fonts/NotoSansJavanese-Regular.ttf +64768 1077 -1 /system/fonts/NotoSansKaithi-Regular.ttf +64768 1078 -1 /system/fonts/NotoSansKannada-Bold.ttf +64768 1079 -1 /system/fonts/NotoSansKannada-Regular.ttf +64768 1080 -1 /system/fonts/NotoSansKannadaUI-Bold.ttf +64768 1081 -1 /system/fonts/NotoSansKannadaUI-Regular.ttf +64768 1082 -1 /system/fonts/NotoSansKayahLi-Regular.ttf +64768 1083 -1 /system/fonts/NotoSansKharoshthi-Regular.ttf +64768 1084 -1 /system/fonts/NotoSansKhmer-VF.ttf +64768 1085 -1 /system/fonts/NotoSansKhmerUI-Bold.ttf +64768 1086 -1 /system/fonts/NotoSansKhmerUI-Regular.ttf +64768 1087 -1 /system/fonts/NotoSansLao-Bold.ttf +64768 1088 -1 /system/fonts/NotoSansLao-Regular.ttf +64768 1089 -1 /system/fonts/NotoSansLaoUI-Bold.ttf +64768 1090 -1 /system/fonts/NotoSansLaoUI-Regular.ttf +64768 1091 -1 /system/fonts/NotoSansLepcha-Regular.ttf +64768 1092 -1 /system/fonts/NotoSansLimbu-Regular.ttf +64768 1093 -1 /system/fonts/NotoSansLinearA-Regular.otf +64768 1094 -1 /system/fonts/NotoSansLinearB-Regular.ttf +64768 1095 -1 /system/fonts/NotoSansLisu-Regular.ttf +64768 1096 -1 /system/fonts/NotoSansLycian-Regular.ttf +64768 1097 -1 /system/fonts/NotoSansLydian-Regular.ttf +64768 1098 -1 /system/fonts/NotoSansMalayalam-Bold.otf +64768 1099 -1 /system/fonts/NotoSansMalayalam-Medium.otf +64768 1100 -1 /system/fonts/NotoSansMalayalam-Regular.otf +64768 1101 -1 /system/fonts/NotoSansMalayalamUI-Bold.otf +64768 1102 -1 /system/fonts/NotoSansMalayalamUI-Medium.otf +64768 1103 -1 /system/fonts/NotoSansMalayalamUI-Regular.otf +64768 1104 -1 /system/fonts/NotoSansMandaic-Regular.ttf +64768 1105 -1 /system/fonts/NotoSansManichaean-Regular.otf +64768 1106 -1 /system/fonts/NotoSansMarchen-Regular.otf +64768 1107 -1 /system/fonts/NotoSansMeeteiMayek-Regular.ttf +64768 1108 -1 /system/fonts/NotoSansMeroitic-Regular.otf +64768 1109 -1 /system/fonts/NotoSansMiao-Regular.otf +64768 1110 -1 /system/fonts/NotoSansMongolian-Regular.ttf +64768 1111 -1 /system/fonts/NotoSansMro-Regular.otf +64768 1112 -1 /system/fonts/NotoSansMultani-Regular.otf +64768 1113 -1 /system/fonts/NotoSansMyanmar-Bold.otf +64768 1114 -1 /system/fonts/NotoSansMyanmar-Medium.otf +64768 1115 -1 /system/fonts/NotoSansMyanmar-Regular.otf +64768 1116 -1 /system/fonts/NotoSansMyanmarUI-Bold.otf +64768 1117 -1 /system/fonts/NotoSansMyanmarUI-Medium.otf +64768 1118 -1 /system/fonts/NotoSansMyanmarUI-Regular.otf +64768 1119 -1 /system/fonts/NotoSansNKo-Regular.ttf +64768 1120 -1 /system/fonts/NotoSansNabataean-Regular.otf +64768 1121 -1 /system/fonts/NotoSansNewTaiLue-Regular.ttf +64768 1122 -1 /system/fonts/NotoSansNewa-Regular.otf +64768 1123 -1 /system/fonts/NotoSansOgham-Regular.ttf +64768 1124 -1 /system/fonts/NotoSansOlChiki-Regular.ttf +64768 1125 -1 /system/fonts/NotoSansOldItalic-Regular.ttf +64768 1126 -1 /system/fonts/NotoSansOldNorthArabian-Regular.otf +64768 1127 -1 /system/fonts/NotoSansOldPermic-Regular.otf +64768 1128 -1 /system/fonts/NotoSansOldPersian-Regular.ttf +64768 1129 -1 /system/fonts/NotoSansOldSouthArabian-Regular.ttf +64768 1130 -1 /system/fonts/NotoSansOldTurkic-Regular.ttf +64768 1131 -1 /system/fonts/NotoSansOriya-Bold.ttf +64768 1132 -1 /system/fonts/NotoSansOriya-Regular.ttf +64768 1133 -1 /system/fonts/NotoSansOriyaUI-Bold.ttf +64768 1134 -1 /system/fonts/NotoSansOriyaUI-Regular.ttf +64768 1135 -1 /system/fonts/NotoSansOsage-Regular.ttf +64768 1136 -1 /system/fonts/NotoSansOsmanya-Regular.ttf +64768 1137 -1 /system/fonts/NotoSansPahawhHmong-Regular.otf +64768 1138 -1 /system/fonts/NotoSansPalmyrene-Regular.otf +64768 1139 -1 /system/fonts/NotoSansPauCinHau-Regular.otf +64768 1140 -1 /system/fonts/NotoSansPhagsPa-Regular.ttf +64768 1141 -1 /system/fonts/NotoSansPhoenician-Regular.ttf +64768 1142 -1 /system/fonts/NotoSansRejang-Regular.ttf +64768 1143 -1 /system/fonts/NotoSansRunic-Regular.ttf +64768 1144 -1 /system/fonts/NotoSansSamaritan-Regular.ttf +64768 1145 -1 /system/fonts/NotoSansSaurashtra-Regular.ttf +64768 1146 -1 /system/fonts/NotoSansSharada-Regular.otf +64768 1147 -1 /system/fonts/NotoSansShavian-Regular.ttf +64768 1148 -1 /system/fonts/NotoSansSinhala-Bold.otf +64768 1149 -1 /system/fonts/NotoSansSinhala-Medium.otf +64768 1150 -1 /system/fonts/NotoSansSinhala-Regular.otf +64768 1151 -1 /system/fonts/NotoSansSinhalaUI-Bold.otf +64768 1152 -1 /system/fonts/NotoSansSinhalaUI-Medium.otf +64768 1153 -1 /system/fonts/NotoSansSinhalaUI-Regular.otf +64768 1154 -1 /system/fonts/NotoSansSoraSompeng-Regular.otf +64768 1155 -1 /system/fonts/NotoSansSundanese-Regular.ttf +64768 1156 -1 /system/fonts/NotoSansSylotiNagri-Regular.ttf +64768 1157 -1 /system/fonts/NotoSansSymbols-Regular-Subsetted.ttf +64768 1158 -1 /system/fonts/NotoSansSymbols-Regular-Subsetted2.ttf +64768 1159 -1 /system/fonts/NotoSansSyriacEastern-Regular.ttf +64768 1160 -1 /system/fonts/NotoSansSyriacEstrangela-Regular.ttf +64768 1161 -1 /system/fonts/NotoSansSyriacWestern-Regular.ttf +64768 1162 -1 /system/fonts/NotoSansTagalog-Regular.ttf +64768 1163 -1 /system/fonts/NotoSansTagbanwa-Regular.ttf +64768 1164 -1 /system/fonts/NotoSansTaiLe-Regular.ttf +64768 1165 -1 /system/fonts/NotoSansTaiTham-Regular.ttf +64768 1166 -1 /system/fonts/NotoSansTaiViet-Regular.ttf +64768 1167 -1 /system/fonts/NotoSansTamil-Bold.otf +64768 1168 -1 /system/fonts/NotoSansTamil-Medium.otf +64768 1169 -1 /system/fonts/NotoSansTamil-Regular.otf +64768 1170 -1 /system/fonts/NotoSansTamilUI-Bold.otf +64768 1171 -1 /system/fonts/NotoSansTamilUI-Medium.otf +64768 1172 -1 /system/fonts/NotoSansTamilUI-Regular.otf +64768 1173 -1 /system/fonts/NotoSansTelugu-Bold.ttf +64768 1174 -1 /system/fonts/NotoSansTelugu-Regular.ttf +64768 1175 -1 /system/fonts/NotoSansTeluguUI-Bold.ttf +64768 1176 -1 /system/fonts/NotoSansTeluguUI-Regular.ttf +64768 1177 -1 /system/fonts/NotoSansThaana-Bold.ttf +64768 1178 -1 /system/fonts/NotoSansThaana-Regular.ttf +64768 1179 -1 /system/fonts/NotoSansThai-Bold.ttf +64768 1180 -1 /system/fonts/NotoSansThai-Regular.ttf +64768 1181 -1 /system/fonts/NotoSansThaiUI-Bold.ttf +64768 1182 -1 /system/fonts/NotoSansThaiUI-Regular.ttf +64768 1183 -1 /system/fonts/NotoSansTibetan-Bold.ttf +64768 1184 -1 /system/fonts/NotoSansTibetan-Regular.ttf +64768 1185 -1 /system/fonts/NotoSansTifinagh-Regular.ttf +64768 1186 -1 /system/fonts/NotoSansUgaritic-Regular.ttf +64768 1187 -1 /system/fonts/NotoSansVai-Regular.ttf +64768 1188 -1 /system/fonts/NotoSansYi-Regular.ttf +64768 1189 -1 /system/fonts/NotoSerif-Bold.ttf +64768 1190 -1 /system/fonts/NotoSerif-BoldItalic.ttf +64768 1191 -1 /system/fonts/NotoSerif-Italic.ttf +64768 1192 -1 /system/fonts/NotoSerif-Regular.ttf +64768 1193 -1 /system/fonts/NotoSerifArmenian-Bold.otf +64768 1194 -1 /system/fonts/NotoSerifArmenian-Regular.otf +64768 1195 -1 /system/fonts/NotoSerifBengali-Bold.ttf +64768 1196 -1 /system/fonts/NotoSerifBengali-Regular.ttf +64768 1197 -1 /system/fonts/NotoSerifCJK-Regular.ttc +64768 1198 -1 /system/fonts/NotoSerifDevanagari-Bold.ttf +64768 1199 -1 /system/fonts/NotoSerifDevanagari-Regular.ttf +64768 1200 -1 /system/fonts/NotoSerifEthiopic-Bold.otf +64768 1201 -1 /system/fonts/NotoSerifEthiopic-Regular.otf +64768 1202 -1 /system/fonts/NotoSerifGeorgian-Bold.otf +64768 1203 -1 /system/fonts/NotoSerifGeorgian-Regular.otf +64768 1204 -1 /system/fonts/NotoSerifGujarati-Bold.ttf +64768 1205 -1 /system/fonts/NotoSerifGujarati-Regular.ttf +64768 1206 -1 /system/fonts/NotoSerifGurmukhi-Bold.otf +64768 1207 -1 /system/fonts/NotoSerifGurmukhi-Regular.otf +64768 1208 -1 /system/fonts/NotoSerifHebrew-Bold.ttf +64768 1209 -1 /system/fonts/NotoSerifHebrew-Regular.ttf +64768 1210 -1 /system/fonts/NotoSerifKannada-Bold.ttf +64768 1211 -1 /system/fonts/NotoSerifKannada-Regular.ttf +64768 1212 -1 /system/fonts/NotoSerifKhmer-Bold.otf +64768 1213 -1 /system/fonts/NotoSerifKhmer-Regular.otf +64768 1214 -1 /system/fonts/NotoSerifLao-Bold.ttf +64768 1215 -1 /system/fonts/NotoSerifLao-Regular.ttf +64768 1216 -1 /system/fonts/NotoSerifMalayalam-Bold.ttf +64768 1217 -1 /system/fonts/NotoSerifMalayalam-Regular.ttf +64768 1218 -1 /system/fonts/NotoSerifMyanmar-Bold.otf +64768 1219 -1 /system/fonts/NotoSerifMyanmar-Regular.otf +64768 1220 -1 /system/fonts/NotoSerifSinhala-Bold.otf +64768 1221 -1 /system/fonts/NotoSerifSinhala-Regular.otf +64768 1222 -1 /system/fonts/NotoSerifTamil-Bold.otf +64768 1223 -1 /system/fonts/NotoSerifTamil-Regular.otf +64768 1224 -1 /system/fonts/NotoSerifTelugu-Bold.ttf +64768 1228 -1 /system/fonts/Roboto-Black.ttf +64768 1225 -1 /system/fonts/NotoSerifTelugu-Regular.ttf +64768 1226 -1 /system/fonts/NotoSerifThai-Bold.ttf +64768 1227 -1 /system/fonts/NotoSerifThai-Regular.ttf +64768 1229 -1 /system/fonts/Roboto-BlackItalic.ttf +64768 1230 -1 /system/fonts/Roboto-Bold.ttf +64768 1231 -1 /system/fonts/Roboto-BoldItalic.ttf +64768 1232 -1 /system/fonts/Roboto-Italic.ttf +64768 1233 -1 /system/fonts/Roboto-Light.ttf +64768 1234 -1 /system/fonts/Roboto-LightItalic.ttf +64768 1235 -1 /system/fonts/Roboto-Medium.ttf +64768 1236 -1 /system/fonts/Roboto-MediumItalic.ttf +64768 1237 -1 /system/fonts/Roboto-Regular.ttf +64768 1238 -1 /system/fonts/Roboto-Thin.ttf +64768 1239 -1 /system/fonts/Roboto-ThinItalic.ttf +64768 1240 -1 /system/fonts/RobotoCondensed-Bold.ttf +64768 1241 -1 /system/fonts/RobotoCondensed-BoldItalic.ttf +64768 1242 -1 /system/fonts/RobotoCondensed-Italic.ttf +64768 1243 -1 /system/fonts/RobotoCondensed-Light.ttf +64768 1244 -1 /system/fonts/RobotoCondensed-LightItalic.ttf +64768 1245 -1 /system/fonts/RobotoCondensed-Medium.ttf +64768 1246 -1 /system/fonts/RobotoCondensed-MediumItalic.ttf +64768 1247 -1 /system/fonts/RobotoCondensed-Regular.ttf +64768 1248 -1 /system/fonts/SourceSansPro-Bold.ttf +64768 1249 -1 /system/fonts/SourceSansPro-BoldItalic.ttf +64768 1250 -1 /system/fonts/SourceSansPro-Italic.ttf +64768 1251 -1 /system/fonts/SourceSansPro-Regular.ttf +64768 1252 -1 /system/fonts/SourceSansPro-SemiBold.ttf +64768 1253 -1 /system/fonts/SourceSansPro-SemiBoldItalic.ttf +23 177182 -1 /system/priv-app +23 1495634 -1 /system/priv-app/DocumentsUIGoogle +64768 3022 -1 /system/priv-app/DocumentsUIGoogle/DocumentsUIGoogle.apk +23 1494437 -1 /system/priv-app/UserDictionaryProvider +64768 3102 -1 /system/priv-app/UserDictionaryProvider/UserDictionaryProvider.apk +23 1481989 -1 /system/priv-app/CalendarProvider +64768 3012 -1 /system/priv-app/CalendarProvider/CalendarProvider.apk +23 180746 -1 /system/priv-app/ONS +64768 3070 -1 /system/priv-app/ONS/ONS.apk +23 1559103 -1 /system/priv-app/SharedStorageBackup +64768 3080 -1 /system/priv-app/SharedStorageBackup/SharedStorageBackup.apk +23 1559105 -1 /system/priv-app/NetworkPermissionConfig +64768 3066 -1 /system/priv-app/NetworkPermissionConfig/NetworkPermissionConfig.apk +23 180812 -1 /system/priv-app/TelephonyProvider +64768 3098 -1 /system/priv-app/TelephonyProvider/TelephonyProvider.apk +23 180725 -1 /system/priv-app/qcrilmsgtunnel +64768 3110 -1 /system/priv-app/qcrilmsgtunnel/qcrilmsgtunnel.apk +23 1426403 -1 /system/priv-app/DownloadProvider +64768 3024 -1 /system/priv-app/DownloadProvider/DownloadProvider.apk +23 1494432 -1 /system/priv-app/ContactsProvider +64768 3018 -1 /system/priv-app/ContactsProvider/ContactsProvider.apk +23 1559107 -1 /system/priv-app/CtsShimPrivPrebuilt +64768 3020 -1 /system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk +23 1559109 -1 /system/priv-app/Shell +64768 3082 -1 /system/priv-app/Shell/Shell.apk +23 1559111 -1 /system/priv-app/StatementService +64768 3086 -1 /system/priv-app/StatementService/StatementService.apk +23 1486537 -1 /system/priv-app/BlockedNumberProvider +64768 3008 -1 /system/priv-app/BlockedNumberProvider/BlockedNumberProvider.apk +23 1559113 -1 /system/priv-app/DownloadProviderUi +64768 3026 -1 /system/priv-app/DownloadProviderUi/DownloadProviderUi.apk +23 1426156 -1 /system/priv-app/MediaProvider +23 1489912 -1 /system/priv-app/MediaProvider/lib +23 1489913 -1 /system/priv-app/MediaProvider/lib/arm64 +64768 2537 -1 /system/priv-app/MediaProvider/lib/arm64/libfuse.so +64768 2538 -1 /system/priv-app/MediaProvider/lib/arm64/libfuse_jni.so +64768 3054 -1 /system/priv-app/MediaProvider/MediaProvider.apk +23 180680 -1 /system/priv-app/Telecom +23 181146 -1 /system/priv-app/Telecom/oat +23 181148 -1 /system/priv-app/Telecom/oat/arm64 +64768 3095 -1 /system/priv-app/Telecom/oat/arm64/Telecom.odex +64768 3096 -1 /system/priv-app/Telecom/oat/arm64/Telecom.vdex +64768 3092 -1 /system/priv-app/Telecom/Telecom.apk +23 1559115 -1 /system/priv-app/VpnDialogs +64768 3104 -1 /system/priv-app/VpnDialogs/VpnDialogs.apk +23 1559117 -1 /system/priv-app/TimeZoneUpdater +64768 3100 -1 /system/priv-app/TimeZoneUpdater/TimeZoneUpdater.apk +23 1559119 -1 /system/priv-app/ExternalStorageProvider +64768 3030 -1 /system/priv-app/ExternalStorageProvider/ExternalStorageProvider.apk +23 1559121 -1 /system/priv-app/BackupRestoreConfirmation +64768 3006 -1 /system/priv-app/BackupRestoreConfirmation/BackupRestoreConfirmation.apk +23 1559123 -1 /system/priv-app/ManagedProvisioning +64768 3052 -1 /system/priv-app/ManagedProvisioning/ManagedProvisioning.apk +23 1559125 -1 /system/priv-app/DynamicSystemInstallationService +64768 3028 -1 /system/priv-app/DynamicSystemInstallationService/DynamicSystemInstallationService.apk +23 180801 -1 /system/priv-app/CNEService +64768 3010 -1 /system/priv-app/CNEService/CNEService.apk +23 1559127 -1 /system/priv-app/BackupEncryption +64768 3004 -1 /system/priv-app/BackupEncryption/BackupEncryption.apk +23 1559129 -1 /system/priv-app/MmsService +64768 3060 -1 /system/priv-app/MmsService/MmsService.apk +23 1559131 -1 /system/priv-app/InputDevices +23 1559132 -1 /system/priv-app/InputDevices/oat +23 1559133 -1 /system/priv-app/InputDevices/oat/arm64 +64768 3048 -1 /system/priv-app/InputDevices/oat/arm64/InputDevices.vdex +64768 3047 -1 /system/priv-app/InputDevices/oat/arm64/InputDevices.odex +64768 3044 -1 /system/priv-app/InputDevices/InputDevices.apk +23 180590 -1 /system/priv-app/FusedLocation +23 183740 -1 /system/priv-app/FusedLocation/oat +23 183741 -1 /system/priv-app/FusedLocation/oat/arm64 +64768 3036 -1 /system/priv-app/FusedLocation/oat/arm64/FusedLocation.vdex +64768 3035 -1 /system/priv-app/FusedLocation/oat/arm64/FusedLocation.odex +64768 3032 -1 /system/priv-app/FusedLocation/FusedLocation.apk +23 1559137 -1 /system/priv-app/CallLogBackup +64768 3014 -1 /system/priv-app/CallLogBackup/CallLogBackup.apk +23 1559139 -1 /system/priv-app/CellBroadcastAppPlatform +64768 3016 -1 /system/priv-app/CellBroadcastAppPlatform/CellBroadcastAppPlatform.apk +23 180724 -1 /system/priv-app/SettingsProvider +64768 3074 -1 /system/priv-app/SettingsProvider/SettingsProvider.apk +23 183303 -1 /system/priv-app/SettingsProvider/oat +23 183304 -1 /system/priv-app/SettingsProvider/oat/arm64 +64768 3078 -1 /system/priv-app/SettingsProvider/oat/arm64/SettingsProvider.vdex +64768 3077 -1 /system/priv-app/SettingsProvider/oat/arm64/SettingsProvider.odex +23 1559141 -1 /system/priv-app/WifiStackPermissionConfig +64768 3108 -1 /system/priv-app/WifiStackPermissionConfig/WifiStackPermissionConfig.apk +23 1559143 -1 /system/priv-app/ProxyHandler +64768 3072 -1 /system/priv-app/ProxyHandler/ProxyHandler.apk +23 1559145 -1 /system/priv-app/GooglePackageInstaller +64768 3040 -1 /system/priv-app/GooglePackageInstaller/GooglePackageInstaller.apk +23 180603 -1 /system/priv-app/TeleService +64768 3090 -1 /system/priv-app/TeleService/TeleService.apk +23 1559147 -1 /system/priv-app/LocalTransport +64768 3050 -1 /system/priv-app/LocalTransport/LocalTransport.apk +23 231734 -1 /system/priv-app/TagGoogle +64768 3088 -1 /system/priv-app/TagGoogle/TagGoogle.apk +23 1426268 -1 /system/priv-app/MtpService +64768 3062 -1 /system/priv-app/MtpService/MtpService.apk +23 1559149 -1 /system/priv-app/MusicFX +64768 3064 -1 /system/priv-app/MusicFX/MusicFX.apk +23 180682 -1 /system/priv-app/NetworkStack +64768 3068 -1 /system/priv-app/NetworkStack/NetworkStack.apk +23 1559151 -1 /system/priv-app/SoundPicker +64768 3084 -1 /system/priv-app/SoundPicker/SoundPicker.apk +23 1559153 -1 /system/priv-app/GoogleExtServices +64768 3038 -1 /system/priv-app/GoogleExtServices/GoogleExtServices.apk +23 472553 -1 /system/priv-app/GooglePermissionController +64768 3042 -1 /system/priv-app/GooglePermissionController/GooglePermissionController.apk +23 180701 -1 /system/priv-app/WifiStack +64768 3106 -1 /system/priv-app/WifiStack/WifiStack.apk +26 19554 -1 /system/product +23 19555 -1 /system/bin +64768 188 -1 /system/bin/abb +64768 546 -1 /system/bin/acpi +64768 190 -1 /system/bin/adbd +64768 191 -1 /system/bin/am +64768 192 -1 /system/bin/apexd +64768 195 -1 /system/bin/app_process +64768 194 -1 /system/bin/app_process32 +64768 195 -1 /system/bin/app_process64 +64768 196 -1 /system/bin/appops +64768 197 -1 /system/bin/appwidget +64768 198 -1 /system/bin/arping +64768 199 -1 /system/bin/art_apex_boot_integrity +64768 200 -1 /system/bin/atrace +64768 201 -1 /system/bin/audioserver +64768 202 -1 /system/bin/auditctl +64768 203 -1 /system/bin/avbctl +64768 204 -1 /system/bin/awk +64768 546 -1 /system/bin/base64 +64768 546 -1 /system/bin/basename +64768 546 -1 /system/bin/bc +64768 208 -1 /system/bin/bcc +64768 209 -1 /system/bin/blank_screen +64768 210 -1 /system/bin/blkid +64768 546 -1 /system/bin/blockdev +64768 212 -1 /system/bin/bmgr +64768 213 -1 /system/bin/bootanimation +64768 214 -1 /system/bin/bootctl +64768 215 -1 /system/bin/bootstat +23 19557 -1 /system/bin/bootstrap +64768 217 -1 /system/bin/bootstrap/linker_asan +64768 218 -1 /system/bin/bootstrap/linker_asan64 +64768 217 -1 /system/bin/bootstrap/linker +64768 218 -1 /system/bin/bootstrap/linker64 +64768 221 -1 /system/bin/boringssl_self_test32 +64768 222 -1 /system/bin/boringssl_self_test64 +64768 223 -1 /system/bin/bpfloader +64768 224 -1 /system/bin/bu +64768 225 -1 /system/bin/bugreport +64768 226 -1 /system/bin/bugreportz +64768 229 -1 /system/bin/bunzip2 +64768 229 -1 /system/bin/bzcat +64768 229 -1 /system/bin/bzip2 +64768 546 -1 /system/bin/cal +64768 231 -1 /system/bin/cameraserver +64768 546 -1 /system/bin/cat +64768 233 -1 /system/bin/charger +64768 546 -1 /system/bin/chcon +64768 546 -1 /system/bin/chgrp +64768 546 -1 /system/bin/chmod +64768 546 -1 /system/bin/chown +64768 546 -1 /system/bin/chroot +64768 546 -1 /system/bin/chrt +64768 546 -1 /system/bin/cksum +64768 241 -1 /system/bin/clatd +64768 546 -1 /system/bin/clear +64768 243 -1 /system/bin/cmd +64768 546 -1 /system/bin/cmp +64768 546 -1 /system/bin/comm +64768 246 -1 /system/bin/content +64768 546 -1 /system/bin/cp +64768 546 -1 /system/bin/cpio +64768 249 -1 /system/bin/cppreopts.sh +64768 250 -1 /system/bin/crash_dump32 +64768 251 -1 /system/bin/crash_dump64 +64768 546 -1 /system/bin/cut +1824 20 -1 /system/bin/dalvikvm +64768 546 -1 /system/bin/date +64768 546 -1 /system/bin/dd +64768 256 -1 /system/bin/debuggerd +64768 290 -1 /system/bin/defrag.f2fs +64768 258 -1 /system/bin/device_config +64768 546 -1 /system/bin/devmem +1824 21 -1 /system/bin/dex2oat +64768 546 -1 /system/bin/df +64768 546 -1 /system/bin/diff +64768 546 -1 /system/bin/dirname +64768 264 -1 /system/bin/dmctl +64768 546 -1 /system/bin/dmesg +64768 266 -1 /system/bin/dnsmasq +64768 546 -1 /system/bin/dos2unix +64768 268 -1 /system/bin/dpm +64768 269 -1 /system/bin/drmserver +64768 546 -1 /system/bin/du +64768 290 -1 /system/bin/dump.f2fs +64768 272 -1 /system/bin/dumpstate +64768 273 -1 /system/bin/dumpsys +64768 274 -1 /system/bin/e2fsck +64768 275 -1 /system/bin/e2fsdroid +64768 546 -1 /system/bin/echo +64768 546 -1 /system/bin/egrep +64768 546 -1 /system/bin/env +64768 546 -1 /system/bin/expand +64768 546 -1 /system/bin/expr +64768 546 -1 /system/bin/fallocate +64768 546 -1 /system/bin/false +64768 546 -1 /system/bin/fgrep +64768 546 -1 /system/bin/file +64768 546 -1 /system/bin/find +64768 286 -1 /system/bin/flags_health_check +64768 546 -1 /system/bin/flock +64768 546 -1 /system/bin/fmt +64768 546 -1 /system/bin/free +64768 290 -1 /system/bin/fsck.f2fs +64768 291 -1 /system/bin/fsck_msdos +64768 292 -1 /system/bin/fsverity_init +64768 546 -1 /system/bin/fsync +64768 294 -1 /system/bin/gatekeeperd +64768 295 -1 /system/bin/gdbserver +64768 296 -1 /system/bin/gdbserver64 +64768 546 -1 /system/bin/getconf +64768 546 -1 /system/bin/getenforce +64768 543 -1 /system/bin/getevent +64768 543 -1 /system/bin/getprop +64768 301 -1 /system/bin/gpuservice +64768 546 -1 /system/bin/grep +64768 546 -1 /system/bin/groups +64768 304 -1 /system/bin/gsi_tool +64768 305 -1 /system/bin/gsid +64768 546 -1 /system/bin/gunzip +64768 546 -1 /system/bin/gzip +64768 546 -1 /system/bin/head +64768 309 -1 /system/bin/heapprofd +64768 310 -1 /system/bin/hid +64768 546 -1 /system/bin/hostname +23 20189 -1 /system/bin/hw +64768 314 -1 /system/bin/hw/android.system.suspend@1.0-service +64768 313 -1 /system/bin/hw/android.hidl.allocator@1.0-service +64768 546 -1 /system/bin/hwclock +64768 316 -1 /system/bin/hwservicemanager +64768 546 -1 /system/bin/i2cdetect +64768 546 -1 /system/bin/i2cdump +64768 546 -1 /system/bin/i2cget +64768 546 -1 /system/bin/i2cset +64768 546 -1 /system/bin/iconv +64768 546 -1 /system/bin/id +64768 323 -1 /system/bin/idlcli +64768 324 -1 /system/bin/idmap +64768 325 -1 /system/bin/idmap2 +64768 326 -1 /system/bin/idmap2d +64768 546 -1 /system/bin/ifconfig +64768 328 -1 /system/bin/ime +64768 329 -1 /system/bin/incident +64768 330 -1 /system/bin/incident_helper +64768 331 -1 /system/bin/incidentd +64768 332 -1 /system/bin/init +64768 546 -1 /system/bin/inotifyd +64768 334 -1 /system/bin/input +64768 546 -1 /system/bin/insmod +64768 546 -1 /system/bin/install +64768 337 -1 /system/bin/installd +64768 338 -1 /system/bin/invoke_test_client +64768 546 -1 /system/bin/ionice +64768 340 -1 /system/bin/iorap.prefetcherd +2054 254 -1 /system/bin/iorapd +64768 546 -1 /system/bin/iorenice +64768 343 -1 /system/bin/iotop +64768 344 -1 /system/bin/ip +64768 427 -1 /system/bin/ip-wrapper-1.0 +64768 346 -1 /system/bin/ip6tables +64768 346 -1 /system/bin/ip6tables-restore +64768 346 -1 /system/bin/ip6tables-save +64768 427 -1 /system/bin/ip6tables-wrapper-1.0 +64768 350 -1 /system/bin/iperf3 +64768 351 -1 /system/bin/iptables +64768 351 -1 /system/bin/iptables-restore +64768 351 -1 /system/bin/iptables-save +64768 427 -1 /system/bin/iptables-wrapper-1.0 +64768 355 -1 /system/bin/iw +64768 356 -1 /system/bin/keystore +64768 357 -1 /system/bin/keystore_cli_v2 +64768 546 -1 /system/bin/kill +64768 546 -1 /system/bin/killall +64768 360 -1 /system/bin/ld.mc +64768 361 -1 /system/bin/ldd +64768 362 -1 /system/bin/librank +1888 13 -1 /system/bin/linker +1888 14 -1 /system/bin/linker64 +1888 13 -1 /system/bin/linker_asan +1888 14 -1 /system/bin/linker_asan64 +64768 367 -1 /system/bin/linkerconfig +64768 368 -1 /system/bin/llkd +64768 369 -1 /system/bin/lmkd +64768 546 -1 /system/bin/ln +64768 546 -1 /system/bin/load_policy +64768 372 -1 /system/bin/lockagent_crasher +64768 373 -1 /system/bin/locksettings +64768 546 -1 /system/bin/log +64768 375 -1 /system/bin/logcat +64768 376 -1 /system/bin/logcatd +64768 377 -1 /system/bin/logd +64768 546 -1 /system/bin/logname +64768 380 -1 /system/bin/logpersist.cat +64768 380 -1 /system/bin/logpersist.start +64768 380 -1 /system/bin/logpersist.stop +64768 382 -1 /system/bin/logwrapper +64768 546 -1 /system/bin/losetup +64768 384 -1 /system/bin/lpdump +64768 385 -1 /system/bin/lpdumpd +64768 546 -1 /system/bin/ls +64768 387 -1 /system/bin/lshal +64768 546 -1 /system/bin/lsmod +64768 546 -1 /system/bin/lsof +64768 546 -1 /system/bin/lspci +64768 546 -1 /system/bin/lsusb +64768 392 -1 /system/bin/make_f2fs +64768 546 -1 /system/bin/md5sum +64768 394 -1 /system/bin/mdnsd +64768 395 -1 /system/bin/media +64768 396 -1 /system/bin/mediadrmserver +64768 397 -1 /system/bin/mediaextractor +64768 398 -1 /system/bin/mediametrics +64768 399 -1 /system/bin/mediaserver +64768 546 -1 /system/bin/microcom +64768 401 -1 /system/bin/migrate_legacy_obb_data.sh +64768 402 -1 /system/bin/mini-keyctl +64768 546 -1 /system/bin/mkdir +64768 404 -1 /system/bin/mke2fs +64768 546 -1 /system/bin/mkfifo +64768 404 -1 /system/bin/mkfs.ext2 +64768 404 -1 /system/bin/mkfs.ext3 +64768 404 -1 /system/bin/mkfs.ext4 +64768 546 -1 /system/bin/mknod +64768 546 -1 /system/bin/mkswap +64768 546 -1 /system/bin/mktemp +64768 546 -1 /system/bin/modinfo +64768 543 -1 /system/bin/modprobe +64768 414 -1 /system/bin/monkey +64768 546 -1 /system/bin/more +64768 546 -1 /system/bin/mount +64768 546 -1 /system/bin/mountpoint +64768 418 -1 /system/bin/move_time_data.sh +64768 419 -1 /system/bin/mtpd +64768 546 -1 /system/bin/mv +64768 546 -1 /system/bin/nc +64768 422 -1 /system/bin/ndc +64768 427 -1 /system/bin/ndc-wrapper-1.0 +64768 546 -1 /system/bin/netcat +64768 425 -1 /system/bin/netd +64768 546 -1 /system/bin/netstat +64768 427 -1 /system/bin/netutils-wrapper-1.0 +64768 428 -1 /system/bin/newfs_msdos +64768 546 -1 /system/bin/nice +64768 546 -1 /system/bin/nl +64768 546 -1 /system/bin/nohup +64768 432 -1 /system/bin/notify_traceur.sh +64768 546 -1 /system/bin/nproc +64768 546 -1 /system/bin/nsenter +64768 546 -1 /system/bin/od +64768 436 -1 /system/bin/otapreopt +64768 437 -1 /system/bin/otapreopt_chroot +64768 438 -1 /system/bin/otapreopt_script +64768 439 -1 /system/bin/otapreopt_slot +64768 546 -1 /system/bin/paste +64768 546 -1 /system/bin/patch +64768 442 -1 /system/bin/perfetto +64768 546 -1 /system/bin/pgrep +64768 546 -1 /system/bin/pidof +64768 445 -1 /system/bin/ping +64768 446 -1 /system/bin/ping6 +64768 546 -1 /system/bin/pkill +64768 448 -1 /system/bin/pm +64768 546 -1 /system/bin/pmap +64768 450 -1 /system/bin/pppd +64768 451 -1 /system/bin/preloads_copy.sh +64768 452 -1 /system/bin/preopt2cachename +64768 546 -1 /system/bin/printenv +64768 546 -1 /system/bin/printf +64768 455 -1 /system/bin/procrank +64768 546 -1 /system/bin/ps +64768 546 -1 /system/bin/pwd +64768 458 -1 /system/bin/racoon +64768 546 -1 /system/bin/readlink +64768 546 -1 /system/bin/realpath +64768 461 -1 /system/bin/reboot +64768 462 -1 /system/bin/recovery-persist +64768 463 -1 /system/bin/recovery-refresh +64768 464 -1 /system/bin/remount +64768 546 -1 /system/bin/renice +64768 466 -1 /system/bin/requestsync +64768 290 -1 /system/bin/resize.f2fs +64768 468 -1 /system/bin/resize2fs +64768 546 -1 /system/bin/restorecon +64768 546 -1 /system/bin/rm +64768 546 -1 /system/bin/rmdir +64768 546 -1 /system/bin/rmmod +64768 473 -1 /system/bin/rss_hwm_reset +64768 474 -1 /system/bin/run-as +64768 546 -1 /system/bin/runcon +64768 476 -1 /system/bin/sanitizer-status +64768 477 -1 /system/bin/schedtest +64768 478 -1 /system/bin/screencap +64768 479 -1 /system/bin/screenrecord +64768 480 -1 /system/bin/sdcard +64768 481 -1 /system/bin/secdiscard +64768 482 -1 /system/bin/secilc +64768 546 -1 /system/bin/sed +64768 546 -1 /system/bin/sendevent +64768 485 -1 /system/bin/sensorservice +64768 546 -1 /system/bin/seq +64768 487 -1 /system/bin/service +64768 488 -1 /system/bin/servicemanager +64768 546 -1 /system/bin/setenforce +64768 543 -1 /system/bin/setprop +64768 546 -1 /system/bin/setsid +64768 492 -1 /system/bin/settings +64768 493 -1 /system/bin/sgdisk +64768 494 -1 /system/bin/sh +64768 546 -1 /system/bin/sha1sum +64768 546 -1 /system/bin/sha224sum +64768 546 -1 /system/bin/sha256sum +64768 546 -1 /system/bin/sha384sum +64768 546 -1 /system/bin/sha512sum +64768 500 -1 /system/bin/showmap +64768 501 -1 /system/bin/simpleperf +64768 502 -1 /system/bin/simpleperf_app_runner +64768 546 -1 /system/bin/sleep +64768 504 -1 /system/bin/sload_f2fs +64768 505 -1 /system/bin/sm +64768 506 -1 /system/bin/smcinvoked +64768 507 -1 /system/bin/snapshotctl +64768 546 -1 /system/bin/sort +64768 546 -1 /system/bin/split +64768 510 -1 /system/bin/sqlite3 +64768 511 -1 /system/bin/ss +64768 543 -1 /system/bin/start +64768 513 -1 /system/bin/start_with_lockagent +64768 546 -1 /system/bin/stat +64768 515 -1 /system/bin/statsd +64768 543 -1 /system/bin/stop +64768 517 -1 /system/bin/storaged +64768 518 -1 /system/bin/strace +64768 546 -1 /system/bin/strings +64768 546 -1 /system/bin/stty +64768 521 -1 /system/bin/surfaceflinger +64768 522 -1 /system/bin/svc +64768 546 -1 /system/bin/swapoff +64768 546 -1 /system/bin/swapon +64768 546 -1 /system/bin/sync +64768 546 -1 /system/bin/sysctl +64768 546 -1 /system/bin/tac +64768 546 -1 /system/bin/tail +64768 546 -1 /system/bin/tar +64768 546 -1 /system/bin/taskset +64768 531 -1 /system/bin/tc +64768 427 -1 /system/bin/tc-wrapper-1.0 +64768 533 -1 /system/bin/tcpdump +64768 546 -1 /system/bin/tee +64768 535 -1 /system/bin/telecom +64768 546 -1 /system/bin/time +64768 546 -1 /system/bin/timeout +64768 538 -1 /system/bin/tinycap +64768 539 -1 /system/bin/tinymix +64768 540 -1 /system/bin/tinypcminfo +64768 541 -1 /system/bin/tinyplay +64768 542 -1 /system/bin/tombstoned +64768 543 -1 /system/bin/toolbox +64768 546 -1 /system/bin/top +64768 546 -1 /system/bin/touch +64768 546 -1 /system/bin/toybox +64768 546 -1 /system/bin/tr +64768 548 -1 /system/bin/traced +64768 549 -1 /system/bin/traced_probes +64768 550 -1 /system/bin/tracepath +64768 551 -1 /system/bin/tracepath6 +64768 552 -1 /system/bin/traceroute6 +64768 553 -1 /system/bin/trigger_perfetto +64768 546 -1 /system/bin/true +64768 546 -1 /system/bin/truncate +64768 546 -1 /system/bin/tty +64768 557 -1 /system/bin/tune2fs +64768 558 -1 /system/bin/tzdatacheck +64768 332 -1 /system/bin/ueventd +64768 560 -1 /system/bin/uiautomator +64768 546 -1 /system/bin/ulimit +64768 546 -1 /system/bin/umount +64768 546 -1 /system/bin/uname +64768 564 -1 /system/bin/uncrypt +64768 546 -1 /system/bin/uniq +64768 546 -1 /system/bin/unix2dos +64768 546 -1 /system/bin/unlink +64768 546 -1 /system/bin/unshare +64768 569 -1 /system/bin/unwind_info +64768 570 -1 /system/bin/unwind_reg_info +64768 571 -1 /system/bin/unwind_symbols +64768 572 -1 /system/bin/unzip +64768 573 -1 /system/bin/update_engine +64768 574 -1 /system/bin/update_engine_client +64768 575 -1 /system/bin/update_verifier +64768 546 -1 /system/bin/uptime +64768 577 -1 /system/bin/usbd +64768 546 -1 /system/bin/usleep +64768 546 -1 /system/bin/uudecode +64768 546 -1 /system/bin/uuencode +64768 546 -1 /system/bin/uuidgen +64768 582 -1 /system/bin/vdc +64768 583 -1 /system/bin/viewcompiler +64768 546 -1 /system/bin/vmstat +64768 585 -1 /system/bin/vold +64768 586 -1 /system/bin/vold_prepare_subdirs +64768 587 -1 /system/bin/vr +64768 588 -1 /system/bin/wait_for_keymaster +64768 546 -1 /system/bin/watch +64768 590 -1 /system/bin/watchdogd +64768 546 -1 /system/bin/wc +64768 546 -1 /system/bin/which +64768 546 -1 /system/bin/whoami +64768 594 -1 /system/bin/wificond +64768 595 -1 /system/bin/wm +64768 546 -1 /system/bin/xargs +64768 546 -1 /system/bin/xxd +64768 546 -1 /system/bin/yes +64768 546 -1 /system/bin/zcat +2054 248 -1 /system/bin/iorap.cmd.prefetcher.client +2054 249 -1 /system/bin/iorap.cmd.db +2054 250 -1 /system/bin/iorap.cmd.perfetto +2054 251 -1 /system/bin/iorap.inode2filename +2054 252 -1 /system/bin/iorap.cmd.compiler +23 19560 -1 /system/etc +64768 623 -1 /system/etc/fstab.postinstall +23 1559159 -1 /system/etc/seccomp_policy +64768 740 -1 /system/etc/seccomp_policy/crash_dump.arm.policy +64768 742 -1 /system/etc/seccomp_policy/mediacodec.policy +64768 741 -1 /system/etc/seccomp_policy/crash_dump.arm64.policy +64768 621 -1 /system/etc/fs_config_dirs +64768 736 -1 /system/etc/protolog.conf.json.gz +23 1559165 -1 /system/etc/textclassifier +64768 974 -1 /system/etc/textclassifier/lang_id.model +64768 973 -1 /system/etc/textclassifier/actions_suggestions.universal.model +64768 975 -1 /system/etc/textclassifier/textclassifier.en.model +64768 976 -1 /system/etc/textclassifier/textclassifier.universal.model +64768 618 -1 /system/etc/dirty-image-objects +64768 624 -1 /system/etc/gps_debug.conf +64768 735 -1 /system/etc/prop.default +23 1559173 -1 /system/etc/sysconfig +64768 968 -1 /system/etc/sysconfig/framework-sysconfig.xml +64768 970 -1 /system/etc/sysconfig/preinstalled-packages-platform.xml +64768 969 -1 /system/etc/sysconfig/hiddenapi-package-whitelist.xml +64768 996 -1 /system/etc/vndkprivate.libraries.R.txt +64768 619 -1 /system/etc/event-log-tags +23 1559178 -1 /system/etc/update_engine +64768 978 -1 /system/etc/update_engine/update-payload-key.pub.pem +23 1559180 -1 /system/etc/ppp +64768 733 -1 /system/etc/ppp/ip-up-vpn +64768 971 -1 /system/etc/task_profiles.json +64768 737 -1 /system/etc/public.libraries.txt +64768 694 -1 /system/etc/media_profiles_V1_0.dtd +23 1559184 -1 /system/etc/bpf +64768 610 -1 /system/etc/bpf/clatd.o +64768 611 -1 /system/etc/bpf/netd.o +64768 608 -1 /system/etc/boot-image.prof +23 1559188 -1 /system/etc/bluetooth +64768 606 -1 /system/etc/bluetooth/bt_stack.conf +64768 605 -1 /system/etc/bluetooth/bt_did.conf +23 1559191 -1 /system/etc/permissions +64768 728 -1 /system/etc/permissions/radioconfiginterface.xml +64768 709 -1 /system/etc/permissions/com.android.location.provider.xml +64768 713 -1 /system/etc/permissions/com.android.timezone.updater.xml +64768 724 -1 /system/etc/permissions/privapp-permissions-google.xml +64768 699 -1 /system/etc/permissions/LteDirectDiscovery.xml +64768 711 -1 /system/etc/permissions/com.android.mediadrm.signer.xml +64768 719 -1 /system/etc/permissions/com.verizon.embms.xml +64768 731 -1 /system/etc/permissions/uimremoteserver.xml +64768 701 -1 /system/etc/permissions/android.software.live_wallpaper.xml +64768 702 -1 /system/etc/permissions/android.software.preview_sdk.xml +64768 714 -1 /system/etc/permissions/com.qualcomm.ltebc.xml +64768 727 -1 /system/etc/permissions/radioconfig.xml +64768 729 -1 /system/etc/permissions/telephonyservice.xml +64768 705 -1 /system/etc/permissions/android.test.mock.xml +64768 720 -1 /system/etc/permissions/embms.xml +64768 706 -1 /system/etc/permissions/android.test.runner.xml +64768 721 -1 /system/etc/permissions/javax.obex.xml +64768 703 -1 /system/etc/permissions/android.software.webview.xml +64768 704 -1 /system/etc/permissions/android.test.base.xml +64768 708 -1 /system/etc/permissions/com.android.future.usb.accessory.xml +64768 730 -1 /system/etc/permissions/uimremoteclient.xml +64768 715 -1 /system/etc/permissions/com.qualcomm.qcrilmsgtunnel.xml +64768 707 -1 /system/etc/permissions/cneapiclient.xml +64768 716 -1 /system/etc/permissions/com.qualcomm.qti.imscmservice.xml +64768 712 -1 /system/etc/permissions/com.android.nfc_extras.xml +64768 723 -1 /system/etc/permissions/platform.xml +64768 722 -1 /system/etc/permissions/org.apache.http.legacy.xml +64768 726 -1 /system/etc/permissions/qcrilhook.xml +64768 710 -1 /system/etc/permissions/com.android.media.remotedisplay.xml +64768 700 -1 /system/etc/permissions/UimService.xml +64768 717 -1 /system/etc/permissions/com.quicinc.cne.CNEService.xml +64768 725 -1 /system/etc/permissions/privapp-permissions-platform.xml +64768 718 -1 /system/etc/permissions/com.quicinc.cne.xml +64768 697 -1 /system/etc/passwd +23 1559225 -1 /system/etc/security +23 1559226 -1 /system/etc/security/cacerts_wfa +64768 945 -1 /system/etc/security/cacerts_wfa/674b5f5b.0 +64768 944 -1 /system/etc/security/cacerts_wfa/21125ccd.0 +64768 946 -1 /system/etc/security/cacerts_wfa/ea93cb5b.0 +23 1559230 -1 /system/etc/security/cacerts +64768 781 -1 /system/etc/security/cacerts/40dc992e.0 +64768 776 -1 /system/etc/security/cacerts/3c860d51.0 +64768 882 -1 /system/etc/security/cacerts/fde84897.0 +64768 879 -1 /system/etc/security/cacerts/facacbc6.0 +64768 802 -1 /system/etc/security/cacerts/6b03dec0.0 +64768 780 -1 /system/etc/security/cacerts/3e7271e8.0 +64768 862 -1 /system/etc/security/cacerts/d18e9066.0 +64768 849 -1 /system/etc/security/cacerts/c491639e.0 +64768 836 -1 /system/etc/security/cacerts/ab5346f4.0 +64768 784 -1 /system/etc/security/cacerts/4be590e0.0 +64768 814 -1 /system/etc/security/cacerts/86212b19.0 +64768 825 -1 /system/etc/security/cacerts/95aff9e3.0 +64768 783 -1 /system/etc/security/cacerts/48a195d8.0 +64768 804 -1 /system/etc/security/cacerts/76579174.0 +64768 850 -1 /system/etc/security/cacerts/c51c224c.0 +64768 799 -1 /system/etc/security/cacerts/63a2c897.0 +64768 793 -1 /system/etc/security/cacerts/5acf816d.0 +64768 816 -1 /system/etc/security/cacerts/882de061.0 +64768 763 -1 /system/etc/security/cacerts/2d9dafe4.0 +64768 782 -1 /system/etc/security/cacerts/455f1b52.0 +64768 765 -1 /system/etc/security/cacerts/302904dd.0 +64768 750 -1 /system/etc/security/cacerts/12d55845.0 +64768 810 -1 /system/etc/security/cacerts/7d453d8f.0 +64768 857 -1 /system/etc/security/cacerts/ccc52f49.0 +64768 878 -1 /system/etc/security/cacerts/f013ecaf.0 +64768 796 -1 /system/etc/security/cacerts/5f47b495.0 +64768 771 -1 /system/etc/security/cacerts/399e7759.0 +64768 752 -1 /system/etc/security/cacerts/1dcd6f4c.0 +64768 779 -1 /system/etc/security/cacerts/3d441de8.0 +64768 822 -1 /system/etc/security/cacerts/9339512a.0 +64768 859 -1 /system/etc/security/cacerts/d06393bb.0 +64768 837 -1 /system/etc/security/cacerts/ab59055e.0 +64768 760 -1 /system/etc/security/cacerts/23f4c490.0 +64768 856 -1 /system/etc/security/cacerts/cb1c3204.0 +64768 758 -1 /system/etc/security/cacerts/21855f49.0 +64768 794 -1 /system/etc/security/cacerts/5cf9d536.0 +64768 751 -1 /system/etc/security/cacerts/17b51fe6.0 +64768 812 -1 /system/etc/security/cacerts/82223c44.0 +64768 839 -1 /system/etc/security/cacerts/b0ed035a.0 +64768 808 -1 /system/etc/security/cacerts/7a819ef2.0 +64768 851 -1 /system/etc/security/cacerts/c559d742.0 +64768 864 -1 /system/etc/security/cacerts/d4c339cb.0 +64768 754 -1 /system/etc/security/cacerts/1e1eab7c.0 +64768 844 -1 /system/etc/security/cacerts/b936d1c6.0 +64768 745 -1 /system/etc/security/cacerts/00673b5b.0 +64768 858 -1 /system/etc/security/cacerts/cf701eeb.0 +64768 790 -1 /system/etc/security/cacerts/583d0756.0 +64768 773 -1 /system/etc/security/cacerts/3ad48a91.0 +64768 863 -1 /system/etc/security/cacerts/d41b5e2a.0 +64768 746 -1 /system/etc/security/cacerts/04f60c28.0 +64768 811 -1 /system/etc/security/cacerts/81b9768f.0 +64768 835 -1 /system/etc/security/cacerts/a81e292b.0 +64768 834 -1 /system/etc/security/cacerts/a7d2cf64.0 +64768 843 -1 /system/etc/security/cacerts/b872f2b4.0 +64768 798 -1 /system/etc/security/cacerts/6187b673.0 +64768 830 -1 /system/etc/security/cacerts/9f533518.0 +64768 815 -1 /system/etc/security/cacerts/87753b0d.0 +64768 881 -1 /system/etc/security/cacerts/fd08c599.0 +64768 813 -1 /system/etc/security/cacerts/85cde254.0 +64768 829 -1 /system/etc/security/cacerts/9d6523ce.0 +64768 774 -1 /system/etc/security/cacerts/3c58f906.0 +64768 880 -1 /system/etc/security/cacerts/fb5fa911.0 +64768 875 -1 /system/etc/security/cacerts/e775ed2d.0 +64768 831 -1 /system/etc/security/cacerts/a2c66da8.0 +64768 788 -1 /system/etc/security/cacerts/52b525c7.0 +64768 867 -1 /system/etc/security/cacerts/d7746a63.0 +64768 787 -1 /system/etc/security/cacerts/524d9b43.0 +64768 845 -1 /system/etc/security/cacerts/bc3f2570.0 +64768 820 -1 /system/etc/security/cacerts/91739615.0 +64768 753 -1 /system/etc/security/cacerts/1df5a75f.0 +64768 755 -1 /system/etc/security/cacerts/1e8e7201.0 +64768 747 -1 /system/etc/security/cacerts/0d69c7e1.0 +64768 818 -1 /system/etc/security/cacerts/89c02a45.0 +64768 869 -1 /system/etc/security/cacerts/da7377f6.0 +64768 817 -1 /system/etc/security/cacerts/88950faa.0 +64768 809 -1 /system/etc/security/cacerts/7c302982.0 +64768 777 -1 /system/etc/security/cacerts/3c899c73.0 +64768 874 -1 /system/etc/security/cacerts/e48193cf.0 +64768 855 -1 /system/etc/security/cacerts/cb156124.0 +64768 833 -1 /system/etc/security/cacerts/a7605362.0 +64768 876 -1 /system/etc/security/cacerts/e8651083.0 +64768 840 -1 /system/etc/security/cacerts/b0f3e76e.0 +64768 841 -1 /system/etc/security/cacerts/b3fb433b.0 +64768 764 -1 /system/etc/security/cacerts/2fa87019.0 +64768 749 -1 /system/etc/security/cacerts/111e6273.0 +64768 871 -1 /system/etc/security/cacerts/dc99f41e.0 +64768 842 -1 /system/etc/security/cacerts/b7db1890.0 +64768 789 -1 /system/etc/security/cacerts/559f7c71.0 +64768 838 -1 /system/etc/security/cacerts/aeb67534.0 +64768 769 -1 /system/etc/security/cacerts/343eb6cb.0 +64768 865 -1 /system/etc/security/cacerts/d59297b8.0 +64768 824 -1 /system/etc/security/cacerts/9576d26b.0 +64768 775 -1 /system/etc/security/cacerts/3c6676aa.0 +64768 860 -1 /system/etc/security/cacerts/d0cddf45.0 +64768 847 -1 /system/etc/security/cacerts/bf64f35b.0 +64768 786 -1 /system/etc/security/cacerts/5046c355.0 +64768 870 -1 /system/etc/security/cacerts/dbc54cab.0 +64768 826 -1 /system/etc/security/cacerts/9685a493.0 +64768 785 -1 /system/etc/security/cacerts/4e18c148.0 +64768 868 -1 /system/etc/security/cacerts/d8317ada.0 +64768 823 -1 /system/etc/security/cacerts/9479c8c3.0 +64768 748 -1 /system/etc/security/cacerts/10531352.0 +64768 757 -1 /system/etc/security/cacerts/1f58a078.0 +64768 805 -1 /system/etc/security/cacerts/7892ad52.0 +64768 827 -1 /system/etc/security/cacerts/9772ca32.0 +64768 872 -1 /system/etc/security/cacerts/dfc0fe80.0 +64768 877 -1 /system/etc/security/cacerts/ed39abd0.0 +64768 767 -1 /system/etc/security/cacerts/31188b5e.0 +64768 791 -1 /system/etc/security/cacerts/5a250ea7.0 +64768 795 -1 /system/etc/security/cacerts/5e4e69e7.0 +64768 792 -1 /system/etc/security/cacerts/5a3f0ff8.0 +64768 853 -1 /system/etc/security/cacerts/c907e29b.0 +64768 819 -1 /system/etc/security/cacerts/8d6437c3.0 +64768 801 -1 /system/etc/security/cacerts/69105f4f.0 +64768 821 -1 /system/etc/security/cacerts/9282e51c.0 +64768 778 -1 /system/etc/security/cacerts/3c9a4d3b.0 +64768 766 -1 /system/etc/security/cacerts/304d27c3.0 +64768 803 -1 /system/etc/security/cacerts/75680d2e.0 +64768 854 -1 /system/etc/security/cacerts/c90bc37d.0 +64768 828 -1 /system/etc/security/cacerts/985c1f52.0 +64768 768 -1 /system/etc/security/cacerts/33ee480d.0 +64768 846 -1 /system/etc/security/cacerts/bdacca6f.0 +64768 861 -1 /system/etc/security/cacerts/d16a5865.0 +64768 762 -1 /system/etc/security/cacerts/2add47b6.0 +64768 800 -1 /system/etc/security/cacerts/67495436.0 +64768 832 -1 /system/etc/security/cacerts/a3896b44.0 +64768 873 -1 /system/etc/security/cacerts/e442e424.0 +64768 806 -1 /system/etc/security/cacerts/7999be0d.0 +64768 866 -1 /system/etc/security/cacerts/d6e6eab9.0 +64768 772 -1 /system/etc/security/cacerts/3a3b02ce.0 +64768 761 -1 /system/etc/security/cacerts/27af790d.0 +64768 770 -1 /system/etc/security/cacerts/35105088.0 +64768 797 -1 /system/etc/security/cacerts/60afe812.0 +64768 807 -1 /system/etc/security/cacerts/7a7c655d.0 +64768 756 -1 /system/etc/security/cacerts/1eb37bdf.0 +64768 852 -1 /system/etc/security/cacerts/c7e2a638.0 +64768 848 -1 /system/etc/security/cacerts/c2c1704e.0 +64768 759 -1 /system/etc/security/cacerts/219d9499.0 +64768 947 -1 /system/etc/security/otacerts.zip +23 1559370 -1 /system/etc/security/cacerts_google +64768 941 -1 /system/etc/security/cacerts_google/facacbc6.0 +64768 902 -1 /system/etc/security/cacerts_google/3e7271e8.0 +64768 930 -1 /system/etc/security/cacerts_google/c491639e.0 +64768 918 -1 /system/etc/security/cacerts_google/86212b19.0 +64768 903 -1 /system/etc/security/cacerts_google/455f1b52.0 +64768 915 -1 /system/etc/security/cacerts_google/7d453d8f.0 +64768 934 -1 /system/etc/security/cacerts_google/ccc52f49.0 +64768 899 -1 /system/etc/security/cacerts_google/399e7759.0 +64768 885 -1 /system/etc/security/cacerts_google/02b73561.0 +64768 904 -1 /system/etc/security/cacerts_google/4fbd6bfa.0 +64768 893 -1 /system/etc/security/cacerts_google/23f4c490.0 +64768 935 -1 /system/etc/security/cacerts_google/d4c339cb.0 +64768 942 -1 /system/etc/security/cacerts_google/ff783690.0 +64768 884 -1 /system/etc/security/cacerts_google/00673b5b.0 +64768 937 -1 /system/etc/security/cacerts_google/e268a4c5.0 +64768 900 -1 /system/etc/security/cacerts_google/3ad48a91.0 +64768 886 -1 /system/etc/security/cacerts_google/04f60c28.0 +64768 916 -1 /system/etc/security/cacerts_google/81b9768f.0 +64768 925 -1 /system/etc/security/cacerts_google/a7d2cf64.0 +64768 919 -1 /system/etc/security/cacerts_google/87753b0d.0 +64768 917 -1 /system/etc/security/cacerts_google/85cde254.0 +64768 931 -1 /system/etc/security/cacerts_google/c527e4ab.0 +64768 901 -1 /system/etc/security/cacerts_google/3c58f906.0 +64768 939 -1 /system/etc/security/cacerts_google/e775ed2d.0 +64768 923 -1 /system/etc/security/cacerts_google/a2c66da8.0 +64768 906 -1 /system/etc/security/cacerts_google/524d9b43.0 +64768 928 -1 /system/etc/security/cacerts_google/bc3f2570.0 +64768 890 -1 /system/etc/security/cacerts_google/124bbd54.0 +64768 891 -1 /system/etc/security/cacerts_google/1e8e7201.0 +64768 888 -1 /system/etc/security/cacerts_google/0d69c7e1.0 +64768 920 -1 /system/etc/security/cacerts_google/89c02a45.0 +64768 938 -1 /system/etc/security/cacerts_google/e48193cf.0 +64768 905 -1 /system/etc/security/cacerts_google/5021a0a2.0 +64768 926 -1 /system/etc/security/cacerts_google/b0f3e76e.0 +64768 927 -1 /system/etc/security/cacerts_google/b3fb433b.0 +64768 889 -1 /system/etc/security/cacerts_google/111e6273.0 +64768 897 -1 /system/etc/security/cacerts_google/343eb6cb.0 +64768 929 -1 /system/etc/security/cacerts_google/bf64f35b.0 +64768 936 -1 /system/etc/security/cacerts_google/dbc54cab.0 +64768 907 -1 /system/etc/security/cacerts_google/57692373.0 +64768 922 -1 /system/etc/security/cacerts_google/9772ca32.0 +64768 940 -1 /system/etc/security/cacerts_google/ed39abd0.0 +64768 910 -1 /system/etc/security/cacerts_google/5e4e69e7.0 +64768 909 -1 /system/etc/security/cacerts_google/5a3f0ff8.0 +64768 896 -1 /system/etc/security/cacerts_google/2afc57aa.0 +64768 921 -1 /system/etc/security/cacerts_google/8d6437c3.0 +64768 912 -1 /system/etc/security/cacerts_google/69105f4f.0 +64768 913 -1 /system/etc/security/cacerts_google/75680d2e.0 +64768 933 -1 /system/etc/security/cacerts_google/c90bc37d.0 +64768 895 -1 /system/etc/security/cacerts_google/2add47b6.0 +64768 911 -1 /system/etc/security/cacerts_google/67495436.0 +64768 924 -1 /system/etc/security/cacerts_google/a2df7ad7.0 +64768 914 -1 /system/etc/security/cacerts_google/7999be0d.0 +64768 887 -1 /system/etc/security/cacerts_google/052e396b.0 +64768 908 -1 /system/etc/security/cacerts_google/594f1775.0 +64768 894 -1 /system/etc/security/cacerts_google/27af790d.0 +64768 898 -1 /system/etc/security/cacerts_google/35105088.0 +64768 932 -1 /system/etc/security/cacerts_google/c7e2a638.0 +64768 892 -1 /system/etc/security/cacerts_google/219d9499.0 +23 1521731 -1 /system/etc/selinux +64768 966 -1 /system/etc/selinux/plat_service_contexts +64768 963 -1 /system/etc/selinux/plat_seapp_contexts +64768 965 -1 /system/etc/selinux/plat_sepolicy_and_mapping.sha256 +64768 959 -1 /system/etc/selinux/plat_file_contexts +64768 960 -1 /system/etc/selinux/plat_hwservice_contexts +23 1559434 -1 /system/etc/selinux/mapping +64768 956 -1 /system/etc/selinux/mapping/28.0.compat.cil +64768 958 -1 /system/etc/selinux/mapping/29.0.compat.cil +64768 952 -1 /system/etc/selinux/mapping/26.0.compat.cil +64768 953 -1 /system/etc/selinux/mapping/27.0.cil +64768 951 -1 /system/etc/selinux/mapping/26.0.cil +64768 954 -1 /system/etc/selinux/mapping/27.0.compat.cil +64768 955 -1 /system/etc/selinux/mapping/28.0.cil +64768 957 -1 /system/etc/selinux/mapping/29.0.cil +64768 950 -1 /system/etc/selinux/mapping/10000.0.cil +64768 964 -1 /system/etc/selinux/plat_sepolicy.cil +64768 961 -1 /system/etc/selinux/plat_mac_permissions.xml +64768 962 -1 /system/etc/selinux/plat_property_contexts +64768 738 -1 /system/etc/sanitizer.libraries.txt +64768 734 -1 /system/etc/preloaded-classes +64768 603 -1 /system/etc/audio_effects.conf +64768 626 -1 /system/etc/hosts +64768 622 -1 /system/etc/fs_config_files +23 1559451 -1 /system/etc/init +64768 689 -1 /system/etc/init/wait_for_keymaster.rc +64768 672 -1 /system/etc/init/racoon.rc +64768 645 -1 /system/etc/init/gatekeeperd.rc +64768 633 -1 /system/etc/init/atrace_userdebug.rc +64768 679 -1 /system/etc/init/storaged.rc +64768 632 -1 /system/etc/init/atrace.rc +64768 654 -1 /system/etc/init/iorapd.rc +64768 671 -1 /system/etc/init/perfetto.rc +64768 656 -1 /system/etc/init/llkd-debuggable.rc +64768 678 -1 /system/etc/init/statsd.rc +64768 635 -1 /system/etc/init/blank_screen.rc +64768 651 -1 /system/etc/init/incidentd.rc +64768 675 -1 /system/etc/init/rss_hwm_reset.rc +64768 650 -1 /system/etc/init/idmap2d.rc +64768 682 -1 /system/etc/init/traceur.rc +64768 659 -1 /system/etc/init/logcatd.rc +64768 642 -1 /system/etc/init/drmserver.rc +64768 653 -1 /system/etc/init/installd.rc +64768 686 -1 /system/etc/init/usbd.rc +64768 636 -1 /system/etc/init/bootanim.rc +64768 640 -1 /system/etc/init/cameraserver.rc +64768 644 -1 /system/etc/init/flags_health_check.rc +64768 677 -1 /system/etc/init/snapshotctl.rc +64768 641 -1 /system/etc/init/cppreopts.rc +64768 661 -1 /system/etc/init/logtagd.rc +64768 668 -1 /system/etc/init/mtpd.rc +64768 665 -1 /system/etc/init/mediaextractor.rc +64768 631 -1 /system/etc/init/art_apex_boot_integrity.rc +64768 634 -1 /system/etc/init/audioserver.rc +64768 662 -1 /system/etc/init/lpdumpd.rc +64768 637 -1 /system/etc/init/bootstat-debug.rc +64768 630 -1 /system/etc/init/apexd.rc +64768 684 -1 /system/etc/init/update_engine.rc +64768 683 -1 /system/etc/init/uncrypt.rc +64768 674 -1 /system/etc/init/recovery-refresh.rc +64768 669 -1 /system/etc/init/netd.rc +64768 673 -1 /system/etc/init/recovery-persist.rc +64768 655 -1 /system/etc/init/keystore.rc +64768 643 -1 /system/etc/init/dumpstate.rc +64768 680 -1 /system/etc/init/surfaceflinger.rc +64768 687 -1 /system/etc/init/vdc.rc +64768 646 -1 /system/etc/init/gpuservice.rc +64768 658 -1 /system/etc/init/lmkd.rc +64768 685 -1 /system/etc/init/update_verifier.rc +64768 628 -1 /system/etc/init/android.hidl.allocator@1.0-service.rc +64768 657 -1 /system/etc/init/llkd.rc +64768 660 -1 /system/etc/init/logd.rc +64768 690 -1 /system/etc/init/wifi.rc +64768 648 -1 /system/etc/init/heapprofd.rc +64768 676 -1 /system/etc/init/servicemanager.rc +64768 652 -1 /system/etc/init/init-debug.rc +64768 666 -1 /system/etc/init/mediametrics.rc +64768 649 -1 /system/etc/init/hwservicemanager.rc +64768 688 -1 /system/etc/init/vold.rc +64768 663 -1 /system/etc/init/mdnsd.rc +64768 639 -1 /system/etc/init/bpfloader.rc +64768 629 -1 /system/etc/init/android.system.suspend@1.0-service.rc +64768 681 -1 /system/etc/init/tombstoned.rc +64768 664 -1 /system/etc/init/mediadrmserver.rc +64768 691 -1 /system/etc/init/wificond.rc +64768 667 -1 /system/etc/init/mediaserver.rc +64768 638 -1 /system/etc/init/bootstat.rc +64768 647 -1 /system/etc/init/gsid.rc +64768 670 -1 /system/etc/init/otapreopt.rc +64768 998 -1 /system/etc/xtables.lock +64768 692 -1 /system/etc/ld.config.txt +64768 613 -1 /system/etc/clatd.conf +64768 620 -1 /system/etc/fonts.xml +64768 696 -1 /system/etc/mkshrc +64768 602 -1 /system/etc/NOTICE.xml.gz +64768 695 -1 /system/etc/mke2fs.conf +23 1559521 -1 /system/etc/vintf +64768 984 -1 /system/etc/vintf/compatibility_matrix.current.xml +64768 981 -1 /system/etc/vintf/compatibility_matrix.2.xml +64768 986 -1 /system/etc/vintf/compatibility_matrix.legacy.xml +64768 983 -1 /system/etc/vintf/compatibility_matrix.4.xml +64768 980 -1 /system/etc/vintf/compatibility_matrix.1.xml +64768 985 -1 /system/etc/vintf/compatibility_matrix.device.xml +64768 993 -1 /system/etc/vintf/manifest.xml +64768 982 -1 /system/etc/vintf/compatibility_matrix.3.xml +23 1559530 -1 /system/etc/vintf/manifest +64768 988 -1 /system/etc/vintf/manifest/android.frameworks.stats@1.0-service.xml +64768 992 -1 /system/etc/vintf/manifest/manifest_media_c2_software.xml +64768 991 -1 /system/etc/vintf/manifest/manifest_android.frameworks.cameraservice.service@2.0.xml +64768 989 -1 /system/etc/vintf/manifest/android.hidl.allocator@1.0-service.xml +64768 990 -1 /system/etc/vintf/manifest/android.system.suspend@1.0-service.xml +64768 625 -1 /system/etc/group +64768 607 -1 /system/etc/boot-image.bprof +64768 693 -1 /system/etc/llndk.libraries.R.txt +64768 995 -1 /system/etc/vndkcorevariant.libraries.R.txt +64768 997 -1 /system/etc/vndksp.libraries.R.txt +64768 994 -1 /system/etc/vndkcore.libraries.R.txt +64768 612 -1 /system/etc/cgroups.json +23 1559541 -1 /system/etc/compatconfig +64768 617 -1 /system/etc/compatconfig/services-platform-compat-config.xml +64768 615 -1 /system/etc/compatconfig/framework-platform-compat-config.xml +64768 616 -1 /system/etc/compatconfig/libcore-platform-compat-config.xml +2054 38 -1 /system/etc/public.libraries-qti.txt +21 19476 -1 /apex +1896 2 -1 /apex/com.android.neuralnetworks +1896 11 -1 /apex/com.android.neuralnetworks/lost+found +1896 48 -1 /apex/com.android.neuralnetworks/lib64 +1896 58 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.mapper@3.0.so +1896 75 -1 /apex/com.android.neuralnetworks/lib64/libhidlbase.so +1896 57 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.mapper@2.1.so +1896 82 -1 /apex/com.android.neuralnetworks/lib64/libui.so +1896 80 -1 /apex/com.android.neuralnetworks/lib64/libsync.so +1896 67 -1 /apex/com.android.neuralnetworks/lib64/android.hidl.safe_union@1.0.so +1896 78 -1 /apex/com.android.neuralnetworks/lib64/libneuralnetworks.so +1896 65 -1 /apex/com.android.neuralnetworks/lib64/android.hidl.memory.token@1.0.so +1896 69 -1 /apex/com.android.neuralnetworks/lib64/libbinderthreadstate.so +1896 66 -1 /apex/com.android.neuralnetworks/lib64/android.hidl.memory@1.0.so +1896 79 -1 /apex/com.android.neuralnetworks/lib64/libprocessgroup.so +1896 61 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.neuralnetworks@1.1.so +1896 76 -1 /apex/com.android.neuralnetworks/lib64/libhidlmemory.so +1896 60 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.neuralnetworks@1.0.so +1896 77 -1 /apex/com.android.neuralnetworks/lib64/libnativewindow.so +1896 51 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.allocator@3.0.so +1896 73 -1 /apex/com.android.neuralnetworks/lib64/libfmq.so +1896 59 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.mapper@4.0.so +1896 54 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.common@1.1.so +1896 52 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.allocator@4.0.so +1896 55 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.common@1.2.so +1896 50 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.allocator@2.0.so +1896 62 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.neuralnetworks@1.2.so +1896 74 -1 /apex/com.android.neuralnetworks/lib64/libhardware.so +1896 71 -1 /apex/com.android.neuralnetworks/lib64/libcrypto.so +1896 49 -1 /apex/com.android.neuralnetworks/lib64/android.frameworks.bufferhub@1.0.so +1896 56 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.mapper@2.0.so +1896 64 -1 /apex/com.android.neuralnetworks/lib64/android.hidl.allocator@1.0.so +1896 81 -1 /apex/com.android.neuralnetworks/lib64/libtextclassifier_hash.so +1896 83 -1 /apex/com.android.neuralnetworks/lib64/libutils.so +1896 63 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.neuralnetworks@1.3.so +1896 68 -1 /apex/com.android.neuralnetworks/lib64/libbase.so +1896 72 -1 /apex/com.android.neuralnetworks/lib64/libcutils.so +1896 70 -1 /apex/com.android.neuralnetworks/lib64/libc++.so +1896 53 -1 /apex/com.android.neuralnetworks/lib64/android.hardware.graphics.common@1.0.so +1896 12 -1 /apex/com.android.neuralnetworks/lib +1896 22 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.mapper@3.0.so +1896 39 -1 /apex/com.android.neuralnetworks/lib/libhidlbase.so +1896 21 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.mapper@2.1.so +1896 46 -1 /apex/com.android.neuralnetworks/lib/libui.so +1896 44 -1 /apex/com.android.neuralnetworks/lib/libsync.so +1896 31 -1 /apex/com.android.neuralnetworks/lib/android.hidl.safe_union@1.0.so +1896 42 -1 /apex/com.android.neuralnetworks/lib/libneuralnetworks.so +1896 29 -1 /apex/com.android.neuralnetworks/lib/android.hidl.memory.token@1.0.so +1896 33 -1 /apex/com.android.neuralnetworks/lib/libbinderthreadstate.so +1896 30 -1 /apex/com.android.neuralnetworks/lib/android.hidl.memory@1.0.so +1896 43 -1 /apex/com.android.neuralnetworks/lib/libprocessgroup.so +1896 25 -1 /apex/com.android.neuralnetworks/lib/android.hardware.neuralnetworks@1.1.so +1896 40 -1 /apex/com.android.neuralnetworks/lib/libhidlmemory.so +1896 24 -1 /apex/com.android.neuralnetworks/lib/android.hardware.neuralnetworks@1.0.so +1896 41 -1 /apex/com.android.neuralnetworks/lib/libnativewindow.so +1896 15 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.allocator@3.0.so +1896 37 -1 /apex/com.android.neuralnetworks/lib/libfmq.so +1896 23 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.mapper@4.0.so +1896 18 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.common@1.1.so +1896 16 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.allocator@4.0.so +1896 19 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.common@1.2.so +1896 14 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.allocator@2.0.so +1896 26 -1 /apex/com.android.neuralnetworks/lib/android.hardware.neuralnetworks@1.2.so +1896 38 -1 /apex/com.android.neuralnetworks/lib/libhardware.so +1896 35 -1 /apex/com.android.neuralnetworks/lib/libcrypto.so +1896 13 -1 /apex/com.android.neuralnetworks/lib/android.frameworks.bufferhub@1.0.so +1896 20 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.mapper@2.0.so +1896 28 -1 /apex/com.android.neuralnetworks/lib/android.hidl.allocator@1.0.so +1896 45 -1 /apex/com.android.neuralnetworks/lib/libtextclassifier_hash.so +1896 47 -1 /apex/com.android.neuralnetworks/lib/libutils.so +1896 27 -1 /apex/com.android.neuralnetworks/lib/android.hardware.neuralnetworks@1.3.so +1896 32 -1 /apex/com.android.neuralnetworks/lib/libbase.so +1896 36 -1 /apex/com.android.neuralnetworks/lib/libcutils.so +1896 34 -1 /apex/com.android.neuralnetworks/lib/libc++.so +1896 17 -1 /apex/com.android.neuralnetworks/lib/android.hardware.graphics.common@1.0.so +1896 84 -1 /apex/com.android.neuralnetworks/apex_manifest.json +1896 2 -1 /apex/com.android.neuralnetworks@1 +1896 11 -1 /apex/com.android.neuralnetworks@1/lost+found +1896 48 -1 /apex/com.android.neuralnetworks@1/lib64 +1896 58 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.mapper@3.0.so +1896 75 -1 /apex/com.android.neuralnetworks@1/lib64/libhidlbase.so +1896 57 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.mapper@2.1.so +1896 82 -1 /apex/com.android.neuralnetworks@1/lib64/libui.so +1896 80 -1 /apex/com.android.neuralnetworks@1/lib64/libsync.so +1896 67 -1 /apex/com.android.neuralnetworks@1/lib64/android.hidl.safe_union@1.0.so +1896 78 -1 /apex/com.android.neuralnetworks@1/lib64/libneuralnetworks.so +1896 65 -1 /apex/com.android.neuralnetworks@1/lib64/android.hidl.memory.token@1.0.so +1896 69 -1 /apex/com.android.neuralnetworks@1/lib64/libbinderthreadstate.so +1896 66 -1 /apex/com.android.neuralnetworks@1/lib64/android.hidl.memory@1.0.so +1896 79 -1 /apex/com.android.neuralnetworks@1/lib64/libprocessgroup.so +1896 61 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.neuralnetworks@1.1.so +1896 76 -1 /apex/com.android.neuralnetworks@1/lib64/libhidlmemory.so +1896 60 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.neuralnetworks@1.0.so +1896 77 -1 /apex/com.android.neuralnetworks@1/lib64/libnativewindow.so +1896 51 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.allocator@3.0.so +1896 73 -1 /apex/com.android.neuralnetworks@1/lib64/libfmq.so +1896 59 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.mapper@4.0.so +1896 54 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.common@1.1.so +1896 52 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.allocator@4.0.so +1896 55 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.common@1.2.so +1896 50 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.allocator@2.0.so +1896 62 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.neuralnetworks@1.2.so +1896 74 -1 /apex/com.android.neuralnetworks@1/lib64/libhardware.so +1896 71 -1 /apex/com.android.neuralnetworks@1/lib64/libcrypto.so +1896 49 -1 /apex/com.android.neuralnetworks@1/lib64/android.frameworks.bufferhub@1.0.so +1896 56 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.mapper@2.0.so +1896 64 -1 /apex/com.android.neuralnetworks@1/lib64/android.hidl.allocator@1.0.so +1896 81 -1 /apex/com.android.neuralnetworks@1/lib64/libtextclassifier_hash.so +1896 83 -1 /apex/com.android.neuralnetworks@1/lib64/libutils.so +1896 63 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.neuralnetworks@1.3.so +1896 68 -1 /apex/com.android.neuralnetworks@1/lib64/libbase.so +1896 72 -1 /apex/com.android.neuralnetworks@1/lib64/libcutils.so +1896 70 -1 /apex/com.android.neuralnetworks@1/lib64/libc++.so +1896 53 -1 /apex/com.android.neuralnetworks@1/lib64/android.hardware.graphics.common@1.0.so +1896 12 -1 /apex/com.android.neuralnetworks@1/lib +1896 22 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.mapper@3.0.so +1896 39 -1 /apex/com.android.neuralnetworks@1/lib/libhidlbase.so +1896 21 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.mapper@2.1.so +1896 46 -1 /apex/com.android.neuralnetworks@1/lib/libui.so +1896 44 -1 /apex/com.android.neuralnetworks@1/lib/libsync.so +1896 31 -1 /apex/com.android.neuralnetworks@1/lib/android.hidl.safe_union@1.0.so +1896 42 -1 /apex/com.android.neuralnetworks@1/lib/libneuralnetworks.so +1896 29 -1 /apex/com.android.neuralnetworks@1/lib/android.hidl.memory.token@1.0.so +1896 33 -1 /apex/com.android.neuralnetworks@1/lib/libbinderthreadstate.so +1896 30 -1 /apex/com.android.neuralnetworks@1/lib/android.hidl.memory@1.0.so +1896 43 -1 /apex/com.android.neuralnetworks@1/lib/libprocessgroup.so +1896 25 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.neuralnetworks@1.1.so +1896 40 -1 /apex/com.android.neuralnetworks@1/lib/libhidlmemory.so +1896 24 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.neuralnetworks@1.0.so +1896 41 -1 /apex/com.android.neuralnetworks@1/lib/libnativewindow.so +1896 15 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.allocator@3.0.so +1896 37 -1 /apex/com.android.neuralnetworks@1/lib/libfmq.so +1896 23 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.mapper@4.0.so +1896 18 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.common@1.1.so +1896 16 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.allocator@4.0.so +1896 19 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.common@1.2.so +1896 14 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.allocator@2.0.so +1896 26 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.neuralnetworks@1.2.so +1896 38 -1 /apex/com.android.neuralnetworks@1/lib/libhardware.so +1896 35 -1 /apex/com.android.neuralnetworks@1/lib/libcrypto.so +1896 13 -1 /apex/com.android.neuralnetworks@1/lib/android.frameworks.bufferhub@1.0.so +1896 20 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.mapper@2.0.so +1896 28 -1 /apex/com.android.neuralnetworks@1/lib/android.hidl.allocator@1.0.so +1896 45 -1 /apex/com.android.neuralnetworks@1/lib/libtextclassifier_hash.so +1896 47 -1 /apex/com.android.neuralnetworks@1/lib/libutils.so +1896 27 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.neuralnetworks@1.3.so +1896 32 -1 /apex/com.android.neuralnetworks@1/lib/libbase.so +1896 36 -1 /apex/com.android.neuralnetworks@1/lib/libcutils.so +1896 34 -1 /apex/com.android.neuralnetworks@1/lib/libc++.so +1896 17 -1 /apex/com.android.neuralnetworks@1/lib/android.hardware.graphics.common@1.0.so +1896 84 -1 /apex/com.android.neuralnetworks@1/apex_manifest.json +1880 2 -1 /apex/com.android.apex.cts.shim +1880 11 -1 /apex/com.android.apex.cts.shim/lost+found +1880 12 -1 /apex/com.android.apex.cts.shim/etc +1880 13 -1 /apex/com.android.apex.cts.shim/etc/hash.txt +1880 14 -1 /apex/com.android.apex.cts.shim/apex_manifest.json +1880 2 -1 /apex/com.android.apex.cts.shim@1 +1880 11 -1 /apex/com.android.apex.cts.shim@1/lost+found +1880 12 -1 /apex/com.android.apex.cts.shim@1/etc +1880 13 -1 /apex/com.android.apex.cts.shim@1/etc/hash.txt +1880 14 -1 /apex/com.android.apex.cts.shim@1/apex_manifest.json +1864 2 -1 /apex/com.android.media.swcodec +1864 11 -1 /apex/com.android.media.swcodec/lost+found +1864 12 -1 /apex/com.android.media.swcodec/bin +1864 13 -1 /apex/com.android.media.swcodec/bin/mediaswcodec +1864 20 -1 /apex/com.android.media.swcodec/lib64 +1864 31 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.mapper@3.0.so +1864 64 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_g711alawdec.so +1864 87 -1 /apex/com.android.media.swcodec/lib64/libhidlbase.so +1864 30 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.mapper@2.1.so +1864 100 -1 /apex/com.android.media.swcodec/lib64/libstagefright_enc_common.so +1864 103 -1 /apex/com.android.media.swcodec/lib64/libui.so +1864 50 -1 /apex/com.android.media.swcodec/lib64/libcodec2.so +1864 39 -1 /apex/com.android.media.swcodec/lib64/android.hidl.safe_union@1.0.so +1864 67 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_h263dec.so +1864 37 -1 /apex/com.android.media.swcodec/lib64/android.hidl.memory.token@1.0.so +1864 46 -1 /apex/com.android.media.swcodec/lib64/libbinderthreadstate.so +1864 71 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_mp3dec.so +1864 38 -1 /apex/com.android.media.swcodec/lib64/android.hidl.memory@1.0.so +1864 98 -1 /apex/com.android.media.swcodec/lib64/libstagefright_bufferpool@2.0.1.so +1864 93 -1 /apex/com.android.media.swcodec/lib64/libprocessgroup.so +1864 54 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_amrnbdec.so +1864 75 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_opusdec.so +1864 49 -1 /apex/com.android.media.swcodec/lib64/libcap.so +1864 53 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_aacenc.so +1864 41 -1 /apex/com.android.media.swcodec/lib64/android.hidl.token@1.0.so +1864 97 -1 /apex/com.android.media.swcodec/lib64/libstagefright_amrnb_common.so +1864 80 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vp8enc.so +1864 56 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_amrwbdec.so +1864 105 -1 /apex/com.android.media.swcodec/lib64/libvorbisidec.so +1864 106 -1 /apex/com.android.media.swcodec/lib64/libvpx.so +1864 73 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_mpeg4dec.so +1864 63 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_flacenc.so +1864 74 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_mpeg4enc.so +1864 72 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_mpeg2dec.so +1864 88 -1 /apex/com.android.media.swcodec/lib64/libhidlmemory.so +1864 40 -1 /apex/com.android.media.swcodec/lib64/android.hidl.token@1.0-utils.so +1864 99 -1 /apex/com.android.media.swcodec/lib64/libstagefright_bufferqueue_helper.so +1864 22 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.allocator@3.0.so +1864 51 -1 /apex/com.android.media.swcodec/lib64/libcodec2_hidl@1.0.so +1864 94 -1 /apex/com.android.media.swcodec/lib64/libscudo_wrapper.so +1864 85 -1 /apex/com.android.media.swcodec/lib64/libfmq.so +1864 81 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vp9dec.so +1864 32 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.mapper@4.0.so +1864 27 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.common@1.1.so +1864 23 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.allocator@4.0.so +1864 33 -1 /apex/com.android.media.swcodec/lib64/android.hardware.media.bufferpool@2.0.so +1864 28 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.common@1.2.so +1864 92 -1 /apex/com.android.media.swcodec/lib64/libopus.so +1864 21 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.allocator@2.0.so +1864 43 -1 /apex/com.android.media.swcodec/lib64/libavservices_minijail_vendor.so +1864 91 -1 /apex/com.android.media.swcodec/lib64/libminijail.so +1864 60 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_avcenc.so +1864 79 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vp8dec.so +1864 86 -1 /apex/com.android.media.swcodec/lib64/libhardware.so +1864 95 -1 /apex/com.android.media.swcodec/lib64/libsfplugin_ccodec_utils.so +1864 36 -1 /apex/com.android.media.swcodec/lib64/android.hardware.media@1.0.so +1864 57 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_amrwbenc.so +1864 68 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_h263enc.so +1864 76 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_opusenc.so +1864 78 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vorbisdec.so +1864 102 -1 /apex/com.android.media.swcodec/lib64/libstagefright_foundation.so +1864 69 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_hevcdec.so +1864 29 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.mapper@2.0.so +1864 42 -1 /apex/com.android.media.swcodec/lib64/libaudioutils.so +1864 83 -1 /apex/com.android.media.swcodec/lib64/libcodec2_vndk.so +1864 24 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.bufferqueue@1.0.so +1864 48 -1 /apex/com.android.media.swcodec/lib64/libc_scudo.so +1864 70 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_hevcenc.so +1864 104 -1 /apex/com.android.media.swcodec/lib64/libutils.so +1864 66 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_gsmdec.so +1864 44 -1 /apex/com.android.media.swcodec/lib64/libbase.so +1864 55 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_amrnbenc.so +1864 84 -1 /apex/com.android.media.swcodec/lib64/libcutils.so +1864 34 -1 /apex/com.android.media.swcodec/lib64/android.hardware.media.c2@1.0.so +1864 61 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_common.so +1864 90 -1 /apex/com.android.media.swcodec/lib64/libmedia_codecserviceregistrant.so +1864 47 -1 /apex/com.android.media.swcodec/lib64/libc++.so +1864 101 -1 /apex/com.android.media.swcodec/lib64/libstagefright_flacdec.so +1864 35 -1 /apex/com.android.media.swcodec/lib64/android.hardware.media.omx@1.0.so +1864 77 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_rawdec.so +1864 58 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_av1dec_gav1.so +1864 59 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_avcdec.so +1864 96 -1 /apex/com.android.media.swcodec/lib64/libspeexresampler.so +1864 52 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_aacdec.so +1864 26 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.common@1.0.so +1864 82 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_vp9enc.so +1864 89 -1 /apex/com.android.media.swcodec/lib64/libion.so +1864 62 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_flacdec.so +1864 65 -1 /apex/com.android.media.swcodec/lib64/libcodec2_soft_g711mlawdec.so +1864 25 -1 /apex/com.android.media.swcodec/lib64/android.hardware.graphics.bufferqueue@2.0.so +1864 45 -1 /apex/com.android.media.swcodec/lib64/libbinder.so +1864 14 -1 /apex/com.android.media.swcodec/etc +1864 17 -1 /apex/com.android.media.swcodec/etc/media_codecs.xml +1864 18 -1 /apex/com.android.media.swcodec/etc/seccomp_policy +1864 19 -1 /apex/com.android.media.swcodec/etc/seccomp_policy/mediaswcodec.policy +1864 16 -1 /apex/com.android.media.swcodec/etc/ld.config.txt +1864 15 -1 /apex/com.android.media.swcodec/etc/init.rc +1864 107 -1 /apex/com.android.media.swcodec/apex_manifest.json +1864 2 -1 /apex/com.android.media.swcodec@300000000 +1864 11 -1 /apex/com.android.media.swcodec@300000000/lost+found +1864 12 -1 /apex/com.android.media.swcodec@300000000/bin +1864 13 -1 /apex/com.android.media.swcodec@300000000/bin/mediaswcodec +1864 20 -1 /apex/com.android.media.swcodec@300000000/lib64 +1864 31 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.mapper@3.0.so +1864 64 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_g711alawdec.so +1864 87 -1 /apex/com.android.media.swcodec@300000000/lib64/libhidlbase.so +1864 30 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.mapper@2.1.so +1864 100 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_enc_common.so +1864 103 -1 /apex/com.android.media.swcodec@300000000/lib64/libui.so +1864 50 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2.so +1864 39 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.safe_union@1.0.so +1864 67 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_h263dec.so +1864 37 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.memory.token@1.0.so +1864 46 -1 /apex/com.android.media.swcodec@300000000/lib64/libbinderthreadstate.so +1864 71 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_mp3dec.so +1864 38 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.memory@1.0.so +1864 98 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_bufferpool@2.0.1.so +1864 93 -1 /apex/com.android.media.swcodec@300000000/lib64/libprocessgroup.so +1864 54 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_amrnbdec.so +1864 75 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_opusdec.so +1864 49 -1 /apex/com.android.media.swcodec@300000000/lib64/libcap.so +1864 53 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_aacenc.so +1864 41 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.token@1.0.so +1864 97 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_amrnb_common.so +1864 80 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vp8enc.so +1864 56 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_amrwbdec.so +1864 105 -1 /apex/com.android.media.swcodec@300000000/lib64/libvorbisidec.so +1864 106 -1 /apex/com.android.media.swcodec@300000000/lib64/libvpx.so +1864 73 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_mpeg4dec.so +1864 63 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_flacenc.so +1864 74 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_mpeg4enc.so +1864 72 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_mpeg2dec.so +1864 88 -1 /apex/com.android.media.swcodec@300000000/lib64/libhidlmemory.so +1864 40 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hidl.token@1.0-utils.so +1864 99 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_bufferqueue_helper.so +1864 22 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.allocator@3.0.so +1864 51 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_hidl@1.0.so +1864 94 -1 /apex/com.android.media.swcodec@300000000/lib64/libscudo_wrapper.so +1864 85 -1 /apex/com.android.media.swcodec@300000000/lib64/libfmq.so +1864 81 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vp9dec.so +1864 32 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.mapper@4.0.so +1864 27 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.common@1.1.so +1864 23 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.allocator@4.0.so +1864 33 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.media.bufferpool@2.0.so +1864 28 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.common@1.2.so +1864 92 -1 /apex/com.android.media.swcodec@300000000/lib64/libopus.so +1864 21 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.allocator@2.0.so +1864 43 -1 /apex/com.android.media.swcodec@300000000/lib64/libavservices_minijail_vendor.so +1864 91 -1 /apex/com.android.media.swcodec@300000000/lib64/libminijail.so +1864 60 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_avcenc.so +1864 79 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vp8dec.so +1864 86 -1 /apex/com.android.media.swcodec@300000000/lib64/libhardware.so +1864 95 -1 /apex/com.android.media.swcodec@300000000/lib64/libsfplugin_ccodec_utils.so +1864 36 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.media@1.0.so +1864 57 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_amrwbenc.so +1864 68 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_h263enc.so +1864 76 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_opusenc.so +1864 78 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vorbisdec.so +1864 102 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_foundation.so +1864 69 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_hevcdec.so +1864 29 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.mapper@2.0.so +1864 42 -1 /apex/com.android.media.swcodec@300000000/lib64/libaudioutils.so +1864 83 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_vndk.so +1864 24 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.bufferqueue@1.0.so +1864 48 -1 /apex/com.android.media.swcodec@300000000/lib64/libc_scudo.so +1864 70 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_hevcenc.so +1864 104 -1 /apex/com.android.media.swcodec@300000000/lib64/libutils.so +1864 66 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_gsmdec.so +1864 44 -1 /apex/com.android.media.swcodec@300000000/lib64/libbase.so +1864 55 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_amrnbenc.so +1864 84 -1 /apex/com.android.media.swcodec@300000000/lib64/libcutils.so +1864 34 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.media.c2@1.0.so +1864 61 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_common.so +1864 90 -1 /apex/com.android.media.swcodec@300000000/lib64/libmedia_codecserviceregistrant.so +1864 47 -1 /apex/com.android.media.swcodec@300000000/lib64/libc++.so +1864 101 -1 /apex/com.android.media.swcodec@300000000/lib64/libstagefright_flacdec.so +1864 35 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.media.omx@1.0.so +1864 77 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_rawdec.so +1864 58 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_av1dec_gav1.so +1864 59 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_avcdec.so +1864 96 -1 /apex/com.android.media.swcodec@300000000/lib64/libspeexresampler.so +1864 52 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_aacdec.so +1864 26 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.common@1.0.so +1864 82 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_vp9enc.so +1864 89 -1 /apex/com.android.media.swcodec@300000000/lib64/libion.so +1864 62 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_flacdec.so +1864 65 -1 /apex/com.android.media.swcodec@300000000/lib64/libcodec2_soft_g711mlawdec.so +1864 25 -1 /apex/com.android.media.swcodec@300000000/lib64/android.hardware.graphics.bufferqueue@2.0.so +1864 45 -1 /apex/com.android.media.swcodec@300000000/lib64/libbinder.so +1864 14 -1 /apex/com.android.media.swcodec@300000000/etc +1864 17 -1 /apex/com.android.media.swcodec@300000000/etc/media_codecs.xml +1864 18 -1 /apex/com.android.media.swcodec@300000000/etc/seccomp_policy +1864 19 -1 /apex/com.android.media.swcodec@300000000/etc/seccomp_policy/mediaswcodec.policy +1864 16 -1 /apex/com.android.media.swcodec@300000000/etc/ld.config.txt +1864 15 -1 /apex/com.android.media.swcodec@300000000/etc/init.rc +1864 107 -1 /apex/com.android.media.swcodec@300000000/apex_manifest.json +1856 2 -1 /apex/com.android.media +1856 11 -1 /apex/com.android.media/lost+found +1856 17 -1 /apex/com.android.media/lib64 +1856 42 -1 /apex/com.android.media/lib64/libhidlbase.so +1856 18 -1 /apex/com.android.media/lib64/android.hardware.cas.native@1.0.so +1856 21 -1 /apex/com.android.media/lib64/android.hidl.memory.token@1.0.so +1856 38 -1 /apex/com.android.media/lib64/libbinderthreadstate.so +1856 22 -1 /apex/com.android.media/lib64/android.hidl.memory@1.0.so +1856 44 -1 /apex/com.android.media/lib64/libprocessgroup.so +1856 24 -1 /apex/com.android.media/lib64/android.hidl.token@1.0.so +1856 43 -1 /apex/com.android.media/lib64/libhidlmemory.so +1856 23 -1 /apex/com.android.media/lib64/android.hidl.token@1.0-utils.so +1856 19 -1 /apex/com.android.media/lib64/android.hardware.cas@1.0.so +1856 25 -1 /apex/com.android.media/lib64/extractors +1856 28 -1 /apex/com.android.media/lib64/extractors/libflacextractor.so +1856 31 -1 /apex/com.android.media/lib64/extractors/libmp3extractor.so +1856 26 -1 /apex/com.android.media/lib64/extractors/libaacextractor.so +1856 29 -1 /apex/com.android.media/lib64/extractors/libmidiextractor.so +1856 35 -1 /apex/com.android.media/lib64/extractors/libwavextractor.so +1856 30 -1 /apex/com.android.media/lib64/extractors/libmkvextractor.so +1856 27 -1 /apex/com.android.media/lib64/extractors/libamrextractor.so +1856 33 -1 /apex/com.android.media/lib64/extractors/libmpeg2extractor.so +1856 32 -1 /apex/com.android.media/lib64/extractors/libmp4extractor.so +1856 34 -1 /apex/com.android.media/lib64/extractors/liboggextractor.so +1856 40 -1 /apex/com.android.media/lib64/libcrypto.so +1856 20 -1 /apex/com.android.media/lib64/android.hidl.allocator@1.0.so +1856 36 -1 /apex/com.android.media/lib64/libaudioutils.so +1856 47 -1 /apex/com.android.media/lib64/libutils.so +1856 37 -1 /apex/com.android.media/lib64/libbase.so +1856 41 -1 /apex/com.android.media/lib64/libcutils.so +1856 39 -1 /apex/com.android.media/lib64/libc++.so +1856 46 -1 /apex/com.android.media/lib64/libstagefright_flacdec.so +1856 45 -1 /apex/com.android.media/lib64/libspeexresampler.so +1856 12 -1 /apex/com.android.media/etc +1856 13 -1 /apex/com.android.media/etc/seccomp_policy +1856 14 -1 /apex/com.android.media/etc/seccomp_policy/mediaextractor.policy +1856 48 -1 /apex/com.android.media/apex_manifest.json +1856 15 -1 /apex/com.android.media/javalib +1856 16 -1 /apex/com.android.media/javalib/updatable-media.jar +1856 2 -1 /apex/com.android.media@300000000 +1856 11 -1 /apex/com.android.media@300000000/lost+found +1856 17 -1 /apex/com.android.media@300000000/lib64 +1856 42 -1 /apex/com.android.media@300000000/lib64/libhidlbase.so +1856 18 -1 /apex/com.android.media@300000000/lib64/android.hardware.cas.native@1.0.so +1856 21 -1 /apex/com.android.media@300000000/lib64/android.hidl.memory.token@1.0.so +1856 38 -1 /apex/com.android.media@300000000/lib64/libbinderthreadstate.so +1856 22 -1 /apex/com.android.media@300000000/lib64/android.hidl.memory@1.0.so +1856 44 -1 /apex/com.android.media@300000000/lib64/libprocessgroup.so +1856 24 -1 /apex/com.android.media@300000000/lib64/android.hidl.token@1.0.so +1856 43 -1 /apex/com.android.media@300000000/lib64/libhidlmemory.so +1856 23 -1 /apex/com.android.media@300000000/lib64/android.hidl.token@1.0-utils.so +1856 19 -1 /apex/com.android.media@300000000/lib64/android.hardware.cas@1.0.so +1856 25 -1 /apex/com.android.media@300000000/lib64/extractors +1856 28 -1 /apex/com.android.media@300000000/lib64/extractors/libflacextractor.so +1856 31 -1 /apex/com.android.media@300000000/lib64/extractors/libmp3extractor.so +1856 26 -1 /apex/com.android.media@300000000/lib64/extractors/libaacextractor.so +1856 29 -1 /apex/com.android.media@300000000/lib64/extractors/libmidiextractor.so +1856 35 -1 /apex/com.android.media@300000000/lib64/extractors/libwavextractor.so +1856 30 -1 /apex/com.android.media@300000000/lib64/extractors/libmkvextractor.so +1856 27 -1 /apex/com.android.media@300000000/lib64/extractors/libamrextractor.so +1856 33 -1 /apex/com.android.media@300000000/lib64/extractors/libmpeg2extractor.so +1856 32 -1 /apex/com.android.media@300000000/lib64/extractors/libmp4extractor.so +1856 34 -1 /apex/com.android.media@300000000/lib64/extractors/liboggextractor.so +1856 40 -1 /apex/com.android.media@300000000/lib64/libcrypto.so +1856 20 -1 /apex/com.android.media@300000000/lib64/android.hidl.allocator@1.0.so +1856 36 -1 /apex/com.android.media@300000000/lib64/libaudioutils.so +1856 47 -1 /apex/com.android.media@300000000/lib64/libutils.so +1856 37 -1 /apex/com.android.media@300000000/lib64/libbase.so +1856 41 -1 /apex/com.android.media@300000000/lib64/libcutils.so +1856 39 -1 /apex/com.android.media@300000000/lib64/libc++.so +1856 46 -1 /apex/com.android.media@300000000/lib64/libstagefright_flacdec.so +1856 45 -1 /apex/com.android.media@300000000/lib64/libspeexresampler.so +1856 12 -1 /apex/com.android.media@300000000/etc +1856 13 -1 /apex/com.android.media@300000000/etc/seccomp_policy +1856 14 -1 /apex/com.android.media@300000000/etc/seccomp_policy/mediaextractor.policy +1856 48 -1 /apex/com.android.media@300000000/apex_manifest.json +1856 15 -1 /apex/com.android.media@300000000/javalib +1856 16 -1 /apex/com.android.media@300000000/javalib/updatable-media.jar +1840 2 -1 /apex/com.android.conscrypt +1840 11 -1 /apex/com.android.conscrypt/lost+found +1840 12 -1 /apex/com.android.conscrypt/bin +1840 14 -1 /apex/com.android.conscrypt/bin/boringssl_self_test64 +1840 13 -1 /apex/com.android.conscrypt/bin/boringssl_self_test32 +1840 24 -1 /apex/com.android.conscrypt/lib64 +1840 27 -1 /apex/com.android.conscrypt/lib64/libjavacrypto.so +1840 26 -1 /apex/com.android.conscrypt/lib64/libcrypto.so +1840 28 -1 /apex/com.android.conscrypt/lib64/libssl.so +1840 25 -1 /apex/com.android.conscrypt/lib64/libc++.so +1840 15 -1 /apex/com.android.conscrypt/etc +1840 16 -1 /apex/com.android.conscrypt/etc/ld.config.txt +1840 19 -1 /apex/com.android.conscrypt/lib +1840 22 -1 /apex/com.android.conscrypt/lib/libjavacrypto.so +1840 21 -1 /apex/com.android.conscrypt/lib/libcrypto.so +1840 23 -1 /apex/com.android.conscrypt/lib/libssl.so +1840 20 -1 /apex/com.android.conscrypt/lib/libc++.so +1840 29 -1 /apex/com.android.conscrypt/apex_manifest.json +1840 17 -1 /apex/com.android.conscrypt/javalib +1840 18 -1 /apex/com.android.conscrypt/javalib/conscrypt.jar +1840 2 -1 /apex/com.android.conscrypt@300000000 +1840 11 -1 /apex/com.android.conscrypt@300000000/lost+found +1840 12 -1 /apex/com.android.conscrypt@300000000/bin +1840 14 -1 /apex/com.android.conscrypt@300000000/bin/boringssl_self_test64 +1840 13 -1 /apex/com.android.conscrypt@300000000/bin/boringssl_self_test32 +1840 24 -1 /apex/com.android.conscrypt@300000000/lib64 +1840 27 -1 /apex/com.android.conscrypt@300000000/lib64/libjavacrypto.so +1840 26 -1 /apex/com.android.conscrypt@300000000/lib64/libcrypto.so +1840 28 -1 /apex/com.android.conscrypt@300000000/lib64/libssl.so +1840 25 -1 /apex/com.android.conscrypt@300000000/lib64/libc++.so +1840 15 -1 /apex/com.android.conscrypt@300000000/etc +1840 16 -1 /apex/com.android.conscrypt@300000000/etc/ld.config.txt +1840 19 -1 /apex/com.android.conscrypt@300000000/lib +1840 22 -1 /apex/com.android.conscrypt@300000000/lib/libjavacrypto.so +1840 21 -1 /apex/com.android.conscrypt@300000000/lib/libcrypto.so +1840 23 -1 /apex/com.android.conscrypt@300000000/lib/libssl.so +1840 20 -1 /apex/com.android.conscrypt@300000000/lib/libc++.so +1840 29 -1 /apex/com.android.conscrypt@300000000/apex_manifest.json +1840 17 -1 /apex/com.android.conscrypt@300000000/javalib +1840 18 -1 /apex/com.android.conscrypt@300000000/javalib/conscrypt.jar +1832 2 -1 /apex/com.android.resolv +1832 11 -1 /apex/com.android.resolv/lost+found +1832 12 -1 /apex/com.android.resolv/lib64 +1832 14 -1 /apex/com.android.resolv/lib64/libnetd_resolv.so +1832 13 -1 /apex/com.android.resolv/lib64/libcrypto.so +1832 15 -1 /apex/com.android.resolv/lib64/libssl.so +1832 16 -1 /apex/com.android.resolv/apex_manifest.json +1832 2 -1 /apex/com.android.resolv@300000000 +1832 11 -1 /apex/com.android.resolv@300000000/lost+found +1832 12 -1 /apex/com.android.resolv@300000000/lib64 +1832 14 -1 /apex/com.android.resolv@300000000/lib64/libnetd_resolv.so +1832 13 -1 /apex/com.android.resolv@300000000/lib64/libcrypto.so +1832 15 -1 /apex/com.android.resolv@300000000/lib64/libssl.so +1832 16 -1 /apex/com.android.resolv@300000000/apex_manifest.json +1888 2 -1 /apex/com.android.runtime +1888 11 -1 /apex/com.android.runtime/lost+found +1888 12 -1 /apex/com.android.runtime/bin +1888 13 -1 /apex/com.android.runtime/bin/linker +1888 13 -1 /apex/com.android.runtime/bin/linker_asan +1888 14 -1 /apex/com.android.runtime/bin/linker64 +1888 14 -1 /apex/com.android.runtime/bin/linker_asan64 +1888 32 -1 /apex/com.android.runtime/lib64 +1888 40 -1 /apex/com.android.runtime/lib64/libc_malloc_debug.so +1888 37 -1 /apex/com.android.runtime/lib64/ld-android.so +1888 33 -1 /apex/com.android.runtime/lib64/bionic +1888 36 -1 /apex/com.android.runtime/lib64/bionic/libm.so +1888 34 -1 /apex/com.android.runtime/lib64/bionic/libc.so +1888 35 -1 /apex/com.android.runtime/lib64/bionic/libdl.so +1888 44 -1 /apex/com.android.runtime/lib64/libunwindstack.so +1888 42 -1 /apex/com.android.runtime/lib64/libdexfile_support.so +1888 38 -1 /apex/com.android.runtime/lib64/libbase.so +1888 41 -1 /apex/com.android.runtime/lib64/libc_malloc_hooks.so +1888 39 -1 /apex/com.android.runtime/lib64/libc++.so +1888 43 -1 /apex/com.android.runtime/lib64/liblzma.so +1888 17 -1 /apex/com.android.runtime/etc +1888 18 -1 /apex/com.android.runtime/etc/ld.config.txt +1888 19 -1 /apex/com.android.runtime/lib +1888 27 -1 /apex/com.android.runtime/lib/libc_malloc_debug.so +1888 24 -1 /apex/com.android.runtime/lib/ld-android.so +1888 20 -1 /apex/com.android.runtime/lib/bionic +1888 23 -1 /apex/com.android.runtime/lib/bionic/libm.so +1888 21 -1 /apex/com.android.runtime/lib/bionic/libc.so +1888 22 -1 /apex/com.android.runtime/lib/bionic/libdl.so +1888 31 -1 /apex/com.android.runtime/lib/libunwindstack.so +1888 29 -1 /apex/com.android.runtime/lib/libdexfile_support.so +1888 25 -1 /apex/com.android.runtime/lib/libbase.so +1888 28 -1 /apex/com.android.runtime/lib/libc_malloc_hooks.so +1888 26 -1 /apex/com.android.runtime/lib/libc++.so +1888 30 -1 /apex/com.android.runtime/lib/liblzma.so +1888 45 -1 /apex/com.android.runtime/apex_manifest.json +1888 2 -1 /apex/com.android.runtime@1 +1888 11 -1 /apex/com.android.runtime@1/lost+found +1888 12 -1 /apex/com.android.runtime@1/bin +1888 13 -1 /apex/com.android.runtime@1/bin/linker +1888 13 -1 /apex/com.android.runtime@1/bin/linker_asan +1888 14 -1 /apex/com.android.runtime@1/bin/linker64 +1888 14 -1 /apex/com.android.runtime@1/bin/linker_asan64 +1888 32 -1 /apex/com.android.runtime@1/lib64 +1888 40 -1 /apex/com.android.runtime@1/lib64/libc_malloc_debug.so +1888 37 -1 /apex/com.android.runtime@1/lib64/ld-android.so +1888 33 -1 /apex/com.android.runtime@1/lib64/bionic +1888 36 -1 /apex/com.android.runtime@1/lib64/bionic/libm.so +1888 34 -1 /apex/com.android.runtime@1/lib64/bionic/libc.so +1888 35 -1 /apex/com.android.runtime@1/lib64/bionic/libdl.so +1888 44 -1 /apex/com.android.runtime@1/lib64/libunwindstack.so +1888 42 -1 /apex/com.android.runtime@1/lib64/libdexfile_support.so +1888 38 -1 /apex/com.android.runtime@1/lib64/libbase.so +1888 41 -1 /apex/com.android.runtime@1/lib64/libc_malloc_hooks.so +1888 39 -1 /apex/com.android.runtime@1/lib64/libc++.so +1888 43 -1 /apex/com.android.runtime@1/lib64/liblzma.so +1888 17 -1 /apex/com.android.runtime@1/etc +1888 18 -1 /apex/com.android.runtime@1/etc/ld.config.txt +1888 19 -1 /apex/com.android.runtime@1/lib +1888 27 -1 /apex/com.android.runtime@1/lib/libc_malloc_debug.so +1888 24 -1 /apex/com.android.runtime@1/lib/ld-android.so +1888 20 -1 /apex/com.android.runtime@1/lib/bionic +1888 23 -1 /apex/com.android.runtime@1/lib/bionic/libm.so +1888 21 -1 /apex/com.android.runtime@1/lib/bionic/libc.so +1888 22 -1 /apex/com.android.runtime@1/lib/bionic/libdl.so +1888 31 -1 /apex/com.android.runtime@1/lib/libunwindstack.so +1888 29 -1 /apex/com.android.runtime@1/lib/libdexfile_support.so +1888 25 -1 /apex/com.android.runtime@1/lib/libbase.so +1888 28 -1 /apex/com.android.runtime@1/lib/libc_malloc_hooks.so +1888 26 -1 /apex/com.android.runtime@1/lib/libc++.so +1888 30 -1 /apex/com.android.runtime@1/lib/liblzma.so +1888 45 -1 /apex/com.android.runtime@1/apex_manifest.json +1872 2 -1 /apex/com.android.tzdata +1872 11 -1 /apex/com.android.tzdata/lost+found +1872 12 -1 /apex/com.android.tzdata/etc +1872 13 -1 /apex/com.android.tzdata/etc/icu +1872 14 -1 /apex/com.android.tzdata/etc/icu/icu_tzdata.dat +1872 15 -1 /apex/com.android.tzdata/etc/tz +1872 16 -1 /apex/com.android.tzdata/etc/tz/tz_version +1872 17 -1 /apex/com.android.tzdata/etc/tz/tzdata +1872 18 -1 /apex/com.android.tzdata/etc/tz/tzlookup.xml +1872 19 -1 /apex/com.android.tzdata/apex_manifest.json +1872 2 -1 /apex/com.android.tzdata@300000000 +1872 11 -1 /apex/com.android.tzdata@300000000/lost+found +1872 12 -1 /apex/com.android.tzdata@300000000/etc +1872 13 -1 /apex/com.android.tzdata@300000000/etc/icu +1872 14 -1 /apex/com.android.tzdata@300000000/etc/icu/icu_tzdata.dat +1872 15 -1 /apex/com.android.tzdata@300000000/etc/tz +1872 16 -1 /apex/com.android.tzdata@300000000/etc/tz/tz_version +1872 17 -1 /apex/com.android.tzdata@300000000/etc/tz/tzdata +1872 18 -1 /apex/com.android.tzdata@300000000/etc/tz/tzlookup.xml +1872 19 -1 /apex/com.android.tzdata@300000000/apex_manifest.json +1848 2 -1 /apex/com.android.i18n +1848 11 -1 /apex/com.android.i18n/lost+found +1848 12 -1 /apex/com.android.i18n/etc +1848 13 -1 /apex/com.android.i18n/etc/icu +1848 14 -1 /apex/com.android.i18n/etc/icu/icudt64l.dat +1848 15 -1 /apex/com.android.i18n/apex_manifest.json +1848 2 -1 /apex/com.android.i18n@1 +1848 11 -1 /apex/com.android.i18n@1/lost+found +1848 12 -1 /apex/com.android.i18n@1/etc +1848 13 -1 /apex/com.android.i18n@1/etc/icu +1848 14 -1 /apex/com.android.i18n@1/etc/icu/icudt64l.dat +1848 15 -1 /apex/com.android.i18n@1/apex_manifest.json +1824 2 -1 /apex/com.android.art +1824 11 -1 /apex/com.android.art/lost+found +1824 12 -1 /apex/com.android.art/bin +1824 36 -1 /apex/com.android.art/bin/imgdiagd64 +1824 19 -1 /apex/com.android.art/bin/dalvikvm32 +1824 28 -1 /apex/com.android.art/bin/dexlist +1824 27 -1 /apex/com.android.art/bin/dexlayoutd +1824 30 -1 /apex/com.android.art/bin/dexoptanalyzerd +1824 33 -1 /apex/com.android.art/bin/imgdiag64 +1824 29 -1 /apex/com.android.art/bin/dexoptanalyzer +1824 13 -1 /apex/com.android.art/bin/art_postinstall_hook +1824 20 -1 /apex/com.android.art/bin/dalvikvm +1824 15 -1 /apex/com.android.art/bin/art_preinstall_hook_boot +1824 24 -1 /apex/com.android.art/bin/dexdiag +1824 36 -1 /apex/com.android.art/bin/imgdiagd +1824 32 -1 /apex/com.android.art/bin/imgdiag32 +1824 22 -1 /apex/com.android.art/bin/dex2oatd +1824 40 -1 /apex/com.android.art/bin/profmand +1824 33 -1 /apex/com.android.art/bin/imgdiag +1824 21 -1 /apex/com.android.art/bin/dex2oat +1824 38 -1 /apex/com.android.art/bin/oatdumpd +1824 23 -1 /apex/com.android.art/bin/dexanalyze +1824 26 -1 /apex/com.android.art/bin/dexlayout +1824 16 -1 /apex/com.android.art/bin/art_preinstall_hook_system_server +1824 20 -1 /apex/com.android.art/bin/dalvikvm64 +1824 35 -1 /apex/com.android.art/bin/imgdiagd32 +1824 17 -1 /apex/com.android.art/bin/art_prepostinstall_utils +1824 39 -1 /apex/com.android.art/bin/profman +1824 25 -1 /apex/com.android.art/bin/dexdump +1824 14 -1 /apex/com.android.art/bin/art_preinstall_hook +1824 37 -1 /apex/com.android.art/bin/oatdump +1824 104 -1 /apex/com.android.art/lib64 +1824 144 -1 /apex/com.android.art/lib64/libopenjdkjvm.so +1824 114 -1 /apex/com.android.art/lib64/libartbased.so +1824 141 -1 /apex/com.android.art/lib64/libnpt.so +1824 157 -1 /apex/com.android.art/lib64/libvixld.so +1824 140 -1 /apex/com.android.art/lib64/libnativeloader.so +1824 115 -1 /apex/com.android.art/lib64/libartd-compiler.so +1824 112 -1 /apex/com.android.art/lib64/libart.so +1824 129 -1 /apex/com.android.art/lib64/libdt_fd_forward.so +1824 145 -1 /apex/com.android.art/lib64/libopenjdkjvmd.so +1824 146 -1 /apex/com.android.art/lib64/libopenjdkjvmti.so +1824 128 -1 /apex/com.android.art/lib64/libdexfiled_external.so +1824 130 -1 /apex/com.android.art/lib64/libdt_socket.so +1824 113 -1 /apex/com.android.art/lib64/libartbase.so +1824 132 -1 /apex/com.android.art/lib64/libicui18n.so +1824 125 -1 /apex/com.android.art/lib64/libdexfile_external.so +1824 137 -1 /apex/com.android.art/lib64/libmeminfo.so +1824 143 -1 /apex/com.android.art/lib64/libopenjdkd.so +1824 127 -1 /apex/com.android.art/lib64/libdexfiled.so +1824 135 -1 /apex/com.android.art/lib64/libjdwp.so +1824 105 -1 /apex/com.android.art/lib64/libadbconnection.so +1824 150 -1 /apex/com.android.art/lib64/libperfetto_hprofd.so +1824 149 -1 /apex/com.android.art/lib64/libperfetto_hprof.so +1824 156 -1 /apex/com.android.art/lib64/libvixl.so +1824 154 -1 /apex/com.android.art/lib64/libsigchain.so +1824 131 -1 /apex/com.android.art/lib64/libexpat.so +1824 152 -1 /apex/com.android.art/lib64/libprofile.so +1824 124 -1 /apex/com.android.art/lib64/libdexfile.so +1824 148 -1 /apex/com.android.art/lib64/libpac.so +1824 155 -1 /apex/com.android.art/lib64/libunwindstack.so +1824 147 -1 /apex/com.android.art/lib64/libopenjdkjvmtid.so +1824 153 -1 /apex/com.android.art/lib64/libprofiled.so +1824 123 -1 /apex/com.android.art/lib64/libcrypto.so +1824 133 -1 /apex/com.android.art/lib64/libicuuc.so +1824 108 -1 /apex/com.android.art/lib64/libandroidio.so +1824 116 -1 /apex/com.android.art/lib64/libartd-dexlayout.so +1824 118 -1 /apex/com.android.art/lib64/libartd.so +1824 158 -1 /apex/com.android.art/lib64/libz.so +1824 111 -1 /apex/com.android.art/lib64/libart-disassembler.so +1824 134 -1 /apex/com.android.art/lib64/libjavacore.so +1824 126 -1 /apex/com.android.art/lib64/libdexfile_support.so +1824 109 -1 /apex/com.android.art/lib64/libart-compiler.so +1824 121 -1 /apex/com.android.art/lib64/libbase.so +1824 119 -1 /apex/com.android.art/lib64/libartpalette.so +1824 142 -1 /apex/com.android.art/lib64/libopenjdk.so +1824 122 -1 /apex/com.android.art/lib64/libc++.so +1824 106 -1 /apex/com.android.art/lib64/libadbconnectiond.so +1824 120 -1 /apex/com.android.art/lib64/libbacktrace.so +1824 138 -1 /apex/com.android.art/lib64/libnativebridge.so +1824 159 -1 /apex/com.android.art/lib64/libziparchive.so +1824 110 -1 /apex/com.android.art/lib64/libart-dexlayout.so +1824 136 -1 /apex/com.android.art/lib64/liblzma.so +1824 139 -1 /apex/com.android.art/lib64/libnativehelper.so +1824 117 -1 /apex/com.android.art/lib64/libartd-disassembler.so +1824 107 -1 /apex/com.android.art/lib64/libandroidicu.so +1824 151 -1 /apex/com.android.art/lib64/libprocinfo.so +1824 41 -1 /apex/com.android.art/etc +1824 42 -1 /apex/com.android.art/etc/ld.config.txt +1824 50 -1 /apex/com.android.art/lib +1824 89 -1 /apex/com.android.art/lib/libopenjdkjvm.so +1824 60 -1 /apex/com.android.art/lib/libartbased.so +1824 86 -1 /apex/com.android.art/lib/libnpt.so +1824 101 -1 /apex/com.android.art/lib/libvixld.so +1824 85 -1 /apex/com.android.art/lib/libnativeloader.so +1824 61 -1 /apex/com.android.art/lib/libartd-compiler.so +1824 58 -1 /apex/com.android.art/lib/libart.so +1824 75 -1 /apex/com.android.art/lib/libdt_fd_forward.so +1824 90 -1 /apex/com.android.art/lib/libopenjdkjvmd.so +1824 91 -1 /apex/com.android.art/lib/libopenjdkjvmti.so +1824 74 -1 /apex/com.android.art/lib/libdexfiled_external.so +1824 76 -1 /apex/com.android.art/lib/libdt_socket.so +1824 59 -1 /apex/com.android.art/lib/libartbase.so +1824 78 -1 /apex/com.android.art/lib/libicui18n.so +1824 71 -1 /apex/com.android.art/lib/libdexfile_external.so +1824 88 -1 /apex/com.android.art/lib/libopenjdkd.so +1824 73 -1 /apex/com.android.art/lib/libdexfiled.so +1824 81 -1 /apex/com.android.art/lib/libjdwp.so +1824 51 -1 /apex/com.android.art/lib/libadbconnection.so +1824 95 -1 /apex/com.android.art/lib/libperfetto_hprofd.so +1824 94 -1 /apex/com.android.art/lib/libperfetto_hprof.so +1824 100 -1 /apex/com.android.art/lib/libvixl.so +1824 98 -1 /apex/com.android.art/lib/libsigchain.so +1824 77 -1 /apex/com.android.art/lib/libexpat.so +1824 96 -1 /apex/com.android.art/lib/libprofile.so +1824 70 -1 /apex/com.android.art/lib/libdexfile.so +1824 93 -1 /apex/com.android.art/lib/libpac.so +1824 99 -1 /apex/com.android.art/lib/libunwindstack.so +1824 92 -1 /apex/com.android.art/lib/libopenjdkjvmtid.so +1824 97 -1 /apex/com.android.art/lib/libprofiled.so +1824 69 -1 /apex/com.android.art/lib/libcrypto.so +1824 79 -1 /apex/com.android.art/lib/libicuuc.so +1824 54 -1 /apex/com.android.art/lib/libandroidio.so +1824 62 -1 /apex/com.android.art/lib/libartd-dexlayout.so +1824 64 -1 /apex/com.android.art/lib/libartd.so +1824 102 -1 /apex/com.android.art/lib/libz.so +1824 57 -1 /apex/com.android.art/lib/libart-disassembler.so +1824 80 -1 /apex/com.android.art/lib/libjavacore.so +1824 72 -1 /apex/com.android.art/lib/libdexfile_support.so +1824 55 -1 /apex/com.android.art/lib/libart-compiler.so +1824 67 -1 /apex/com.android.art/lib/libbase.so +1824 65 -1 /apex/com.android.art/lib/libartpalette.so +1824 87 -1 /apex/com.android.art/lib/libopenjdk.so +1824 68 -1 /apex/com.android.art/lib/libc++.so +1824 52 -1 /apex/com.android.art/lib/libadbconnectiond.so +1824 66 -1 /apex/com.android.art/lib/libbacktrace.so +1824 83 -1 /apex/com.android.art/lib/libnativebridge.so +1824 103 -1 /apex/com.android.art/lib/libziparchive.so +1824 56 -1 /apex/com.android.art/lib/libart-dexlayout.so +1824 82 -1 /apex/com.android.art/lib/liblzma.so +1824 84 -1 /apex/com.android.art/lib/libnativehelper.so +1824 63 -1 /apex/com.android.art/lib/libartd-disassembler.so +1824 53 -1 /apex/com.android.art/lib/libandroidicu.so +1824 160 -1 /apex/com.android.art/apex_manifest.json +1824 43 -1 /apex/com.android.art/javalib +1824 48 -1 /apex/com.android.art/javalib/core-oj.jar +1824 46 -1 /apex/com.android.art/javalib/core-icu4j.jar +1824 49 -1 /apex/com.android.art/javalib/okhttp.jar +1824 45 -1 /apex/com.android.art/javalib/bouncycastle.jar +1824 44 -1 /apex/com.android.art/javalib/apache-xml.jar +1824 47 -1 /apex/com.android.art/javalib/core-libart.jar +1824 2 -1 /apex/com.android.art@1 +1824 11 -1 /apex/com.android.art@1/lost+found +1824 12 -1 /apex/com.android.art@1/bin +1824 36 -1 /apex/com.android.art@1/bin/imgdiagd64 +1824 19 -1 /apex/com.android.art@1/bin/dalvikvm32 +1824 28 -1 /apex/com.android.art@1/bin/dexlist +1824 27 -1 /apex/com.android.art@1/bin/dexlayoutd +1824 30 -1 /apex/com.android.art@1/bin/dexoptanalyzerd +1824 33 -1 /apex/com.android.art@1/bin/imgdiag64 +1824 29 -1 /apex/com.android.art@1/bin/dexoptanalyzer +1824 13 -1 /apex/com.android.art@1/bin/art_postinstall_hook +1824 20 -1 /apex/com.android.art@1/bin/dalvikvm +1824 15 -1 /apex/com.android.art@1/bin/art_preinstall_hook_boot +1824 24 -1 /apex/com.android.art@1/bin/dexdiag +1824 36 -1 /apex/com.android.art@1/bin/imgdiagd +1824 32 -1 /apex/com.android.art@1/bin/imgdiag32 +1824 22 -1 /apex/com.android.art@1/bin/dex2oatd +1824 40 -1 /apex/com.android.art@1/bin/profmand +1824 33 -1 /apex/com.android.art@1/bin/imgdiag +1824 21 -1 /apex/com.android.art@1/bin/dex2oat +1824 38 -1 /apex/com.android.art@1/bin/oatdumpd +1824 23 -1 /apex/com.android.art@1/bin/dexanalyze +1824 26 -1 /apex/com.android.art@1/bin/dexlayout +1824 16 -1 /apex/com.android.art@1/bin/art_preinstall_hook_system_server +1824 20 -1 /apex/com.android.art@1/bin/dalvikvm64 +1824 35 -1 /apex/com.android.art@1/bin/imgdiagd32 +1824 17 -1 /apex/com.android.art@1/bin/art_prepostinstall_utils +1824 39 -1 /apex/com.android.art@1/bin/profman +1824 25 -1 /apex/com.android.art@1/bin/dexdump +1824 14 -1 /apex/com.android.art@1/bin/art_preinstall_hook +1824 37 -1 /apex/com.android.art@1/bin/oatdump +1824 104 -1 /apex/com.android.art@1/lib64 +1824 144 -1 /apex/com.android.art@1/lib64/libopenjdkjvm.so +1824 114 -1 /apex/com.android.art@1/lib64/libartbased.so +1824 141 -1 /apex/com.android.art@1/lib64/libnpt.so +1824 157 -1 /apex/com.android.art@1/lib64/libvixld.so +1824 140 -1 /apex/com.android.art@1/lib64/libnativeloader.so +1824 115 -1 /apex/com.android.art@1/lib64/libartd-compiler.so +1824 112 -1 /apex/com.android.art@1/lib64/libart.so +1824 129 -1 /apex/com.android.art@1/lib64/libdt_fd_forward.so +1824 145 -1 /apex/com.android.art@1/lib64/libopenjdkjvmd.so +1824 146 -1 /apex/com.android.art@1/lib64/libopenjdkjvmti.so +1824 128 -1 /apex/com.android.art@1/lib64/libdexfiled_external.so +1824 130 -1 /apex/com.android.art@1/lib64/libdt_socket.so +1824 113 -1 /apex/com.android.art@1/lib64/libartbase.so +1824 132 -1 /apex/com.android.art@1/lib64/libicui18n.so +1824 125 -1 /apex/com.android.art@1/lib64/libdexfile_external.so +1824 137 -1 /apex/com.android.art@1/lib64/libmeminfo.so +1824 143 -1 /apex/com.android.art@1/lib64/libopenjdkd.so +1824 127 -1 /apex/com.android.art@1/lib64/libdexfiled.so +1824 135 -1 /apex/com.android.art@1/lib64/libjdwp.so +1824 105 -1 /apex/com.android.art@1/lib64/libadbconnection.so +1824 150 -1 /apex/com.android.art@1/lib64/libperfetto_hprofd.so +1824 149 -1 /apex/com.android.art@1/lib64/libperfetto_hprof.so +1824 156 -1 /apex/com.android.art@1/lib64/libvixl.so +1824 154 -1 /apex/com.android.art@1/lib64/libsigchain.so +1824 131 -1 /apex/com.android.art@1/lib64/libexpat.so +1824 152 -1 /apex/com.android.art@1/lib64/libprofile.so +1824 124 -1 /apex/com.android.art@1/lib64/libdexfile.so +1824 148 -1 /apex/com.android.art@1/lib64/libpac.so +1824 155 -1 /apex/com.android.art@1/lib64/libunwindstack.so +1824 147 -1 /apex/com.android.art@1/lib64/libopenjdkjvmtid.so +1824 153 -1 /apex/com.android.art@1/lib64/libprofiled.so +1824 123 -1 /apex/com.android.art@1/lib64/libcrypto.so +1824 133 -1 /apex/com.android.art@1/lib64/libicuuc.so +1824 108 -1 /apex/com.android.art@1/lib64/libandroidio.so +1824 116 -1 /apex/com.android.art@1/lib64/libartd-dexlayout.so +1824 118 -1 /apex/com.android.art@1/lib64/libartd.so +1824 158 -1 /apex/com.android.art@1/lib64/libz.so +1824 111 -1 /apex/com.android.art@1/lib64/libart-disassembler.so +1824 134 -1 /apex/com.android.art@1/lib64/libjavacore.so +1824 126 -1 /apex/com.android.art@1/lib64/libdexfile_support.so +1824 109 -1 /apex/com.android.art@1/lib64/libart-compiler.so +1824 121 -1 /apex/com.android.art@1/lib64/libbase.so +1824 119 -1 /apex/com.android.art@1/lib64/libartpalette.so +1824 142 -1 /apex/com.android.art@1/lib64/libopenjdk.so +1824 122 -1 /apex/com.android.art@1/lib64/libc++.so +1824 106 -1 /apex/com.android.art@1/lib64/libadbconnectiond.so +1824 120 -1 /apex/com.android.art@1/lib64/libbacktrace.so +1824 138 -1 /apex/com.android.art@1/lib64/libnativebridge.so +1824 159 -1 /apex/com.android.art@1/lib64/libziparchive.so +1824 110 -1 /apex/com.android.art@1/lib64/libart-dexlayout.so +1824 136 -1 /apex/com.android.art@1/lib64/liblzma.so +1824 139 -1 /apex/com.android.art@1/lib64/libnativehelper.so +1824 117 -1 /apex/com.android.art@1/lib64/libartd-disassembler.so +1824 107 -1 /apex/com.android.art@1/lib64/libandroidicu.so +1824 151 -1 /apex/com.android.art@1/lib64/libprocinfo.so +1824 41 -1 /apex/com.android.art@1/etc +1824 42 -1 /apex/com.android.art@1/etc/ld.config.txt +1824 50 -1 /apex/com.android.art@1/lib +1824 89 -1 /apex/com.android.art@1/lib/libopenjdkjvm.so +1824 60 -1 /apex/com.android.art@1/lib/libartbased.so +1824 86 -1 /apex/com.android.art@1/lib/libnpt.so +1824 101 -1 /apex/com.android.art@1/lib/libvixld.so +1824 85 -1 /apex/com.android.art@1/lib/libnativeloader.so +1824 61 -1 /apex/com.android.art@1/lib/libartd-compiler.so +1824 58 -1 /apex/com.android.art@1/lib/libart.so +1824 75 -1 /apex/com.android.art@1/lib/libdt_fd_forward.so +1824 90 -1 /apex/com.android.art@1/lib/libopenjdkjvmd.so +1824 91 -1 /apex/com.android.art@1/lib/libopenjdkjvmti.so +1824 74 -1 /apex/com.android.art@1/lib/libdexfiled_external.so +1824 76 -1 /apex/com.android.art@1/lib/libdt_socket.so +1824 59 -1 /apex/com.android.art@1/lib/libartbase.so +1824 78 -1 /apex/com.android.art@1/lib/libicui18n.so +1824 71 -1 /apex/com.android.art@1/lib/libdexfile_external.so +1824 88 -1 /apex/com.android.art@1/lib/libopenjdkd.so +1824 73 -1 /apex/com.android.art@1/lib/libdexfiled.so +1824 81 -1 /apex/com.android.art@1/lib/libjdwp.so +1824 51 -1 /apex/com.android.art@1/lib/libadbconnection.so +1824 95 -1 /apex/com.android.art@1/lib/libperfetto_hprofd.so +1824 94 -1 /apex/com.android.art@1/lib/libperfetto_hprof.so +1824 100 -1 /apex/com.android.art@1/lib/libvixl.so +1824 98 -1 /apex/com.android.art@1/lib/libsigchain.so +1824 77 -1 /apex/com.android.art@1/lib/libexpat.so +1824 96 -1 /apex/com.android.art@1/lib/libprofile.so +1824 70 -1 /apex/com.android.art@1/lib/libdexfile.so +1824 93 -1 /apex/com.android.art@1/lib/libpac.so +1824 99 -1 /apex/com.android.art@1/lib/libunwindstack.so +1824 92 -1 /apex/com.android.art@1/lib/libopenjdkjvmtid.so +1824 97 -1 /apex/com.android.art@1/lib/libprofiled.so +1824 69 -1 /apex/com.android.art@1/lib/libcrypto.so +1824 79 -1 /apex/com.android.art@1/lib/libicuuc.so +1824 54 -1 /apex/com.android.art@1/lib/libandroidio.so +1824 62 -1 /apex/com.android.art@1/lib/libartd-dexlayout.so +1824 64 -1 /apex/com.android.art@1/lib/libartd.so +1824 102 -1 /apex/com.android.art@1/lib/libz.so +1824 57 -1 /apex/com.android.art@1/lib/libart-disassembler.so +1824 80 -1 /apex/com.android.art@1/lib/libjavacore.so +1824 72 -1 /apex/com.android.art@1/lib/libdexfile_support.so +1824 55 -1 /apex/com.android.art@1/lib/libart-compiler.so +1824 67 -1 /apex/com.android.art@1/lib/libbase.so +1824 65 -1 /apex/com.android.art@1/lib/libartpalette.so +1824 87 -1 /apex/com.android.art@1/lib/libopenjdk.so +1824 68 -1 /apex/com.android.art@1/lib/libc++.so +1824 52 -1 /apex/com.android.art@1/lib/libadbconnectiond.so +1824 66 -1 /apex/com.android.art@1/lib/libbacktrace.so +1824 83 -1 /apex/com.android.art@1/lib/libnativebridge.so +1824 103 -1 /apex/com.android.art@1/lib/libziparchive.so +1824 56 -1 /apex/com.android.art@1/lib/libart-dexlayout.so +1824 82 -1 /apex/com.android.art@1/lib/liblzma.so +1824 84 -1 /apex/com.android.art@1/lib/libnativehelper.so +1824 63 -1 /apex/com.android.art@1/lib/libartd-disassembler.so +1824 53 -1 /apex/com.android.art@1/lib/libandroidicu.so +1824 160 -1 /apex/com.android.art@1/apex_manifest.json +1824 43 -1 /apex/com.android.art@1/javalib +1824 48 -1 /apex/com.android.art@1/javalib/core-oj.jar +1824 46 -1 /apex/com.android.art@1/javalib/core-icu4j.jar +1824 49 -1 /apex/com.android.art@1/javalib/okhttp.jar +1824 45 -1 /apex/com.android.art@1/javalib/bouncycastle.jar +1824 44 -1 /apex/com.android.art@1/javalib/apache-xml.jar +1824 47 -1 /apex/com.android.art@1/javalib/core-libart.jar +25 19553 -1 /vendor +64769 2602 -1 /vendor/ueventd.rc +2061 1 -1 /vendor/firmware_mnt +2061 81 -1 /vendor/firmware_mnt/image +2061 117 -1 /vendor/firmware_mnt/image/version.cfg +2061 118 -1 /vendor/firmware_mnt/image/mba.mbn +2061 119 -1 /vendor/firmware_mnt/image/modem.b00 +2061 120 -1 /vendor/firmware_mnt/image/modem.b01 +2061 121 -1 /vendor/firmware_mnt/image/modem.b02 +2061 122 -1 /vendor/firmware_mnt/image/modem.b03 +2061 123 -1 /vendor/firmware_mnt/image/modem.b04 +2061 124 -1 /vendor/firmware_mnt/image/modem.b05 +2061 125 -1 /vendor/firmware_mnt/image/modem.b06 +2061 126 -1 /vendor/firmware_mnt/image/modem.b07 +2061 127 -1 /vendor/firmware_mnt/image/modem.b08 +2061 128 -1 /vendor/firmware_mnt/image/modem.b09 +2061 129 -1 /vendor/firmware_mnt/image/modem.b10 +2061 130 -1 /vendor/firmware_mnt/image/modem.b11 +2061 131 -1 /vendor/firmware_mnt/image/modem.b12 +2061 132 -1 /vendor/firmware_mnt/image/modem.b13 +2061 133 -1 /vendor/firmware_mnt/image/modem.b14 +2061 134 -1 /vendor/firmware_mnt/image/modem.b15 +2061 135 -1 /vendor/firmware_mnt/image/modem.b16 +2061 136 -1 /vendor/firmware_mnt/image/modem.b17 +2061 137 -1 /vendor/firmware_mnt/image/modem.b18 +2061 138 -1 /vendor/firmware_mnt/image/modem.b19 +2061 139 -1 /vendor/firmware_mnt/image/modem.b20 +2061 140 -1 /vendor/firmware_mnt/image/modem.b21 +2061 141 -1 /vendor/firmware_mnt/image/modem.b22 +2061 142 -1 /vendor/firmware_mnt/image/modem.b23 +2061 143 -1 /vendor/firmware_mnt/image/modem.b24 +2061 144 -1 /vendor/firmware_mnt/image/modem.b25 +2061 145 -1 /vendor/firmware_mnt/image/modem.b26 +2061 146 -1 /vendor/firmware_mnt/image/modem.b27 +2061 147 -1 /vendor/firmware_mnt/image/modem.b28 +2061 148 -1 /vendor/firmware_mnt/image/modem.b29 +2061 149 -1 /vendor/firmware_mnt/image/modem.mdt +2061 150 -1 /vendor/firmware_mnt/image/qdsp6m.qdb +2061 151 -1 /vendor/firmware_mnt/image/modemr.jsn +2061 152 -1 /vendor/firmware_mnt/verinfo +2061 154 -1 /vendor/firmware_mnt/verinfo/ver_info.txt +25 1547401 -1 /vendor/app +25 1559547 -1 /vendor/app/crosshatch_game_driver +64769 20 -1 /vendor/app/crosshatch_game_driver/crosshatch_game_driver.apk +25 1547402 -1 /vendor/app/TimeService +25 1559549 -1 /vendor/app/TimeService/oat +25 1559550 -1 /vendor/app/TimeService/oat/arm64 +64769 18 -1 /vendor/app/TimeService/oat/arm64/TimeService.vdex +64769 17 -1 /vendor/app/TimeService/oat/arm64/TimeService.odex +64769 14 -1 /vendor/app/TimeService/TimeService.apk +25 1559553 -1 /vendor/app/embms +25 1559554 -1 /vendor/app/embms/oem +25 1559555 -1 /vendor/app/embms/oem/vzw +64769 26 -1 /vendor/app/embms/oem/vzw/verizon_config_params.txt +64769 25 -1 /vendor/app/embms/oem/vzw/provisioning_params.xml +64769 24 -1 /vendor/app/embms/oem/vzw/config_params.xml +25 18598 -1 /vendor/lib +64769 995 -1 /vendor/lib/android.hardware.audio.common-util.so +64769 996 -1 /vendor/lib/android.hardware.audio.common@5.0-util.so +64769 997 -1 /vendor/lib/android.hardware.automotive.vehicle@2.0-manager-lib.so +64769 998 -1 /vendor/lib/android.hardware.camera.provider@2.4-external.so +64769 999 -1 /vendor/lib/android.hardware.camera.provider@2.4-legacy.so +64769 1000 -1 /vendor/lib/android.hardware.sensors@2.0-impl.so +64769 1001 -1 /vendor/lib/btaudio_offload_if.so +64769 1002 -1 /vendor/lib/camera.device@1.0-impl.so +64769 1003 -1 /vendor/lib/camera.device@3.2-impl.so +64769 1004 -1 /vendor/lib/camera.device@3.3-impl.so +64769 1005 -1 /vendor/lib/camera.device@3.4-external-impl.so +64769 1006 -1 /vendor/lib/camera.device@3.4-impl.so +64769 1007 -1 /vendor/lib/camera.device@3.5-external-impl.so +64769 1008 -1 /vendor/lib/camera.device@3.5-impl.so +64769 1009 -1 /vendor/lib/com.qualcomm.qti.imscmservice@1.0.so +64769 1010 -1 /vendor/lib/com.qualcomm.qti.uceservice@2.0.so +64769 1011 -1 /vendor/lib/com.quicinc.cne.api@1.0.so +64769 1012 -1 /vendor/lib/com.quicinc.cne.api@1.1.so +64769 1013 -1 /vendor/lib/com.quicinc.cne.constants@1.0.so +64769 1014 -1 /vendor/lib/com.quicinc.cne.constants@2.0.so +64769 1015 -1 /vendor/lib/com.quicinc.cne.constants@2.1.so +64769 1016 -1 /vendor/lib/com.quicinc.cne.server@1.0.so +64769 1017 -1 /vendor/lib/com.quicinc.cne.server@2.0.so +64769 1018 -1 /vendor/lib/com.quicinc.cne.server@2.1.so +25 180935 -1 /vendor/lib/egl +64769 1026 -1 /vendor/lib/egl/libq3dtools_esx.so +64769 1023 -1 /vendor/lib/egl/libGLESv2_adreno.so +64769 1024 -1 /vendor/lib/egl/libQTapGLES.so +64769 1022 -1 /vendor/lib/egl/libGLESv1_CM_adreno.so +64769 1025 -1 /vendor/lib/egl/libq3dtools_adreno.so +64769 1020 -1 /vendor/lib/egl/eglSubDriverAndroid.so +64769 1021 -1 /vendor/lib/egl/libEGL_adreno.so +64769 1027 -1 /vendor/lib/hardware.google.light@1.0.so +25 18601 -1 /vendor/lib/hw +64769 1049 -1 /vendor/lib/hw/audio.usb.default.so +64769 1043 -1 /vendor/lib/hw/android.hardware.soundtrigger@2.2-impl.so +64769 1037 -1 /vendor/lib/hw/android.hardware.drm@1.0-impl.so +64769 1041 -1 /vendor/lib/hw/android.hardware.memtrack@1.0-impl.so +64769 1042 -1 /vendor/lib/hw/android.hardware.renderscript@1.0-impl.so +64769 1044 -1 /vendor/lib/hw/android.hardware.vibrator@1.2-impl.crosshatch.so +64769 1046 -1 /vendor/lib/hw/audio.primary.default.so +64769 1053 -1 /vendor/lib/hw/hwcomposer.sdm845.so +64769 1038 -1 /vendor/lib/hw/android.hardware.gatekeeper@1.0-impl-qti.so +64769 1056 -1 /vendor/lib/hw/memtrack.sdm845.so +64769 1040 -1 /vendor/lib/hw/android.hardware.graphics.mapper@2.0-impl-qti-display.so +64769 1061 -1 /vendor/lib/hw/vibrator.default.so +64769 1057 -1 /vendor/lib/hw/power.default.so +64769 1034 -1 /vendor/lib/hw/android.hardware.broadcastradio@1.0-impl.so +64769 1059 -1 /vendor/lib/hw/sound_trigger.primary.sdm845.so +64769 1045 -1 /vendor/lib/hw/audio.bluetooth.default.so +64769 1060 -1 /vendor/lib/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so +64769 1058 -1 /vendor/lib/hw/sensors.crosshatch.so +64769 1039 -1 /vendor/lib/hw/android.hardware.gnss@1.1-impl-qti.so +64769 1051 -1 /vendor/lib/hw/gralloc.default.so +64769 1052 -1 /vendor/lib/hw/gralloc.sdm845.so +64769 1054 -1 /vendor/lib/hw/lights.sdm845.so +64769 1031 -1 /vendor/lib/hw/android.hardware.bluetooth.audio@2.0-impl.so +64769 1047 -1 /vendor/lib/hw/audio.primary.sdm845.so +64769 1048 -1 /vendor/lib/hw/audio.r_submix.default.so +64769 1030 -1 /vendor/lib/hw/android.hardware.audio@5.0-impl.so +64769 1036 -1 /vendor/lib/hw/android.hardware.contexthub@1.0-impl.generic.so +64769 1055 -1 /vendor/lib/hw/local_time.default.so +64769 1050 -1 /vendor/lib/hw/bootctrl.sdm845.so +64769 1062 -1 /vendor/lib/hw/vulkan.sdm845.so +64769 1029 -1 /vendor/lib/hw/android.hardware.audio.effect@5.0-impl.so +64769 1032 -1 /vendor/lib/hw/android.hardware.bluetooth@1.0-impl-qti.so +64769 1035 -1 /vendor/lib/hw/android.hardware.camera.provider@2.4-impl.so +64769 1033 -1 /vendor/lib/hw/android.hardware.boot@1.0-impl.so +64769 1063 -1 /vendor/lib/lib-dplmedia.so +64769 1064 -1 /vendor/lib/lib-imsdpl.so +64769 1065 -1 /vendor/lib/lib-imsqimf.so +64769 1066 -1 /vendor/lib/lib-imsrcs-v2.so +64769 1067 -1 /vendor/lib/lib-imsxml.so +64769 1068 -1 /vendor/lib/lib-rtpcommon.so +64769 1069 -1 /vendor/lib/lib-rtpcore.so +64769 1070 -1 /vendor/lib/lib-rtpdaemoninterface.so +64769 1071 -1 /vendor/lib/lib-rtpsl.so +64769 1072 -1 /vendor/lib/lib-uceservice.so +64769 1073 -1 /vendor/lib/libAlacSwDec.so +64769 1074 -1 /vendor/lib/libApeSwDec.so +64769 1075 -1 /vendor/lib/libC2D2.so +64769 1076 -1 /vendor/lib/libCB.so +64769 1077 -1 /vendor/lib/libCommandSvc.so +64769 1078 -1 /vendor/lib/libFlacSwDec.so +64769 1079 -1 /vendor/lib/libGPQTEEC_vendor.so +64769 1080 -1 /vendor/lib/libGPTEE_vendor.so +64769 1081 -1 /vendor/lib/libGPreqcancel.so +64769 1082 -1 /vendor/lib/libGPreqcancel_svc.so +64769 1083 -1 /vendor/lib/libMpeg4SwEncoder.so +64769 1084 -1 /vendor/lib/libOmxAlacDecSw.so +64769 1085 -1 /vendor/lib/libOmxAmrwbplusDec.so +64769 1086 -1 /vendor/lib/libOmxApeDecSw.so +64769 1087 -1 /vendor/lib/libOmxCore.so +64769 1088 -1 /vendor/lib/libOmxDsdDec.so +64769 1089 -1 /vendor/lib/libOmxEvrcDec.so +64769 1090 -1 /vendor/lib/libOmxQcelp13Dec.so +64769 1091 -1 /vendor/lib/libOmxVdec.so +64769 1092 -1 /vendor/lib/libOmxVenc.so +64769 1093 -1 /vendor/lib/libOpenCL-pixel.so +64769 1094 -1 /vendor/lib/libOpenCL.so +64769 1095 -1 /vendor/lib/libQSEEComAPI.so +64769 1096 -1 /vendor/lib/libQTEEConnector_vendor.so +64769 1097 -1 /vendor/lib/libRSDriver_adreno.so +64769 1098 -1 /vendor/lib/libSecureUILib.so +64769 1099 -1 /vendor/lib/libStDrvInt.so +64769 1100 -1 /vendor/lib/libSubSystemShutdown.so +64769 1101 -1 /vendor/lib/lib_aion_buffer.so +64769 1102 -1 /vendor/lib/lib_camera_sensors.so +64769 1103 -1 /vendor/lib/libacdb-fts.so +64769 1104 -1 /vendor/lib/libacdbloader.so +64769 1105 -1 /vendor/lib/libacdbrtac.so +64769 1106 -1 /vendor/lib/libadiertac.so +64769 1107 -1 /vendor/lib/libadm.so +64769 1108 -1 /vendor/lib/libadpcmdec.so +64769 1109 -1 /vendor/lib/libadreno_utils.so +64769 1110 -1 /vendor/lib/libadsp_default_listener.so +64769 1111 -1 /vendor/lib/libadsprpc.so +64769 1112 -1 /vendor/lib/libalsautils.so +64769 1113 -1 /vendor/lib/libash.so +64769 1114 -1 /vendor/lib/libaudcal.so +64769 1115 -1 /vendor/lib/libaudioalsa.so +64769 1116 -1 /vendor/lib/libaudiofoundation.so +64769 1117 -1 /vendor/lib/libavservices_minijail_vendor.so +64769 1118 -1 /vendor/lib/libbase64.so +64769 1119 -1 /vendor/lib/libbccQTI.so +64769 1120 -1 /vendor/lib/libbluetooth_audio_session.so +64769 1121 -1 /vendor/lib/libbluetooth_audio_session_qti.so +64769 1122 -1 /vendor/lib/libbthost_if.so +64769 1123 -1 /vendor/lib/libbthost_if_qti.so +64769 1124 -1 /vendor/lib/libbtnv.so +64769 1125 -1 /vendor/lib/libc2d30_bltlib.so +64769 1126 -1 /vendor/lib/libc2dcolorconvert.so +64769 1127 -1 /vendor/lib/libcameradepthcalibrator.so +64769 1128 -1 /vendor/lib/libcdsp_default_listener.so +64769 1129 -1 /vendor/lib/libcdsprpc.so +64769 1130 -1 /vendor/lib/libcld80211.so +64769 1131 -1 /vendor/lib/libcne.so +64769 1132 -1 /vendor/lib/libcneapiclient.so +64769 1133 -1 /vendor/lib/libcneoplookup.so +64769 1134 -1 /vendor/lib/libcneqmiutils.so +64769 1135 -1 /vendor/lib/libcodec2_hidl@1.0.so +64769 1136 -1 /vendor/lib/libcodec2_vndk.so +64769 1137 -1 /vendor/lib/libconfigdb.so +64769 1138 -1 /vendor/lib/libcpion.so +64769 1139 -1 /vendor/lib/libcppf.so +64769 1140 -1 /vendor/lib/libdataitems.so +64769 1141 -1 /vendor/lib/libdiag.so +64769 1142 -1 /vendor/lib/libdiagjni.so +64769 1143 -1 /vendor/lib/libdisp-aba.so +64769 1144 -1 /vendor/lib/libdisplayconfig.so +64769 1145 -1 /vendor/lib/libdisplaydebug.so +64769 1146 -1 /vendor/lib/libdisplayqos.so +64769 1147 -1 /vendor/lib/libdrm.so +64769 1148 -1 /vendor/lib/libdrmfs.so +64769 1149 -1 /vendor/lib/libdrmtime.so +64769 1150 -1 /vendor/lib/libdrmutils.so +64769 1151 -1 /vendor/lib/libdsd2pcm.so +64769 1152 -1 /vendor/lib/libdsi_netctrl.so +64769 1153 -1 /vendor/lib/libdsutils.so +64769 1154 -1 /vendor/lib/libeaselcomm.so +64769 1155 -1 /vendor/lib/libeaselmanager_client.so +64769 1156 -1 /vendor/lib/libeffects.so +64769 1157 -1 /vendor/lib/libeffectsconfig.so +64769 1158 -1 /vendor/lib/libelmyra-protos.so +64769 1159 -1 /vendor/lib/libfastcrc.so +64769 1160 -1 /vendor/lib/libfastcvdsp_stub.so +64769 1161 -1 /vendor/lib/libfastcvopt.so +64769 1162 -1 /vendor/lib/libflp.so +64769 1163 -1 /vendor/lib/libgcs-calwrapper.so +64769 1164 -1 /vendor/lib/libgcs-ipc.so +64769 1165 -1 /vendor/lib/libgcs-osal.so +64769 1166 -1 /vendor/lib/libgcs.so +64769 1167 -1 /vendor/lib/libgeofence.so +64769 1168 -1 /vendor/lib/libgnss.so +64769 1169 -1 /vendor/lib/libgnsspps.so +64769 1170 -1 /vendor/lib/libgoog_llv_gpu.so +64769 1171 -1 /vendor/lib/libgoogle_camera_hal_tests.so +64769 1172 -1 /vendor/lib/libgooglecamerahal.so +64769 1173 -1 /vendor/lib/libgooglecamerahalutils.so +64769 1174 -1 /vendor/lib/libgps.utils.so +64769 1175 -1 /vendor/lib/libgpu_tonemapper.so +64769 1176 -1 /vendor/lib/libgralloccore.so +64769 1177 -1 /vendor/lib/libgrallocutils.so +64769 1178 -1 /vendor/lib/libgsl.so +64769 1179 -1 /vendor/lib/libhdcp1prov.so +64769 1180 -1 /vendor/lib/libhdcp2p2prov.so +64769 1181 -1 /vendor/lib/libhdcpsrm.so +64769 1182 -1 /vendor/lib/libhdr_tm.so +64769 1183 -1 /vendor/lib/libhidltransport.so +64769 1184 -1 /vendor/lib/libhwbinder.so +64769 1185 -1 /vendor/lib/libidl.so +64769 1186 -1 /vendor/lib/libizat_core.so +64769 1187 -1 /vendor/lib/libjson.so +64769 1188 -1 /vendor/lib/libkeymasterdeviceutils.so +64769 1189 -1 /vendor/lib/libkeymasterprovision.so +64769 1190 -1 /vendor/lib/libkeymasterutils.so +64769 1191 -1 /vendor/lib/liblbs_core.so +64769 1192 -1 /vendor/lib/libllvm-glnext.so +64769 1193 -1 /vendor/lib/libllvm-qcom.so +64769 1194 -1 /vendor/lib/libloc_api_v02.so +64769 1195 -1 /vendor/lib/libloc_core.so +64769 1196 -1 /vendor/lib/libloc_ds_api.so +64769 1197 -1 /vendor/lib/liblocation_api.so +64769 1198 -1 /vendor/lib/liblowi_client.so +64769 1199 -1 /vendor/lib/liblowi_wifihal.so +64769 1200 -1 /vendor/lib/liblqe.so +64769 1201 -1 /vendor/lib/libmaxxaudioqdsp.so +64769 1202 -1 /vendor/lib/libmdmdetect.so +64769 1203 -1 /vendor/lib/libmdsprpc.so +64769 1204 -1 /vendor/lib/libmm-hdcpmgr.so +64769 1205 -1 /vendor/lib/libmm-omxcore.so +64769 1206 -1 /vendor/lib/libmulawdec.so +64769 1207 -1 /vendor/lib/libnbaio_mono.so +64769 1208 -1 /vendor/lib/libnetmgr.so +64769 1209 -1 /vendor/lib/liboemcrypto.so +64769 1210 -1 /vendor/lib/libopus.so +64769 1211 -1 /vendor/lib/libpdmapper.so +64769 1212 -1 /vendor/lib/libpdnotifier.so +64769 1213 -1 /vendor/lib/libperipheral_client.so +64769 1214 -1 /vendor/lib/libplatformconfig.so +64769 1215 -1 /vendor/lib/libprotobuf-cpp-full.so +64769 1216 -1 /vendor/lib/libqcbor.so +64769 1217 -1 /vendor/lib/libqcci_legacy.so +64769 1218 -1 /vendor/lib/libqcmaputils.so +64769 1219 -1 /vendor/lib/libqcodec2.so +64769 1220 -1 /vendor/lib/libqcrilFramework.so +64769 1221 -1 /vendor/lib/libqdMetaData.so +64769 1222 -1 /vendor/lib/libqdi.so +64769 1223 -1 /vendor/lib/libqdp.so +64769 1224 -1 /vendor/lib/libqdutils.so +64769 1225 -1 /vendor/lib/libqisl.so +64769 1226 -1 /vendor/lib/libqmi.so +64769 1227 -1 /vendor/lib/libqmi_cci.so +64769 1228 -1 /vendor/lib/libqmi_client_helper.so +64769 1229 -1 /vendor/lib/libqmi_client_qmux.so +64769 1230 -1 /vendor/lib/libqmi_common_so.so +64769 1231 -1 /vendor/lib/libqmi_csi.so +64769 1232 -1 /vendor/lib/libqmi_csvt_srvc.so +64769 1233 -1 /vendor/lib/libqmi_encdec.so +64769 1234 -1 /vendor/lib/libqmi_vs-google-1.so +64769 1235 -1 /vendor/lib/libqmiservices.so +64769 1236 -1 /vendor/lib/libqrtr.so +64769 1237 -1 /vendor/lib/libqseed3.so +64769 1238 -1 /vendor/lib/libqservice.so +64769 1239 -1 /vendor/lib/libqsocket.so +64769 1240 -1 /vendor/lib/libqti-utils.so +64769 1241 -1 /vendor/lib/libqtikeymaster4.so +64769 1242 -1 /vendor/lib/libquipc_os_api.so +64769 1243 -1 /vendor/lib/libreference-ril.so +64769 1244 -1 /vendor/lib/libril-qc-ltedirectdisc.so +64769 1245 -1 /vendor/lib/libril-qc-radioconfig.so +64769 1246 -1 /vendor/lib/libril-qcril-hook-oem.so +64769 1247 -1 /vendor/lib/libril.so +64769 1248 -1 /vendor/lib/libril_glog.so +64769 1249 -1 /vendor/lib/librilqmiservices.so +64769 1250 -1 /vendor/lib/librilutils.so +64769 1251 -1 /vendor/lib/librpmb.so +64769 1252 -1 /vendor/lib/librs_adreno.so +64769 1253 -1 /vendor/lib/librs_adreno_sha1.so +64769 1254 -1 /vendor/lib/libsdedrm.so +64769 1255 -1 /vendor/lib/libsdm-color.so +64769 1256 -1 /vendor/lib/libsdm-diag.so +64769 1257 -1 /vendor/lib/libsdm-disp-vndapis.so +64769 1258 -1 /vendor/lib/libsdmcore.so +64769 1259 -1 /vendor/lib/libsdmextension.so +64769 1260 -1 /vendor/lib/libsdmutils.so +64769 1261 -1 /vendor/lib/libsdsprpc.so +64769 1262 -1 /vendor/lib/libsecureui.so +64769 1263 -1 /vendor/lib/libsecureui_svcsock.so +64769 1264 -1 /vendor/lib/libsensorslog.so +64769 1265 -1 /vendor/lib/libsettings.so +64769 1266 -1 /vendor/lib/libsi.so +64769 1267 -1 /vendor/lib/libsns_device_mode_stub.so +64769 1268 -1 /vendor/lib/libsns_fastRPC_util.so +64769 1269 -1 /vendor/lib/libsns_low_lat_stream_stub.so +64769 1270 -1 /vendor/lib/libsnsapi.so +64769 1271 -1 /vendor/lib/libsnsdiaglog.so +64769 1272 -1 /vendor/lib/libspcom.so +64769 1273 -1 /vendor/lib/libspiris.so +64769 1274 -1 /vendor/lib/libspl.so +64769 1275 -1 /vendor/lib/libssc.so +64769 1276 -1 /vendor/lib/libssc_default_listener.so +64769 1277 -1 /vendor/lib/libssc_proto.so +64769 1278 -1 /vendor/lib/libssd.so +64769 1279 -1 /vendor/lib/libstagefright_amrnb_common.so +64769 1280 -1 /vendor/lib/libstagefright_bufferpool@2.0.1.so +64769 1281 -1 /vendor/lib/libstagefright_enc_common.so +64769 1282 -1 /vendor/lib/libstagefright_flacdec.so +64769 1283 -1 /vendor/lib/libstagefright_soft_aacdec.so +64769 1284 -1 /vendor/lib/libstagefright_soft_aacenc.so +64769 1285 -1 /vendor/lib/libstagefright_soft_amrdec.so +64769 1286 -1 /vendor/lib/libstagefright_soft_amrnbenc.so +64769 1287 -1 /vendor/lib/libstagefright_soft_amrwbenc.so +64769 1288 -1 /vendor/lib/libstagefright_soft_avcdec.so +64769 1289 -1 /vendor/lib/libstagefright_soft_avcenc.so +64769 1290 -1 /vendor/lib/libstagefright_soft_flacdec.so +64769 1291 -1 /vendor/lib/libstagefright_soft_flacenc.so +64769 1292 -1 /vendor/lib/libstagefright_soft_g711dec.so +64769 1293 -1 /vendor/lib/libstagefright_soft_gsmdec.so +64769 1294 -1 /vendor/lib/libstagefright_soft_hevcdec.so +64769 1295 -1 /vendor/lib/libstagefright_soft_mp3dec.so +64769 1296 -1 /vendor/lib/libstagefright_soft_mpeg2dec.so +64769 1297 -1 /vendor/lib/libstagefright_soft_mpeg4dec.so +64769 1298 -1 /vendor/lib/libstagefright_soft_mpeg4enc.so +64769 1299 -1 /vendor/lib/libstagefright_soft_opusdec.so +64769 1300 -1 /vendor/lib/libstagefright_soft_rawdec.so +64769 1301 -1 /vendor/lib/libstagefright_soft_vorbisdec.so +64769 1302 -1 /vendor/lib/libstagefright_soft_vpxdec.so +64769 1303 -1 /vendor/lib/libstagefright_soft_vpxenc.so +64769 1304 -1 /vendor/lib/libstagefright_softomx.so +64769 1305 -1 /vendor/lib/libstagefright_softomx_plugin.so +64769 1306 -1 /vendor/lib/libstagefrighthw.so +64769 1307 -1 /vendor/lib/libstreamparser.so +64769 1308 -1 /vendor/lib/libsubsystem_control.so +64769 1309 -1 /vendor/lib/libswregistrationalgo.so +64769 1310 -1 /vendor/lib/libswvdec.so +64769 1311 -1 /vendor/lib/libsysmon_cdsp_skel.so +64769 1312 -1 /vendor/lib/libsystem_health_mon.so +64769 1313 -1 /vendor/lib/libthermalclient.so +64769 1314 -1 /vendor/lib/libtime_genoff.so +64769 1315 -1 /vendor/lib/libtinycompress.so +64769 1316 -1 /vendor/lib/libtinyxml.so +64769 1317 -1 /vendor/lib/libtinyxml2_1.so +64769 1318 -1 /vendor/lib/libtzdrmgenprov.so +64769 1319 -1 /vendor/lib/libvd6281.so +64769 1320 -1 /vendor/lib/libvideoutils.so +64769 1321 -1 /vendor/lib/libvorbisidec.so +64769 1322 -1 /vendor/lib/libvpx.so +64769 1323 -1 /vendor/lib/libvqzip.so +64769 1324 -1 /vendor/lib/libvsc.so +64769 1325 -1 /vendor/lib/libwebrtc_audio_preprocessing.so +64769 1326 -1 /vendor/lib/libwifi-hal-ctrl.so +64769 1327 -1 /vendor/lib/libwifi-hal-qcom.so +64769 1328 -1 /vendor/lib/libwms.so +64769 1329 -1 /vendor/lib/libwpa_client.so +64769 1330 -1 /vendor/lib/libwqe.so +64769 1331 -1 /vendor/lib/libxml.so +25 1559839 -1 /vendor/lib/mediacas +64769 1333 -1 /vendor/lib/mediacas/libclearkeycasplugin.so +25 1559841 -1 /vendor/lib/mediadrm +64769 1335 -1 /vendor/lib/mediadrm/libdrmclearkeyplugin.so +25 1559843 -1 /vendor/lib/modules +64769 1347 -1 /vendor/lib/modules/snd-soc-sdm845.ko +64769 1350 -1 /vendor/lib/modules/snd-soc-wcd9xxx.ko +64769 1354 -1 /vendor/lib/modules/wcd-dsp-glink.ko +64769 1344 -1 /vendor/lib/modules/sec_touch.ko +64769 1342 -1 /vendor/lib/modules/modules.softdep +64769 1353 -1 /vendor/lib/modules/wcd-core.ko +64769 1337 -1 /vendor/lib/modules/ftm5.ko +64769 1348 -1 /vendor/lib/modules/snd-soc-wcd-spi.ko +64769 1355 -1 /vendor/lib/modules/wlan.ko +64769 1340 -1 /vendor/lib/modules/modules.dep +64769 1339 -1 /vendor/lib/modules/modules.alias +64769 1338 -1 /vendor/lib/modules/heatmap.ko +64769 1352 -1 /vendor/lib/modules/videobuf2-vmalloc.ko +64769 1341 -1 /vendor/lib/modules/modules.load +64769 1345 -1 /vendor/lib/modules/snd-soc-cs35l36.ko +64769 1349 -1 /vendor/lib/modules/snd-soc-wcd934x.ko +64769 1346 -1 /vendor/lib/modules/snd-soc-sdm845-max98927.ko +64769 1343 -1 /vendor/lib/modules/pinctrl-wcd.ko +64769 1351 -1 /vendor/lib/modules/videobuf2-memops.ko +25 1559863 -1 /vendor/lib/qcdrm +25 1559864 -1 /vendor/lib/qcdrm/playready +25 1559865 -1 /vendor/lib/qcdrm/playready/lib +64769 1359 -1 /vendor/lib/qcdrm/playready/lib/libtzplayready_customer.so +64769 1360 -1 /vendor/lib/qcrild_librilutils.so +25 1559868 -1 /vendor/lib/rfsa +25 1559869 -1 /vendor/lib/rfsa/adsp +64769 1368 -1 /vendor/lib/rfsa/adsp/libdsp_streamer_skel.so +64769 1363 -1 /vendor/lib/rfsa/adsp/capi_v2_aptX_Classic.so +64769 1373 -1 /vendor/lib/rfsa/adsp/libsns_low_lat_stream_skel.so +64769 1372 -1 /vendor/lib/rfsa/adsp/libsns_device_mode_skel.so +64769 1371 -1 /vendor/lib/rfsa/adsp/libhexagon_nn_skel.so +64769 1364 -1 /vendor/lib/rfsa/adsp/capi_v2_aptX_HD.so +64769 1365 -1 /vendor/lib/rfsa/adsp/libVC1Dec.so +64769 1367 -1 /vendor/lib/rfsa/adsp/libdspCV_skel.so +64769 1369 -1 /vendor/lib/rfsa/adsp/libfastcvadsp.so +64769 1370 -1 /vendor/lib/rfsa/adsp/libfastcvdsp_skel.so +64769 1366 -1 /vendor/lib/rfsa/adsp/libapps_mem_heap.so +64769 1374 -1 /vendor/lib/sensors.ssc.so +25 33224 -1 /vendor/lib/soundfx +64769 1376 -1 /vendor/lib/soundfx/libaudiopreprocessing.so +64769 1378 -1 /vendor/lib/soundfx/libdownmix.so +64769 1377 -1 /vendor/lib/soundfx/libbundlewrapper.so +64769 1383 -1 /vendor/lib/soundfx/libqcompostprocbundle.so +64769 1387 -1 /vendor/lib/soundfx/libreverbwrapper.so +64769 1384 -1 /vendor/lib/soundfx/libqcomvisualizer.so +64769 1386 -1 /vendor/lib/soundfx/libqcomvoiceprocessingdescriptors.so +64769 1388 -1 /vendor/lib/soundfx/libvisualizer.so +64769 1385 -1 /vendor/lib/soundfx/libqcomvoiceprocessing.so +64769 1380 -1 /vendor/lib/soundfx/libeffectproxy.so +64769 1382 -1 /vendor/lib/soundfx/libmalistener.so +64769 1389 -1 /vendor/lib/soundfx/libvolumelistener.so +64769 1381 -1 /vendor/lib/soundfx/libldnhncr.so +64769 1379 -1 /vendor/lib/soundfx/libdynproc.so +64769 1390 -1 /vendor/lib/vendor.display.color@1.0.so +64769 1391 -1 /vendor/lib/vendor.display.color@1.1.so +64769 1392 -1 /vendor/lib/vendor.display.color@1.2.so +64769 1393 -1 /vendor/lib/vendor.display.config@1.0.so +64769 1394 -1 /vendor/lib/vendor.display.config@1.1.so +64769 1395 -1 /vendor/lib/vendor.display.config@1.2.so +64769 1396 -1 /vendor/lib/vendor.display.config@1.3.so +64769 1397 -1 /vendor/lib/vendor.display.postproc@1.0.so +64769 1398 -1 /vendor/lib/vendor.google.radioext@1.0.so +64769 1399 -1 /vendor/lib/vendor.google.radioext@1.1.so +64769 1400 -1 /vendor/lib/vendor.google_paintbox@1.0.so +64769 1401 -1 /vendor/lib/vendor.qti.esepowermanager@1.0.so +64769 1402 -1 /vendor/lib/vendor.qti.hardware.automotive.vehicle@1.0.so +64769 1403 -1 /vendor/lib/vendor.qti.hardware.bluetooth_audio@2.0.so +64769 1404 -1 /vendor/lib/vendor.qti.hardware.data.latency@1.0.so +64769 1405 -1 /vendor/lib/vendor.qti.hardware.fingerprint@1.0.so +64769 1406 -1 /vendor/lib/vendor.qti.hardware.iop@1.0.so +64769 1407 -1 /vendor/lib/vendor.qti.hardware.perf@1.0.so +64769 1408 -1 /vendor/lib/vendor.qti.hardware.qdutils_disp@1.0.so +64769 1409 -1 /vendor/lib/vendor.qti.hardware.qteeconnector@1.0.so +64769 1410 -1 /vendor/lib/vendor.qti.hardware.radio.am@1.0.so +64769 1411 -1 /vendor/lib/vendor.qti.hardware.radio.atcmdfwd@1.0.so +64769 1412 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.0.so +64769 1413 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.1.so +64769 1414 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.2.so +64769 1415 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.3.so +64769 1416 -1 /vendor/lib/vendor.qti.hardware.radio.ims@1.4.so +64769 1417 -1 /vendor/lib/vendor.qti.hardware.radio.qcrilhook@1.0.so +64769 1418 -1 /vendor/lib/vendor.qti.hardware.radio.qtiradio@1.0.so +64769 1419 -1 /vendor/lib/vendor.qti.hardware.radio.qtiradio@2.0.so +64769 1420 -1 /vendor/lib/vendor.qti.hardware.radio.uim@1.0.so +64769 1421 -1 /vendor/lib/vendor.qti.hardware.radio.uim@1.1.so +64769 1422 -1 /vendor/lib/vendor.qti.hardware.radio.uim_remote_client@1.0.so +64769 1423 -1 /vendor/lib/vendor.qti.hardware.radio.uim_remote_server@1.0.so +64769 1424 -1 /vendor/lib/vendor.qti.hardware.soter@1.0.so +64769 1425 -1 /vendor/lib/vendor.qti.hardware.tui_comm@1.0.so +64769 1426 -1 /vendor/lib/vendor.qti.hardware.vpp@1.1.so +64769 1427 -1 /vendor/lib/vendor.qti.hardware.wigig.netperftuner@1.0.so +64769 1428 -1 /vendor/lib/vendor.qti.ims.callinfo@1.0.so +64769 1429 -1 /vendor/lib/vendor.qti.imsrtpservice@1.0-service-Impl.so +64769 1430 -1 /vendor/lib/vendor.qti.imsrtpservice@1.0.so +64769 1431 -1 /vendor/lib/vendor.qti.voiceprint@1.0.so +25 1559925 -1 /vendor/lost+found +64769 381 -1 /vendor/build.prop +25 1451993 -1 /vendor/framework +25 1451994 -1 /vendor/framework/oat +25 1451995 -1 /vendor/framework/oat/arm64 +64769 993 -1 /vendor/framework/oat/arm64/com.google.android.camera.experimental2018.vdex +64769 992 -1 /vendor/framework/oat/arm64/com.google.android.camera.experimental2018.odex +25 1559927 -1 /vendor/framework/oat/arm +64769 990 -1 /vendor/framework/oat/arm/com.google.android.camera.experimental2018.vdex +64769 989 -1 /vendor/framework/oat/arm/com.google.android.camera.experimental2018.odex +64769 986 -1 /vendor/framework/com.google.android.camera.experimental2018.jar +25 1465198 -1 /vendor/odm +25 1452750 -1 /vendor/odm/etc +25 1559930 -1 /vendor/odm/etc/permissions +25 1559931 -1 /vendor/odm/etc/permissions/sku_G013D +64769 1940 -1 /vendor/odm/etc/permissions/sku_G013D/com.google.hardware.pixel.japan.xml +64769 1939 -1 /vendor/odm/etc/permissions/sku_G013D/android.hardware.nfc.ese.xml +25 1559934 -1 /vendor/odm/etc/permissions/sku_G013C +64769 1937 -1 /vendor/odm/etc/permissions/sku_G013C/android.hardware.nfc.uicc.xml +25 1559936 -1 /vendor/odm/etc/permissions/sku_G013B +64769 1935 -1 /vendor/odm/etc/permissions/sku_G013B/com.google.hardware.pixel.japan.xml +64769 1934 -1 /vendor/odm/etc/permissions/sku_G013B/android.hardware.nfc.ese.xml +25 1559939 -1 /vendor/odm/etc/permissions/sku_G013A +64769 1932 -1 /vendor/odm/etc/permissions/sku_G013A/android.hardware.nfc.uicc.xml +64769 1927 -1 /vendor/odm/etc/build.prop +64769 1929 -1 /vendor/odm/etc/passwd +64769 1926 -1 /vendor/odm/etc/NOTICE.xml.gz +64769 1928 -1 /vendor/odm/etc/group +25 1559944 -1 /vendor/odm/etc/vintf +64769 1944 -1 /vendor/odm/etc/vintf/manifest_G013C.xml +64769 1942 -1 /vendor/odm/etc/vintf/manifest_G013A.xml +64769 1943 -1 /vendor/odm/etc/vintf/manifest_G013B.xml +64769 1945 -1 /vendor/odm/etc/vintf/manifest_G013D.xml +25 1559949 -1 /vendor/usr +25 1559950 -1 /vendor/usr/keylayout +64769 2607 -1 /vendor/usr/keylayout/uinput-fpc.kl +25 1559952 -1 /vendor/usr/idc +64769 2605 -1 /vendor/usr/idc/uinput-fpc.idc +25 34899 -1 /vendor/overlay +64769 1950 -1 /vendor/overlay/TeleService__auto_generated_rro_vendor.apk +64769 1948 -1 /vendor/overlay/NfcNci__auto_generated_rro_vendor.apk +64769 1951 -1 /vendor/overlay/framework-res__auto_generated_rro_vendor.apk +64769 1949 -1 /vendor/overlay/SystemUIGoogle__auto_generated_rro_vendor.apk +64769 1947 -1 /vendor/overlay/Bluetooth__auto_generated_rro_vendor.apk +64769 382 -1 /vendor/default.prop +25 20057 -1 /vendor/bin +64769 28 -1 /vendor/bin/ATFWD-daemon +64769 29 -1 /vendor/bin/CitadelProvision +64769 30 -1 /vendor/bin/KmInstallKeybox +64769 31 -1 /vendor/bin/PktRspTest +64769 32 -1 /vendor/bin/StoreKeybox +64769 347 -1 /vendor/bin/acpi +64769 34 -1 /vendor/bin/adsprpcd +64769 35 -1 /vendor/bin/applypatch +64769 36 -1 /vendor/bin/athdiag +64769 37 -1 /vendor/bin/audioflacapp +64769 38 -1 /vendor/bin/awk +64769 347 -1 /vendor/bin/base64 +64769 347 -1 /vendor/bin/basename +64769 347 -1 /vendor/bin/bc +64769 347 -1 /vendor/bin/blockdev +64769 43 -1 /vendor/bin/boringssl_self_test32 +64769 44 -1 /vendor/bin/boringssl_self_test64 +64769 45 -1 /vendor/bin/btconfig +64769 347 -1 /vendor/bin/cal +64769 347 -1 /vendor/bin/cat +64769 48 -1 /vendor/bin/ccid_daemon +64769 49 -1 /vendor/bin/cdsprpcd +64769 347 -1 /vendor/bin/chcon +64769 51 -1 /vendor/bin/checkpoint_gc +64769 347 -1 /vendor/bin/chgrp +64769 347 -1 /vendor/bin/chmod +64769 347 -1 /vendor/bin/chown +64769 55 -1 /vendor/bin/chre +64769 56 -1 /vendor/bin/chre_test_client +64769 347 -1 /vendor/bin/chroot +64769 347 -1 /vendor/bin/chrt +64769 347 -1 /vendor/bin/cksum +64769 347 -1 /vendor/bin/clear +64769 347 -1 /vendor/bin/cmp +64769 62 -1 /vendor/bin/cnd +64769 63 -1 /vendor/bin/cnss-daemon +64769 64 -1 /vendor/bin/cnss_diag +64769 347 -1 /vendor/bin/comm +64769 347 -1 /vendor/bin/cp +64769 347 -1 /vendor/bin/cpio +64769 68 -1 /vendor/bin/cplay +64769 347 -1 /vendor/bin/cut +64769 347 -1 /vendor/bin/date +64769 347 -1 /vendor/bin/dd +64769 347 -1 /vendor/bin/devmem +64769 347 -1 /vendor/bin/df +64769 74 -1 /vendor/bin/diag_callback_sample +64769 75 -1 /vendor/bin/diag_dci_sample +64769 76 -1 /vendor/bin/diag_klog +64769 77 -1 /vendor/bin/diag_mdlog +64769 78 -1 /vendor/bin/diag_socket_log +64769 79 -1 /vendor/bin/diag_uart_log +64769 347 -1 /vendor/bin/diff +64769 347 -1 /vendor/bin/dirname +64769 347 -1 /vendor/bin/dmesg +64769 347 -1 /vendor/bin/dos2unix +64769 347 -1 /vendor/bin/du +64769 85 -1 /vendor/bin/dumpsys +64769 86 -1 /vendor/bin/easel_power_test +64769 87 -1 /vendor/bin/easelmanagerd +64769 347 -1 /vendor/bin/echo +64769 347 -1 /vendor/bin/egrep +64769 90 -1 /vendor/bin/elmyra_test +64769 347 -1 /vendor/bin/env +64769 347 -1 /vendor/bin/expand +64769 347 -1 /vendor/bin/expr +64769 94 -1 /vendor/bin/ezlsh +64769 347 -1 /vendor/bin/fallocate +64769 347 -1 /vendor/bin/false +64769 347 -1 /vendor/bin/fgrep +64769 347 -1 /vendor/bin/file +64769 347 -1 /vendor/bin/find +64769 347 -1 /vendor/bin/flock +64769 347 -1 /vendor/bin/fmt +64769 347 -1 /vendor/bin/free +64769 347 -1 /vendor/bin/fsync +64769 104 -1 /vendor/bin/ftmdaemon +64769 347 -1 /vendor/bin/getconf +64769 347 -1 /vendor/bin/getenforce +64769 344 -1 /vendor/bin/getevent +64769 344 -1 /vendor/bin/getprop +64769 347 -1 /vendor/bin/grep +64769 347 -1 /vendor/bin/groups +64769 347 -1 /vendor/bin/gunzip +64769 347 -1 /vendor/bin/gzip +64769 113 -1 /vendor/bin/halutil +64769 114 -1 /vendor/bin/hdcp1prov +64769 115 -1 /vendor/bin/hdcp2p2prov +64769 347 -1 /vendor/bin/head +64769 117 -1 /vendor/bin/hostapd_cli +64769 347 -1 /vendor/bin/hostname +64769 119 -1 /vendor/bin/hvdcp_opti +25 20089 -1 /vendor/bin/hw +64769 121 -1 /vendor/bin/hw/android.hardware.atrace@1.0-service.pixel +64769 144 -1 /vendor/bin/hw/android.hardware.neuralnetworks@1.0-service-paintbox +64769 124 -1 /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service.fpc +64769 163 -1 /vendor/bin/hw/vendor.google.radioext@1.0-service +64769 129 -1 /vendor/bin/hw/android.hardware.configstore@1.1-service +64769 160 -1 /vendor/bin/hw/qcrild +64769 149 -1 /vendor/bin/hw/android.hardware.power@1.3-service.pixel-libperfmgr +64769 154 -1 /vendor/bin/hw/android.hardware.weaver@1.0-service.citadel +64769 161 -1 /vendor/bin/hw/small_hals.crosshatch-service +64769 143 -1 /vendor/bin/hw/android.hardware.media.omx@1.0-service +64769 126 -1 /vendor/bin/hw/android.hardware.boot@1.0-service +64769 162 -1 /vendor/bin/hw/test_citadel +64769 155 -1 /vendor/bin/hw/citadel_updater +64769 146 -1 /vendor/bin/hw/android.hardware.nfc@1.2-service +64769 139 -1 /vendor/bin/hw/android.hardware.health.storage@1.0-service +64769 152 -1 /vendor/bin/hw/android.hardware.thermal@2.0-service.pixel +64769 151 -1 /vendor/bin/hw/android.hardware.sensors@2.0-service +64769 168 -1 /vendor/bin/hw/vendor.qti.media.c2@1.0-service +64769 122 -1 /vendor/bin/hw/android.hardware.audio@2.0-service +64769 153 -1 /vendor/bin/hw/android.hardware.usb@1.1-service.crosshatch +64769 148 -1 /vendor/bin/hw/android.hardware.power.stats@1.0-service.pixel +64769 131 -1 /vendor/bin/hw/android.hardware.contexthub@1.0-service +64769 125 -1 /vendor/bin/hw/android.hardware.bluetooth@1.0-service-qti +64769 134 -1 /vendor/bin/hw/android.hardware.drm@1.2-service.widevine +64769 140 -1 /vendor/bin/hw/android.hardware.health@2.0-service.crosshatch +64769 158 -1 /vendor/bin/hw/hostapd +64769 159 -1 /vendor/bin/hw/init_citadel +64769 137 -1 /vendor/bin/hw/android.hardware.gnss@1.1-service-qti +64769 145 -1 /vendor/bin/hw/android.hardware.neuralnetworks@1.2-service-qti +64769 157 -1 /vendor/bin/hw/hardware.google.light@1.0-service +64769 147 -1 /vendor/bin/hw/android.hardware.oemlock@1.0-service.citadel +64769 138 -1 /vendor/bin/hw/android.hardware.graphics.composer@2.3-service +64769 156 -1 /vendor/bin/hw/citadeld +64769 135 -1 /vendor/bin/hw/android.hardware.dumpstate@1.0-service.crosshatch +64769 128 -1 /vendor/bin/hw/android.hardware.cas@1.1-service +64769 142 -1 /vendor/bin/hw/android.hardware.keymaster@4.0-service.citadel +64769 164 -1 /vendor/bin/hw/vendor.google.wifi_ext@1.0-service-vendor +64769 141 -1 /vendor/bin/hw/android.hardware.keymaster@4.0-service-qti +64769 127 -1 /vendor/bin/hw/android.hardware.camera.provider@2.4-service_64 +64769 150 -1 /vendor/bin/hw/android.hardware.secure_element@1.1-service-disabled +64769 130 -1 /vendor/bin/hw/android.hardware.confirmationui@1.0-service-crosshatch +64769 136 -1 /vendor/bin/hw/android.hardware.gatekeeper@1.0-service-qti +64769 123 -1 /vendor/bin/hw/android.hardware.authsecret@1.0-service.citadel +64769 166 -1 /vendor/bin/hw/vendor.qti.hardware.display.allocator@1.0-service +64769 169 -1 /vendor/bin/hw/wait_for_strongbox +64769 165 -1 /vendor/bin/hw/vendor.google.wireless_charger@1.0-service-vendor +64769 133 -1 /vendor/bin/hw/android.hardware.drm@1.2-service.clearkey +64769 167 -1 /vendor/bin/hw/vendor.qti.hardware.tui_comm@1.0-service-qti +64769 170 -1 /vendor/bin/hw/wpa_supplicant +64769 132 -1 /vendor/bin/hw/android.hardware.drm@1.0-service +64769 347 -1 /vendor/bin/hwclock +64769 347 -1 /vendor/bin/i2cdetect +64769 347 -1 /vendor/bin/i2cdump +64769 347 -1 /vendor/bin/i2cget +64769 347 -1 /vendor/bin/i2cset +64769 347 -1 /vendor/bin/iconv +64769 347 -1 /vendor/bin/id +64769 347 -1 /vendor/bin/ifconfig +64769 179 -1 /vendor/bin/ims_rtp_daemon +64769 180 -1 /vendor/bin/imsdatadaemon +64769 181 -1 /vendor/bin/imsqmidaemon +64769 182 -1 /vendor/bin/imsrcsd +64769 183 -1 /vendor/bin/init.edge_sense.sh +64769 184 -1 /vendor/bin/init.fingerprint.sh +64769 185 -1 /vendor/bin/init.firstboot.sh +64769 186 -1 /vendor/bin/init.insmod.sh +64769 187 -1 /vendor/bin/init.qcom.devstart.sh +64769 188 -1 /vendor/bin/init.qcom.ipastart.sh +64769 189 -1 /vendor/bin/init.radio.sh +64769 190 -1 /vendor/bin/init.ramoops.sh +64769 347 -1 /vendor/bin/inotifyd +64769 347 -1 /vendor/bin/insmod +64769 347 -1 /vendor/bin/install +64769 347 -1 /vendor/bin/ionice +64769 347 -1 /vendor/bin/iorenice +64769 196 -1 /vendor/bin/ipacm +64769 197 -1 /vendor/bin/irsc_util +64769 347 -1 /vendor/bin/kill +64769 347 -1 /vendor/bin/killall +64769 347 -1 /vendor/bin/ln +64769 347 -1 /vendor/bin/load_policy +64769 202 -1 /vendor/bin/loc_launcher +64769 347 -1 /vendor/bin/log +64769 347 -1 /vendor/bin/logname +64769 205 -1 /vendor/bin/logwrapper +64769 347 -1 /vendor/bin/losetup +64769 207 -1 /vendor/bin/lowi-server +64769 347 -1 /vendor/bin/ls +64769 347 -1 /vendor/bin/lsmod +64769 347 -1 /vendor/bin/lsof +64769 347 -1 /vendor/bin/lspci +64769 347 -1 /vendor/bin/lsusb +64769 347 -1 /vendor/bin/md5sum +64769 214 -1 /vendor/bin/mdm_helper +64769 215 -1 /vendor/bin/mdm_helper_proxy +64769 347 -1 /vendor/bin/microcom +64769 217 -1 /vendor/bin/misc_writer +64769 347 -1 /vendor/bin/mkdir +64769 347 -1 /vendor/bin/mkfifo +64769 347 -1 /vendor/bin/mknod +64769 347 -1 /vendor/bin/mkswap +64769 347 -1 /vendor/bin/mktemp +64769 223 -1 /vendor/bin/mm-adec-omxamrwbplus-test +64769 224 -1 /vendor/bin/mm-audio-alsa-test +64769 225 -1 /vendor/bin/mm-pp-dpps +64769 226 -1 /vendor/bin/mm-vidc-omx-test +64769 227 -1 /vendor/bin/modem_svc +64769 347 -1 /vendor/bin/modinfo +64769 344 -1 /vendor/bin/modprobe +64769 347 -1 /vendor/bin/more +64769 347 -1 /vendor/bin/mount +64769 347 -1 /vendor/bin/mountpoint +64769 233 -1 /vendor/bin/msm_irqbalance +64769 347 -1 /vendor/bin/mv +64769 235 -1 /vendor/bin/myftm +64769 347 -1 /vendor/bin/nc +64769 347 -1 /vendor/bin/netcat +64769 238 -1 /vendor/bin/netmgrd +64769 347 -1 /vendor/bin/netstat +64769 347 -1 /vendor/bin/nice +64769 347 -1 /vendor/bin/nl +64769 347 -1 /vendor/bin/nohup +64769 347 -1 /vendor/bin/nproc +64769 347 -1 /vendor/bin/nsenter +64769 347 -1 /vendor/bin/od +64769 347 -1 /vendor/bin/paste +64769 347 -1 /vendor/bin/patch +64769 248 -1 /vendor/bin/pd-mapper +64769 347 -1 /vendor/bin/pgrep +64769 347 -1 /vendor/bin/pidof +64769 251 -1 /vendor/bin/pixelstats-vendor +64769 347 -1 /vendor/bin/pkill +64769 253 -1 /vendor/bin/pktlogconf +64769 254 -1 /vendor/bin/pm-proxy +64769 255 -1 /vendor/bin/pm-service +64769 347 -1 /vendor/bin/pmap +64769 257 -1 /vendor/bin/port-bridge +64769 347 -1 /vendor/bin/printenv +64769 347 -1 /vendor/bin/printf +64769 347 -1 /vendor/bin/ps +64769 261 -1 /vendor/bin/ptt_socket_app +64769 347 -1 /vendor/bin/pwd +64769 263 -1 /vendor/bin/qcat_unbuffered +25 1560126 -1 /vendor/bin/qmi-framework-tests +64769 270 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_2000 +64769 265 -1 /vendor/bin/qmi-framework-tests/qmi_test_mt_client_init_instance +64769 266 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_0000 +64769 267 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_0001 +64769 269 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_1001 +64769 271 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_3000 +64769 268 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_1000 +64769 276 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_test +64769 273 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_4000 +64769 275 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_start_svc +64769 274 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_4001 +64769 272 -1 /vendor/bin/qmi-framework-tests/qmi_test_service_clnt_test_3001 +64769 277 -1 /vendor/bin/qrtr-cfg +64769 278 -1 /vendor/bin/qrtr-lookup +64769 279 -1 /vendor/bin/qrtr-ns +64769 280 -1 /vendor/bin/qseecom_sample_client +64769 281 -1 /vendor/bin/qseecomd +64769 282 -1 /vendor/bin/qti +64769 283 -1 /vendor/bin/ramdump +64769 284 -1 /vendor/bin/ramoops +64769 347 -1 /vendor/bin/readlink +64769 347 -1 /vendor/bin/realpath +64769 347 -1 /vendor/bin/renice +64769 347 -1 /vendor/bin/restorecon +64769 347 -1 /vendor/bin/rm +64769 347 -1 /vendor/bin/rmdir +64769 347 -1 /vendor/bin/rmmod +64769 292 -1 /vendor/bin/rmt_storage +64769 347 -1 /vendor/bin/runcon +64769 347 -1 /vendor/bin/sed +64769 347 -1 /vendor/bin/sendevent +64769 296 -1 /vendor/bin/sensors.qti +64769 347 -1 /vendor/bin/seq +64769 347 -1 /vendor/bin/setenforce +64769 344 -1 /vendor/bin/setprop +64769 347 -1 /vendor/bin/setsid +64769 301 -1 /vendor/bin/sh +64769 347 -1 /vendor/bin/sha1sum +64769 347 -1 /vendor/bin/sha224sum +64769 347 -1 /vendor/bin/sha256sum +64769 347 -1 /vendor/bin/sha384sum +64769 347 -1 /vendor/bin/sha512sum +64769 347 -1 /vendor/bin/sleep +64769 308 -1 /vendor/bin/sns_cal +64769 309 -1 /vendor/bin/sns_oem_bus_access +64769 310 -1 /vendor/bin/sns_oem_register_rw +64769 311 -1 /vendor/bin/sns_oem_self_test +64769 312 -1 /vendor/bin/sns_wait_for_sensor +64769 347 -1 /vendor/bin/sort +64769 314 -1 /vendor/bin/spdaemon +64769 315 -1 /vendor/bin/spectraltool +64769 347 -1 /vendor/bin/split +64769 317 -1 /vendor/bin/ssc_poke +64769 318 -1 /vendor/bin/sscrpcd +64769 319 -1 /vendor/bin/ssr_diag +64769 320 -1 /vendor/bin/ssr_setup +64769 344 -1 /vendor/bin/start +64769 347 -1 /vendor/bin/stat +64769 344 -1 /vendor/bin/stop +64769 347 -1 /vendor/bin/strings +64769 347 -1 /vendor/bin/stty +64769 326 -1 /vendor/bin/subsystem_ramdump +64769 347 -1 /vendor/bin/swapoff +64769 347 -1 /vendor/bin/swapon +64769 347 -1 /vendor/bin/sync +64769 347 -1 /vendor/bin/sysctl +64769 347 -1 /vendor/bin/tac +64769 347 -1 /vendor/bin/tail +64769 347 -1 /vendor/bin/tar +64769 347 -1 /vendor/bin/taskset +64769 335 -1 /vendor/bin/tcpdump_logger +64769 347 -1 /vendor/bin/tee +64769 337 -1 /vendor/bin/test_diag +64769 338 -1 /vendor/bin/tftp_server +64769 339 -1 /vendor/bin/thermal-engine +64769 347 -1 /vendor/bin/time +64769 341 -1 /vendor/bin/time_daemon +64769 347 -1 /vendor/bin/timeout +64769 343 -1 /vendor/bin/tloc_daemon +64769 344 -1 /vendor/bin/toolbox +64769 347 -1 /vendor/bin/top +64769 347 -1 /vendor/bin/touch +64769 347 -1 /vendor/bin/toybox_vendor +64769 347 -1 /vendor/bin/tr +64769 347 -1 /vendor/bin/true +64769 347 -1 /vendor/bin/truncate +64769 347 -1 /vendor/bin/tty +64769 347 -1 /vendor/bin/ulimit +64769 347 -1 /vendor/bin/umount +64769 347 -1 /vendor/bin/uname +64769 347 -1 /vendor/bin/uniq +64769 347 -1 /vendor/bin/unix2dos +64769 347 -1 /vendor/bin/unlink +64769 347 -1 /vendor/bin/unshare +64769 347 -1 /vendor/bin/uptime +64769 347 -1 /vendor/bin/usleep +64769 347 -1 /vendor/bin/uudecode +64769 347 -1 /vendor/bin/uuencode +64769 347 -1 /vendor/bin/uuidgen +64769 364 -1 /vendor/bin/vd6281_test +64769 365 -1 /vendor/bin/vendor.qti.hardware.soter@1.0-provision +64769 366 -1 /vendor/bin/vendor_cmd_tool +64769 347 -1 /vendor/bin/vmstat +64769 368 -1 /vendor/bin/vndservice +64769 369 -1 /vendor/bin/vndservicemanager +64769 347 -1 /vendor/bin/watch +64769 347 -1 /vendor/bin/wc +64769 372 -1 /vendor/bin/wdsdaemon +64769 347 -1 /vendor/bin/which +64769 347 -1 /vendor/bin/whoami +64769 375 -1 /vendor/bin/wpa_cli +64769 347 -1 /vendor/bin/xargs +64769 377 -1 /vendor/bin/xtra-daemon +64769 347 -1 /vendor/bin/xxd +64769 347 -1 /vendor/bin/yes +64769 347 -1 /vendor/bin/zcat +25 1560231 -1 /vendor/firmware +64769 837 -1 /vendor/firmware/cdspr.jsn +64769 967 -1 /vendor/firmware/widevine.b00 +64769 827 -1 /vendor/firmware/cdsp.b03 +64769 798 -1 /vendor/firmware/a630_zap.elf +64769 926 -1 /vendor/firmware/ipa_fws.b03 +64769 879 -1 /vendor/firmware/cpe_9340.b11 +64769 965 -1 /vendor/firmware/venus.mbn +64769 832 -1 /vendor/firmware/cdsp.b08 +64769 859 -1 /vendor/firmware/confirmationui.b02 +64769 800 -1 /vendor/firmware/adsp.b00 +64769 914 -1 /vendor/firmware/fpctzappfingerprint.b02 +64769 847 -1 /vendor/firmware/cmnlib.mbn +64769 916 -1 /vendor/firmware/fpctzappfingerprint.b04 +64769 876 -1 /vendor/firmware/cpe_9340.b06 +64769 835 -1 /vendor/firmware/cdsp.b11 +64769 961 -1 /vendor/firmware/venus.b01 +64769 883 -1 /vendor/firmware/cpe_9340.b18 +64769 819 -1 /vendor/firmware/bdwlan-blueline-EVT1.0.bin +64769 922 -1 /vendor/firmware/ftm5_p1_fw.ftb +64769 842 -1 /vendor/firmware/cmnlib.b01 +64769 849 -1 /vendor/firmware/cmnlib64.b00 +64769 799 -1 /vendor/firmware/a630_zap.mdt +64769 972 -1 /vendor/firmware/widevine.b05 +64769 836 -1 /vendor/firmware/cdsp.mdt +64769 875 -1 /vendor/firmware/cpe_9340.b05 +64769 815 -1 /vendor/firmware/adsp.b15 +64769 899 -1 /vendor/firmware/crus_sp_config_b1_tx.bin +64769 935 -1 /vendor/firmware/slpi.b00 +64769 966 -1 /vendor/firmware/venus.mdt +64769 947 -1 /vendor/firmware/slpi.b12 +64769 882 -1 /vendor/firmware/cpe_9340.b16 +64769 809 -1 /vendor/firmware/adsp.b09 +64769 844 -1 /vendor/firmware/cmnlib.b03 +64769 878 -1 /vendor/firmware/cpe_9340.b09 +64769 971 -1 /vendor/firmware/widevine.b04 +64769 964 -1 /vendor/firmware/venus.b04 +64769 795 -1 /vendor/firmware/a630_zap.b00 +64769 858 -1 /vendor/firmware/confirmationui.b01 +64769 841 -1 /vendor/firmware/cmnlib.b00 +64769 977 -1 /vendor/firmware/wil6210.brd +64769 919 -1 /vendor/firmware/fpctzappfingerprint.b07 +64769 970 -1 /vendor/firmware/widevine.b03 +64769 848 -1 /vendor/firmware/cmnlib.mdt +64769 794 -1 /vendor/firmware/a630_sqe.fw +64769 959 -1 /vendor/firmware/slpi.mdt +64769 885 -1 /vendor/firmware/cpe_9340.mdt +64769 945 -1 /vendor/firmware/slpi.b10 +64769 812 -1 /vendor/firmware/adsp.b12 +64769 952 -1 /vendor/firmware/slpi.b17 +64769 917 -1 /vendor/firmware/fpctzappfingerprint.b05 +64769 888 -1 /vendor/firmware/cppf.b02 +64769 940 -1 /vendor/firmware/slpi.b05 +25 1560284 -1 /vendor/firmware/easel +64769 906 -1 /vendor/firmware/easel/Image +64769 907 -1 /vendor/firmware/easel/fip.bin +64769 911 -1 /vendor/firmware/easel/ramdisk.img +64769 910 -1 /vendor/firmware/easel/mnh.dtb +25 1560289 -1 /vendor/firmware/easel/hdrplus_shot_pcgs +64769 909 -1 /vendor/firmware/easel/hdrplus_shot_pcgs/empty.txt +64769 944 -1 /vendor/firmware/slpi.b09 +64769 806 -1 /vendor/firmware/adsp.b06 +64769 830 -1 /vendor/firmware/cdsp.b06 +64769 896 -1 /vendor/firmware/crbtfw21.tlv +64769 804 -1 /vendor/firmware/adsp.b04 +64769 863 -1 /vendor/firmware/confirmationui.b06 +64769 902 -1 /vendor/firmware/cs40l20.bin +64769 816 -1 /vendor/firmware/adsp.mdt +25 1560299 -1 /vendor/firmware/citadel +64769 840 -1 /vendor/firmware/citadel/ec.bin +64769 880 -1 /vendor/firmware/cpe_9340.b13 +64769 826 -1 /vendor/firmware/cdsp.b02 +64769 814 -1 /vendor/firmware/adsp.b14 +64769 953 -1 /vendor/firmware/slpi.b18 +64769 897 -1 /vendor/firmware/crnv21.bin +64769 957 -1 /vendor/firmware/slpi.b22 +64769 969 -1 /vendor/firmware/widevine.b02 +64769 874 -1 /vendor/firmware/cpe_9340.b03 +64769 887 -1 /vendor/firmware/cppf.b01 +64769 968 -1 /vendor/firmware/widevine.b01 +25 1560312 -1 /vendor/firmware/confirmationui_fonts +64769 869 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Google_Sans_Display_Medium_70.bin +64769 872 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Roboto_70.bin +64769 868 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Google_Sans_Display_Medium_49.bin +64769 871 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Roboto_56.bin +64769 867 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Google_Sans_Display_77.bin +64769 870 -1 /vendor/firmware/confirmationui_fonts/LeapFrog_Roboto_49.bin +64769 802 -1 /vendor/firmware/adsp.b02 +64769 824 -1 /vendor/firmware/cdsp.b00 +64769 949 -1 /vendor/firmware/slpi.b14 +64769 834 -1 /vendor/firmware/cdsp.b10 +64769 857 -1 /vendor/firmware/confirmationui.b00 +64769 889 -1 /vendor/firmware/cppf.b03 +64769 918 -1 /vendor/firmware/fpctzappfingerprint.b06 +64769 979 -1 /vendor/firmware/wil6210_sparrow_plus_ftm.fw +64769 821 -1 /vendor/firmware/bdwlan-blueline.bin +64769 820 -1 /vendor/firmware/bdwlan-blueline-EVT1.1.bin +64769 807 -1 /vendor/firmware/adsp.b07 +64769 898 -1 /vendor/firmware/crus_sp_config_b1_rx.bin +64769 808 -1 /vendor/firmware/adsp.b08 +64769 937 -1 /vendor/firmware/slpi.b02 +64769 924 -1 /vendor/firmware/ipa_fws.b01 +64769 803 -1 /vendor/firmware/adsp.b03 +64769 854 -1 /vendor/firmware/cmnlib64.b05 +64769 886 -1 /vendor/firmware/cppf.b00 +64769 955 -1 /vendor/firmware/slpi.b20 +64769 903 -1 /vendor/firmware/cs40l20.wmfw +64769 904 -1 /vendor/firmware/drv2624.bin +64769 983 -1 /vendor/firmware/wlanmdsp.mbn +64769 801 -1 /vendor/firmware/adsp.b01 +64769 941 -1 /vendor/firmware/slpi.b06 +64769 912 -1 /vendor/firmware/fpctzappfingerprint.b00 +64769 893 -1 /vendor/firmware/cppf.b07 +64769 796 -1 /vendor/firmware/a630_zap.b01 +64769 856 -1 /vendor/firmware/cmnlib64.mdt +64769 831 -1 /vendor/firmware/cdsp.b07 +64769 851 -1 /vendor/firmware/cmnlib64.b02 +64769 791 -1 /vendor/firmware/Data.msc +64769 853 -1 /vendor/firmware/cmnlib64.b04 +64769 817 -1 /vendor/firmware/adspr.jsn +64769 797 -1 /vendor/firmware/a630_zap.b02 +64769 793 -1 /vendor/firmware/a630_gmu.bin +64769 865 -1 /vendor/firmware/confirmationui.mdt +64769 950 -1 /vendor/firmware/slpi.b15 +64769 943 -1 /vendor/firmware/slpi.b08 +64769 823 -1 /vendor/firmware/bdwlan-crosshatch.bin +64769 790 -1 /vendor/firmware/CAMERA_ICP.elf +64769 877 -1 /vendor/firmware/cpe_9340.b07 +64769 951 -1 /vendor/firmware/slpi.b16 +64769 934 -1 /vendor/firmware/s6sy761.fw +64769 894 -1 /vendor/firmware/cppf.mbn +64769 813 -1 /vendor/firmware/adsp.b13 +64769 829 -1 /vendor/firmware/cdsp.b05 +64769 923 -1 /vendor/firmware/ipa_fws.b00 +64769 978 -1 /vendor/firmware/wil6210.fw +64769 855 -1 /vendor/firmware/cmnlib64.mbn +64769 931 -1 /vendor/firmware/modemuw.jsn +64769 973 -1 /vendor/firmware/widevine.b06 +64769 913 -1 /vendor/firmware/fpctzappfingerprint.b01 +64769 825 -1 /vendor/firmware/cdsp.b01 +25 1560372 -1 /vendor/firmware/wlan +25 1560373 -1 /vendor/firmware/wlan/qca_cld +64769 982 -1 /vendor/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini +64769 852 -1 /vendor/firmware/cmnlib64.b03 +64769 846 -1 /vendor/firmware/cmnlib.b05 +64769 818 -1 /vendor/firmware/adspua.jsn +64769 892 -1 /vendor/firmware/cppf.b06 +64769 828 -1 /vendor/firmware/cdsp.b04 +64769 915 -1 /vendor/firmware/fpctzappfingerprint.b03 +64769 936 -1 /vendor/firmware/slpi.b01 +64769 822 -1 /vendor/firmware/bdwlan-crosshatch-EVT1.0.bin +64769 881 -1 /vendor/firmware/cpe_9340.b15 +64769 920 -1 /vendor/firmware/fpctzappfingerprint.mdt +64769 963 -1 /vendor/firmware/venus.b03 +64769 932 -1 /vendor/firmware/nanoapp_config.textproto +64769 938 -1 /vendor/firmware/slpi.b03 +64769 895 -1 /vendor/firmware/cppf.mdt +64769 811 -1 /vendor/firmware/adsp.b11 +64769 956 -1 /vendor/firmware/slpi.b21 +64769 873 -1 /vendor/firmware/cpe_9340.b01 +64769 974 -1 /vendor/firmware/widevine.b07 +64769 958 -1 /vendor/firmware/slpi.b23 +64769 901 -1 /vendor/firmware/crus_sp_config_c1_tx.bin +64769 975 -1 /vendor/firmware/widevine.mbn +64769 884 -1 /vendor/firmware/cpe_9340.b20 +64769 891 -1 /vendor/firmware/cppf.b05 +64769 942 -1 /vendor/firmware/slpi.b07 +64769 939 -1 /vendor/firmware/slpi.b04 +64769 930 -1 /vendor/firmware/leia_pm4_470.fw +64769 976 -1 /vendor/firmware/widevine.mdt +64769 929 -1 /vendor/firmware/leia_pfp_470.fw +64769 928 -1 /vendor/firmware/ipa_fws.mdt +64769 833 -1 /vendor/firmware/cdsp.b09 +64769 925 -1 /vendor/firmware/ipa_fws.b02 +64769 810 -1 /vendor/firmware/adsp.b10 +64769 861 -1 /vendor/firmware/confirmationui.b04 +64769 900 -1 /vendor/firmware/crus_sp_config_c1_rx.bin +64769 845 -1 /vendor/firmware/cmnlib.b04 +64769 948 -1 /vendor/firmware/slpi.b13 +64769 946 -1 /vendor/firmware/slpi.b11 +64769 850 -1 /vendor/firmware/cmnlib64.b01 +64769 933 -1 /vendor/firmware/pn557.bin +64769 843 -1 /vendor/firmware/cmnlib.b02 +64769 860 -1 /vendor/firmware/confirmationui.b03 +64769 921 -1 /vendor/firmware/ftm5_fw.ftb +64769 805 -1 /vendor/firmware/adsp.b05 +64769 954 -1 /vendor/firmware/slpi.b19 +64769 960 -1 /vendor/firmware/venus.b00 +64769 862 -1 /vendor/firmware/confirmationui.b05 +64769 927 -1 /vendor/firmware/ipa_fws.b04 +64769 864 -1 /vendor/firmware/confirmationui.b07 +64769 792 -1 /vendor/firmware/TEST_MAPPING +64769 890 -1 /vendor/firmware/cppf.b04 +64769 962 -1 /vendor/firmware/venus.b02 +25 1486930 -1 /vendor/rfs +25 1560426 -1 /vendor/rfs/mdm +25 1560427 -1 /vendor/rfs/mdm/tn +2130 52 -1 /vendor/rfs/mdm/tn/readwrite +64772 204 -1 /vendor/rfs/mdm/tn/ramdumps +25 1560430 -1 /vendor/rfs/mdm/tn/readonly +25 1560431 -1 /vendor/rfs/mdm/tn/readonly/vendor +25 1560231 -1 /vendor/rfs/mdm/tn/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/mdm/tn/readonly/firmware +2130 55 -1 /vendor/rfs/mdm/tn/hlos +2130 38 -1 /vendor/rfs/mdm/tn/shared +25 1560436 -1 /vendor/rfs/mdm/cdsp +2130 329 -1 /vendor/rfs/mdm/cdsp/readwrite +64772 206 -1 /vendor/rfs/mdm/cdsp/ramdumps +25 1560439 -1 /vendor/rfs/mdm/cdsp/readonly +25 1560440 -1 /vendor/rfs/mdm/cdsp/readonly/vendor +25 1560231 -1 /vendor/rfs/mdm/cdsp/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/mdm/cdsp/readonly/firmware +2130 55 -1 /vendor/rfs/mdm/cdsp/hlos +2130 38 -1 /vendor/rfs/mdm/cdsp/shared +25 1560445 -1 /vendor/rfs/mdm/slpi +2130 51 -1 /vendor/rfs/mdm/slpi/readwrite +64772 205 -1 /vendor/rfs/mdm/slpi/ramdumps +25 1560448 -1 /vendor/rfs/mdm/slpi/readonly +25 1560449 -1 /vendor/rfs/mdm/slpi/readonly/vendor +25 1560231 -1 /vendor/rfs/mdm/slpi/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/mdm/slpi/readonly/firmware +2130 55 -1 /vendor/rfs/mdm/slpi/hlos +2130 38 -1 /vendor/rfs/mdm/slpi/shared +25 1560454 -1 /vendor/rfs/mdm/mpss +2130 49 -1 /vendor/rfs/mdm/mpss/readwrite +64772 202 -1 /vendor/rfs/mdm/mpss/ramdumps +25 1560457 -1 /vendor/rfs/mdm/mpss/readonly +25 1560458 -1 /vendor/rfs/mdm/mpss/readonly/vendor +25 1560231 -1 /vendor/rfs/mdm/mpss/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/mdm/mpss/readonly/firmware +2130 55 -1 /vendor/rfs/mdm/mpss/hlos +2130 38 -1 /vendor/rfs/mdm/mpss/shared +25 1560463 -1 /vendor/rfs/mdm/adsp +2130 50 -1 /vendor/rfs/mdm/adsp/readwrite +64772 203 -1 /vendor/rfs/mdm/adsp/ramdumps +25 1560466 -1 /vendor/rfs/mdm/adsp/readonly +25 1560467 -1 /vendor/rfs/mdm/adsp/readonly/vendor +25 1560231 -1 /vendor/rfs/mdm/adsp/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/mdm/adsp/readonly/firmware +2130 55 -1 /vendor/rfs/mdm/adsp/hlos +2130 38 -1 /vendor/rfs/mdm/adsp/shared +25 1471894 -1 /vendor/rfs/msm +25 1560472 -1 /vendor/rfs/msm/cdsp +2130 328 -1 /vendor/rfs/msm/cdsp/readwrite +64772 206 -1 /vendor/rfs/msm/cdsp/ramdumps +25 1560475 -1 /vendor/rfs/msm/cdsp/readonly +25 1560476 -1 /vendor/rfs/msm/cdsp/readonly/vendor +25 1560231 -1 /vendor/rfs/msm/cdsp/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/msm/cdsp/readonly/firmware +2130 55 -1 /vendor/rfs/msm/cdsp/hlos +2130 38 -1 /vendor/rfs/msm/cdsp/shared +25 1560481 -1 /vendor/rfs/msm/slpi +2130 47 -1 /vendor/rfs/msm/slpi/readwrite +64772 205 -1 /vendor/rfs/msm/slpi/ramdumps +25 1560484 -1 /vendor/rfs/msm/slpi/readonly +25 1560485 -1 /vendor/rfs/msm/slpi/readonly/vendor +25 1560231 -1 /vendor/rfs/msm/slpi/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/msm/slpi/readonly/firmware +2130 55 -1 /vendor/rfs/msm/slpi/hlos +2130 38 -1 /vendor/rfs/msm/slpi/shared +25 1471895 -1 /vendor/rfs/msm/mpss +64772 157 -1 /vendor/rfs/msm/mpss/readwrite +64772 368 -1 /vendor/rfs/msm/mpss/ramdumps +25 1560491 -1 /vendor/rfs/msm/mpss/readonly +25 1560492 -1 /vendor/rfs/msm/mpss/readonly/vendor +25 1560493 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn +25 1560494 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw +64769 2154 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/mbn_hw.dig +64769 2155 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/mbn_hw.txt +25 1560497 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic +25 1560498 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common +25 1560499 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670 +25 1560500 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/cmcc_subsidized +25 1560501 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/cmcc_subsidized/SR_DSDS +64769 2117 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/cmcc_subsidized/SR_DSDS/mcfg_hw.mbn +25 1560503 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA +25 1560504 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/7+7_mode +25 1560505 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/7+7_mode/SR_DSDS +64769 2112 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560507 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/SS +64769 2114 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM670/LA/SS/mcfg_hw.mbn +25 1560509 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55 +25 1560510 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode +25 1560511 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode/SR_DSDS +64769 2061 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560513 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode/DR_DSDS +64769 2059 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/7+7_mode/DR_DSDS/mcfg_hw.mbn +25 1560515 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/SS +64769 2063 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55/SS/mcfg_hw.mbn +25 1560517 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998 +25 1560518 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/cmcc_subsidized +25 1560519 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/cmcc_subsidized/SR_DSDS +64769 2097 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/cmcc_subsidized/SR_DSDS/mcfg_hw.mbn +25 1560521 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA +25 1560522 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode +25 1560523 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode/SR_DSDS +64769 2078 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560525 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode/DR_DSDS +64769 2076 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/7+7_mode/DR_DSDS/mcfg_hw.mbn +25 1560527 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/SS +64769 2080 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/LA/SS/mcfg_hw.mbn +25 1560529 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8 +25 1560530 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode +25 1560531 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode/SR_DSDS +64769 2092 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560533 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode/DR_DSDS +64769 2090 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/7+7_mode/DR_DSDS/mcfg_hw.mbn +25 1560535 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/SS +64769 2094 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WP8/SS/mcfg_hw.mbn +25 1560537 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD +25 1560538 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/7+7_mode +25 1560539 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/7+7_mode/SR_DSDS +64769 2084 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560541 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/SS +64769 2086 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MSM8998/WD/SS/mcfg_hw.mbn +25 1560543 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion +25 1560544 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode +25 1560545 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode/SR_DSDS +64769 2069 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560547 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode/DR_DSDS +64769 2067 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/7+7_mode/DR_DSDS/mcfg_hw.mbn +25 1560549 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/SS +64769 2071 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/MDM9x55_Fusion/SS/mcfg_hw.mbn +25 1560551 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845 +25 1560552 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/cmcc_subsidized +25 1560553 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/cmcc_subsidized/SR_DSDS +64769 2139 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/cmcc_subsidized/SR_DSDS/mcfg_hw.mbn +25 1560555 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA +25 1560556 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/7+7_mode +25 1560557 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/7+7_mode/SR_DSDS +64769 2122 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560559 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/SS +64769 2124 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/LA/SS/mcfg_hw.mbn +25 1560561 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8 +25 1560562 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/7+7_mode +25 1560563 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/7+7_mode/SR_DSDS +64769 2134 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560565 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/SS +64769 2136 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WP8/SS/mcfg_hw.mbn +25 1560567 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD +25 1560568 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/7+7_mode +25 1560569 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/7+7_mode/SR_DSDS +64769 2128 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560571 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/SS +64769 2130 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM845/WD/SS/mcfg_hw.mbn +25 1560573 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion +25 1560574 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode +25 1560575 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode/SR_DSDS +64769 2151 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560577 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode/DR_DSDS +64769 2149 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/7+7_mode/DR_DSDS/mcfg_hw.mbn +25 1560579 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/SS +64769 2153 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20M_Fusion/SS/mcfg_hw.mbn +25 1560581 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20 +25 1560582 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/7+7_mode +25 1560583 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/7+7_mode/SR_DSDS +64769 2143 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560585 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/SS +64769 2145 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDX20/SS/mcfg_hw.mbn +25 1560587 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660 +25 1560588 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/cmcc_subsidized +25 1560589 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/cmcc_subsidized/SR_DSDS +64769 2107 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/cmcc_subsidized/SR_DSDS/mcfg_hw.mbn +25 1560591 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA +25 1560592 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/7+7_mode +25 1560593 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/7+7_mode/SR_DSDS +64769 2102 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/7+7_mode/SR_DSDS/mcfg_hw.mbn +25 1560595 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/SS +64769 2104 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_hw/generic/common/SDM660/LA/SS/mcfg_hw.mbn +25 1560597 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw +64769 2589 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/mbn_sw.dig +64769 2590 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/mbn_sw.txt +25 1560600 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic +25 1560601 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM +25 1560602 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Telefonica +25 1560603 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Telefonica/Commercial +25 1560604 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Telefonica/Commercial/Peru +64769 2376 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Telefonica/Commercial/Peru/mcfg_sw.mbn +25 1560606 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Claro +25 1560607 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Claro/Commercial +25 1560608 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Claro/Commercial/Colombia +64769 2372 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/Claro/Commercial/Colombia/mcfg_sw.mbn +25 1560610 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX +25 1560611 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Non_VoLTE +64769 2366 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Non_VoLTE/mcfg_sw.mbn +25 1560613 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/VoLTE +64769 2368 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/VoLTE/mcfg_sw.mbn +25 1560615 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Commercial +25 1560616 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Commercial/MX +64769 2364 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/LATAM/AMX/Commercial/MX/mcfg_sw.mbn +25 1560618 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China +25 1560619 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT +25 1560620 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab +25 1560621 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST_EPS_ONLY +64769 2218 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST_EPS_ONLY/mcfg_sw.mbn +25 1560623 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST_NO_APN +64769 2220 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST_NO_APN/mcfg_sw.mbn +25 1560625 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST +64769 2216 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/TEST/mcfg_sw.mbn +25 1560627 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/VoLTE_Conf +64769 2222 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/VoLTE_Conf/mcfg_sw.mbn +25 1560629 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/CTA +64769 2214 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Lab/CTA/mcfg_sw.mbn +25 1560631 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial +25 1560632 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/OpenMkt +64769 2207 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/OpenMkt/mcfg_sw.mbn +25 1560634 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/hVoLTE_OpenMkt +64769 2211 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/hVoLTE_OpenMkt/mcfg_sw.mbn +25 1560636 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/VoLTE_OpenMkt +64769 2209 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CT/Commercial/VoLTE_OpenMkt/mcfg_sw.mbn +25 1560638 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC +25 1560639 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab +25 1560640 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/Nsiot_VoLTE +64769 2197 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/Nsiot_VoLTE/mcfg_sw.mbn +25 1560642 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/AGNSS_LocTech +64769 2189 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/AGNSS_LocTech/mcfg_sw.mbn +25 1560644 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/RRLP_LocTech +64769 2199 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/RRLP_LocTech/mcfg_sw.mbn +25 1560646 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/EPS_Only +64769 2193 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/EPS_Only/mcfg_sw.mbn +25 1560648 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/W_IRAT_Comb_Attach +64769 2203 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/W_IRAT_Comb_Attach/mcfg_sw.mbn +25 1560650 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/LPP_LocTech +64769 2195 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/LPP_LocTech/mcfg_sw.mbn +25 1560652 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/Conf_VoLTE +64769 2191 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/Conf_VoLTE/mcfg_sw.mbn +25 1560654 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/TGL_Comb_Attach +64769 2201 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Lab/TGL_Comb_Attach/mcfg_sw.mbn +25 1560656 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Commercial +25 1560657 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Commercial/Volte_OpenMkt +64769 2186 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CMCC/Commercial/Volte_OpenMkt/mcfg_sw.mbn +25 1560659 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU +25 1560660 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Lab +25 1560661 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Lab/Test +64769 2231 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Lab/Test/mcfg_sw.mbn +25 1560663 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial +25 1560664 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial/OpenMkt +64769 2226 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial/OpenMkt/mcfg_sw.mbn +25 1560666 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial/VoLTE +64769 2228 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/China/CU/Commercial/VoLTE/mcfg_sw.mbn +25 1560668 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA +25 1560669 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/SmarTone +25 1560670 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/SmarTone/Commercial +25 1560671 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/SmarTone/Commercial/HK +64769 2551 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/SmarTone/Commercial/HK/mcfg_sw.mbn +25 1560673 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Globe +25 1560674 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Globe/Commercial +25 1560675 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Globe/Commercial/PH +64769 2531 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Globe/Commercial/PH/mcfg_sw.mbn +25 1560677 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/APT +25 1560678 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/APT/Commercial +64769 2516 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/APT/Commercial/mcfg_sw.mbn +25 1560680 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/YTL +25 1560681 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/YTL/Commercial +64769 2578 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/YTL/Commercial/mcfg_sw.mbn +25 1560683 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/ChunghwaTel +25 1560684 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/ChunghwaTel/Commercial +25 1560685 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/ChunghwaTel/Commercial/TW +64769 2520 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/ChunghwaTel/Commercial/TW/mcfg_sw.mbn +25 1560687 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/M1 +25 1560688 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/M1/Commercial +25 1560689 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/M1/Commercial/SG +64769 2539 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/M1/Commercial/SG/mcfg_sw.mbn +25 1560691 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/3HK +25 1560692 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/3HK/Commercial +25 1560693 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/3HK/Commercial/HK +64769 2509 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/3HK/Commercial/HK/mcfg_sw.mbn +25 1560695 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Truemove +25 1560696 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Truemove/Commercial +25 1560697 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Truemove/Commercial/VoLTE +64769 2571 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Truemove/Commercial/VoLTE/mcfg_sw.mbn +25 1560699 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TStar +25 1560700 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TStar/Commercial +25 1560701 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TStar/Commercial/TW +64769 2567 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TStar/Commercial/TW/mcfg_sw.mbn +25 1560703 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/StarHub +25 1560704 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/StarHub/Commercial +25 1560705 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/StarHub/Commercial/SG +64769 2560 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/StarHub/Commercial/SG/mcfg_sw.mbn +25 1560707 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/DTAC +25 1560708 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/DTAC/Commercial +25 1560709 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/DTAC/Commercial/VoLTE +64769 2524 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/DTAC/Commercial/VoLTE/mcfg_sw.mbn +25 1560711 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/FarEastOne +25 1560712 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/FarEastOne/Commercial +64769 2527 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/FarEastOne/Commercial/mcfg_sw.mbn +25 1560714 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/UMobile +25 1560715 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/UMobile/Commercial +25 1560716 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/UMobile/Commercial/Malaysia +64769 2575 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/UMobile/Commercial/Malaysia/mcfg_sw.mbn +25 1560718 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Singtel +25 1560719 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Singtel/Commercial +25 1560720 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Singtel/Commercial/Singapore +64769 2547 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Singtel/Commercial/Singapore/mcfg_sw.mbn +25 1560722 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/P1 +25 1560723 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/P1/Commercial +25 1560724 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/P1/Commercial/Malaysia +64769 2543 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/P1/Commercial/Malaysia/mcfg_sw.mbn +25 1560726 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TM +25 1560727 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TM/Commercial +64769 2563 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/TM/Commercial/mcfg_sw.mbn +25 1560729 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/AIS +25 1560730 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/AIS/Commercial +25 1560731 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/AIS/Commercial/Thailand +64769 2513 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/AIS/Commercial/Thailand/mcfg_sw.mbn +25 1560733 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/HKT +25 1560734 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/HKT/Commercial +25 1560735 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/HKT/Commercial/HK +64769 2535 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/HKT/Commercial/HK/mcfg_sw.mbn +25 1560737 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren +25 1560738 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren/Commercial +25 1560739 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren/Commercial/VoWiFi +64769 2555 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren/Commercial/VoWiFi/mcfg_sw.mbn +64769 2556 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SEA/Smartfren/Commercial/mcfg_sw.mbn +25 1560742 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SA +25 1560743 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SA/Brazil +25 1560744 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SA/Brazil/Commercial +64769 2504 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/SA/Brazil/Commercial/mcfg_sw.mbn +25 1560746 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ +25 1560747 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Optus +25 1560748 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Optus/Commercial +25 1560749 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Optus/Commercial/AU +64769 2175 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Optus/Commercial/AU/mcfg_sw.mbn +25 1560751 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Telstra +25 1560752 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Telstra/Commercial +64769 2178 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Telstra/Commercial/mcfg_sw.mbn +25 1560754 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Vodafone +25 1560755 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Vodafone/Commercial +64769 2181 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/AUNZ/Vodafone/Commercial/mcfg_sw.mbn +25 1560757 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC +25 1560758 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/DCM +25 1560759 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/DCM/Commercial +64769 2161 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/DCM/Commercial/mcfg_sw.mbn +25 1560761 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/KDDI +25 1560762 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/KDDI/Commercial +64769 2164 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/KDDI/Commercial/mcfg_sw.mbn +25 1560764 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/Reliance +25 1560765 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/Reliance/Commercial +64769 2167 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/Reliance/Commercial/mcfg_sw.mbn +25 1560767 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/SBM +25 1560768 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/SBM/Commercial +64769 2170 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/APAC/SBM/Commercial/mcfg_sw.mbn +25 1560770 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel +25 1560771 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/PTCRB +25 1560772 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/PTCRB/PTCRB +64769 2489 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/PTCRB/PTCRB/mcfg_sw.mbn +25 1560774 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC +25 1560775 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Vodafone +25 1560776 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Vodafone/Commercial +64769 2430 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Vodafone/Commercial/mcfg_sw.mbn +25 1560778 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Airtel +25 1560779 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Airtel/Commercial +64769 2427 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/APAC/Airtel/Commercial/mcfg_sw.mbn +25 1560781 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU +25 1560782 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone +25 1560783 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone/Lab +25 1560784 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone/Lab/VoLTE +25 1560785 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone/Lab/VoLTE/Germany +64769 2436 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/EU/Vodafone/Lab/VoLTE/Germany/mcfg_sw.mbn +25 1560787 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA +25 1560788 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Videotron +25 1560789 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Videotron/VoLTE +64769 2480 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Videotron/VoLTE/mcfg_sw.mbn +25 1560791 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Freedom +25 1560792 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Freedom/VoLTE +64769 2446 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Freedom/VoLTE/mcfg_sw.mbn +25 1560794 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Ztar +25 1560795 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Ztar/NonVoLTE +64769 2486 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Ztar/NonVoLTE/mcfg_sw.mbn +25 1560797 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Koodo +25 1560798 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Koodo/VoLTE +64769 2449 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Koodo/VoLTE/mcfg_sw.mbn +25 1560800 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/USCC_FI +25 1560801 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/USCC_FI/Commercial +64769 2477 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/USCC_FI/Commercial/mcfg_sw.mbn +25 1560803 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Lucky +25 1560804 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Lucky/Commercial +25 1560805 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Lucky/Commercial/CA +64769 2453 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Lucky/Commercial/CA/mcfg_sw.mbn +25 1560807 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TMO_FI +25 1560808 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TMO_FI/Commercial +64769 2467 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TMO_FI/Commercial/mcfg_sw.mbn +25 1560810 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Sprint_FI +25 1560811 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Sprint_FI/Commercial +64769 2464 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Sprint_FI/Commercial/mcfg_sw.mbn +25 1560813 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Chatr +25 1560814 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Chatr/NonVoLTE +64769 2443 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Chatr/NonVoLTE/mcfg_sw.mbn +25 1560816 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Telus +25 1560817 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Telus/Lab +25 1560818 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Telus/Lab/CA +64769 2474 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Telus/Lab/CA/mcfg_sw.mbn +25 1560820 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/CBRS +25 1560821 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/CBRS/cbrs +64769 2440 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/CBRS/cbrs/mcfg_sw.mbn +25 1560823 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Visible +25 1560824 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Visible/visible +64769 2483 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Visible/visible/mcfg_sw.mbn +25 1560826 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/MTS +25 1560827 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/MTS/Commercial +25 1560828 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/MTS/Commercial/CA +64769 2457 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/MTS/Commercial/CA/mcfg_sw.mbn +25 1560830 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Solo_PC +25 1560831 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Solo_PC/Commercial +25 1560832 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Solo_PC/Commercial/CA +64769 2461 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/Solo_PC/Commercial/CA/mcfg_sw.mbn +25 1560834 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TbayCity +25 1560835 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TbayCity/NonVoLTE +64769 2470 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/NA/TbayCity/NonVoLTE/mcfg_sw.mbn +25 1560837 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/TestSIM +25 1560838 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/TestSIM/TestSIM +64769 2492 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Pixel/TestSIM/TestSIM/mcfg_sw.mbn +25 1560840 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU +25 1560841 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica +25 1560842 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Non_VoLTE +25 1560843 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Non_VoLTE/Spain +64769 2312 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Non_VoLTE/Spain/mcfg_sw.mbn +25 1560845 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial +25 1560846 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial/DE +64769 2307 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial/DE/mcfg_sw.mbn +25 1560848 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial/UK +64769 2309 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telefonica/Commercial/UK/mcfg_sw.mbn +25 1560850 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2 +25 1560851 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial +25 1560852 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial/NL +64769 2301 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial/NL/mcfg_sw.mbn +25 1560854 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial/Sweden +64769 2303 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Tele2/Commercial/Sweden/mcfg_sw.mbn +25 1560856 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/EE +25 1560857 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/EE/Commercial +64769 2255 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/EE/Commercial/mcfg_sw.mbn +25 1560859 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia +25 1560860 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial +25 1560861 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial/Sweden +64769 2324 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial/Sweden/mcfg_sw.mbn +25 1560863 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial/Norway +64769 2322 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telia/Commercial/Norway/mcfg_sw.mbn +25 1560865 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Elisa +25 1560866 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Elisa/Commercial +25 1560867 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Elisa/Commercial/FI +64769 2259 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Elisa/Commercial/FI/mcfg_sw.mbn +25 1560869 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor +25 1560870 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial +25 1560871 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial/Denmark +64769 2316 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial/Denmark/mcfg_sw.mbn +25 1560873 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial/Norway +64769 2318 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Telenor/Commercial/Norway/mcfg_sw.mbn +25 1560875 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange +25 1560876 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial +25 1560877 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Spain +64769 2281 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Spain/mcfg_sw.mbn +25 1560879 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Romania +64769 2279 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Romania/mcfg_sw.mbn +25 1560881 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/France +64769 2273 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/France/mcfg_sw.mbn +25 1560883 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Group_Non_IMS +64769 2275 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Group_Non_IMS/mcfg_sw.mbn +25 1560885 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Poland +64769 2277 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Orange/Commercial/Poland/mcfg_sw.mbn +25 1560887 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TIM +25 1560888 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TIM/Commercial +25 1560889 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TIM/Commercial/Italy +64769 2297 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TIM/Commercial/Italy/mcfg_sw.mbn +25 1560891 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G +25 1560892 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial +25 1560893 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/Italy +64769 2265 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/Italy/mcfg_sw.mbn +25 1560895 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/SE +64769 2267 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/SE/mcfg_sw.mbn +25 1560897 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/Denmark +64769 2263 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/Denmark/mcfg_sw.mbn +25 1560899 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/UK +64769 2269 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/H3G/Commercial/UK/mcfg_sw.mbn +25 1560901 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone +25 1560902 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/Non_VoLTE +64769 2327 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/Non_VoLTE/mcfg_sw.mbn +25 1560904 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE +25 1560905 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/SAfrica +64769 2340 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/SAfrica/mcfg_sw.mbn +25 1560907 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Italy +64769 2334 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Italy/mcfg_sw.mbn +25 1560909 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Spain +64769 2342 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Spain/mcfg_sw.mbn +25 1560911 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Turkey +64769 2344 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Turkey/mcfg_sw.mbn +25 1560913 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Portugal +64769 2338 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Portugal/mcfg_sw.mbn +25 1560915 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Germany +64769 2332 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Germany/mcfg_sw.mbn +25 1560917 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/UK +64769 2346 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/UK/mcfg_sw.mbn +25 1560919 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Netherlands +64769 2336 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/Netherlands/mcfg_sw.mbn +25 1560921 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/CZ +64769 2330 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Vodafone/VoLTE/CZ/mcfg_sw.mbn +25 1560923 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TDC +25 1560924 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TDC/Commercial +25 1560925 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TDC/Commercial/Denmark +64769 2293 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/TDC/Commercial/Denmark/mcfg_sw.mbn +25 1560927 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT +25 1560928 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Non_VoLTE +25 1560929 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Non_VoLTE/Commercial +64769 2249 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Non_VoLTE/Commercial/mcfg_sw.mbn +25 1560931 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/VoLTE +25 1560932 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/VoLTE/Commercial +64769 2252 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/VoLTE/Commercial/mcfg_sw.mbn +25 1560934 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial +25 1560935 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/Greece +64769 2244 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/Greece/mcfg_sw.mbn +25 1560937 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/PL +64769 2246 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/PL/mcfg_sw.mbn +25 1560939 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/CZ +64769 2240 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/CZ/mcfg_sw.mbn +25 1560941 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/Croatia +64769 2242 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/DT/Commercial/Croatia/mcfg_sw.mbn +25 1560943 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Bouygues +25 1560944 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Bouygues/Commercial +25 1560945 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Bouygues/Commercial/France +64769 2236 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Bouygues/Commercial/France/mcfg_sw.mbn +25 1560947 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Swisscom +25 1560948 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Swisscom/Commercial +25 1560949 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Swisscom/Commercial/Swiss +64769 2289 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/Swisscom/Commercial/Swiss/mcfg_sw.mbn +25 1560951 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/SFR +25 1560952 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/SFR/Commercial +25 1560953 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/SFR/Commercial/FR +64769 2285 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/EU/SFR/Commercial/FR/mcfg_sw.mbn +25 1560955 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA +25 1560956 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT +25 1560957 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/Cricket +64769 2380 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/Cricket/mcfg_sw.mbn +25 1560959 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/FirstNet +64769 2382 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/FirstNet/mcfg_sw.mbn +25 1560961 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/Non_VoLTE +64769 2384 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/Non_VoLTE/mcfg_sw.mbn +25 1560963 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/VoLTE +64769 2386 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/ATT/VoLTE/mcfg_sw.mbn +25 1560965 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Inland +25 1560966 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Inland/Commercial +64769 2396 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Inland/Commercial/mcfg_sw.mbn +25 1560968 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon +25 1560969 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/CDMAless +64769 2418 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/CDMAless/mcfg_sw.mbn +25 1560971 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/hVoLTE +64769 2422 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/hVoLTE/mcfg_sw.mbn +25 1560973 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/IMSless +64769 2420 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Verizon/IMSless/mcfg_sw.mbn +25 1560975 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint +25 1560976 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint/VoWiFi +64769 2405 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint/VoWiFi/mcfg_sw.mbn +25 1560978 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint/Commercial +64769 2403 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Sprint/Commercial/mcfg_sw.mbn +25 1560980 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/CSpire +25 1560981 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/CSpire/IMSless +64769 2393 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/CSpire/IMSless/mcfg_sw.mbn +25 1560983 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Bell +25 1560984 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Bell/Commercial +25 1560985 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Bell/Commercial/CA +64769 2390 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Bell/Commercial/CA/mcfg_sw.mbn +25 1560987 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Rogers +25 1560988 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Rogers/Commercial +25 1560989 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Rogers/Commercial/CA +64769 2400 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Rogers/Commercial/CA/mcfg_sw.mbn +25 1560991 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/USCC +25 1560992 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/USCC/Commercial +64769 2415 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/USCC/Commercial/mcfg_sw.mbn +25 1560994 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Telus +25 1560995 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Telus/Commercial +25 1560996 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Telus/Commercial/CA +64769 2412 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/Telus/Commercial/CA/mcfg_sw.mbn +25 1560998 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/TMO +25 1560999 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/TMO/Commercial +64769 2408 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/NA/TMO/Commercial/mcfg_sw.mbn +25 1561001 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea +25 1561002 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/LGU +25 1561003 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/LGU/Commercial +64769 2353 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/LGU/Commercial/mcfg_sw.mbn +25 1561005 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/TTA +25 1561006 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/TTA/Commercial +64769 2359 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/TTA/Commercial/mcfg_sw.mbn +25 1561008 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/KT +25 1561009 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/KT/Commercial_KT_LTE +64769 2350 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/KT/Commercial_KT_LTE/mcfg_sw.mbn +25 1561011 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/SKT +25 1561012 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/SKT/Commercial +64769 2356 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Korea/SKT/Commercial/mcfg_sw.mbn +25 1561014 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common +25 1561015 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/WildCard +25 1561016 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/WildCard/Wildcard +64769 2588 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/WildCard/Wildcard/mcfg_sw.mbn +25 1561018 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/W_One +25 1561019 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/W_One/Commercial +64769 2585 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/W_One/Commercial/mcfg_sw.mbn +25 1561021 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/ROW +25 1561022 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/ROW/Commercial +64769 2582 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/common/ROW/Commercial/mcfg_sw.mbn +25 1561024 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia +25 1561025 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/Beeline +25 1561026 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/Beeline/Gen_3GPP +64769 2496 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/Beeline/Gen_3GPP/mcfg_sw.mbn +25 1561028 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/MegaFon +25 1561029 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/MegaFon/Commercial +25 1561030 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/MegaFon/Commercial/RU +64769 2500 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg_sw/generic/Russia/MegaFon/Commercial/RU/mcfg_sw.mbn +64769 2052 -1 /vendor/rfs/msm/mpss/readonly/vendor/mbn/mcfg.version +25 1560231 -1 /vendor/rfs/msm/mpss/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/msm/mpss/readonly/firmware +2130 55 -1 /vendor/rfs/msm/mpss/hlos +2130 38 -1 /vendor/rfs/msm/mpss/shared +25 1561037 -1 /vendor/rfs/msm/adsp +2130 46 -1 /vendor/rfs/msm/adsp/readwrite +64772 203 -1 /vendor/rfs/msm/adsp/ramdumps +25 1561040 -1 /vendor/rfs/msm/adsp/readonly +25 1561041 -1 /vendor/rfs/msm/adsp/readonly/vendor +25 1560231 -1 /vendor/rfs/msm/adsp/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/msm/adsp/readonly/firmware +2130 55 -1 /vendor/rfs/msm/adsp/hlos +2130 38 -1 /vendor/rfs/msm/adsp/shared +25 1561046 -1 /vendor/rfs/apq +25 1561047 -1 /vendor/rfs/apq/gnss +2130 54 -1 /vendor/rfs/apq/gnss/readwrite +64772 202 -1 /vendor/rfs/apq/gnss/ramdumps +25 1561050 -1 /vendor/rfs/apq/gnss/readonly +25 1561051 -1 /vendor/rfs/apq/gnss/readonly/vendor +25 1560231 -1 /vendor/rfs/apq/gnss/readonly/vendor/firmware +2061 1 -1 /vendor/rfs/apq/gnss/readonly/firmware +2130 55 -1 /vendor/rfs/apq/gnss/hlos +2130 38 -1 /vendor/rfs/apq/gnss/shared +25 1561056 -1 /vendor/dsp +25 1561057 -1 /vendor/dsp/cdsp +64769 417 -1 /vendor/dsp/cdsp/libvpp_qbr.so +64769 412 -1 /vendor/dsp/cdsp/libvpp_aie.so +64769 411 -1 /vendor/dsp/cdsp/libsysmondomain_skel.so +64769 419 -1 /vendor/dsp/cdsp/ubwcdma_dynlib.so +64769 408 -1 /vendor/dsp/cdsp/libbenchmark_skel.so +64769 416 -1 /vendor/dsp/cdsp/libvpp_nr.so +64769 410 -1 /vendor/dsp/cdsp/libsysmon_skel.so +64769 409 -1 /vendor/dsp/cdsp/libhcp_rpc_skel.so +64769 415 -1 /vendor/dsp/cdsp/libvpp_mvp.so +64769 418 -1 /vendor/dsp/cdsp/libvpp_svc_skel.so +64769 414 -1 /vendor/dsp/cdsp/libvpp_frc.so +64769 413 -1 /vendor/dsp/cdsp/libvpp_diagtools.so +64769 407 -1 /vendor/dsp/cdsp/fastrpc_shell_3 +25 1561071 -1 /vendor/dsp/sdsp +64769 431 -1 /vendor/dsp/sdsp/drop.napp_header +64769 424 -1 /vendor/dsp/sdsp/blue.so +64769 426 -1 /vendor/dsp/sdsp/cc.so +64769 441 -1 /vendor/dsp/sdsp/imu_cal.so +64769 432 -1 /vendor/dsp/sdsp/drop.so +64769 452 -1 /vendor/dsp/sdsp/vibratortest.napp_header +64769 451 -1 /vendor/dsp/sdsp/smartbatching.so +64769 442 -1 /vendor/dsp/sdsp/libFastRPC_UTF_Forward_800s_sdm845_skel.so +64769 423 -1 /vendor/dsp/sdsp/blue.napp_header +64769 443 -1 /vendor/dsp/sdsp/libchre_slpi_skel.so +64769 450 -1 /vendor/dsp/sdsp/smartbatching.napp_header +64769 428 -1 /vendor/dsp/sdsp/chre_drv_modem.so +64769 446 -1 /vendor/dsp/sdsp/libsysmondomain_skel.so +64769 444 -1 /vendor/dsp/sdsp/libstabilitydomain_skel.so +64769 437 -1 /vendor/dsp/sdsp/geofence.so +64769 438 -1 /vendor/dsp/sdsp/gesture.napp_header +64769 439 -1 /vendor/dsp/sdsp/gesture.so +64769 434 -1 /vendor/dsp/sdsp/elmyra.so +64769 422 -1 /vendor/dsp/sdsp/activity.so +64769 445 -1 /vendor/dsp/sdsp/libsysmon_skel.so +64769 449 -1 /vendor/dsp/sdsp/sleep.so +64769 435 -1 /vendor/dsp/sdsp/fastrpc_shell_2 +64769 429 -1 /vendor/dsp/sdsp/chre_drv_wifi.so +64769 427 -1 /vendor/dsp/sdsp/chre_drv_loc.so +64769 433 -1 /vendor/dsp/sdsp/elmyra.napp_header +64769 425 -1 /vendor/dsp/sdsp/cc.napp_header +64769 430 -1 /vendor/dsp/sdsp/chre_pal.so +64769 436 -1 /vendor/dsp/sdsp/geofence.napp_header +64769 448 -1 /vendor/dsp/sdsp/sleep.napp_header +64769 447 -1 /vendor/dsp/sdsp/lowi_client.so +64769 421 -1 /vendor/dsp/sdsp/activity.napp_header +64769 453 -1 /vendor/dsp/sdsp/vibratortest.so +64769 440 -1 /vendor/dsp/sdsp/imu_cal.napp_header +25 1561105 -1 /vendor/dsp/adsp +64769 392 -1 /vendor/dsp/adsp/HeaacDecoderModule.so.1 +64769 400 -1 /vendor/dsp/adsp/fastrpc_shell_0 +64769 399 -1 /vendor/dsp/adsp/WmaStdDecoderModule.so.1 +64769 389 -1 /vendor/dsp/adsp/CFCMModule.so.1 +64769 386 -1 /vendor/dsp/adsp/ApeDecoderModule.so.1 +64769 385 -1 /vendor/dsp/adsp/AlacDecoderModule.so.1 +64769 396 -1 /vendor/dsp/adsp/VoiceWakeup_V2_Module.so.1 +64769 394 -1 /vendor/dsp/adsp/SAPlusCmnModule.so.1 +64769 405 -1 /vendor/dsp/adsp/mmecns_module.so.1 +64769 404 -1 /vendor/dsp/adsp/libsysmondomain_skel.so +64769 402 -1 /vendor/dsp/adsp/libstabilitydomain_skel.so +64769 393 -1 /vendor/dsp/adsp/LdacModule.so.1 +64769 397 -1 /vendor/dsp/adsp/VorbisDecoderModule.so.1 +64769 398 -1 /vendor/dsp/adsp/WmaProDecoderModule.so.1 +64769 390 -1 /vendor/dsp/adsp/EtsiAmrWbPlusDecModule.so.1 +64769 403 -1 /vendor/dsp/adsp/libsysmon_skel.so +64769 388 -1 /vendor/dsp/adsp/AudioSphereModule.so.1 +64769 391 -1 /vendor/dsp/adsp/EtsiEaacPlusEncAndCmnModule.so.1 +64769 395 -1 /vendor/dsp/adsp/SVACmnModule.so.1 +64769 387 -1 /vendor/dsp/adsp/AudioContextDetection.so.1 +64769 401 -1 /vendor/dsp/adsp/fluence_voiceplus_module.so.1 +25 19564 -1 /vendor/lib64 +64769 1433 -1 /vendor/lib64/android.hardware.authsecret@1.0-impl.nos.so +64769 1434 -1 /vendor/lib64/android.hardware.automotive.vehicle@2.0-manager-lib.so +64769 1435 -1 /vendor/lib64/android.hardware.camera.provider@2.4-external.so +64769 1436 -1 /vendor/lib64/android.hardware.camera.provider@2.4-legacy.so +64769 1437 -1 /vendor/lib64/android.hardware.graphics.composer@2.1-resources.so +64769 1438 -1 /vendor/lib64/android.hardware.graphics.composer@2.2-resources.so +64769 1439 -1 /vendor/lib64/android.hardware.keymaster@4.0-impl.nos.so +64769 1440 -1 /vendor/lib64/android.hardware.oemlock@1.0-impl.nos.so +64769 1441 -1 /vendor/lib64/android.hardware.sensors@2.0-impl.so +64769 1442 -1 /vendor/lib64/android.hardware.weaver@1.0-impl.nos.so +64769 1443 -1 /vendor/lib64/btaudio_offload_if.so +25 29367 -1 /vendor/lib64/camera +25 29368 -1 /vendor/lib64/camera/components +64769 1476 -1 /vendor/lib64/camera/components/com.qti.node.eisv2.so +64769 1481 -1 /vendor/lib64/camera/components/com.qti.node.stich.so +64769 1478 -1 /vendor/lib64/camera/components/com.qti.node.gpu.so +64769 1470 -1 /vendor/lib64/camera/components/com.qti.eisv2.so +64769 1493 -1 /vendor/lib64/camera/components/com.qtistatic.stats.awb.so +64769 1464 -1 /vendor/lib64/camera/components/com.google.node.fd.so +64769 1480 -1 /vendor/lib64/camera/components/com.qti.node.remosaic.so +64769 1469 -1 /vendor/lib64/camera/components/com.google.stats.pdlibwrapper.so +64769 1474 -1 /vendor/lib64/camera/components/com.qti.node.dummyrtb.so +64769 1457 -1 /vendor/lib64/camera/components/com.custom.stats.awb.so +64769 1484 -1 /vendor/lib64/camera/components/com.qti.stats.afd.so +64769 1489 -1 /vendor/lib64/camera/components/com.qti.stats.pdlibsony.so +64769 1475 -1 /vendor/lib64/camera/components/com.qti.node.dummysat.so +64769 1482 -1 /vendor/lib64/camera/components/com.qti.stats.aec.so +64769 1487 -1 /vendor/lib64/camera/components/com.qti.stats.awbwrapper.so +64769 1458 -1 /vendor/lib64/camera/components/com.google.3atuning.default.so +64769 1473 -1 /vendor/lib64/camera/components/com.qti.hvx.binning.so +64769 1471 -1 /vendor/lib64/camera/components/com.qti.eisv3.so +64769 1488 -1 /vendor/lib64/camera/components/com.qti.stats.pdlib.so +64769 1479 -1 /vendor/lib64/camera/components/com.qti.node.memcpy.so +64769 1491 -1 /vendor/lib64/camera/components/com.qtistatic.stats.aec.so +64769 1477 -1 /vendor/lib64/camera/components/com.qti.node.eisv3.so +64769 1472 -1 /vendor/lib64/camera/components/com.qti.hvx.addconstant.so +64769 1490 -1 /vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so +64769 1461 -1 /vendor/lib64/camera/components/com.google.3atuning.pixel3_imx363.so +64769 1459 -1 /vendor/lib64/camera/components/com.google.3atuning.pixel3_imx355_normal.so +64769 1483 -1 /vendor/lib64/camera/components/com.qti.stats.af.so +64769 1486 -1 /vendor/lib64/camera/components/com.qti.stats.awb.so +64769 1463 -1 /vendor/lib64/camera/components/com.google.node.eis.so +64769 1466 -1 /vendor/lib64/camera/components/com.google.node.llv.so +64769 1492 -1 /vendor/lib64/camera/components/com.qtistatic.stats.af.so +64769 1467 -1 /vendor/lib64/camera/components/com.google.node.warping.so +64769 1485 -1 /vendor/lib64/camera/components/com.qti.stats.asd.so +64769 1465 -1 /vendor/lib64/camera/components/com.google.node.hdrp.so +64769 1494 -1 /vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so +64769 1462 -1 /vendor/lib64/camera/components/com.google.node.barebone.so +64769 1468 -1 /vendor/lib64/camera/components/com.google.stats.af.so +64769 1456 -1 /vendor/lib64/camera/components/com.custom.stats.aec.so +64769 1460 -1 /vendor/lib64/camera/components/com.google.3atuning.pixel3_imx355_wide.so +64769 1498 -1 /vendor/lib64/camera/fdconfigvideolite.bin +64769 1497 -1 /vendor/lib64/camera/fdconfigvideo.bin +64769 1454 -1 /vendor/lib64/camera/com.qti.tuned.default.bin +64769 1450 -1 /vendor/lib64/camera/com.qti.sensor.imx363.so +64769 1453 -1 /vendor/lib64/camera/com.qti.sensormodule.primax_imx355_wide.bin +64769 1496 -1 /vendor/lib64/camera/fdconfigpreviewlite.bin +64769 1495 -1 /vendor/lib64/camera/fdconfigpreview.bin +64769 1445 -1 /vendor/lib64/camera/com.google.tuned.pixel3_imx355_normal.bin +64769 1452 -1 /vendor/lib64/camera/com.qti.sensormodule.primax_imx355_normal.bin +64769 1448 -1 /vendor/lib64/camera/com.qti.sensor.imx355_normal.so +64769 1451 -1 /vendor/lib64/camera/com.qti.sensormodule.metric_imx363.bin +64769 1449 -1 /vendor/lib64/camera/com.qti.sensor.imx355_wide.so +64769 1446 -1 /vendor/lib64/camera/com.google.tuned.pixel3_imx355_wide.bin +64769 1447 -1 /vendor/lib64/camera/com.google.tuned.pixel3_imx363.bin +64769 1499 -1 /vendor/lib64/camera.device@1.0-impl.so +64769 1500 -1 /vendor/lib64/camera.device@3.2-impl.so +64769 1501 -1 /vendor/lib64/camera.device@3.3-impl.so +64769 1502 -1 /vendor/lib64/camera.device@3.4-external-impl.so +64769 1503 -1 /vendor/lib64/camera.device@3.4-impl.so +64769 1504 -1 /vendor/lib64/camera.device@3.5-external-impl.so +64769 1505 -1 /vendor/lib64/camera.device@3.5-impl.so +64769 1506 -1 /vendor/lib64/com.fingerprints.extension@1.0.so +64769 1507 -1 /vendor/lib64/com.qualcomm.qti.ant@1.0.so +64769 1508 -1 /vendor/lib64/com.qualcomm.qti.imscmservice@1.0.so +64769 1509 -1 /vendor/lib64/com.qualcomm.qti.uceservice@2.0.so +64769 1510 -1 /vendor/lib64/com.quicinc.cne.api@1.0.so +64769 1511 -1 /vendor/lib64/com.quicinc.cne.api@1.1.so +64769 1512 -1 /vendor/lib64/com.quicinc.cne.constants@1.0.so +64769 1513 -1 /vendor/lib64/com.quicinc.cne.constants@2.0.so +64769 1514 -1 /vendor/lib64/com.quicinc.cne.constants@2.1.so +64769 1515 -1 /vendor/lib64/com.quicinc.cne.server@1.0.so +64769 1516 -1 /vendor/lib64/com.quicinc.cne.server@2.0.so +64769 1517 -1 /vendor/lib64/com.quicinc.cne.server@2.1.so +25 26657 -1 /vendor/lib64/egl +64769 1525 -1 /vendor/lib64/egl/libq3dtools_esx.so +64769 1522 -1 /vendor/lib64/egl/libGLESv2_adreno.so +64769 1523 -1 /vendor/lib64/egl/libQTapGLES.so +64769 1521 -1 /vendor/lib64/egl/libGLESv1_CM_adreno.so +64769 1524 -1 /vendor/lib64/egl/libq3dtools_adreno.so +64769 1519 -1 /vendor/lib64/egl/eglSubDriverAndroid.so +64769 1520 -1 /vendor/lib64/egl/libEGL_adreno.so +64769 1526 -1 /vendor/lib64/ese_spi_nxp.so +64769 1527 -1 /vendor/lib64/hardware.google.light@1.0.so +25 18482 -1 /vendor/lib64/hw +64769 1547 -1 /vendor/lib64/hw/audio.usb.default.so +64769 1541 -1 /vendor/lib64/hw/android.hardware.soundtrigger@2.2-impl.so +64769 1535 -1 /vendor/lib64/hw/android.hardware.drm@1.0-impl.so +64769 1539 -1 /vendor/lib64/hw/android.hardware.memtrack@1.0-impl.so +64769 1540 -1 /vendor/lib64/hw/android.hardware.renderscript@1.0-impl.so +64769 1542 -1 /vendor/lib64/hw/android.hardware.vibrator@1.2-impl.crosshatch.so +64769 1544 -1 /vendor/lib64/hw/audio.primary.default.so +64769 1553 -1 /vendor/lib64/hw/hwcomposer.sdm845.so +64769 1536 -1 /vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so +64769 1556 -1 /vendor/lib64/hw/memtrack.sdm845.so +64769 1538 -1 /vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl-qti-display.so +64769 1561 -1 /vendor/lib64/hw/vibrator.default.so +64769 1557 -1 /vendor/lib64/hw/power.default.so +64769 1532 -1 /vendor/lib64/hw/android.hardware.broadcastradio@1.0-impl.so +64769 1559 -1 /vendor/lib64/hw/sound_trigger.primary.sdm845.so +64769 1543 -1 /vendor/lib64/hw/audio.bluetooth.default.so +64769 1560 -1 /vendor/lib64/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so +64769 1558 -1 /vendor/lib64/hw/sensors.crosshatch.so +64769 1537 -1 /vendor/lib64/hw/android.hardware.gnss@1.1-impl-qti.so +64769 1551 -1 /vendor/lib64/hw/gralloc.default.so +64769 1552 -1 /vendor/lib64/hw/gralloc.sdm845.so +64769 1554 -1 /vendor/lib64/hw/lights.sdm845.so +64769 1529 -1 /vendor/lib64/hw/android.hardware.bluetooth.audio@2.0-impl.so +64769 1545 -1 /vendor/lib64/hw/audio.primary.sdm845.so +64769 1546 -1 /vendor/lib64/hw/audio.r_submix.default.so +64769 1550 -1 /vendor/lib64/hw/com.qti.chi.override.so +64769 1534 -1 /vendor/lib64/hw/android.hardware.contexthub@1.0-impl.generic.so +64769 1555 -1 /vendor/lib64/hw/local_time.default.so +64769 1549 -1 /vendor/lib64/hw/camera.sdm845.so +64769 1548 -1 /vendor/lib64/hw/bootctrl.sdm845.so +64769 1562 -1 /vendor/lib64/hw/vulkan.sdm845.so +64769 1530 -1 /vendor/lib64/hw/android.hardware.bluetooth@1.0-impl-qti.so +64769 1533 -1 /vendor/lib64/hw/android.hardware.camera.provider@2.4-impl.so +64769 1531 -1 /vendor/lib64/hw/android.hardware.boot@1.0-impl.so +64769 1563 -1 /vendor/lib64/lib-dplmedia.so +64769 1564 -1 /vendor/lib64/lib-imsdpl.so +64769 1565 -1 /vendor/lib64/lib-imsqimf.so +64769 1566 -1 /vendor/lib64/lib-imsrcs-v2.so +64769 1567 -1 /vendor/lib64/lib-imsxml.so +64769 1568 -1 /vendor/lib64/lib-rtpcommon.so +64769 1569 -1 /vendor/lib64/lib-rtpcore.so +64769 1570 -1 /vendor/lib64/lib-rtpdaemoninterface.so +64769 1571 -1 /vendor/lib64/lib-rtpsl.so +64769 1572 -1 /vendor/lib64/lib-uceservice.so +64769 1573 -1 /vendor/lib64/libAlacSwDec.so +64769 1574 -1 /vendor/lib64/libApeSwDec.so +64769 1575 -1 /vendor/lib64/libC2D2.so +64769 1576 -1 /vendor/lib64/libCB.so +64769 1577 -1 /vendor/lib64/libCommandSvc.so +64769 1578 -1 /vendor/lib64/libFlacSwDec.so +64769 1579 -1 /vendor/lib64/libGPQTEEC_vendor.so +64769 1580 -1 /vendor/lib64/libGPTEE_vendor.so +64769 1581 -1 /vendor/lib64/libGPreqcancel.so +64769 1582 -1 /vendor/lib64/libGPreqcancel_svc.so +64769 1583 -1 /vendor/lib64/libMpeg4SwEncoder.so +64769 1584 -1 /vendor/lib64/libOmxAlacDecSw.so +64769 1585 -1 /vendor/lib64/libOmxAmrwbplusDec.so +64769 1586 -1 /vendor/lib64/libOmxApeDecSw.so +64769 1587 -1 /vendor/lib64/libOmxCore.so +64769 1588 -1 /vendor/lib64/libOmxEvrcDec.so +64769 1589 -1 /vendor/lib64/libOmxQcelp13Dec.so +64769 1590 -1 /vendor/lib64/libOmxVdec.so +64769 1591 -1 /vendor/lib64/libOmxVenc.so +64769 1592 -1 /vendor/lib64/libOpenCL-pixel.so +64769 1593 -1 /vendor/lib64/libOpenCL.so +64769 1594 -1 /vendor/lib64/libQSEEComAPI.so +64769 1595 -1 /vendor/lib64/libQTEEConnector_vendor.so +64769 1596 -1 /vendor/lib64/libRSDriver_adreno.so +64769 1597 -1 /vendor/lib64/libSecureUILib.so +64769 1598 -1 /vendor/lib64/libStDrvInt.so +64769 1599 -1 /vendor/lib64/libSubSystemShutdown.so +64769 1600 -1 /vendor/lib64/lib_aion_buffer.so +64769 1601 -1 /vendor/lib64/lib_camera_sensors.so +64769 1602 -1 /vendor/lib64/libacdb-fts.so +64769 1603 -1 /vendor/lib64/libacdbloader.so +64769 1604 -1 /vendor/lib64/libacdbrtac.so +64769 1605 -1 /vendor/lib64/libadiertac.so +64769 1606 -1 /vendor/lib64/libadreno_utils.so +64769 1607 -1 /vendor/lib64/libadsp_default_listener.so +64769 1608 -1 /vendor/lib64/libadsprpc.so +64769 1609 -1 /vendor/lib64/libalsautils.so +64769 1610 -1 /vendor/lib64/libash.so +64769 1611 -1 /vendor/lib64/libaudcal.so +64769 1612 -1 /vendor/lib64/libaudioalsa.so +64769 1613 -1 /vendor/lib64/libbase64.so +64769 1614 -1 /vendor/lib64/libbccQTI.so +64769 1615 -1 /vendor/lib64/libbluetooth_audio_session.so +64769 1616 -1 /vendor/lib64/libbluetooth_audio_session_qti.so +64769 1617 -1 /vendor/lib64/libbt-hidlclient.so +64769 1618 -1 /vendor/lib64/libbthost_if.so +64769 1619 -1 /vendor/lib64/libbthost_if_qti.so +64769 1620 -1 /vendor/lib64/libbtnv.so +64769 1621 -1 /vendor/lib64/libc2d30_bltlib.so +64769 1622 -1 /vendor/lib64/libc2dcolorconvert.so +64769 1623 -1 /vendor/lib64/libcameradepthcalibrator.so +64769 1624 -1 /vendor/lib64/libcamxfdalgov7.so +64769 1625 -1 /vendor/lib64/libcamxfdengine.so +64769 1626 -1 /vendor/lib64/libcamxncs.so +64769 1627 -1 /vendor/lib64/libcamxstatscore.so +64769 1628 -1 /vendor/lib64/libcamxtintlessalgo.so +64769 1629 -1 /vendor/lib64/libcdsp_default_listener.so +64769 1630 -1 /vendor/lib64/libcdsprpc.so +64769 1631 -1 /vendor/lib64/libcld80211.so +64769 1632 -1 /vendor/lib64/libcne.so +64769 1633 -1 /vendor/lib64/libcneapiclient.so +64769 1634 -1 /vendor/lib64/libcneoplookup.so +64769 1635 -1 /vendor/lib64/libcneqmiutils.so +64769 1636 -1 /vendor/lib64/libcodec2_vndk.so +64769 1637 -1 /vendor/lib64/libcom.qti.chinodeutils.so +64769 1638 -1 /vendor/lib64/libconfigdb.so +64769 1639 -1 /vendor/lib64/libcpion.so +64769 1640 -1 /vendor/lib64/libdataitems.so +64769 1641 -1 /vendor/lib64/libdiag.so +64769 1642 -1 /vendor/lib64/libdiagjni.so +64769 1643 -1 /vendor/lib64/libdisp-aba.so +64769 1644 -1 /vendor/lib64/libdisplayconfig.so +64769 1645 -1 /vendor/lib64/libdisplaydebug.so +64769 1646 -1 /vendor/lib64/libdisplayqos.so +64769 1647 -1 /vendor/lib64/libdrm.so +64769 1648 -1 /vendor/lib64/libdrmfs.so +64769 1649 -1 /vendor/lib64/libdrmtime.so +64769 1650 -1 /vendor/lib64/libdrmutils.so +64769 1651 -1 /vendor/lib64/libdsi_netctrl.so +64769 1652 -1 /vendor/lib64/libdsutils.so +64769 1653 -1 /vendor/lib64/libeaselcomm.so +64769 1654 -1 /vendor/lib64/libeaselmanager_client.so +64769 1655 -1 /vendor/lib64/libeaselsystem.blue.so +64769 1656 -1 /vendor/lib64/libeffects.so +64769 1657 -1 /vendor/lib64/libeffectsconfig.so +64769 1658 -1 /vendor/lib64/libelmyra-protos.so +64769 1659 -1 /vendor/lib64/libfastcvdsp_stub.so +64769 1660 -1 /vendor/lib64/libfastcvopt.so +64769 1661 -1 /vendor/lib64/libflp.so +64769 1662 -1 /vendor/lib64/libgcam.so +64769 1663 -1 /vendor/lib64/libgcam_ae.so +64769 1664 -1 /vendor/lib64/libgcam_frsdk.so +64769 1665 -1 /vendor/lib64/libgcs-calwrapper.so +64769 1666 -1 /vendor/lib64/libgcs-ipc.so +64769 1667 -1 /vendor/lib64/libgcs-osal.so +64769 1668 -1 /vendor/lib64/libgcs.so +64769 1669 -1 /vendor/lib64/libgeofence.so +64769 1670 -1 /vendor/lib64/libgnss.so +64769 1671 -1 /vendor/lib64/libgnsspps.so +64769 1672 -1 /vendor/lib64/libgoog_catpipe.so +64769 1673 -1 /vendor/lib64/libgoog_flicker.so +64769 1674 -1 /vendor/lib64/libgoog_llv_gpu.so +64769 1675 -1 /vendor/lib64/libgoog_pdaf_core_imx363.so +64769 1676 -1 /vendor/lib64/libgoogle_camera_hal_tests.so +64769 1677 -1 /vendor/lib64/libgooglecamerahal.so +64769 1678 -1 /vendor/lib64/libgooglecamerahalutils.so +64769 1679 -1 /vendor/lib64/libgps.utils.so +64769 1680 -1 /vendor/lib64/libgpu_tonemapper.so +64769 1681 -1 /vendor/lib64/libgralloccore.so +64769 1682 -1 /vendor/lib64/libgrallocutils.so +64769 1683 -1 /vendor/lib64/libgsl.so +64769 1684 -1 /vendor/lib64/libhdcp1prov.so +64769 1685 -1 /vendor/lib64/libhdcp2p2prov.so +64769 1686 -1 /vendor/lib64/libhdcpsrm.so +64769 1687 -1 /vendor/lib64/libhdr_tm.so +64769 1688 -1 /vendor/lib64/libhexagon_nn_stub.so +64769 1689 -1 /vendor/lib64/libhidltransport.so +64769 1690 -1 /vendor/lib64/libhwbinder.so +64769 1691 -1 /vendor/lib64/libhwc2on1adapter.so +64769 1692 -1 /vendor/lib64/libhwc2onfbadapter.so +64769 1693 -1 /vendor/lib64/libhwminijail.so +64769 1694 -1 /vendor/lib64/libidl.so +64769 1695 -1 /vendor/lib64/libipanat.so +64769 1696 -1 /vendor/lib64/libizat_core.so +64769 1697 -1 /vendor/lib64/libjson.so +64769 1698 -1 /vendor/lib64/libkeymaster4support.so +64769 1699 -1 /vendor/lib64/libkeymasterdeviceutils.so +64769 1700 -1 /vendor/lib64/libkeymasterprovision.so +64769 1701 -1 /vendor/lib64/libkeymasterutils.so +64769 1702 -1 /vendor/lib64/libkeystore-engine-wifi-hidl.so +64769 1703 -1 /vendor/lib64/libkeystore-wifi-hidl.so +64769 1704 -1 /vendor/lib64/liblbs_core.so +64769 1705 -1 /vendor/lib64/libllvm-glnext.so +64769 1706 -1 /vendor/lib64/libllvm-qcom.so +64769 1707 -1 /vendor/lib64/libloc_api_v02.so +64769 1708 -1 /vendor/lib64/libloc_core.so +64769 1709 -1 /vendor/lib64/libloc_ds_api.so +64769 1710 -1 /vendor/lib64/liblocation_api.so +64769 1711 -1 /vendor/lib64/liblowi_client.so +64769 1712 -1 /vendor/lib64/liblowi_wifihal.so +64769 1713 -1 /vendor/lib64/liblqe.so +64769 1714 -1 /vendor/lib64/libmdmdetect.so +64769 1715 -1 /vendor/lib64/libmdmimgload.so +64769 1716 -1 /vendor/lib64/libmdsprpc.so +64769 1717 -1 /vendor/lib64/libmm-hdcpmgr.so +64769 1718 -1 /vendor/lib64/libmm-omxcore.so +64769 1719 -1 /vendor/lib64/libmotion_ae.so +64769 1720 -1 /vendor/lib64/libmulawdec.so +64769 1721 -1 /vendor/lib64/libnbaio_mono.so +64769 1722 -1 /vendor/lib64/libnetfilter_conntrack.so +64769 1723 -1 /vendor/lib64/libnetmgr.so +64769 1724 -1 /vendor/lib64/libnfnetlink.so +64769 1725 -1 /vendor/lib64/libnos.so +64769 1726 -1 /vendor/lib64/libnos_citadeld_proxy.so +64769 1727 -1 /vendor/lib64/libnos_client_citadel.so +64769 1728 -1 /vendor/lib64/libnos_datagram.so +64769 1729 -1 /vendor/lib64/libnos_datagram_citadel.so +64769 1730 -1 /vendor/lib64/libnos_transport.so +64769 1731 -1 /vendor/lib64/libnosprotos.so +64769 1732 -1 /vendor/lib64/liboemcrypto.so +64769 1733 -1 /vendor/lib64/liboffloadhal.so +64769 1734 -1 /vendor/lib64/libpdmapper.so +64769 1735 -1 /vendor/lib64/libpdnotifier.so +64769 1736 -1 /vendor/lib64/libperfmgr.so +64769 1737 -1 /vendor/lib64/libperipheral_client.so +64769 1738 -1 /vendor/lib64/libpixelhealth.so +64769 1739 -1 /vendor/lib64/libpixelstats.so +64769 1740 -1 /vendor/lib64/libplatformconfig.so +64769 1741 -1 /vendor/lib64/libpower_anomaly_data.so +64769 1742 -1 /vendor/lib64/libprotobuf-cpp-full.so +64769 1743 -1 /vendor/lib64/libqcbor.so +64769 1744 -1 /vendor/lib64/libqcci_legacy.so +64769 1745 -1 /vendor/lib64/libqcmaputils.so +64769 1746 -1 /vendor/lib64/libqcodec2.so +64769 1747 -1 /vendor/lib64/libqcrilFramework.so +64769 1748 -1 /vendor/lib64/libqdMetaData.so +64769 1749 -1 /vendor/lib64/libqdi.so +64769 1750 -1 /vendor/lib64/libqdp.so +64769 1751 -1 /vendor/lib64/libqdutils.so +64769 1752 -1 /vendor/lib64/libqisl.so +64769 1753 -1 /vendor/lib64/libqmi.so +64769 1754 -1 /vendor/lib64/libqmi_cci.so +64769 1755 -1 /vendor/lib64/libqmi_client_helper.so +64769 1756 -1 /vendor/lib64/libqmi_client_qmux.so +64769 1757 -1 /vendor/lib64/libqmi_common_so.so +64769 1758 -1 /vendor/lib64/libqmi_csi.so +64769 1759 -1 /vendor/lib64/libqmi_csvt_srvc.so +64769 1760 -1 /vendor/lib64/libqmi_encdec.so +64769 1761 -1 /vendor/lib64/libqmi_modem_svc.so +64769 1762 -1 /vendor/lib64/libqmi_vs-google-1.so +64769 1763 -1 /vendor/lib64/libqmiservices.so +64769 1764 -1 /vendor/lib64/libqrtr.so +64769 1765 -1 /vendor/lib64/libqseed3.so +64769 1766 -1 /vendor/lib64/libqservice.so +64769 1767 -1 /vendor/lib64/libqsocket.so +64769 1768 -1 /vendor/lib64/libqti-utils.so +64769 1769 -1 /vendor/lib64/libqtikeymaster4.so +64769 1770 -1 /vendor/lib64/libquipc_os_api.so +64769 1771 -1 /vendor/lib64/libreference-ril.so +64769 1772 -1 /vendor/lib64/libril-qc-hal-qmi.so +64769 1773 -1 /vendor/lib64/libril-qc-ltedirectdisc.so +64769 1774 -1 /vendor/lib64/libril-qc-radioconfig.so +64769 1775 -1 /vendor/lib64/libril-qcril-hook-oem.so +64769 1776 -1 /vendor/lib64/libril.so +64769 1777 -1 /vendor/lib64/libril_glog.so +64769 1778 -1 /vendor/lib64/librilqmiservices.so +64769 1779 -1 /vendor/lib64/librilutils.so +64769 1780 -1 /vendor/lib64/librmnetctl.so +64769 1781 -1 /vendor/lib64/librpmb.so +64769 1782 -1 /vendor/lib64/librs_adreno.so +64769 1783 -1 /vendor/lib64/librs_adreno_sha1.so +64769 1784 -1 /vendor/lib64/libsdedrm.so +64769 1785 -1 /vendor/lib64/libsdm-color.so +64769 1786 -1 /vendor/lib64/libsdm-diag.so +64769 1787 -1 /vendor/lib64/libsdm-disp-vndapis.so +64769 1788 -1 /vendor/lib64/libsdmcore.so +64769 1789 -1 /vendor/lib64/libsdmextension.so +64769 1790 -1 /vendor/lib64/libsdmutils.so +64769 1791 -1 /vendor/lib64/libsdsprpc.so +64769 1792 -1 /vendor/lib64/libsecureui.so +64769 1793 -1 /vendor/lib64/libsecureui_svcsock.so +64769 1794 -1 /vendor/lib64/libsensorslog.so +64769 1795 -1 /vendor/lib64/libsettings.so +64769 1796 -1 /vendor/lib64/libsi.so +64769 1797 -1 /vendor/lib64/libsns_device_mode_stub.so +64769 1798 -1 /vendor/lib64/libsns_fastRPC_util.so +64769 1799 -1 /vendor/lib64/libsns_low_lat_stream_stub.so +64769 1800 -1 /vendor/lib64/libsnsapi.so +64769 1801 -1 /vendor/lib64/libsnsdiaglog.so +64769 1802 -1 /vendor/lib64/libspcom.so +64769 1803 -1 /vendor/lib64/libspiris.so +64769 1804 -1 /vendor/lib64/libspl.so +64769 1805 -1 /vendor/lib64/libssc.so +64769 1806 -1 /vendor/lib64/libssc_default_listener.so +64769 1807 -1 /vendor/lib64/libssc_proto.so +64769 1808 -1 /vendor/lib64/libssc_safe.so +64769 1809 -1 /vendor/lib64/libssd.so +64769 1810 -1 /vendor/lib64/libstagefright_bufferpool@2.0.1.so +64769 1811 -1 /vendor/lib64/libstagefrighthw.so +64769 1812 -1 /vendor/lib64/libsubsystem_control.so +64769 1813 -1 /vendor/lib64/libswvdec.so +64769 1814 -1 /vendor/lib64/libsysmon_cdsp_skel.so +64769 1815 -1 /vendor/lib64/libsystem_health_mon.so +64769 1816 -1 /vendor/lib64/libthermalclient.so +64769 1817 -1 /vendor/lib64/libtime_genoff.so +64769 1818 -1 /vendor/lib64/libtinycompress.so +64769 1819 -1 /vendor/lib64/libtinyxml.so +64769 1820 -1 /vendor/lib64/libtinyxml2_1.so +64769 1821 -1 /vendor/lib64/libtzdrmgenprov.so +64769 1822 -1 /vendor/lib64/libvd6281.so +64769 1823 -1 /vendor/lib64/libvsc.so +64769 1824 -1 /vendor/lib64/libwebrtc_audio_preprocessing.so +64769 1825 -1 /vendor/lib64/libwifi-hal-ctrl.so +64769 1826 -1 /vendor/lib64/libwifi-hal-qcom.so +64769 1827 -1 /vendor/lib64/libwifi-hal.so +64769 1828 -1 /vendor/lib64/libwlcproto.so +64769 1829 -1 /vendor/lib64/libwms.so +64769 1830 -1 /vendor/lib64/libwpa_client.so +64769 1831 -1 /vendor/lib64/libwqe.so +64769 1832 -1 /vendor/lib64/libwvhidl.so +64769 1833 -1 /vendor/lib64/libxml.so +64769 1834 -1 /vendor/lib64/ls_client.so +25 1561266 -1 /vendor/lib64/mediacas +64769 1836 -1 /vendor/lib64/mediacas/libclearkeycasplugin.so +25 26453 -1 /vendor/lib64/mediadrm +64769 1838 -1 /vendor/lib64/mediadrm/libdrmclearkeyplugin.so +64769 1839 -1 /vendor/lib64/nfc_nci_nxp.so +64769 1840 -1 /vendor/lib64/nos_app_avb.so +64769 1841 -1 /vendor/lib64/nos_app_keymaster.so +64769 1842 -1 /vendor/lib64/nos_app_weaver.so +64769 1843 -1 /vendor/lib64/pixelatoms-cpp.so +64769 1844 -1 /vendor/lib64/pixelpowerstats_provider_aidl_interface-cpp.so +64769 1845 -1 /vendor/lib64/qcrild_librilutils.so +25 1561268 -1 /vendor/lib64/rfsa +25 1561269 -1 /vendor/lib64/rfsa/adsp +64769 1848 -1 /vendor/lib64/rfsa/adsp/libdsp_streamer_add_constant.so +64769 1849 -1 /vendor/lib64/sensors.ssc.so +25 1561271 -1 /vendor/lib64/soundfx +64769 1851 -1 /vendor/lib64/soundfx/libaudiopreprocessing.so +64769 1853 -1 /vendor/lib64/soundfx/libdownmix.so +64769 1852 -1 /vendor/lib64/soundfx/libbundlewrapper.so +64769 1858 -1 /vendor/lib64/soundfx/libqcompostprocbundle.so +64769 1862 -1 /vendor/lib64/soundfx/libreverbwrapper.so +64769 1859 -1 /vendor/lib64/soundfx/libqcomvisualizer.so +64769 1861 -1 /vendor/lib64/soundfx/libqcomvoiceprocessingdescriptors.so +64769 1863 -1 /vendor/lib64/soundfx/libvisualizer.so +64769 1860 -1 /vendor/lib64/soundfx/libqcomvoiceprocessing.so +64769 1855 -1 /vendor/lib64/soundfx/libeffectproxy.so +64769 1857 -1 /vendor/lib64/soundfx/libmalistener.so +64769 1864 -1 /vendor/lib64/soundfx/libvolumelistener.so +64769 1856 -1 /vendor/lib64/soundfx/libldnhncr.so +64769 1854 -1 /vendor/lib64/soundfx/libdynproc.so +64769 1865 -1 /vendor/lib64/unnhal-acc-adreno.so +64769 1866 -1 /vendor/lib64/unnhal-acc-common.so +64769 1867 -1 /vendor/lib64/unnhal-acc-hvx.so +64769 1868 -1 /vendor/lib64/vendor-pixelatoms-cpp.so +64769 1869 -1 /vendor/lib64/vendor.display.color@1.0.so +64769 1870 -1 /vendor/lib64/vendor.display.color@1.1.so +64769 1871 -1 /vendor/lib64/vendor.display.color@1.2.so +64769 1872 -1 /vendor/lib64/vendor.display.config@1.0.so +64769 1873 -1 /vendor/lib64/vendor.display.config@1.1.so +64769 1874 -1 /vendor/lib64/vendor.display.config@1.2.so +64769 1875 -1 /vendor/lib64/vendor.display.config@1.3.so +64769 1876 -1 /vendor/lib64/vendor.display.postproc@1.0.so +64769 1877 -1 /vendor/lib64/vendor.google.radioext@1.0.so +64769 1878 -1 /vendor/lib64/vendor.google.radioext@1.1.so +64769 1879 -1 /vendor/lib64/vendor.google.wifi_ext@1.0.so +64769 1880 -1 /vendor/lib64/vendor.google.wifi_ext@1.1.so +64769 1881 -1 /vendor/lib64/vendor.google.wireless_charger@1.0.so +64769 1882 -1 /vendor/lib64/vendor.google_paintbox@1.0.so +64769 1883 -1 /vendor/lib64/vendor.nxp.nxpese@1.0.so +64769 1884 -1 /vendor/lib64/vendor.nxp.nxpnfc@1.0.so +64769 1885 -1 /vendor/lib64/vendor.qti.esepowermanager@1.0.so +64769 1886 -1 /vendor/lib64/vendor.qti.googleext.imsext@1.0.so +64769 1887 -1 /vendor/lib64/vendor.qti.hardware.automotive.vehicle@1.0.so +64769 1888 -1 /vendor/lib64/vendor.qti.hardware.bluetooth_audio@2.0.so +64769 1889 -1 /vendor/lib64/vendor.qti.hardware.bluetooth_sar@1.0.so +64769 1890 -1 /vendor/lib64/vendor.qti.hardware.data.latency@1.0.so +64769 1891 -1 /vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so +64769 1892 -1 /vendor/lib64/vendor.qti.hardware.fm@1.0.so +64769 1893 -1 /vendor/lib64/vendor.qti.hardware.iop@1.0.so +64769 1894 -1 /vendor/lib64/vendor.qti.hardware.perf@1.0.so +64769 1895 -1 /vendor/lib64/vendor.qti.hardware.qdutils_disp@1.0.so +64769 1896 -1 /vendor/lib64/vendor.qti.hardware.qteeconnector@1.0.so +64769 1897 -1 /vendor/lib64/vendor.qti.hardware.radio.am@1.0.so +64769 1898 -1 /vendor/lib64/vendor.qti.hardware.radio.atcmdfwd@1.0.so +64769 1899 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.0.so +64769 1900 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.1.so +64769 1901 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.2.so +64769 1902 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.3.so +64769 1903 -1 /vendor/lib64/vendor.qti.hardware.radio.ims@1.4.so +64769 1904 -1 /vendor/lib64/vendor.qti.hardware.radio.lpa@1.0.so +64769 1905 -1 /vendor/lib64/vendor.qti.hardware.radio.qcrilhook@1.0.so +64769 1906 -1 /vendor/lib64/vendor.qti.hardware.radio.qtiradio@1.0.so +64769 1907 -1 /vendor/lib64/vendor.qti.hardware.radio.qtiradio@2.0.so +64769 1908 -1 /vendor/lib64/vendor.qti.hardware.radio.uim@1.0.so +64769 1909 -1 /vendor/lib64/vendor.qti.hardware.radio.uim@1.1.so +64769 1910 -1 /vendor/lib64/vendor.qti.hardware.radio.uim_remote_client@1.0.so +64769 1911 -1 /vendor/lib64/vendor.qti.hardware.radio.uim_remote_server@1.0.so +64769 1912 -1 /vendor/lib64/vendor.qti.hardware.soter@1.0.so +64769 1913 -1 /vendor/lib64/vendor.qti.hardware.tui_comm@1.0.so +64769 1914 -1 /vendor/lib64/vendor.qti.hardware.vpp@1.1.so +64769 1915 -1 /vendor/lib64/vendor.qti.hardware.wigig.netperftuner@1.0.so +64769 1916 -1 /vendor/lib64/vendor.qti.ims.callinfo@1.0.so +64769 1917 -1 /vendor/lib64/vendor.qti.imsrtpservice@1.0-service-Impl.so +64769 1918 -1 /vendor/lib64/vendor.qti.imsrtpservice@1.0.so +64769 1919 -1 /vendor/lib64/vendor.qti.voiceprint@1.0.so +25 19645 -1 /vendor/etc +64769 770 -1 /vendor/etc/thermal_info_config_evt.json +25 1561309 -1 /vendor/etc/permissions +64769 684 -1 /vendor/etc/permissions/android.hardware.wifi.aware.xml +64769 670 -1 /vendor/etc/permissions/android.hardware.sensor.stepdetector.xml +64769 648 -1 /vendor/etc/permissions/android.hardware.audio.pro.xml +64769 654 -1 /vendor/etc/permissions/android.hardware.camera.raw.xml +64769 685 -1 /vendor/etc/permissions/android.hardware.wifi.direct.xml +64769 674 -1 /vendor/etc/permissions/android.hardware.telephony.gsm.xml +64769 692 -1 /vendor/etc/permissions/android.software.sip.voip.xml +64769 663 -1 /vendor/etc/permissions/android.hardware.sensor.barometer.xml +64769 671 -1 /vendor/etc/permissions/android.hardware.strongbox_keystore.xml +64769 650 -1 /vendor/etc/permissions/android.hardware.bluetooth_le.xml +64769 652 -1 /vendor/etc/permissions/android.hardware.camera.front.xml +64769 687 -1 /vendor/etc/permissions/android.hardware.wifi.rtt.xml +64769 677 -1 /vendor/etc/permissions/android.hardware.usb.accessory.xml +64769 681 -1 /vendor/etc/permissions/android.hardware.vulkan.compute.xml +64769 658 -1 /vendor/etc/permissions/android.hardware.nfc.hcef.xml +64769 668 -1 /vendor/etc/permissions/android.hardware.sensor.proximity.xml +64769 682 -1 /vendor/etc/permissions/android.hardware.vulkan.level.xml +64769 649 -1 /vendor/etc/permissions/android.hardware.bluetooth.xml +64769 676 -1 /vendor/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml +64769 664 -1 /vendor/etc/permissions/android.hardware.sensor.compass.xml +64769 669 -1 /vendor/etc/permissions/android.hardware.sensor.stepcounter.xml +64769 686 -1 /vendor/etc/permissions/android.hardware.wifi.passpoint.xml +64769 688 -1 /vendor/etc/permissions/android.hardware.wifi.xml +64769 691 -1 /vendor/etc/permissions/android.software.midi.xml +64769 694 -1 /vendor/etc/permissions/com.google.hardware.camera.easel_2018.xml +64769 651 -1 /vendor/etc/permissions/android.hardware.camera.flash-autofocus.xml +64769 666 -1 /vendor/etc/permissions/android.hardware.sensor.hifi_sensors.xml +64769 678 -1 /vendor/etc/permissions/android.hardware.usb.host.xml +64769 655 -1 /vendor/etc/permissions/android.hardware.fingerprint.xml +64769 690 -1 /vendor/etc/permissions/android.software.ipsec_tunnels.xml +64769 660 -1 /vendor/etc/permissions/android.hardware.opengles.aep.xml +64769 657 -1 /vendor/etc/permissions/android.hardware.nfc.hce.xml +64769 689 -1 /vendor/etc/permissions/android.software.device_id_attestation.xml +64769 675 -1 /vendor/etc/permissions/android.hardware.telephony.ims.xml +64769 680 -1 /vendor/etc/permissions/android.hardware.vr.high_performance.xml +64769 656 -1 /vendor/etc/permissions/android.hardware.location.gps.xml +64769 679 -1 /vendor/etc/permissions/android.hardware.vr.headtracking.xml +64769 696 -1 /vendor/etc/permissions/handheld_core_hardware.xml +64769 667 -1 /vendor/etc/permissions/android.hardware.sensor.light.xml +64769 661 -1 /vendor/etc/permissions/android.hardware.sensor.accelerometer.xml +64769 659 -1 /vendor/etc/permissions/android.hardware.nfc.xml +64769 695 -1 /vendor/etc/permissions/com.nxp.mifare.xml +64769 672 -1 /vendor/etc/permissions/android.hardware.telephony.carrierlock.xml +64769 662 -1 /vendor/etc/permissions/android.hardware.sensor.assist.xml +64769 693 -1 /vendor/etc/permissions/com.google.android.camera.experimental2018.xml +64769 683 -1 /vendor/etc/permissions/android.hardware.vulkan.version.xml +64769 653 -1 /vendor/etc/permissions/android.hardware.camera.full.xml +64769 647 -1 /vendor/etc/permissions/android.hardware.audio.low_latency.xml +64769 673 -1 /vendor/etc/permissions/android.hardware.telephony.cdma.xml +64769 665 -1 /vendor/etc/permissions/android.hardware.sensor.gyroscope.xml +64769 642 -1 /vendor/etc/msm_irqbalance.conf +64769 764 -1 /vendor/etc/sound_trigger_platform_info.xml +64769 704 -1 /vendor/etc/sec_config +64769 771 -1 /vendor/etc/usb_audio_policy_configuration.xml +64769 703 -1 /vendor/etc/sap.conf +64769 499 -1 /vendor/etc/bluetooth_audio_policy_configuration.xml +25 1561366 -1 /vendor/etc/chre +64769 504 -1 /vendor/etc/chre/preloaded_nanoapps.json +64769 700 -1 /vendor/etc/qdcm_calib_data_sw43408_cmd_mode_dsc_dsi_panel.xml +64769 630 -1 /vendor/etc/maxx_conf_c1.ini +64769 699 -1 /vendor/etc/qdcm_calib_data_S6E3HA8_6.3_command_mode_panel.xml +64769 495 -1 /vendor/etc/audio_policy_configuration.xml +64769 765 -1 /vendor/etc/thermal-engine-crosshatch-novr-evt.conf +25 1561373 -1 /vendor/etc/default-permissions +64769 541 -1 /vendor/etc/default-permissions/default-permissions.xml +25 1561375 -1 /vendor/etc/perf +64769 645 -1 /vendor/etc/perf/commonresourceconfigs.xml +25 1561377 -1 /vendor/etc/data +64769 539 -1 /vendor/etc/data/netmgr_config.xml +64769 538 -1 /vendor/etc/data/dsi_config.xml +64769 550 -1 /vendor/etc/google_qmi_fw.conf +25 1561381 -1 /vendor/etc/mdlog +64769 632 -1 /vendor/etc/mdlog/default.cfg +64769 633 -1 /vendor/etc/mdlog/diag.conf +64769 629 -1 /vendor/etc/maxx_conf_b1.ini +64769 552 -1 /vendor/etc/gps.conf +25 1561386 -1 /vendor/etc/wifi +64769 785 -1 /vendor/etc/wifi/p2p_supplicant_overlay.conf +64769 788 -1 /vendor/etc/wifi/wpa_supplicant_overlay.conf +64769 786 -1 /vendor/etc/wifi/wifi_concurrency_cfg.txt +64769 787 -1 /vendor/etc/wifi/wpa_supplicant.conf +64769 763 -1 /vendor/etc/sound_trigger_mixer_paths_wcd9340.xml +64769 497 -1 /vendor/etc/audio_policy_configuration_bluetooth_legacy_hal.xml +64769 701 -1 /vendor/etc/qmi_fw.conf +64769 641 -1 /vendor/etc/modem_stat.conf +64769 546 -1 /vendor/etc/fs_config_dirs +64769 459 -1 /vendor/etc/a2dp_in_audio_policy_configuration.xml +64769 767 -1 /vendor/etc/thermal-engine-crosshatch-vr-evt.conf +64769 548 -1 /vendor/etc/fstab.persist +64769 626 -1 /vendor/etc/libnfc-nxp.conf +64769 766 -1 /vendor/etc/thermal-engine-crosshatch-novr-prod.conf +64769 543 -1 /vendor/etc/default_c1.mps +64769 549 -1 /vendor/etc/fstab.sdm845 +64769 494 -1 /vendor/etc/audio_platform_info_tavil_c1.xml +25 1561404 -1 /vendor/etc/seccomp_policy +64769 706 -1 /vendor/etc/seccomp_policy/codec2.vendor.ext.policy +64769 708 -1 /vendor/etc/seccomp_policy/mediacodec.policy +64769 707 -1 /vendor/etc/seccomp_policy/configstore@1.1.policy +64769 628 -1 /vendor/etc/maxx_conf.ini +64769 455 -1 /vendor/etc/FOSSConfig.xml +64769 542 -1 /vendor/etc/default_b1.mps +64769 551 -1 /vendor/etc/gpfspath_oem_config.xml +25 1517398 -1 /vendor/etc/selinux +64769 710 -1 /vendor/etc/selinux/plat_pub_versioned.cil +64769 718 -1 /vendor/etc/selinux/vendor_hwservice_contexts +64769 722 -1 /vendor/etc/selinux/vendor_sepolicy.cil +64769 713 -1 /vendor/etc/selinux/precompiled_sepolicy.plat_sepolicy_and_mapping.sha256 +64769 719 -1 /vendor/etc/selinux/vendor_mac_permissions.xml +64769 720 -1 /vendor/etc/selinux/vendor_property_contexts +64769 723 -1 /vendor/etc/selinux/vndservice_contexts +64769 711 -1 /vendor/etc/selinux/plat_sepolicy_vers.txt +64769 721 -1 /vendor/etc/selinux/vendor_seapp_contexts +64769 712 -1 /vendor/etc/selinux/precompiled_sepolicy +64769 714 -1 /vendor/etc/selinux/precompiled_sepolicy.product_sepolicy_and_mapping.sha256 +64769 716 -1 /vendor/etc/selinux/selinux_denial_metadata +64769 715 -1 /vendor/etc/selinux/precompiled_sepolicy.system_ext_sepolicy_and_mapping.sha256 +64769 717 -1 /vendor/etc/selinux/vendor_file_contexts +64769 634 -1 /vendor/etc/media_codecs.xml +64769 643 -1 /vendor/etc/passwd +2054 349 -1 /vendor/etc/public.libraries.txt +64769 627 -1 /vendor/etc/lowi.conf +64769 637 -1 /vendor/etc/media_codecs_performance.xml +25 1561429 -1 /vendor/etc/acdbdata +25 1561430 -1 /vendor/etc/acdbdata/OEM +25 1561431 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card +64769 487 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Handset_cal.acdb +64769 490 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Speaker_cal.acdb +64769 484 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Codec_cal.acdb +64769 489 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Headset_cal.acdb +64769 483 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Bluetooth_cal.acdb +64769 491 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/workspaceFile.qwsp +64769 485 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/General_cal.acdb +64769 488 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Hdmi_cal.acdb +64769 486 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-snd-card/Global_cal.acdb +25 1561441 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card +64769 467 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Handset_cal.acdb +64769 470 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Speaker_cal.acdb +64769 464 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Codec_cal.acdb +64769 469 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Headset_cal.acdb +64769 463 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Bluetooth_cal.acdb +64769 471 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/workspaceFile.qwsp +64769 465 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/General_cal.acdb +64769 468 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Hdmi_cal.acdb +64769 466 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-b1-snd-card/Global_cal.acdb +25 1561451 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card +64769 477 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Handset_cal.acdb +64769 480 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Speaker_cal.acdb +64769 474 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Codec_cal.acdb +64769 479 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Headset_cal.acdb +64769 473 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Bluetooth_cal.acdb +64769 481 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/workspaceFile.qwsp +64769 475 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/General_cal.acdb +64769 478 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Hdmi_cal.acdb +64769 476 -1 /vendor/etc/acdbdata/OEM/sdm845-tavil-c1-snd-card/Global_cal.acdb +64769 492 -1 /vendor/etc/acdbdata/adsp_avs_config.acdb +64769 697 -1 /vendor/etc/powerhint.json +25 1561463 -1 /vendor/etc/camera +64769 502 -1 /vendor/etc/camera/camera_imu_average_calibration.xml +64769 498 -1 /vendor/etc/audio_policy_volumes.xml +64769 640 -1 /vendor/etc/mkshrc +64769 457 -1 /vendor/etc/NOTICE.xml.gz +64769 623 -1 /vendor/etc/init.insmod.cfg +64769 624 -1 /vendor/etc/izat.conf +64769 555 -1 /vendor/etc/hearing_aid_audio_policy_configuration.xml +64769 554 -1 /vendor/etc/group +25 1561472 -1 /vendor/etc/init +64769 559 -1 /vendor/etc/init/android.hardware.audio@2.0-service.rc +64769 589 -1 /vendor/etc/init/android.hardware.usb@1.1-service.crosshatch.rc +64769 615 -1 /vendor/etc/init/vendor.google.radioext@1.0-service.rc +64769 561 -1 /vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-service.fpc.rc +64769 608 -1 /vendor/etc/init/init.sdm845.chamber.rc +64769 575 -1 /vendor/etc/init/android.hardware.graphics.composer@2.3-service.rc +64769 592 -1 /vendor/etc/init/boringssl_self_test.rc +64769 590 -1 /vendor/etc/init/android.hardware.weaver@1.0-service.citadel.rc +64769 612 -1 /vendor/etc/init/pixelstats-vendor.crosshatch.rc +64769 582 -1 /vendor/etc/init/android.hardware.nfc@1.2-service.rc +64769 610 -1 /vendor/etc/init/init.tcpdump.rc +64769 621 -1 /vendor/etc/init/vendor_flash_recovery.rc +64769 568 -1 /vendor/etc/init/android.hardware.contexthub@1.0-service.rc +64769 606 -1 /vendor/etc/init/init-ramdump.rc +64769 587 -1 /vendor/etc/init/android.hardware.sensors@2.0-service.rc +64769 573 -1 /vendor/etc/init/android.hardware.gatekeeper@1.0-service-qti.rc +64769 594 -1 /vendor/etc/init/easelmanagerd.rc +64769 577 -1 /vendor/etc/init/android.hardware.health@2.0-service.crosshatch.rc +64769 580 -1 /vendor/etc/init/android.hardware.media.omx@1.0-service.rc +64769 596 -1 /vendor/etc/init/hostapd.android.rc +64769 613 -1 /vendor/etc/init/qcrild.rc +64769 593 -1 /vendor/etc/init/citadeld.rc +64769 565 -1 /vendor/etc/init/android.hardware.cas@1.1-service.rc +64769 578 -1 /vendor/etc/init/android.hardware.keymaster@4.0-service-qti.rc +64769 617 -1 /vendor/etc/init/vendor.google.wireless_charger@1.0-service.rc +64769 558 -1 /vendor/etc/init/android.hardware.atrace@1.0-service.pixel.rc +64769 595 -1 /vendor/etc/init/hardware.google.light@1.0-service.rc +64769 569 -1 /vendor/etc/init/android.hardware.drm@1.0-service.rc +64769 557 -1 /vendor/etc/init/PaintboxDriver.rc +64769 609 -1 /vendor/etc/init/init.sdm845.wlc.rc +64769 566 -1 /vendor/etc/init/android.hardware.configstore@1.1-service.rc +64769 586 -1 /vendor/etc/init/android.hardware.secure_element@1.1-service-disabled.rc +64769 607 -1 /vendor/etc/init/init-ramoops.rc +64769 563 -1 /vendor/etc/init/android.hardware.boot@1.0-service.rc +64769 571 -1 /vendor/etc/init/android.hardware.drm@1.2-service.widevine.rc +64769 564 -1 /vendor/etc/init/android.hardware.camera.provider@2.4-service_64.rc +64769 611 -1 /vendor/etc/init/init_citadel.rc +64769 620 -1 /vendor/etc/init/vendor.qti.media.c2@1.0-service.rc +64769 622 -1 /vendor/etc/init/vndservicemanager.rc +25 1561512 -1 /vendor/etc/init/hw +64769 603 -1 /vendor/etc/init/hw/init.sdm845.power.rc +64769 599 -1 /vendor/etc/init/hw/init.crosshatch.rc +64769 598 -1 /vendor/etc/init/hw/init.blueline.rc +64769 601 -1 /vendor/etc/init/hw/init.sdm845.logging.rc +64769 602 -1 /vendor/etc/init/hw/init.sdm845.mpssrfs.rc +64769 605 -1 /vendor/etc/init/hw/init.sdm845.usb.rc +64769 604 -1 /vendor/etc/init/hw/init.sdm845.rc +64769 600 -1 /vendor/etc/init/hw/init.sdm845.diag.rc +64769 574 -1 /vendor/etc/init/android.hardware.gnss@1.1-service-qti.rc +64769 576 -1 /vendor/etc/init/android.hardware.health.storage@1.0-service.rc +64769 560 -1 /vendor/etc/init/android.hardware.authsecret@1.0-service.citadel.rc +64769 581 -1 /vendor/etc/init/android.hardware.neuralnetworks@1.2-service-qti.rc +64769 591 -1 /vendor/etc/init/android.hardware.wifi.supplicant-service.rc +64769 572 -1 /vendor/etc/init/android.hardware.dumpstate@1.0-service.crosshatch.rc +64769 584 -1 /vendor/etc/init/android.hardware.power.stats@1.0-service.pixel.rc +64769 570 -1 /vendor/etc/init/android.hardware.drm@1.2-service.clearkey.rc +64769 579 -1 /vendor/etc/init/android.hardware.keymaster@4.0-service.citadel.rc +64769 618 -1 /vendor/etc/init/vendor.qti.hardware.display.allocator@1.0-service.rc +64769 585 -1 /vendor/etc/init/android.hardware.power@1.3-service.pixel-libperfmgr.rc +64769 619 -1 /vendor/etc/init/vendor.qti.hardware.tui_comm@1.0-service-qti.rc +64769 588 -1 /vendor/etc/init/android.hardware.thermal@2.0-service.pixel.rc +64769 562 -1 /vendor/etc/init/android.hardware.bluetooth@1.0-service-qti.rc +64769 616 -1 /vendor/etc/init/vendor.google.wifi_ext@1.0-service.rc +64769 567 -1 /vendor/etc/init/android.hardware.confirmationui@1.0-service-crosshatch.rc +64769 614 -1 /vendor/etc/init/small_hals.crosshatch-service.rc +64769 583 -1 /vendor/etc/init/android.hardware.oemlock@1.0-service.citadel.rc +64769 768 -1 /vendor/etc/thermal-engine-crosshatch-vr-prod.conf +64769 544 -1 /vendor/etc/default_volume_tables.xml +64769 547 -1 /vendor/etc/fs_config_files +64769 639 -1 /vendor/etc/mixer_paths_tavil_c1.xml +64769 553 -1 /vendor/etc/graphite_ipc_platform_info.xml +25 1561544 -1 /vendor/etc/sensors +64769 762 -1 /vendor/etc/sensors/sensor_def_qcomdev.conf +64769 725 -1 /vendor/etc/sensors/hals.conf +25 1561547 -1 /vendor/etc/sensors/registry +64769 727 -1 /vendor/etc/sensors/registry/b1c1_bmp380_0.json +64769 732 -1 /vendor/etc/sensors/registry/b1c1_max11261_0.json +64769 745 -1 /vendor/etc/sensors/registry/c1_touch_gesture_0.json +64769 747 -1 /vendor/etc/sensors/registry/sns_basic_gestures.json +64769 730 -1 /vendor/etc/sensors/registry/b1c1_camera_vsync_2.json +64769 737 -1 /vendor/etc/sensors/registry/bmp380_0.json +64769 751 -1 /vendor/etc/sensors/registry/sns_distance_bound.json +64769 750 -1 /vendor/etc/sensors/registry/sns_diag_filter.json +64769 746 -1 /vendor/etc/sensors/registry/lis2mdl_0.json +64769 755 -1 /vendor/etc/sensors/registry/sns_gyro_cal.json +64769 752 -1 /vendor/etc/sensors/registry/sns_facing.json +64769 754 -1 /vendor/etc/sensors/registry/sns_geomag_rv.json +64769 739 -1 /vendor/etc/sensors/registry/c1_lis2mdl_0.json +64769 734 -1 /vendor/etc/sensors/registry/b1c1_max11261_rev1_0.json +64769 757 -1 /vendor/etc/sensors/registry/sns_rmd.json +64769 758 -1 /vendor/etc/sensors/registry/sns_rotv.json +64769 733 -1 /vendor/etc/sensors/registry/b1c1_max11261_no_pullup.json +64769 738 -1 /vendor/etc/sensors/registry/c1_bmi160_0.json +64769 744 -1 /vendor/etc/sensors/registry/c1_tmd2725_0.json +64769 728 -1 /vendor/etc/sensors/registry/b1c1_camera_vsync_0.json +64769 756 -1 /vendor/etc/sensors/registry/sns_pedometer.json +64769 742 -1 /vendor/etc/sensors/registry/c1_sx932x_0.json +64769 736 -1 /vendor/etc/sensors/registry/bmi160_0.json +64769 749 -1 /vendor/etc/sensors/registry/sns_device_orient.json +64769 753 -1 /vendor/etc/sensors/registry/sns_fmv.json +64769 760 -1 /vendor/etc/sensors/registry/sx932x_0.json +64769 731 -1 /vendor/etc/sensors/registry/b1c1_dev2_bmi160_0.json +64769 743 -1 /vendor/etc/sensors/registry/c1_sx932x_0_no_pullup.json +64769 759 -1 /vendor/etc/sensors/registry/sns_smd.json +64769 735 -1 /vendor/etc/sensors/registry/b1c1_unused_gpio.json +64769 761 -1 /vendor/etc/sensors/registry/tmd2725_0.json +64769 740 -1 /vendor/etc/sensors/registry/c1_lis2mdl_0_proto.json +64769 748 -1 /vendor/etc/sensors/registry/sns_cm.json +64769 741 -1 /vendor/etc/sensors/registry/c1_proto_bmi160_0.json +64769 729 -1 /vendor/etc/sensors/registry/b1c1_camera_vsync_1.json +2054 351 -1 /vendor/etc/sensors/sns_reg_config +64769 493 -1 /vendor/etc/audio_effects.xml +64769 638 -1 /vendor/etc/media_profiles_V1_0.xml +64769 496 -1 /vendor/etc/audio_policy_configuration_a2dp_offload_disabled.xml +64769 456 -1 /vendor/etc/IPACM_cfg.xml +25 1561588 -1 /vendor/etc/cne +25 1561589 -1 /vendor/etc/cne/wqeclient +25 1561590 -1 /vendor/etc/cne/wqeclient/ATT +64769 510 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile3.xml +64769 513 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile6.xml +64769 508 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile1.xml +64769 512 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile5.xml +64769 509 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile2.xml +64769 511 -1 /vendor/etc/cne/wqeclient/ATT/ATT_profile4.xml +25 1561597 -1 /vendor/etc/cne/wqeclient/VZW +64769 536 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile6.xml +64769 535 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile5.xml +64769 532 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile2.xml +64769 531 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile1.xml +64769 534 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile4.xml +64769 533 -1 /vendor/etc/cne/wqeclient/VZW/VZW_profile3.xml +25 1561604 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE +64769 516 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile2.xml +64769 517 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile3.xml +64769 518 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile4.xml +64769 515 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile1.xml +64769 520 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile6.xml +64769 519 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile5.xml +64769 521 -1 /vendor/etc/cne/wqeclient/OEM_ROW_NO_WQE/OEM_ROW_NO_WQE_profile7.xml +25 1561612 -1 /vendor/etc/cne/wqeclient/ROW +64769 529 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile7.xml +64769 526 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile4.xml +64769 528 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile6.xml +64769 527 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile5.xml +64769 523 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile1.xml +64769 525 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile3.xml +64769 524 -1 /vendor/etc/cne/wqeclient/ROW/ROW_profile2.xml +64769 635 -1 /vendor/etc/media_codecs_c2.xml +64769 702 -1 /vendor/etc/r_submix_audio_policy_configuration.xml +64769 769 -1 /vendor/etc/thermal_info_config.json +64769 636 -1 /vendor/etc/media_codecs_omx.xml +64769 500 -1 /vendor/etc/bluetooth_hearing_aid_audio_policy_configuration.xml +64769 545 -1 /vendor/etc/flp.conf +25 1561626 -1 /vendor/etc/vintf +64769 773 -1 /vendor/etc/vintf/compatibility_matrix.xml +25 1561628 -1 /vendor/etc/vintf/manifest +64769 777 -1 /vendor/etc/vintf/manifest/android.hardware.power@1.3-service.pixel.xml +64769 776 -1 /vendor/etc/vintf/manifest/android.hardware.cas@1.1-service.xml +64769 778 -1 /vendor/etc/vintf/manifest/android.hardware.thermal@2.0-service.pixel.xml +64769 775 -1 /vendor/etc/vintf/manifest/android.hardware.atrace@1.0-service.pixel.xml +64769 781 -1 /vendor/etc/vintf/manifest/manifest_wifi_ext.xml +64769 780 -1 /vendor/etc/vintf/manifest/manifest_android.hardware.health.storage@1.0.xml +64769 782 -1 /vendor/etc/vintf/manifest/small_hals.crosshatch-service.xml +64769 779 -1 /vendor/etc/vintf/manifest/manifest.xml +64769 783 -1 /vendor/etc/vintf/manifest.xml +64769 625 -1 /vendor/etc/libese-nxp.conf +64769 458 -1 /vendor/etc/a2dp_audio_policy_configuration.xml +25 1561640 -1 /vendor/radio +25 1561641 -1 /vendor/radio/qcril_database +25 1561642 -1 /vendor/radio/qcril_database/upgrade +64769 1963 -1 /vendor/radio/qcril_database/upgrade/5_recheck_ecc_setting.sql +64769 1958 -1 /vendor/radio/qcril_database/upgrade/1_version_intro.sql +64769 1966 -1 /vendor/radio/qcril_database/upgrade/8_germany_ecc_110.sql +64769 1960 -1 /vendor/radio/qcril_database/upgrade/3_version_google_feature.sql +64769 1956 -1 /vendor/radio/qcril_database/upgrade/0_initial.sql +64769 1964 -1 /vendor/radio/qcril_database/upgrade/6_remove_unnecessary_entry.sql +64769 1962 -1 /vendor/radio/qcril_database/upgrade/4_version_google_feature.sql +64769 1959 -1 /vendor/radio/qcril_database/upgrade/2_version_add_wps_config.sql +64769 1961 -1 /vendor/radio/qcril_database/upgrade/3_version_update_wps_config.sql +64769 1957 -1 /vendor/radio/qcril_database/upgrade/10_remove_germany_hard_ecc_110.sql +64769 1965 -1 /vendor/radio/qcril_database/upgrade/7_singapore_ecc_995.sql +64769 1967 -1 /vendor/radio/qcril_database/upgrade/9_remove_germany_ecc_110.sql +64769 1954 -1 /vendor/radio/qcril_database/qcril.db +25 1451998 -1 /vendor/media +64769 1923 -1 /vendor/media/ensemble_fd_model.emd +64769 1922 -1 /vendor/media/PFFprec_600.emd +64769 1921 -1 /vendor/media/LMspeed_508.emd +64772 3 -1 /data +64772 7 -1 /data/unencrypted +64772 14 -1 /data/unencrypted/mode +64772 8 -1 /data/unencrypted/key +64772 9 -1 /data/unencrypted/key/version +64772 10 -1 /data/unencrypted/key/secdiscardable +64772 11 -1 /data/unencrypted/key/stretching +64772 12 -1 /data/unencrypted/key/keymaster_key_blob +64772 13 -1 /data/unencrypted/key/encrypted_key +64772 15 -1 /data/unencrypted/ref +64772 16 -1 /data/unencrypted/per_boot_ref +64772 17 -1 /data/bootchart +64772 18 -1 /data/apex +64772 19 -1 /data/apex/active +64772 20 -1 /data/apex/backup +64772 21 -1 /data/apex/hashtree +64772 22 -1 /data/apex/sessions +64772 23 -1 /data/app-staging +64772 24 -1 /data/misc +64772 25 -1 /data/misc/recovery +64772 26 -1 /data/misc/recovery/ro.build.fingerprint +64772 27 -1 /data/misc/recovery/proc +64772 28 -1 /data/misc/recovery/proc/version +64772 1921 -1 /data/misc/recovery/proc/version.1 +64772 1920 -1 /data/misc/recovery/ro.build.fingerprint.1 +64772 29 -1 /data/misc/bluedroid +64772 3551 -1 /data/misc/bluedroid/bt_config.conf +64772 30 -1 /data/misc/bluetooth +64772 31 -1 /data/misc/bluetooth/logs +64772 32 -1 /data/misc/keystore +64772 208 -1 /data/misc/keystore/user_0 +64772 3339 -1 /data/misc/keystore/user_0/1073_USRPKEY_WifiConfigStore+^xml+^data+]integrity+]checker+]key +64772 3341 -1 /data/misc/keystore/user_0/.1073_chr_USRPKEY_WifiConfigStore+^xml+^data+]integrity+]checker+]key +64772 209 -1 /data/misc/keystore/.metadata +64772 33 -1 /data/misc/gatekeeper +64772 3366 -1 /data/misc/gatekeeper/.coldboot +64772 34 -1 /data/misc/keychain +64772 35 -1 /data/misc/net +64772 530 -1 /data/misc/net/rt_tables +64772 9725 -1 /data/misc/net/netd_pid +64772 36 -1 /data/misc/radio +64772 37 -1 /data/misc/sms +64772 38 -1 /data/misc/carrierid +64772 39 -1 /data/misc/apns +64772 40 -1 /data/misc/zoneinfo +64772 41 -1 /data/misc/network_watchlist +64772 42 -1 /data/misc/textclassifier +64772 43 -1 /data/misc/vpn +64772 44 -1 /data/misc/shared_relro +64772 6593 -1 /data/misc/shared_relro/libwebviewchromium32.relro +64772 6595 -1 /data/misc/shared_relro/libwebviewchromium64.relro +64772 45 -1 /data/misc/systemkeys +64772 46 -1 /data/misc/wifi +64772 47 -1 /data/misc/wifi/sockets +64772 48 -1 /data/misc/wifi/wpa_supplicant +64772 2733 -1 /data/misc/wifi/softap.conf +64772 1555 -1 /data/misc/wifi/WifiConfigStore.xml +64772 49 -1 /data/misc/ethernet +64772 50 -1 /data/misc/dhcp +64772 51 -1 /data/misc/user +64772 491 -1 /data/misc/user/0 +64772 53 -1 /data/misc/media +64772 54 -1 /data/misc/audioserver +64772 55 -1 /data/misc/cameraserver +64772 56 -1 /data/misc/vold +64772 116 -1 /data/misc/vold/user_keys +64772 117 -1 /data/misc/vold/user_keys/ce +64772 119 -1 /data/misc/vold/user_keys/ce/0 +64772 120 -1 /data/misc/vold/user_keys/ce/0/current +64772 121 -1 /data/misc/vold/user_keys/ce/0/current/version +64772 122 -1 /data/misc/vold/user_keys/ce/0/current/secdiscardable +64772 123 -1 /data/misc/vold/user_keys/ce/0/current/stretching +64772 124 -1 /data/misc/vold/user_keys/ce/0/current/keymaster_key_blob +64772 125 -1 /data/misc/vold/user_keys/ce/0/current/encrypted_key +64772 118 -1 /data/misc/vold/user_keys/de +64772 126 -1 /data/misc/vold/user_keys/de/0 +64772 127 -1 /data/misc/vold/user_keys/de/0/version +64772 128 -1 /data/misc/vold/user_keys/de/0/secdiscardable +64772 129 -1 /data/misc/vold/user_keys/de/0/stretching +64772 130 -1 /data/misc/vold/user_keys/de/0/keymaster_key_blob +64772 131 -1 /data/misc/vold/user_keys/de/0/encrypted_key +64772 57 -1 /data/misc/boottrace +64772 58 -1 /data/misc/update_engine +64772 626 -1 /data/misc/update_engine/prefs +64772 627 -1 /data/misc/update_engine/prefs/boot-id +64772 628 -1 /data/misc/update_engine/prefs/previous-version +64772 2187 -1 /data/misc/update_engine/prefs/update-state-next-operation +64772 2188 -1 /data/misc/update_engine/prefs/update-state-next-data-offset +64772 2189 -1 /data/misc/update_engine/prefs/update-state-next-data-length +64772 2190 -1 /data/misc/update_engine/prefs/update-state-sha-256-context +64772 2194 -1 /data/misc/update_engine/prefs/update-state-signed-sha-256-context +64772 2195 -1 /data/misc/update_engine/prefs/update-state-signature-blob +64772 2487 -1 /data/misc/update_engine/prefs/manifest-metadata-size +64772 2488 -1 /data/misc/update_engine/prefs/manifest-signature-size +64772 2489 -1 /data/misc/update_engine/prefs/resumed-update-failures +64772 59 -1 /data/misc/update_engine_log +64772 617 -1 /data/misc/update_engine_log/update_engine.20191013-225155 +64772 2185 -1 /data/misc/update_engine_log/update_engine.20191013-225609 +64772 6568 -1 /data/misc/update_engine_log/update_engine.20191013-225834 +64772 60 -1 /data/misc/trace +64772 61 -1 /data/misc/wmtrace +64772 62 -1 /data/misc/profiles +64772 63 -1 /data/misc/profiles/cur +64772 133 -1 /data/misc/profiles/cur/0 +64772 1667 -1 /data/misc/profiles/cur/0/com.android.providers.telephony +64772 1669 -1 /data/misc/profiles/cur/0/com.android.providers.telephony/primary.prof +64772 1673 -1 /data/misc/profiles/cur/0/com.quicinc.cne.CNEService +64772 1675 -1 /data/misc/profiles/cur/0/com.quicinc.cne.CNEService/primary.prof +64772 1679 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.uceShimService +64772 1681 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.uceShimService/primary.prof +64772 1685 -1 /data/misc/profiles/cur/0/com.android.mms.service +64772 1687 -1 /data/misc/profiles/cur/0/com.android.mms.service/primary.prof +64772 1691 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.telephonyservice +64772 1693 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.telephonyservice/primary.prof +64772 1697 -1 /data/misc/profiles/cur/0/android +64772 1702 -1 /data/misc/profiles/cur/0/com.android.ons +64772 1704 -1 /data/misc/profiles/cur/0/com.android.ons/primary.prof +64772 1708 -1 /data/misc/profiles/cur/0/org.codeaurora.ims +64772 1710 -1 /data/misc/profiles/cur/0/org.codeaurora.ims/primary.prof +64772 1714 -1 /data/misc/profiles/cur/0/com.qualcomm.qcrilmsgtunnel +64772 1716 -1 /data/misc/profiles/cur/0/com.qualcomm.qcrilmsgtunnel/primary.prof +64772 1720 -1 /data/misc/profiles/cur/0/com.android.providers.settings +64772 1722 -1 /data/misc/profiles/cur/0/com.android.providers.settings/primary.prof +64772 1726 -1 /data/misc/profiles/cur/0/com.android.inputdevices +64772 1728 -1 /data/misc/profiles/cur/0/com.android.inputdevices/primary.prof +64772 3787 -1 /data/misc/profiles/cur/0/com.google.android.ext.services +64772 3789 -1 /data/misc/profiles/cur/0/com.google.android.ext.services/primary.prof +64772 1744 -1 /data/misc/profiles/cur/0/com.android.server.telecom +64772 1746 -1 /data/misc/profiles/cur/0/com.android.server.telecom/primary.prof +64772 1750 -1 /data/misc/profiles/cur/0/com.android.service.ims +64772 1752 -1 /data/misc/profiles/cur/0/com.android.service.ims/primary.prof +64772 3793 -1 /data/misc/profiles/cur/0/com.google.android.ext.shared +64772 3795 -1 /data/misc/profiles/cur/0/com.google.android.ext.shared/primary.prof +64772 3856 -1 /data/misc/profiles/cur/0/com.vzw.apnlib +64772 3858 -1 /data/misc/profiles/cur/0/com.vzw.apnlib/primary.prof +64772 1768 -1 /data/misc/profiles/cur/0/com.android.proxyhandler +64772 1770 -1 /data/misc/profiles/cur/0/com.android.proxyhandler/primary.prof +64772 3799 -1 /data/misc/profiles/cur/0/com.google.android.grilservice +64772 3801 -1 /data/misc/profiles/cur/0/com.google.android.grilservice/primary.prof +64772 1780 -1 /data/misc/profiles/cur/0/com.android.service.ims.presence +64772 1782 -1 /data/misc/profiles/cur/0/com.android.service.ims.presence/primary.prof +64772 1786 -1 /data/misc/profiles/cur/0/com.android.settings +64772 1788 -1 /data/misc/profiles/cur/0/com.android.settings/primary.prof +64772 1792 -1 /data/misc/profiles/cur/0/com.android.phone +64772 1794 -1 /data/misc/profiles/cur/0/com.android.phone/primary.prof +64772 1798 -1 /data/misc/profiles/cur/0/com.android.shell +64772 1800 -1 /data/misc/profiles/cur/0/com.android.shell/primary.prof +64772 1804 -1 /data/misc/profiles/cur/0/com.android.location.fused +64772 1806 -1 /data/misc/profiles/cur/0/com.android.location.fused/primary.prof +64772 1810 -1 /data/misc/profiles/cur/0/com.android.systemui +64772 1812 -1 /data/misc/profiles/cur/0/com.android.systemui/primary.prof +64772 3811 -1 /data/misc/profiles/cur/0/com.google.android.dialer +64772 3813 -1 /data/misc/profiles/cur/0/com.google.android.dialer/primary.prof +64772 1827 -1 /data/misc/profiles/cur/0/com.android.internal.display.cutout.emulation.noCutout +64772 1832 -1 /data/misc/profiles/cur/0/com.android.cts.priv.ctsshim +64772 1837 -1 /data/misc/profiles/cur/0/com.android.internal.display.cutout.emulation.corner +64772 1842 -1 /data/misc/profiles/cur/0/com.android.internal.display.cutout.emulation.double +64772 1847 -1 /data/misc/profiles/cur/0/com.android.dynsystem +64772 1849 -1 /data/misc/profiles/cur/0/com.android.dynsystem/primary.prof +64772 1853 -1 /data/misc/profiles/cur/0/com.android.providers.calendar +64772 1855 -1 /data/misc/profiles/cur/0/com.android.providers.calendar/primary.prof +64772 1859 -1 /data/misc/profiles/cur/0/com.android.providers.media +64772 1861 -1 /data/misc/profiles/cur/0/com.android.providers.media/primary.prof +64772 1865 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.gestural_wide_back +64772 3817 -1 /data/misc/profiles/cur/0/com.android.server.wifistack +64772 3819 -1 /data/misc/profiles/cur/0/com.android.server.wifistack/primary.prof +64772 1876 -1 /data/misc/profiles/cur/0/com.android.theme.color.cinnamon +64772 1881 -1 /data/misc/profiles/cur/0/com.android.server.backup.encryption +64772 1883 -1 /data/misc/profiles/cur/0/com.android.server.backup.encryption/primary.prof +64772 1887 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.systemui +64772 3838 -1 /data/misc/profiles/cur/0/com.google.omadm.trigger +64772 3840 -1 /data/misc/profiles/cur/0/com.google.omadm.trigger/primary.prof +64772 1898 -1 /data/misc/profiles/cur/0/com.android.externalstorage +64772 1900 -1 /data/misc/profiles/cur/0/com.android.externalstorage/primary.prof +64772 1904 -1 /data/misc/profiles/cur/0/com.qualcomm.uimremoteclient +64772 1906 -1 /data/misc/profiles/cur/0/com.qualcomm.uimremoteclient/primary.prof +64772 1910 -1 /data/misc/profiles/cur/0/com.android.htmlviewer +64772 1912 -1 /data/misc/profiles/cur/0/com.android.htmlviewer/primary.prof +64772 1916 -1 /data/misc/profiles/cur/0/com.android.companiondevicemanager +64772 1918 -1 /data/misc/profiles/cur/0/com.android.companiondevicemanager/primary.prof +64772 3805 -1 /data/misc/profiles/cur/0/com.google.android.permissioncontroller +64772 3807 -1 /data/misc/profiles/cur/0/com.google.android.permissioncontroller/primary.prof +64772 3823 -1 /data/misc/profiles/cur/0/com.google.android.documentsui +64772 3825 -1 /data/misc/profiles/cur/0/com.google.android.documentsui/primary.prof +64772 3892 -1 /data/misc/profiles/cur/0/com.qualcomm.ltebc_vzw +64772 3894 -1 /data/misc/profiles/cur/0/com.qualcomm.ltebc_vzw/primary.prof +64772 1940 -1 /data/misc/profiles/cur/0/com.android.providers.downloads +64772 1942 -1 /data/misc/profiles/cur/0/com.android.providers.downloads/primary.prof +64772 3904 -1 /data/misc/profiles/cur/0/com.google.euiccpixel +64772 3906 -1 /data/misc/profiles/cur/0/com.google.euiccpixel/primary.prof +64772 1952 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.android +64772 1957 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.themepicker +64772 1962 -1 /data/misc/profiles/cur/0/com.qualcomm.uimremoteserver +64772 1964 -1 /data/misc/profiles/cur/0/com.qualcomm.uimremoteserver/primary.prof +64772 1968 -1 /data/misc/profiles/cur/0/com.android.timezone.updater +64772 1970 -1 /data/misc/profiles/cur/0/com.android.timezone.updater/primary.prof +64772 1974 -1 /data/misc/profiles/cur/0/com.android.providers.downloads.ui +64772 1976 -1 /data/misc/profiles/cur/0/com.android.providers.downloads.ui/primary.prof +64772 1980 -1 /data/misc/profiles/cur/0/com.android.pacprocessor +64772 1982 -1 /data/misc/profiles/cur/0/com.android.pacprocessor/primary.prof +64772 1986 -1 /data/misc/profiles/cur/0/com.android.simappdialog +64772 1988 -1 /data/misc/profiles/cur/0/com.android.simappdialog/primary.prof +64772 3963 -1 /data/misc/profiles/cur/0/com.breel.wallpapers18 +64772 3965 -1 /data/misc/profiles/cur/0/com.breel.wallpapers18/primary.prof +64772 1998 -1 /data/misc/profiles/cur/0/com.android.internal.display.cutout.emulation.tall +64772 3844 -1 /data/misc/profiles/cur/0/com.google.android.carriersetup +64772 3846 -1 /data/misc/profiles/cur/0/com.google.android.carriersetup/primary.prof +64772 2008 -1 /data/misc/profiles/cur/0/com.android.certinstaller +64772 2010 -1 /data/misc/profiles/cur/0/com.android.certinstaller/primary.prof +64772 2014 -1 /data/misc/profiles/cur/0/com.android.theme.color.black +64772 3850 -1 /data/misc/profiles/cur/0/com.google.android.youtube +64772 3852 -1 /data/misc/profiles/cur/0/com.google.android.youtube/primary.prof +64772 2025 -1 /data/misc/profiles/cur/0/com.android.theme.color.green +64772 2030 -1 /data/misc/profiles/cur/0/com.android.theme.color.ocean +64772 2035 -1 /data/misc/profiles/cur/0/com.android.theme.color.space +64772 2040 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.threebutton +64772 2045 -1 /data/misc/profiles/cur/0/com.qti.qualcomm.datastatusnotification +64772 2047 -1 /data/misc/profiles/cur/0/com.qti.qualcomm.datastatusnotification/primary.prof +64772 3829 -1 /data/misc/profiles/cur/0/com.google.android.inputmethod.latin +64772 3831 -1 /data/misc/profiles/cur/0/com.google.android.inputmethod.latin/primary.prof +64772 2063 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.launcher +64772 2068 -1 /data/misc/profiles/cur/0/com.android.egg +64772 2070 -1 /data/misc/profiles/cur/0/com.android.egg/primary.prof +64772 2074 -1 /data/misc/profiles/cur/0/com.android.mtp +64772 2076 -1 /data/misc/profiles/cur/0/com.android.mtp/primary.prof +64772 2080 -1 /data/misc/profiles/cur/0/com.android.nfc +64772 2082 -1 /data/misc/profiles/cur/0/com.android.nfc/primary.prof +64772 2086 -1 /data/misc/profiles/cur/0/com.android.stk +64772 2088 -1 /data/misc/profiles/cur/0/com.android.stk/primary.prof +64772 3993 -1 /data/misc/profiles/cur/0/com.google.ar.core +64772 3995 -1 /data/misc/profiles/cur/0/com.google.ar.core/primary.prof +64772 2098 -1 /data/misc/profiles/cur/0/com.android.backupconfirm +64772 2100 -1 /data/misc/profiles/cur/0/com.android.backupconfirm/primary.prof +64772 3862 -1 /data/misc/profiles/cur/0/com.google.android.overlay.pixelconfig2018 +64772 3864 -1 /data/misc/profiles/cur/0/com.google.android.overlay.pixelconfig2018/primary.prof +64772 2111 -1 /data/misc/profiles/cur/0/com.android.systemui.auto_generated_rro_vendor__ +64772 2113 -1 /data/misc/profiles/cur/0/com.android.systemui.auto_generated_rro_vendor__/primary.prof +64772 2117 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.twobutton +64772 3999 -1 /data/misc/profiles/cur/0/com.android.vending +64772 4001 -1 /data/misc/profiles/cur/0/com.android.vending/primary.prof +64772 2128 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.radioconfiginterface +64772 2130 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.radioconfiginterface/primary.prof +64772 2134 -1 /data/misc/profiles/cur/0/com.android.statementservice +64772 2136 -1 /data/misc/profiles/cur/0/com.android.statementservice/primary.prof +64772 2140 -1 /data/misc/profiles/cur/0/com.android.hotspot2 +64772 2142 -1 /data/misc/profiles/cur/0/com.android.hotspot2/primary.prof +64772 3868 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.connmo +64772 3870 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.connmo/primary.prof +64772 2159 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.gestural_extra_wide_back +64772 2164 -1 /data/misc/profiles/cur/0/com.android.sharedstoragebackup +64772 2166 -1 /data/misc/profiles/cur/0/com.android.sharedstoragebackup/primary.prof +64772 2170 -1 /data/misc/profiles/cur/0/com.android.printspooler +64772 2172 -1 /data/misc/profiles/cur/0/com.android.printspooler/primary.prof +64772 2176 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.settings +64772 3874 -1 /data/misc/profiles/cur/0/com.google.android.googlequicksearchbox +64772 3876 -1 /data/misc/profiles/cur/0/com.google.android.googlequicksearchbox/primary.prof +64772 3940 -1 /data/misc/profiles/cur/0/com.verizon.obdm_permissions +64772 2200 -1 /data/misc/profiles/cur/0/com.android.dreams.basic +64772 2202 -1 /data/misc/profiles/cur/0/com.android.dreams.basic/primary.prof +64772 4040 -1 /data/misc/profiles/cur/0/com.google.android.as +64772 4042 -1 /data/misc/profiles/cur/0/com.google.android.as/primary.prof +64772 2212 -1 /data/misc/profiles/cur/0/com.android.se +64772 2214 -1 /data/misc/profiles/cur/0/com.android.se/primary.prof +64772 2219 -1 /data/misc/profiles/cur/0/com.android.bips +64772 2221 -1 /data/misc/profiles/cur/0/com.android.bips/primary.prof +64772 2225 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.settings +64772 2230 -1 /data/misc/profiles/cur/0/com.qti.xdivert +64772 2232 -1 /data/misc/profiles/cur/0/com.qti.xdivert/primary.prof +64772 2236 -1 /data/misc/profiles/cur/0/com.android.musicfx +64772 2238 -1 /data/misc/profiles/cur/0/com.android.musicfx/primary.prof +64772 2242 -1 /data/misc/profiles/cur/0/com.android.bluetooth.auto_generated_rro_vendor__ +64772 2244 -1 /data/misc/profiles/cur/0/com.android.bluetooth.auto_generated_rro_vendor__/primary.prof +64772 2248 -1 /data/misc/profiles/cur/0/com.android.cellbroadcastreceiver +64772 2250 -1 /data/misc/profiles/cur/0/com.android.cellbroadcastreceiver/primary.prof +64772 2254 -1 /data/misc/profiles/cur/0/android.telephony.overlay.cmcc +64772 2256 -1 /data/misc/profiles/cur/0/android.telephony.overlay.cmcc/primary.prof +64772 2261 -1 /data/misc/profiles/cur/0/com.android.theme.icon.teardrop +64772 3957 -1 /data/misc/profiles/cur/0/com.google.android.soundpicker +64772 3959 -1 /data/misc/profiles/cur/0/com.google.android.soundpicker/primary.prof +64772 2272 -1 /data/misc/profiles/cur/0/com.android.keychain +64772 2274 -1 /data/misc/profiles/cur/0/com.android.keychain/primary.prof +64772 3886 -1 /data/misc/profiles/cur/0/com.google.android.onetimeinitializer +64772 3888 -1 /data/misc/profiles/cur/0/com.google.android.onetimeinitializer/primary.prof +64772 4046 -1 /data/misc/profiles/cur/0/com.google.android.gm +64772 4048 -1 /data/misc/profiles/cur/0/com.google.android.gm/primary.prof +64772 2296 -1 /data/misc/profiles/cur/0/com.android.calllogbackup +64772 2298 -1 /data/misc/profiles/cur/0/com.android.calllogbackup/primary.prof +64772 2291 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.systemui +64772 2302 -1 /data/misc/profiles/cur/0/com.android.safetyregulatoryinfo +64772 2304 -1 /data/misc/profiles/cur/0/com.android.safetyregulatoryinfo/primary.prof +64772 2331 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.android +64772 2354 -1 /data/misc/profiles/cur/0/com.android.soundpicker +64772 2356 -1 /data/misc/profiles/cur/0/com.android.soundpicker/primary.prof +64772 3898 -1 /data/misc/profiles/cur/0/com.google.android.apps.diagnosticstool +64772 3900 -1 /data/misc/profiles/cur/0/com.google.android.apps.diagnosticstool/primary.prof +64772 3975 -1 /data/misc/profiles/cur/0/com.google.android.configupdater +64772 3977 -1 /data/misc/profiles/cur/0/com.google.android.configupdater/primary.prof +64772 2372 -1 /data/misc/profiles/cur/0/com.android.providers.partnerbookmarks +64772 2374 -1 /data/misc/profiles/cur/0/com.android.providers.partnerbookmarks/primary.prof +64772 4064 -1 /data/misc/profiles/cur/0/com.android.ramdump +64772 4066 -1 /data/misc/profiles/cur/0/com.android.ramdump/primary.prof +64772 2448 -1 /data/misc/profiles/cur/0/com.qti.diagservices +64772 2450 -1 /data/misc/profiles/cur/0/com.qti.diagservices/primary.prof +64772 2460 -1 /data/misc/profiles/cur/0/com.android.vpndialogs +64772 2462 -1 /data/misc/profiles/cur/0/com.android.vpndialogs/primary.prof +64772 4100 -1 /data/misc/profiles/cur/0/com.google.android.angle +64772 4102 -1 /data/misc/profiles/cur/0/com.google.android.angle/primary.prof +64772 2472 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.themepicker +64772 2484 -1 /data/misc/profiles/cur/0/com.android.providers.blockednumber +64772 2486 -1 /data/misc/profiles/cur/0/com.android.providers.blockednumber/primary.prof +64772 2496 -1 /data/misc/profiles/cur/0/com.android.providers.userdictionary +64772 2498 -1 /data/misc/profiles/cur/0/com.android.providers.userdictionary/primary.prof +64772 4112 -1 /data/misc/profiles/cur/0/com.google.android.music +64772 4114 -1 /data/misc/profiles/cur/0/com.google.android.music/primary.prof +64772 2525 -1 /data/misc/profiles/cur/0/com.android.theme.color.purple +64772 2530 -1 /data/misc/profiles/cur/0/com.android.bluetoothmidiservice +64772 2532 -1 /data/misc/profiles/cur/0/com.android.bluetoothmidiservice/primary.prof +64772 2536 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.confdialer +64772 2538 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.confdialer/primary.prof +64772 2542 -1 /data/misc/profiles/cur/0/com.android.traceur +64772 2544 -1 /data/misc/profiles/cur/0/com.android.traceur/primary.prof +64772 2553 -1 /data/misc/profiles/cur/0/com.android.bluetooth +64772 2555 -1 /data/misc/profiles/cur/0/com.android.bluetooth/primary.prof +64772 2566 -1 /data/misc/profiles/cur/0/com.qualcomm.atfwd +64772 2568 -1 /data/misc/profiles/cur/0/com.qualcomm.atfwd/primary.prof +64772 4034 -1 /data/misc/profiles/cur/0/com.google.android.deskclock +64772 4036 -1 /data/misc/profiles/cur/0/com.google.android.deskclock/primary.prof +64772 2579 -1 /data/misc/profiles/cur/0/com.qualcomm.embms +64772 2581 -1 /data/misc/profiles/cur/0/com.qualcomm.embms/primary.prof +64772 2585 -1 /data/misc/profiles/cur/0/com.android.providers.contacts +64772 2587 -1 /data/misc/profiles/cur/0/com.android.providers.contacts/primary.prof +64772 2607 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.settings +64772 3945 -1 /data/misc/profiles/cur/0/com.android.systemui.auto_generated_rro_product__ +64772 3947 -1 /data/misc/profiles/cur/0/com.android.systemui.auto_generated_rro_product__/primary.prof +64772 3951 -1 /data/misc/profiles/cur/0/com.google.android.apps.messaging +64772 3953 -1 /data/misc/profiles/cur/0/com.google.android.apps.messaging/primary.prof +64772 3981 -1 /data/misc/profiles/cur/0/com.google.android.overlay.googlewebview +64772 3983 -1 /data/misc/profiles/cur/0/com.google.android.overlay.googlewebview/primary.prof +64772 3987 -1 /data/misc/profiles/cur/0/com.google.android.apps.safetyhub +64772 3989 -1 /data/misc/profiles/cur/0/com.google.android.apps.safetyhub/primary.prof +64772 4011 -1 /data/misc/profiles/cur/0/com.google.android.apps.work.oobconfig +64772 4013 -1 /data/misc/profiles/cur/0/com.google.android.apps.work.oobconfig/primary.prof +64772 4017 -1 /data/misc/profiles/cur/0/com.android.hotwordenrollment.xgoogle +64772 4019 -1 /data/misc/profiles/cur/0/com.android.hotwordenrollment.xgoogle/primary.prof +64772 4052 -1 /data/misc/profiles/cur/0/com.google.android.carrier +64772 4054 -1 /data/misc/profiles/cur/0/com.google.android.carrier/primary.prof +64772 4070 -1 /data/misc/profiles/cur/0/com.google.intelligence.sense +64772 4072 -1 /data/misc/profiles/cur/0/com.google.intelligence.sense/primary.prof +64772 4082 -1 /data/misc/profiles/cur/0/com.google.android.netgrapher +64772 4084 -1 /data/misc/profiles/cur/0/com.google.android.netgrapher/primary.prof +64772 4118 -1 /data/misc/profiles/cur/0/com.google.android.volta +64772 4120 -1 /data/misc/profiles/cur/0/com.google.android.volta/primary.prof +64772 4124 -1 /data/misc/profiles/cur/0/com.android.hotwordenrollment.okgoogle +64772 4126 -1 /data/misc/profiles/cur/0/com.android.hotwordenrollment.okgoogle/primary.prof +64772 4130 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.diagmon +64772 4132 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.diagmon/primary.prof +64772 4160 -1 /data/misc/profiles/cur/0/com.google.android.apps.wellbeing +64772 4162 -1 /data/misc/profiles/cur/0/com.google.android.apps.wellbeing/primary.prof +64772 4178 -1 /data/misc/profiles/cur/0/com.google.android.accessibility.soundamplifier +64772 4180 -1 /data/misc/profiles/cur/0/com.google.android.accessibility.soundamplifier/primary.prof +64772 4184 -1 /data/misc/profiles/cur/0/com.google.mds.permissions +64772 4186 -1 /data/misc/profiles/cur/0/com.google.mds.permissions/primary.prof +64772 4190 -1 /data/misc/profiles/cur/0/com.google.android.apps.docs +64772 4192 -1 /data/misc/profiles/cur/0/com.google.android.apps.docs/primary.prof +64772 4202 -1 /data/misc/profiles/cur/0/com.google.android.apps.tips +64772 4204 -1 /data/misc/profiles/cur/0/com.google.android.apps.tips/primary.prof +64772 4213 -1 /data/misc/profiles/cur/0/com.google.android.modulemetadata +64772 4218 -1 /data/misc/profiles/cur/0/com.google.android.markup +64772 4220 -1 /data/misc/profiles/cur/0/com.google.android.markup/primary.prof +64772 4230 -1 /data/misc/profiles/cur/0/com.google.android.apps.carrier.log +64772 4232 -1 /data/misc/profiles/cur/0/com.google.android.apps.carrier.log/primary.prof +64772 4236 -1 /data/misc/profiles/cur/0/com.google.android.networkstack +64772 4238 -1 /data/misc/profiles/cur/0/com.google.android.networkstack/primary.prof +64772 4242 -1 /data/misc/profiles/cur/0/com.google.android.contacts +64772 4244 -1 /data/misc/profiles/cur/0/com.google.android.contacts/primary.prof +64772 4248 -1 /data/misc/profiles/cur/0/com.google.android.syncadapters.contacts +64772 4250 -1 /data/misc/profiles/cur/0/com.google.android.syncadapters.contacts/primary.prof +64772 4254 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.rounded.themepicker +64772 4259 -1 /data/misc/profiles/cur/0/com.android.server.telecom.auto_generated_rro_product__ +64772 4261 -1 /data/misc/profiles/cur/0/com.android.server.telecom.auto_generated_rro_product__/primary.prof +64772 4277 -1 /data/misc/profiles/cur/0/com.android.chrome +64772 4279 -1 /data/misc/profiles/cur/0/com.android.chrome/primary.prof +64772 4283 -1 /data/misc/profiles/cur/0/com.android.bips.auto_generated_rro_product__ +64772 4285 -1 /data/misc/profiles/cur/0/com.android.bips.auto_generated_rro_product__/primary.prof +64772 4300 -1 /data/misc/profiles/cur/0/com.google.android.gms +64772 4302 -1 /data/misc/profiles/cur/0/com.google.android.gms/primary.prof +64772 4325 -1 /data/misc/profiles/cur/0/com.google.android.tts +64772 4327 -1 /data/misc/profiles/cur/0/com.google.android.tts/primary.prof +64772 4343 -1 /data/misc/profiles/cur/0/com.google.android.apps.wallpaper.nexus +64772 4354 -1 /data/misc/profiles/cur/0/com.google.android.apps.nexuslauncher +64772 4356 -1 /data/misc/profiles/cur/0/com.google.android.apps.nexuslauncher/primary.prof +64772 4360 -1 /data/misc/profiles/cur/0/com.google.RilConfigService +64772 4362 -1 /data/misc/profiles/cur/0/com.google.RilConfigService/primary.prof +64772 4366 -1 /data/misc/profiles/cur/0/com.google.SSRestartDetector +64772 4368 -1 /data/misc/profiles/cur/0/com.google.SSRestartDetector/primary.prof +64772 4383 -1 /data/misc/profiles/cur/0/com.android.theme.font.rubikrubik +64772 4388 -1 /data/misc/profiles/cur/0/com.android.providers.contacts.auto_generated_rro_product__ +64772 4390 -1 /data/misc/profiles/cur/0/com.android.providers.contacts.auto_generated_rro_product__/primary.prof +64772 4394 -1 /data/misc/profiles/cur/0/com.google.android.feedback +64772 4396 -1 /data/misc/profiles/cur/0/com.google.android.feedback/primary.prof +64772 4400 -1 /data/misc/profiles/cur/0/com.google.android.printservice.recommendation +64772 4402 -1 /data/misc/profiles/cur/0/com.google.android.printservice.recommendation/primary.prof +64772 4412 -1 /data/misc/profiles/cur/0/com.google.android.calendar +64772 4414 -1 /data/misc/profiles/cur/0/com.google.android.calendar/primary.prof +64772 4418 -1 /data/misc/profiles/cur/0/com.google.android.apps.internal.betterbug +64772 4420 -1 /data/misc/profiles/cur/0/com.google.android.apps.internal.betterbug/primary.prof +64772 4436 -1 /data/misc/profiles/cur/0/com.android.server.wifistack.permissionconfig +64772 4446 -1 /data/misc/profiles/cur/0/com.google.android.networkstack.permissionconfig +64772 4448 -1 /data/misc/profiles/cur/0/com.google.android.networkstack.permissionconfig/primary.prof +64772 4452 -1 /data/misc/profiles/cur/0/com.google.android.overlay.pixelconfigcommon +64772 4454 -1 /data/misc/profiles/cur/0/com.google.android.overlay.pixelconfigcommon/primary.prof +64772 4470 -1 /data/misc/profiles/cur/0/com.google.android.settings.intelligence +64772 4472 -1 /data/misc/profiles/cur/0/com.google.android.settings.intelligence/primary.prof +64772 4494 -1 /data/misc/profiles/cur/0/com.google.android.apps.turbo +64772 4496 -1 /data/misc/profiles/cur/0/com.google.android.apps.turbo/primary.prof +64772 4519 -1 /data/misc/profiles/cur/0/com.google.android.apps.dreamliner +64772 4521 -1 /data/misc/profiles/cur/0/com.google.android.apps.dreamliner/primary.prof +64772 4525 -1 /data/misc/profiles/cur/0/com.google.android.apps.wearables.maestro.companion +64772 4527 -1 /data/misc/profiles/cur/0/com.google.android.apps.wearables.maestro.companion/primary.prof +64772 4531 -1 /data/misc/profiles/cur/0/com.google.android.hiddenmenu +64772 4533 -1 /data/misc/profiles/cur/0/com.google.android.hiddenmenu/primary.prof +64772 4537 -1 /data/misc/profiles/cur/0/com.google.android.apps.wallpaper +64772 4539 -1 /data/misc/profiles/cur/0/com.google.android.apps.wallpaper/primary.prof +64772 4569 -1 /data/misc/profiles/cur/0/com.google.android.gms.location.history +64772 4571 -1 /data/misc/profiles/cur/0/com.google.android.gms.location.history/primary.prof +64772 4587 -1 /data/misc/profiles/cur/0/com.qti.ltebc +64772 4589 -1 /data/misc/profiles/cur/0/com.qti.ltebc/primary.prof +64772 4599 -1 /data/misc/profiles/cur/0/com.tmobile.planprovider +64772 4601 -1 /data/misc/profiles/cur/0/com.tmobile.planprovider/primary.prof +64772 4605 -1 /data/misc/profiles/cur/0/com.google.android.apps.helprtc +64772 4607 -1 /data/misc/profiles/cur/0/com.google.android.apps.helprtc/primary.prof +64772 4647 -1 /data/misc/profiles/cur/0/com.google.android.GoogleCamera +64772 4649 -1 /data/misc/profiles/cur/0/com.google.android.GoogleCamera/primary.prof +64772 4677 -1 /data/misc/profiles/cur/0/com.google.android.storagemanager +64772 4679 -1 /data/misc/profiles/cur/0/com.google.android.storagemanager/primary.prof +64772 2308 -1 /data/misc/profiles/cur/0/com.android.localtransport +64772 2310 -1 /data/misc/profiles/cur/0/com.android.localtransport/primary.prof +64772 4029 -1 /data/misc/profiles/cur/0/com.android.theme.font.arvolato +64772 2320 -1 /data/misc/profiles/cur/0/com.android.carrierdefaultapp +64772 2322 -1 /data/misc/profiles/cur/0/com.android.carrierdefaultapp/primary.prof +64772 3934 -1 /data/misc/profiles/cur/0/com.google.android.connectivitymonitor +64772 3936 -1 /data/misc/profiles/cur/0/com.google.android.connectivitymonitor/primary.prof +64772 2337 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.systemui +64772 4058 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.sprintdm +64772 4060 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.sprintdm/primary.prof +64772 2348 -1 /data/misc/profiles/cur/0/com.android.managedprovisioning +64772 2350 -1 /data/misc/profiles/cur/0/com.android.managedprovisioning/primary.prof +64772 4088 -1 /data/misc/profiles/cur/0/com.verizon.services +64772 4090 -1 /data/misc/profiles/cur/0/com.verizon.services/primary.prof +64772 2384 -1 /data/misc/profiles/cur/0/com.android.wallpaper.livepicker +64772 2386 -1 /data/misc/profiles/cur/0/com.android.wallpaper.livepicker/primary.prof +64772 2390 -1 /data/misc/profiles/cur/0/com.android.phone.auto_generated_rro_vendor__ +64772 2392 -1 /data/misc/profiles/cur/0/com.android.phone.auto_generated_rro_vendor__/primary.prof +64772 2402 -1 /data/misc/profiles/cur/0/com.android.theme.icon.squircle +64772 4076 -1 /data/misc/profiles/cur/0/com.google.android.setupwizard +64772 4078 -1 /data/misc/profiles/cur/0/com.google.android.setupwizard/primary.prof +64772 2414 -1 /data/misc/profiles/cur/0/com.android.bookmarkprovider +64772 2416 -1 /data/misc/profiles/cur/0/com.android.bookmarkprovider/primary.prof +64772 2420 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.filled.launcher +64772 3910 -1 /data/misc/profiles/cur/0/com.google.android.trichromelibrary_386509238 +64772 3912 -1 /data/misc/profiles/cur/0/com.google.android.trichromelibrary_386509238/primary.prof +64772 2431 -1 /data/misc/profiles/cur/0/com.android.cts.ctsshim +64772 2436 -1 /data/misc/profiles/cur/0/com.android.nfc.auto_generated_rro_vendor__ +64772 2438 -1 /data/misc/profiles/cur/0/com.android.nfc.auto_generated_rro_vendor__/primary.prof +64772 2442 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.launcher +64772 2454 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.services.secureui +64772 2456 -1 /data/misc/profiles/cur/0/com.qualcomm.qti.services.secureui/primary.prof +64772 2477 -1 /data/misc/profiles/cur/0/com.android.wallpaperbackup +64772 2479 -1 /data/misc/profiles/cur/0/com.android.wallpaperbackup/primary.prof +64772 4106 -1 /data/misc/profiles/cur/0/com.google.android.euicc +64772 4108 -1 /data/misc/profiles/cur/0/com.google.android.euicc/primary.prof +64772 2502 -1 /data/misc/profiles/cur/0/com.android.emergency +64772 2504 -1 /data/misc/profiles/cur/0/com.android.emergency/primary.prof +64772 2508 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.gestural +64772 2513 -1 /data/misc/profiles/cur/0/com.android.theme.color.orchid +64772 2548 -1 /data/misc/profiles/cur/0/com.google.pixel.crosshatch.gamedriver +64772 2560 -1 /data/misc/profiles/cur/0/com.qualcomm.timeservice +64772 2562 -1 /data/misc/profiles/cur/0/com.qualcomm.timeservice/primary.prof +64772 2597 -1 /data/misc/profiles/cur/0/com.android.theme.icon.roundedrect +64772 2602 -1 /data/misc/profiles/cur/0/com.android.internal.systemui.navbar.gestural_narrow_back +64772 2612 -1 /data/misc/profiles/cur/0/android.auto_generated_rro_vendor__ +64772 2614 -1 /data/misc/profiles/cur/0/android.auto_generated_rro_vendor__/primary.prof +64772 2618 -1 /data/misc/profiles/cur/0/com.android.theme.icon_pack.circular.android +64772 3916 -1 /data/misc/profiles/cur/0/com.android.simappdialog.auto_generated_rro_product__ +64772 3918 -1 /data/misc/profiles/cur/0/com.android.simappdialog.auto_generated_rro_product__/primary.prof +64772 3922 -1 /data/misc/profiles/cur/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__ +64772 3924 -1 /data/misc/profiles/cur/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__/primary.prof +64772 3928 -1 /data/misc/profiles/cur/0/com.google.android.apps.enterprise.dmagent +64772 3930 -1 /data/misc/profiles/cur/0/com.google.android.apps.enterprise.dmagent/primary.prof +64772 3969 -1 /data/misc/profiles/cur/0/android.autoinstalls.config.google.nexus +64772 3971 -1 /data/misc/profiles/cur/0/android.autoinstalls.config.google.nexus/primary.prof +64772 4005 -1 /data/misc/profiles/cur/0/com.google.android.marvin.talkback +64772 4007 -1 /data/misc/profiles/cur/0/com.google.android.marvin.talkback/primary.prof +64772 4023 -1 /data/misc/profiles/cur/0/com.google.android.pixel.setupwizard +64772 4025 -1 /data/misc/profiles/cur/0/com.google.android.pixel.setupwizard/primary.prof +64772 4094 -1 /data/misc/profiles/cur/0/com.android.nfc.auto_generated_rro_product__ +64772 4096 -1 /data/misc/profiles/cur/0/com.android.nfc.auto_generated_rro_product__/primary.prof +64772 4154 -1 /data/misc/profiles/cur/0/com.android.providers.settings.auto_generated_rro_product__ +64772 4156 -1 /data/misc/profiles/cur/0/com.android.providers.settings.auto_generated_rro_product__/primary.prof +64772 4166 -1 /data/misc/profiles/cur/0/com.google.audio.hearing.visualization.accessibility.scribe +64772 4168 -1 /data/misc/profiles/cur/0/com.google.audio.hearing.visualization.accessibility.scribe/primary.prof +64772 4172 -1 /data/misc/profiles/cur/0/com.google.android.captiveportallogin +64772 4174 -1 /data/misc/profiles/cur/0/com.google.android.captiveportallogin/primary.prof +64772 4196 -1 /data/misc/profiles/cur/0/com.google.android.apps.maps +64772 4198 -1 /data/misc/profiles/cur/0/com.google.android.apps.maps/primary.prof +64772 4208 -1 /data/misc/profiles/cur/0/com.google.android.documentsui.theme.pixel +64772 4224 -1 /data/misc/profiles/cur/0/com.google.android.webview +64772 4226 -1 /data/misc/profiles/cur/0/com.google.android.webview/primary.prof +64772 4265 -1 /data/misc/profiles/cur/0/com.google.android.overlay.googleconfig +64772 4267 -1 /data/misc/profiles/cur/0/com.google.android.overlay.googleconfig/primary.prof +64772 4271 -1 /data/misc/profiles/cur/0/com.google.android.calculator +64772 4273 -1 /data/misc/profiles/cur/0/com.google.android.calculator/primary.prof +64772 4289 -1 /data/misc/profiles/cur/0/com.google.android.packageinstaller +64772 4291 -1 /data/misc/profiles/cur/0/com.google.android.packageinstaller/primary.prof +64772 4295 -1 /data/misc/profiles/cur/0/com.google.android.apps.customization.pixel +64772 4306 -1 /data/misc/profiles/cur/0/com.google.android.gsf +64772 4308 -1 /data/misc/profiles/cur/0/com.google.android.gsf/primary.prof +64772 4312 -1 /data/misc/profiles/cur/0/com.google.android.ims +64772 4314 -1 /data/misc/profiles/cur/0/com.google.android.ims/primary.prof +64772 4319 -1 /data/misc/profiles/cur/0/com.google.android.tag +64772 4321 -1 /data/misc/profiles/cur/0/com.google.android.tag/primary.prof +64772 4331 -1 /data/misc/profiles/cur/0/com.google.android.overlay.permissioncontroller +64772 4333 -1 /data/misc/profiles/cur/0/com.google.android.overlay.permissioncontroller/primary.prof +64772 4337 -1 /data/misc/profiles/cur/0/com.google.android.partnersetup +64772 4339 -1 /data/misc/profiles/cur/0/com.google.android.partnersetup/primary.prof +64772 4348 -1 /data/misc/profiles/cur/0/com.google.android.videos +64772 4350 -1 /data/misc/profiles/cur/0/com.google.android.videos/primary.prof +64772 4372 -1 /data/misc/profiles/cur/0/com.customermobile.preload.vzw +64772 4374 -1 /data/misc/profiles/cur/0/com.customermobile.preload.vzw/primary.prof +64772 4378 -1 /data/misc/profiles/cur/0/com.android.theme.font.arbutussource +64772 4406 -1 /data/misc/profiles/cur/0/com.google.android.apps.photos +64772 4408 -1 /data/misc/profiles/cur/0/com.google.android.apps.photos/primary.prof +64772 4424 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.dcmo +64772 4426 -1 /data/misc/profiles/cur/0/com.android.sdm.plugins.dcmo/primary.prof +64772 4430 -1 /data/misc/profiles/cur/0/com.android.providers.telephony.auto_generated_rro_product__ +64772 4432 -1 /data/misc/profiles/cur/0/com.android.providers.telephony.auto_generated_rro_product__/primary.prof +64772 4458 -1 /data/misc/profiles/cur/0/com.google.android.wfcactivation +64772 4460 -1 /data/misc/profiles/cur/0/com.google.android.wfcactivation/primary.prof +64772 4464 -1 /data/misc/profiles/cur/0/com.google.android.apps.pixelmigrate +64772 4466 -1 /data/misc/profiles/cur/0/com.google.android.apps.pixelmigrate/primary.prof +64772 4476 -1 /data/misc/profiles/cur/0/com.google.android.projection.gearhead +64772 4478 -1 /data/misc/profiles/cur/0/com.google.android.projection.gearhead/primary.prof +64772 4482 -1 /data/misc/profiles/cur/0/com.verizon.obdm +64772 4484 -1 /data/misc/profiles/cur/0/com.verizon.obdm/primary.prof +64772 4488 -1 /data/misc/profiles/cur/0/com.google.android.apps.scone +64772 4490 -1 /data/misc/profiles/cur/0/com.google.android.apps.scone/primary.prof +64772 4506 -1 /data/misc/profiles/cur/0/com.google.android.tetheringentitlement +64772 4508 -1 /data/misc/profiles/cur/0/com.google.android.tetheringentitlement/primary.prof +64772 4513 -1 /data/misc/profiles/cur/0/com.android.omadm.service +64772 4515 -1 /data/misc/profiles/cur/0/com.android.omadm.service/primary.prof +64772 4543 -1 /data/misc/profiles/cur/0/com.google.googlecbrs +64772 4545 -1 /data/misc/profiles/cur/0/com.google.googlecbrs/primary.prof +64772 4550 -1 /data/misc/profiles/cur/0/com.google.vr.vrcore +64772 4552 -1 /data/misc/profiles/cur/0/com.google.vr.vrcore/primary.prof +64772 4562 -1 /data/misc/profiles/cur/0/com.google.vr.apps.ornament +64772 4564 -1 /data/misc/profiles/cur/0/com.google.vr.apps.ornament/primary.prof +64772 4575 -1 /data/misc/profiles/cur/0/com.android.pixellogger +64772 4577 -1 /data/misc/profiles/cur/0/com.android.pixellogger/primary.prof +64772 4581 -1 /data/misc/profiles/cur/0/com.google.android.hardwareinfo +64772 4583 -1 /data/misc/profiles/cur/0/com.google.android.hardwareinfo/primary.prof +64772 4593 -1 /data/misc/profiles/cur/0/com.google.android.dreamlinerupdater +64772 4595 -1 /data/misc/profiles/cur/0/com.google.android.dreamlinerupdater/primary.prof +64772 4611 -1 /data/misc/profiles/cur/0/qualcomm.com.vzw_msdc_api +64772 4613 -1 /data/misc/profiles/cur/0/qualcomm.com.vzw_msdc_api/primary.prof +64772 4617 -1 /data/misc/profiles/cur/0/com.google.mds +64772 4619 -1 /data/misc/profiles/cur/0/com.google.mds/primary.prof +64772 4623 -1 /data/misc/profiles/cur/0/com.android.phone.auto_generated_rro_product__ +64772 4625 -1 /data/misc/profiles/cur/0/com.android.phone.auto_generated_rro_product__/primary.prof +64772 4629 -1 /data/misc/profiles/cur/0/com.google.android.gms.setup +64772 4631 -1 /data/misc/profiles/cur/0/com.google.android.gms.setup/primary.prof +64772 4635 -1 /data/misc/profiles/cur/0/android.auto_generated_rro_product__ +64772 4637 -1 /data/misc/profiles/cur/0/android.auto_generated_rro_product__/primary.prof +64772 4641 -1 /data/misc/profiles/cur/0/com.google.android.apps.gcs +64772 4643 -1 /data/misc/profiles/cur/0/com.google.android.apps.gcs/primary.prof +64772 4653 -1 /data/misc/profiles/cur/0/com.google.android.vendorloggingservice +64772 4655 -1 /data/misc/profiles/cur/0/com.google.android.vendorloggingservice/primary.prof +64772 4659 -1 /data/misc/profiles/cur/0/com.android.connectivity.metrics +64772 4661 -1 /data/misc/profiles/cur/0/com.android.connectivity.metrics/primary.prof +64772 4665 -1 /data/misc/profiles/cur/0/com.verizon.llkagent +64772 4667 -1 /data/misc/profiles/cur/0/com.verizon.llkagent/primary.prof +64772 4671 -1 /data/misc/profiles/cur/0/com.android.vzwomatrigger +64772 4673 -1 /data/misc/profiles/cur/0/com.android.vzwomatrigger/primary.prof +64772 64 -1 /data/misc/profiles/ref +64772 1668 -1 /data/misc/profiles/ref/com.android.providers.telephony +64772 1674 -1 /data/misc/profiles/ref/com.quicinc.cne.CNEService +64772 7918 -1 /data/misc/profiles/ref/com.quicinc.cne.CNEService/primary.prof +64772 1680 -1 /data/misc/profiles/ref/com.qualcomm.qti.uceShimService +64772 1686 -1 /data/misc/profiles/ref/com.android.mms.service +64772 7993 -1 /data/misc/profiles/ref/com.android.mms.service/primary.prof +64772 1692 -1 /data/misc/profiles/ref/com.qualcomm.qti.telephonyservice +64772 8027 -1 /data/misc/profiles/ref/com.qualcomm.qti.telephonyservice/primary.prof +64772 1698 -1 /data/misc/profiles/ref/android +64772 1703 -1 /data/misc/profiles/ref/com.android.ons +64772 1709 -1 /data/misc/profiles/ref/org.codeaurora.ims +64772 1715 -1 /data/misc/profiles/ref/com.qualcomm.qcrilmsgtunnel +64772 8231 -1 /data/misc/profiles/ref/com.qualcomm.qcrilmsgtunnel/primary.prof +64772 1721 -1 /data/misc/profiles/ref/com.android.providers.settings +64772 8236 -1 /data/misc/profiles/ref/com.android.providers.settings/primary.prof +64772 1727 -1 /data/misc/profiles/ref/com.android.inputdevices +64772 8303 -1 /data/misc/profiles/ref/com.android.inputdevices/primary.prof +64772 3788 -1 /data/misc/profiles/ref/com.google.android.ext.services +64772 7644 -1 /data/misc/profiles/ref/com.google.android.ext.services/primary.prof +64772 1745 -1 /data/misc/profiles/ref/com.android.server.telecom +64772 8400 -1 /data/misc/profiles/ref/com.android.server.telecom/primary.prof +64772 1751 -1 /data/misc/profiles/ref/com.android.service.ims +64772 8409 -1 /data/misc/profiles/ref/com.android.service.ims/primary.prof +64772 3794 -1 /data/misc/profiles/ref/com.google.android.ext.shared +64772 7908 -1 /data/misc/profiles/ref/com.google.android.ext.shared/primary.prof +64772 3857 -1 /data/misc/profiles/ref/com.vzw.apnlib +64772 7638 -1 /data/misc/profiles/ref/com.vzw.apnlib/primary.prof +64772 1769 -1 /data/misc/profiles/ref/com.android.proxyhandler +64772 8680 -1 /data/misc/profiles/ref/com.android.proxyhandler/primary.prof +64772 3800 -1 /data/misc/profiles/ref/com.google.android.grilservice +64772 8142 -1 /data/misc/profiles/ref/com.google.android.grilservice/primary.prof +64772 1781 -1 /data/misc/profiles/ref/com.android.service.ims.presence +64772 1787 -1 /data/misc/profiles/ref/com.android.settings +64772 4739 -1 /data/misc/profiles/ref/com.android.settings/primary.prof +64772 1793 -1 /data/misc/profiles/ref/com.android.phone +64772 8857 -1 /data/misc/profiles/ref/com.android.phone/primary.prof +64772 1799 -1 /data/misc/profiles/ref/com.android.shell +64772 8871 -1 /data/misc/profiles/ref/com.android.shell/primary.prof +64772 1805 -1 /data/misc/profiles/ref/com.android.location.fused +64772 8908 -1 /data/misc/profiles/ref/com.android.location.fused/primary.prof +64772 1811 -1 /data/misc/profiles/ref/com.android.systemui +64772 8909 -1 /data/misc/profiles/ref/com.android.systemui/primary.prof +64772 3812 -1 /data/misc/profiles/ref/com.google.android.dialer +64772 4722 -1 /data/misc/profiles/ref/com.google.android.dialer/primary.prof +64772 1828 -1 /data/misc/profiles/ref/com.android.internal.display.cutout.emulation.noCutout +64772 1833 -1 /data/misc/profiles/ref/com.android.cts.priv.ctsshim +64772 1838 -1 /data/misc/profiles/ref/com.android.internal.display.cutout.emulation.corner +64772 1843 -1 /data/misc/profiles/ref/com.android.internal.display.cutout.emulation.double +64772 1848 -1 /data/misc/profiles/ref/com.android.dynsystem +64772 7847 -1 /data/misc/profiles/ref/com.android.dynsystem/primary.prof +64772 1854 -1 /data/misc/profiles/ref/com.android.providers.calendar +64772 7895 -1 /data/misc/profiles/ref/com.android.providers.calendar/primary.prof +64772 1860 -1 /data/misc/profiles/ref/com.android.providers.media +64772 1866 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.gestural_wide_back +64772 3818 -1 /data/misc/profiles/ref/com.android.server.wifistack +64772 1877 -1 /data/misc/profiles/ref/com.android.theme.color.cinnamon +64772 1882 -1 /data/misc/profiles/ref/com.android.server.backup.encryption +64772 7930 -1 /data/misc/profiles/ref/com.android.server.backup.encryption/primary.prof +64772 1888 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.systemui +64772 3839 -1 /data/misc/profiles/ref/com.google.omadm.trigger +64772 7529 -1 /data/misc/profiles/ref/com.google.omadm.trigger/primary.prof +64772 1899 -1 /data/misc/profiles/ref/com.android.externalstorage +64772 7953 -1 /data/misc/profiles/ref/com.android.externalstorage/primary.prof +64772 1905 -1 /data/misc/profiles/ref/com.qualcomm.uimremoteclient +64772 7964 -1 /data/misc/profiles/ref/com.qualcomm.uimremoteclient/primary.prof +64772 1911 -1 /data/misc/profiles/ref/com.android.htmlviewer +64772 7969 -1 /data/misc/profiles/ref/com.android.htmlviewer/primary.prof +64772 1917 -1 /data/misc/profiles/ref/com.android.companiondevicemanager +64772 7977 -1 /data/misc/profiles/ref/com.android.companiondevicemanager/primary.prof +64772 3806 -1 /data/misc/profiles/ref/com.google.android.permissioncontroller +64772 8210 -1 /data/misc/profiles/ref/com.google.android.permissioncontroller/primary.prof +64772 3824 -1 /data/misc/profiles/ref/com.google.android.documentsui +64772 8728 -1 /data/misc/profiles/ref/com.google.android.documentsui/primary.prof +64772 3893 -1 /data/misc/profiles/ref/com.qualcomm.ltebc_vzw +64772 7913 -1 /data/misc/profiles/ref/com.qualcomm.ltebc_vzw/primary.prof +64772 1941 -1 /data/misc/profiles/ref/com.android.providers.downloads +64772 7998 -1 /data/misc/profiles/ref/com.android.providers.downloads/primary.prof +64772 3905 -1 /data/misc/profiles/ref/com.google.euiccpixel +64772 7935 -1 /data/misc/profiles/ref/com.google.euiccpixel/primary.prof +64772 1953 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.android +64772 1958 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.themepicker +64772 1963 -1 /data/misc/profiles/ref/com.qualcomm.uimremoteserver +64772 8037 -1 /data/misc/profiles/ref/com.qualcomm.uimremoteserver/primary.prof +64772 1969 -1 /data/misc/profiles/ref/com.android.timezone.updater +64772 8048 -1 /data/misc/profiles/ref/com.android.timezone.updater/primary.prof +64772 1975 -1 /data/misc/profiles/ref/com.android.providers.downloads.ui +64772 8058 -1 /data/misc/profiles/ref/com.android.providers.downloads.ui/primary.prof +64772 1981 -1 /data/misc/profiles/ref/com.android.pacprocessor +64772 8069 -1 /data/misc/profiles/ref/com.android.pacprocessor/primary.prof +64772 1987 -1 /data/misc/profiles/ref/com.android.simappdialog +64772 8074 -1 /data/misc/profiles/ref/com.android.simappdialog/primary.prof +64772 3964 -1 /data/misc/profiles/ref/com.breel.wallpapers18 +64772 8017 -1 /data/misc/profiles/ref/com.breel.wallpapers18/primary.prof +64772 1999 -1 /data/misc/profiles/ref/com.android.internal.display.cutout.emulation.tall +64772 3845 -1 /data/misc/profiles/ref/com.google.android.carriersetup +64772 7596 -1 /data/misc/profiles/ref/com.google.android.carriersetup/primary.prof +64772 2009 -1 /data/misc/profiles/ref/com.android.certinstaller +64772 8079 -1 /data/misc/profiles/ref/com.android.certinstaller/primary.prof +64772 2015 -1 /data/misc/profiles/ref/com.android.theme.color.black +64772 3851 -1 /data/misc/profiles/ref/com.google.android.youtube +64772 4746 -1 /data/misc/profiles/ref/com.google.android.youtube/primary.prof +64772 2026 -1 /data/misc/profiles/ref/com.android.theme.color.green +64772 2031 -1 /data/misc/profiles/ref/com.android.theme.color.ocean +64772 2036 -1 /data/misc/profiles/ref/com.android.theme.color.space +64772 2041 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.threebutton +64772 2046 -1 /data/misc/profiles/ref/com.qti.qualcomm.datastatusnotification +64772 3830 -1 /data/misc/profiles/ref/com.google.android.inputmethod.latin +64772 9018 -1 /data/misc/profiles/ref/com.google.android.inputmethod.latin/primary.prof +64772 2064 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.launcher +64772 2069 -1 /data/misc/profiles/ref/com.android.egg +64772 8147 -1 /data/misc/profiles/ref/com.android.egg/primary.prof +64772 2075 -1 /data/misc/profiles/ref/com.android.mtp +64772 2081 -1 /data/misc/profiles/ref/com.android.nfc +64772 8155 -1 /data/misc/profiles/ref/com.android.nfc/primary.prof +64772 2087 -1 /data/misc/profiles/ref/com.android.stk +64772 3994 -1 /data/misc/profiles/ref/com.google.ar.core +64772 8053 -1 /data/misc/profiles/ref/com.google.ar.core/primary.prof +64772 2099 -1 /data/misc/profiles/ref/com.android.backupconfirm +64772 8166 -1 /data/misc/profiles/ref/com.android.backupconfirm/primary.prof +64772 3863 -1 /data/misc/profiles/ref/com.google.android.overlay.pixelconfig2018 +64772 7842 -1 /data/misc/profiles/ref/com.google.android.overlay.pixelconfig2018/primary.prof +64772 2112 -1 /data/misc/profiles/ref/com.android.systemui.auto_generated_rro_vendor__ +64772 8171 -1 /data/misc/profiles/ref/com.android.systemui.auto_generated_rro_vendor__/primary.prof +64772 2118 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.twobutton +64772 4000 -1 /data/misc/profiles/ref/com.android.vending +64772 4776 -1 /data/misc/profiles/ref/com.android.vending/primary.prof +64772 2129 -1 /data/misc/profiles/ref/com.qualcomm.qti.radioconfiginterface +64772 8172 -1 /data/misc/profiles/ref/com.qualcomm.qti.radioconfiginterface/primary.prof +64772 2135 -1 /data/misc/profiles/ref/com.android.statementservice +64772 8180 -1 /data/misc/profiles/ref/com.android.statementservice/primary.prof +64772 2141 -1 /data/misc/profiles/ref/com.android.hotspot2 +64772 8185 -1 /data/misc/profiles/ref/com.android.hotspot2/primary.prof +64772 3869 -1 /data/misc/profiles/ref/com.android.sdm.plugins.connmo +64772 7852 -1 /data/misc/profiles/ref/com.android.sdm.plugins.connmo/primary.prof +64772 2160 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.gestural_extra_wide_back +64772 2165 -1 /data/misc/profiles/ref/com.android.sharedstoragebackup +64772 8237 -1 /data/misc/profiles/ref/com.android.sharedstoragebackup/primary.prof +64772 2171 -1 /data/misc/profiles/ref/com.android.printspooler +64772 8262 -1 /data/misc/profiles/ref/com.android.printspooler/primary.prof +64772 2178 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.settings +64772 3875 -1 /data/misc/profiles/ref/com.google.android.googlequicksearchbox +64772 7857 -1 /data/misc/profiles/ref/com.google.android.googlequicksearchbox/primary.prof +64772 3941 -1 /data/misc/profiles/ref/com.verizon.obdm_permissions +64772 2201 -1 /data/misc/profiles/ref/com.android.dreams.basic +64772 8292 -1 /data/misc/profiles/ref/com.android.dreams.basic/primary.prof +64772 4041 -1 /data/misc/profiles/ref/com.google.android.as +64772 8190 -1 /data/misc/profiles/ref/com.google.android.as/primary.prof +64772 2213 -1 /data/misc/profiles/ref/com.android.se +64772 8298 -1 /data/misc/profiles/ref/com.android.se/primary.prof +64772 2220 -1 /data/misc/profiles/ref/com.android.bips +64772 8314 -1 /data/misc/profiles/ref/com.android.bips/primary.prof +64772 2226 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.settings +64772 2231 -1 /data/misc/profiles/ref/com.qti.xdivert +64772 8344 -1 /data/misc/profiles/ref/com.qti.xdivert/primary.prof +64772 2237 -1 /data/misc/profiles/ref/com.android.musicfx +64772 8349 -1 /data/misc/profiles/ref/com.android.musicfx/primary.prof +64772 2243 -1 /data/misc/profiles/ref/com.android.bluetooth.auto_generated_rro_vendor__ +64772 8364 -1 /data/misc/profiles/ref/com.android.bluetooth.auto_generated_rro_vendor__/primary.prof +64772 2249 -1 /data/misc/profiles/ref/com.android.cellbroadcastreceiver +64772 8370 -1 /data/misc/profiles/ref/com.android.cellbroadcastreceiver/primary.prof +64772 2255 -1 /data/misc/profiles/ref/android.telephony.overlay.cmcc +64772 8389 -1 /data/misc/profiles/ref/android.telephony.overlay.cmcc/primary.prof +64772 2262 -1 /data/misc/profiles/ref/com.android.theme.icon.teardrop +64772 3958 -1 /data/misc/profiles/ref/com.google.android.soundpicker +64772 8012 -1 /data/misc/profiles/ref/com.google.android.soundpicker/primary.prof +64772 2273 -1 /data/misc/profiles/ref/com.android.keychain +64772 8406 -1 /data/misc/profiles/ref/com.android.keychain/primary.prof +64772 3887 -1 /data/misc/profiles/ref/com.google.android.onetimeinitializer +64772 7903 -1 /data/misc/profiles/ref/com.google.android.onetimeinitializer/primary.prof +64772 4047 -1 /data/misc/profiles/ref/com.google.android.gm +64772 4805 -1 /data/misc/profiles/ref/com.google.android.gm/primary.prof +64772 2297 -1 /data/misc/profiles/ref/com.android.calllogbackup +64772 8639 -1 /data/misc/profiles/ref/com.android.calllogbackup/primary.prof +64772 2303 -1 /data/misc/profiles/ref/com.android.safetyregulatoryinfo +64772 8649 -1 /data/misc/profiles/ref/com.android.safetyregulatoryinfo/primary.prof +64772 2309 -1 /data/misc/profiles/ref/com.android.localtransport +64772 8654 -1 /data/misc/profiles/ref/com.android.localtransport/primary.prof +64772 3976 -1 /data/misc/profiles/ref/com.google.android.configupdater +64772 8032 -1 /data/misc/profiles/ref/com.google.android.configupdater/primary.prof +64772 2332 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.android +64772 2338 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.systemui +64772 2349 -1 /data/misc/profiles/ref/com.android.managedprovisioning +64772 8718 -1 /data/misc/profiles/ref/com.android.managedprovisioning/primary.prof +64772 2355 -1 /data/misc/profiles/ref/com.android.soundpicker +64772 8723 -1 /data/misc/profiles/ref/com.android.soundpicker/primary.prof +64772 3911 -1 /data/misc/profiles/ref/com.google.android.trichromelibrary_386509238 +64772 7940 -1 /data/misc/profiles/ref/com.google.android.trichromelibrary_386509238/primary.prof +64772 2415 -1 /data/misc/profiles/ref/com.android.bookmarkprovider +64772 8763 -1 /data/misc/profiles/ref/com.android.bookmarkprovider/primary.prof +64772 2443 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.launcher +64772 2449 -1 /data/misc/profiles/ref/com.qti.diagservices +64772 8832 -1 /data/misc/profiles/ref/com.qti.diagservices/primary.prof +64772 2461 -1 /data/misc/profiles/ref/com.android.vpndialogs +64772 8842 -1 /data/misc/profiles/ref/com.android.vpndialogs/primary.prof +64772 4065 -1 /data/misc/profiles/ref/com.android.ramdump +64772 8205 -1 /data/misc/profiles/ref/com.android.ramdump/primary.prof +64772 2526 -1 /data/misc/profiles/ref/com.android.theme.color.purple +64772 2531 -1 /data/misc/profiles/ref/com.android.bluetoothmidiservice +64772 8915 -1 /data/misc/profiles/ref/com.android.bluetoothmidiservice/primary.prof +64772 2537 -1 /data/misc/profiles/ref/com.qualcomm.qti.confdialer +64772 8920 -1 /data/misc/profiles/ref/com.qualcomm.qti.confdialer/primary.prof +64772 2543 -1 /data/misc/profiles/ref/com.android.traceur +64772 8940 -1 /data/misc/profiles/ref/com.android.traceur/primary.prof +64772 4035 -1 /data/misc/profiles/ref/com.google.android.deskclock +64772 4798 -1 /data/misc/profiles/ref/com.google.android.deskclock/primary.prof +64772 2580 -1 /data/misc/profiles/ref/com.qualcomm.embms +64772 8989 -1 /data/misc/profiles/ref/com.qualcomm.embms/primary.prof +64772 2586 -1 /data/misc/profiles/ref/com.android.providers.contacts +64772 2603 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.gestural_narrow_back +64772 2608 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.settings +64772 2613 -1 /data/misc/profiles/ref/android.auto_generated_rro_vendor__ +64772 9028 -1 /data/misc/profiles/ref/android.auto_generated_rro_vendor__/primary.prof +64772 2619 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.circular.android +64772 3917 -1 /data/misc/profiles/ref/com.android.simappdialog.auto_generated_rro_product__ +64772 7951 -1 /data/misc/profiles/ref/com.android.simappdialog.auto_generated_rro_product__/primary.prof +64772 3946 -1 /data/misc/profiles/ref/com.android.systemui.auto_generated_rro_product__ +64772 8003 -1 /data/misc/profiles/ref/com.android.systemui.auto_generated_rro_product__/primary.prof +64772 3982 -1 /data/misc/profiles/ref/com.google.android.overlay.googlewebview +64772 8042 -1 /data/misc/profiles/ref/com.google.android.overlay.googlewebview/primary.prof +64772 4012 -1 /data/misc/profiles/ref/com.google.android.apps.work.oobconfig +64772 8089 -1 /data/misc/profiles/ref/com.google.android.apps.work.oobconfig/primary.prof +64772 4024 -1 /data/misc/profiles/ref/com.google.android.pixel.setupwizard +64772 8137 -1 /data/misc/profiles/ref/com.google.android.pixel.setupwizard/primary.prof +64772 4053 -1 /data/misc/profiles/ref/com.google.android.carrier +64772 8195 -1 /data/misc/profiles/ref/com.google.android.carrier/primary.prof +64772 4059 -1 /data/misc/profiles/ref/com.android.sdm.plugins.sprintdm +64772 8200 -1 /data/misc/profiles/ref/com.android.sdm.plugins.sprintdm/primary.prof +64772 4071 -1 /data/misc/profiles/ref/com.google.intelligence.sense +64772 8215 -1 /data/misc/profiles/ref/com.google.intelligence.sense/primary.prof +64772 4089 -1 /data/misc/profiles/ref/com.verizon.services +64772 8242 -1 /data/misc/profiles/ref/com.verizon.services/primary.prof +64772 4101 -1 /data/misc/profiles/ref/com.google.android.angle +64772 8248 -1 /data/misc/profiles/ref/com.google.android.angle/primary.prof +64772 4119 -1 /data/misc/profiles/ref/com.google.android.volta +64772 8268 -1 /data/misc/profiles/ref/com.google.android.volta/primary.prof +64772 4125 -1 /data/misc/profiles/ref/com.android.hotwordenrollment.okgoogle +64772 8273 -1 /data/misc/profiles/ref/com.android.hotwordenrollment.okgoogle/primary.prof +64772 4155 -1 /data/misc/profiles/ref/com.android.providers.settings.auto_generated_rro_product__ +64772 8297 -1 /data/misc/profiles/ref/com.android.providers.settings.auto_generated_rro_product__/primary.prof +64772 4161 -1 /data/misc/profiles/ref/com.google.android.apps.wellbeing +64772 8304 -1 /data/misc/profiles/ref/com.google.android.apps.wellbeing/primary.prof +64772 4203 -1 /data/misc/profiles/ref/com.google.android.apps.tips +64772 8359 -1 /data/misc/profiles/ref/com.google.android.apps.tips/primary.prof +64772 4209 -1 /data/misc/profiles/ref/com.google.android.documentsui.theme.pixel +64772 4231 -1 /data/misc/profiles/ref/com.google.android.apps.carrier.log +64772 8390 -1 /data/misc/profiles/ref/com.google.android.apps.carrier.log/primary.prof +64772 4237 -1 /data/misc/profiles/ref/com.google.android.networkstack +64772 8395 -1 /data/misc/profiles/ref/com.google.android.networkstack/primary.prof +64772 4243 -1 /data/misc/profiles/ref/com.google.android.contacts +64772 4828 -1 /data/misc/profiles/ref/com.google.android.contacts/primary.prof +64772 4266 -1 /data/misc/profiles/ref/com.google.android.overlay.googleconfig +64772 8408 -1 /data/misc/profiles/ref/com.google.android.overlay.googleconfig/primary.prof +64772 4272 -1 /data/misc/profiles/ref/com.google.android.calculator +64772 4829 -1 /data/misc/profiles/ref/com.google.android.calculator/primary.prof +64772 4278 -1 /data/misc/profiles/ref/com.android.chrome +64772 4830 -1 /data/misc/profiles/ref/com.android.chrome/primary.prof +64772 4290 -1 /data/misc/profiles/ref/com.google.android.packageinstaller +64772 8415 -1 /data/misc/profiles/ref/com.google.android.packageinstaller/primary.prof +64772 4313 -1 /data/misc/profiles/ref/com.google.android.ims +64772 8623 -1 /data/misc/profiles/ref/com.google.android.ims/primary.prof +64772 4326 -1 /data/misc/profiles/ref/com.google.android.tts +64772 8633 -1 /data/misc/profiles/ref/com.google.android.tts/primary.prof +64772 4344 -1 /data/misc/profiles/ref/com.google.android.apps.wallpaper.nexus +64772 4355 -1 /data/misc/profiles/ref/com.google.android.apps.nexuslauncher +64772 8665 -1 /data/misc/profiles/ref/com.google.android.apps.nexuslauncher/primary.prof +64772 4361 -1 /data/misc/profiles/ref/com.google.RilConfigService +64772 8675 -1 /data/misc/profiles/ref/com.google.RilConfigService/primary.prof +64772 4367 -1 /data/misc/profiles/ref/com.google.SSRestartDetector +64772 8685 -1 /data/misc/profiles/ref/com.google.SSRestartDetector/primary.prof +64772 4373 -1 /data/misc/profiles/ref/com.customermobile.preload.vzw +64772 8690 -1 /data/misc/profiles/ref/com.customermobile.preload.vzw/primary.prof +64772 4379 -1 /data/misc/profiles/ref/com.android.theme.font.arbutussource +64772 4384 -1 /data/misc/profiles/ref/com.android.theme.font.rubikrubik +64772 4395 -1 /data/misc/profiles/ref/com.google.android.feedback +64772 8696 -1 /data/misc/profiles/ref/com.google.android.feedback/primary.prof +64772 4401 -1 /data/misc/profiles/ref/com.google.android.printservice.recommendation +64772 8702 -1 /data/misc/profiles/ref/com.google.android.printservice.recommendation/primary.prof +64772 4413 -1 /data/misc/profiles/ref/com.google.android.calendar +64772 8713 -1 /data/misc/profiles/ref/com.google.android.calendar/primary.prof +64772 4419 -1 /data/misc/profiles/ref/com.google.android.apps.internal.betterbug +64772 8733 -1 /data/misc/profiles/ref/com.google.android.apps.internal.betterbug/primary.prof +64772 4425 -1 /data/misc/profiles/ref/com.android.sdm.plugins.dcmo +64772 8738 -1 /data/misc/profiles/ref/com.android.sdm.plugins.dcmo/primary.prof +64772 4437 -1 /data/misc/profiles/ref/com.android.server.wifistack.permissionconfig +64772 4447 -1 /data/misc/profiles/ref/com.google.android.networkstack.permissionconfig +64772 8758 -1 /data/misc/profiles/ref/com.google.android.networkstack.permissionconfig/primary.prof +64772 4453 -1 /data/misc/profiles/ref/com.google.android.overlay.pixelconfigcommon +64772 8768 -1 /data/misc/profiles/ref/com.google.android.overlay.pixelconfigcommon/primary.prof +64772 4471 -1 /data/misc/profiles/ref/com.google.android.settings.intelligence +64772 4861 -1 /data/misc/profiles/ref/com.google.android.settings.intelligence/primary.prof +64772 4477 -1 /data/misc/profiles/ref/com.google.android.projection.gearhead +64772 8783 -1 /data/misc/profiles/ref/com.google.android.projection.gearhead/primary.prof +64772 4483 -1 /data/misc/profiles/ref/com.verizon.obdm +64772 8788 -1 /data/misc/profiles/ref/com.verizon.obdm/primary.prof +64772 4495 -1 /data/misc/profiles/ref/com.google.android.apps.turbo +64772 8798 -1 /data/misc/profiles/ref/com.google.android.apps.turbo/primary.prof +64772 4507 -1 /data/misc/profiles/ref/com.google.android.tetheringentitlement +64772 8806 -1 /data/misc/profiles/ref/com.google.android.tetheringentitlement/primary.prof +64772 4526 -1 /data/misc/profiles/ref/com.google.android.apps.wearables.maestro.companion +64772 8821 -1 /data/misc/profiles/ref/com.google.android.apps.wearables.maestro.companion/primary.prof +64772 4538 -1 /data/misc/profiles/ref/com.google.android.apps.wallpaper +64772 8847 -1 /data/misc/profiles/ref/com.google.android.apps.wallpaper/primary.prof +64772 4544 -1 /data/misc/profiles/ref/com.google.googlecbrs +64772 8852 -1 /data/misc/profiles/ref/com.google.googlecbrs/primary.prof +64772 4551 -1 /data/misc/profiles/ref/com.google.vr.vrcore +64772 8862 -1 /data/misc/profiles/ref/com.google.vr.vrcore/primary.prof +64772 4563 -1 /data/misc/profiles/ref/com.google.vr.apps.ornament +64772 8888 -1 /data/misc/profiles/ref/com.google.vr.apps.ornament/primary.prof +64772 4570 -1 /data/misc/profiles/ref/com.google.android.gms.location.history +64772 8898 -1 /data/misc/profiles/ref/com.google.android.gms.location.history/primary.prof +64772 4576 -1 /data/misc/profiles/ref/com.android.pixellogger +64772 8903 -1 /data/misc/profiles/ref/com.android.pixellogger/primary.prof +64772 4582 -1 /data/misc/profiles/ref/com.google.android.hardwareinfo +64772 8910 -1 /data/misc/profiles/ref/com.google.android.hardwareinfo/primary.prof +64772 4588 -1 /data/misc/profiles/ref/com.qti.ltebc +64772 8925 -1 /data/misc/profiles/ref/com.qti.ltebc/primary.prof +64772 4600 -1 /data/misc/profiles/ref/com.tmobile.planprovider +64772 8935 -1 /data/misc/profiles/ref/com.tmobile.planprovider/primary.prof +64772 4606 -1 /data/misc/profiles/ref/com.google.android.apps.helprtc +64772 8945 -1 /data/misc/profiles/ref/com.google.android.apps.helprtc/primary.prof +64772 4618 -1 /data/misc/profiles/ref/com.google.mds +64772 8956 -1 /data/misc/profiles/ref/com.google.mds/primary.prof +64772 4630 -1 /data/misc/profiles/ref/com.google.android.gms.setup +64772 8962 -1 /data/misc/profiles/ref/com.google.android.gms.setup/primary.prof +64772 4636 -1 /data/misc/profiles/ref/android.auto_generated_rro_product__ +64772 8967 -1 /data/misc/profiles/ref/android.auto_generated_rro_product__/primary.prof +64772 4642 -1 /data/misc/profiles/ref/com.google.android.apps.gcs +64772 8968 -1 /data/misc/profiles/ref/com.google.android.apps.gcs/primary.prof +64772 4678 -1 /data/misc/profiles/ref/com.google.android.storagemanager +64772 9023 -1 /data/misc/profiles/ref/com.google.android.storagemanager/primary.prof +64772 2292 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.systemui +64772 2321 -1 /data/misc/profiles/ref/com.android.carrierdefaultapp +64772 8670 -1 /data/misc/profiles/ref/com.android.carrierdefaultapp/primary.prof +64772 3899 -1 /data/misc/profiles/ref/com.google.android.apps.diagnosticstool +64772 7923 -1 /data/misc/profiles/ref/com.google.android.apps.diagnosticstool/primary.prof +64772 3923 -1 /data/misc/profiles/ref/com.android.safetyregulatoryinfo.auto_generated_rro_product__ +64772 7952 -1 /data/misc/profiles/ref/com.android.safetyregulatoryinfo.auto_generated_rro_product__/primary.prof +64772 3935 -1 /data/misc/profiles/ref/com.google.android.connectivitymonitor +64772 7982 -1 /data/misc/profiles/ref/com.google.android.connectivitymonitor/primary.prof +64772 2373 -1 /data/misc/profiles/ref/com.android.providers.partnerbookmarks +64772 8743 -1 /data/misc/profiles/ref/com.android.providers.partnerbookmarks/primary.prof +64772 2385 -1 /data/misc/profiles/ref/com.android.wallpaper.livepicker +64772 8751 -1 /data/misc/profiles/ref/com.android.wallpaper.livepicker/primary.prof +64772 2391 -1 /data/misc/profiles/ref/com.android.phone.auto_generated_rro_vendor__ +64772 8757 -1 /data/misc/profiles/ref/com.android.phone.auto_generated_rro_vendor__/primary.prof +64772 4107 -1 /data/misc/profiles/ref/com.google.android.euicc +64772 8257 -1 /data/misc/profiles/ref/com.google.android.euicc/primary.prof +64772 2403 -1 /data/misc/profiles/ref/com.android.theme.icon.squircle +64772 2421 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.launcher +64772 3929 -1 /data/misc/profiles/ref/com.google.android.apps.enterprise.dmagent +64772 7958 -1 /data/misc/profiles/ref/com.google.android.apps.enterprise.dmagent/primary.prof +64772 2432 -1 /data/misc/profiles/ref/com.android.cts.ctsshim +64772 2437 -1 /data/misc/profiles/ref/com.android.nfc.auto_generated_rro_vendor__ +64772 8831 -1 /data/misc/profiles/ref/com.android.nfc.auto_generated_rro_vendor__/primary.prof +64772 2455 -1 /data/misc/profiles/ref/com.qualcomm.qti.services.secureui +64772 8837 -1 /data/misc/profiles/ref/com.qualcomm.qti.services.secureui/primary.prof +64772 2473 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.filled.themepicker +64772 2478 -1 /data/misc/profiles/ref/com.android.wallpaperbackup +64772 8876 -1 /data/misc/profiles/ref/com.android.wallpaperbackup/primary.prof +64772 2485 -1 /data/misc/profiles/ref/com.android.providers.blockednumber +64772 4030 -1 /data/misc/profiles/ref/com.android.theme.font.arvolato +64772 2497 -1 /data/misc/profiles/ref/com.android.providers.userdictionary +64772 2503 -1 /data/misc/profiles/ref/com.android.emergency +64772 8893 -1 /data/misc/profiles/ref/com.android.emergency/primary.prof +64772 2509 -1 /data/misc/profiles/ref/com.android.internal.systemui.navbar.gestural +64772 2514 -1 /data/misc/profiles/ref/com.android.theme.color.orchid +64772 4113 -1 /data/misc/profiles/ref/com.google.android.music +64772 4808 -1 /data/misc/profiles/ref/com.google.android.music/primary.prof +64772 2549 -1 /data/misc/profiles/ref/com.google.pixel.crosshatch.gamedriver +64772 2554 -1 /data/misc/profiles/ref/com.android.bluetooth +64772 8973 -1 /data/misc/profiles/ref/com.android.bluetooth/primary.prof +64772 2561 -1 /data/misc/profiles/ref/com.qualcomm.timeservice +64772 8979 -1 /data/misc/profiles/ref/com.qualcomm.timeservice/primary.prof +64772 2567 -1 /data/misc/profiles/ref/com.qualcomm.atfwd +64772 8984 -1 /data/misc/profiles/ref/com.qualcomm.atfwd/primary.prof +64772 4077 -1 /data/misc/profiles/ref/com.google.android.setupwizard +64772 8220 -1 /data/misc/profiles/ref/com.google.android.setupwizard/primary.prof +64772 2598 -1 /data/misc/profiles/ref/com.android.theme.icon.roundedrect +64772 3952 -1 /data/misc/profiles/ref/com.google.android.apps.messaging +64772 8004 -1 /data/misc/profiles/ref/com.google.android.apps.messaging/primary.prof +64772 3970 -1 /data/misc/profiles/ref/android.autoinstalls.config.google.nexus +64772 8022 -1 /data/misc/profiles/ref/android.autoinstalls.config.google.nexus/primary.prof +64772 3988 -1 /data/misc/profiles/ref/com.google.android.apps.safetyhub +64772 8043 -1 /data/misc/profiles/ref/com.google.android.apps.safetyhub/primary.prof +64772 4006 -1 /data/misc/profiles/ref/com.google.android.marvin.talkback +64772 8084 -1 /data/misc/profiles/ref/com.google.android.marvin.talkback/primary.prof +64772 4018 -1 /data/misc/profiles/ref/com.android.hotwordenrollment.xgoogle +64772 8132 -1 /data/misc/profiles/ref/com.android.hotwordenrollment.xgoogle/primary.prof +64772 4083 -1 /data/misc/profiles/ref/com.google.android.netgrapher +64772 8226 -1 /data/misc/profiles/ref/com.google.android.netgrapher/primary.prof +64772 4095 -1 /data/misc/profiles/ref/com.android.nfc.auto_generated_rro_product__ +64772 8247 -1 /data/misc/profiles/ref/com.android.nfc.auto_generated_rro_product__/primary.prof +64772 4131 -1 /data/misc/profiles/ref/com.android.sdm.plugins.diagmon +64772 8278 -1 /data/misc/profiles/ref/com.android.sdm.plugins.diagmon/primary.prof +64772 4167 -1 /data/misc/profiles/ref/com.google.audio.hearing.visualization.accessibility.scribe +64772 8319 -1 /data/misc/profiles/ref/com.google.audio.hearing.visualization.accessibility.scribe/primary.prof +64772 4173 -1 /data/misc/profiles/ref/com.google.android.captiveportallogin +64772 8329 -1 /data/misc/profiles/ref/com.google.android.captiveportallogin/primary.prof +64772 4179 -1 /data/misc/profiles/ref/com.google.android.accessibility.soundamplifier +64772 8334 -1 /data/misc/profiles/ref/com.google.android.accessibility.soundamplifier/primary.prof +64772 4185 -1 /data/misc/profiles/ref/com.google.mds.permissions +64772 8339 -1 /data/misc/profiles/ref/com.google.mds.permissions/primary.prof +64772 4191 -1 /data/misc/profiles/ref/com.google.android.apps.docs +64772 8354 -1 /data/misc/profiles/ref/com.google.android.apps.docs/primary.prof +64772 4301 -1 /data/misc/profiles/ref/com.google.android.gms +64772 4197 -1 /data/misc/profiles/ref/com.google.android.apps.maps +64772 4822 -1 /data/misc/profiles/ref/com.google.android.apps.maps/primary.prof +64772 4214 -1 /data/misc/profiles/ref/com.google.android.modulemetadata +64772 4219 -1 /data/misc/profiles/ref/com.google.android.markup +64772 8365 -1 /data/misc/profiles/ref/com.google.android.markup/primary.prof +64772 4225 -1 /data/misc/profiles/ref/com.google.android.webview +64772 4249 -1 /data/misc/profiles/ref/com.google.android.syncadapters.contacts +64772 8401 -1 /data/misc/profiles/ref/com.google.android.syncadapters.contacts/primary.prof +64772 4255 -1 /data/misc/profiles/ref/com.android.theme.icon_pack.rounded.themepicker +64772 4260 -1 /data/misc/profiles/ref/com.android.server.telecom.auto_generated_rro_product__ +64772 8407 -1 /data/misc/profiles/ref/com.android.server.telecom.auto_generated_rro_product__/primary.prof +64772 4284 -1 /data/misc/profiles/ref/com.android.bips.auto_generated_rro_product__ +64772 8414 -1 /data/misc/profiles/ref/com.android.bips.auto_generated_rro_product__/primary.prof +64772 4296 -1 /data/misc/profiles/ref/com.google.android.apps.customization.pixel +64772 4307 -1 /data/misc/profiles/ref/com.google.android.gsf +64772 8618 -1 /data/misc/profiles/ref/com.google.android.gsf/primary.prof +64772 4320 -1 /data/misc/profiles/ref/com.google.android.tag +64772 8628 -1 /data/misc/profiles/ref/com.google.android.tag/primary.prof +64772 4332 -1 /data/misc/profiles/ref/com.google.android.overlay.permissioncontroller +64772 8638 -1 /data/misc/profiles/ref/com.google.android.overlay.permissioncontroller/primary.prof +64772 4338 -1 /data/misc/profiles/ref/com.google.android.partnersetup +64772 8644 -1 /data/misc/profiles/ref/com.google.android.partnersetup/primary.prof +64772 4349 -1 /data/misc/profiles/ref/com.google.android.videos +64772 8659 -1 /data/misc/profiles/ref/com.google.android.videos/primary.prof +64772 4389 -1 /data/misc/profiles/ref/com.android.providers.contacts.auto_generated_rro_product__ +64772 8695 -1 /data/misc/profiles/ref/com.android.providers.contacts.auto_generated_rro_product__/primary.prof +64772 4407 -1 /data/misc/profiles/ref/com.google.android.apps.photos +64772 8707 -1 /data/misc/profiles/ref/com.google.android.apps.photos/primary.prof +64772 4431 -1 /data/misc/profiles/ref/com.android.providers.telephony.auto_generated_rro_product__ +64772 8756 -1 /data/misc/profiles/ref/com.android.providers.telephony.auto_generated_rro_product__/primary.prof +64772 4459 -1 /data/misc/profiles/ref/com.google.android.wfcactivation +64772 8773 -1 /data/misc/profiles/ref/com.google.android.wfcactivation/primary.prof +64772 4465 -1 /data/misc/profiles/ref/com.google.android.apps.pixelmigrate +64772 8778 -1 /data/misc/profiles/ref/com.google.android.apps.pixelmigrate/primary.prof +64772 4489 -1 /data/misc/profiles/ref/com.google.android.apps.scone +64772 8793 -1 /data/misc/profiles/ref/com.google.android.apps.scone/primary.prof +64772 4514 -1 /data/misc/profiles/ref/com.android.omadm.service +64772 8811 -1 /data/misc/profiles/ref/com.android.omadm.service/primary.prof +64772 4520 -1 /data/misc/profiles/ref/com.google.android.apps.dreamliner +64772 8816 -1 /data/misc/profiles/ref/com.google.android.apps.dreamliner/primary.prof +64772 4532 -1 /data/misc/profiles/ref/com.google.android.hiddenmenu +64772 8826 -1 /data/misc/profiles/ref/com.google.android.hiddenmenu/primary.prof +64772 4594 -1 /data/misc/profiles/ref/com.google.android.dreamlinerupdater +64772 8930 -1 /data/misc/profiles/ref/com.google.android.dreamlinerupdater/primary.prof +64772 4612 -1 /data/misc/profiles/ref/qualcomm.com.vzw_msdc_api +64772 8950 -1 /data/misc/profiles/ref/qualcomm.com.vzw_msdc_api/primary.prof +64772 4624 -1 /data/misc/profiles/ref/com.android.phone.auto_generated_rro_product__ +64772 8961 -1 /data/misc/profiles/ref/com.android.phone.auto_generated_rro_product__/primary.prof +64772 4648 -1 /data/misc/profiles/ref/com.google.android.GoogleCamera +64772 4896 -1 /data/misc/profiles/ref/com.google.android.GoogleCamera/primary.prof +64772 4654 -1 /data/misc/profiles/ref/com.google.android.vendorloggingservice +64772 8998 -1 /data/misc/profiles/ref/com.google.android.vendorloggingservice/primary.prof +64772 4660 -1 /data/misc/profiles/ref/com.android.connectivity.metrics +64772 9003 -1 /data/misc/profiles/ref/com.android.connectivity.metrics/primary.prof +64772 4666 -1 /data/misc/profiles/ref/com.verizon.llkagent +64772 9008 -1 /data/misc/profiles/ref/com.verizon.llkagent/primary.prof +64772 4672 -1 /data/misc/profiles/ref/com.android.vzwomatrigger +64772 9013 -1 /data/misc/profiles/ref/com.android.vzwomatrigger/primary.prof +64772 65 -1 /data/misc/profman +64772 66 -1 /data/misc/gcov +64772 67 -1 /data/misc/installd +64772 492 -1 /data/misc/installd/layout_version +64772 143 -1 /data/misc/adb +64772 5513 -1 /data/misc/adb/adb_keys +64772 7626 -1 /data/misc/adb/adb_temp_keys.xml +64772 160 -1 /data/misc/bootstat +64772 2870 -1 /data/misc/bootstat/last_boot_time_utc +64772 2871 -1 /data/misc/bootstat/build_date +64772 2882 -1 /data/misc/bootstat/factory_reset_boot_complete_no_encryption +64772 2883 -1 /data/misc/bootstat/factory_reset_boot_complete +64772 2884 -1 /data/misc/bootstat/ro.boottime.init +64772 2885 -1 /data/misc/bootstat/ro.boottime.init.first_stage +64772 2886 -1 /data/misc/bootstat/ro.boottime.init.selinux +64772 2887 -1 /data/misc/bootstat/ro.boottime.init.cold_boot_wait +64772 2888 -1 /data/misc/bootstat/boottime.bootloader.0BLE +64772 2889 -1 /data/misc/bootstat/boottime.bootloader.1BLE +64772 2890 -1 /data/misc/bootstat/boottime.bootloader.1BLL +64772 2891 -1 /data/misc/bootstat/boottime.bootloader.2BLE +64772 2892 -1 /data/misc/bootstat/boottime.bootloader.2BLL +64772 2893 -1 /data/misc/bootstat/boottime.bootloader.AVB +64772 2894 -1 /data/misc/bootstat/boottime.bootloader.KD +64772 2895 -1 /data/misc/bootstat/boottime.bootloader.KL +64772 2896 -1 /data/misc/bootstat/boottime.bootloader.ODT +64772 2897 -1 /data/misc/bootstat/boottime.bootloader.SW +64772 2898 -1 /data/misc/bootstat/boottime.bootloader.total +64772 2899 -1 /data/misc/bootstat/absolute_boot_time +64772 2900 -1 /data/misc/bootstat/boot_reason +64772 2901 -1 /data/misc/bootstat/system_boot_reason +64772 2902 -1 /data/misc/bootstat/factory_reset_current_time +64772 2903 -1 /data/misc/bootstat/factory_reset +64772 5076 -1 /data/misc/bootstat/time_since_last_boot +64772 5084 -1 /data/misc/bootstat/ota_boot_complete_no_encryption +64772 5085 -1 /data/misc/bootstat/ota_boot_complete +64772 5086 -1 /data/misc/bootstat/factory_reset_record_value +64772 5087 -1 /data/misc/bootstat/time_since_factory_reset +64772 6650 -1 /data/misc/bootstat/boot_complete_no_encryption +64772 6651 -1 /data/misc/bootstat/boot_complete +64772 164 -1 /data/misc/incidents +64772 165 -1 /data/misc/iorapd +64772 519 -1 /data/misc/iorapd/sqlite.db +64772 3725 -1 /data/misc/iorapd/com.google.android.GoogleCamera%2Fcom.android.camera.CameraLauncher.perfetto_trace.pb +64772 9117 -1 /data/misc/iorapd/com.android.settings%2Fcom.android.settings.Settings.perfetto_trace.pb +64772 3489 -1 /data/misc/iorapd/com.google.android.calculator%2Fcom.android.calculator2.Calculator.perfetto_trace.pb +64772 166 -1 /data/misc/logd +64772 167 -1 /data/misc/logd/event-log-tags +64772 168 -1 /data/misc/stats-data +64772 169 -1 /data/misc/stats-service +64772 170 -1 /data/misc/stats-active-metric +64772 171 -1 /data/misc/train-info +64772 402 -1 /data/misc/perfetto-traces +64772 52 -1 /data/local +64772 73 -1 /data/local/tmp +64772 9542 -1 /data/local/tmp/iorapd-tests +64772 6578 -1 /data/local/tmp/iorapd-tests/iorapd-tests.config +64772 9554 -1 /data/local/tmp/iorapd-tests/arm64 +64772 7006 -1 /data/local/tmp/iorapd-tests/arm64/iorapd-tests +64772 7091 -1 /data/local/tmp/dumpcache +64772 74 -1 /data/local/traces +64772 68 -1 /data/preloads +64772 69 -1 /data/vendor +64772 72 -1 /data/vendor/hardware +64772 83 -1 /data/vendor/tombstones +64772 84 -1 /data/vendor/tombstones/wifi +64772 158 -1 /data/vendor/tombstones/rfs +64772 202 -1 /data/vendor/tombstones/rfs/modem +64772 203 -1 /data/vendor/tombstones/rfs/lpass +64772 204 -1 /data/vendor/tombstones/rfs/tn +64772 205 -1 /data/vendor/tombstones/rfs/slpi +64772 206 -1 /data/vendor/tombstones/rfs/cdsp +64772 145 -1 /data/vendor/camera +64772 146 -1 /data/vendor/display +64772 147 -1 /data/vendor/modem_fdr +64772 201 -1 /data/vendor/modem_fdr/fdr_check +64772 148 -1 /data/vendor/nnhal +64772 149 -1 /data/vendor/radio +64772 150 -1 /data/vendor/radio/diag_logs +64772 154 -1 /data/vendor/radio/diag_logs/logs +64772 412 -1 /data/vendor/radio/diag_logs/logs/diag_qsr4_guid_list.xml +64772 2742 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191013_2252041571007124483.qmdl +64772 4797 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191013_2256211571007381368.qmdl +64772 6726 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191013_2258421571007522788.qmdl +64772 9504 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191014_0429031571027343969.qmdl +64772 7367 -1 /data/vendor/radio/diag_logs/logs/diag_poweron_log.qmdl +64772 7422 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191014_1244401571057080983.qmdl +64772 9066 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191014_1745031571075103455.qmdl +64772 9060 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191014_2115181571087718981.qmdl +64772 6822 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191015_0015321571098532612.qmdl +64772 8183 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191015_0600581571119258344.qmdl +64772 3736 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191015_1401341571148094239.qmdl +64772 7477 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191015_1916571571167017813.qmdl +64772 7218 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191016_0032211571185941322.qmdl +64772 7252 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191016_0717511571210271628.qmdl +64772 3461 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191016_1533281571240008608.qmdl +64772 7339 -1 /data/vendor/radio/diag_logs/logs/diag_log_20191016_2033511571258031065.qmdl +64772 407 -1 /data/vendor/radio/diag_logs/diag_trace.txt +64772 6566 -1 /data/vendor/radio/diag_logs/diag_mdlog_pid +64772 5647 -1 /data/vendor/radio/diag_logs/cfg +64772 5897 -1 /data/vendor/radio/diag_logs/cfg/Audio.cfg +64772 5650 -1 /data/vendor/radio/diag_logs/cfg/BT_Audio.cfg +64772 5651 -1 /data/vendor/radio/diag_logs/cfg/CA-MIMO-256QAM.cfg +64772 5652 -1 /data/vendor/radio/diag_logs/cfg/Connection_Issues_V6+DPL+UIM.cfg +64772 5653 -1 /data/vendor/radio/diag_logs/cfg/Default_update_audio_rf.cfg +64772 1584 -1 /data/vendor/radio/diag_logs/cfg/Default_update_audio_rf_tuner.cfg +64772 1646 -1 /data/vendor/radio/diag_logs/cfg/GPS.cfg +64772 1397 -1 /data/vendor/radio/diag_logs/cfg/IMS_DS_CNE_LnX_Golden.cfg +64772 6447 -1 /data/vendor/radio/diag_logs/cfg/Pixel_Default.cfg +64772 6448 -1 /data/vendor/radio/diag_logs/cfg/QC_default.cfg +64772 6420 -1 /data/vendor/radio/diag_logs/cfg/QC_default_ds_ims_sec.cfg +64772 6806 -1 /data/vendor/radio/diag_logs/cfg/QC_voice.cfg +64772 6796 -1 /data/vendor/radio/diag_logs/cfg/Radio-general.cfg +64772 5771 -1 /data/vendor/radio/diag_logs/cfg/SIM.cfg +64772 5659 -1 /data/vendor/radio/diag_logs/cfg/Sensors.cfg +64772 5888 -1 /data/vendor/radio/diag_logs/cfg/Thermal_default.cfg +64772 5869 -1 /data/vendor/radio/diag_logs/cfg/default.cfg +64772 6764 -1 /data/vendor/radio/diag_logs/cfg/default_2018.cfg +64772 6839 -1 /data/vendor/radio/diag_logs/cfg/default_RFL1.cfg +64772 6848 -1 /data/vendor/radio/diag_logs/cfg/default_with_legacy.cfg +64772 6882 -1 /data/vendor/radio/diag_logs/cfg/default_without_sns.cfg +64772 6399 -1 /data/vendor/radio/diag_logs/cfg/teamfood_default.cfg +64772 5894 -1 /data/vendor/radio/diag_logs/cfg/wlan.cfg +64772 5648 -1 /data/vendor/radio/diag_logs/custom_cfg +64772 155 -1 /data/vendor/radio/extended_logs +64772 1492 -1 /data/vendor/radio/extended_logs/extended_log_os.txt +64772 1589 -1 /data/vendor/radio/extended_logs/extended_log_uim.txt +64772 190 -1 /data/vendor/radio/copy_complete +64772 191 -1 /data/vendor/radio/prebuilt_db_support +64772 192 -1 /data/vendor/radio/db_check_done +64772 541 -1 /data/vendor/radio/qcril.db +64772 585 -1 /data/vendor/radio/qcril_prebuilt.db +64772 697 -1 /data/vendor/radio/qmi_fw_log +64772 699 -1 /data/vendor/radio/qmi_fw_log_old +64772 6570 -1 /data/vendor/radio/modem_config +64772 1328 -1 /data/vendor/radio/qcril_backup.db +64772 1331 -1 /data/vendor/radio/dummy_file +64772 1332 -1 /data/vendor/radio/iccid_0 +64772 9889 -1 /data/vendor/radio/ril_log0 +64772 4708 -1 /data/vendor/radio/imsdatadaemon_log +64772 7283 -1 /data/vendor/radio/ril_log0_old +64772 3759 -1 /data/vendor/radio/metrics_data +64772 151 -1 /data/vendor/wifi +64772 152 -1 /data/vendor/wifi/cnss_diag +64772 172 -1 /data/vendor/wifi/hostapd +64772 173 -1 /data/vendor/wifi/hostapd/sockets +64772 178 -1 /data/vendor/wifi/wpa +64772 179 -1 /data/vendor/wifi/wpa/sockets +64772 153 -1 /data/vendor/modem_dump +64772 156 -1 /data/vendor/rfs +64772 157 -1 /data/vendor/rfs/mpss +64772 159 -1 /data/vendor/rfs/mpss/mcfg_nv_list_flag +64772 1375 -1 /data/vendor/rfs/mpss/server_check.txt +64772 177 -1 /data/vendor/ipa +64772 494 -1 /data/vendor/ipa/ipacm.pid +64772 180 -1 /data/vendor/netmgr +64772 181 -1 /data/vendor/netmgr/recovery +64772 182 -1 /data/vendor/netmgr/recovery/recovery_info +64772 479 -1 /data/vendor/netmgr/netmgr_log +64772 183 -1 /data/vendor/audio +64772 184 -1 /data/vendor/audio/acdbdata +64772 185 -1 /data/vendor/audio/acdbdata/delta +64772 1310 -1 /data/vendor/audio/acdbdata/delta/adsp_avs_config.acdbdelta +64772 1311 -1 /data/vendor/audio/acdbdata/delta/Headset_cal.acdbdelta +64772 1312 -1 /data/vendor/audio/acdbdata/delta/workspaceFile.qwspdelta +64772 1313 -1 /data/vendor/audio/acdbdata/delta/Speaker_cal.acdbdelta +64772 1314 -1 /data/vendor/audio/acdbdata/delta/Hdmi_cal.acdbdelta +64772 1315 -1 /data/vendor/audio/acdbdata/delta/Codec_cal.acdbdelta +64772 1316 -1 /data/vendor/audio/acdbdata/delta/Handset_cal.acdbdelta +64772 1317 -1 /data/vendor/audio/acdbdata/delta/Global_cal.acdbdelta +64772 1318 -1 /data/vendor/audio/acdbdata/delta/Bluetooth_cal.acdbdelta +64772 1319 -1 /data/vendor/audio/acdbdata/delta/General_cal.acdbdelta +64772 186 -1 /data/vendor/modem_stat +64772 187 -1 /data/vendor/modem_stat/debug.txt +64772 188 -1 /data/vendor/sensors +64772 189 -1 /data/vendor/sensors/log +64772 7242 -1 /data/vendor/sensors/cal.bin +64772 7243 -1 /data/vendor/sensors/cal.txt +64772 193 -1 /data/vendor/location +64772 194 -1 /data/vendor/location/mq +64772 195 -1 /data/vendor/location/xtwifi +64772 577 -1 /data/vendor/location/xtra +64772 578 -1 /data/vendor/location/xtra/xtra.sqlite +64772 1473 -1 /data/vendor/location/nvparam.sqlite +64772 196 -1 /data/vendor/nfc +64772 3385 -1 /data/vendor/nfc/libnfc-nxpConfigState.bin +64772 2193 -1 /data/vendor/nfc/nfc_power_state.txt +64772 197 -1 /data/vendor/secure_element +64772 207 -1 /data/vendor/ramdump +64772 211 -1 /data/vendor/ramdump/RAMDUMP_STATUS +64772 212 -1 /data/vendor/ramdump/RAMDUMP_RESERVED +64772 368 -1 /data/vendor/wifidump +64772 377 -1 /data/vendor/ssrdump +64772 378 -1 /data/vendor/ssrlog +64772 564 -1 /data/vendor/mediadrm +64772 1926 -1 /data/vendor/tcpdump_logger +64772 1927 -1 /data/vendor/tcpdump_logger/logs +64772 2182 -1 /data/vendor/tcpdump_logger/pid_file_always_on +64772 70 -1 /data/vendor_ce +64772 2791 -1 /data/vendor_ce/0 +64772 2810 -1 /data/vendor_ce/0/facedata +64772 3004 -1 /data/vendor_ce/0/ramoops +64772 3370 -1 /data/vendor_ce/0/ramoops/pub.pem +64772 3371 -1 /data/vendor_ce/0/ramoops/priv.pem +64772 71 -1 /data/vendor_de +64772 136 -1 /data/vendor_de/0 +64772 141 -1 /data/vendor_de/0/fpdata +64772 142 -1 /data/vendor_de/0/facedata +64772 75 -1 /data/data +64772 2811 -1 /data/data/com.android.internal.display.cutout.emulation.noCutout +64772 2812 -1 /data/data/com.android.internal.display.cutout.emulation.noCutout/cache +64772 2813 -1 /data/data/com.android.internal.display.cutout.emulation.noCutout/code_cache +64772 2814 -1 /data/data/com.android.cts.priv.ctsshim +64772 2815 -1 /data/data/com.android.cts.priv.ctsshim/cache +64772 2816 -1 /data/data/com.android.cts.priv.ctsshim/code_cache +64772 2817 -1 /data/data/com.android.internal.display.cutout.emulation.corner +64772 2818 -1 /data/data/com.android.internal.display.cutout.emulation.corner/cache +64772 2819 -1 /data/data/com.android.internal.display.cutout.emulation.corner/code_cache +64772 2820 -1 /data/data/com.android.internal.display.cutout.emulation.double +64772 2821 -1 /data/data/com.android.internal.display.cutout.emulation.double/cache +64772 2822 -1 /data/data/com.android.internal.display.cutout.emulation.double/code_cache +64772 2823 -1 /data/data/com.android.providers.telephony +64772 2824 -1 /data/data/com.android.providers.telephony/cache +64772 2825 -1 /data/data/com.android.providers.telephony/code_cache +64772 3503 -1 /data/data/com.android.providers.telephony/databases +64772 3504 -1 /data/data/com.android.providers.telephony/databases/mmssms.db +64772 3505 -1 /data/data/com.android.providers.telephony/databases/mmssms.db-journal +64772 3506 -1 /data/data/com.android.providers.telephony/shared_prefs +64772 3507 -1 /data/data/com.android.providers.telephony/shared_prefs/com.android.providers.telephony_preferences.xml +64772 2826 -1 /data/data/com.android.dynsystem +64772 2827 -1 /data/data/com.android.dynsystem/cache +64772 2828 -1 /data/data/com.android.dynsystem/code_cache +64772 2829 -1 /data/data/com.android.providers.calendar +64772 2830 -1 /data/data/com.android.providers.calendar/cache +64772 2831 -1 /data/data/com.android.providers.calendar/code_cache +64772 3508 -1 /data/data/com.android.providers.calendar/databases +64772 3509 -1 /data/data/com.android.providers.calendar/databases/calendar.db +64772 3510 -1 /data/data/com.android.providers.calendar/databases/calendar.db-journal +64772 3512 -1 /data/data/com.android.providers.calendar/shared_prefs +64772 3513 -1 /data/data/com.android.providers.calendar/shared_prefs/CalendarUpgradeReceiver.xml +64772 9426 -1 /data/data/com.android.providers.calendar/shared_prefs/sanity.xml +64772 2832 -1 /data/data/com.android.providers.media +64772 2833 -1 /data/data/com.android.providers.media/cache +64772 2834 -1 /data/data/com.android.providers.media/code_cache +64772 3469 -1 /data/data/com.android.providers.media/databases +64772 3470 -1 /data/data/com.android.providers.media/databases/internal.db +64772 3472 -1 /data/data/com.android.providers.media/databases/internal.db-wal +64772 3473 -1 /data/data/com.android.providers.media/databases/internal.db-shm +64772 3490 -1 /data/data/com.android.providers.media/databases/external.db +64772 3492 -1 /data/data/com.android.providers.media/databases/external.db-wal +64772 3493 -1 /data/data/com.android.providers.media/databases/external.db-shm +64772 3477 -1 /data/data/com.android.providers.media/shared_prefs +64772 3487 -1 /data/data/com.android.providers.media/shared_prefs/com.android.providers.media_preferences.xml +64772 3515 -1 /data/data/com.android.providers.media/shared_prefs/MediaUpgradeReceiver.xml +64772 3571 -1 /data/data/com.android.providers.media/shared_prefs/MediaScanBuild.xml +64772 2835 -1 /data/data/com.android.internal.systemui.navbar.gestural_wide_back +64772 2836 -1 /data/data/com.android.internal.systemui.navbar.gestural_wide_back/cache +64772 2837 -1 /data/data/com.android.internal.systemui.navbar.gestural_wide_back/code_cache +64772 5064 -1 /data/data/com.google.omadm.trigger +64772 5065 -1 /data/data/com.google.omadm.trigger/cache +64772 5066 -1 /data/data/com.google.omadm.trigger/code_cache +64772 2841 -1 /data/data/com.quicinc.cne.CNEService +64772 2842 -1 /data/data/com.quicinc.cne.CNEService/cache +64772 2843 -1 /data/data/com.quicinc.cne.CNEService/code_cache +64772 2844 -1 /data/data/com.android.theme.color.cinnamon +64772 2845 -1 /data/data/com.android.theme.color.cinnamon/cache +64772 2846 -1 /data/data/com.android.theme.color.cinnamon/code_cache +64772 2847 -1 /data/data/com.android.server.backup.encryption +64772 2848 -1 /data/data/com.android.server.backup.encryption/cache +64772 2849 -1 /data/data/com.android.server.backup.encryption/code_cache +64772 2850 -1 /data/data/com.android.theme.icon_pack.rounded.systemui +64772 2851 -1 /data/data/com.android.theme.icon_pack.rounded.systemui/cache +64772 2852 -1 /data/data/com.android.theme.icon_pack.rounded.systemui/code_cache +64772 5073 -1 /data/data/com.vzw.apnlib +64772 5074 -1 /data/data/com.vzw.apnlib/cache +64772 5075 -1 /data/data/com.vzw.apnlib/code_cache +64772 2856 -1 /data/data/com.android.externalstorage +64772 2857 -1 /data/data/com.android.externalstorage/cache +64772 2858 -1 /data/data/com.android.externalstorage/code_cache +64772 2859 -1 /data/data/com.qualcomm.uimremoteclient +64772 2860 -1 /data/data/com.qualcomm.uimremoteclient/cache +64772 2861 -1 /data/data/com.qualcomm.uimremoteclient/code_cache +64772 2863 -1 /data/data/com.android.htmlviewer +64772 2864 -1 /data/data/com.android.htmlviewer/cache +64772 2865 -1 /data/data/com.android.htmlviewer/code_cache +64772 2867 -1 /data/data/com.qualcomm.qti.uceShimService +64772 2868 -1 /data/data/com.qualcomm.qti.uceShimService/cache +64772 2869 -1 /data/data/com.qualcomm.qti.uceShimService/code_cache +64772 2872 -1 /data/data/com.android.companiondevicemanager +64772 2873 -1 /data/data/com.android.companiondevicemanager/cache +64772 2874 -1 /data/data/com.android.companiondevicemanager/code_cache +64772 5067 -1 /data/data/com.google.android.carriersetup +64772 5068 -1 /data/data/com.google.android.carriersetup/cache +64772 5069 -1 /data/data/com.google.android.carriersetup/code_cache +64772 5026 -1 /data/data/com.google.android.carriersetup/shared_prefs +64772 2879 -1 /data/data/com.android.mms.service +64772 2880 -1 /data/data/com.android.mms.service/cache +64772 2881 -1 /data/data/com.android.mms.service/code_cache +64772 2904 -1 /data/data/com.android.providers.downloads +64772 2905 -1 /data/data/com.android.providers.downloads/cache +64772 2906 -1 /data/data/com.android.providers.downloads/code_cache +64772 3474 -1 /data/data/com.android.providers.downloads/databases +64772 3475 -1 /data/data/com.android.providers.downloads/databases/downloads.db +64772 3476 -1 /data/data/com.android.providers.downloads/databases/downloads.db-journal +64772 7557 -1 /data/data/com.android.providers.downloads/files +64772 5100 -1 /data/data/com.qualcomm.ltebc_vzw +64772 5101 -1 /data/data/com.qualcomm.ltebc_vzw/cache +64772 5102 -1 /data/data/com.qualcomm.ltebc_vzw/code_cache +64772 2910 -1 /data/data/com.android.theme.icon_pack.rounded.android +64772 2911 -1 /data/data/com.android.theme.icon_pack.rounded.android/cache +64772 2912 -1 /data/data/com.android.theme.icon_pack.rounded.android/code_cache +64772 2913 -1 /data/data/com.qualcomm.qti.telephonyservice +64772 2914 -1 /data/data/com.qualcomm.qti.telephonyservice/cache +64772 2915 -1 /data/data/com.qualcomm.qti.telephonyservice/code_cache +64772 2916 -1 /data/data/com.android.theme.icon_pack.circular.themepicker +64772 2917 -1 /data/data/com.android.theme.icon_pack.circular.themepicker/cache +64772 2918 -1 /data/data/com.android.theme.icon_pack.circular.themepicker/code_cache +64772 2919 -1 /data/data/com.qualcomm.uimremoteserver +64772 2920 -1 /data/data/com.qualcomm.uimremoteserver/cache +64772 2921 -1 /data/data/com.qualcomm.uimremoteserver/code_cache +64772 2923 -1 /data/data/com.android.timezone.updater +64772 2924 -1 /data/data/com.android.timezone.updater/cache +64772 2925 -1 /data/data/com.android.timezone.updater/code_cache +64772 2926 -1 /data/data/com.android.providers.downloads.ui +64772 2928 -1 /data/data/com.android.providers.downloads.ui/cache +64772 2929 -1 /data/data/com.android.providers.downloads.ui/code_cache +64772 2930 -1 /data/data/com.android.pacprocessor +64772 2931 -1 /data/data/com.android.pacprocessor/cache +64772 2932 -1 /data/data/com.android.pacprocessor/code_cache +64772 2933 -1 /data/data/com.android.simappdialog +64772 2934 -1 /data/data/com.android.simappdialog/cache +64772 2935 -1 /data/data/com.android.simappdialog/code_cache +64772 5107 -1 /data/data/com.google.euiccpixel +64772 5108 -1 /data/data/com.google.euiccpixel/cache +64772 5109 -1 /data/data/com.google.euiccpixel/code_cache +64772 2939 -1 /data/data/com.android.internal.display.cutout.emulation.tall +64772 2940 -1 /data/data/com.android.internal.display.cutout.emulation.tall/cache +64772 2941 -1 /data/data/com.android.internal.display.cutout.emulation.tall/code_cache +64772 5070 -1 /data/data/com.google.android.youtube +64772 5071 -1 /data/data/com.google.android.youtube/cache +64772 1369 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache +64772 1460 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/version +64772 1455 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/prefs +64772 1930 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/disk_cache +64772 1923 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/disk_cache/index +64772 2180 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/disk_cache/index-dir +64772 1868 -1 /data/data/com.google.android.youtube/cache/cronet_metadata_cache/disk_cache/index-dir/the-real-index +64772 5915 -1 /data/data/com.google.android.youtube/cache/oat +64772 6341 -1 /data/data/com.google.android.youtube/cache/oat/1548865591327.jar.cur.prof +64772 5072 -1 /data/data/com.google.android.youtube/code_cache +64772 1583 -1 /data/data/com.google.android.youtube/shared_prefs +64772 6183 -1 /data/data/com.google.android.youtube/shared_prefs/youtube.xml +64772 1637 -1 /data/data/com.google.android.youtube/databases +64772 1641 -1 /data/data/com.google.android.youtube/databases/com.google.android.libraries.youtube.common.task.ScheduledTaskStore +64772 1659 -1 /data/data/com.google.android.youtube/databases/com.google.android.libraries.youtube.common.task.ScheduledTaskStore-journal +64772 2056 -1 /data/data/com.google.android.youtube/databases/google_conversion_tracking.db +64772 2058 -1 /data/data/com.google.android.youtube/databases/google_conversion_tracking.db-journal +64772 1924 -1 /data/data/com.google.android.youtube/databases/youtube_upload_service +64772 2089 -1 /data/data/com.google.android.youtube/databases/youtube_upload_service-journal +64772 1553 -1 /data/data/com.google.android.youtube/no_backup +64772 1610 -1 /data/data/com.google.android.youtube/no_backup/com.google.android.gms.appid-no-backup +64772 1929 -1 /data/data/com.google.android.youtube/files +64772 2945 -1 /data/data/com.android.certinstaller +64772 2946 -1 /data/data/com.android.certinstaller/cache +64772 2947 -1 /data/data/com.android.certinstaller/code_cache +64772 2948 -1 /data/data/com.android.theme.color.black +64772 2949 -1 /data/data/com.android.theme.color.black/cache +64772 2950 -1 /data/data/com.android.theme.color.black/code_cache +64772 5077 -1 /data/data/com.google.android.ext.services +64772 5078 -1 /data/data/com.google.android.ext.services/cache +64772 5079 -1 /data/data/com.google.android.ext.services/code_cache +64772 2954 -1 /data/data/com.android.theme.color.green +64772 2955 -1 /data/data/com.android.theme.color.green/cache +64772 2956 -1 /data/data/com.android.theme.color.green/code_cache +64772 2957 -1 /data/data/com.android.theme.color.ocean +64772 2958 -1 /data/data/com.android.theme.color.ocean/cache +64772 2959 -1 /data/data/com.android.theme.color.ocean/code_cache +64772 2960 -1 /data/data/com.android.theme.color.space +64772 2961 -1 /data/data/com.android.theme.color.space/cache +64772 2962 -1 /data/data/com.android.theme.color.space/code_cache +64772 2963 -1 /data/data/com.android.internal.systemui.navbar.threebutton +64772 2964 -1 /data/data/com.android.internal.systemui.navbar.threebutton/cache +64772 2965 -1 /data/data/com.android.internal.systemui.navbar.threebutton/code_cache +64772 2966 -1 /data/data/com.qti.qualcomm.datastatusnotification +64772 2967 -1 /data/data/com.qti.qualcomm.datastatusnotification/cache +64772 2968 -1 /data/data/com.qti.qualcomm.datastatusnotification/code_cache +64772 2969 -1 /data/data/android +64772 2970 -1 /data/data/android/cache +64772 2971 -1 /data/data/android/code_cache +64772 5081 -1 /data/data/com.google.android.overlay.pixelconfig2018 +64772 5082 -1 /data/data/com.google.android.overlay.pixelconfig2018/cache +64772 5083 -1 /data/data/com.google.android.overlay.pixelconfig2018/code_cache +64772 2978 -1 /data/data/com.android.theme.icon_pack.rounded.launcher +64772 2979 -1 /data/data/com.android.theme.icon_pack.rounded.launcher/cache +64772 2980 -1 /data/data/com.android.theme.icon_pack.rounded.launcher/code_cache +64772 2981 -1 /data/data/com.android.egg +64772 2982 -1 /data/data/com.android.egg/cache +64772 2983 -1 /data/data/com.android.egg/code_cache +64772 2984 -1 /data/data/com.android.mtp +64772 2985 -1 /data/data/com.android.mtp/cache +64772 2986 -1 /data/data/com.android.mtp/code_cache +64772 3463 -1 /data/data/com.android.mtp/databases +64772 3464 -1 /data/data/com.android.mtp/databases/database +64772 3466 -1 /data/data/com.android.mtp/databases/database-journal +64772 2987 -1 /data/data/com.android.nfc +64772 2988 -1 /data/data/com.android.nfc/cache +64772 2989 -1 /data/data/com.android.nfc/code_cache +64772 3355 -1 /data/data/com.android.nfc/shared_prefs +64772 3368 -1 /data/data/com.android.nfc/shared_prefs/NfcServicePrefs.xml +64772 3357 -1 /data/data/com.android.nfc/files +64772 2990 -1 /data/data/com.android.ons +64772 2991 -1 /data/data/com.android.ons/cache +64772 2992 -1 /data/data/com.android.ons/code_cache +64772 2993 -1 /data/data/com.android.stk +64772 2994 -1 /data/data/com.android.stk/cache +64772 2995 -1 /data/data/com.android.stk/code_cache +64772 5137 -1 /data/data/com.breel.wallpapers18 +64772 5138 -1 /data/data/com.breel.wallpapers18/cache +64772 5139 -1 /data/data/com.breel.wallpapers18/code_cache +64772 3000 -1 /data/data/com.android.backupconfirm +64772 3001 -1 /data/data/com.android.backupconfirm/cache +64772 3002 -1 /data/data/com.android.backupconfirm/code_cache +64772 5088 -1 /data/data/com.android.sdm.plugins.connmo +64772 5089 -1 /data/data/com.android.sdm.plugins.connmo/cache +64772 5090 -1 /data/data/com.android.sdm.plugins.connmo/code_cache +64772 5413 -1 /data/data/com.verizon.obdm +64772 5414 -1 /data/data/com.verizon.obdm/cache +64772 5415 -1 /data/data/com.verizon.obdm/code_cache +64772 3009 -1 /data/data/com.android.systemui.auto_generated_rro_vendor__ +64772 3010 -1 /data/data/com.android.systemui.auto_generated_rro_vendor__/cache +64772 3011 -1 /data/data/com.android.systemui.auto_generated_rro_vendor__/code_cache +64772 3013 -1 /data/data/com.android.internal.systemui.navbar.twobutton +64772 3014 -1 /data/data/com.android.internal.systemui.navbar.twobutton/cache +64772 3015 -1 /data/data/com.android.internal.systemui.navbar.twobutton/code_cache +64772 5152 -1 /data/data/com.google.ar.core +64772 5153 -1 /data/data/com.google.ar.core/cache +64772 5154 -1 /data/data/com.google.ar.core/code_cache +64772 3019 -1 /data/data/com.qualcomm.qti.radioconfiginterface +64772 3020 -1 /data/data/com.qualcomm.qti.radioconfiginterface/cache +64772 3021 -1 /data/data/com.qualcomm.qti.radioconfiginterface/code_cache +64772 3022 -1 /data/data/org.codeaurora.ims +64772 3023 -1 /data/data/org.codeaurora.ims/cache +64772 3024 -1 /data/data/org.codeaurora.ims/code_cache +64772 3025 -1 /data/data/com.android.statementservice +64772 3026 -1 /data/data/com.android.statementservice/cache +64772 3027 -1 /data/data/com.android.statementservice/code_cache +64772 3029 -1 /data/data/com.android.hotspot2 +64772 3030 -1 /data/data/com.android.hotspot2/cache +64772 3031 -1 /data/data/com.android.hotspot2/code_cache +64772 5091 -1 /data/data/com.google.android.googlequicksearchbox +64772 5092 -1 /data/data/com.google.android.googlequicksearchbox/cache +64772 1889 -1 /data/data/com.google.android.googlequicksearchbox/cache/cronet-async +64772 1894 -1 /data/data/com.google.android.googlequicksearchbox/cache/cronet-async/version +64772 1892 -1 /data/data/com.google.android.googlequicksearchbox/cache/cronet-async/prefs +64772 7123 -1 /data/data/com.google.android.googlequicksearchbox/cache/cronet-async/prefs/local_prefs.json +64772 6250 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView +64772 6251 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/SafeBrowsing +64772 6252 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad +64772 6271 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/new +64772 6272 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/pending +64772 6273 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/completed +64772 6274 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/attachments +64772 6275 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crashpad/settings.dat +64772 6270 -1 /data/data/com.google.android.googlequicksearchbox/cache/WebView/Crash Reports +64772 6255 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview +64772 6256 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache +64772 6257 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache/js +64772 6258 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache/js/index +64772 6259 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache/js/index-dir +64772 6260 -1 /data/data/com.google.android.googlequicksearchbox/cache/org.chromium.android_webview/Code Cache/js/index-dir/the-real-index +64772 9393 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars +64772 9506 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US +64772 9100 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names +64772 9101 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213 +64772 9163 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213/SONG_NAME.fst +64772 9201 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213/SONG_NAME.syms +64772 9252 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213/metadata +64772 9254 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/music_names/v1571181043213/digest +64772 9303 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names +64772 9302 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620 +64772 9234 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620/CONTACT_NAME.fst +64772 9186 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620/CONTACT_NAME.syms +64772 9187 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620/metadata +64772 9199 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/contact_names/v1571181043620/digest +64772 9732 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names +64772 9304 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828 +64772 9272 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828/APP_NAME.fst +64772 9194 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828/APP_NAME.syms +64772 9261 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828/metadata +64772 9193 -1 /data/data/com.google.android.googlequicksearchbox/cache/g3_grammars/en-US/app_names/v1571181043828/digest +64772 5093 -1 /data/data/com.google.android.googlequicksearchbox/code_cache +64772 1633 -1 /data/data/com.google.android.googlequicksearchbox/files +64772 6167 -1 /data/data/com.google.android.googlequicksearchbox/files/recently +64772 4770 -1 /data/data/com.google.android.googlequicksearchbox/files/recently/notLoggedIn +64772 9226 -1 /data/data/com.google.android.googlequicksearchbox/files/native_crash_dir +64772 9090 -1 /data/data/com.google.android.googlequicksearchbox/files/native_crash_dir/com.google.android.googlequicksearchbox:search +64772 1472 -1 /data/data/com.google.android.googlequicksearchbox/files/velour +64772 1470 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/preferences +64772 1478 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/preferences/wernicke_player +64772 7423 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/preferences/ipa +64772 8840 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/preferences/ipa/IpaBgTask +64772 7446 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data +64772 7447 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data/ipa +64772 7456 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data/ipa/TopServingContacts +64772 7457 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data/ipa/ipa_0p_instant_cache +64772 7458 -1 /data/data/com.google.android.googlequicksearchbox/files/velour/feature_data/ipa/ZeroPrefixContacts +64772 6792 -1 /data/data/com.google.android.googlequicksearchbox/files/client_data_request_log +64772 1465 -1 /data/data/com.google.android.googlequicksearchbox/files/persisted_profiling_statistics +64772 1644 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs +64772 1404 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/GEL.GSAPrefs.xml +64772 6454 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/consecutive_crash_stats.xml +64772 1391 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/uncaught_exception_handler_stats.xml +64772 1398 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/default_process_uncaught_exception_handler_stats.xml +64772 1370 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/interactor_process_uncaught_exception_handler_stats.xml +64772 5563 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/VoiceInteractionService.xml +64772 6163 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/WebViewChromiumPrefs.xml +64772 7494 -1 /data/data/com.google.android.googlequicksearchbox/shared_prefs/ThrottlingLogger.xml +64772 1652 -1 /data/data/com.google.android.googlequicksearchbox/app_shared_prefs +64772 8087 -1 /data/data/com.google.android.googlequicksearchbox/app_shared_prefs/SearchSettings.bin +64772 1394 -1 /data/data/com.google.android.googlequicksearchbox/app_shared_prefs/StartupSettings.bin +64772 1471 -1 /data/data/com.google.android.googlequicksearchbox/app_si +64772 1426 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store +64772 1449 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store/content_store.db +64772 1440 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store/content_store.db-journal +64772 7592 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store/content_store.db-wal +64772 7609 -1 /data/data/com.google.android.googlequicksearchbox/app_si/now_content_store/content_store.db-shm +64772 5721 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store +64772 5722 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store/content_store.db +64772 5723 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store/content_store.db-journal +64772 7879 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store/content_store.db-wal +64772 7882 -1 /data/data/com.google.android.googlequicksearchbox/app_si/state_dump_event_content_store/content_store.db-shm +64772 7450 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store +64772 7451 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store/content_store.db +64772 7452 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store/content_store.db-journal +64772 7454 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store/content_store.db-wal +64772 7455 -1 /data/data/com.google.android.googlequicksearchbox/app_si/accl_conv_client_content_store/content_store.db-shm +64772 7462 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store +64772 7463 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store/content_store.db +64772 7464 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store/content_store.db-journal +64772 7467 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store/content_store.db-wal +64772 7468 -1 /data/data/com.google.android.googlequicksearchbox/app_si/entry_notification_content_store/content_store.db-shm +64772 7472 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store +64772 7473 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store/content_store.db +64772 7474 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store/content_store.db-journal +64772 7475 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store/content_store.db-wal +64772 7476 -1 /data/data/com.google.android.googlequicksearchbox/app_si/homescreen_shortcut_content_store/content_store.db-shm +64772 7479 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store +64772 7480 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store/content_store.db +64772 7481 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store/content_store.db-journal +64772 7486 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store/content_store.db-wal +64772 7487 -1 /data/data/com.google.android.googlequicksearchbox/app_si/opa_content_store/content_store.db-shm +64772 7483 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store +64772 7484 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store/content_store.db +64772 7485 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store/content_store.db-journal +64772 7488 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store/content_store.db-wal +64772 7489 -1 /data/data/com.google.android.googlequicksearchbox/app_si/proactive_key_value_content_store/content_store.db-shm +64772 7496 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store +64772 7497 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store/content_store.db +64772 7499 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store/content_store.db-journal +64772 7500 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store/content_store.db-wal +64772 7501 -1 /data/data/com.google.android.googlequicksearchbox/app_si/search_widget_overlay_content_store/content_store.db-shm +64772 7506 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store +64772 7509 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store/content_store.db +64772 7510 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store/content_store.db-journal +64772 7512 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store/content_store.db-wal +64772 7513 -1 /data/data/com.google.android.googlequicksearchbox/app_si/searchbox_stats_content_store/content_store.db-shm +64772 7507 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store +64772 7508 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store/content_store.db +64772 7511 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store/content_store.db-journal +64772 7514 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store/content_store.db-wal +64772 7515 -1 /data/data/com.google.android.googlequicksearchbox/app_si/shortcuts_content_store/content_store.db-shm +64772 7516 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store +64772 7517 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store/content_store.db +64772 7518 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store/content_store.db-journal +64772 7519 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store/content_store.db-wal +64772 7520 -1 /data/data/com.google.android.googlequicksearchbox/app_si/srp_content_store/content_store.db-shm +64772 5976 -1 /data/data/com.google.android.googlequicksearchbox/app_sid +64772 5983 -1 /data/data/com.google.android.googlequicksearchbox/databases +64772 5985 -1 /data/data/com.google.android.googlequicksearchbox/databases/accounts.notifications.db +64772 5987 -1 /data/data/com.google.android.googlequicksearchbox/databases/accounts.notifications.db-journal +64772 5989 -1 /data/data/com.google.android.googlequicksearchbox/databases/-1_threads.notifications.db +64772 5990 -1 /data/data/com.google.android.googlequicksearchbox/databases/-1_threads.notifications.db-journal +64772 6709 -1 /data/data/com.google.android.googlequicksearchbox/databases/icing-mdh.db +64772 6710 -1 /data/data/com.google.android.googlequicksearchbox/databases/icing-mdh.db-journal +64772 9227 -1 /data/data/com.google.android.googlequicksearchbox/databases/opa_history +64772 9235 -1 /data/data/com.google.android.googlequicksearchbox/databases/opa_history-journal +64772 6155 -1 /data/data/com.google.android.googlequicksearchbox/app_webview +64772 6157 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/variations_seed_new +64772 6158 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/variations_stamp +64772 6160 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Cookies +64772 6162 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Cookies-journal +64772 6248 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/webview_data.lock +64772 6253 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Web Data +64772 6254 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Web Data-journal +64772 6263 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/GPUCache +64772 6264 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/GPUCache/index +64772 6265 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/GPUCache/index-dir +64772 6266 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/GPUCache/index-dir/the-real-index +64772 6267 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/blob_storage +64772 4709 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/blob_storage/0f4b2aac-8cf5-40cc-98ea-51b9da55cfdd +64772 5538 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage +64772 5540 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/LOG +64772 1371 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/LOCK +64772 1395 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/MANIFEST-000001 +64772 1428 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/000003.log +64772 1442 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/Session Storage/CURRENT +64772 6391 -1 /data/data/com.google.android.googlequicksearchbox/app_webview/pref_store +64772 6156 -1 /data/data/com.google.android.googlequicksearchbox/app_textures +64772 6262 -1 /data/data/com.google.android.googlequicksearchbox/app_webview_geolocation +64772 6346 -1 /data/data/com.google.android.googlequicksearchbox/app_session +64772 6347 -1 /data/data/com.google.android.googlequicksearchbox/app_session/00000000084429550670.binarypb +64772 7079 -1 /data/data/com.google.android.googlequicksearchbox/app_session/00000000221868505453.binarypb +64772 9073 -1 /data/data/com.google.android.googlequicksearchbox/app_session/00000000000000000100.binarypb +64772 9068 -1 /data/data/com.google.android.googlequicksearchbox/app_g3_models +64772 5155 -1 /data/data/com.android.vending +64772 5156 -1 /data/data/com.android.vending/cache +64772 2365 -1 /data/data/com.android.vending/cache/logs +64772 2363 -1 /data/data/com.android.vending/cache/logs/null_account.metalog +64772 5024 -1 /data/data/com.android.vending/cache/logs/null_account.metalog/play_metalog.log +64772 5042 -1 /data/data/com.android.vending/cache/logs/null_account.metalog/logs_upload_attempt.log +64772 2408 -1 /data/data/com.android.vending/cache/logs/null_account +64772 2409 -1 /data/data/com.android.vending/cache/logs/null_account/eventlog.store5718595412279402518.log +64772 6909 -1 /data/data/com.android.vending/cache/logs/null_account/eventlog.store1261484706649828691.log +64772 2732 -1 /data/data/com.android.vending/cache/images +64772 3008 -1 /data/data/com.android.vending/cache/main +64772 4146 -1 /data/data/com.android.vending/cache/aia-logs +64772 4147 -1 /data/data/com.android.vending/cache/aia-logs/null_account.metalog +64772 1639 -1 /data/data/com.android.vending/cache/aia-logs/null_account.metalog/play_metalog.log +64772 1733 -1 /data/data/com.android.vending/cache/aia-logs/null_account.metalog/logs_upload_attempt.log +64772 4733 -1 /data/data/com.android.vending/cache/aia-logs/null_account +64772 4736 -1 /data/data/com.android.vending/cache/aia-logs/null_account/eventlog.store5624403825978734260.log +64772 5157 -1 /data/data/com.android.vending/code_cache +64772 2650 -1 /data/data/com.android.vending/files +64772 2426 -1 /data/data/com.android.vending/shared_prefs +64772 7058 -1 /data/data/com.android.vending/shared_prefs/finsky.xml +64772 7004 -1 /data/data/com.android.vending/shared_prefs/event_generator.xml +64772 4497 -1 /data/data/com.android.vending/shared_prefs/cache_and_sync_preferences.xml +64772 4997 -1 /data/data/com.android.vending/shared_prefs/verify_app_single_user_settings_shared_prefs.xml +64772 5693 -1 /data/data/com.android.vending/shared_prefs/com.google.android.gcm.xml +64772 5831 -1 /data/data/com.android.vending/shared_prefs/vending_preferences.xml +64772 5806 -1 /data/data/com.android.vending/shared_prefs/com.google.android.gms.appid.xml +64772 2339 -1 /data/data/com.android.vending/databases +64772 2344 -1 /data/data/com.android.vending/databases/library.db +64772 2364 -1 /data/data/com.android.vending/databases/library.db-journal +64772 2468 -1 /data/data/com.android.vending/databases/scheduler +64772 2467 -1 /data/data/com.android.vending/databases/scheduler-journal +64772 3636 -1 /data/data/com.android.vending/databases/localappstate.db +64772 3573 -1 /data/data/com.android.vending/databases/localappstate.db-journal +64772 4710 -1 /data/data/com.android.vending/databases/install_queue.db +64772 4712 -1 /data/data/com.android.vending/databases/install_queue.db-journal +64772 4719 -1 /data/data/com.android.vending/databases/frosting.db +64772 4725 -1 /data/data/com.android.vending/databases/frosting.db-journal +64772 5758 -1 /data/data/com.android.vending/databases/verify_apps.db +64772 5760 -1 /data/data/com.android.vending/databases/verify_apps.db-journal +64772 5825 -1 /data/data/com.android.vending/databases/phenotype.db +64772 5826 -1 /data/data/com.android.vending/databases/phenotype.db-journal +64772 5833 -1 /data/data/com.android.vending/databases/split_install_service +64772 5835 -1 /data/data/com.android.vending/databases/split_install_service-journal +64772 4864 -1 /data/data/com.android.vending/app_FinskySetup +64772 5691 -1 /data/data/com.android.vending/no_backup +64772 5692 -1 /data/data/com.android.vending/no_backup/com.google.android.gms.appid-no-backup +64772 5805 -1 /data/data/com.android.vending/no_backup/com.google.InstanceId.properties +64772 5823 -1 /data/data/com.android.vending/app_sslcache +64772 3038 -1 /data/data/com.android.internal.systemui.navbar.gestural_extra_wide_back +64772 3039 -1 /data/data/com.android.internal.systemui.navbar.gestural_extra_wide_back/cache +64772 3040 -1 /data/data/com.android.internal.systemui.navbar.gestural_extra_wide_back/code_cache +64772 3041 -1 /data/data/com.qualcomm.qcrilmsgtunnel +64772 3042 -1 /data/data/com.qualcomm.qcrilmsgtunnel/cache +64772 3043 -1 /data/data/com.qualcomm.qcrilmsgtunnel/code_cache +64772 3044 -1 /data/data/com.android.providers.settings +64772 3045 -1 /data/data/com.android.providers.settings/cache +64772 3046 -1 /data/data/com.android.providers.settings/code_cache +64772 3047 -1 /data/data/com.android.sharedstoragebackup +64772 3048 -1 /data/data/com.android.sharedstoragebackup/cache +64772 3049 -1 /data/data/com.android.sharedstoragebackup/code_cache +64772 3050 -1 /data/data/com.android.printspooler +64772 3051 -1 /data/data/com.android.printspooler/cache +64772 3360 -1 /data/data/com.android.printspooler/cache/icons +64772 3052 -1 /data/data/com.android.printspooler/code_cache +64772 3358 -1 /data/data/com.android.printspooler/files +64772 3361 -1 /data/data/com.android.printspooler/shared_prefs +64772 3053 -1 /data/data/com.android.theme.icon_pack.filled.settings +64772 3054 -1 /data/data/com.android.theme.icon_pack.filled.settings/cache +64772 3055 -1 /data/data/com.android.theme.icon_pack.filled.settings/code_cache +64772 3056 -1 /data/data/com.android.dreams.basic +64772 3057 -1 /data/data/com.android.dreams.basic/cache +64772 3058 -1 /data/data/com.android.dreams.basic/code_cache +64772 5180 -1 /data/data/com.google.android.as +64772 5181 -1 /data/data/com.google.android.as/cache +64772 5182 -1 /data/data/com.google.android.as/code_cache +64772 1571 -1 /data/data/com.google.android.as/shared_prefs +64772 2281 -1 /data/data/com.google.android.as/shared_prefs/com.google.android.gms.appid.xml +64772 7921 -1 /data/data/com.google.android.as/shared_prefs/aiai_reflection_shared_prefs.xml +64772 6711 -1 /data/data/com.google.android.as/shared_prefs/aiai_matchmaker_phenotype_config.xml +64772 1585 -1 /data/data/com.google.android.as/files +64772 1625 -1 /data/data/com.google.android.as/files/superpacks +64772 1626 -1 /data/data/com.google.android.as/files/superpacks/manifests +64772 1661 -1 /data/data/com.google.android.as/files/superpacks/manifests/template_table-2-en-us_bundled-3 +64772 1753 -1 /data/data/com.google.android.as/files/superpacks/template_table-2-en-us_bundled +64772 1758 -1 /data/data/com.google.android.as/files/superpacks/template_table-2-en-us_bundled/template_table_main +64772 1756 -1 /data/data/com.google.android.as/files/superpacks/template_table-2-en-us_bundled/template_table_main/template_table +64772 1649 -1 /data/data/com.google.android.as/files/reflection_gel.engine +64772 7870 -1 /data/data/com.google.android.as/files/assist_recognizer_0.2.bincfg +64772 7860 -1 /data/data/com.google.android.as/files/mognet_script_detector_10scripts_0.1.model +64772 8009 -1 /data/data/com.google.android.as/files/nugget_stats_1.0.dat +64772 8010 -1 /data/data/com.google.android.as/files/region_proposal_text_detector_tfmini_gray_quantized.bincfg +64772 7887 -1 /data/data/com.google.android.as/files/script_detector_10scripts_0.1.bincfg +64772 4765 -1 /data/data/com.google.android.as/files/seastar_lstm_recognizer_latin_0.2.class_lst +64772 4779 -1 /data/data/com.google.android.as/files/semanticlift_engine_scripts_0.3.bincfg +64772 4781 -1 /data/data/com.google.android.as/files/tfmini_latin_conv_model.data_fp16 +64772 7884 -1 /data/data/com.google.android.as/files/tfmini_latin_lstm_model.data_fp16 +64772 8107 -1 /data/data/com.google.android.as/files/tfmini_lstm_recognizer_latin_0.3_batch24.bincfg +64772 8110 -1 /data/data/com.google.android.as/files/tfmini_rpn_detector_space_to_depth_gray_quantized_v2_model.data +64772 7528 -1 /data/data/com.google.android.as/files/backup_reflection_gel.engine +64772 1598 -1 /data/data/com.google.android.as/databases +64772 1600 -1 /data/data/com.google.android.as/databases/notifications_impression +64772 1605 -1 /data/data/com.google.android.as/databases/notifications_impression-wal +64772 1606 -1 /data/data/com.google.android.as/databases/notifications_impression-shm +64772 1607 -1 /data/data/com.google.android.as/databases/superpacks.db +64772 1608 -1 /data/data/com.google.android.as/databases/superpacks.db-journal +64772 1654 -1 /data/data/com.google.android.as/databases/reflection_gel_events.db +64772 1656 -1 /data/data/com.google.android.as/databases/reflection_gel_events.db-journal +64772 2427 -1 /data/data/com.google.android.as/databases/aiai_matchmaker_fa_db +64772 2521 -1 /data/data/com.google.android.as/databases/aiai_matchmaker_fa_db-wal +64772 2518 -1 /data/data/com.google.android.as/databases/aiai_matchmaker_fa_db-shm +64772 1734 -1 /data/data/com.google.android.as/no_backup +64772 1732 -1 /data/data/com.google.android.as/no_backup/com.google.android.gms.appid-no-backup +64772 2283 -1 /data/data/com.google.android.as/no_backup/com.google.InstanceId.properties +64772 3063 -1 /data/data/com.android.se +64772 3064 -1 /data/data/com.android.se/cache +64772 3065 -1 /data/data/com.android.se/code_cache +64772 3066 -1 /data/data/com.android.inputdevices +64772 3067 -1 /data/data/com.android.inputdevices/cache +64772 3068 -1 /data/data/com.android.inputdevices/code_cache +64772 3069 -1 /data/data/com.android.bips +64772 3070 -1 /data/data/com.android.bips/cache +64772 3071 -1 /data/data/com.android.bips/code_cache +64772 3548 -1 /data/data/com.qti.ltebc +64772 1333 -1 /data/data/com.qti.ltebc/cache +64772 521 -1 /data/data/com.qti.ltebc/code_cache +64772 4827 -1 /data/data/com.qti.ltebc/files +64772 6243 -1 /data/data/com.qti.ltebc/shared_prefs +64772 7178 -1 /data/data/com.qti.ltebc/shared_prefs/alarm.xml +64772 3075 -1 /data/data/com.android.theme.icon_pack.circular.settings +64772 3076 -1 /data/data/com.android.theme.icon_pack.circular.settings/cache +64772 3077 -1 /data/data/com.android.theme.icon_pack.circular.settings/code_cache +64772 3078 -1 /data/data/com.qti.xdivert +64772 3079 -1 /data/data/com.qti.xdivert/cache +64772 3080 -1 /data/data/com.qti.xdivert/code_cache +64772 3081 -1 /data/data/com.android.musicfx +64772 3082 -1 /data/data/com.android.musicfx/cache +64772 3083 -1 /data/data/com.android.musicfx/code_cache +64772 3084 -1 /data/data/com.android.bluetooth.auto_generated_rro_vendor__ +64772 3085 -1 /data/data/com.android.bluetooth.auto_generated_rro_vendor__/cache +64772 3086 -1 /data/data/com.android.bluetooth.auto_generated_rro_vendor__/code_cache +64772 3087 -1 /data/data/com.android.cellbroadcastreceiver +64772 3088 -1 /data/data/com.android.cellbroadcastreceiver/cache +64772 3089 -1 /data/data/com.android.cellbroadcastreceiver/code_cache +64772 3090 -1 /data/data/android.telephony.overlay.cmcc +64772 3091 -1 /data/data/android.telephony.overlay.cmcc/cache +64772 3092 -1 /data/data/android.telephony.overlay.cmcc/code_cache +64772 3093 -1 /data/data/com.android.theme.icon.teardrop +64772 3094 -1 /data/data/com.android.theme.icon.teardrop/cache +64772 3095 -1 /data/data/com.android.theme.icon.teardrop/code_cache +64772 5094 -1 /data/data/com.google.android.onetimeinitializer +64772 5095 -1 /data/data/com.google.android.onetimeinitializer/cache +64772 5096 -1 /data/data/com.google.android.onetimeinitializer/code_cache +64772 6062 -1 /data/data/com.google.android.onetimeinitializer/shared_prefs +64772 6064 -1 /data/data/com.google.android.onetimeinitializer/shared_prefs/oti.xml +64772 1347 -1 /data/data/com.google.mds +64772 1337 -1 /data/data/com.google.mds/cache +64772 1348 -1 /data/data/com.google.mds/code_cache +64772 6240 -1 /data/data/com.google.mds/shared_prefs +64772 6241 -1 /data/data/com.google.mds/shared_prefs/com.google.mds.xml +64772 3102 -1 /data/data/com.android.server.telecom +64772 3103 -1 /data/data/com.android.server.telecom/cache +64772 3104 -1 /data/data/com.android.server.telecom/code_cache +64772 3105 -1 /data/data/com.android.keychain +64772 3106 -1 /data/data/com.android.keychain/cache +64772 3107 -1 /data/data/com.android.keychain/code_cache +64772 3108 -1 /data/data/com.android.service.ims +64772 3109 -1 /data/data/com.android.service.ims/cache +64772 3110 -1 /data/data/com.android.service.ims/code_cache +64772 5097 -1 /data/data/com.google.android.ext.shared +64772 5098 -1 /data/data/com.google.android.ext.shared/cache +64772 5099 -1 /data/data/com.google.android.ext.shared/code_cache +64772 5104 -1 /data/data/com.google.android.apps.diagnosticstool +64772 5105 -1 /data/data/com.google.android.apps.diagnosticstool/cache +64772 5106 -1 /data/data/com.google.android.apps.diagnosticstool/code_cache +64772 3120 -1 /data/data/com.android.theme.icon_pack.filled.systemui +64772 3121 -1 /data/data/com.android.theme.icon_pack.filled.systemui/cache +64772 3122 -1 /data/data/com.android.theme.icon_pack.filled.systemui/code_cache +64772 5183 -1 /data/data/com.google.android.gm +64772 5184 -1 /data/data/com.google.android.gm/cache +64772 5185 -1 /data/data/com.google.android.gm/code_cache +64772 1992 -1 /data/data/com.google.android.gm/shared_prefs +64772 6441 -1 /data/data/com.google.android.gm/shared_prefs/UnifiedEmail.xml +64772 9585 -1 /data/data/com.google.android.gm/shared_prefs/GMAIL_NETWORK_LOGGING_DEPOT.xml +64772 5966 -1 /data/data/com.google.android.gm/shared_prefs/Gmail.xml +64772 2153 -1 /data/data/com.google.android.gm/shared_prefs/_has_set_default_values.xml +64772 2204 -1 /data/data/com.google.android.gm/shared_prefs/com.google.android.gm_preferences.xml +64772 2205 -1 /data/data/com.google.android.gm/shared_prefs/MailAppProvider.xml +64772 6026 -1 /data/data/com.google.android.gm/shared_prefs/FlagPrefs.xml +64772 5962 -1 /data/data/com.google.android.gm/shared_prefs/timeZoneDbVersion.xml +64772 6408 -1 /data/data/com.google.android.gm/shared_prefs/AndroidMail.Main.xml +64772 2150 -1 /data/data/com.google.android.gm/databases +64772 2155 -1 /data/data/com.google.android.gm/databases/EmailProvider.db +64772 2203 -1 /data/data/com.google.android.gm/databases/EmailProvider.db-journal +64772 2315 -1 /data/data/com.google.android.gm/databases/EmailProviderBody.db +64772 2324 -1 /data/data/com.google.android.gm/databases/EmailProviderBody.db-journal +64772 1433 -1 /data/data/com.google.android.gm/files +64772 1462 -1 /data/data/com.google.android.gm/files/gaClientId +64772 3126 -1 /data/data/com.android.calllogbackup +64772 3127 -1 /data/data/com.android.calllogbackup/cache +64772 3128 -1 /data/data/com.android.calllogbackup/code_cache +64772 3129 -1 /data/data/com.android.safetyregulatoryinfo +64772 3130 -1 /data/data/com.android.safetyregulatoryinfo/cache +64772 3131 -1 /data/data/com.android.safetyregulatoryinfo/code_cache +64772 3132 -1 /data/data/com.android.localtransport +64772 3133 -1 /data/data/com.android.localtransport/cache +64772 3134 -1 /data/data/com.android.localtransport/code_cache +64772 3552 -1 /data/data/com.android.localtransport/files +64772 3553 -1 /data/data/com.android.localtransport/files/1 +64772 3554 -1 /data/data/com.android.localtransport/files/1/_full +64772 3555 -1 /data/data/com.android.localtransport/files/1/_delta +64772 5125 -1 /data/data/com.verizon.obdm_permissions +64772 5126 -1 /data/data/com.verizon.obdm_permissions/cache +64772 5127 -1 /data/data/com.verizon.obdm_permissions/code_cache +64772 3139 -1 /data/data/com.android.carrierdefaultapp +64772 3140 -1 /data/data/com.android.carrierdefaultapp/cache +64772 3141 -1 /data/data/com.android.carrierdefaultapp/code_cache +64772 5122 -1 /data/data/com.google.android.connectivitymonitor +64772 5123 -1 /data/data/com.google.android.connectivitymonitor/cache +64772 5124 -1 /data/data/com.google.android.connectivitymonitor/code_cache +64772 5917 -1 /data/data/com.google.android.connectivitymonitor/shared_prefs +64772 3146 -1 /data/data/com.android.theme.icon_pack.filled.android +64772 3147 -1 /data/data/com.android.theme.icon_pack.filled.android/cache +64772 3148 -1 /data/data/com.android.theme.icon_pack.filled.android/code_cache +64772 3150 -1 /data/data/com.android.proxyhandler +64772 3151 -1 /data/data/com.android.proxyhandler/cache +64772 3152 -1 /data/data/com.android.proxyhandler/code_cache +64772 3153 -1 /data/data/com.android.theme.icon_pack.circular.systemui +64772 3155 -1 /data/data/com.android.theme.icon_pack.circular.systemui/cache +64772 3156 -1 /data/data/com.android.theme.icon_pack.circular.systemui/code_cache +64772 5134 -1 /data/data/com.google.android.soundpicker +64772 5135 -1 /data/data/com.google.android.soundpicker/cache +64772 5136 -1 /data/data/com.google.android.soundpicker/code_cache +64772 3166 -1 /data/data/com.android.soundpicker +64772 3167 -1 /data/data/com.android.soundpicker/cache +64772 3168 -1 /data/data/com.android.soundpicker/code_cache +64772 3163 -1 /data/data/com.android.managedprovisioning +64772 3164 -1 /data/data/com.android.managedprovisioning/cache +64772 3165 -1 /data/data/com.android.managedprovisioning/code_cache +64772 3501 -1 /data/data/com.android.managedprovisioning/shared_prefs +64772 3502 -1 /data/data/com.android.managedprovisioning/files +64772 5131 -1 /data/data/com.google.android.apps.messaging +64772 5132 -1 /data/data/com.google.android.apps.messaging/cache +64772 5133 -1 /data/data/com.google.android.apps.messaging/code_cache +64772 5568 -1 /data/data/com.google.android.apps.messaging/files +64772 5603 -1 /data/data/com.google.android.apps.messaging/files/tiktok +64772 5604 -1 /data/data/com.google.android.apps.messaging/files/tiktok/103243289 +64772 5637 -1 /data/data/com.google.android.apps.messaging/files/4.4.083 (hydra_rc26_alldpi.arm64-v8a.phone) +64772 5571 -1 /data/data/com.google.android.apps.messaging/shared_prefs +64772 7643 -1 /data/data/com.google.android.apps.messaging/shared_prefs/com.google.android.gms.measurement.prefs.xml +64772 4754 -1 /data/data/com.google.android.apps.messaging/shared_prefs/bugle.xml +64772 5675 -1 /data/data/com.google.android.apps.messaging/shared_prefs/PhenotypePrefs.xml +64772 5677 -1 /data/data/com.google.android.apps.messaging/shared_prefs/growthkit_phenotype_prefs.xml +64772 5681 -1 /data/data/com.google.android.apps.messaging/shared_prefs/growthkit_shared_prefs.xml +64772 5686 -1 /data/data/com.google.android.apps.messaging/shared_prefs/buglesub_-1.xml +64772 6285 -1 /data/data/com.google.android.apps.messaging/shared_prefs/carrierservices_library_phenotype_preferences.xml +64772 5695 -1 /data/data/com.google.android.apps.messaging/shared_prefs/com.google.android.gms.appid.xml +64772 7316 -1 /data/data/com.google.android.apps.messaging/shared_prefs/com.google.android.apps.messaging_preferences.xml +64772 6290 -1 /data/data/com.google.android.apps.messaging/shared_prefs/gsma.joyn.preferences.xml +64772 5574 -1 /data/data/com.google.android.apps.messaging/no_backup +64772 5575 -1 /data/data/com.google.android.apps.messaging/no_backup/com.google.android.gms.appid-no-backup +64772 5694 -1 /data/data/com.google.android.apps.messaging/no_backup/com.google.InstanceId.properties +64772 5608 -1 /data/data/com.google.android.apps.messaging/databases +64772 5609 -1 /data/data/com.google.android.apps.messaging/databases/androidx.work.workdb +64772 5611 -1 /data/data/com.google.android.apps.messaging/databases/androidx.work.workdb-wal +64772 5612 -1 /data/data/com.google.android.apps.messaging/databases/androidx.work.workdb-shm +64772 5640 -1 /data/data/com.google.android.apps.messaging/databases/bugle_db +64772 5642 -1 /data/data/com.google.android.apps.messaging/databases/bugle_db-wal +64772 5643 -1 /data/data/com.google.android.apps.messaging/databases/bugle_db-shm +64772 7227 -1 /data/data/com.google.android.apps.messaging/databases/growthkit.db +64772 3175 -1 /data/data/com.android.providers.partnerbookmarks +64772 3176 -1 /data/data/com.android.providers.partnerbookmarks/cache +64772 3177 -1 /data/data/com.android.providers.partnerbookmarks/code_cache +64772 3181 -1 /data/data/com.android.service.ims.presence +64772 3182 -1 /data/data/com.android.service.ims.presence/cache +64772 3183 -1 /data/data/com.android.service.ims.presence/code_cache +64772 3356 -1 /data/data/com.android.service.ims.presence/databases +64772 3520 -1 /data/data/com.android.service.ims.presence/databases/rcseab.db +64772 3521 -1 /data/data/com.android.service.ims.presence/databases/rcseab.db-journal +64772 3519 -1 /data/data/com.android.service.ims.presence/shared_prefs +64772 3526 -1 /data/data/com.android.service.ims.presence/shared_prefs/com.android.vt.eab.xml +64772 3184 -1 /data/data/com.android.wallpaper.livepicker +64772 3185 -1 /data/data/com.android.wallpaper.livepicker/cache +64772 3186 -1 /data/data/com.android.wallpaper.livepicker/code_cache +64772 3187 -1 /data/data/com.android.phone.auto_generated_rro_vendor__ +64772 3188 -1 /data/data/com.android.phone.auto_generated_rro_vendor__/cache +64772 3189 -1 /data/data/com.android.phone.auto_generated_rro_vendor__/code_cache +64772 3193 -1 /data/data/com.android.theme.icon.squircle +64772 3194 -1 /data/data/com.android.theme.icon.squircle/cache +64772 3195 -1 /data/data/com.android.theme.icon.squircle/code_cache +64772 3214 -1 /data/data/com.android.nfc.auto_generated_rro_vendor__ +64772 3215 -1 /data/data/com.android.nfc.auto_generated_rro_vendor__/cache +64772 3216 -1 /data/data/com.android.nfc.auto_generated_rro_vendor__/code_cache +64772 3235 -1 /data/data/com.android.shell +64772 3236 -1 /data/data/com.android.shell/cache +64772 3237 -1 /data/data/com.android.shell/code_cache +64772 3250 -1 /data/data/com.android.emergency +64772 3251 -1 /data/data/com.android.emergency/cache +64772 3252 -1 /data/data/com.android.emergency/code_cache +64772 3256 -1 /data/data/com.android.location.fused +64772 3257 -1 /data/data/com.android.location.fused/cache +64772 3258 -1 /data/data/com.android.location.fused/code_cache +64772 3259 -1 /data/data/com.android.theme.color.orchid +64772 3260 -1 /data/data/com.android.theme.color.orchid/cache +64772 3261 -1 /data/data/com.android.theme.color.orchid/code_cache +64772 3268 -1 /data/data/com.android.theme.color.purple +64772 3269 -1 /data/data/com.android.theme.color.purple/cache +64772 3270 -1 /data/data/com.android.theme.color.purple/code_cache +64772 3274 -1 /data/data/com.qualcomm.qti.confdialer +64772 3275 -1 /data/data/com.qualcomm.qti.confdialer/cache +64772 3276 -1 /data/data/com.qualcomm.qti.confdialer/code_cache +64772 5171 -1 /data/data/com.google.android.grilservice +64772 5172 -1 /data/data/com.google.android.grilservice/cache +64772 5173 -1 /data/data/com.google.android.grilservice/code_cache +64772 3280 -1 /data/data/com.android.traceur +64772 3281 -1 /data/data/com.android.traceur/cache +64772 3282 -1 /data/data/com.android.traceur/code_cache +64772 3578 -1 /data/data/com.android.traceur/shared_prefs +64772 3581 -1 /data/data/com.android.traceur/shared_prefs/com.android.traceur_preferences.xml +64772 3283 -1 /data/data/com.google.pixel.crosshatch.gamedriver +64772 3284 -1 /data/data/com.google.pixel.crosshatch.gamedriver/cache +64772 3285 -1 /data/data/com.google.pixel.crosshatch.gamedriver/code_cache +64772 3286 -1 /data/data/com.android.bluetooth +64772 3287 -1 /data/data/com.android.bluetooth/cache +64772 3288 -1 /data/data/com.android.bluetooth/code_cache +64772 5189 -1 /data/data/com.android.sdm.plugins.sprintdm +64772 5190 -1 /data/data/com.android.sdm.plugins.sprintdm/cache +64772 5191 -1 /data/data/com.android.sdm.plugins.sprintdm/code_cache +64772 3298 -1 /data/data/com.qualcomm.embms +64772 3299 -1 /data/data/com.qualcomm.embms/cache +64772 3300 -1 /data/data/com.qualcomm.embms/code_cache +64772 3307 -1 /data/data/com.android.theme.icon.roundedrect +64772 3308 -1 /data/data/com.android.theme.icon.roundedrect/cache +64772 3309 -1 /data/data/com.android.theme.icon.roundedrect/code_cache +64772 3310 -1 /data/data/com.android.internal.systemui.navbar.gestural_narrow_back +64772 3311 -1 /data/data/com.android.internal.systemui.navbar.gestural_narrow_back/cache +64772 3312 -1 /data/data/com.android.internal.systemui.navbar.gestural_narrow_back/code_cache +64772 3313 -1 /data/data/com.android.theme.icon_pack.rounded.settings +64772 3314 -1 /data/data/com.android.theme.icon_pack.rounded.settings/cache +64772 3315 -1 /data/data/com.android.theme.icon_pack.rounded.settings/code_cache +64772 3319 -1 /data/data/com.android.theme.icon_pack.circular.android +64772 3320 -1 /data/data/com.android.theme.icon_pack.circular.android/cache +64772 3321 -1 /data/data/com.android.theme.icon_pack.circular.android/code_cache +64772 5113 -1 /data/data/com.android.simappdialog.auto_generated_rro_product__ +64772 5114 -1 /data/data/com.android.simappdialog.auto_generated_rro_product__/cache +64772 5115 -1 /data/data/com.android.simappdialog.auto_generated_rro_product__/code_cache +64772 5116 -1 /data/data/com.android.safetyregulatoryinfo.auto_generated_rro_product__ +64772 5117 -1 /data/data/com.android.safetyregulatoryinfo.auto_generated_rro_product__/cache +64772 5118 -1 /data/data/com.android.safetyregulatoryinfo.auto_generated_rro_product__/code_cache +64772 5128 -1 /data/data/com.android.systemui.auto_generated_rro_product__ +64772 5129 -1 /data/data/com.android.systemui.auto_generated_rro_product__/cache +64772 5130 -1 /data/data/com.android.systemui.auto_generated_rro_product__/code_cache +64772 5140 -1 /data/data/android.autoinstalls.config.google.nexus +64772 5141 -1 /data/data/android.autoinstalls.config.google.nexus/cache +64772 5142 -1 /data/data/android.autoinstalls.config.google.nexus/code_cache +64772 5159 -1 /data/data/com.google.android.marvin.talkback +64772 5160 -1 /data/data/com.google.android.marvin.talkback/cache +64772 5161 -1 /data/data/com.google.android.marvin.talkback/code_cache +64772 5165 -1 /data/data/com.android.hotwordenrollment.xgoogle +64772 5166 -1 /data/data/com.android.hotwordenrollment.xgoogle/cache +64772 5167 -1 /data/data/com.android.hotwordenrollment.xgoogle/code_cache +64772 5595 -1 /data/data/com.android.hotwordenrollment.xgoogle/shared_prefs +64772 5605 -1 /data/data/com.android.hotwordenrollment.xgoogle/shared_prefs/enrollment_prefs.xml +64772 5192 -1 /data/data/com.android.ramdump +64772 5193 -1 /data/data/com.android.ramdump/cache +64772 5194 -1 /data/data/com.android.ramdump/code_cache +64772 5679 -1 /data/data/com.android.ramdump/files +64772 6106 -1 /data/data/com.android.ramdump/databases +64772 6107 -1 /data/data/com.android.ramdump/databases/ramdump.db +64772 6108 -1 /data/data/com.android.ramdump/databases/ramdump.db-journal +64772 5195 -1 /data/data/com.google.android.permissioncontroller +64772 5196 -1 /data/data/com.google.android.permissioncontroller/cache +64772 5197 -1 /data/data/com.google.android.permissioncontroller/code_cache +64772 5198 -1 /data/data/com.google.intelligence.sense +64772 5199 -1 /data/data/com.google.intelligence.sense/cache +64772 5200 -1 /data/data/com.google.intelligence.sense/code_cache +64772 6195 -1 /data/data/com.google.intelligence.sense/shared_prefs +64772 6204 -1 /data/data/com.google.intelligence.sense/shared_prefs/com.google.intelligence.sense_preferences.xml +64772 6207 -1 /data/data/com.google.intelligence.sense/shared_prefs/_has_set_default_values.xml +64772 6222 -1 /data/data/com.google.intelligence.sense/shared_prefs/phenotypePrefs.xml +64772 6197 -1 /data/data/com.google.intelligence.sense/files +64772 6198 -1 /data/data/com.google.intelligence.sense/databases +64772 6199 -1 /data/data/com.google.intelligence.sense/databases/superpacks.db +64772 6200 -1 /data/data/com.google.intelligence.sense/databases/superpacks.db-journal +64772 5201 -1 /data/data/com.google.android.setupwizard +64772 5202 -1 /data/data/com.google.android.setupwizard/cache +64772 5203 -1 /data/data/com.google.android.setupwizard/code_cache +64772 1532 -1 /data/data/com.google.android.setupwizard/shared_prefs +64772 1541 -1 /data/data/com.google.android.setupwizard/files +64772 1542 -1 /data/data/com.google.android.setupwizard/files/metrics +64772 1543 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP +64772 1544 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_c83624cc-dd63-4935-b7a2-8953f812a04c.protobuf +64772 1663 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_f9db700f-766d-4962-a025-d1ebfd434c4c.protobuf +64772 5878 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_f13c2ece-103d-4cd8-8cd2-0dd60f9d0a15.protobuf +64772 6101 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_4ff8029d-1ac1-4980-9479-e9893bd85670.protobuf +64772 6417 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_da5ce5c7-59a2-4532-a5da-c61075cd2ecb.protobuf +64772 6888 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_783f5c56-ada0-4201-8b55-23695e47fbba.protobuf +64772 7012 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_b4d96681-1124-4962-94e5-81f191d9342f.protobuf +64772 6975 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_695d4d5b-a7b1-4a87-b9a7-4d56c4383669.protobuf +64772 7097 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_3d425ea5-fe06-4225-b560-0ada9e3bbc7e.protobuf +64772 3779 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_DEFERRED_SETUP/event_c4d8f88b-acde-4805-a502-60814f992ec9.protobuf +64772 1587 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_PREDEFERRED_SETUP +64772 1590 -1 /data/data/com.google.android.setupwizard/files/metrics/SESSION_TYPE_PREDEFERRED_SETUP/event_95401e40-f206-4f85-be1d-40e568b58302.protobuf +64772 5204 -1 /data/data/com.google.android.netgrapher +64772 5205 -1 /data/data/com.google.android.netgrapher/cache +64772 5206 -1 /data/data/com.google.android.netgrapher/code_cache +64772 5213 -1 /data/data/com.google.android.angle +64772 5214 -1 /data/data/com.google.android.angle/cache +64772 5215 -1 /data/data/com.google.android.angle/code_cache +64772 5698 -1 /data/data/com.google.android.angle/shared_prefs +64772 5699 -1 /data/data/com.google.android.angle/shared_prefs/com.google.android.angle_preferences.xml +64772 5222 -1 /data/data/com.google.android.volta +64772 5223 -1 /data/data/com.google.android.volta/cache +64772 5224 -1 /data/data/com.google.android.volta/code_cache +64772 6132 -1 /data/data/com.google.android.volta/shared_prefs +64772 7916 -1 /data/data/com.google.android.volta/shared_prefs/com.google.android.volta_preferences.xml +64772 6134 -1 /data/data/com.google.android.volta/shared_prefs/_has_set_default_values.xml +64772 6135 -1 /data/data/com.google.android.volta/shared_prefs/analytics.xml +64772 6137 -1 /data/data/com.google.android.volta/databases +64772 6139 -1 /data/data/com.google.android.volta/databases/volta_metrics.db +64772 6141 -1 /data/data/com.google.android.volta/databases/volta_metrics.db-wal +64772 6142 -1 /data/data/com.google.android.volta/databases/volta_metrics.db-shm +64772 6677 -1 /data/data/com.google.android.volta/files +64772 5231 -1 /data/data/com.android.providers.settings.auto_generated_rro_product__ +64772 5232 -1 /data/data/com.android.providers.settings.auto_generated_rro_product__/cache +64772 5233 -1 /data/data/com.android.providers.settings.auto_generated_rro_product__/code_cache +64772 5234 -1 /data/data/com.google.android.apps.wellbeing +64772 5235 -1 /data/data/com.google.android.apps.wellbeing/cache +64772 5236 -1 /data/data/com.google.android.apps.wellbeing/code_cache +64772 5240 -1 /data/data/com.google.android.apps.wellbeing/files +64772 5241 -1 /data/data/com.google.android.apps.wellbeing/files/tiktok +64772 5242 -1 /data/data/com.google.android.apps.wellbeing/files/tiktok/103243289 +64772 5450 -1 /data/data/com.google.android.apps.wellbeing/files/103795117 +64772 6734 -1 /data/data/com.google.android.apps.wellbeing/files/AppSyncPreferences.pb +64772 6808 -1 /data/data/com.google.android.apps.wellbeing/files/AppUsagePreferences.pb +64772 2953 -1 /data/data/com.google.android.apps.wellbeing/files/AppLimitPreferences.pb +64772 1735 -1 /data/data/com.google.android.apps.wellbeing/files/AutoDndPreferences.pb +64772 6439 -1 /data/data/com.google.android.apps.wellbeing/files/phenotype +64772 7268 -1 /data/data/com.google.android.apps.wellbeing/files/phenotype/com.google.android.apps.wellbeing.device +64772 5341 -1 /data/data/com.google.android.apps.wellbeing/shared_prefs +64772 1872 -1 /data/data/com.google.android.apps.wellbeing/databases +64772 1870 -1 /data/data/com.google.android.apps.wellbeing/databases/app_config +64772 3580 -1 /data/data/com.google.android.apps.wellbeing/databases/app_usage +64772 3615 -1 /data/data/com.google.android.apps.wellbeing/databases/app_usage-wal +64772 3445 -1 /data/data/com.google.android.apps.wellbeing/databases/app_usage-shm +64772 5237 -1 /data/data/com.google.android.dialer +64772 5238 -1 /data/data/com.google.android.dialer/cache +64772 3172 -1 /data/data/com.google.android.dialer/cache/persistent_log +64772 5055 -1 /data/data/com.google.android.dialer/cache/persistent_log/plain_text +64772 1729 -1 /data/data/com.google.android.dialer/cache/persistent_log/plain_text/0 +64772 5239 -1 /data/data/com.google.android.dialer/code_cache +64772 3617 -1 /data/data/com.google.android.dialer/files +64772 2404 -1 /data/data/com.google.android.dialer/files/photos +64772 4778 -1 /data/data/com.google.android.dialer/files/photos/raw +64772 4145 -1 /data/data/com.google.android.dialer/files/thumbnails +64772 4775 -1 /data/data/com.google.android.dialer/files/thumbnails/raw +64772 4782 -1 /data/data/com.google.android.dialer/files/audios +64772 4812 -1 /data/data/com.google.android.dialer/files/audios/raw +64772 4141 -1 /data/data/com.google.android.dialer/databases +64772 4815 -1 /data/data/com.google.android.dialer/databases/voicemail.db +64772 4840 -1 /data/data/com.google.android.dialer/databases/voicemail.db-journal +64772 5054 -1 /data/data/com.google.android.dialer/databases/dialer.db +64772 2951 -1 /data/data/com.google.android.dialer/databases/dialer.db-journal +64772 4875 -1 /data/data/com.google.android.dialer/shared_prefs +64772 5017 -1 /data/data/com.google.android.dialer/shared_prefs/com.google.android.dialer.xml +64772 5961 -1 /data/data/com.google.android.dialer/shared_prefs/com.google.android.dialer_preferences.xml +64772 5963 -1 /data/data/com.google.android.dialer/shared_prefs/dialer_phenotype_flags.xml +64772 2974 -1 /data/data/com.google.android.dialer/shared_prefs/com.android.dialer.xml +64772 5249 -1 /data/data/com.google.android.captiveportallogin +64772 5250 -1 /data/data/com.google.android.captiveportallogin/cache +64772 5251 -1 /data/data/com.google.android.captiveportallogin/code_cache +64772 5258 -1 /data/data/com.google.android.apps.docs +64772 5259 -1 /data/data/com.google.android.apps.docs/cache +64772 3569 -1 /data/data/com.google.android.apps.docs/cache/diskCache +64772 3114 -1 /data/data/com.google.android.apps.docs/cache/diskCache/fetching +64772 7078 -1 /data/data/com.google.android.apps.docs/cache/docs_glide +64772 7073 -1 /data/data/com.google.android.apps.docs/cache/docs_glide/temp +64772 7077 -1 /data/data/com.google.android.apps.docs/cache/docs_glide/data +64772 5260 -1 /data/data/com.google.android.apps.docs/code_cache +64772 4895 -1 /data/data/com.google.android.apps.docs/shared_prefs +64772 7040 -1 /data/data/com.google.android.apps.docs/shared_prefs/com.google.android.gms.analytics.prefs.xml +64772 6774 -1 /data/data/com.google.android.apps.docs/shared_prefs/com.google.android.apps.docs_preferences.xml +64772 1764 -1 /data/data/com.google.android.apps.docs/shared_prefs/growthkit_phenotype_prefs.xml +64772 4942 -1 /data/data/com.google.android.apps.docs/shared_prefs/growthkit_shared_prefs.xml +64772 4961 -1 /data/data/com.google.android.apps.docs/databases +64772 5027 -1 /data/data/com.google.android.apps.docs/databases/google_analytics_v4.db +64772 2797 -1 /data/data/com.google.android.apps.docs/databases/google_analytics_v4.db-journal +64772 4773 -1 /data/data/com.google.android.apps.docs/databases/DocList.db +64772 2854 -1 /data/data/com.google.android.apps.docs/databases/DocList.db-journal +64772 7038 -1 /data/data/com.google.android.apps.docs/databases/DocList.db-wal +64772 7047 -1 /data/data/com.google.android.apps.docs/databases/DocList.db-shm +64772 5020 -1 /data/data/com.google.android.apps.docs/databases/growthkit.db +64772 3424 -1 /data/data/com.google.android.apps.docs/files +64772 3425 -1 /data/data/com.google.android.apps.docs/files/gaClientId +64772 6787 -1 /data/data/com.google.android.apps.docs/files/shiny_blobs +64772 7061 -1 /data/data/com.google.android.apps.docs/files/fileinternal +64772 7068 -1 /data/data/com.google.android.apps.docs/files/appmetadata +64772 5261 -1 /data/data/com.google.android.apps.maps +64772 5262 -1 /data/data/com.google.android.apps.maps/cache +64772 5263 -1 /data/data/com.google.android.apps.maps/code_cache +64772 5741 -1 /data/data/com.google.android.apps.maps/files +64772 5744 -1 /data/data/com.google.android.apps.maps/files/DATA_Preferences +64772 5762 -1 /data/data/com.google.android.apps.maps/files/users +64772 5763 -1 /data/data/com.google.android.apps.maps/files/users/paint +64772 5764 -1 /data/data/com.google.android.apps.maps/files/users/paint/disabled +64772 5767 -1 /data/data/com.google.android.apps.maps/files/users/routing +64772 5768 -1 /data/data/com.google.android.apps.maps/files/users/routing/disabled +64772 5769 -1 /data/data/com.google.android.apps.maps/files/users/search +64772 5770 -1 /data/data/com.google.android.apps.maps/files/users/search/disabled +64772 5926 -1 /data/data/com.google.android.apps.maps/files/users/rerouting +64772 5927 -1 /data/data/com.google.android.apps.maps/files/users/rerouting/disabled +64772 5665 -1 /data/data/com.google.android.apps.maps/files/location_uploader_persistence.cs +64772 6015 -1 /data/data/com.google.android.apps.maps/files/ls_state_cache.pb.cs +64772 5774 -1 /data/data/com.google.android.apps.maps/files/offlinedatabase +64772 5775 -1 /data/data/com.google.android.apps.maps/files/offlinedatabase/offline.db +64772 5788 -1 /data/data/com.google.android.apps.maps/files/DATA_ShortTermStorage_gmm_notification_status_active +64772 7362 -1 /data/data/com.google.android.apps.maps/files/DATA_ShortTermStorage_gmm_notification_status_active_Version +64772 5742 -1 /data/data/com.google.android.apps.maps/shared_prefs +64772 5743 -1 /data/data/com.google.android.apps.maps/shared_prefs/cache_settings_preference.xml +64772 7381 -1 /data/data/com.google.android.apps.maps/shared_prefs/settings_preference.xml +64772 5755 -1 /data/data/com.google.android.apps.maps/shared_prefs/_has_set_default_values.xml +64772 5749 -1 /data/data/com.google.android.apps.maps/app_ +64772 5750 -1 /data/data/com.google.android.apps.maps/app_/testdata +64772 5765 -1 /data/data/com.google.android.apps.maps/app_offline_downloads +64772 5766 -1 /data/data/com.google.android.apps.maps/app_offline_hashes +64772 5777 -1 /data/data/com.google.android.apps.maps/databases +64772 5778 -1 /data/data/com.google.android.apps.maps/databases/gmm_sync.db +64772 5780 -1 /data/data/com.google.android.apps.maps/databases/gmm_sync.db-journal +64772 5790 -1 /data/data/com.google.android.apps.maps/databases/gmm_storage.db +64772 5791 -1 /data/data/com.google.android.apps.maps/databases/gmm_storage.db-journal +64772 6385 -1 /data/data/com.google.android.apps.maps/databases/ue3.db +64772 6386 -1 /data/data/com.google.android.apps.maps/databases/ue3.db-journal +64772 5273 -1 /data/data/com.google.android.markup +64772 5274 -1 /data/data/com.google.android.markup/cache +64772 5275 -1 /data/data/com.google.android.markup/code_cache +64772 5276 -1 /data/data/com.google.android.webview +64772 5277 -1 /data/data/com.google.android.webview/cache +64772 5278 -1 /data/data/com.google.android.webview/code_cache +64772 6159 -1 /data/data/com.google.android.webview/app_webview +64772 6161 -1 /data/data/com.google.android.webview/app_textures +64772 5289 -1 /data/data/com.google.android.syncadapters.contacts +64772 5290 -1 /data/data/com.google.android.syncadapters.contacts/cache +64772 5291 -1 /data/data/com.google.android.syncadapters.contacts/code_cache +64772 1660 -1 /data/data/com.google.android.syncadapters.contacts/app_sslcache +64772 5298 -1 /data/data/com.google.android.overlay.googleconfig +64772 5299 -1 /data/data/com.google.android.overlay.googleconfig/cache +64772 5300 -1 /data/data/com.google.android.overlay.googleconfig/code_cache +64772 5301 -1 /data/data/com.google.android.calculator +64772 5302 -1 /data/data/com.google.android.calculator/cache +64772 5303 -1 /data/data/com.google.android.calculator/code_cache +64772 6298 -1 /data/data/com.google.android.calculator/shared_prefs +64772 3637 -1 /data/data/com.google.android.calculator/shared_prefs/com.google.android.gms.measurement.prefs.xml +64772 6315 -1 /data/data/com.google.android.calculator/shared_prefs/com.google.android.calculator_preferences.xml +64772 6306 -1 /data/data/com.google.android.calculator/databases +64772 6307 -1 /data/data/com.google.android.calculator/databases/Expressions.db +64772 6308 -1 /data/data/com.google.android.calculator/databases/Expressions.db-journal +64772 6312 -1 /data/data/com.google.android.calculator/databases/google_app_measurement_local.db +64772 6313 -1 /data/data/com.google.android.calculator/databases/google_app_measurement_local.db-journal +64772 5308 -1 /data/data/com.android.bips.auto_generated_rro_product__ +64772 5309 -1 /data/data/com.android.bips.auto_generated_rro_product__/cache +64772 5310 -1 /data/data/com.android.bips.auto_generated_rro_product__/code_cache +64772 5317 -1 /data/data/com.google.android.gms +64772 5318 -1 /data/data/com.google.android.gms/cache +64772 1932 -1 /data/data/com.google.android.gms/cache/httpclient_tmp +64772 4950 -1 /data/data/com.google.android.gms/cache/volley +64772 6960 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db +64772 7103 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/LOG +64772 7107 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/LOCK +64772 7112 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/000003.log +64772 6897 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/CURRENT +64772 7105 -1 /data/data/com.google.android.gms/cache/com.google.android.gms#0p:discoverer#false_beacon_message_cache.db/MANIFEST-000002 +64772 7117 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db +64772 7111 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/LOG +64772 7143 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/LOCK +64772 6997 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/000003.log +64772 6772 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/CURRENT +64772 6999 -1 /data/data/com.google.android.gms/cache/global_beacon_message_cache.db/MANIFEST-000002 +64772 6028 -1 /data/data/com.google.android.gms/cache/nearby_bluetooth_metadata +64772 5319 -1 /data/data/com.google.android.gms/code_cache +64772 1522 -1 /data/data/com.google.android.gms/databases +64772 1523 -1 /data/data/com.google.android.gms/databases/phenotype.db +64772 1524 -1 /data/data/com.google.android.gms/databases/phenotype.db-journal +64772 1739 -1 /data/data/com.google.android.gms/databases/android_pay +64772 1754 -1 /data/data/com.google.android.gms/databases/android_pay-journal +64772 2017 -1 /data/data/com.google.android.gms/databases/playlog.db +64772 7301 -1 /data/data/com.google.android.gms/databases/icing-indexapi-errors.db +64772 2052 -1 /data/data/com.google.android.gms/databases/pluscontacts.db +64772 2057 -1 /data/data/com.google.android.gms/databases/pluscontacts.db-journal +64772 2206 -1 /data/data/com.google.android.gms/databases/context_feature_default.db +64772 2264 -1 /data/data/com.google.android.gms/databases/context_feature_default.db-journal +64772 2277 -1 /data/data/com.google.android.gms/databases/gass.db +64772 2275 -1 /data/data/com.google.android.gms/databases/gass.db-journal +64772 2286 -1 /data/data/com.google.android.gms/databases/metadata.db +64772 2284 -1 /data/data/com.google.android.gms/databases/metadata.db-journal +64772 2357 -1 /data/data/com.google.android.gms/databases/peoplelog.db +64772 3528 -1 /data/data/com.google.android.gms/databases/cast.db +64772 3635 -1 /data/data/com.google.android.gms/databases/cast.db-journal +64772 4764 -1 /data/data/com.google.android.gms/databases/context___ContextManagerNullAccount__.db +64772 4771 -1 /data/data/com.google.android.gms/databases/context___ContextManagerNullAccount__.db-journal +64772 4794 -1 /data/data/com.google.android.gms/databases/device_connections.db +64772 4796 -1 /data/data/com.google.android.gms/databases/device_connections.db-journal +64772 4849 -1 /data/data/com.google.android.gms/databases/ns.db +64772 4854 -1 /data/data/com.google.android.gms/databases/ns.db-journal +64772 4869 -1 /data/data/com.google.android.gms/databases/dg.db +64772 4558 -1 /data/data/com.google.android.gms/databases/dg.db-journal +64772 4898 -1 /data/data/com.google.android.gms/databases/rmq.db +64772 4926 -1 /data/data/com.google.android.gms/databases/rmq.db-journal +64772 2972 -1 /data/data/com.google.android.gms/databases/google_app_measurement.db +64772 2975 -1 /data/data/com.google.android.gms/databases/google_app_measurement.db-journal +64772 2999 -1 /data/data/com.google.android.gms/databases/icing_mmssms.db +64772 2996 -1 /data/data/com.google.android.gms/databases/icing_mmssms.db-journal +64772 3116 -1 /data/data/com.google.android.gms/databases/gms.notifications.db +64772 3119 -1 /data/data/com.google.android.gms/databases/gms.notifications.db-journal +64772 3157 -1 /data/data/com.google.android.gms/databases/icing_contacts.db +64772 3161 -1 /data/data/com.google.android.gms/databases/icing_contacts.db-journal +64772 3169 -1 /data/data/com.google.android.gms/databases/reminders.db +64772 3495 -1 /data/data/com.google.android.gms/databases/reminders.db-journal +64772 3362 -1 /data/data/com.google.android.gms/databases/ipa_mmssms.db +64772 1638 -1 /data/data/com.google.android.gms/databases/ipa_mmssms.db-journal +64772 1814 -1 /data/data/com.google.android.gms/databases/icing-indexapi.db +64772 1771 -1 /data/data/com.google.android.gms/databases/icing-indexapi.db-journal +64772 1443 -1 /data/data/com.google.android.gms/databases/constellation.db +64772 1599 -1 /data/data/com.google.android.gms/databases/constellation.db-journal +64772 1867 -1 /data/data/com.google.android.gms/databases/google_analytics_v4.db +64772 1366 -1 /data/data/com.google.android.gms/databases/google_analytics_v4.db-journal +64772 4148 -1 /data/data/com.google.android.gms/databases/chromesync.data_store +64772 3591 -1 /data/data/com.google.android.gms/databases/chromesync.data_store-journal +64772 4738 -1 /data/data/com.google.android.gms/databases/matchstickv9.db +64772 5038 -1 /data/data/com.google.android.gms/databases/matchstickv9.db-journal +64772 3017 -1 /data/data/com.google.android.gms/databases/mobstore_gc_db_v0 +64772 2973 -1 /data/data/com.google.android.gms/databases/mobstore_gc_db_v0-journal +64772 5532 -1 /data/data/com.google.android.gms/databases/dgp.db +64772 5533 -1 /data/data/com.google.android.gms/databases/dgp.db-journal +64772 6418 -1 /data/data/com.google.android.gms/databases/netrec +64772 6419 -1 /data/data/com.google.android.gms/databases/netrec-journal +64772 7059 -1 /data/data/com.google.android.gms/databases/icing-proxy-calendar.db +64772 7060 -1 /data/data/com.google.android.gms/databases/icing-proxy-calendar.db-journal +64772 7302 -1 /data/data/com.google.android.gms/databases/icing-indexapi-errors.db-journal +64772 7032 -1 /data/data/com.google.android.gms/databases/icing-mdh.db +64772 7031 -1 /data/data/com.google.android.gms/databases/icing-mdh.db-journal +64772 7980 -1 /data/data/com.google.android.gms/databases/metrics.db.21 +64772 7985 -1 /data/data/com.google.android.gms/databases/metrics.db.21-journal +64772 1564 -1 /data/data/com.google.android.gms/shared_prefs +64772 1582 -1 /data/data/com.google.android.gms/shared_prefs/QosTierPref.xml +64772 4804 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.netrec.xml +64772 2093 -1 /data/data/com.google.android.gms/shared_prefs/adid_settings.xml +64772 8610 -1 /data/data/com.google.android.gms/shared_prefs/AppDataSearch-main-icing-settings.xml +64772 6051 -1 /data/data/com.google.android.gms/shared_prefs/ULR_PERSISTENT_PREFS.xml +64772 6384 -1 /data/data/com.google.android.gms/shared_prefs/LOCATION_REPORTING.xml +64772 9430 -1 /data/data/com.google.android.gms/shared_prefs/AppDataSearch-main-config.xml +64772 2730 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.auth.devicesignals.DeviceSignalsStore.xml +64772 7129 -1 /data/data/com.google.android.gms/shared_prefs/google_cast.xml +64772 9177 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms_preferences.xml +64772 7023 -1 /data/data/com.google.android.gms/shared_prefs/GmsBackupTransport.backupScheduler.xml +64772 4800 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.backup.BackupAccountNotifierService.xml +64772 4814 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gcm.xml +64772 7294 -1 /data/data/com.google.android.gms/shared_prefs/METRICS_LOGGER_PREFERENCE_FILE.xml +64772 4838 -1 /data/data/com.google.android.gms/shared_prefs/gms.learning.CrashThrottler.xml +64772 4852 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.learning.cache_manager.xml +64772 4944 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.magictether.client.SETTINGS_PREFERENCE_FILE.xml +64772 5007 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.magictether.host.CLIENT_CONNECTION_MANAGER_PREFERENCE_FILE.xml +64772 5009 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.magictether.client.CONFIG_HELPER_PREFERENCE_FILE.xml +64772 1592 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.measurement.prefs.xml +64772 1359 -1 /data/data/com.google.android.gms/shared_prefs/proxy-apps-corpus.xml +64772 6958 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.update.storage.xml +64772 3016 -1 /data/data/com.google.android.gms/shared_prefs/BEACON_STATE.xml +64772 6029 -1 /data/data/com.google.android.gms/shared_prefs/gms.people.xml +64772 3136 -1 /data/data/com.google.android.gms/shared_prefs/com.google.firebase.auth.instantValidator.xml +64772 6962 -1 /data/data/com.google.android.gms/shared_prefs/salter_pref.xml +64772 5492 -1 /data/data/com.google.android.gms/shared_prefs/icing_internal_corpora_prefs.xml +64772 3278 -1 /data/data/com.google.android.gms/shared_prefs/nearbydirect_configuration.xml +64772 7150 -1 /data/data/com.google.android.gms/shared_prefs/Checkin.xml +64772 3527 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.cache.MerchantCache.xml +64772 3567 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.fragment.WalletFragment.PREFS.xml +64772 3534 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.service.ow.LocalPreAuth.xml +64772 3279 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.service.ow.TransactionContextStorage.xml +64772 3277 -1 /data/data/com.google.android.gms/shared_prefs/FabExperimentPrefsFile.xml +64772 3197 -1 /data/data/com.google.android.gms/shared_prefs/ppl_first_sdk.xml +64772 7051 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.westworld.xml +64772 1648 -1 /data/data/com.google.android.gms/shared_prefs/LockboxOptInSettings.xml +64772 1776 -1 /data/data/com.google.android.gms/shared_prefs/ipa-sms-corpus.xml +64772 1416 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.analytics.prefs.xml +64772 7634 -1 /data/data/com.google.android.gms/shared_prefs/EventLogChimeraService.xml +64772 2405 -1 /data/data/com.google.android.gms/shared_prefs/google_sdk_flags.xml +64772 7616 -1 /data/data/com.google.android.gms/shared_prefs/DownloadService.xml +64772 4847 -1 /data/data/com.google.android.gms/shared_prefs/SchedulerPrefs.xml +64772 4819 -1 /data/data/com.google.android.gms/shared_prefs/DeviceConfigUtils.xml +64772 2839 -1 /data/data/com.google.android.gms/shared_prefs/CheckinLogging.xml +64772 3100 -1 /data/data/com.google.android.gms/shared_prefs/CAST_ACTIVE_NETWORK_MAP.xml +64772 3096 -1 /data/data/com.google.android.gms/shared_prefs/PREF_CAST_SENDER_NONCE.xml +64772 3060 -1 /data/data/com.google.android.gms/shared_prefs/PREF_CAST_SENDER_ID.xml +64772 9489 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_file_group_manager_metadata.xml +64772 3565 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_shared_file_manager_metadata.xml +64772 7014 -1 /data/data/com.google.android.gms/shared_prefs/coreanalyticsprefs.xml +64772 3295 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_groups.xml +64772 1740 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_group_key_properties.xml +64772 2937 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_shared_files.xml +64772 9488 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_manager_metadata.xml +64772 1651 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_migrations.xml +64772 6366 -1 /data/data/com.google.android.gms/shared_prefs/mdm.xml +64772 7151 -1 /data/data/com.google.android.gms/shared_prefs/Netstats.xml +64772 1383 -1 /data/data/com.google.android.gms/shared_prefs/instantapps.Routing.xml +64772 5466 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_phenotype_config.xml +64772 5467 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.lockbox.xml +64772 5468 -1 /data/data/com.google.android.gms/shared_prefs/contactinteractions_gms_prefs.xml +64772 5470 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_gcm_task_periods.xml +64772 5474 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_phenotype_registrar.xml +64772 5478 -1 /data/data/com.google.android.gms/shared_prefs/google_ads_flags.xml +64772 5479 -1 /data/data/com.google.android.gms/shared_prefs/social.package_doritos.xml +64772 6684 -1 /data/data/com.google.android.gms/shared_prefs/proxy-sms-corpus.xml +64772 5493 -1 /data/data/com.google.android.gms/shared_prefs/IndexWorkerChimeraService_preferences.xml +64772 5501 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.icing.mdh.service.MobileDataHubGcmTaskService_mdh-forcedsync.xml +64772 5503 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.icing.mdh.service.MobileDataHubGcmTaskService_mdh-wipeout.xml +64772 5505 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.icing.mdh.service.MobileDataHubGcmTaskService_mdh-subscription-cleanup.xml +64772 7391 -1 /data/data/com.google.android.gms/shared_prefs/Telephonystats.xml +64772 7390 -1 /data/data/com.google.android.gms/shared_prefs/Graphicsstats.xml +64772 7152 -1 /data/data/com.google.android.gms/shared_prefs/Settingsstats.xml +64772 7498 -1 /data/data/com.google.android.gms/shared_prefs/Fingerprintstats.xml +64772 7558 -1 /data/data/com.google.android.gms/shared_prefs/Mediastats.xml +64772 7521 -1 /data/data/com.google.android.gms/shared_prefs/Ipconnectivitystats.xml +64772 7559 -1 /data/data/com.google.android.gms/shared_prefs/Batterystats.xml +64772 7576 -1 /data/data/com.google.android.gms/shared_prefs/Diskstats.xml +64772 7578 -1 /data/data/com.google.android.gms/shared_prefs/DropboxRealtime.xml +64772 1344 -1 /data/data/com.google.android.gms/shared_prefs/Notificationstats.xml +64772 4759 -1 /data/data/com.google.android.gms/shared_prefs/UnifiedDumpsysTask.xml +64772 1483 -1 /data/data/com.google.android.gms/shared_prefs/Wifistats.xml +64772 7943 -1 /data/data/com.google.android.gms/shared_prefs/Telecomstats.xml +64772 8265 -1 /data/data/com.google.android.gms/shared_prefs/Dropbox.xml +64772 7949 -1 /data/data/com.google.android.gms/shared_prefs/Launcherstats.xml +64772 8271 -1 /data/data/com.google.android.gms/shared_prefs/SurfaceFlinger.xml +64772 8347 -1 /data/data/com.google.android.gms/shared_prefs/Procstats.xml +64772 4824 -1 /data/data/com.google.android.gms/shared_prefs/usage_stats_manager_prefs.xml +64772 5635 -1 /data/data/com.google.android.gms/shared_prefs/GEO_DATA_SERVICE_STORE.xml +64772 1329 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.auth.authzen.cryptauth.DeviceStateSyncManager.xml +64772 6930 -1 /data/data/com.google.android.gms/shared_prefs/platform_prefs.xml +64772 7028 -1 /data/data/com.google.android.gms/shared_prefs/GmsBackupTransport.restoreScheduler.xml +64772 6036 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.netrec.ssidTries.xml +64772 6445 -1 /data/data/com.google.android.gms/shared_prefs/ULR_HISTORIAN_STATE.xml +64772 6057 -1 /data/data/com.google.android.gms/shared_prefs/TestCodePref.xml +64772 6100 -1 /data/data/com.google.android.gms/shared_prefs/carservice.xml +64772 7551 -1 /data/data/com.google.android.gms/shared_prefs/romanesco_prefs.xml +64772 6356 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.wallet.service.ib.ParcelableCryptoKeys.xml +64772 6247 -1 /data/data/com.google.android.gms/shared_prefs/jams.prefs.default.xml +64772 6269 -1 /data/data/com.google.android.gms/shared_prefs/com.google.android.gms.safetynet.xml +64772 6422 -1 /data/data/com.google.android.gms/shared_prefs/UdcCtxMgrPrefs.xml +64772 3767 -1 /data/data/com.google.android.gms/shared_prefs/matchstick_prefs.xml +64772 9492 -1 /data/data/com.google.android.gms/shared_prefs/gms_icing_mdd_network_usage_monitor.xml +64772 7275 -1 /data/data/com.google.android.gms/shared_prefs/GoogleAnalyticsPlayLogs.xml +64772 7035 -1 /data/data/com.google.android.gms/shared_prefs/BackupDeviceState.xml +64772 1565 -1 /data/data/com.google.android.gms/files +64772 2090 -1 /data/data/com.google.android.gms/files/nlp_ck +64772 2105 -1 /data/data/com.google.android.gms/files/fonts +64772 2106 -1 /data/data/com.google.android.gms/files/fonts/opentype +64772 2325 -1 /data/data/com.google.android.gms/files/fonts/opentype/Google_Sans_Display-400-100_0-0_0.ttf +64772 2280 -1 /data/data/com.google.android.gms/files/fonts/opentype/Google_Sans-400-100_0-0_0.ttf +64772 2282 -1 /data/data/com.google.android.gms/files/fonts/opentype/Google_Sans-500-100_0-0_0.ttf +64772 2120 -1 /data/data/com.google.android.gms/files/fonts/directory +64772 5561 -1 /data/data/com.google.android.gms/files/fonts/system.directory.pb +64772 2122 -1 /data/data/com.google.android.gms/files/AppDataSearch +64772 2367 -1 /data/data/com.google.android.gms/files/AppDataSearch/main +64772 2569 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur +64772 2627 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.docids +64772 2575 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/compact_status +64772 2640 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.perdocdata +64772 2663 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.cscoring +64772 2720 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.docs +64772 2723 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.h +64772 2727 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.n +64772 2726 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.x +64772 2725 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.s +64772 2779 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.tags.deleted +64772 2784 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tagacct.counts +64772 2785 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.h +64772 2786 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.n +64772 2787 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.x +64772 2783 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.s +64772 2731 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.urifps.deleted +64772 2927 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.usage +64772 2757 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.delusage +64772 2751 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.h +64772 3511 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.n +64772 3547 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.x +64772 3557 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.s +64772 3559 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.deleted +64772 3563 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.h +64772 3537 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.n +64772 3538 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.x +64772 3588 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.s +64772 3589 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.display.deleted +64772 3621 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.index +64772 3880 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.h +64772 3881 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.n +64772 3878 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.x +64772 3879 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.s +64772 3877 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.deleted +64772 4441 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.h +64772 4442 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.n +64772 4439 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.x +64772 4440 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.s +64772 4438 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.display.deleted +64772 3882 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.hb +64772 5477 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.deleted +64772 7251 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.status.flushed +64772 4920 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-1 +64772 9551 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.prop.3 +64772 3765 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lite.lexicon.prop.0 +64772 6232 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-13 +64772 6358 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-16 +64772 6514 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-14 +64772 5307 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.status +64772 7295 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.0 +64772 7296 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.3 +64772 7297 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.16 +64772 7298 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.15 +64772 7299 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.1 +64772 6360 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-17 +64772 6715 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/ds.tag.corpusid-18 +64772 6319 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.18 +64772 6310 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.20 +64772 6180 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/cur/idx.lexicon.prop.19 +64772 5507 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/main-corpus-scratch-data.tmp +64772 6739 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/css +64772 6740 -1 /data/data/com.google.android.gms/files/AppDataSearch/main/css/log +64772 2379 -1 /data/data/com.google.android.gms/files/clearcut +64772 2394 -1 /data/data/com.google.android.gms/files/clearcut/0 +64772 2395 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD +64772 2393 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866 +64772 2398 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866/play_logger_context.pb +64772 2396 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866/1571007393366.NONE +64772 6743 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866/1571007523603.NONE +64772 4860 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-133753866/1571086303942.NONE +64772 5816 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629 +64772 5817 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629/play_logger_context.pb +64772 5818 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629/1571007405165.NONE +64772 6886 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629/1571007529733.NONE +64772 6971 -1 /data/data/com.google.android.gms/files/clearcut/0/CLIENT_LOGGING_PROD/-1070507629/1571086313401.NONE +64772 2573 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC +64772 2574 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632 +64772 2662 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632/play_logger_context.pb +64772 2782 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632/1571007393955.NONE +64772 6755 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632/1571007523995.NONE +64772 3097 -1 /data/data/com.google.android.gms/files/clearcut/0/NETREC/-735863632/1571086304163.NONE +64772 4137 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER +64772 4134 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548 +64772 4133 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548/play_logger_context.pb +64772 4144 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548/1571007394404.NONE +64772 6752 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548/1571007523907.NONE +64772 6769 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_NOW_LAUNCHER/556696548/1571086307394.NONE +64772 4742 -1 /data/data/com.google.android.gms/files/clearcut/0/GAL_PROVIDER +64772 4745 -1 /data/data/com.google.android.gms/files/clearcut/0/GAL_PROVIDER/603039182 +64772 4748 -1 /data/data/com.google.android.gms/files/clearcut/0/GAL_PROVIDER/603039182/play_logger_context.pb +64772 4750 -1 /data/data/com.google.android.gms/files/clearcut/0/GAL_PROVIDER/603039182/1571007394557.NONE +64772 4951 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS +64772 4952 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611 +64772 4953 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611/play_logger_context.pb +64772 4922 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611/1571007395822.NONE +64772 6777 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611/1571007524446.NONE +64772 6758 -1 /data/data/com.google.android.gms/files/clearcut/0/DL_FONTS/-923719611/1571086304269.NONE +64772 4974 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER +64772 4972 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655 +64772 4975 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655/play_logger_context.pb +64772 4976 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655/1571007395955.NONE +64772 6771 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655/1571007524307.NONE +64772 6521 -1 /data/data/com.google.android.gms/files/clearcut/0/CONTEXT_MANAGER/-1525585655/1571086304194.NONE +64772 4994 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE_PEOPLE +64772 4996 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE_PEOPLE/-846547223 +64772 4990 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE_PEOPLE/-846547223/play_logger_context.pb +64772 4999 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE_PEOPLE/-846547223/1571007395999.NONE +64772 5000 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION +64772 5003 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565 +64772 5011 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565/play_logger_context.pb +64772 5014 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565/1571007396041.NONE +64772 6786 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565/1571007524605.NONE +64772 2517 -1 /data/data/com.google.android.gms/files/clearcut/0/ACTIVITY_RECOGNITION/-110756565/1571086304208.NONE +64772 2876 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA +64772 2877 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336 +64772 2908 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336/play_logger_context.pb +64772 2909 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336/1571007396222.NONE +64772 6784 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336/1571007524576.NONE +64772 6673 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-1894325336/1571086304144.NONE +64772 3408 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545 +64772 3407 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545/play_logger_context.pb +64772 3376 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545/1571007396696.NONE +64772 6951 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545/1571007534530.NONE +64772 6921 -1 /data/data/com.google.android.gms/files/clearcut/0/BRELLA/-2031946545/1571086318208.NONE +64772 3033 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES +64772 3034 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051 +64772 3032 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051/play_logger_context.pb +64772 3036 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051/1571007396377.NONE +64772 6745 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051/1571007523818.NONE +64772 6746 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_IME_ANDROID_PRIMES/-1669908051/1571086304060.NONE +64772 3061 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME +64772 3062 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192 +64772 3059 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192/play_logger_context.pb +64772 3073 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192/1571007396399.NONE +64772 6754 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192/1571007523951.NONE +64772 6705 -1 /data/data/com.google.android.gms/files/clearcut/0/LATIN_IME/1221341192/1571086304101.NONE +64772 3101 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS +64772 3112 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600 +64772 3111 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600/play_logger_context.pb +64772 3115 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600/1571007396441.NONE +64772 6748 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600/1571007523860.NONE +64772 6750 -1 /data/data/com.google.android.gms/files/clearcut/0/GOOGLE_KEYBOARD_COUNTERS/1919311600/1571086304078.NONE +64772 3124 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS +64772 3125 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996 +64772 3123 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996/play_logger_context.pb +64772 3137 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996/1571007396460.NONE +64772 7586 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996/1571011940660.NONE +64772 6575 -1 /data/data/com.google.android.gms/files/clearcut/0/CLEARCUT_LOG_LOSS/-2047849996/1571086348997.NONE +64772 3162 -1 /data/data/com.google.android.gms/files/clearcut/0/LE +64772 3160 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896 +64772 3170 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896/play_logger_context.pb +64772 3171 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896/1571007396513.NONE +64772 6790 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896/1571007524702.NONE +64772 6845 -1 /data/data/com.google.android.gms/files/clearcut/0/LE/-682753896/1571086310373.NONE +64772 3179 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS +64772 3180 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070 +64772 3178 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070/play_logger_context.pb +64772 3450 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070/1571007396536.NONE +64772 6956 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070/1571007534603.NONE +64772 6413 -1 /data/data/com.google.android.gms/files/clearcut/0/MAGICTETHER_COUNTERS/-130452070/1571086318283.NONE +64772 3210 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE +64772 3208 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991 +64772 3230 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991/play_logger_context.pb +64772 3231 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991/1571007396961.NONE +64772 6791 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991/1571007524728.NONE +64772 3499 -1 /data/data/com.google.android.gms/files/clearcut/0/BEACON_GCORE/1931745991/1571086310550.NONE +64772 3561 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS +64772 3562 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701 +64772 3262 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701/play_logger_context.pb +64772 3305 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701/1571007397145.NONE +64772 6983 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701/1571007535138.NONE +64772 6704 -1 /data/data/com.google.android.gms/files/clearcut/0/COPRESENCE_NO_IDS/-2026295701/1571086318873.NONE +64772 1550 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA +64772 4958 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090 +64772 4963 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090/play_logger_context.pb +64772 3583 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090/1571007397308.NONE +64772 6812 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090/1571007527010.NONE +64772 6703 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_GSA/-308819090/1571086308336.NONE +64772 1613 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS +64772 1643 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279 +64772 1647 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279/play_logger_context.pb +64772 1657 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279/1571007397375.NONE +64772 6970 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279/1571007535031.NONE +64772 6782 -1 /data/data/com.google.android.gms/files/clearcut/0/WESTWORLD_COUNTERS/-1985449279/1571086318705.NONE +64772 1403 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS +64772 1653 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521 +64772 1591 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521/play_logger_context.pb +64772 1390 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521/1571007398221.NONE +64772 6937 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521/1571007534192.NONE +64772 6947 -1 /data/data/com.google.android.gms/files/clearcut/0/EASY_UNLOCK_COUNTERS/1838666521/1571086317928.NONE +64772 4700 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK +64772 4498 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793 +64772 4501 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793/play_logger_context.pb +64772 1396 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793/1571007399195.NONE +64772 9223 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793/1571018496320.NONE +64772 3770 -1 /data/data/com.google.android.gms/files/clearcut/0/MATCHSTICK/-1318013793/1571092497382.NONE +64772 4918 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER +64772 3404 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177 +64772 3399 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177/play_logger_context.pb +64772 3410 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177/1571007399944.NONE +64772 6805 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177/1571007525869.NONE +64772 6795 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_DIALER/-1483632177/1571086306843.NONE +64772 3340 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE +64772 3350 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580 +64772 3343 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580/play_logger_context.pb +64772 1603 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580/1571007400039.NONE +64772 7345 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580/1571010628730.NONE +64772 9366 -1 /data/data/com.google.android.gms/files/clearcut/0/GMS_CORE/1945124580/1571089412544.NONE +64772 1365 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE +64772 1485 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE/8313545 +64772 1418 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE/8313545/play_logger_context.pb +64772 1393 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE/8313545/1571007400095.NONE +64772 6169 -1 /data/data/com.google.android.gms/files/clearcut/0/DRIVE/8313545/1571050723868.NONE +64772 5516 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC +64772 5517 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691 +64772 5518 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691/play_logger_context.pb +64772 5519 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691/1571007400805.NONE +64772 6895 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691/1571007531568.NONE +64772 6737 -1 /data/data/com.google.android.gms/files/clearcut/0/CALENDAR_UNIFIED_SYNC/710020691/1571086315278.NONE +64772 5544 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS +64772 5545 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633 +64772 5546 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633/play_logger_context.pb +64772 5550 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633/1571007401037.NONE +64772 6967 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633/1571007534932.NONE +64772 2976 -1 /data/data/com.google.android.gms/files/clearcut/0/PLATFORM_STATS_COUNTERS/-1732511633/1571086318636.NONE +64772 5555 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP +64772 5556 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435 +64772 5557 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435/play_logger_context.pb +64772 5558 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435/1571007401123.NONE +64772 6945 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435/1571007534259.NONE +64772 6887 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_BACKUP/1228129435/1571086318024.NONE +64772 5572 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES +64772 5573 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419 +64772 5576 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419/play_logger_context.pb +64772 5578 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419/1571007401427.NONE +64772 6846 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419/1571007527414.NONE +64772 6834 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES/-1910238419/1571086308137.NONE +64772 5580 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES +64772 5581 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649 +64772 5582 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649/play_logger_context.pb +64772 5583 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649/1571007401442.NONE +64772 6847 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649/1571007527445.NONE +64772 6435 -1 /data/data/com.google.android.gms/files/clearcut/0/CARRIER_SERVICES_ANDROID_PRIMES/1828393649/1571086308143.NONE +64772 5700 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD +64772 5701 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270 +64772 5702 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270/play_logger_context.pb +64772 5703 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270/1571007402723.NONE +64772 6844 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270/1571007527242.NONE +64772 4880 -1 /data/data/com.google.android.gms/files/clearcut/0/DROIDGUARD/1324630270/1571086307991.NONE +64772 5705 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS +64772 5706 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004 +64772 5707 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004/play_logger_context.pb +64772 5708 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004/1571007402840.NONE +64772 6849 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004/1571007527774.NONE +64772 6900 -1 /data/data/com.google.android.gms/files/clearcut/0/BUGLE_COUNTERS/-109504004/1571086308600.NONE +64772 5731 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT +64772 5732 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT/187446427 +64772 5733 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT/187446427/play_logger_context.pb +64772 5734 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT/187446427/1571007403361.NONE +64772 2737 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT/187446427/1571090393505.NONE +64772 5735 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES +64772 5736 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759 +64772 5737 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759/play_logger_context.pb +64772 5738 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759/1571007403374.NONE +64772 6851 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759/1571007528067.NONE +64772 6809 -1 /data/data/com.google.android.gms/files/clearcut/0/WIFI_ASSISTANT_PRIMES/-253779759/1571086309256.NONE +64772 5792 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P +64772 5793 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349 +64772 5794 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349/play_logger_context.pb +64772 5795 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349/1571007404334.NONE +64772 6876 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349/1571007528744.NONE +64772 6020 -1 /data/data/com.google.android.gms/files/clearcut/0/APP_USAGE_1P/-1341799349/1571086309840.NONE +64772 5798 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS +64772 5799 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405 +64772 5800 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405/play_logger_context.pb +64772 5802 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405/1571007404439.NONE +64772 6877 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405/1571007528777.NONE +64772 6034 -1 /data/data/com.google.android.gms/files/clearcut/0/GMM_COUNTERS/1570352405/1571086309854.NONE +64772 5837 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING +64772 5838 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824 +64772 5839 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824/play_logger_context.pb +64772 5840 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824/1571007405554.NONE +64772 7034 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824/1571007540804.NONE +64772 6404 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_MESSAGING/136551824/1571086327278.NONE +64772 5887 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES +64772 5889 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547 +64772 5890 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547/play_logger_context.pb +64772 5891 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547/1571007406669.NONE +64772 6891 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547/1571007530312.NONE +64772 1772 -1 /data/data/com.google.android.gms/files/clearcut/0/TURBO_ANDROID_PRIMES/1400115547/1571086314036.NONE +64772 5949 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS +64772 5950 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636 +64772 5951 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636/play_logger_context.pb +64772 5952 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636/1571007409143.NONE +64772 6902 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636/1571007532531.NONE +64772 3497 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_COUNTERS/-112077636/1571086316175.NONE +64772 5954 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES +64772 5955 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800 +64772 5956 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800/play_logger_context.pb +64772 5957 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800/1571007409294.NONE +64772 6904 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800/1571007532604.NONE +64772 4135 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_CONTACTS_PRIMES/-798077800/1571086316203.NONE +64772 6050 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR +64772 6052 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462 +64772 6053 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462/play_logger_context.pb +64772 6054 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462/1571007410838.NONE +64772 6929 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462/1571007534047.NONE +64772 6336 -1 /data/data/com.google.android.gms/files/clearcut/0/ULR/506823462/1571086317841.NONE +64772 6095 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR +64772 6096 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249 +64772 6097 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249/play_logger_context.pb +64772 6098 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249/1571007412450.NONE +64772 7011 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249/1571007535994.NONE +64772 6678 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/501649249/1571086320642.NONE +64772 6229 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446 +64772 6230 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446/play_logger_context.pb +64772 6231 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446/1571007415279.NONE +64772 7026 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446/1571007538690.NONE +64772 7181 -1 /data/data/com.google.android.gms/files/clearcut/0/CAR/-1651639446/1571086323985.NONE +64772 6215 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES +64772 6216 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644 +64772 6217 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644/play_logger_context.pb +64772 6218 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644/1571007415174.NONE +64772 7021 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644/1571007538188.NONE +64772 1619 -1 /data/data/com.google.android.gms/files/clearcut/0/PIXEL_AMBIENT_SERVICES_PRIMES/1956765644/1571086323453.NONE +64772 6427 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING +64772 6428 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423 +64772 6429 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423/play_logger_context.pb +64772 6430 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423/1571007460671.NONE +64772 6788 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423/1571007524660.NONE +64772 6513 -1 /data/data/com.google.android.gms/files/clearcut/0/ICING/-1597314423/1571086304253.NONE +64772 6528 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH +64772 6529 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029 +64772 6530 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029/play_logger_context.pb +64772 6531 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029/1571007478024.NONE +64772 7125 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029/1571007600722.NONE +64772 6233 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-355601029/1571086387172.NONE +64772 6544 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842 +64772 6545 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842/play_logger_context.pb +64772 6546 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842/1571007484364.NONE +64772 7889 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842/1571011998119.NONE +64772 9270 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/913586842/1571131773690.NONE +64772 7126 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-579042909 +64772 7127 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-579042909/play_logger_context.pb +64772 7128 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-579042909/1571007603556.NONE +64772 4728 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/-579042909/1571086389170.NONE +64772 7082 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/1383692627 +64772 7113 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/1383692627/play_logger_context.pb +64772 7153 -1 /data/data/com.google.android.gms/files/clearcut/0/STREAMZ_ANDROID_GROWTH/1383692627/1571050783901.NONE +64772 7118 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS +64772 7119 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS/1440506137 +64772 7120 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS/1440506137/play_logger_context.pb +64772 7121 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS/1440506137/1571007591058.NONE +64772 6680 -1 /data/data/com.google.android.gms/files/clearcut/0/WALLPAPER_PICKER_COUNTERS/1440506137/1571094297498.NONE +64772 7530 -1 /data/data/com.google.android.gms/files/clearcut/0/ZEBEDEE_COUNTERS +64772 7531 -1 /data/data/com.google.android.gms/files/clearcut/0/ZEBEDEE_COUNTERS/35534825 +64772 7532 -1 /data/data/com.google.android.gms/files/clearcut/0/ZEBEDEE_COUNTERS/35534825/play_logger_context.pb +64772 7534 -1 /data/data/com.google.android.gms/files/clearcut/0/ZEBEDEE_COUNTERS/35534825/1571011939706.NONE +64772 7546 -1 /data/data/com.google.android.gms/files/clearcut/0/PHOTOS +64772 7547 -1 /data/data/com.google.android.gms/files/clearcut/0/PHOTOS/1153794811 +64772 7548 -1 /data/data/com.google.android.gms/files/clearcut/0/PHOTOS/1153794811/play_logger_context.pb +64772 7549 -1 /data/data/com.google.android.gms/files/clearcut/0/PHOTOS/1153794811/1571011939833.NONE +64772 9178 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE +64772 9179 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE/-1904556752 +64772 9180 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE/-1904556752/play_logger_context.pb +64772 9181 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE/-1904556752/1571017733035.NONE +64772 9581 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_SNET_GCORE/-1904556752/1571096097808.NONE +64772 6991 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_AUTH +64772 6813 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_AUTH/56105022 +64772 6986 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_AUTH/56105022/play_logger_context.pb +64772 7000 -1 /data/data/com.google.android.gms/files/clearcut/0/ANDROID_AUTH/56105022/1571252116625.NONE +64772 7461 -1 /data/data/com.google.android.gms/files/clearcut/0/ROMANESCO_GCORE +64772 7453 -1 /data/data/com.google.android.gms/files/clearcut/0/ROMANESCO_GCORE/-1852617316 +64772 7526 -1 /data/data/com.google.android.gms/files/clearcut/0/ROMANESCO_GCORE/-1852617316/play_logger_context.pb +64772 7145 -1 /data/data/com.google.android.gms/files/clearcut/0/ROMANESCO_GCORE/-1852617316/1571262831220.NONE +64772 4753 -1 /data/data/com.google.android.gms/files/clearcut/2 +64772 4756 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE +64772 4758 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856 +64772 4760 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856/play_logger_context.pb +64772 4762 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856/1571007394581.NONE +64772 6763 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856/1571007524207.NONE +64772 6552 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE/335589856/1571086304179.NONE +64772 3144 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS +64772 3145 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994 +64772 3143 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994/play_logger_context.pb +64772 3158 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994/1571007396472.NONE +64772 7587 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994/1571011940666.NONE +64772 7037 -1 /data/data/com.google.android.gms/files/clearcut/2/CLEARCUT_LOG_LOSS/-1526439994/1571086349000.NONE +64772 5945 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS +64772 5946 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904 +64772 5947 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904/play_logger_context.pb +64772 5948 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904/1571007409121.NONE +64772 6901 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904/1571007532500.NONE +64772 6974 -1 /data/data/com.google.android.gms/files/clearcut/2/PHENOTYPE_COUNTERS/895093904/1571086316163.NONE +64772 2397 -1 /data/data/com.google.android.gms/files/geofencer_ks +64772 6724 -1 /data/data/com.google.android.gms/files/geofencer_state_list +64772 4866 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb +64772 5655 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/LOG +64772 4873 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/LOCK +64772 6685 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/LOG.old +64772 5656 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/000007.log +64772 5658 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/CURRENT +64772 5657 -1 /data/data/com.google.android.gms/files/fcm_package_info.ldb/MANIFEST-000006 +64772 4556 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb +64772 5660 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/LOG +64772 4554 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/LOCK +64772 6697 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/LOG.old +64772 5662 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/000007.log +64772 5663 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/CURRENT +64772 5661 -1 /data/data/com.google.android.gms/files/fcm_queued_messages.ldb/MANIFEST-000006 +64772 4959 -1 /data/data/com.google.android.gms/files/com.google.android.gms.auth.be.change.AccountsChange +64772 5041 -1 /data/data/com.google.android.gms/files/auth.channel.store.properties +64772 5031 -1 /data/data/com.google.android.gms/files/place_cache_keyfile +64772 3159 -1 /data/data/com.google.android.gms/files/auth.authzen.store.transactions_v2 +64772 3451 -1 /data/data/com.google.android.gms/files/nearby-discovery +64772 3459 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db +64772 6355 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/LOG +64772 3458 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/LOCK +64772 6961 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/LOG.old +64772 6353 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/000007.log +64772 6357 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/CURRENT +64772 6362 -1 /data/data/com.google.android.gms/files/nearby-discovery/nearby_discovery_item_cache.db/MANIFEST-000006 +64772 3296 -1 /data/data/com.google.android.gms/files/nearby_messages +64772 3229 -1 /data/data/com.google.android.gms/files/google_app_measurement.db +64772 7229 -1 /data/data/com.google.android.gms/files/icing_apps_corpus_component_names.txt +64772 3781 -1 /data/data/com.google.android.gms/files/icing_apps_corpus_entries.bin +64772 5484 -1 /data/data/com.google.android.gms/files/unpacked +64772 5485 -1 /data/data/com.google.android.gms/files/unpacked/shared +64772 5486 -1 /data/data/com.google.android.gms/files/unpacked/shared/cld3model +64772 5487 -1 /data/data/com.google.android.gms/files/unpacked/shared/cld3model/cld3-model-0001 +64772 7036 -1 /data/data/com.google.android.gms/files/mdh +64772 7041 -1 /data/data/com.google.android.gms/files/mdh/level.db +64772 6608 -1 /data/data/com.google.android.gms/files/mdh/level.db/LOG +64772 7043 -1 /data/data/com.google.android.gms/files/mdh/level.db/LOCK +64772 6875 -1 /data/data/com.google.android.gms/files/mdh/level.db/LOG.old +64772 6619 -1 /data/data/com.google.android.gms/files/mdh/level.db/CURRENT +64772 6612 -1 /data/data/com.google.android.gms/files/mdh/level.db/000005.log +64772 6617 -1 /data/data/com.google.android.gms/files/mdh/level.db/MANIFEST-000004 +64772 5923 -1 /data/data/com.google.android.gms/files/d2d_restore_data +64772 6041 -1 /data/data/com.google.android.gms/files/gmscore_global_dirs.txt +64772 9166 -1 /data/data/com.google.android.gms/files/gms_icing_mdd_garbage_file +64772 9482 -1 /data/data/com.google.android.gms/files/nlp_acd +64772 2055 -1 /data/data/com.google.android.gms/app_usage_reporting_db +64772 4919 -1 /data/data/com.google.android.gms/app_dg_cache +64772 4943 -1 /data/data/com.google.android.gms/app_place_inference_data_index +64772 4955 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1 +64772 3006 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/version +64772 3536 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/LOG +64772 3005 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/LOCK +64772 3417 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/LOG.old +64772 3540 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/000031.log +64772 3564 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/CURRENT +64772 3542 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l1/MANIFEST-000030 +64772 2943 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2 +64772 3072 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/version +64772 3579 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/LOG +64772 3098 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/LOCK +64772 3439 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/LOG.old +64772 3582 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/000031.log +64772 3585 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/CURRENT +64772 3584 -1 /data/data/com.google.android.gms/app_place_inference_data_index/l2/MANIFEST-000030 +64772 3117 -1 /data/data/com.google.android.gms/app_place_inference_data_index/ttl2 +64772 3398 -1 /data/data/com.google.android.gms/app_instantapps +64772 3632 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase +64772 6412 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/LOG +64772 3572 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/LOCK +64772 6853 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/LOG.old +64772 6438 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/000007.log +64772 6913 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/CURRENT +64772 6794 -1 /data/data/com.google.android.gms/app_instantapps/metadataDatabase/MANIFEST-000006 +64772 3209 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb +64772 6914 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/LOG +64772 3297 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/LOCK +64772 6857 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/LOG.old +64772 6916 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/000007.log +64772 6918 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/CURRENT +64772 6917 -1 /data/data/com.google.android.gms/app_instantapps/domainFilterInfoDb/MANIFEST-000006 +64772 3833 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb +64772 6919 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/LOG +64772 2278 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/LOCK +64772 6861 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/LOG.old +64772 6923 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/000007.log +64772 6741 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/CURRENT +64772 6738 -1 /data/data/com.google.android.gms/app_instantapps/instantAppDataDb/MANIFEST-000006 +64772 3338 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb +64772 6381 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/LOG +64772 4964 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/LOCK +64772 6865 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/LOG.old +64772 6059 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/000007.log +64772 6398 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/CURRENT +64772 6811 -1 /data/data/com.google.android.gms/app_instantapps/prefixFilterInfoDb/MANIFEST-000006 +64772 1762 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase +64772 6011 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/LOG +64772 3263 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/LOCK +64772 6869 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/LOG.old +64772 6012 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/000007.log +64772 6324 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/CURRENT +64772 6037 -1 /data/data/com.google.android.gms/app_instantapps/notificationRetryDatabase/MANIFEST-000006 +64772 5697 -1 /data/data/com.google.android.gms/app_APP +64772 6003 -1 /data/data/com.google.android.gms/app_ulr_db +64772 6732 -1 /data/data/com.google.android.gms/app_ulr_db/LOG +64772 6005 -1 /data/data/com.google.android.gms/app_ulr_db/LOCK +64772 6922 -1 /data/data/com.google.android.gms/app_ulr_db/LOG.old +64772 6943 -1 /data/data/com.google.android.gms/app_ulr_db/000009.log +64772 6952 -1 /data/data/com.google.android.gms/app_ulr_db/CURRENT +64772 6948 -1 /data/data/com.google.android.gms/app_ulr_db/MANIFEST-000007 +64772 6040 -1 /data/data/com.google.android.gms/app_vision +64772 7976 -1 /data/data/com.google.android.gms/app_gH_async_psd +64772 5323 -1 /data/data/com.google.android.ims +64772 5324 -1 /data/data/com.google.android.ims/cache +64772 5325 -1 /data/data/com.google.android.ims/code_cache +64772 5494 -1 /data/data/com.google.android.ims/files +64772 5600 -1 /data/data/com.google.android.ims/files/msrp.bks +64772 5498 -1 /data/data/com.google.android.ims/shared_prefs +64772 7049 -1 /data/data/com.google.android.ims/shared_prefs/dialer_hangouts_preferences.xml +64772 5639 -1 /data/data/com.google.android.ims/shared_prefs/carrier_services.xml +64772 6416 -1 /data/data/com.google.android.ims/shared_prefs/primes.xml +64772 6061 -1 /data/data/com.google.android.ims/shared_prefs/carrierservices_library_phenotype_preferences.xml +64772 5510 -1 /data/data/com.google.android.ims/app_logs +64772 5511 -1 /data/data/com.google.android.ims/app_logs/carrier_services0.log.lck +64772 5512 -1 /data/data/com.google.android.ims/app_logs/carrier_services0.log +64772 5326 -1 /data/data/com.google.android.tag +64772 5327 -1 /data/data/com.google.android.tag/cache +64772 5328 -1 /data/data/com.google.android.tag/code_cache +64772 5332 -1 /data/data/com.google.android.overlay.permissioncontroller +64772 5333 -1 /data/data/com.google.android.overlay.permissioncontroller/cache +64772 5334 -1 /data/data/com.google.android.overlay.permissioncontroller/code_cache +64772 5335 -1 /data/data/com.google.android.partnersetup +64772 5336 -1 /data/data/com.google.android.partnersetup/cache +64772 5337 -1 /data/data/com.google.android.partnersetup/code_cache +64772 1429 -1 /data/data/com.google.android.partnersetup/shared_prefs +64772 6074 -1 /data/data/com.google.android.partnersetup/shared_prefs/ApplicationHidingPreferences.xml +64772 2671 -1 /data/data/com.google.android.partnersetup/shared_prefs/RLZ.xml +64772 7001 -1 /data/data/com.google.android.partnersetup/shared_prefs/partnersetup_phenotype_flags.xml +64772 6077 -1 /data/data/com.google.android.partnersetup/databases +64772 6078 -1 /data/data/com.google.android.partnersetup/databases/rlz_data.db +64772 6079 -1 /data/data/com.google.android.partnersetup/databases/rlz_data.db-journal +64772 5338 -1 /data/data/com.google.android.apps.wallpaper.nexus +64772 5339 -1 /data/data/com.google.android.apps.wallpaper.nexus/cache +64772 5340 -1 /data/data/com.google.android.apps.wallpaper.nexus/code_cache +64772 5342 -1 /data/data/com.google.android.videos +64772 5343 -1 /data/data/com.google.android.videos/cache +64772 6110 -1 /data/data/com.google.android.videos/cache/play_common_main +64772 6112 -1 /data/data/com.google.android.videos/cache/play_common_images +64772 6113 -1 /data/data/com.google.android.videos/cache/logs_v2 +64772 6114 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account.metalog +64772 6213 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account.metalog/play_metalog.log +64772 6214 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account.metalog/logs_upload_attempt.log +64772 6117 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account +64772 7017 -1 /data/data/com.google.android.videos/cache/logs_v2/null_account/eventlog.store5199687948434666285.log +64772 6124 -1 /data/data/com.google.android.videos/cache/applogcat +64772 6125 -1 /data/data/com.google.android.videos/cache/applogcat/log_0 +64772 7015 -1 /data/data/com.google.android.videos/cache/applogcat/log_1 +64772 5344 -1 /data/data/com.google.android.videos/code_cache +64772 6109 -1 /data/data/com.google.android.videos/shared_prefs +64772 6148 -1 /data/data/com.google.android.videos/shared_prefs/youtube.xml +64772 6116 -1 /data/data/com.google.android.videos/shared_prefs/com.google.android.videos_preferences.xml +64772 6111 -1 /data/data/com.google.android.videos/app_sslcache +64772 6119 -1 /data/data/com.google.android.videos/databases +64772 6120 -1 /data/data/com.google.android.videos/databases/purchase_store.db +64772 6122 -1 /data/data/com.google.android.videos/databases/purchase_store.db-wal +64772 6123 -1 /data/data/com.google.android.videos/databases/purchase_store.db-shm +64772 5353 -1 /data/data/com.google.SSRestartDetector +64772 5354 -1 /data/data/com.google.SSRestartDetector/cache +64772 5355 -1 /data/data/com.google.SSRestartDetector/code_cache +64772 5365 -1 /data/data/com.android.providers.contacts.auto_generated_rro_product__ +64772 5366 -1 /data/data/com.android.providers.contacts.auto_generated_rro_product__/cache +64772 5367 -1 /data/data/com.android.providers.contacts.auto_generated_rro_product__/code_cache +64772 5371 -1 /data/data/com.google.android.printservice.recommendation +64772 5372 -1 /data/data/com.google.android.printservice.recommendation/cache +64772 5373 -1 /data/data/com.google.android.printservice.recommendation/code_cache +64772 5377 -1 /data/data/com.google.android.calendar +64772 5378 -1 /data/data/com.google.android.calendar/cache +64772 5379 -1 /data/data/com.google.android.calendar/code_cache +64772 5460 -1 /data/data/com.google.android.calendar/databases +64772 5461 -1 /data/data/com.google.android.calendar/databases/timelydata.db +64772 5463 -1 /data/data/com.google.android.calendar/databases/timelydata.db-wal +64772 5464 -1 /data/data/com.google.android.calendar/databases/timelydata.db-shm +64772 5475 -1 /data/data/com.google.android.calendar/databases/groovedata.db +64772 5476 -1 /data/data/com.google.android.calendar/databases/groovedata.db-journal +64772 5482 -1 /data/data/com.google.android.calendar/databases/usernotifications.db +64772 5488 -1 /data/data/com.google.android.calendar/databases/usernotifications.db-journal +64772 7427 -1 /data/data/com.google.android.calendar/databases/growthkit.db +64772 5465 -1 /data/data/com.google.android.calendar/files +64772 5480 -1 /data/data/com.google.android.calendar/files/notification_logs +64772 5491 -1 /data/data/com.google.android.calendar/files/notification_logs/20191013.log +64772 6982 -1 /data/data/com.google.android.calendar/files/notification_logs/20191014.log +64772 7425 -1 /data/data/com.google.android.calendar/files/notification_logs/20191015.log +64772 6984 -1 /data/data/com.google.android.calendar/files/notification_logs/20191016.log +64772 6342 -1 /data/data/com.google.android.calendar/files/gaClientId +64772 5471 -1 /data/data/com.google.android.calendar/shared_prefs +64772 7157 -1 /data/data/com.google.android.calendar/shared_prefs/com.google.android.calendar_preferences.xml +64772 5489 -1 /data/data/com.google.android.calendar/shared_prefs/sync_adapter_prefs.xml.xml +64772 5496 -1 /data/data/com.google.android.calendar/shared_prefs/growthkit_shared_prefs.xml +64772 5497 -1 /data/data/com.google.android.calendar/shared_prefs/com.google.android.calendar_preferences_no_backup.xml +64772 5509 -1 /data/data/com.google.android.calendar/shared_prefs/growthkit_phenotype_prefs.xml +64772 6337 -1 /data/data/com.google.android.calendar/shared_prefs/phenotype_preferences.xml +64772 5383 -1 /data/data/com.google.android.apps.internal.betterbug +64772 5384 -1 /data/data/com.google.android.apps.internal.betterbug/cache +64772 5385 -1 /data/data/com.google.android.apps.internal.betterbug/code_cache +64772 5395 -1 /data/data/com.google.android.networkstack.permissionconfig +64772 5396 -1 /data/data/com.google.android.networkstack.permissionconfig/cache +64772 5397 -1 /data/data/com.google.android.networkstack.permissionconfig/code_cache +64772 5401 -1 /data/data/com.google.android.wfcactivation +64772 5402 -1 /data/data/com.google.android.wfcactivation/cache +64772 5403 -1 /data/data/com.google.android.wfcactivation/code_cache +64772 5584 -1 /data/data/com.google.android.wfcactivation/shared_prefs +64772 5404 -1 /data/data/com.google.android.apps.pixelmigrate +64772 5405 -1 /data/data/com.google.android.apps.pixelmigrate/cache +64772 5406 -1 /data/data/com.google.android.apps.pixelmigrate/code_cache +64772 5407 -1 /data/data/com.google.android.settings.intelligence +64772 5408 -1 /data/data/com.google.android.settings.intelligence/cache +64772 5409 -1 /data/data/com.google.android.settings.intelligence/code_cache +64772 6094 -1 /data/data/com.google.android.settings.intelligence/shared_prefs +64772 5410 -1 /data/data/com.google.android.projection.gearhead +64772 5411 -1 /data/data/com.google.android.projection.gearhead/cache +64772 6083 -1 /data/data/com.google.android.projection.gearhead/cache/change_notifier_file +64772 5412 -1 /data/data/com.google.android.projection.gearhead/code_cache +64772 6080 -1 /data/data/com.google.android.projection.gearhead/files +64772 6081 -1 /data/data/com.google.android.projection.gearhead/shared_prefs +64772 7323 -1 /data/data/com.google.android.projection.gearhead/shared_prefs/com.google.android.gms.analytics.prefs.xml +64772 6091 -1 /data/data/com.google.android.projection.gearhead/shared_prefs/crash_shared_preferences_com.google.android.projection.gearhead:shared.xml +64772 6093 -1 /data/data/com.google.android.projection.gearhead/shared_prefs/crash_shared_preferences_com.google.android.projection.gearhead:projection.xml +64772 6086 -1 /data/data/com.google.android.projection.gearhead/databases +64772 6087 -1 /data/data/com.google.android.projection.gearhead/databases/google_analytics_v4.db +64772 6088 -1 /data/data/com.google.android.projection.gearhead/databases/google_analytics_v4.db-journal +64772 5416 -1 /data/data/com.google.android.apps.scone +64772 5417 -1 /data/data/com.google.android.apps.scone/cache +64772 5418 -1 /data/data/com.google.android.apps.scone/code_cache +64772 5419 -1 /data/data/com.google.android.apps.turbo +64772 5420 -1 /data/data/com.google.android.apps.turbo/cache +64772 5421 -1 /data/data/com.google.android.apps.turbo/code_cache +64772 5879 -1 /data/data/com.google.android.apps.turbo/shared_prefs +64772 1773 -1 /data/data/com.google.android.apps.turbo/shared_prefs/phenotypeFlags.xml +64772 7946 -1 /data/data/com.google.android.apps.turbo/shared_prefs/app_usage_stats.xml +64772 7614 -1 /data/data/com.google.android.apps.turbo/shared_prefs/aab_predictions.xml +64772 7601 -1 /data/data/com.google.android.apps.turbo/shared_prefs/AppUsagePrefs.xml +64772 9277 -1 /data/data/com.google.android.apps.turbo/shared_prefs/ZebedeeUserPrefs.xml +64772 5880 -1 /data/data/com.google.android.apps.turbo/no_backup +64772 5881 -1 /data/data/com.google.android.apps.turbo/no_backup/com.google.android.gms.appid-no-backup +64772 5882 -1 /data/data/com.google.android.apps.turbo/files +64772 5883 -1 /data/data/com.google.android.apps.turbo/files/firebase_inter_process_mutex-lock_write_report_to_sqlite.lock +64772 6192 -1 /data/data/com.google.android.apps.turbo/files/firebase_inter_process_mutex-lock_send_report_to_server.lock +64772 5884 -1 /data/data/com.google.android.apps.turbo/databases +64772 5885 -1 /data/data/com.google.android.apps.turbo/databases/crash_reports +64772 5886 -1 /data/data/com.google.android.apps.turbo/databases/crash_reports-journal +64772 7147 -1 /data/data/com.google.android.apps.turbo/databases/appusage.db +64772 7148 -1 /data/data/com.google.android.apps.turbo/databases/appusage.db-journal +64772 7502 -1 /data/data/com.google.android.apps.turbo/databases/turbo.db +64772 7504 -1 /data/data/com.google.android.apps.turbo/databases/turbo.db-wal +64772 7505 -1 /data/data/com.google.android.apps.turbo/databases/turbo.db-shm +64772 7523 -1 /data/data/com.google.android.apps.turbo/databases/zebedee.db +64772 7524 -1 /data/data/com.google.android.apps.turbo/databases/zebedee.db-journal +64772 5425 -1 /data/data/com.android.omadm.service +64772 5426 -1 /data/data/com.android.omadm.service/cache +64772 5427 -1 /data/data/com.android.omadm.service/code_cache +26 1561660 -1 /data/data/com.android.omadm.service/lib +64772 5432 -1 /data/data/com.google.android.apps.wearables.maestro.companion +64772 5433 -1 /data/data/com.google.android.apps.wearables.maestro.companion/cache +64772 5434 -1 /data/data/com.google.android.apps.wearables.maestro.companion/code_cache +64772 5438 -1 /data/data/com.google.android.apps.wallpaper +64772 5439 -1 /data/data/com.google.android.apps.wallpaper/cache +64772 5440 -1 /data/data/com.google.android.apps.wallpaper/code_cache +64772 5892 -1 /data/data/com.google.android.apps.wallpaper/files +64772 5893 -1 /data/data/com.google.android.apps.wallpaper/shared_prefs +64772 6881 -1 /data/data/com.google.android.apps.wallpaper/shared_prefs/wallpaper.xml +64772 5444 -1 /data/data/com.google.vr.vrcore +64772 5445 -1 /data/data/com.google.vr.vrcore/cache +64772 5446 -1 /data/data/com.google.vr.vrcore/code_cache +64772 5451 -1 /data/data/com.google.android.gms.location.history +64772 5452 -1 /data/data/com.google.android.gms.location.history/cache +64772 5453 -1 /data/data/com.google.android.gms.location.history/code_cache +64772 5457 -1 /data/data/com.google.android.hardwareinfo +64772 5458 -1 /data/data/com.google.android.hardwareinfo/cache +64772 5459 -1 /data/data/com.google.android.hardwareinfo/code_cache +64772 507 -1 /data/data/com.google.android.dreamlinerupdater +64772 550 -1 /data/data/com.google.android.dreamlinerupdater/cache +64772 731 -1 /data/data/com.google.android.dreamlinerupdater/code_cache +64772 1325 -1 /data/data/com.tmobile.planprovider +64772 1326 -1 /data/data/com.tmobile.planprovider/cache +64772 1338 -1 /data/data/com.tmobile.planprovider/code_cache +64772 1358 -1 /data/data/com.google.android.apps.helprtc +64772 1345 -1 /data/data/com.google.android.apps.helprtc/cache +64772 1351 -1 /data/data/com.google.android.apps.helprtc/code_cache +64772 1350 -1 /data/data/qualcomm.com.vzw_msdc_api +64772 1353 -1 /data/data/qualcomm.com.vzw_msdc_api/cache +64772 1352 -1 /data/data/qualcomm.com.vzw_msdc_api/code_cache +64772 1340 -1 /data/data/com.google.android.gms.setup +64772 1361 -1 /data/data/com.google.android.gms.setup/cache +64772 411 -1 /data/data/com.google.android.gms.setup/code_cache +64772 1493 -1 /data/data/android.auto_generated_rro_product__ +64772 1494 -1 /data/data/android.auto_generated_rro_product__/cache +64772 1495 -1 /data/data/android.auto_generated_rro_product__/code_cache +64772 1502 -1 /data/data/com.google.android.vendorloggingservice +64772 1503 -1 /data/data/com.google.android.vendorloggingservice/cache +64772 1504 -1 /data/data/com.google.android.vendorloggingservice/code_cache +64772 1505 -1 /data/data/com.android.connectivity.metrics +64772 1506 -1 /data/data/com.android.connectivity.metrics/cache +64772 1507 -1 /data/data/com.android.connectivity.metrics/code_cache +64772 1510 -1 /data/data/com.verizon.llkagent +64772 1511 -1 /data/data/com.verizon.llkagent/cache +64772 1512 -1 /data/data/com.verizon.llkagent/code_cache +64772 1516 -1 /data/data/com.google.android.inputmethod.latin +64772 1517 -1 /data/data/com.google.android.inputmethod.latin/cache +64772 1518 -1 /data/data/com.google.android.inputmethod.latin/code_cache +64772 1402 -1 /data/data/com.google.android.inputmethod.latin/files +64772 2121 -1 /data/data/com.google.android.inputmethod.latin/files/crash_detection_local_prefs +64772 2119 -1 /data/data/com.google.android.inputmethod.latin/files/crash_detection_local_prefs/app_version_code +64772 2124 -1 /data/data/com.google.android.inputmethod.latin/files/crash_detection_local_prefs/app_version_name +64772 2184 -1 /data/data/com.google.android.inputmethod.latin/files/personal +64772 6201 -1 /data/data/com.google.android.inputmethod.latin/files/personal/userhistory +64772 7612 -1 /data/data/com.google.android.inputmethod.latin/files/personal/userhistory/UserHistory.en_US.dict +64772 6540 -1 /data/data/com.google.android.inputmethod.latin/files/personal/Personal.en_US.dict +64772 6203 -1 /data/data/com.google.android.inputmethod.latin/files/personal/en_us.20190429.lm.acc +64772 7570 -1 /data/data/com.google.android.inputmethod.latin/files/personal/blacklist.en_us.list +64772 2279 -1 /data/data/com.google.android.inputmethod.latin/files/nativecrash +64772 6164 -1 /data/data/com.google.android.inputmethod.latin/files/dlam +64772 6165 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks +64772 6166 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests +64772 6209 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests/bundled_emoji-3 +64772 6210 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests/bundled_emoji-3/superpacks_manifest_bundled.json +64772 6170 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests/bundled_delight-20190507 +64772 6202 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/manifests/delight-20190507 +64772 6177 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_delight +64772 6186 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_delight/main_en_us_20190429_2 +64772 6227 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/delight +64772 6234 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_emoji +64772 6237 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_emoji/442dd7424a2b73ebe817b5223ec48db9 +64772 6238 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_emoji/442dd7424a2b73ebe817b5223ec48db9/en +64772 6239 -1 /data/data/com.google.android.inputmethod.latin/files/superpacks/bundled_emoji/442dd7424a2b73ebe817b5223ec48db9/en.shortcuts +64772 6205 -1 /data/data/com.google.android.inputmethod.latin/files/emoji_superpacks_manifest_bundled.zip +64772 6235 -1 /data/data/com.google.android.inputmethod.latin/files/emoji_search_en_us.zip +64772 1991 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs +64772 7405 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_preferences.xml +64772 4705 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_private.xml +64772 6727 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs/phenotype_prefs.xml +64772 6220 -1 /data/data/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latinlm_tracker.xml +64772 4143 -1 /data/data/com.google.android.inputmethod.latin/databases +64772 4140 -1 /data/data/com.google.android.inputmethod.latin/databases/superpacks.db +64772 4703 -1 /data/data/com.google.android.inputmethod.latin/databases/superpacks.db-journal +64772 4716 -1 /data/data/com.google.android.inputmethod.latin/databases/PersonalDictionary.db +64772 4731 -1 /data/data/com.google.android.inputmethod.latin/databases/PersonalDictionary.db-journal +64772 5110 -1 /data/data/com.google.android.trichromelibrary_386509238 +64772 5111 -1 /data/data/com.google.android.trichromelibrary_386509238/cache +64772 5112 -1 /data/data/com.google.android.trichromelibrary_386509238/code_cache +64772 5119 -1 /data/data/com.google.android.apps.enterprise.dmagent +64772 5120 -1 /data/data/com.google.android.apps.enterprise.dmagent/cache +64772 5121 -1 /data/data/com.google.android.apps.enterprise.dmagent/code_cache +64772 5704 -1 /data/data/com.google.android.apps.enterprise.dmagent/shared_prefs +64772 5709 -1 /data/data/com.google.android.apps.enterprise.dmagent/shared_prefs/DeviceManagementAgent.xml +64772 5711 -1 /data/data/com.google.android.apps.enterprise.dmagent/shared_prefs/Messages.xml +64772 5712 -1 /data/data/com.google.android.apps.enterprise.dmagent/shared_prefs/DeviceManagementAgentMainDataFile.xml +64772 5143 -1 /data/data/com.google.android.configupdater +64772 5144 -1 /data/data/com.google.android.configupdater/cache +64772 5145 -1 /data/data/com.google.android.configupdater/code_cache +64772 5904 -1 /data/data/com.google.android.configupdater/files +64772 5910 -1 /data/data/com.google.android.configupdater/files/downloads +64772 5909 -1 /data/data/com.google.android.configupdater/shared_prefs +64772 8542 -1 /data/data/com.google.android.configupdater/shared_prefs/configUpdaterPhenotypePref.xml +64772 3199 -1 /data/data/com.android.bookmarkprovider +64772 3200 -1 /data/data/com.android.bookmarkprovider/cache +64772 3201 -1 /data/data/com.android.bookmarkprovider/code_cache +64772 3202 -1 /data/data/com.android.settings +64772 3203 -1 /data/data/com.android.settings/cache +64772 3204 -1 /data/data/com.android.settings/code_cache +64772 3205 -1 /data/data/com.android.theme.icon_pack.filled.launcher +64772 3206 -1 /data/data/com.android.theme.icon_pack.filled.launcher/cache +64772 3207 -1 /data/data/com.android.theme.icon_pack.filled.launcher/code_cache +64772 5146 -1 /data/data/com.google.android.overlay.googlewebview +64772 5147 -1 /data/data/com.google.android.overlay.googlewebview/cache +64772 5148 -1 /data/data/com.google.android.overlay.googlewebview/code_cache +64772 3211 -1 /data/data/com.android.cts.ctsshim +64772 3212 -1 /data/data/com.android.cts.ctsshim/cache +64772 3213 -1 /data/data/com.android.cts.ctsshim/code_cache +64772 3217 -1 /data/data/com.android.theme.icon_pack.circular.launcher +64772 3218 -1 /data/data/com.android.theme.icon_pack.circular.launcher/cache +64772 3219 -1 /data/data/com.android.theme.icon_pack.circular.launcher/code_cache +64772 3220 -1 /data/data/com.qti.diagservices +64772 3221 -1 /data/data/com.qti.diagservices/cache +64772 3222 -1 /data/data/com.qti.diagservices/code_cache +64772 3223 -1 /data/data/com.qualcomm.qti.services.secureui +64772 3224 -1 /data/data/com.qualcomm.qti.services.secureui/cache +64772 3225 -1 /data/data/com.qualcomm.qti.services.secureui/code_cache +64772 3226 -1 /data/data/com.android.vpndialogs +64772 3227 -1 /data/data/com.android.vpndialogs/cache +64772 3228 -1 /data/data/com.android.vpndialogs/code_cache +64772 5207 -1 /data/data/com.verizon.services +64772 5208 -1 /data/data/com.verizon.services/cache +64772 5209 -1 /data/data/com.verizon.services/code_cache +64772 3232 -1 /data/data/com.android.phone +64772 3233 -1 /data/data/com.android.phone/cache +64772 3234 -1 /data/data/com.android.phone/code_cache +64772 3442 -1 /data/data/com.android.phone/files +64772 3238 -1 /data/data/com.android.theme.icon_pack.filled.themepicker +64772 3239 -1 /data/data/com.android.theme.icon_pack.filled.themepicker/cache +64772 3240 -1 /data/data/com.android.theme.icon_pack.filled.themepicker/code_cache +64772 3241 -1 /data/data/com.android.wallpaperbackup +64772 3242 -1 /data/data/com.android.wallpaperbackup/cache +64772 3243 -1 /data/data/com.android.wallpaperbackup/code_cache +64772 3244 -1 /data/data/com.android.providers.blockednumber +64772 3245 -1 /data/data/com.android.providers.blockednumber/cache +64772 3246 -1 /data/data/com.android.providers.blockednumber/code_cache +64772 3247 -1 /data/data/com.android.providers.userdictionary +64772 3248 -1 /data/data/com.android.providers.userdictionary/cache +64772 3249 -1 /data/data/com.android.providers.userdictionary/code_cache +64772 4511 -1 /data/data/com.android.providers.userdictionary/databases +64772 4695 -1 /data/data/com.android.providers.userdictionary/databases/user_dict.db +64772 4698 -1 /data/data/com.android.providers.userdictionary/databases/user_dict.db-journal +64772 3253 -1 /data/data/com.android.internal.systemui.navbar.gestural +64772 3254 -1 /data/data/com.android.internal.systemui.navbar.gestural/cache +64772 3255 -1 /data/data/com.android.internal.systemui.navbar.gestural/code_cache +64772 5216 -1 /data/data/com.google.android.euicc +64772 5217 -1 /data/data/com.google.android.euicc/cache +64772 5218 -1 /data/data/com.google.android.euicc/code_cache +64772 3265 -1 /data/data/com.android.systemui +64772 3266 -1 /data/data/com.android.systemui/cache +64772 3267 -1 /data/data/com.android.systemui/code_cache +64772 3271 -1 /data/data/com.android.bluetoothmidiservice +64772 3272 -1 /data/data/com.android.bluetoothmidiservice/cache +64772 3273 -1 /data/data/com.android.bluetoothmidiservice/code_cache +64772 3289 -1 /data/data/com.qualcomm.timeservice +64772 3290 -1 /data/data/com.qualcomm.timeservice/cache +64772 3291 -1 /data/data/com.qualcomm.timeservice/code_cache +64772 3292 -1 /data/data/com.qualcomm.atfwd +64772 3293 -1 /data/data/com.qualcomm.atfwd/cache +64772 3294 -1 /data/data/com.qualcomm.atfwd/code_cache +64772 3301 -1 /data/data/com.android.providers.contacts +64772 3302 -1 /data/data/com.android.providers.contacts/cache +64772 3303 -1 /data/data/com.android.providers.contacts/code_cache +64772 3386 -1 /data/data/com.android.providers.contacts/databases +64772 3387 -1 /data/data/com.android.providers.contacts/databases/calllog.db +64772 3389 -1 /data/data/com.android.providers.contacts/databases/calllog.db-journal +64772 3390 -1 /data/data/com.android.providers.contacts/databases/contacts2.db +64772 3415 -1 /data/data/com.android.providers.contacts/databases/profile.db +64772 3416 -1 /data/data/com.android.providers.contacts/databases/profile.db-journal +64772 3396 -1 /data/data/com.android.providers.contacts/shared_prefs +64772 3423 -1 /data/data/com.android.providers.contacts/shared_prefs/com.android.providers.contacts_preferences.xml +64772 3514 -1 /data/data/com.android.providers.contacts/shared_prefs/ContactsUpgradeReceiver.xml +64772 3418 -1 /data/data/com.android.providers.contacts/files +64772 3419 -1 /data/data/com.android.providers.contacts/files/photos +64772 3420 -1 /data/data/com.android.providers.contacts/files/profile +64772 3421 -1 /data/data/com.android.providers.contacts/files/profile/photos +64772 5174 -1 /data/data/com.android.theme.font.arvolato +64772 5175 -1 /data/data/com.android.theme.font.arvolato/cache +64772 5176 -1 /data/data/com.android.theme.font.arvolato/code_cache +64772 3316 -1 /data/data/android.auto_generated_rro_vendor__ +64772 3317 -1 /data/data/android.auto_generated_rro_vendor__/cache +64772 3318 -1 /data/data/android.auto_generated_rro_vendor__/code_cache +64772 5149 -1 /data/data/com.google.android.apps.safetyhub +64772 5150 -1 /data/data/com.google.android.apps.safetyhub/cache +64772 5151 -1 /data/data/com.google.android.apps.safetyhub/code_cache +64772 1588 -1 /data/data/com.google.android.apps.safetyhub/files +64772 1614 -1 /data/data/com.google.android.apps.safetyhub/files/tiktok +64772 1615 -1 /data/data/com.google.android.apps.safetyhub/files/tiktok/103243289 +64772 1645 -1 /data/data/com.google.android.apps.safetyhub/files/103795117 +64772 1446 -1 /data/data/com.google.android.apps.safetyhub/files/phenotype +64772 9550 -1 /data/data/com.google.android.apps.safetyhub/files/phenotype/com.google.android.apps.safetyhub +64772 5813 -1 /data/data/com.google.android.apps.safetyhub/files/AccountData.pb +64772 2424 -1 /data/data/com.google.android.apps.safetyhub/files/AccountSyncData.pb +64772 5863 -1 /data/data/com.google.android.apps.safetyhub/files/AppStateDataStore.pb +64772 5820 -1 /data/data/com.google.android.apps.safetyhub/files/accounts +64772 5821 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1 +64772 5847 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/MedInfoPendingUpdatesDataStore.pb +64772 5832 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/SqliteKeyValueCache:MedInfoCache.db +64772 5846 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/MedInfoLocalBackendDataStore.pb +64772 5853 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/SqliteKeyValueCache:EmergencyContactsCache.db +64772 6884 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/CarCrashSettings.pb +64772 6736 -1 /data/data/com.google.android.apps.safetyhub/files/accounts/1/EmergencyContactsPendingUpdatesDataStore.pb +64772 5861 -1 /data/data/com.google.android.apps.safetyhub/files/LockScreenCredentialEncryptedDataStore.pb +64772 1627 -1 /data/data/com.google.android.apps.safetyhub/shared_prefs +64772 5810 -1 /data/data/com.google.android.apps.safetyhub/databases +64772 5811 -1 /data/data/com.google.android.apps.safetyhub/databases/androidx.work.workdb +64772 5814 -1 /data/data/com.google.android.apps.safetyhub/databases/androidx.work.workdb-wal +64772 5815 -1 /data/data/com.google.android.apps.safetyhub/databases/androidx.work.workdb-shm +64772 5162 -1 /data/data/com.google.android.apps.work.oobconfig +64772 5163 -1 /data/data/com.google.android.apps.work.oobconfig/cache +64772 5164 -1 /data/data/com.google.android.apps.work.oobconfig/code_cache +64772 4939 -1 /data/data/com.google.android.apps.work.oobconfig/files +64772 4938 -1 /data/data/com.google.android.apps.work.oobconfig/files/downloaded_images +64772 4960 -1 /data/data/com.google.android.apps.work.oobconfig/shared_prefs +64772 1738 -1 /data/data/com.google.android.apps.work.oobconfig/shared_prefs/com.google.android.gms.measurement.prefs.xml +64772 5895 -1 /data/data/com.google.android.apps.work.oobconfig/shared_prefs/oobconfig_prefs.xml +64772 4940 -1 /data/data/com.google.android.apps.work.oobconfig/databases +64772 4978 -1 /data/data/com.google.android.apps.work.oobconfig/no_backup +64772 4979 -1 /data/data/com.google.android.apps.work.oobconfig/no_backup/com.google.android.gms.appid-no-backup +64772 5168 -1 /data/data/com.google.android.pixel.setupwizard +64772 5169 -1 /data/data/com.google.android.pixel.setupwizard/cache +64772 5170 -1 /data/data/com.google.android.pixel.setupwizard/code_cache +64772 5177 -1 /data/data/com.google.android.deskclock +64772 5178 -1 /data/data/com.google.android.deskclock/cache +64772 5179 -1 /data/data/com.google.android.deskclock/code_cache +64772 1489 -1 /data/data/com.google.android.deskclock/shared_prefs +64772 7434 -1 /data/data/com.google.android.deskclock/shared_prefs/com.google.android.gms.analytics.prefs.xml +64772 1933 -1 /data/data/com.google.android.deskclock/databases +64772 1943 -1 /data/data/com.google.android.deskclock/databases/google_analytics_v4.db +64772 1946 -1 /data/data/com.google.android.deskclock/databases/google_analytics_v4.db-journal +64772 8786 -1 /data/data/com.google.android.deskclock/files +64772 8754 -1 /data/data/com.google.android.deskclock/files/gaClientId +64772 5186 -1 /data/data/com.google.android.carrier +64772 5187 -1 /data/data/com.google.android.carrier/cache +64772 5188 -1 /data/data/com.google.android.carrier/code_cache +64772 5210 -1 /data/data/com.android.nfc.auto_generated_rro_product__ +64772 5211 -1 /data/data/com.android.nfc.auto_generated_rro_product__/cache +64772 5212 -1 /data/data/com.android.nfc.auto_generated_rro_product__/code_cache +64772 5219 -1 /data/data/com.google.android.music +64772 5220 -1 /data/data/com.google.android.music/cache +64772 1586 -1 /data/data/com.google.android.music/cache/content +64772 1417 -1 /data/data/com.google.android.music/cache/logs:main +64772 1415 -1 /data/data/com.google.android.music/cache/logs:main/null_account.metalog +64772 4947 -1 /data/data/com.google.android.music/cache/logs:main/null_account.metalog/play_metalog.log +64772 4949 -1 /data/data/com.google.android.music/cache/logs:main/null_account.metalog/logs_upload_attempt.log +64772 1922 -1 /data/data/com.google.android.music/cache/logs:main/null_account +64772 1928 -1 /data/data/com.google.android.music/cache/logs:main/null_account/eventlog.store2264903968991152129.log +64772 6721 -1 /data/data/com.google.android.music/cache/logs:main/null_account/eventlog.store8544512898781283021.log +64772 6702 -1 /data/data/com.google.android.music/cache/logs:main/null_account/eventlog.store2531539172186527614.log +64772 5221 -1 /data/data/com.google.android.music/code_cache +64772 1593 -1 /data/data/com.google.android.music/shared_prefs +64772 2590 -1 /data/data/com.google.android.music/shared_prefs/MusicPreferences.xml +64772 6449 -1 /data/data/com.google.android.music/shared_prefs/store.preferences.xml +64772 2591 -1 /data/data/com.google.android.music/shared_prefs/Music.xml +64772 1594 -1 /data/data/com.google.android.music/databases +64772 1596 -1 /data/data/com.google.android.music/databases/config.db +64772 1597 -1 /data/data/com.google.android.music/databases/config.db-journal +64772 2691 -1 /data/data/com.google.android.music/databases/music.db +64772 2693 -1 /data/data/com.google.android.music/databases/music.db-journal +64772 1629 -1 /data/data/com.google.android.music/files +64772 1635 -1 /data/data/com.google.android.music/files/._playmusicid +64772 5225 -1 /data/data/com.android.hotwordenrollment.okgoogle +64772 5226 -1 /data/data/com.android.hotwordenrollment.okgoogle/cache +64772 5227 -1 /data/data/com.android.hotwordenrollment.okgoogle/code_cache +64772 5560 -1 /data/data/com.android.hotwordenrollment.okgoogle/shared_prefs +64772 5577 -1 /data/data/com.android.hotwordenrollment.okgoogle/shared_prefs/enrollment_prefs.xml +64772 5228 -1 /data/data/com.android.sdm.plugins.diagmon +64772 5229 -1 /data/data/com.android.sdm.plugins.diagmon/cache +64772 5230 -1 /data/data/com.android.sdm.plugins.diagmon/code_cache +64772 5243 -1 /data/data/com.google.audio.hearing.visualization.accessibility.scribe +64772 5244 -1 /data/data/com.google.audio.hearing.visualization.accessibility.scribe/cache +64772 5245 -1 /data/data/com.google.audio.hearing.visualization.accessibility.scribe/code_cache +64772 5246 -1 /data/data/com.android.server.wifistack +64772 5247 -1 /data/data/com.android.server.wifistack/cache +64772 5248 -1 /data/data/com.android.server.wifistack/code_cache +64772 5252 -1 /data/data/com.google.android.accessibility.soundamplifier +64772 5253 -1 /data/data/com.google.android.accessibility.soundamplifier/cache +64772 5254 -1 /data/data/com.google.android.accessibility.soundamplifier/code_cache +64772 5255 -1 /data/data/com.google.mds.permissions +64772 5256 -1 /data/data/com.google.mds.permissions/cache +64772 5257 -1 /data/data/com.google.mds.permissions/code_cache +64772 5264 -1 /data/data/com.google.android.apps.tips +64772 5265 -1 /data/data/com.google.android.apps.tips/cache +64772 5266 -1 /data/data/com.google.android.apps.tips/code_cache +64772 5870 -1 /data/data/com.google.android.apps.tips/files +64772 5871 -1 /data/data/com.google.android.apps.tips/files/tips +64772 5872 -1 /data/data/com.google.android.apps.tips/shared_prefs +64772 5873 -1 /data/data/com.google.android.apps.tips/shared_prefs/tips.suggestions.pref.xml +64772 5874 -1 /data/data/com.google.android.apps.tips/shared_prefs/com.google.android.apps.tips.smartspace.pref.xml +64772 3777 -1 /data/data/com.google.android.apps.tips/shared_prefs/com.google.android.apps.tips.pref.xml +64772 7267 -1 /data/data/com.google.android.apps.tips/shared_prefs/com.google.android.apps.tips.download_status.xml +64772 5267 -1 /data/data/com.google.android.documentsui.theme.pixel +64772 5268 -1 /data/data/com.google.android.documentsui.theme.pixel/cache +64772 5269 -1 /data/data/com.google.android.documentsui.theme.pixel/code_cache +64772 5270 -1 /data/data/com.google.android.modulemetadata +64772 5271 -1 /data/data/com.google.android.modulemetadata/cache +64772 5272 -1 /data/data/com.google.android.modulemetadata/code_cache +64772 5280 -1 /data/data/com.google.android.apps.carrier.log +64772 5281 -1 /data/data/com.google.android.apps.carrier.log/cache +64772 5282 -1 /data/data/com.google.android.apps.carrier.log/code_cache +64772 5283 -1 /data/data/com.google.android.networkstack +64772 5284 -1 /data/data/com.google.android.networkstack/cache +64772 5285 -1 /data/data/com.google.android.networkstack/code_cache +64772 5286 -1 /data/data/com.google.android.contacts +64772 5287 -1 /data/data/com.google.android.contacts/cache +64772 5288 -1 /data/data/com.google.android.contacts/code_cache +64772 5930 -1 /data/data/com.google.android.contacts/shared_prefs +64772 5938 -1 /data/data/com.google.android.contacts/shared_prefs/com.google.android.contacts.xml +64772 5943 -1 /data/data/com.google.android.contacts/shared_prefs/growthkit_phenotype_prefs.xml +64772 5944 -1 /data/data/com.google.android.contacts/shared_prefs/growthkit_shared_prefs.xml +64772 5932 -1 /data/data/com.google.android.contacts/app_phenotype_file +64772 7429 -1 /data/data/com.google.android.contacts/databases +64772 7435 -1 /data/data/com.google.android.contacts/databases/contacts.db +64772 7439 -1 /data/data/com.google.android.contacts/databases/contacts.db-journal +64772 7230 -1 /data/data/com.google.android.contacts/databases/growthkit.db +64772 5304 -1 /data/data/com.android.chrome +64772 5305 -1 /data/data/com.android.chrome/cache +64772 5306 -1 /data/data/com.android.chrome/code_cache +64772 5995 -1 /data/data/com.android.chrome/shared_prefs +64772 5996 -1 /data/data/com.android.chrome/app_chrome +64772 5997 -1 /data/data/com.android.chrome/app_textures +64772 5998 -1 /data/data/com.android.chrome/files +64772 5999 -1 /data/data/com.android.chrome/files/splitcompat +64772 6000 -1 /data/data/com.android.chrome/files/splitcompat/386509238 +64772 6001 -1 /data/data/com.android.chrome/files/splitcompat/386509238/verified-splits +64772 5292 -1 /data/data/com.android.theme.icon_pack.rounded.themepicker +64772 5293 -1 /data/data/com.android.theme.icon_pack.rounded.themepicker/cache +64772 5294 -1 /data/data/com.android.theme.icon_pack.rounded.themepicker/code_cache +64772 5295 -1 /data/data/com.android.server.telecom.auto_generated_rro_product__ +64772 5296 -1 /data/data/com.android.server.telecom.auto_generated_rro_product__/cache +64772 5297 -1 /data/data/com.android.server.telecom.auto_generated_rro_product__/code_cache +64772 5311 -1 /data/data/com.google.android.packageinstaller +64772 5312 -1 /data/data/com.google.android.packageinstaller/cache +64772 5313 -1 /data/data/com.google.android.packageinstaller/code_cache +64772 5314 -1 /data/data/com.google.android.apps.customization.pixel +64772 5315 -1 /data/data/com.google.android.apps.customization.pixel/cache +64772 5316 -1 /data/data/com.google.android.apps.customization.pixel/code_cache +64772 5320 -1 /data/data/com.google.android.gsf +64772 5321 -1 /data/data/com.google.android.gsf/cache +64772 5322 -1 /data/data/com.google.android.gsf/code_cache +64772 1557 -1 /data/data/com.google.android.gsf/databases +64772 1558 -1 /data/data/com.google.android.gsf/databases/gservices.db +64772 1559 -1 /data/data/com.google.android.gsf/databases/gservices.db-journal +64772 1575 -1 /data/data/com.google.android.gsf/databases/googlesettings.db +64772 1576 -1 /data/data/com.google.android.gsf/databases/googlesettings.db-journal +64772 1578 -1 /data/data/com.google.android.gsf/databases/subscribedfeeds.db +64772 1579 -1 /data/data/com.google.android.gsf/databases/subscribedfeeds.db-journal +64772 1577 -1 /data/data/com.google.android.gsf/app_sslcache +64772 1450 -1 /data/data/com.google.android.gsf/files +64772 1420 -1 /data/data/com.google.android.gsf/files/signatures +64772 1934 -1 /data/data/com.google.android.gsf/files/signatures/sig-473270056 +64772 1945 -1 /data/data/com.google.android.gsf/files/signatures/sig-1865707881 +64772 1936 -1 /data/data/com.google.android.gsf/files/signatures/sig525966318 +64772 1439 -1 /data/data/com.google.android.gsf/files/signatures/sig1996988062 +64772 1871 -1 /data/data/com.google.android.gsf/files/signatures/sig1157802047 +64772 2002 -1 /data/data/com.google.android.gsf/files/signatures/sig1250383197 +64772 1891 -1 /data/data/com.google.android.gsf/files/signatures/sig701992148 +64772 1381 -1 /data/data/com.google.android.gsf/files/signatures/sig-1636142052 +64772 1730 -1 /data/data/com.google.android.gsf/files/signatures/sig-440486894 +64772 2049 -1 /data/data/com.google.android.gsf/files/signatures/sig2111548302 +64772 2018 -1 /data/data/com.google.android.gsf/files/signatures/sig116737351 +64772 2020 -1 /data/data/com.google.android.gsf/files/signatures/sig2117378174 +64772 2021 -1 /data/data/com.google.android.gsf/files/signatures/sig-466204221 +64772 1944 -1 /data/data/com.google.android.gsf/files/signatures/sig172156119 +64772 1935 -1 /data/data/com.google.android.gsf/files/signatures/sig-2018359329 +64772 2092 -1 /data/data/com.google.android.gsf/files/signatures/sig959336513 +64772 2054 -1 /data/data/com.google.android.gsf/files/signatures/sig-256882296 +64772 2050 -1 /data/data/com.google.android.gsf/files/signatures/sig-1243595125 +64772 2048 -1 /data/data/com.google.android.gsf/files/signatures/sig445845208 +64772 2145 -1 /data/data/com.google.android.gsf/files/signatures/sig-133834289 +64772 2143 -1 /data/data/com.google.android.gsf/files/signatures/sig503923833 +64772 2102 -1 /data/data/com.google.android.gsf/files/signatures/sig-281206196 +64772 2149 -1 /data/data/com.google.android.gsf/files/signatures/sig879679437 +64772 2208 -1 /data/data/com.google.android.gsf/files/signatures/sig-1557736770 +64772 1468 -1 /data/data/com.google.android.gsf/files/signatures/sig2101071397 +64772 2207 -1 /data/data/com.google.android.gsf/files/signatures/sig-1421057011 +64772 2267 -1 /data/data/com.google.android.gsf/files/signatures/sig-4494797 +64772 2192 -1 /data/data/com.google.android.gsf/files/signatures/sig2120501675 +64772 2179 -1 /data/data/com.google.android.gsf/files/signatures/sig435719881 +64772 2101 -1 /data/data/com.google.android.gsf/files/signatures/sig-319209697 +64772 1948 -1 /data/data/com.google.android.gsf/files/signatures/sig-305135504 +64772 1549 -1 /data/data/com.google.android.gsf/files/signatures/sig-1894234234 +64772 2687 -1 /data/data/com.google.android.gsf/files/signatures/sig-1294377024 +64772 2491 -1 /data/data/com.google.android.gsf/files/signatures/sig1404880495 +64772 2276 -1 /data/data/com.google.android.gsf/files/signatures/sig-1177129189 +64772 2312 -1 /data/data/com.google.android.gsf/files/signatures/sig217922647 +64772 2285 -1 /data/data/com.google.android.gsf/files/signatures/sig-914084140 +64772 2311 -1 /data/data/com.google.android.gsf/files/signatures/sig1533585311 +64772 2316 -1 /data/data/com.google.android.gsf/files/signatures/sig-1960899144 +64772 2313 -1 /data/data/com.google.android.gsf/files/signatures/sig1369036940 +64772 2314 -1 /data/data/com.google.android.gsf/files/signatures/sig1142668760 +64772 2359 -1 /data/data/com.google.android.gsf/files/signatures/sig-230636179 +64772 2362 -1 /data/data/com.google.android.gsf/files/signatures/sig-642730196 +64772 2423 -1 /data/data/com.google.android.gsf/files/signatures/sig886936602 +64772 2425 -1 /data/data/com.google.android.gsf/files/signatures/sig-558984208 +64772 2323 -1 /data/data/com.google.android.gsf/files/signatures/sig828861265 +64772 2327 -1 /data/data/com.google.android.gsf/files/signatures/sig-469927610 +64772 5025 -1 /data/data/com.google.android.gsf/shared_prefs +64772 5329 -1 /data/data/com.google.android.tts +64772 5330 -1 /data/data/com.google.android.tts/cache +64772 5331 -1 /data/data/com.google.android.tts/code_cache +64772 9253 -1 /data/data/com.google.android.tts/shared_prefs +64772 9171 -1 /data/data/com.google.android.tts/app_patts +64772 9251 -1 /data/data/com.google.android.tts/app_voices +64772 5346 -1 /data/data/com.google.android.apps.nexuslauncher +64772 5347 -1 /data/data/com.google.android.apps.nexuslauncher/cache +64772 5348 -1 /data/data/com.google.android.apps.nexuslauncher/code_cache +64772 1536 -1 /data/data/com.google.android.apps.nexuslauncher/files +64772 1632 -1 /data/data/com.google.android.apps.nexuslauncher/files/downgrade_schema.json +64772 6071 -1 /data/data/com.google.android.apps.nexuslauncher/files/log-0 +64772 1538 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs +64772 7187 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs/com.android.launcher3.prefs.xml +64772 1755 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs/plugin_prefs.xml +64772 4721 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs/com.android.launcher3.device.prefs.xml +64772 1989 -1 /data/data/com.google.android.apps.nexuslauncher/shared_prefs/dynamic_qsb_prefs.xml +64772 1609 -1 /data/data/com.google.android.apps.nexuslauncher/databases +64772 1611 -1 /data/data/com.google.android.apps.nexuslauncher/databases/launcher.db +64772 1612 -1 /data/data/com.google.android.apps.nexuslauncher/databases/launcher.db-journal +64772 1655 -1 /data/data/com.google.android.apps.nexuslauncher/databases/app_icons.db +64772 1658 -1 /data/data/com.google.android.apps.nexuslauncher/databases/app_icons.db-journal +64772 2265 -1 /data/data/com.google.android.apps.nexuslauncher/databases/widgetpreviews.db +64772 2263 -1 /data/data/com.google.android.apps.nexuslauncher/databases/widgetpreviews.db-journal +64772 5350 -1 /data/data/com.google.RilConfigService +64772 5351 -1 /data/data/com.google.RilConfigService/cache +64772 5352 -1 /data/data/com.google.RilConfigService/code_cache +64772 5356 -1 /data/data/com.customermobile.preload.vzw +64772 5357 -1 /data/data/com.customermobile.preload.vzw/cache +64772 5358 -1 /data/data/com.customermobile.preload.vzw/code_cache +64772 5359 -1 /data/data/com.android.theme.font.arbutussource +64772 5360 -1 /data/data/com.android.theme.font.arbutussource/cache +64772 5361 -1 /data/data/com.android.theme.font.arbutussource/code_cache +64772 5362 -1 /data/data/com.android.theme.font.rubikrubik +64772 5363 -1 /data/data/com.android.theme.font.rubikrubik/cache +64772 5364 -1 /data/data/com.android.theme.font.rubikrubik/code_cache +64772 5368 -1 /data/data/com.google.android.feedback +64772 5369 -1 /data/data/com.google.android.feedback/cache +64772 5370 -1 /data/data/com.google.android.feedback/code_cache +64772 5374 -1 /data/data/com.google.android.apps.photos +64772 5375 -1 /data/data/com.google.android.apps.photos/cache +64772 5376 -1 /data/data/com.google.android.apps.photos/code_cache +64772 4784 -1 /data/data/com.google.android.apps.photos/shared_prefs +64772 4888 -1 /data/data/com.google.android.apps.photos/shared_prefs/accounts.xml +64772 6883 -1 /data/data/com.google.android.apps.photos/shared_prefs/com.google.android.apps.photos.dbprocessor.impl.DatabaseProcessorManagerImpl.xml +64772 3742 -1 /data/data/com.google.android.apps.photos/shared_prefs/com.google.android.apps.photos_preferences.xml +64772 5808 -1 /data/data/com.google.android.apps.photos/shared_prefs/com.google.android.apps.photos.backup.freestorage.xml +64772 7636 -1 /data/data/com.google.android.apps.photos/shared_prefs/com.google.android.apps.photos.accountproperties.impl.AccountPropertiesManagerImpl.xml +64772 7556 -1 /data/data/com.google.android.apps.photos/shared_prefs/photos.backup.xml +64772 7637 -1 /data/data/com.google.android.apps.photos/shared_prefs/low_priority_background_job_controller.xml +64772 4789 -1 /data/data/com.google.android.apps.photos/files +64772 4807 -1 /data/data/com.google.android.apps.photos/app_null +64772 3691 -1 /data/data/com.google.android.apps.photos/app_null/background_results.bin +64772 4856 -1 /data/data/com.google.android.apps.photos/databases +64772 4858 -1 /data/data/com.google.android.apps.photos/databases/gphotos-1.db +64772 4891 -1 /data/data/com.google.android.apps.photos/databases/gphotos-1.db-wal +64772 4893 -1 /data/data/com.google.android.apps.photos/databases/gphotos-1.db-shm +64772 7564 -1 /data/data/com.google.android.apps.photos/databases/disk_cache +64772 7566 -1 /data/data/com.google.android.apps.photos/databases/disk_cache-wal +64772 7567 -1 /data/data/com.google.android.apps.photos/databases/disk_cache-shm +64772 7569 -1 /data/data/com.google.android.apps.photos/databases/media_store_extras +64772 7571 -1 /data/data/com.google.android.apps.photos/databases/media_store_extras-wal +64772 7572 -1 /data/data/com.google.android.apps.photos/databases/media_store_extras-shm +64772 7573 -1 /data/data/com.google.android.apps.photos/databases/local_trash.db +64772 7574 -1 /data/data/com.google.android.apps.photos/databases/local_trash.db-journal +64772 5380 -1 /data/data/com.google.android.documentsui +64772 5381 -1 /data/data/com.google.android.documentsui/cache +64772 2342 -1 /data/data/com.google.android.documentsui/cache/clippings +64772 5382 -1 /data/data/com.google.android.documentsui/code_cache +64772 2464 -1 /data/data/com.google.android.documentsui/shared_prefs +64772 2689 -1 /data/data/com.google.android.documentsui/databases +64772 2922 -1 /data/data/com.google.android.documentsui/databases/search_history.db +64772 2463 -1 /data/data/com.google.android.documentsui/databases/search_history.db-journal +64772 5386 -1 /data/data/com.android.sdm.plugins.dcmo +64772 5387 -1 /data/data/com.android.sdm.plugins.dcmo/cache +64772 5388 -1 /data/data/com.android.sdm.plugins.dcmo/code_cache +64772 5389 -1 /data/data/com.android.providers.telephony.auto_generated_rro_product__ +64772 5390 -1 /data/data/com.android.providers.telephony.auto_generated_rro_product__/cache +64772 5391 -1 /data/data/com.android.providers.telephony.auto_generated_rro_product__/code_cache +64772 5392 -1 /data/data/com.android.server.wifistack.permissionconfig +64772 5393 -1 /data/data/com.android.server.wifistack.permissionconfig/cache +64772 5394 -1 /data/data/com.android.server.wifistack.permissionconfig/code_cache +64772 5398 -1 /data/data/com.google.android.overlay.pixelconfigcommon +64772 5399 -1 /data/data/com.google.android.overlay.pixelconfigcommon/cache +64772 5400 -1 /data/data/com.google.android.overlay.pixelconfigcommon/code_cache +64772 5422 -1 /data/data/com.google.android.tetheringentitlement +64772 5423 -1 /data/data/com.google.android.tetheringentitlement/cache +64772 5424 -1 /data/data/com.google.android.tetheringentitlement/code_cache +64772 5429 -1 /data/data/com.google.android.apps.dreamliner +64772 5430 -1 /data/data/com.google.android.apps.dreamliner/cache +64772 5431 -1 /data/data/com.google.android.apps.dreamliner/code_cache +64772 5435 -1 /data/data/com.google.android.hiddenmenu +64772 5436 -1 /data/data/com.google.android.hiddenmenu/cache +64772 5437 -1 /data/data/com.google.android.hiddenmenu/code_cache +64772 5441 -1 /data/data/com.google.googlecbrs +64772 5442 -1 /data/data/com.google.googlecbrs/cache +64772 5443 -1 /data/data/com.google.googlecbrs/code_cache +64772 6188 -1 /data/data/com.google.googlecbrs/shared_prefs +64772 5447 -1 /data/data/com.google.vr.apps.ornament +64772 5448 -1 /data/data/com.google.vr.apps.ornament/cache +64772 5449 -1 /data/data/com.google.vr.apps.ornament/code_cache +64772 5454 -1 /data/data/com.android.pixellogger +64772 5455 -1 /data/data/com.android.pixellogger/cache +64772 5456 -1 /data/data/com.android.pixellogger/code_cache +64772 3623 -1 /data/data/com.android.pixellogger/shared_prefs +64772 5673 -1 /data/data/com.android.pixellogger/shared_prefs/com.android.pixellogger_preferences.xml +64772 1357 -1 /data/data/com.android.phone.auto_generated_rro_product__ +64772 1356 -1 /data/data/com.android.phone.auto_generated_rro_product__/cache +64772 1355 -1 /data/data/com.android.phone.auto_generated_rro_product__/code_cache +64772 1496 -1 /data/data/com.google.android.apps.gcs +64772 1497 -1 /data/data/com.google.android.apps.gcs/cache +64772 1498 -1 /data/data/com.google.android.apps.gcs/code_cache +64772 5717 -1 /data/data/com.google.android.apps.gcs/shared_prefs +64772 9325 -1 /data/data/com.google.android.apps.gcs/shared_prefs/gcs.xml +64772 5730 -1 /data/data/com.google.android.apps.gcs/shared_prefs/chell.xml +64772 7389 -1 /data/data/com.google.android.apps.gcs/shared_prefs/ph_active_prefs.xml +64772 5728 -1 /data/data/com.google.android.apps.gcs/files +64772 1499 -1 /data/data/com.google.android.GoogleCamera +64772 1500 -1 /data/data/com.google.android.GoogleCamera/cache +64772 7664 -1 /data/data/com.google.android.GoogleCamera/cache/indicatorDiskCache +64772 7665 -1 /data/data/com.google.android.GoogleCamera/cache/indicatorDiskCache/journal +64772 1501 -1 /data/data/com.google.android.GoogleCamera/code_cache +64772 7603 -1 /data/data/com.google.android.GoogleCamera/shared_prefs +64772 7610 -1 /data/data/com.google.android.GoogleCamera/shared_prefs/com.google.android.GoogleCamera_media.xml +64772 9580 -1 /data/data/com.google.android.GoogleCamera/shared_prefs/com.google.android.GoogleCamera_preferences.xml +64772 7062 -1 /data/data/com.google.android.GoogleCamera/shared_prefs/com.google.android.GoogleCamera_preferences_camera_0.xml +64772 7604 -1 /data/data/com.google.android.GoogleCamera/databases +64772 7605 -1 /data/data/com.google.android.GoogleCamera/databases/special_type_db_helper +64772 7606 -1 /data/data/com.google.android.GoogleCamera/databases/special_type_db_helper-journal +64772 7666 -1 /data/data/com.google.android.GoogleCamera/libhalide_hexagon_remote_skel.so +64772 7667 -1 /data/data/com.google.android.GoogleCamera/easelmanager +64772 7668 -1 /data/data/com.google.android.GoogleCamera/easelmanager/command_processor_gca +64772 7669 -1 /data/data/com.google.android.GoogleCamera/finish_resources_fingerprint +64772 7670 -1 /data/data/com.google.android.GoogleCamera/easel_ocr +64772 7671 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph +64772 7672 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrDetectorIpu0 +64772 7673 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrDetectorIpu0/OcrDetectorIpu.pcg +64772 7674 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuJa0 +64772 7675 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuJa0/OcrRecognizerIpuJa.pcg +64772 7676 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuJa1 +64772 7677 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuJa1/OcrRecognizerIpuJa.pcg +64772 7678 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuLatin0 +64772 7679 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuLatin0/OcrRecognizerIpuLatin.pcg +64772 7680 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuLatin1 +64772 7681 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuLatin1/OcrRecognizerIpuLatin.pcg +64772 7682 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuSd0 +64772 7683 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuSd0/OcrRecognizerIpuSd.pcg +64772 7684 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuSd1 +64772 7685 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuSd1/OcrRecognizerIpuSd.pcg +64772 7686 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuZh0 +64772 7687 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuZh0/OcrRecognizerIpuZh.pcg +64772 7688 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuZh1 +64772 7689 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/OcrRecognizerIpuZh1/OcrRecognizerIpuZh.pcg +64772 7690 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir +64772 7691 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/10087569004397597145.bpisa +64772 7692 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/10209223556066113634.bpisa +64772 7693 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/10709873905159781681.bpisa +64772 7694 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/10904522585673223677.bpisa +64772 7695 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/11267844732316840130.bpisa +64772 7696 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/11326383763017309524.bpisa +64772 7697 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12105357205798669993.bpisa +64772 7698 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12138731604666275567.bpisa +64772 7699 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12329201738945749681.bpisa +64772 7700 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12712237482452317717.bpisa +64772 7701 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12864809788888442835.bpisa +64772 7702 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/12953993076201581833.bpisa +64772 7703 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/13521358537878782273.bpisa +64772 7704 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/13651310521499876515.bpisa +64772 7705 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/13728371951721736097.bpisa +64772 7706 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14018143257813634404.bpisa +64772 7707 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14036382162851355049.bpisa +64772 7708 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14057655868763362224.bpisa +64772 7709 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14208726610290393854.bpisa +64772 7710 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/14289904657128496619.bpisa +64772 7711 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/15033653618698153712.bpisa +64772 7712 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/15443313718196555918.bpisa +64772 7713 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/16118697882695621531.bpisa +64772 7714 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/16243326912008231155.bpisa +64772 7715 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/16272299807084175791.bpisa +64772 7716 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/16340670968060214319.bpisa +64772 7717 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/17214422489539218937.bpisa +64772 7718 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/17580073313359200689.bpisa +64772 7719 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/17591493036260864348.bpisa +64772 7720 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/18006773329251572953.bpisa +64772 7721 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/18100837068173831225.bpisa +64772 7722 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/18347964131664264599.bpisa +64772 7723 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/18353534194790523900.bpisa +64772 7724 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/2104456287055153325.bpisa +64772 7725 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/2738167721860531427.bpisa +64772 7726 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/2748651854045922879.bpisa +64772 7727 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/2863001372251013079.bpisa +64772 7728 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3162358631466715028.bpisa +64772 7729 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3254330855114602421.bpisa +64772 7730 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3409405449997958084.bpisa +64772 7731 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3664917383612675183.bpisa +64772 7732 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/3763305721033316617.bpisa +64772 7733 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/4374933200422707271.bpisa +64772 7734 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/455264572167911.bpisa +64772 7735 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/4712773179293894452.bpisa +64772 7736 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/5193921628255915930.bpisa +64772 7737 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/5435020882190853144.bpisa +64772 7738 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/5645294104697178969.bpisa +64772 7739 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6215797703033569682.bpisa +64772 7740 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6267311188771465096.bpisa +64772 7741 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6273132515011765683.bpisa +64772 7742 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/672232905599094243.bpisa +64772 7743 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6849217931468627661.bpisa +64772 7744 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6889576941308015592.bpisa +64772 7745 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/6927342490532194150.bpisa +64772 7746 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/7021986622619756397.bpisa +64772 7747 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/7067451772257027259.bpisa +64772 7748 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/715162566985342862.bpisa +64772 7749 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/837220618434744345.bpisa +64772 7750 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/8662076257519622634.bpisa +64772 7751 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/8705601667566942454.bpisa +64772 7752 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/9234160637058187270.bpisa +64772 7753 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/9446025690264022451.bpisa +64772 7754 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/compiled_graph/bpisa_dir/967238122630170804.bpisa +64772 7755 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model +64772 7756 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model +64772 7757 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_conv_recog_all_b_hi.tmp +64772 7758 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_conv_recog_all_b_lo.tmp +64772 7759 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_conv_recog_all_w_0.tmp +64772 7760 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm0_weights_bias_fc0.tmp +64772 7761 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm0_weights_bias_fc1.tmp +64772 7762 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm0_weights_bias_io0.tmp +64772 7763 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm0_weights_bias_io1.tmp +64772 7764 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fc0.tmp +64772 7765 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fc1.tmp +64772 7766 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fullyconn0.tmp +64772 7767 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fullyconn1.tmp +64772 7768 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fullyconn2.tmp +64772 7769 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_fullyconn3.tmp +64772 7770 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_io0.tmp +64772 7771 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/ja_lstm1_weights_bias_io1.tmp +64772 7772 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/latin_conv_recog_all_b_hi.tmp +64772 7773 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/latin_conv_recog_all_b_lo.tmp +64772 7774 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/latin_conv_recog_all_w_0.tmp +64772 7775 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/lstm0_weights_fc_tfmini_with_bias.tmp +64772 7776 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/lstm0_weights_io_tfmini_with_bias.tmp +64772 7777 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/rpn_detector_cnn_all_b_hi.tmp +64772 7778 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/rpn_detector_cnn_all_b_lo.tmp +64772 7779 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/rpn_detector_cnn_all_quants.tmp +64772 7780 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/rpn_detector_cnn_all_w_0.tmp +64772 7781 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_conv_recog_all_b_hi.tmp +64772 7782 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_conv_recog_all_b_lo.tmp +64772 7783 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_conv_recog_all_w_0.tmp +64772 7784 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_lstm0_weights_bias_iofc.tmp +64772 7785 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/sd_lstm1_fc_weights_combined.tmp +64772 7786 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/text_recognizer_lstm1_fc_weights_fcbottom.tmp +64772 7787 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/text_recognizer_lstm1_fc_weights_iotop.tmp +64772 7788 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_conv_recog_all_b_hi.tmp +64772 7789 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_conv_recog_all_b_lo.tmp +64772 7790 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_conv_recog_all_w_0.tmp +64772 7791 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm0_weights_bias_fc0.tmp +64772 7792 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm0_weights_bias_fc1.tmp +64772 7793 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm0_weights_bias_io0.tmp +64772 7794 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm0_weights_bias_io1.tmp +64772 7795 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fc0.tmp +64772 7796 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fc1.tmp +64772 7797 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fullyconn0.tmp +64772 7798 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fullyconn1.tmp +64772 7799 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fullyconn2.tmp +64772 7800 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_fullyconn3.tmp +64772 7801 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_io0_smallfc.tmp +64772 7802 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/model/zh_lstm1_weights_bias_io1.tmp +64772 7803 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/rpn_detector_cnn +64772 7804 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/rpn_detector_cnn/ipu_easel.hwcfg +64772 7805 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/rpn_detector_cnn_pisa_easel.cfg +64772 7806 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_8STP_lstm0_lstm1_fc +64772 7807 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_8STP_lstm0_lstm1_fc/ipu_easel.hwcfg +64772 7808 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_8STP_lstm0_lstm1_fc_pisa_easel.cfg +64772 7809 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_8STP_lstm0_lstm1_fcss +64772 7810 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_8STP_lstm0_lstm1_fcss/ipu_easel.hwcfg +64772 7811 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_8STP_lstm0_lstm1_fcss_pisa_easel.cfg +64772 7812 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_cnn +64772 7813 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_cnn/ipu_easel.hwcfg +64772 7814 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_cnn_pisa_easel.cfg +64772 7815 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_ja_pisa_easel.cfg +64772 7816 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_latin_cnn +64772 7817 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_latin_cnn/ipu_easel.hwcfg +64772 7818 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_latin_cnn_pisa_easel.cfg +64772 7819 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_latin_pisa_easel.cfg +64772 7820 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_8STP_lstm0_lstm1_fc +64772 7821 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_8STP_lstm0_lstm1_fc/ipu_easel.hwcfg +64772 7822 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_8STP_lstm0_lstm1_fc_pisa_easel.cfg +64772 7823 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_cnn +64772 7824 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_cnn/ipu_easel.hwcfg +64772 7825 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_cnn_pisa_easel.cfg +64772 7826 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_sd_pisa_easel.cfg +64772 7827 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_8STP_lstm0_lstm1_fcss +64772 7828 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_8STP_lstm0_lstm1_fcss/ipu_easel.hwcfg +64772 7829 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_8STP_lstm0_lstm1_fcss_pisa_easel.cfg +64772 7830 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_cnn +64772 7831 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_cnn/ipu_easel.hwcfg +64772 7832 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_cnn_pisa_easel.cfg +64772 7833 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/text_recognizer_zh_pisa_easel.cfg +64772 7834 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_detector_client_test.bincfg +64772 7835 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_lstm_recognizer_ja_0.1.bincfg +64772 7836 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_lstm_recognizer_latin_0.2_quant.bincfg +64772 7837 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_lstm_recognizer_zh_0.1.bincfg +64772 7838 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/model/tfmini_script_detector_0.1.bincfg +64772 7839 -1 /data/data/com.google.android.GoogleCamera/easel_ocr/nnserver +64772 7841 -1 /data/data/com.google.android.GoogleCamera/ocr_resources_fingerprint +64772 9584 -1 /data/data/com.google.android.GoogleCamera/files +64772 9569 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr +64772 9568 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ja_0.1.bincfg +64772 7865 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ja_0.1_transposed.conv_model +64772 7048 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ja_0.1_transposed.conv_nnapi_info +64772 9519 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ko_0.1.bincfg +64772 9576 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ko_0.1_transposed.conv_model +64772 9575 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_ko_0.1_transposed.conv_nnapi_info +64772 9593 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_latin_0.3.bincfg +64772 9604 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_latin_0.3_transposed.conv_model +64772 9524 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_latin_0.3_transposed.conv_nnapi_info +64772 9609 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_zh_0.1.bincfg +64772 9616 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_zh_0.1_transposed.conv_model +64772 9617 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/nnapi_lstm_recognizer_zh_0.1_transposed.conv_nnapi_info +64772 9565 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/region_proposal_text_detector_nnapi_gray_quantized.bincfg +64772 9564 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/region_proposal_text_detector_nnapi_vertical.bincfg +64772 7621 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/region_proposal_text_detector_tflite_gray_quantized.bincfg +64772 9590 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/region_proposal_text_detector_tflite_vertical.bincfg +64772 9626 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_nnapi_ja_la.bincfg +64772 9628 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_nnapi_ko_la.bincfg +64772 9086 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_nnapi_quant.bincfg +64772 9474 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_nnapi_zh_la.bincfg +64772 9475 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_tflite_ja_la.bincfg +64772 7602 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_tflite_ko_la.bincfg +64772 9571 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_tflite_latin.bincfg +64772 9634 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_lstm_engine_tflite_zh_la.bincfg +64772 9629 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_text_detector_mobile_space_to_depth_quantized_v2.tflite +64772 9627 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/rpn_text_detector_mobile_space_to_depth_quantized_v2_nnapi.tflite +64772 9647 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/seastar_lstm_recognizer_ja_0.2.class_lst +64772 9645 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/seastar_lstm_recognizer_ko_0.2.class_lst +64772 9631 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/seastar_lstm_recognizer_zh_0.2.class_lst +64772 9652 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ja_0.1.bincfg +64772 9625 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ja_0.1.conv_model +64772 9635 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ja_0.1.lstm_model +64772 9666 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ja_0.1.lstm_nnapi_info +64772 9668 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ko_0.1.bincfg +64772 9649 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ko_0.1.conv_model +64772 9669 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ko_0.1.lstm_model +64772 9657 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_ko_0.1.lstm_nnapi_info +64772 9671 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.bincfg +64772 9670 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.class_lst +64772 9650 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.conv_model +64772 9674 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.lstm_model +64772 9675 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_latin_0.3.lstm_nnapi_info +64772 9673 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_zh_0.1.bincfg +64772 9679 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_zh_0.1.conv_model +64772 9680 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_zh_0.1.lstm_model +64772 9681 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_lstm_recognizer_zh_0.1.lstm_nnapi_info +64772 9683 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_script_detector_0.3.bincfg +64772 9684 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_script_detector_0.3.conv_model +64772 9685 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tflite_script_detector_0.3.lstm_model +64772 9556 -1 /data/data/com.google.android.GoogleCamera/files/photo-ocr/tfmini_lstm_recognizer_zh_0.1.class_lst +64772 9589 -1 /data/data/com.google.android.GoogleCamera/files/au-city-names.bloomfilter +64772 9586 -1 /data/data/com.google.android.GoogleCamera/files/au-street-names.bloomfilter +64772 9512 -1 /data/data/com.google.android.GoogleCamera/files/au-token-type-data-file +64772 9595 -1 /data/data/com.google.android.GoogleCamera/files/de-city-names.bloomfilter +64772 9505 -1 /data/data/com.google.android.GoogleCamera/files/de-street-names.bloomfilter +64772 9600 -1 /data/data/com.google.android.GoogleCamera/files/de-token-type-data-file +64772 9601 -1 /data/data/com.google.android.GoogleCamera/files/ca-city-names.bloomfilter +64772 9592 -1 /data/data/com.google.android.GoogleCamera/files/ca-street-names.bloomfilter +64772 9603 -1 /data/data/com.google.android.GoogleCamera/files/ca-token-type-data-file +64772 9606 -1 /data/data/com.google.android.GoogleCamera/files/uk-city-names.bloomfilter +64772 9607 -1 /data/data/com.google.android.GoogleCamera/files/uk-street-names.bloomfilter +64772 9608 -1 /data/data/com.google.android.GoogleCamera/files/uk-token-type-data-file +64772 9615 -1 /data/data/com.google.android.GoogleCamera/files/in-city-names.bloomfilter +64772 9618 -1 /data/data/com.google.android.GoogleCamera/files/in-street-names.bloomfilter +64772 9619 -1 /data/data/com.google.android.GoogleCamera/files/in-token-type-data-file +64772 9620 -1 /data/data/com.google.android.GoogleCamera/files/us-city-names.bloomfilter +64772 9566 -1 /data/data/com.google.android.GoogleCamera/files/us-street-names.bloomfilter +64772 9591 -1 /data/data/com.google.android.GoogleCamera/files/us-token-type-data-file +64772 9630 -1 /data/data/com.google.android.GoogleCamera/files/sg-city-names.bloomfilter +64772 9329 -1 /data/data/com.google.android.GoogleCamera/files/sg-street-names.bloomfilter +64772 9476 -1 /data/data/com.google.android.GoogleCamera/files/sg-token-type-data-file +64772 7595 -1 /data/data/com.google.android.GoogleCamera/files/fr-city-names.bloomfilter +64772 9632 -1 /data/data/com.google.android.GoogleCamera/files/fr-street-names.bloomfilter +64772 9641 -1 /data/data/com.google.android.GoogleCamera/files/fr-token-type-data-file +64772 9646 -1 /data/data/com.google.android.GoogleCamera/files/es-city-names.bloomfilter +64772 9648 -1 /data/data/com.google.android.GoogleCamera/files/es-street-names.bloomfilter +64772 9638 -1 /data/data/com.google.android.GoogleCamera/files/es-token-type-data-file +64772 9651 -1 /data/data/com.google.android.GoogleCamera/files/it-city-names.bloomfilter +64772 9624 -1 /data/data/com.google.android.GoogleCamera/files/it-street-names.bloomfilter +64772 9655 -1 /data/data/com.google.android.GoogleCamera/files/it-token-type-data-file +64772 9654 -1 /data/data/com.google.android.GoogleCamera/files/ie-city-names.bloomfilter +64772 9653 -1 /data/data/com.google.android.GoogleCamera/files/ie-street-names.bloomfilter +64772 9656 -1 /data/data/com.google.android.GoogleCamera/files/ie-token-type-data-file +64772 9658 -1 /data/data/com.google.android.GoogleCamera/files/tw-city-names.bloomfilter +64772 9659 -1 /data/data/com.google.android.GoogleCamera/files/tw-street-names.bloomfilter +64772 9558 -1 /data/data/com.google.android.GoogleCamera/files/tw-token-type-data-file +64772 9559 -1 /data/data/com.google.android.GoogleCamera/files/jp-city-names.bloomfilter +64772 9560 -1 /data/data/com.google.android.GoogleCamera/files/jp-street-names.bloomfilter +64772 9561 -1 /data/data/com.google.android.GoogleCamera/files/jp-token-type-data-file +64772 9562 -1 /data/data/com.google.android.GoogleCamera/files/kr-city-names.bloomfilter +64772 9563 -1 /data/data/com.google.android.GoogleCamera/files/kr-street-names.bloomfilter +64772 9667 -1 /data/data/com.google.android.GoogleCamera/files/kr-token-type-data-file +64772 1513 -1 /data/data/com.android.vzwomatrigger +64772 1514 -1 /data/data/com.android.vzwomatrigger/cache +64772 1515 -1 /data/data/com.android.vzwomatrigger/code_cache +64772 1519 -1 /data/data/com.google.android.storagemanager +64772 1520 -1 /data/data/com.google.android.storagemanager/cache +64772 1521 -1 /data/data/com.google.android.storagemanager/code_cache +64772 76 -1 /data/app-private +64772 77 -1 /data/app-ephemeral +64772 78 -1 /data/app-asec +64772 79 -1 /data/app-lib +64772 80 -1 /data/app +64772 81 -1 /data/property +64772 8065 -1 /data/property/persistent_properties +64772 82 -1 /data/tombstones +64772 6826 -1 /data/tombstones/tombstone_00 +64772 6735 -1 /data/tombstones/tombstone_01 +64772 9599 -1 /data/tombstones/tombstone_02 +64772 6889 -1 /data/tombstones/tombstone_03 +64772 85 -1 /data/dalvik-cache +64772 200 -1 /data/dalvik-cache/arm64 +64772 8396 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkStack@NetworkStack.apk@classes.dex +64772 8681 -1 /data/dalvik-cache/arm64/system@priv-app@ProxyHandler@ProxyHandler.apk@classes.dex +64772 8682 -1 /data/dalvik-cache/arm64/system@priv-app@ProxyHandler@ProxyHandler.apk@classes.vdex +64772 8641 -1 /data/dalvik-cache/arm64/system@priv-app@CallLogBackup@CallLogBackup.apk@classes.vdex +64772 8640 -1 /data/dalvik-cache/arm64/system@priv-app@CallLogBackup@CallLogBackup.apk@classes.dex +64772 1343 -1 /data/dalvik-cache/arm64/system@priv-app@PermissionController@PermissionController.apk@classes.dex +64772 8877 -1 /data/dalvik-cache/arm64/system@priv-app@BlockedNumberProvider@BlockedNumberProvider.apk@classes.dex +64772 7932 -1 /data/dalvik-cache/arm64/system@priv-app@BackupEncryption@BackupEncryption.apk@classes.vdex +64772 7955 -1 /data/dalvik-cache/arm64/system@priv-app@ExternalStorageProvider@ExternalStorageProvider.apk@classes.vdex +64772 8655 -1 /data/dalvik-cache/arm64/system@priv-app@LocalTransport@LocalTransport.apk@classes.dex +64772 8878 -1 /data/dalvik-cache/arm64/system@priv-app@BlockedNumberProvider@BlockedNumberProvider.apk@classes.vdex +64772 8760 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkPermissionConfig@NetworkPermissionConfig.apk@classes.vdex +64772 1342 -1 /data/dalvik-cache/arm64/system@priv-app@PermissionController@PermissionController.apk@classes.vdex +64772 7999 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProvider@DownloadProvider.apk@classes.dex +64772 8351 -1 /data/dalvik-cache/arm64/system@priv-app@MusicFX@MusicFX.apk@classes.vdex +64772 8656 -1 /data/dalvik-cache/arm64/system@priv-app@LocalTransport@LocalTransport.apk@classes.vdex +64772 7954 -1 /data/dalvik-cache/arm64/system@priv-app@ExternalStorageProvider@ExternalStorageProvider.apk@classes.dex +64772 8350 -1 /data/dalvik-cache/arm64/system@priv-app@MusicFX@MusicFX.apk@classes.dex +64772 8000 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProvider@DownloadProvider.apk@classes.vdex +64772 8397 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkStack@NetworkStack.apk@classes.vdex +64772 8153 -1 /data/dalvik-cache/arm64/system@priv-app@MtpService@MtpService.apk@classes.vdex +64772 8152 -1 /data/dalvik-cache/arm64/system@priv-app@MtpService@MtpService.apk@classes.dex +64772 8724 -1 /data/dalvik-cache/arm64/system@priv-app@SoundPicker@SoundPicker.apk@classes.dex +64772 1360 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUI@DocumentsUI.apk@classes.vdex +64772 8759 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkPermissionConfig@NetworkPermissionConfig.apk@classes.dex +64772 1362 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUI@DocumentsUI.apk@classes.dex +64772 8725 -1 /data/dalvik-cache/arm64/system@priv-app@SoundPicker@SoundPicker.apk@classes.vdex +64772 8996 -1 /data/dalvik-cache/arm64/system@priv-app@ContactsProvider@ContactsProvider.apk@classes.vdex +64772 7931 -1 /data/dalvik-cache/arm64/system@priv-app@BackupEncryption@BackupEncryption.apk@classes.dex +64772 8873 -1 /data/dalvik-cache/arm64/system@priv-app@Shell@Shell.apk@classes.vdex +64772 8161 -1 /data/dalvik-cache/arm64/system@priv-app@ONS@ONS.apk@classes.vdex +64772 8885 -1 /data/dalvik-cache/arm64/system@priv-app@UserDictionaryProvider@UserDictionaryProvider.apk@classes.dex +64772 1378 -1 /data/dalvik-cache/arm64/system@priv-app@ExtServices@ExtServices.apk@classes.dex +64772 8995 -1 /data/dalvik-cache/arm64/system@priv-app@ContactsProvider@ContactsProvider.apk@classes.dex +64772 8872 -1 /data/dalvik-cache/arm64/system@priv-app@Shell@Shell.apk@classes.dex +64772 8886 -1 /data/dalvik-cache/arm64/system@priv-app@UserDictionaryProvider@UserDictionaryProvider.apk@classes.vdex +64772 7896 -1 /data/dalvik-cache/arm64/system@priv-app@CalendarProvider@CalendarProvider.apk@classes.dex +64772 8059 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProviderUi@DownloadProviderUi.apk@classes.dex +64772 7897 -1 /data/dalvik-cache/arm64/system@priv-app@CalendarProvider@CalendarProvider.apk@classes.vdex +64772 8843 -1 /data/dalvik-cache/arm64/system@priv-app@VpnDialogs@VpnDialogs.apk@classes.dex +64772 8167 -1 /data/dalvik-cache/arm64/system@priv-app@BackupRestoreConfirmation@BackupRestoreConfirmation.apk@classes.dex +64772 8060 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProviderUi@DownloadProviderUi.apk@classes.vdex +64772 1377 -1 /data/dalvik-cache/arm64/system@priv-app@ExtServices@ExtServices.apk@classes.vdex +64772 8168 -1 /data/dalvik-cache/arm64/system@priv-app@BackupRestoreConfirmation@BackupRestoreConfirmation.apk@classes.vdex +64772 7994 -1 /data/dalvik-cache/arm64/system@priv-app@MmsService@MmsService.apk@classes.dex +64772 8049 -1 /data/dalvik-cache/arm64/system@priv-app@TimeZoneUpdater@TimeZoneUpdater.apk@classes.dex +64772 8160 -1 /data/dalvik-cache/arm64/system@priv-app@ONS@ONS.apk@classes.dex +64772 8239 -1 /data/dalvik-cache/arm64/system@priv-app@SharedStorageBackup@SharedStorageBackup.apk@classes.vdex +64772 8238 -1 /data/dalvik-cache/arm64/system@priv-app@SharedStorageBackup@SharedStorageBackup.apk@classes.dex +64772 7995 -1 /data/dalvik-cache/arm64/system@priv-app@MmsService@MmsService.apk@classes.vdex +64772 8844 -1 /data/dalvik-cache/arm64/system@priv-app@VpnDialogs@VpnDialogs.apk@classes.vdex +64772 8182 -1 /data/dalvik-cache/arm64/system@priv-app@StatementService@StatementService.apk@classes.vdex +64772 1400 -1 /data/dalvik-cache/arm64/system@priv-app@PackageInstaller@PackageInstaller.apk@classes.dex +64772 1409 -1 /data/dalvik-cache/arm64/system@priv-app@Tag@Tag.apk@classes.vdex +64772 7901 -1 /data/dalvik-cache/arm64/system@priv-app@MediaProvider@MediaProvider.apk@classes.vdex +64772 7843 -1 /data/dalvik-cache/arm64/system@priv-app@TelephonyProvider@TelephonyProvider.apk@classes.dex +64772 7849 -1 /data/dalvik-cache/arm64/system@priv-app@DynamicSystemInstallationService@DynamicSystemInstallationService.apk@classes.vdex +64772 7878 -1 /data/dalvik-cache/arm64/product@priv-app@Velvet@Velvet.apk@classes.vdex +64772 8371 -1 /data/dalvik-cache/arm64/system@priv-app@CellBroadcastAppPlatform@CellBroadcastAppPlatform.apk@classes.dex +64772 8974 -1 /data/dalvik-cache/arm64/system@app@Bluetooth@Bluetooth.apk@classes.dex +64772 7978 -1 /data/dalvik-cache/arm64/system@app@CompanionDeviceManager@CompanionDeviceManager.apk@classes.dex +64772 7920 -1 /data/dalvik-cache/arm64/system@priv-app@CNEService@CNEService.apk@classes.vdex +64772 8070 -1 /data/dalvik-cache/arm64/system@app@PacProcessor@PacProcessor.apk@classes.dex +64772 1431 -1 /data/dalvik-cache/arm64/system@app@ExtShared@ExtShared.apk@classes.dex +64772 8752 -1 /data/dalvik-cache/arm64/system@app@LiveWallpapersPicker@LiveWallpapersPicker.apk@classes.dex +64772 8071 -1 /data/dalvik-cache/arm64/system@app@PacProcessor@PacProcessor.apk@classes.vdex +64772 8330 -1 /data/dalvik-cache/arm64/system@app@CaptivePortalLogin@CaptivePortalLogin.apk@classes.dex +64772 7966 -1 /data/dalvik-cache/arm64/system@app@uimremoteclient@uimremoteclient.apk@classes.vdex +64772 8990 -1 /data/dalvik-cache/arm64/system@app@embms@embms.apk@classes.dex +64772 8916 -1 /data/dalvik-cache/arm64/system@app@BluetoothMidiService@BluetoothMidiService.apk@classes.dex +64772 8075 -1 /data/dalvik-cache/arm64/system@app@SimAppDialog@SimAppDialog.apk@classes.dex +64772 8671 -1 /data/dalvik-cache/arm64/system@app@CarrierDefaultApp@CarrierDefaultApp.apk@classes.dex +64772 8331 -1 /data/dalvik-cache/arm64/system@app@CaptivePortalLogin@CaptivePortalLogin.apk@classes.vdex +64772 8163 -1 /data/dalvik-cache/arm64/system@app@Stk@Stk.apk@classes.dex +64772 8130 -1 /data/dalvik-cache/arm64/system@app@datastatusnotification@datastatusnotification.apk@classes.vdex +64772 8028 -1 /data/dalvik-cache/arm64/system@app@QtiTelephonyService@QtiTelephonyService.apk@classes.dex +64772 7971 -1 /data/dalvik-cache/arm64/system@app@HTMLViewer@HTMLViewer.apk@classes.vdex +64772 8148 -1 /data/dalvik-cache/arm64/system@app@EasterEgg@EasterEgg.apk@classes.dex +64772 8650 -1 /data/dalvik-cache/arm64/system@app@SafetyRegulatoryInfo@SafetyRegulatoryInfo.apk@classes.dex +64772 8173 -1 /data/dalvik-cache/arm64/system@app@radioconfig@radioconfig.apk@classes.dex +64772 8986 -1 /data/dalvik-cache/arm64/system@app@atfwd@atfwd.apk@classes.vdex +64772 8410 -1 /data/dalvik-cache/arm64/system@app@RcsService@RcsService.apk@classes.dex +64772 8174 -1 /data/dalvik-cache/arm64/system@app@radioconfig@radioconfig.apk@classes.vdex +64772 8411 -1 /data/dalvik-cache/arm64/system@app@RcsService@RcsService.apk@classes.vdex +64772 8629 -1 /data/dalvik-cache/arm64/system@priv-app@TagGoogle@TagGoogle.apk@classes.dex +64772 8749 -1 /data/dalvik-cache/arm64/system@app@PresencePolling@PresencePolling.apk@classes.vdex +64772 8985 -1 /data/dalvik-cache/arm64/system@app@atfwd@atfwd.apk@classes.dex +64772 8921 -1 /data/dalvik-cache/arm64/system@app@ConferenceDialer@ConferenceDialer.apk@classes.dex +64772 8157 -1 /data/dalvik-cache/arm64/system@app@NfcNci@NfcNci.apk@classes.vdex +64772 8177 -1 /data/dalvik-cache/arm64/system@app@ims@ims.apk@classes.dex +64772 8080 -1 /data/dalvik-cache/arm64/system@app@CertInstaller@CertInstaller.apk@classes.dex +64772 8324 -1 /data/dalvik-cache/arm64/system@priv-app@WifiStack@WifiStack.apk@classes.dex +64772 8309 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleDialer@GoogleDialer.apk@classes.dex +64772 8922 -1 /data/dalvik-cache/arm64/system@app@ConferenceDialer@ConferenceDialer.apk@classes.vdex +64772 7660 -1 /data/dalvik-cache/arm64/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.dex +64772 7909 -1 /data/dalvik-cache/arm64/system@app@GoogleExtShared@GoogleExtShared.apk@classes.dex +64772 8211 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePermissionController@GooglePermissionController.apk@classes.dex +64772 8729 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUIGoogle@DocumentsUIGoogle.apk@classes.dex +64772 8416 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePackageInstaller@GooglePackageInstaller.apk@classes.dex +64772 8630 -1 /data/dalvik-cache/arm64/system@priv-app@TagGoogle@TagGoogle.apk@classes.vdex +64772 8632 -1 /data/dalvik-cache/arm64/system@priv-app@TagGoogle@TagGoogle.apk@classes.art +64772 8823 -1 /data/dalvik-cache/arm64/product@priv-app@MaestroPrebuilt@MaestroPrebuilt.apk@classes.vdex +64772 8181 -1 /data/dalvik-cache/arm64/system@priv-app@StatementService@StatementService.apk@classes.dex +64772 8232 -1 /data/dalvik-cache/arm64/system@priv-app@qcrilmsgtunnel@qcrilmsgtunnel.apk@classes.dex +64772 8719 -1 /data/dalvik-cache/arm64/system@priv-app@ManagedProvisioning@ManagedProvisioning.apk@classes.dex +64772 8233 -1 /data/dalvik-cache/arm64/system@priv-app@qcrilmsgtunnel@qcrilmsgtunnel.apk@classes.vdex +64772 8050 -1 /data/dalvik-cache/arm64/system@priv-app@TimeZoneUpdater@TimeZoneUpdater.apk@classes.vdex +64772 8720 -1 /data/dalvik-cache/arm64/system@priv-app@ManagedProvisioning@ManagedProvisioning.apk@classes.vdex +64772 7965 -1 /data/dalvik-cache/arm64/system@app@uimremoteclient@uimremoteclient.apk@classes.dex +64772 7848 -1 /data/dalvik-cache/arm64/system@priv-app@DynamicSystemInstallationService@DynamicSystemInstallationService.apk@classes.dex +64772 8858 -1 /data/dalvik-cache/arm64/system@priv-app@TeleService@TeleService.apk@classes.dex +64772 8859 -1 /data/dalvik-cache/arm64/system@priv-app@TeleService@TeleService.apk@classes.vdex +64772 7919 -1 /data/dalvik-cache/arm64/system@priv-app@CNEService@CNEService.apk@classes.dex +64772 1410 -1 /data/dalvik-cache/arm64/system@priv-app@Tag@Tag.apk@classes.dex +64772 1399 -1 /data/dalvik-cache/arm64/system@priv-app@PackageInstaller@PackageInstaller.apk@classes.vdex +64772 8187 -1 /data/dalvik-cache/arm64/system@app@OsuLogin@OsuLogin.apk@classes.vdex +64772 8372 -1 /data/dalvik-cache/arm64/system@priv-app@CellBroadcastAppPlatform@CellBroadcastAppPlatform.apk@classes.vdex +64772 8186 -1 /data/dalvik-cache/arm64/system@app@OsuLogin@OsuLogin.apk@classes.dex +64772 7844 -1 /data/dalvik-cache/arm64/system@priv-app@TelephonyProvider@TelephonyProvider.apk@classes.vdex +64772 7900 -1 /data/dalvik-cache/arm64/system@priv-app@MediaProvider@MediaProvider.apk@classes.dex +64772 8263 -1 /data/dalvik-cache/arm64/system@app@PrintSpooler@PrintSpooler.apk@classes.dex +64772 8975 -1 /data/dalvik-cache/arm64/system@app@Bluetooth@Bluetooth.apk@classes.vdex +64772 8299 -1 /data/dalvik-cache/arm64/system@app@SecureElement@SecureElement.apk@classes.dex +64772 7979 -1 /data/dalvik-cache/arm64/system@app@CompanionDeviceManager@CompanionDeviceManager.apk@classes.vdex +64772 8300 -1 /data/dalvik-cache/arm64/system@app@SecureElement@SecureElement.apk@classes.vdex +64772 8264 -1 /data/dalvik-cache/arm64/system@app@PrintSpooler@PrintSpooler.apk@classes.vdex +64772 8941 -1 /data/dalvik-cache/arm64/system@app@Traceur@Traceur.apk@classes.dex +64772 8038 -1 /data/dalvik-cache/arm64/system@app@uimremoteserver@uimremoteserver.apk@classes.dex +64772 8942 -1 /data/dalvik-cache/arm64/system@app@Traceur@Traceur.apk@classes.vdex +64772 1430 -1 /data/dalvik-cache/arm64/system@app@ExtShared@ExtShared.apk@classes.vdex +64772 8753 -1 /data/dalvik-cache/arm64/system@app@LiveWallpapersPicker@LiveWallpapersPicker.apk@classes.vdex +64772 8039 -1 /data/dalvik-cache/arm64/system@app@uimremoteserver@uimremoteserver.apk@classes.vdex +64772 8834 -1 /data/dalvik-cache/arm64/system@app@QTIDiagServices@QTIDiagServices.apk@classes.vdex +64772 8991 -1 /data/dalvik-cache/arm64/system@app@embms@embms.apk@classes.vdex +64772 8149 -1 /data/dalvik-cache/arm64/system@app@EasterEgg@EasterEgg.apk@classes.vdex +64772 8917 -1 /data/dalvik-cache/arm64/system@app@BluetoothMidiService@BluetoothMidiService.apk@classes.vdex +64772 8833 -1 /data/dalvik-cache/arm64/system@app@QTIDiagServices@QTIDiagServices.apk@classes.dex +64772 8164 -1 /data/dalvik-cache/arm64/system@app@Stk@Stk.apk@classes.vdex +64772 8178 -1 /data/dalvik-cache/arm64/system@app@ims@ims.apk@classes.vdex +64772 8076 -1 /data/dalvik-cache/arm64/system@app@SimAppDialog@SimAppDialog.apk@classes.vdex +64772 8764 -1 /data/dalvik-cache/arm64/system@app@BookmarkProvider@BookmarkProvider.apk@classes.dex +64772 8129 -1 /data/dalvik-cache/arm64/system@app@datastatusnotification@datastatusnotification.apk@classes.dex +64772 8765 -1 /data/dalvik-cache/arm64/system@app@BookmarkProvider@BookmarkProvider.apk@classes.vdex +64772 8651 -1 /data/dalvik-cache/arm64/system@app@SafetyRegulatoryInfo@SafetyRegulatoryInfo.apk@classes.vdex +64772 8315 -1 /data/dalvik-cache/arm64/system@app@BuiltInPrintService@BuiltInPrintService.apk@classes.dex +64772 8316 -1 /data/dalvik-cache/arm64/system@app@BuiltInPrintService@BuiltInPrintService.apk@classes.vdex +64772 7970 -1 /data/dalvik-cache/arm64/system@app@HTMLViewer@HTMLViewer.apk@classes.dex +64772 8672 -1 /data/dalvik-cache/arm64/system@app@CarrierDefaultApp@CarrierDefaultApp.apk@classes.vdex +64772 8081 -1 /data/dalvik-cache/arm64/system@app@CertInstaller@CertInstaller.apk@classes.vdex +64772 8029 -1 /data/dalvik-cache/arm64/system@app@QtiTelephonyService@QtiTelephonyService.apk@classes.vdex +64772 8293 -1 /data/dalvik-cache/arm64/system@app@BasicDreams@BasicDreams.apk@classes.dex +64772 8156 -1 /data/dalvik-cache/arm64/system@app@NfcNci@NfcNci.apk@classes.dex +64772 8748 -1 /data/dalvik-cache/arm64/system@app@PresencePolling@PresencePolling.apk@classes.dex +64772 7974 -1 /data/dalvik-cache/arm64/system@app@uceShimService@uceShimService.apk@classes.dex +64772 7975 -1 /data/dalvik-cache/arm64/system@app@uceShimService@uceShimService.apk@classes.vdex +64772 8294 -1 /data/dalvik-cache/arm64/system@app@BasicDreams@BasicDreams.apk@classes.vdex +64772 8704 -1 /data/dalvik-cache/arm64/system@app@GooglePrintRecommendationService@GooglePrintRecommendationService.apk@classes.vdex +64772 7540 -1 /data/dalvik-cache/arm64/product@priv-app@OemDmTrigger@OemDmTrigger.apk@classes.art +64772 7600 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSetup@CarrierSetup.apk@classes.art +64772 7880 -1 /data/dalvik-cache/arm64/product@priv-app@Velvet@Velvet.apk@classes.art +64772 7925 -1 /data/dalvik-cache/arm64/product@app@DiagnosticsToolPrebuilt@DiagnosticsToolPrebuilt.apk@classes.vdex +64772 7927 -1 /data/dalvik-cache/arm64/product@app@DiagnosticsToolPrebuilt@DiagnosticsToolPrebuilt.apk@classes.art +64772 7936 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccSupportPixel@EuiccSupportPixel.apk@classes.dex +64772 8391 -1 /data/dalvik-cache/arm64/product@app@CarrierMetrics@CarrierMetrics.apk@classes.dex +64772 7957 -1 /data/dalvik-cache/arm64/system@priv-app@ExternalStorageProvider@ExternalStorageProvider.apk@classes.art +64772 7973 -1 /data/dalvik-cache/arm64/system@app@HTMLViewer@HTMLViewer.apk@classes.art +64772 7983 -1 /data/dalvik-cache/arm64/product@priv-app@ConnectivityMonitor@ConnectivityMonitor.apk@classes.dex +64772 8021 -1 /data/dalvik-cache/arm64/product@app@WallpapersBReel2018@WallpapersBReel2018.apk@classes.art +64772 8033 -1 /data/dalvik-cache/arm64/product@priv-app@ConfigUpdater@ConfigUpdater.apk@classes.dex +64772 8034 -1 /data/dalvik-cache/arm64/product@priv-app@ConfigUpdater@ConfigUpdater.apk@classes.vdex +64772 8047 -1 /data/dalvik-cache/arm64/product@priv-app@SafetyHubPrebuilt@SafetyHubPrebuilt.apk@classes.art +64772 8083 -1 /data/dalvik-cache/arm64/system@app@CertInstaller@CertInstaller.apk@classes.art +64772 8085 -1 /data/dalvik-cache/arm64/product@app@talkback@talkback.apk@classes.dex +64772 8136 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentXGoogleWCD9340@HotwordEnrollmentXGoogleWCD9340.apk@classes.art +64772 8151 -1 /data/dalvik-cache/arm64/system@app@EasterEgg@EasterEgg.apk@classes.art +64772 8189 -1 /data/dalvik-cache/arm64/system@app@OsuLogin@OsuLogin.apk@classes.art +64772 8199 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSettings@CarrierSettings.apk@classes.art +64772 8201 -1 /data/dalvik-cache/arm64/product@priv-app@SprintDM@SprintDM.apk@classes.dex +64772 8206 -1 /data/dalvik-cache/arm64/product@app@RamdumpUploader@RamdumpUploader.apk@classes.dex +64772 8216 -1 /data/dalvik-cache/arm64/product@priv-app@AmbientSensePrebuilt@AmbientSensePrebuilt.apk@classes.dex +64772 8221 -1 /data/dalvik-cache/arm64/product@priv-app@SetupWizardPrebuilt@SetupWizardPrebuilt.apk@classes.dex +64772 8358 -1 /data/dalvik-cache/arm64/product@app@Drive@Drive.apk@classes.art +64772 8222 -1 /data/dalvik-cache/arm64/product@priv-app@SetupWizardPrebuilt@SetupWizardPrebuilt.apk@classes.vdex +64772 8241 -1 /data/dalvik-cache/arm64/system@priv-app@SharedStorageBackup@SharedStorageBackup.apk@classes.art +64772 8254 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.vdex +64772 8277 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentOKGoogleWCD9340@HotwordEnrollmentOKGoogleWCD9340.apk@classes.art +64772 8283 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaClient@MobileFeliCaClient.apk@classes.dex +64772 8284 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaClient@MobileFeliCaClient.apk@classes.vdex +64772 8296 -1 /data/dalvik-cache/arm64/system@app@BasicDreams@BasicDreams.apk@classes.art +64772 8320 -1 /data/dalvik-cache/arm64/product@priv-app@ScribePrebuilt@ScribePrebuilt.apk@classes.dex +64772 8323 -1 /data/dalvik-cache/arm64/product@priv-app@ScribePrebuilt@ScribePrebuilt.apk@classes.art +64772 8343 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystemPermissions@ModemDiagnosticSystemPermissions.apk@classes.art +64772 8345 -1 /data/dalvik-cache/arm64/product@app@xdivert@xdivert.apk@classes.dex +64772 8366 -1 /data/dalvik-cache/arm64/product@app@MarkupGoogle@MarkupGoogle.apk@classes.dex +64772 8367 -1 /data/dalvik-cache/arm64/product@app@MarkupGoogle@MarkupGoogle.apk@classes.vdex +64772 8392 -1 /data/dalvik-cache/arm64/product@app@CarrierMetrics@CarrierMetrics.apk@classes.vdex +64772 8405 -1 /data/dalvik-cache/arm64/product@app@GoogleContactsSyncAdapter@GoogleContactsSyncAdapter.apk@classes.art +64772 8619 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleServicesFramework@GoogleServicesFramework.apk@classes.dex +64772 8622 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleServicesFramework@GoogleServicesFramework.apk@classes.art +64772 8624 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierServices@CarrierServices.apk@classes.dex +64772 8627 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierServices@CarrierServices.apk@classes.art +64772 8643 -1 /data/dalvik-cache/arm64/system@priv-app@CallLogBackup@CallLogBackup.apk@classes.art +64772 8653 -1 /data/dalvik-cache/arm64/system@app@SafetyRegulatoryInfo@SafetyRegulatoryInfo.apk@classes.art +64772 8667 -1 /data/dalvik-cache/arm64/product@priv-app@NexusLauncherRelease@NexusLauncherRelease.apk@classes.vdex +64772 8674 -1 /data/dalvik-cache/arm64/system@app@CarrierDefaultApp@CarrierDefaultApp.apk@classes.art +64772 8676 -1 /data/dalvik-cache/arm64/product@priv-app@RilConfigService@RilConfigService.apk@classes.dex +64772 8744 -1 /data/dalvik-cache/arm64/system@app@PartnerBookmarksProvider@PartnerBookmarksProvider.apk@classes.dex +64772 8325 -1 /data/dalvik-cache/arm64/system@priv-app@WifiStack@WifiStack.apk@classes.vdex +64772 7661 -1 /data/dalvik-cache/arm64/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.vdex +64772 7910 -1 /data/dalvik-cache/arm64/system@app@GoogleExtShared@GoogleExtShared.apk@classes.vdex +64772 8310 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleDialer@GoogleDialer.apk@classes.vdex +64772 8730 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUIGoogle@DocumentsUIGoogle.apk@classes.vdex +64772 8417 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePackageInstaller@GooglePackageInstaller.apk@classes.vdex +64772 8703 -1 /data/dalvik-cache/arm64/system@app@GooglePrintRecommendationService@GooglePrintRecommendationService.apk@classes.dex +64772 8822 -1 /data/dalvik-cache/arm64/product@priv-app@MaestroPrebuilt@MaestroPrebuilt.apk@classes.dex +64772 7639 -1 /data/dalvik-cache/arm64/product@app@VZWAPNLib@VZWAPNLib.apk@classes.dex +64772 7851 -1 /data/dalvik-cache/arm64/system@priv-app@DynamicSystemInstallationService@DynamicSystemInstallationService.apk@classes.art +64772 7853 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMO@ConnMO.apk@classes.dex +64772 7854 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMO@ConnMO.apk@classes.vdex +64772 7877 -1 /data/dalvik-cache/arm64/product@priv-app@Velvet@Velvet.apk@classes.dex +64772 7893 -1 /data/dalvik-cache/arm64/product@priv-app@MyVerizonServices@MyVerizonServices.apk@classes.vdex +64772 7899 -1 /data/dalvik-cache/arm64/system@priv-app@CalendarProvider@CalendarProvider.apk@classes.art +64772 7907 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleOneTimeInitializer@GoogleOneTimeInitializer.apk@classes.art +64772 7924 -1 /data/dalvik-cache/arm64/product@app@DiagnosticsToolPrebuilt@DiagnosticsToolPrebuilt.apk@classes.dex +64772 7959 -1 /data/dalvik-cache/arm64/product@app@DMAgent@DMAgent.apk@classes.dex +64772 7968 -1 /data/dalvik-cache/arm64/system@app@uimremoteclient@uimremoteclient.apk@classes.art +64772 7984 -1 /data/dalvik-cache/arm64/product@priv-app@ConnectivityMonitor@ConnectivityMonitor.apk@classes.vdex +64772 7987 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaWebPluginBoot@MobileFeliCaWebPluginBoot.apk@classes.dex +64772 7988 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaWebPluginBoot@MobileFeliCaWebPluginBoot.apk@classes.vdex +64772 7990 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaWebPlugin@MobileFeliCaWebPlugin.apk@classes.dex +64772 7997 -1 /data/dalvik-cache/arm64/system@priv-app@MmsService@MmsService.apk@classes.art +64772 8002 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProvider@DownloadProvider.apk@classes.art +64772 8016 -1 /data/dalvik-cache/arm64/product@app@SoundPickerPrebuilt@SoundPickerPrebuilt.apk@classes.art +64772 8031 -1 /data/dalvik-cache/arm64/system@app@QtiTelephonyService@QtiTelephonyService.apk@classes.art +64772 8036 -1 /data/dalvik-cache/arm64/product@priv-app@ConfigUpdater@ConfigUpdater.apk@classes.art +64772 8052 -1 /data/dalvik-cache/arm64/system@priv-app@TimeZoneUpdater@TimeZoneUpdater.apk@classes.art +64772 8062 -1 /data/dalvik-cache/arm64/system@priv-app@DownloadProviderUi@DownloadProviderUi.apk@classes.art +64772 8073 -1 /data/dalvik-cache/arm64/system@app@PacProcessor@PacProcessor.apk@classes.art +64772 8078 -1 /data/dalvik-cache/arm64/system@app@SimAppDialog@SimAppDialog.apk@classes.art +64772 8086 -1 /data/dalvik-cache/arm64/product@app@talkback@talkback.apk@classes.vdex +64772 8090 -1 /data/dalvik-cache/arm64/product@priv-app@OTAConfigPrebuilt@OTAConfigPrebuilt.apk@classes.dex +64772 8091 -1 /data/dalvik-cache/arm64/product@priv-app@OTAConfigPrebuilt@OTAConfigPrebuilt.apk@classes.vdex +64772 8093 -1 /data/dalvik-cache/arm64/product@priv-app@OTAConfigPrebuilt@OTAConfigPrebuilt.apk@classes.art +64772 8133 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentXGoogleWCD9340@HotwordEnrollmentXGoogleWCD9340.apk@classes.dex +64772 8134 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentXGoogleWCD9340@HotwordEnrollmentXGoogleWCD9340.apk@classes.vdex +64772 8139 -1 /data/dalvik-cache/arm64/product@priv-app@PixelSetupWizard@PixelSetupWizard.apk@classes.vdex +64772 8144 -1 /data/dalvik-cache/arm64/product@priv-app@grilservice@grilservice.apk@classes.vdex +64772 8146 -1 /data/dalvik-cache/arm64/product@priv-app@grilservice@grilservice.apk@classes.art +64772 8159 -1 /data/dalvik-cache/arm64/system@app@NfcNci@NfcNci.apk@classes.art +64772 8191 -1 /data/dalvik-cache/arm64/product@priv-app@MatchmakerPrebuiltPixel3@MatchmakerPrebuiltPixel3.apk@classes.dex +64772 8194 -1 /data/dalvik-cache/arm64/product@priv-app@MatchmakerPrebuiltPixel3@MatchmakerPrebuiltPixel3.apk@classes.art +64772 8202 -1 /data/dalvik-cache/arm64/product@priv-app@SprintDM@SprintDM.apk@classes.vdex +64772 8204 -1 /data/dalvik-cache/arm64/product@priv-app@SprintDM@SprintDM.apk@classes.art +64772 8214 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePermissionController@GooglePermissionController.apk@classes.art +64772 8227 -1 /data/dalvik-cache/arm64/product@app@NetGrapher@NetGrapher.apk@classes.dex +64772 7598 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSetup@CarrierSetup.apk@classes.vdex +64772 7663 -1 /data/dalvik-cache/arm64/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.art +64772 7912 -1 /data/dalvik-cache/arm64/system@app@GoogleExtShared@GoogleExtShared.apk@classes.art +64772 8379 -1 /data/dalvik-cache/arm64/product@app@TrichromeLibrary@TrichromeLibrary.apk@classes.vdex +64772 7962 -1 /data/dalvik-cache/arm64/product@app@DMAgent@DMAgent.apk@classes.art +64772 7986 -1 /data/dalvik-cache/arm64/product@priv-app@ConnectivityMonitor@ConnectivityMonitor.apk@classes.art +64772 8018 -1 /data/dalvik-cache/arm64/product@app@WallpapersBReel2018@WallpapersBReel2018.apk@classes.dex +64772 8023 -1 /data/dalvik-cache/arm64/product@app@PlayAutoInstallConfig@PlayAutoInstallConfig.apk@classes.dex +64772 8024 -1 /data/dalvik-cache/arm64/product@app@PlayAutoInstallConfig@PlayAutoInstallConfig.apk@classes.vdex +64772 8026 -1 /data/dalvik-cache/arm64/product@app@PlayAutoInstallConfig@PlayAutoInstallConfig.apk@classes.art +64772 8045 -1 /data/dalvik-cache/arm64/product@priv-app@SafetyHubPrebuilt@SafetyHubPrebuilt.apk@classes.vdex +64772 8055 -1 /data/dalvik-cache/arm64/product@app@arcore@arcore.apk@classes.vdex +64772 8141 -1 /data/dalvik-cache/arm64/product@priv-app@PixelSetupWizard@PixelSetupWizard.apk@classes.art +64772 8170 -1 /data/dalvik-cache/arm64/system@priv-app@BackupRestoreConfirmation@BackupRestoreConfirmation.apk@classes.art +64772 8184 -1 /data/dalvik-cache/arm64/system@priv-app@StatementService@StatementService.apk@classes.art +64772 8196 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSettings@CarrierSettings.apk@classes.dex +64772 8219 -1 /data/dalvik-cache/arm64/product@priv-app@AmbientSensePrebuilt@AmbientSensePrebuilt.apk@classes.art +64772 8235 -1 /data/dalvik-cache/arm64/system@priv-app@qcrilmsgtunnel@qcrilmsgtunnel.apk@classes.art +64772 8275 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentOKGoogleWCD9340@HotwordEnrollmentOKGoogleWCD9340.apk@classes.vdex +64772 8282 -1 /data/dalvik-cache/arm64/product@priv-app@DiagMon@DiagMon.apk@classes.art +64772 8286 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaMenuApp@MobileFeliCaMenuApp.apk@classes.dex +64772 8289 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaSettingApp@MobileFeliCaSettingApp.apk@classes.dex +64772 8306 -1 /data/dalvik-cache/arm64/product@priv-app@WellbeingPrebuilt@WellbeingPrebuilt.apk@classes.vdex +64772 8308 -1 /data/dalvik-cache/arm64/product@priv-app@WellbeingPrebuilt@WellbeingPrebuilt.apk@classes.art +64772 8321 -1 /data/dalvik-cache/arm64/product@priv-app@ScribePrebuilt@ScribePrebuilt.apk@classes.vdex +64772 8333 -1 /data/dalvik-cache/arm64/system@app@CaptivePortalLogin@CaptivePortalLogin.apk@classes.art +64772 8346 -1 /data/dalvik-cache/arm64/product@app@xdivert@xdivert.apk@classes.vdex +64772 8355 -1 /data/dalvik-cache/arm64/product@app@Drive@Drive.apk@classes.dex +64772 8360 -1 /data/dalvik-cache/arm64/product@priv-app@TipsPrebuilt@TipsPrebuilt.apk@classes.dex +64772 8363 -1 /data/dalvik-cache/arm64/product@priv-app@TipsPrebuilt@TipsPrebuilt.apk@classes.art +64772 8369 -1 /data/dalvik-cache/arm64/product@app@MarkupGoogle@MarkupGoogle.apk@classes.art +64772 8394 -1 /data/dalvik-cache/arm64/product@app@CarrierMetrics@CarrierMetrics.apk@classes.art +64772 8399 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkStack@NetworkStack.apk@classes.art +64772 8402 -1 /data/dalvik-cache/arm64/product@app@GoogleContactsSyncAdapter@GoogleContactsSyncAdapter.apk@classes.dex +64772 8403 -1 /data/dalvik-cache/arm64/product@app@GoogleContactsSyncAdapter@GoogleContactsSyncAdapter.apk@classes.vdex +64772 8498 -1 /data/dalvik-cache/arm64/product@priv-app@PrebuiltGmsCore@PrebuiltGmsCoreQt.apk@classes.dex +64772 8646 -1 /data/dalvik-cache/arm64/product@priv-app@GooglePartnerSetup@GooglePartnerSetup.apk@classes.vdex +64772 8694 -1 /data/dalvik-cache/arm64/product@priv-app@Showcase@Showcase.apk@classes.art +64772 8697 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleFeedback@GoogleFeedback.apk@classes.dex +64772 8735 -1 /data/dalvik-cache/arm64/product@priv-app@BetterBug@BetterBug.apk@classes.vdex +64772 8737 -1 /data/dalvik-cache/arm64/product@priv-app@BetterBug@BetterBug.apk@classes.art +64772 8770 -1 /data/dalvik-cache/arm64/product@priv-app@SettingsGoogle@SettingsGoogle.apk@classes.vdex +64772 8780 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidMigratePrebuilt@AndroidMigratePrebuilt.apk@classes.vdex +64772 8787 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidAutoFullPrebuilt@AndroidAutoFullPrebuilt.apk@classes.art +64772 8792 -1 /data/dalvik-cache/arm64/product@priv-app@obdm_stub@obdm_stub.apk@classes.art +64772 8800 -1 /data/dalvik-cache/arm64/product@priv-app@TurboPrebuilt@TurboPrebuilt.apk@classes.vdex +64772 8804 -1 /data/dalvik-cache/arm64/product@app@Tycho@Tycho.apk@classes.vdex +64772 8810 -1 /data/dalvik-cache/arm64/product@priv-app@TetheringEntitlement@TetheringEntitlement.apk@classes.art +64772 8817 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerPrebuilt@DreamlinerPrebuilt.apk@classes.dex +64772 8820 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerPrebuilt@DreamlinerPrebuilt.apk@classes.art +64772 1467 -1 /data/dalvik-cache/arm64/system@app@PrintRecommendationService@PrintRecommendationService.apk@classes.dex +64772 1466 -1 /data/dalvik-cache/arm64/system@app@PrintRecommendationService@PrintRecommendationService.apk@classes.vdex +64772 8212 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePermissionController@GooglePermissionController.apk@classes.vdex +64772 8745 -1 /data/dalvik-cache/arm64/system@app@PartnerBookmarksProvider@PartnerBookmarksProvider.apk@classes.vdex +64772 8951 -1 /data/dalvik-cache/arm64/system@app@vzw_msdc_api@vzw_msdc_api.apk@classes.dex +64772 8952 -1 /data/dalvik-cache/arm64/system@app@vzw_msdc_api@vzw_msdc_api.apk@classes.vdex +64772 7537 -1 /data/dalvik-cache/arm64/product@priv-app@OemDmTrigger@OemDmTrigger.apk@classes.dex +64772 7538 -1 /data/dalvik-cache/arm64/product@priv-app@OemDmTrigger@OemDmTrigger.apk@classes.vdex +64772 7597 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSetup@CarrierSetup.apk@classes.dex +64772 7640 -1 /data/dalvik-cache/arm64/product@app@VZWAPNLib@VZWAPNLib.apk@classes.vdex +64772 7642 -1 /data/dalvik-cache/arm64/product@app@VZWAPNLib@VZWAPNLib.apk@classes.art +64772 7856 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMO@ConnMO.apk@classes.art +64772 7892 -1 /data/dalvik-cache/arm64/product@priv-app@MyVerizonServices@MyVerizonServices.apk@classes.dex +64772 7904 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleOneTimeInitializer@GoogleOneTimeInitializer.apk@classes.dex +64772 7905 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleOneTimeInitializer@GoogleOneTimeInitializer.apk@classes.vdex +64772 7922 -1 /data/dalvik-cache/arm64/system@priv-app@CNEService@CNEService.apk@classes.art +64772 7934 -1 /data/dalvik-cache/arm64/system@priv-app@BackupEncryption@BackupEncryption.apk@classes.art +64772 7937 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccSupportPixel@EuiccSupportPixel.apk@classes.vdex +64772 7939 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccSupportPixel@EuiccSupportPixel.apk@classes.art +64772 8378 -1 /data/dalvik-cache/arm64/product@app@TrichromeLibrary@TrichromeLibrary.apk@classes.dex +64772 7960 -1 /data/dalvik-cache/arm64/product@app@DMAgent@DMAgent.apk@classes.vdex +64772 7981 -1 /data/dalvik-cache/arm64/system@app@CompanionDeviceManager@CompanionDeviceManager.apk@classes.art +64772 7991 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaWebPlugin@MobileFeliCaWebPlugin.apk@classes.vdex +64772 8005 -1 /data/dalvik-cache/arm64/product@app@PrebuiltBugle@PrebuiltBugle.apk@classes.dex +64772 8006 -1 /data/dalvik-cache/arm64/product@app@PrebuiltBugle@PrebuiltBugle.apk@classes.vdex +64772 8356 -1 /data/dalvik-cache/arm64/product@app@Drive@Drive.apk@classes.vdex +64772 8008 -1 /data/dalvik-cache/arm64/product@app@PrebuiltBugle@PrebuiltBugle.apk@classes.art +64772 8013 -1 /data/dalvik-cache/arm64/product@app@SoundPickerPrebuilt@SoundPickerPrebuilt.apk@classes.dex +64772 8014 -1 /data/dalvik-cache/arm64/product@app@SoundPickerPrebuilt@SoundPickerPrebuilt.apk@classes.vdex +64772 8019 -1 /data/dalvik-cache/arm64/product@app@WallpapersBReel2018@WallpapersBReel2018.apk@classes.vdex +64772 8041 -1 /data/dalvik-cache/arm64/system@app@uimremoteserver@uimremoteserver.apk@classes.art +64772 8044 -1 /data/dalvik-cache/arm64/product@priv-app@SafetyHubPrebuilt@SafetyHubPrebuilt.apk@classes.dex +64772 8054 -1 /data/dalvik-cache/arm64/product@app@arcore@arcore.apk@classes.dex +64772 8057 -1 /data/dalvik-cache/arm64/product@app@arcore@arcore.apk@classes.art +64772 8088 -1 /data/dalvik-cache/arm64/product@app@talkback@talkback.apk@classes.art +64772 8138 -1 /data/dalvik-cache/arm64/product@priv-app@PixelSetupWizard@PixelSetupWizard.apk@classes.dex +64772 8143 -1 /data/dalvik-cache/arm64/product@priv-app@grilservice@grilservice.apk@classes.dex +64772 8176 -1 /data/dalvik-cache/arm64/system@app@radioconfig@radioconfig.apk@classes.art +64772 8192 -1 /data/dalvik-cache/arm64/product@priv-app@MatchmakerPrebuiltPixel3@MatchmakerPrebuiltPixel3.apk@classes.vdex +64772 8197 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierSettings@CarrierSettings.apk@classes.vdex +64772 8207 -1 /data/dalvik-cache/arm64/product@app@RamdumpUploader@RamdumpUploader.apk@classes.vdex +64772 8209 -1 /data/dalvik-cache/arm64/product@app@RamdumpUploader@RamdumpUploader.apk@classes.art +64772 8217 -1 /data/dalvik-cache/arm64/product@priv-app@AmbientSensePrebuilt@AmbientSensePrebuilt.apk@classes.vdex +64772 8224 -1 /data/dalvik-cache/arm64/product@priv-app@SetupWizardPrebuilt@SetupWizardPrebuilt.apk@classes.art +64772 8228 -1 /data/dalvik-cache/arm64/product@app@NetGrapher@NetGrapher.apk@classes.vdex +64772 8230 -1 /data/dalvik-cache/arm64/product@app@NetGrapher@NetGrapher.apk@classes.art +64772 8244 -1 /data/dalvik-cache/arm64/product@priv-app@AppDirectedSMSService@AppDirectedSMSService.apk@classes.vdex +64772 8261 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccGoogle@EuiccGoogle.apk@classes.art +64772 8269 -1 /data/dalvik-cache/arm64/product@priv-app@Volta@Volta.apk@classes.dex +64772 8279 -1 /data/dalvik-cache/arm64/product@priv-app@DiagMon@DiagMon.apk@classes.dex +64772 8280 -1 /data/dalvik-cache/arm64/product@priv-app@DiagMon@DiagMon.apk@classes.vdex +64772 8287 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaMenuApp@MobileFeliCaMenuApp.apk@classes.vdex +64772 8302 -1 /data/dalvik-cache/arm64/system@app@SecureElement@SecureElement.apk@classes.art +64772 8686 -1 /data/dalvik-cache/arm64/product@app@SSRestartDetector@SSRestartDetector.apk@classes.dex +64772 8698 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleFeedback@GoogleFeedback.apk@classes.vdex +64772 8700 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleFeedback@GoogleFeedback.apk@classes.art +64772 8715 -1 /data/dalvik-cache/arm64/product@app@CalendarGooglePrebuilt@CalendarGooglePrebuilt.apk@classes.vdex +64772 8727 -1 /data/dalvik-cache/arm64/system@priv-app@SoundPicker@SoundPicker.apk@classes.art +64772 8732 -1 /data/dalvik-cache/arm64/system@priv-app@DocumentsUIGoogle@DocumentsUIGoogle.apk@classes.art +64772 8734 -1 /data/dalvik-cache/arm64/product@priv-app@BetterBug@BetterBug.apk@classes.dex +64772 8777 -1 /data/dalvik-cache/arm64/product@priv-app@WfcActivation@WfcActivation.apk@classes.art +64772 8779 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidMigratePrebuilt@AndroidMigratePrebuilt.apk@classes.dex +64772 8784 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidAutoFullPrebuilt@AndroidAutoFullPrebuilt.apk@classes.dex +64772 8789 -1 /data/dalvik-cache/arm64/product@priv-app@obdm_stub@obdm_stub.apk@classes.dex +64772 8830 -1 /data/dalvik-cache/arm64/product@priv-app@SprintHM@SprintHM.apk@classes.art +64772 8836 -1 /data/dalvik-cache/arm64/system@app@QTIDiagServices@QTIDiagServices.apk@classes.art +64772 8839 -1 /data/dalvik-cache/arm64/product@app@com.qualcomm.qti.services.secureui@com.qualcomm.qti.services.secureui.apk@classes.vdex +64772 8853 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleCBRS@GoogleCBRS.apk@classes.dex +64772 8895 -1 /data/dalvik-cache/arm64/product@app@EmergencyInfoGoogleNoUi@EmergencyInfoGoogleNoUi.apk@classes.vdex +64772 8900 -1 /data/dalvik-cache/arm64/product@app@LocationHistoryPrebuilt@LocationHistoryPrebuilt.apk@classes.vdex +64772 8946 -1 /data/dalvik-cache/arm64/product@priv-app@HelpRtcPrebuilt@HelpRtcPrebuilt.apk@classes.dex +64772 8949 -1 /data/dalvik-cache/arm64/product@priv-app@HelpRtcPrebuilt@HelpRtcPrebuilt.apk@classes.art +64772 8977 -1 /data/dalvik-cache/arm64/system@app@Bluetooth@Bluetooth.apk@classes.art +64772 9000 -1 /data/dalvik-cache/arm64/product@priv-app@VendorLoggingService@VendorLoggingService.apk@classes.vdex +64772 9022 -1 /data/dalvik-cache/arm64/product@app@LatinIMEGooglePrebuilt@LatinIMEGooglePrebuilt.apk@classes.art +64772 8253 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.dex +64772 8256 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.art +64772 8272 -1 /data/dalvik-cache/arm64/product@priv-app@Volta@Volta.apk@classes.art +64772 8290 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaSettingApp@MobileFeliCaSettingApp.apk@classes.vdex +64772 8340 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystemPermissions@ModemDiagnosticSystemPermissions.apk@classes.dex +64772 8386 -1 /data/dalvik-cache/arm64/product@app@WebViewGoogle@WebViewGoogle.apk@classes.vdex +64772 8419 -1 /data/dalvik-cache/arm64/system@priv-app@GooglePackageInstaller@GooglePackageInstaller.apk@classes.art +64772 8625 -1 /data/dalvik-cache/arm64/product@priv-app@CarrierServices@CarrierServices.apk@classes.vdex +64772 8634 -1 /data/dalvik-cache/arm64/product@app@GoogleTTS@GoogleTTS.apk@classes.dex +64772 8648 -1 /data/dalvik-cache/arm64/product@priv-app@GooglePartnerSetup@GooglePartnerSetup.apk@classes.art +64772 8658 -1 /data/dalvik-cache/arm64/system@priv-app@LocalTransport@LocalTransport.apk@classes.art +64772 8669 -1 /data/dalvik-cache/arm64/product@priv-app@NexusLauncherRelease@NexusLauncherRelease.apk@classes.art +64772 8677 -1 /data/dalvik-cache/arm64/product@priv-app@RilConfigService@RilConfigService.apk@classes.vdex +64772 8708 -1 /data/dalvik-cache/arm64/product@app@Photos@Photos.apk@classes.dex +64772 8711 -1 /data/dalvik-cache/arm64/product@app@Photos@Photos.apk@classes.art +64772 8722 -1 /data/dalvik-cache/arm64/system@priv-app@ManagedProvisioning@ManagedProvisioning.apk@classes.art +64772 8740 -1 /data/dalvik-cache/arm64/product@priv-app@DCMO@DCMO.apk@classes.vdex +64772 8769 -1 /data/dalvik-cache/arm64/product@priv-app@SettingsGoogle@SettingsGoogle.apk@classes.dex +64772 8825 -1 /data/dalvik-cache/arm64/product@priv-app@MaestroPrebuilt@MaestroPrebuilt.apk@classes.art +64772 8964 -1 /data/dalvik-cache/arm64/product@priv-app@GmsCoreSetupPrebuilt@GmsCoreSetupPrebuilt.apk@classes.vdex +64772 8972 -1 /data/dalvik-cache/arm64/product@priv-app@GCS@GCS.apk@classes.art +64772 8993 -1 /data/dalvik-cache/arm64/system@app@embms@embms.apk@classes.art +64772 8999 -1 /data/dalvik-cache/arm64/product@priv-app@VendorLoggingService@VendorLoggingService.apk@classes.dex +64772 9015 -1 /data/dalvik-cache/arm64/product@priv-app@VzwOmaTrigger@VzwOmaTrigger.apk@classes.vdex +64772 8828 -1 /data/dalvik-cache/arm64/product@priv-app@SprintHM@SprintHM.apk@classes.vdex +64772 8841 -1 /data/dalvik-cache/arm64/product@app@com.qualcomm.qti.services.secureui@com.qualcomm.qti.services.secureui.apk@classes.art +64772 8846 -1 /data/dalvik-cache/arm64/system@priv-app@VpnDialogs@VpnDialogs.apk@classes.art +64772 8881 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaMenuMainApp@MobileFeliCaMenuMainApp.apk@classes.vdex +64772 8899 -1 /data/dalvik-cache/arm64/product@app@LocationHistoryPrebuilt@LocationHistoryPrebuilt.apk@classes.dex +64772 8944 -1 /data/dalvik-cache/arm64/system@app@Traceur@Traceur.apk@classes.art +64772 8954 -1 /data/dalvik-cache/arm64/system@app@vzw_msdc_api@vzw_msdc_api.apk@classes.art +64772 8957 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystem@ModemDiagnosticSystem.apk@classes.dex +64772 8966 -1 /data/dalvik-cache/arm64/product@priv-app@GmsCoreSetupPrebuilt@GmsCoreSetupPrebuilt.apk@classes.art +64772 8981 -1 /data/dalvik-cache/arm64/vendor@app@TimeService@TimeService.apk@classes.vdex +64772 9009 -1 /data/dalvik-cache/arm64/product@priv-app@LLKAgent@LLKAgent.apk@classes.dex +64772 9010 -1 /data/dalvik-cache/arm64/product@priv-app@LLKAgent@LLKAgent.apk@classes.vdex +64772 9027 -1 /data/dalvik-cache/arm64/product@priv-app@StorageManagerGoogle@StorageManagerGoogle.apk@classes.art +64772 8335 -1 /data/dalvik-cache/arm64/product@app@SoundAmplifierPrebuilt@SoundAmplifierPrebuilt.apk@classes.dex +64772 8341 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystemPermissions@ModemDiagnosticSystemPermissions.apk@classes.vdex +64772 8499 -1 /data/dalvik-cache/arm64/product@priv-app@PrebuiltGmsCore@PrebuiltGmsCoreQt.apk@classes.vdex +64772 8620 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleServicesFramework@GoogleServicesFramework.apk@classes.vdex +64772 8684 -1 /data/dalvik-cache/arm64/system@priv-app@ProxyHandler@ProxyHandler.apk@classes.art +64772 8687 -1 /data/dalvik-cache/arm64/product@app@SSRestartDetector@SSRestartDetector.apk@classes.vdex +64772 8714 -1 /data/dalvik-cache/arm64/product@app@CalendarGooglePrebuilt@CalendarGooglePrebuilt.apk@classes.dex +64772 8762 -1 /data/dalvik-cache/arm64/system@priv-app@NetworkPermissionConfig@NetworkPermissionConfig.apk@classes.art +64772 8795 -1 /data/dalvik-cache/arm64/product@priv-app@SCONE@SCONE.apk@classes.vdex +64772 8808 -1 /data/dalvik-cache/arm64/product@priv-app@TetheringEntitlement@TetheringEntitlement.apk@classes.vdex +64772 8838 -1 /data/dalvik-cache/arm64/product@app@com.qualcomm.qti.services.secureui@com.qualcomm.qti.services.secureui.apk@classes.dex +64772 8854 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleCBRS@GoogleCBRS.apk@classes.vdex +64772 8861 -1 /data/dalvik-cache/arm64/system@priv-app@TeleService@TeleService.apk@classes.art +64772 8870 -1 /data/dalvik-cache/arm64/product@app@GoogleVrCore@GoogleVrCore.apk@classes.art +64772 8936 -1 /data/dalvik-cache/arm64/product@priv-app@TMobilePlanProvider@TMobilePlanProvider.apk@classes.dex +64772 8947 -1 /data/dalvik-cache/arm64/product@priv-app@HelpRtcPrebuilt@HelpRtcPrebuilt.apk@classes.vdex +64772 8960 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystem@ModemDiagnosticSystem.apk@classes.art +64772 8969 -1 /data/dalvik-cache/arm64/product@priv-app@GCS@GCS.apk@classes.dex +64772 8970 -1 /data/dalvik-cache/arm64/product@priv-app@GCS@GCS.apk@classes.vdex +64772 8980 -1 /data/dalvik-cache/arm64/vendor@app@TimeService@TimeService.apk@classes.dex +64772 9002 -1 /data/dalvik-cache/arm64/product@priv-app@VendorLoggingService@VendorLoggingService.apk@classes.art +64772 9012 -1 /data/dalvik-cache/arm64/product@priv-app@LLKAgent@LLKAgent.apk@classes.art +64772 8709 -1 /data/dalvik-cache/arm64/product@app@Photos@Photos.apk@classes.vdex +64772 8742 -1 /data/dalvik-cache/arm64/product@priv-app@DCMO@DCMO.apk@classes.art +64772 8774 -1 /data/dalvik-cache/arm64/product@priv-app@WfcActivation@WfcActivation.apk@classes.dex +64772 8775 -1 /data/dalvik-cache/arm64/product@priv-app@WfcActivation@WfcActivation.apk@classes.vdex +64772 8782 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidMigratePrebuilt@AndroidMigratePrebuilt.apk@classes.art +64772 8785 -1 /data/dalvik-cache/arm64/product@priv-app@AndroidAutoFullPrebuilt@AndroidAutoFullPrebuilt.apk@classes.vdex +64772 8797 -1 /data/dalvik-cache/arm64/product@priv-app@SCONE@SCONE.apk@classes.art +64772 8799 -1 /data/dalvik-cache/arm64/product@priv-app@TurboPrebuilt@TurboPrebuilt.apk@classes.dex +64772 8803 -1 /data/dalvik-cache/arm64/product@app@Tycho@Tycho.apk@classes.dex +64772 8848 -1 /data/dalvik-cache/arm64/product@priv-app@WallpaperPickerGoogleRelease@WallpaperPickerGoogleRelease.apk@classes.dex +64772 8889 -1 /data/dalvik-cache/arm64/product@app@Ornament@Ornament.apk@classes.dex +64772 8905 -1 /data/dalvik-cache/arm64/product@app@PixelLogger@PixelLogger.apk@classes.vdex +64772 8907 -1 /data/dalvik-cache/arm64/product@app@PixelLogger@PixelLogger.apk@classes.art +64772 8911 -1 /data/dalvik-cache/arm64/product@priv-app@HardwareInfo@HardwareInfo.apk@classes.dex +64772 8919 -1 /data/dalvik-cache/arm64/system@app@BluetoothMidiService@BluetoothMidiService.apk@classes.art +64772 8924 -1 /data/dalvik-cache/arm64/system@app@ConferenceDialer@ConferenceDialer.apk@classes.art +64772 8937 -1 /data/dalvik-cache/arm64/product@priv-app@TMobilePlanProvider@TMobilePlanProvider.apk@classes.vdex +64772 8988 -1 /data/dalvik-cache/arm64/system@app@atfwd@atfwd.apk@classes.art +64772 9004 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMetrics@ConnMetrics.apk@classes.dex +64772 9007 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMetrics@ConnMetrics.apk@classes.art +64772 9014 -1 /data/dalvik-cache/arm64/product@priv-app@VzwOmaTrigger@VzwOmaTrigger.apk@classes.dex +64772 9017 -1 /data/dalvik-cache/arm64/product@priv-app@VzwOmaTrigger@VzwOmaTrigger.apk@classes.art +64772 9024 -1 /data/dalvik-cache/arm64/product@priv-app@StorageManagerGoogle@StorageManagerGoogle.apk@classes.dex +64772 9025 -1 /data/dalvik-cache/arm64/product@priv-app@StorageManagerGoogle@StorageManagerGoogle.apk@classes.vdex +64772 8243 -1 /data/dalvik-cache/arm64/product@priv-app@AppDirectedSMSService@AppDirectedSMSService.apk@classes.dex +64772 8246 -1 /data/dalvik-cache/arm64/product@priv-app@AppDirectedSMSService@AppDirectedSMSService.apk@classes.art +64772 8258 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccGoogle@EuiccGoogle.apk@classes.dex +64772 8259 -1 /data/dalvik-cache/arm64/product@priv-app@EuiccGoogle@EuiccGoogle.apk@classes.vdex +64772 8266 -1 /data/dalvik-cache/arm64/system@app@PrintSpooler@PrintSpooler.apk@classes.art +64772 8270 -1 /data/dalvik-cache/arm64/product@priv-app@Volta@Volta.apk@classes.vdex +64772 8274 -1 /data/dalvik-cache/arm64/product@priv-app@HotwordEnrollmentOKGoogleWCD9340@HotwordEnrollmentOKGoogleWCD9340.apk@classes.dex +64772 8312 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleDialer@GoogleDialer.apk@classes.art +64772 8318 -1 /data/dalvik-cache/arm64/system@app@BuiltInPrintService@BuiltInPrintService.apk@classes.art +64772 8338 -1 /data/dalvik-cache/arm64/product@app@SoundAmplifierPrebuilt@SoundAmplifierPrebuilt.apk@classes.art +64772 8353 -1 /data/dalvik-cache/arm64/system@priv-app@MusicFX@MusicFX.apk@classes.art +64772 8361 -1 /data/dalvik-cache/arm64/product@priv-app@TipsPrebuilt@TipsPrebuilt.apk@classes.vdex +64772 8635 -1 /data/dalvik-cache/arm64/product@app@GoogleTTS@GoogleTTS.apk@classes.vdex +64772 8637 -1 /data/dalvik-cache/arm64/product@app@GoogleTTS@GoogleTTS.apk@classes.art +64772 8645 -1 /data/dalvik-cache/arm64/product@priv-app@GooglePartnerSetup@GooglePartnerSetup.apk@classes.dex +64772 8679 -1 /data/dalvik-cache/arm64/product@priv-app@RilConfigService@RilConfigService.apk@classes.art +64772 8691 -1 /data/dalvik-cache/arm64/product@priv-app@Showcase@Showcase.apk@classes.dex +64772 8706 -1 /data/dalvik-cache/arm64/system@app@GooglePrintRecommendationService@GooglePrintRecommendationService.apk@classes.art +64772 8717 -1 /data/dalvik-cache/arm64/product@app@CalendarGooglePrebuilt@CalendarGooglePrebuilt.apk@classes.art +64772 8739 -1 /data/dalvik-cache/arm64/product@priv-app@DCMO@DCMO.apk@classes.dex +64772 8755 -1 /data/dalvik-cache/arm64/system@app@LiveWallpapersPicker@LiveWallpapersPicker.apk@classes.art +64772 8790 -1 /data/dalvik-cache/arm64/product@priv-app@obdm_stub@obdm_stub.apk@classes.vdex +64772 8794 -1 /data/dalvik-cache/arm64/product@priv-app@SCONE@SCONE.apk@classes.dex +64772 8802 -1 /data/dalvik-cache/arm64/product@priv-app@TurboPrebuilt@TurboPrebuilt.apk@classes.art +64772 8818 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerPrebuilt@DreamlinerPrebuilt.apk@classes.vdex +64772 8856 -1 /data/dalvik-cache/arm64/product@priv-app@GoogleCBRS@GoogleCBRS.apk@classes.art +64772 8849 -1 /data/dalvik-cache/arm64/product@priv-app@WallpaperPickerGoogleRelease@WallpaperPickerGoogleRelease.apk@classes.vdex +64772 8875 -1 /data/dalvik-cache/arm64/system@priv-app@Shell@Shell.apk@classes.art +64772 8880 -1 /data/dalvik-cache/arm64/product@app@MobileFeliCaMenuMainApp@MobileFeliCaMenuMainApp.apk@classes.dex +64772 8931 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerUpdater@DreamlinerUpdater.apk@classes.dex +64772 8939 -1 /data/dalvik-cache/arm64/product@priv-app@TMobilePlanProvider@TMobilePlanProvider.apk@classes.art +64772 8983 -1 /data/dalvik-cache/arm64/vendor@app@TimeService@TimeService.apk@classes.art +64772 9005 -1 /data/dalvik-cache/arm64/product@priv-app@ConnMetrics@ConnMetrics.apk@classes.vdex +64772 8827 -1 /data/dalvik-cache/arm64/product@priv-app@SprintHM@SprintHM.apk@classes.dex +64772 8867 -1 /data/dalvik-cache/arm64/product@app@GoogleVrCore@GoogleVrCore.apk@classes.dex +64772 8897 -1 /data/dalvik-cache/arm64/product@app@EmergencyInfoGoogleNoUi@EmergencyInfoGoogleNoUi.apk@classes.art +64772 8904 -1 /data/dalvik-cache/arm64/product@app@PixelLogger@PixelLogger.apk@classes.dex +64772 8912 -1 /data/dalvik-cache/arm64/product@priv-app@HardwareInfo@HardwareInfo.apk@classes.vdex +64772 8914 -1 /data/dalvik-cache/arm64/product@priv-app@HardwareInfo@HardwareInfo.apk@classes.art +64772 8932 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerUpdater@DreamlinerUpdater.apk@classes.vdex +64772 8934 -1 /data/dalvik-cache/arm64/product@priv-app@DreamlinerUpdater@DreamlinerUpdater.apk@classes.art +64772 9020 -1 /data/dalvik-cache/arm64/product@app@LatinIMEGooglePrebuilt@LatinIMEGooglePrebuilt.apk@classes.vdex +64772 8305 -1 /data/dalvik-cache/arm64/product@priv-app@WellbeingPrebuilt@WellbeingPrebuilt.apk@classes.dex +64772 8336 -1 /data/dalvik-cache/arm64/product@app@SoundAmplifierPrebuilt@SoundAmplifierPrebuilt.apk@classes.vdex +64772 8348 -1 /data/dalvik-cache/arm64/product@app@xdivert@xdivert.apk@classes.art +64772 8374 -1 /data/dalvik-cache/arm64/system@priv-app@CellBroadcastAppPlatform@CellBroadcastAppPlatform.apk@classes.art +64772 8385 -1 /data/dalvik-cache/arm64/product@app@WebViewGoogle@WebViewGoogle.apk@classes.dex +64772 8413 -1 /data/dalvik-cache/arm64/system@app@RcsService@RcsService.apk@classes.art +64772 8666 -1 /data/dalvik-cache/arm64/product@priv-app@NexusLauncherRelease@NexusLauncherRelease.apk@classes.dex +64772 8689 -1 /data/dalvik-cache/arm64/product@app@SSRestartDetector@SSRestartDetector.apk@classes.art +64772 8692 -1 /data/dalvik-cache/arm64/product@priv-app@Showcase@Showcase.apk@classes.vdex +64772 8747 -1 /data/dalvik-cache/arm64/system@app@PartnerBookmarksProvider@PartnerBookmarksProvider.apk@classes.art +64772 8767 -1 /data/dalvik-cache/arm64/system@app@BookmarkProvider@BookmarkProvider.apk@classes.art +64772 8772 -1 /data/dalvik-cache/arm64/product@priv-app@SettingsGoogle@SettingsGoogle.apk@classes.art +64772 8807 -1 /data/dalvik-cache/arm64/product@priv-app@TetheringEntitlement@TetheringEntitlement.apk@classes.dex +64772 8851 -1 /data/dalvik-cache/arm64/product@priv-app@WallpaperPickerGoogleRelease@WallpaperPickerGoogleRelease.apk@classes.art +64772 8868 -1 /data/dalvik-cache/arm64/product@app@GoogleVrCore@GoogleVrCore.apk@classes.vdex +64772 8890 -1 /data/dalvik-cache/arm64/product@app@Ornament@Ornament.apk@classes.vdex +64772 8892 -1 /data/dalvik-cache/arm64/product@app@Ornament@Ornament.apk@classes.art +64772 8894 -1 /data/dalvik-cache/arm64/product@app@EmergencyInfoGoogleNoUi@EmergencyInfoGoogleNoUi.apk@classes.dex +64772 8902 -1 /data/dalvik-cache/arm64/product@app@LocationHistoryPrebuilt@LocationHistoryPrebuilt.apk@classes.art +64772 8958 -1 /data/dalvik-cache/arm64/product@priv-app@ModemDiagnosticSystem@ModemDiagnosticSystem.apk@classes.vdex +64772 8963 -1 /data/dalvik-cache/arm64/product@priv-app@GmsCoreSetupPrebuilt@GmsCoreSetupPrebuilt.apk@classes.dex +64772 9019 -1 /data/dalvik-cache/arm64/product@app@LatinIMEGooglePrebuilt@LatinIMEGooglePrebuilt.apk@classes.dex +64772 448 -1 /data/dalvik-cache/arm +64772 1380 -1 /data/dalvik-cache/arm/system@priv-app@ExtServices@ExtServices.apk@classes.dex +64772 7645 -1 /data/dalvik-cache/arm/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.dex +64772 1379 -1 /data/dalvik-cache/arm/system@priv-app@ExtServices@ExtServices.apk@classes.vdex +64772 7646 -1 /data/dalvik-cache/arm/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.vdex +64772 7914 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP_VZW@QAS_DVC_MSP_VZW.apk@classes.dex +64772 7915 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP_VZW@QAS_DVC_MSP_VZW.apk@classes.vdex +64772 8926 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP@QAS_DVC_MSP.apk@classes.dex +64772 8927 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP@QAS_DVC_MSP.apk@classes.vdex +64772 7648 -1 /data/dalvik-cache/arm/system@priv-app@GoogleExtServices@GoogleExtServices.apk@classes.art +64772 7858 -1 /data/dalvik-cache/arm/product@priv-app@Velvet@Velvet.apk@classes.dex +64772 7859 -1 /data/dalvik-cache/arm/product@priv-app@Velvet@Velvet.apk@classes.vdex +64772 7861 -1 /data/dalvik-cache/arm/product@priv-app@Velvet@Velvet.apk@classes.art +64772 7917 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP_VZW@QAS_DVC_MSP_VZW.apk@classes.art +64772 8375 -1 /data/dalvik-cache/arm/product@app@TrichromeLibrary@TrichromeLibrary.apk@classes.dex +64772 8376 -1 /data/dalvik-cache/arm/product@app@TrichromeLibrary@TrichromeLibrary.apk@classes.vdex +64772 8381 -1 /data/dalvik-cache/arm/product@app@WebViewGoogle@WebViewGoogle.apk@classes.dex +64772 8063 -1 /data/dalvik-cache/arm/product@priv-app@Phonesky@Phonesky.apk@classes.dex +64772 8064 -1 /data/dalvik-cache/arm/product@priv-app@Phonesky@Phonesky.apk@classes.vdex +64772 8066 -1 /data/dalvik-cache/arm/product@priv-app@Phonesky@Phonesky.apk@classes.art +64772 8249 -1 /data/dalvik-cache/arm/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.dex +64772 8250 -1 /data/dalvik-cache/arm/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.vdex +64772 8252 -1 /data/dalvik-cache/arm/product@priv-app@GoogleANGLE@GoogleANGLE.apk@classes.art +64772 8382 -1 /data/dalvik-cache/arm/product@app@WebViewGoogle@WebViewGoogle.apk@classes.vdex +64772 8420 -1 /data/dalvik-cache/arm/product@priv-app@PrebuiltGmsCore@PrebuiltGmsCoreQt.apk@classes.dex +64772 8421 -1 /data/dalvik-cache/arm/product@priv-app@PrebuiltGmsCore@PrebuiltGmsCoreQt.apk@classes.vdex +64772 8660 -1 /data/dalvik-cache/arm/product@app@Videos@Videos.apk@classes.dex +64772 8661 -1 /data/dalvik-cache/arm/product@app@Videos@Videos.apk@classes.vdex +64772 8663 -1 /data/dalvik-cache/arm/product@app@Videos@Videos.apk@classes.art +64772 8812 -1 /data/dalvik-cache/arm/product@priv-app@DMService@DMService.apk@classes.dex +64772 8813 -1 /data/dalvik-cache/arm/product@priv-app@DMService@DMService.apk@classes.vdex +64772 8815 -1 /data/dalvik-cache/arm/product@priv-app@DMService@DMService.apk@classes.art +64772 8863 -1 /data/dalvik-cache/arm/product@app@GoogleVrCore@GoogleVrCore.apk@classes.dex +64772 8864 -1 /data/dalvik-cache/arm/product@app@GoogleVrCore@GoogleVrCore.apk@classes.vdex +64772 8866 -1 /data/dalvik-cache/arm/product@app@GoogleVrCore@GoogleVrCore.apk@classes.art +64772 8929 -1 /data/dalvik-cache/arm/system@app@QAS_DVC_MSP@QAS_DVC_MSP.apk@classes.art +64772 86 -1 /data/ota +64772 87 -1 /data/ota_package +64772 88 -1 /data/resource-cache +64772 1320 -1 /data/resource-cache/vendor@overlay@framework-res__auto_generated_rro_vendor.apk@idmap +64772 9842 -1 /data/resource-cache/vendor@overlay@TeleService__auto_generated_rro_vendor.apk@idmap +64772 9856 -1 /data/resource-cache/vendor@overlay@Bluetooth__auto_generated_rro_vendor.apk@idmap +64772 9833 -1 /data/resource-cache/vendor@overlay@NfcNci__auto_generated_rro_vendor.apk@idmap +64772 1636 -1 /data/resource-cache/vendor@overlay@SystemUI__auto_generated_rro_vendor.apk@idmap +64772 4568 -1 /data/resource-cache/product@overlay@FontArvoLato@FontArvoLatoOverlay.apk@idmap +64772 2104 -1 /data/resource-cache/product@overlay@DisplayCutoutNoCutout@NoCutoutOverlay.apk@idmap +64772 2144 -1 /data/resource-cache/product@overlay@DisplayCutoutEmulationCorner@DisplayCutoutEmulationCornerOverlay.apk@idmap +64772 2177 -1 /data/resource-cache/product@overlay@DisplayCutoutEmulationDouble@DisplayCutoutEmulationDoubleOverlay.apk@idmap +64772 2218 -1 /data/resource-cache/product@overlay@NavigationBarModeGesturalWideBack@NavigationBarModeGesturalOverlayWideBack.apk@idmap +64772 2257 -1 /data/resource-cache/product@overlay@AccentColorCinnamon@AccentColorCinnamonOverlay.apk@idmap +64772 2287 -1 /data/resource-cache/product@overlay@IconPackRoundedSystemUI@IconPackRoundedSystemUIOverlay.apk@idmap +64772 2333 -1 /data/resource-cache/product@overlay@IconPackRoundedAndroid@IconPackRoundedAndroidOverlay.apk@idmap +64772 2371 -1 /data/resource-cache/product@overlay@DisplayCutoutEmulationTall@DisplayCutoutEmulationTallOverlay.apk@idmap +64772 2407 -1 /data/resource-cache/product@overlay@AccentColorBlack@AccentColorBlackOverlay.apk@idmap +64772 2444 -1 /data/resource-cache/product@overlay@AccentColorGreen@AccentColorGreenOverlay.apk@idmap +64772 2483 -1 /data/resource-cache/product@overlay@AccentColorOcean@AccentColorOceanOverlay.apk@idmap +64772 2520 -1 /data/resource-cache/product@overlay@AccentColorSpace@AccentColorSpaceOverlay.apk@idmap +64772 2559 -1 /data/resource-cache/product@overlay@NavigationBarMode3Button@NavigationBarMode3ButtonOverlay.apk@idmap +64772 2572 -1 /data/resource-cache/product@overlay@IconPackRoundedLauncher@IconPackRoundedLauncherOverlay.apk@idmap +64772 2620 -1 /data/resource-cache/product@overlay@NavigationBarMode2Button@NavigationBarMode2ButtonOverlay.apk@idmap +64772 2623 -1 /data/resource-cache/product@overlay@IconPackFilledSettings@IconPackFilledSettingsOverlay.apk@idmap +64772 2621 -1 /data/resource-cache/product@overlay@NavigationBarModeGesturalExtraWideBack@NavigationBarModeGesturalOverlayExtraWideBack.apk@idmap +64772 2624 -1 /data/resource-cache/product@overlay@IconPackCircularSettings@IconPackCircularSettingsOverlay.apk@idmap +64772 2625 -1 /data/resource-cache/product@overlay@IconShapeTeardrop@IconShapeTeardropOverlay.apk@idmap +64772 2626 -1 /data/resource-cache/product@overlay@IconPackFilledSystemUI@IconPackFilledSystemUIOverlay.apk@idmap +64772 9834 -1 /data/resource-cache/product@overlay@NfcNci__auto_generated_rro_product.apk@idmap +64772 2628 -1 /data/resource-cache/product@overlay@IconPackFilledAndroid@IconPackFilledAndroidOverlay.apk@idmap +64772 2629 -1 /data/resource-cache/product@overlay@IconPackCircularSystemUI@IconPackCircularSystemUIOverlay.apk@idmap +64772 2630 -1 /data/resource-cache/product@overlay@IconShapeSquircle@IconShapeSquircleOverlay.apk@idmap +64772 2631 -1 /data/resource-cache/product@overlay@IconPackFilledLauncher@IconPackFilledLauncherOverlay.apk@idmap +64772 2632 -1 /data/resource-cache/product@overlay@IconPackCircularLauncher@IconPackCircularLauncherOverlay.apk@idmap +64772 2633 -1 /data/resource-cache/product@overlay@NavigationBarModeGestural@NavigationBarModeGesturalOverlay.apk@idmap +64772 2634 -1 /data/resource-cache/product@overlay@AccentColorOrchid@AccentColorOrchidOverlay.apk@idmap +64772 2635 -1 /data/resource-cache/product@overlay@AccentColorPurple@AccentColorPurpleOverlay.apk@idmap +64772 2636 -1 /data/resource-cache/product@overlay@IconShapeRoundedRect@IconShapeRoundedRectOverlay.apk@idmap +64772 2637 -1 /data/resource-cache/product@overlay@NavigationBarModeGesturalNarrowBack@NavigationBarModeGesturalOverlayNarrowBack.apk@idmap +64772 2638 -1 /data/resource-cache/product@overlay@IconPackRoundedSettings@IconPackRoundedSettingsOverlay.apk@idmap +64772 2639 -1 /data/resource-cache/product@overlay@IconPackCircularAndroid@IconPackCircularAndroidOverlay.apk@idmap +64772 2622 -1 /data/resource-cache/product@overlay@GoogleConfigOverlay.apk@idmap +64772 2646 -1 /data/resource-cache/product@overlay@GoogleWebViewOverlay.apk@idmap +64772 2647 -1 /data/resource-cache/product@overlay@PixelConfigOverlayCommon.apk@idmap +64772 2648 -1 /data/resource-cache/product@overlay@framework-res__auto_generated_rro_product.apk@idmap +64772 2649 -1 /data/resource-cache/product@overlay@PixelConfigOverlay2018.apk@idmap +64772 9809 -1 /data/resource-cache/product@overlay@ContactsProvider__auto_generated_rro_product.apk@idmap +64772 9753 -1 /data/resource-cache/product@overlay@Telecom__auto_generated_rro_product.apk@idmap +64772 9829 -1 /data/resource-cache/product@overlay@SettingsProvider__auto_generated_rro_product.apk@idmap +64772 9843 -1 /data/resource-cache/product@overlay@TeleService__auto_generated_rro_product.apk@idmap +64772 9861 -1 /data/resource-cache/product@overlay@SafetyRegulatoryInfo__auto_generated_rro_product.apk@idmap +64772 9874 -1 /data/resource-cache/product@overlay@BuiltInPrintService__auto_generated_rro_product.apk@idmap +64772 9750 -1 /data/resource-cache/product@overlay@SimAppDialog__auto_generated_rro_product.apk@idmap +64772 9940 -1 /data/resource-cache/vendor@overlay@SystemUIGoogle__auto_generated_rro_vendor.apk@idmap +64772 4315 -1 /data/resource-cache/product@overlay@IconPackCircularPixelThemePicker@IconPackCircularPixelThemePickerOverlay.apk@idmap +64772 4548 -1 /data/resource-cache/product@overlay@IconPackRoundedPixelLauncher@IconPackRoundedPixelLauncherOverlay.apk@idmap +64772 4681 -1 /data/resource-cache/product@overlay@IconPackRoundedPixelThemePicker@IconPackRoundedPixelThemePickerOverlay.apk@idmap +64772 4683 -1 /data/resource-cache/product@overlay@FontArbutusSource@FontArbutusSourceOverlay.apk@idmap +64772 4684 -1 /data/resource-cache/product@overlay@FontRubikRubik@FontRubikRubikOverlay.apk@idmap +64772 4686 -1 /data/resource-cache/product@overlay@IconPackCircularPixelLauncher@IconPackCircularPixelLauncherOverlay.apk@idmap +64772 4687 -1 /data/resource-cache/product@overlay@IconPackFilledPixelThemePicker@IconPackFilledPixelThemePickerOverlay.apk@idmap +64772 9747 -1 /data/resource-cache/product@overlay@TelephonyProvider__auto_generated_rro_product.apk@idmap +64772 9938 -1 /data/resource-cache/product@overlay@SystemUIGoogle__auto_generated_rro_product.apk@idmap +64772 2651 -1 /data/resource-cache/product@overlay@GooglePermissionControllerOverlay.apk@idmap +64772 4680 -1 /data/resource-cache/product@overlay@PixelDocumentsUIGoogleOverlay@PixelDocumentsUIGoogleOverlay.apk@idmap +64772 4685 -1 /data/resource-cache/product@overlay@IconPackFilledPixelLauncher@IconPackFilledPixelLauncherOverlay.apk@idmap +64772 89 -1 /data/lost+found +64772 90 -1 /data/drm +64772 4923 -1 /data/drm/fwdlock +64772 4924 -1 /data/drm/fwdlock/kek.dat +64772 91 -1 /data/mediadrm +64772 92 -1 /data/anr +64772 93 -1 /data/nfc +64772 94 -1 /data/nfc/param +64772 3388 -1 /data/nfc/nfaStorage.bin1 +64772 95 -1 /data/backup +64772 3349 -1 /data/backup/pending +64772 3352 -1 /data/backup/pending/journal8896329097179617113.tmp +64772 1563 -1 /data/backup/pending/journal6181138908937329085.tmp +64772 6672 -1 /data/backup/pending/journal1779791434222939980.tmp +64772 6564 -1 /data/backup/pending/journal6393941947048230051.tmp +64772 1662 -1 /data/backup/fb-schedule +64772 6534 -1 /data/backup/backup_enabled +64772 3556 -1 /data/backup/com.android.localtransport.LocalTransport +64772 4792 -1 /data/backup/com.google.android.gms.backup.BackupTransportService +64772 5924 -1 /data/backup/d2dMigrateTransport +64772 96 -1 /data/ss +64772 97 -1 /data/system +64772 98 -1 /data/system/dropbox +64772 2654 -1 /data/system/dropbox/system_server_strictmode@1571007122148.txt +64772 2655 -1 /data/system/dropbox/system_server_strictmode@1571007122150.txt +64772 2656 -1 /data/system/dropbox/system_server_strictmode@1571007122151.txt +64772 2657 -1 /data/system/dropbox/system_server_strictmode@1571007122153.txt +64772 2672 -1 /data/system/dropbox/storage_trim@1571007123268.txt +64772 2673 -1 /data/system/dropbox/storage_trim@1571007123269.txt +64772 2690 -1 /data/system/dropbox/system_server_strictmode@1571007123507.txt +64772 2708 -1 /data/system/dropbox/system_server_strictmode@1571007123961.txt +64772 2709 -1 /data/system/dropbox/system_server_strictmode@1571007123962.txt +64772 2710 -1 /data/system/dropbox/system_server_strictmode@1571007123963.txt +64772 2711 -1 /data/system/dropbox/system_server_strictmode@1571007123964.txt +64772 2712 -1 /data/system/dropbox/system_server_strictmode@1571007123965.txt +64772 2713 -1 /data/system/dropbox/system_server_strictmode@1571007123966.txt +64772 2714 -1 /data/system/dropbox/system_server_strictmode@1571007123967.txt +64772 2715 -1 /data/system/dropbox/system_server_strictmode@1571007123968.txt +64772 2716 -1 /data/system/dropbox/system_server_strictmode@1571007123969.txt +64772 2717 -1 /data/system/dropbox/system_server_strictmode@1571007123970.txt +64772 2761 -1 /data/system/dropbox/system_server_strictmode@1571007124804.txt +64772 2762 -1 /data/system/dropbox/system_server_strictmode@1571007124806.txt +64772 2763 -1 /data/system/dropbox/system_server_strictmode@1571007124807.txt +64772 2793 -1 /data/system/dropbox/system_server_strictmode@1571007125540.txt +64772 2794 -1 /data/system/dropbox/system_server_strictmode@1571007125544.txt +64772 2795 -1 /data/system/dropbox/system_server_strictmode@1571007125549.txt +64772 2796 -1 /data/system/dropbox/system_server_strictmode@1571007125555.txt +64772 2798 -1 /data/system/dropbox/system_server_strictmode@1571007125560.txt +64772 2799 -1 /data/system/dropbox/system_server_strictmode@1571007125561.txt +64772 2800 -1 /data/system/dropbox/system_server_strictmode@1571007125562.txt +64772 2801 -1 /data/system/dropbox/system_server_strictmode@1571007125564.txt +64772 2802 -1 /data/system/dropbox/system_server_strictmode@1571007125566.txt +64772 2803 -1 /data/system/dropbox/system_server_strictmode@1571007125571.txt +64772 3336 -1 /data/system/dropbox/system_server_strictmode@1571007125983.txt +64772 3337 -1 /data/system/dropbox/system_server_strictmode@1571007125985.txt +64772 3342 -1 /data/system/dropbox/keymaster@1571007126017.dat +64772 3426 -1 /data/system/dropbox/system_app_strictmode@1571007127181.txt +64772 3427 -1 /data/system/dropbox/system_app_strictmode@1571007127183.txt +64772 3428 -1 /data/system/dropbox/system_app_strictmode@1571007127184.txt +64772 3429 -1 /data/system/dropbox/system_app_strictmode@1571007127185.txt +64772 3430 -1 /data/system/dropbox/system_app_strictmode@1571007127186.txt +64772 3437 -1 /data/system/dropbox/system_app_wtf@1571007127400.txt +64772 3517 -1 /data/system/dropbox/SYSTEM_BOOT@1571007128720.txt +64772 3522 -1 /data/system/dropbox/system_server_wtf@1571007128832.txt +64772 3523 -1 /data/system/dropbox/system_server_wtf@1571007128833.txt +64772 3545 -1 /data/system/dropbox/system_server_wtf@1571007129182.txt +64772 3546 -1 /data/system/dropbox/system_server_wtf@1571007129184.txt +64772 3570 -1 /data/system/dropbox/system_app_strictmode@1571007129867.txt +64772 3603 -1 /data/system/dropbox/system_server_strictmode@1571007133734.txt +64772 3604 -1 /data/system/dropbox/system_server_strictmode@1571007133737.txt +64772 3605 -1 /data/system/dropbox/system_server_strictmode@1571007133740.txt +64772 3606 -1 /data/system/dropbox/system_server_strictmode@1571007133742.txt +64772 3607 -1 /data/system/dropbox/system_server_strictmode@1571007133745.txt +64772 3608 -1 /data/system/dropbox/system_server_strictmode@1571007133747.txt +64772 174 -1 /data/system/dropbox/system_app_strictmode@1571007179824.txt +64772 176 -1 /data/system/dropbox/system_app_strictmode@1571007179826.txt +64772 198 -1 /data/system/dropbox/system_app_strictmode@1571007179828.txt +64772 199 -1 /data/system/dropbox/system_app_strictmode@1571007179829.txt +64772 391 -1 /data/system/dropbox/system_app_strictmode@1571007179830.txt +64772 210 -1 /data/system/dropbox/system_app_strictmode@1571007179831.txt +64772 986 -1 /data/system/dropbox/system_app_strictmode@1571007180529.txt +64772 990 -1 /data/system/dropbox/system_app_strictmode@1571007180532.txt +64772 1321 -1 /data/system/dropbox/system_app_strictmode@1571007180534.txt +64772 1330 -1 /data/system/dropbox/system_app_strictmode@1571007180535.txt +64772 1322 -1 /data/system/dropbox/system_app_strictmode@1571007180537.txt +64772 4689 -1 /data/system/dropbox/system_server_strictmode@1571007375524.txt +64772 4690 -1 /data/system/dropbox/system_server_strictmode@1571007375525.txt +64772 4691 -1 /data/system/dropbox/system_server_strictmode@1571007375526.txt +64772 4692 -1 /data/system/dropbox/system_server_strictmode@1571007375527.txt +64772 4908 -1 /data/system/dropbox/system_server_strictmode@1571007387147.txt +64772 4909 -1 /data/system/dropbox/system_server_strictmode@1571007387148.txt +64772 4910 -1 /data/system/dropbox/system_server_strictmode@1571007387149.txt +64772 4911 -1 /data/system/dropbox/system_server_strictmode@1571007387150.txt +64772 4912 -1 /data/system/dropbox/system_server_strictmode@1571007387151.txt +64772 4913 -1 /data/system/dropbox/system_server_strictmode@1571007387152.txt +64772 4914 -1 /data/system/dropbox/system_server_strictmode@1571007387153.txt +64772 4915 -1 /data/system/dropbox/system_server_strictmode@1571007387154.txt +64772 4916 -1 /data/system/dropbox/system_server_strictmode@1571007387155.txt +64772 4966 -1 /data/system/dropbox/system_server_strictmode@1571007388811.txt +64772 4968 -1 /data/system/dropbox/system_app_wtf@1571007388832.txt +64772 5037 -1 /data/system/dropbox/system_app_wtf@1571007389513.txt +64772 5056 -1 /data/system/dropbox/system_server_strictmode@1571007390041.txt +64772 5057 -1 /data/system/dropbox/system_server_strictmode@1571007390043.txt +64772 5058 -1 /data/system/dropbox/system_server_strictmode@1571007390044.txt +64772 5060 -1 /data/system/dropbox/system_server_strictmode@1571007390046.txt +64772 1539 -1 /data/system/dropbox/system_server_strictmode@1571007390589.txt +64772 2266 -1 /data/system/dropbox/system_server_strictmode@1571007392970.txt +64772 1818 -1 /data/system/dropbox/system_server_strictmode@1571007397631.txt +64772 1456 -1 /data/system/dropbox/system_server_strictmode@1571007397635.txt +64772 1463 -1 /data/system/dropbox/system_server_strictmode@1571007397637.txt +64772 1561 -1 /data/system/dropbox/event_log@1571007398581.txt +64772 6583 -1 /data/system/dropbox/system_server_strictmode@1571007516692.txt +64772 6584 -1 /data/system/dropbox/system_server_strictmode@1571007516693.txt +64772 6637 -1 /data/system/dropbox/system_server_strictmode@1571007519547.txt +64772 6638 -1 /data/system/dropbox/system_server_strictmode@1571007519548.txt +64772 6639 -1 /data/system/dropbox/system_server_strictmode@1571007519549.txt +64772 6663 -1 /data/system/dropbox/system_server_strictmode@1571007519955.txt +64772 6785 -1 /data/system/dropbox/system_server_strictmode@1571007524596.txt +64772 6797 -1 /data/system/dropbox/SYSTEM_BOOT@1571007525151.txt +64772 6954 -1 /data/system/dropbox/event_log@1571007534578.txt +64772 7280 -1 /data/system/dropbox/event_data@1571009317549.txt +64772 7650 -1 /data/system/dropbox/system_server_strictmode@1571011944761.txt +64772 7653 -1 /data/system/dropbox/system_server_strictmode@1571011944768.txt +64772 7656 -1 /data/system/dropbox/system_server_strictmode@1571011944774.txt +64772 7659 -1 /data/system/dropbox/system_server_strictmode@1571011944781.txt +64772 8122 -1 /data/system/dropbox/event_data@1571012935076.txt +64772 9173 -1 /data/system/dropbox/event_data@1571017732922.txt +64772 9209 -1 /data/system/dropbox/system_server_strictmode@1571018434905.txt +64772 9267 -1 /data/system/dropbox/event_data@1571020117579.txt +64772 9451 -1 /data/system/dropbox/event_data@1571025569844.txt +64772 9596 -1 /data/system/dropbox/event_data@1571029147050.txt +64772 9610 -1 /data/system/dropbox/system_server_strictmode@1571029714869.txt +64772 9611 -1 /data/system/dropbox/system_server_strictmode@1571029714873.txt +64772 9612 -1 /data/system/dropbox/system_server_strictmode@1571029714876.txt +64772 9695 -1 /data/system/dropbox/event_data@1571030970402.txt +64772 9819 -1 /data/system/dropbox/event_data@1571034570803.txt +64772 9885 -1 /data/system/dropbox/event_data@1571036370989.txt +64772 2588 -1 /data/system/dropbox/event_data@1571039971178.txt +64772 6708 -1 /data/system/dropbox/event_data@1571044807176.txt +64772 4995 -1 /data/system/dropbox/system_server_strictmode@1571040994884.txt +64772 5804 -1 /data/system/dropbox/event_data@1571047891874.txt +64772 7019 -1 /data/system/dropbox/event_data@1571050722739.txt +64772 7186 -1 /data/system/dropbox/system_server_strictmode@1571052214866.txt +64772 6405 -1 /data/system/dropbox/system_server_strictmode@1571052214872.txt +64772 6407 -1 /data/system/dropbox/system_server_strictmode@1571052214874.txt +64772 7234 -1 /data/system/dropbox/event_data@1571052523716.txt +64772 8106 -1 /data/system/dropbox/system_server_strictmode@1571063393129.txt +64772 8108 -1 /data/system/dropbox/system_server_strictmode@1571063393130.txt +64772 4848 -1 /data/system/dropbox/event_data@1571070597907.txt +64772 8948 -1 /data/system/dropbox/event_data@1571072398269.txt +64772 4751 -1 /data/system/dropbox/system_server_strictmode@1571074242346.txt +64772 4752 -1 /data/system/dropbox/system_server_strictmode@1571074242347.txt +64772 9083 -1 /data/system/dropbox/event_data@1571074242522.txt +64772 9229 -1 /data/system/dropbox/event_data@1571078082659.txt +64772 9361 -1 /data/system/dropbox/event_data@1571081683053.txt +64772 9341 -1 /data/system/dropbox/system_server_strictmode@1571085274856.txt +64772 9342 -1 /data/system/dropbox/system_server_strictmode@1571085274858.txt +64772 9541 -1 /data/system/dropbox/system_server_strictmode@1571086177078.txt +64772 9662 -1 /data/system/dropbox/system_server_wtf@1571086207336.txt +64772 9876 -1 /data/system/dropbox/system_server_strictmode@1571086298986.txt +64772 4931 -1 /data/system/dropbox/system_server_strictmode@1571086298988.txt +64772 9989 -1 /data/system/dropbox/system_server_lowmem@1571086300453.txt.gz +64772 1531 -1 /data/system/dropbox/system_app_wtf@1571086301489.txt +64772 1533 -1 /data/system/dropbox/system_server_strictmode@1571086301821.txt +64772 1534 -1 /data/system/dropbox/system_server_strictmode@1571086301822.txt +64772 5529 -1 /data/system/dropbox/system_server_strictmode@1571086301823.txt +64772 6607 -1 /data/system/dropbox/system_server_strictmode@1571086301825.txt +64772 6647 -1 /data/system/dropbox/system_server_strictmode@1571086301826.txt +64772 6661 -1 /data/system/dropbox/system_server_strictmode@1571086301827.txt +64772 2123 -1 /data/system/dropbox/system_server_strictmode@1571086301828.txt +64772 1642 -1 /data/system/dropbox/system_server_strictmode@1571086301829.txt +64772 1570 -1 /data/system/dropbox/system_server_strictmode@1571086301830.txt +64772 6692 -1 /data/system/dropbox/system_server_strictmode@1571086302186.txt +64772 6567 -1 /data/system/dropbox/keymaster@1571086302518.dat +64772 6753 -1 /data/system/dropbox/SYSTEM_RESTART@1571086306257.txt +64772 7277 -1 /data/system/dropbox/system_server_wtf@1571086471890.txt +64772 7421 -1 /data/system/dropbox/system_server_wtf@1571086508761.txt +64772 7193 -1 /data/system/dropbox/system_server_wtf@1571086573792.txt +64772 7470 -1 /data/system/dropbox/system_server_wtf@1571086588023.txt +64772 4917 -1 /data/system/dropbox/system_server_strictmode@1571007387156.txt +64772 4965 -1 /data/system/dropbox/system_server_strictmode@1571007388810.txt +64772 4967 -1 /data/system/dropbox/system_server_strictmode@1571007388814.txt +64772 5050 -1 /data/system/dropbox/system_server_strictmode@1571007390025.txt +64772 5051 -1 /data/system/dropbox/system_server_strictmode@1571007390027.txt +64772 5052 -1 /data/system/dropbox/system_server_strictmode@1571007390032.txt +64772 5059 -1 /data/system/dropbox/system_server_strictmode@1571007390045.txt +64772 5061 -1 /data/system/dropbox/system_server_strictmode@1571007390047.txt +64772 5062 -1 /data/system/dropbox/system_server_strictmode@1571007390048.txt +64772 1540 -1 /data/system/dropbox/system_server_strictmode@1571007390594.txt +64772 1816 -1 /data/system/dropbox/system_server_strictmode@1571007397630.txt +64772 1817 -1 /data/system/dropbox/system_server_strictmode@1571007397632.txt +64772 1640 -1 /data/system/dropbox/system_server_strictmode@1571007397633.txt +64772 1411 -1 /data/system/dropbox/system_server_strictmode@1571007397634.txt +64772 1406 -1 /data/system/dropbox/system_server_strictmode@1571007397636.txt +64772 4500 -1 /data/system/dropbox/SYSTEM_BOOT@1571007398942.txt +64772 6582 -1 /data/system/dropbox/system_server_strictmode@1571007516691.txt +64772 6585 -1 /data/system/dropbox/system_server_strictmode@1571007516694.txt +64772 6610 -1 /data/system/dropbox/system_app_wtf@1571007518210.txt +64772 6633 -1 /data/system/dropbox/system_app_wtf@1571007519195.txt +64772 6640 -1 /data/system/dropbox/system_server_strictmode@1571007519550.txt +64772 6641 -1 /data/system/dropbox/system_server_strictmode@1571007519552.txt +64772 6642 -1 /data/system/dropbox/system_server_strictmode@1571007519554.txt +64772 6643 -1 /data/system/dropbox/system_server_strictmode@1571007519556.txt +64772 6644 -1 /data/system/dropbox/system_server_strictmode@1571007519558.txt +64772 6645 -1 /data/system/dropbox/system_server_strictmode@1571007519560.txt +64772 6648 -1 /data/system/dropbox/system_server_strictmode@1571007519563.txt +64772 6662 -1 /data/system/dropbox/system_server_strictmode@1571007519954.txt +64772 7144 -1 /data/system/dropbox/system_server_wtf@1571007651242.txt +64772 7388 -1 /data/system/dropbox/event_data@1571011134894.txt +64772 7651 -1 /data/system/dropbox/system_server_strictmode@1571011944764.txt +64772 7652 -1 /data/system/dropbox/system_server_strictmode@1571011944766.txt +64772 7654 -1 /data/system/dropbox/system_server_strictmode@1571011944770.txt +64772 7655 -1 /data/system/dropbox/system_server_strictmode@1571011944772.txt +64772 7657 -1 /data/system/dropbox/system_server_strictmode@1571011944777.txt +64772 7658 -1 /data/system/dropbox/system_server_strictmode@1571011944779.txt +64772 9077 -1 /data/system/dropbox/event_data@1571014735265.txt +64772 9210 -1 /data/system/dropbox/system_server_strictmode@1571018434907.txt +64772 9211 -1 /data/system/dropbox/system_server_strictmode@1571018434909.txt +64772 9212 -1 /data/system/dropbox/system_server_strictmode@1571018434911.txt +64772 9334 -1 /data/system/dropbox/event_data@1571021969494.txt +64772 9391 -1 /data/system/dropbox/event_data@1571023769674.txt +64772 9511 -1 /data/system/dropbox/event_data@1571027370035.txt +64772 9613 -1 /data/system/dropbox/system_server_strictmode@1571029714878.txt +64772 9754 -1 /data/system/dropbox/event_data@1571032770591.txt +64772 9950 -1 /data/system/dropbox/event_data@1571038330625.txt +64772 4933 -1 /data/system/dropbox/system_server_strictmode@1571040994875.txt +64772 4956 -1 /data/system/dropbox/system_server_strictmode@1571040994878.txt +64772 4988 -1 /data/system/dropbox/system_server_strictmode@1571040994881.txt +64772 6679 -1 /data/system/dropbox/event_data@1571043006923.txt +64772 6403 -1 /data/system/dropbox/system_server_strictmode@1571052214869.txt +64772 7315 -1 /data/system/dropbox/event_data@1571054392714.txt +64772 7326 -1 /data/system/dropbox/event_data@1571056192927.txt +64772 7376 -1 /data/system/dropbox/system_server_strictmode@1571063393127.txt +64772 7379 -1 /data/system/dropbox/system_server_strictmode@1571063393128.txt +64772 8352 -1 /data/system/dropbox/event_data@1571065892596.txt +64772 8503 -1 /data/system/dropbox/event_data@1571068797643.txt +64772 4787 -1 /data/system/dropbox/system_server_strictmode@1571074242344.txt +64772 4894 -1 /data/system/dropbox/system_server_strictmode@1571074242348.txt +64772 9112 -1 /data/system/dropbox/event_data@1571076042771.txt +64772 9269 -1 /data/system/dropbox/event_data@1571079882842.txt +64772 9422 -1 /data/system/dropbox/event_data@1571083483249.txt +64772 9340 -1 /data/system/dropbox/system_server_strictmode@1571085274854.txt +64772 9477 -1 /data/system/dropbox/system_server_strictmode@1571085274860.txt +64772 9440 -1 /data/system/dropbox/event_data@1571085295093.txt +64772 9540 -1 /data/system/dropbox/system_server_strictmode@1571086177075.txt +64772 9539 -1 /data/system/dropbox/system_server_strictmode@1571086177079.txt +64772 9975 -1 /data/system/dropbox/system_server_strictmode@1571086298987.txt +64772 4932 -1 /data/system/dropbox/system_server_strictmode@1571086298989.txt +64772 6598 -1 /data/system/dropbox/system_app_wtf@1571086300593.txt +64772 6606 -1 /data/system/dropbox/system_server_strictmode@1571086301824.txt +64772 6376 -1 /data/system/dropbox/system_server_strictmode@1571086302189.txt +64772 6044 -1 /data/system/dropbox/system_server_strictmode@1571086309409.txt +64772 6720 -1 /data/system/dropbox/system_server_wtf@1571086498138.txt +64772 7428 -1 /data/system/dropbox/system_server_wtf@1571086545359.txt +64772 7443 -1 /data/system/dropbox/system_server_wtf@1571086556037.txt +64772 7358 -1 /data/system/dropbox/system_server_wtf@1571086559577.txt +64772 5524 -1 /data/system/dropbox/system_server_wtf@1571086570265.txt +64772 7552 -1 /data/system/dropbox/system_server_wtf@1571086602805.txt +64772 7469 -1 /data/system/dropbox/system_server_wtf@1571086627738.txt +64772 7493 -1 /data/system/dropbox/system_server_wtf@1571086759408.txt +64772 8208 -1 /data/system/dropbox/system_server_wtf@1571087008177.txt +64772 8223 -1 /data/system/dropbox/system_server_wtf@1571087050627.txt +64772 8521 -1 /data/system/dropbox/system_server_wtf@1571087115584.txt +64772 8528 -1 /data/system/dropbox/system_server_wtf@1571087126189.txt +64772 8504 -1 /data/system/dropbox/system_server_wtf@1571087149004.txt +64772 8835 -1 /data/system/dropbox/system_server_wtf@1571087388898.txt +64772 8585 -1 /data/system/dropbox/system_server_wtf@1571087427629.txt +64772 8586 -1 /data/system/dropbox/system_server_wtf@1571087438384.txt +64772 9096 -1 /data/system/dropbox/system_server_wtf@1571087652889.txt +64772 9102 -1 /data/system/dropbox/system_server_wtf@1571087666216.txt +64772 9069 -1 /data/system/dropbox/system_server_wtf@1571087677008.txt +64772 8891 -1 /data/system/dropbox/system_server_wtf@1571087750044.txt +64772 9157 -1 /data/system/dropbox/system_server_wtf@1571087775158.txt +64772 9183 -1 /data/system/dropbox/system_server_wtf@1571087800750.txt +64772 9156 -1 /data/system/dropbox/system_server_wtf@1571087867065.txt +64772 9240 -1 /data/system/dropbox/system_server_wtf@1571088041504.txt +64772 9275 -1 /data/system/dropbox/system_server_wtf@1571088056961.txt +64772 9219 -1 /data/system/dropbox/system_server_wtf@1571088076568.txt +64772 9306 -1 /data/system/dropbox/system_server_wtf@1571088087481.txt +64772 9405 -1 /data/system/dropbox/system_server_wtf@1571089554709.txt +64772 9473 -1 /data/system/dropbox/system_server_wtf@1571089605544.txt +64772 7163 -1 /data/system/dropbox/system_server_wtf@1571089634535.txt +64772 9522 -1 /data/system/dropbox/system_server_wtf@1571089674366.txt +64772 1441 -1 /data/system/dropbox/system_server_wtf@1571089791187.txt +64772 1401 -1 /data/system/dropbox/system_server_wtf@1571089802118.txt +64772 4729 -1 /data/system/dropbox/system_server_wtf@1571089829463.txt +64772 3392 -1 /data/system/dropbox/system_server_wtf@1571091424830.txt +64772 3453 -1 /data/system/dropbox/system_server_wtf@1571091477133.txt +64772 3683 -1 /data/system/dropbox/system_server_wtf@1571091898475.txt +64772 3706 -1 /data/system/dropbox/system_server_wtf@1571091916572.txt +64772 3719 -1 /data/system/dropbox/system_server_wtf@1571092134465.txt +64772 6717 -1 /data/system/dropbox/event_data@1571096097687.txt +64772 7160 -1 /data/system/dropbox/event_data@1571104615630.txt +64772 7255 -1 /data/system/dropbox/system_server_strictmode@1571108215262.txt +64772 8150 -1 /data/system/dropbox/system_server_strictmode@1571119110273.txt +64772 8135 -1 /data/system/dropbox/event_data@1571119110809.txt +64772 8547 -1 /data/system/dropbox/event_data@1571122712618.txt +64772 8591 -1 /data/system/dropbox/event_data@1571124512668.txt +64772 9168 -1 /data/system/dropbox/system_server_strictmode@1571129913304.txt +64772 9176 -1 /data/system/dropbox/system_server_strictmode@1571129913310.txt +64772 9322 -1 /data/system/dropbox/event_data@1571133516409.txt +64772 1464 -1 /data/system/dropbox/event_data@1571137348227.txt +64772 6541 -1 /data/system/dropbox/event_data@1571140948312.txt +64772 3769 -1 /data/system/dropbox/event_data@1571146350196.txt +64772 6616 -1 /data/system/dropbox/system_server_strictmode@1571151750809.txt +64772 6674 -1 /data/system/dropbox/system_server_strictmode@1571151750810.txt +64772 7124 -1 /data/system/dropbox/system_server_strictmode@1571162556728.txt +64772 7185 -1 /data/system/dropbox/event_data@1571162557266.txt +64772 7090 -1 /data/system/dropbox/event_data@1571169760163.txt +64772 9337 -1 /data/system/dropbox/event_data@1571181095013.txt +64772 4704 -1 /data/system/dropbox/system_server_strictmode@1571184694855.txt +64772 6602 -1 /data/system/dropbox/event_data@1571195589472.txt +64772 7967 -1 /data/system/dropbox/event_data@1571197389738.txt +64772 6590 -1 /data/system/dropbox/event_data@1571199189995.txt +64772 6380 -1 /data/system/dropbox/event_data@1571202790670.txt +64772 6981 -1 /data/system/dropbox/system_server_strictmode@1571207434853.txt +64772 7219 -1 /data/system/dropbox/system_server_strictmode@1571207434854.txt +64772 7279 -1 /data/system/dropbox/event_data@1571209991766.txt +64772 4801 -1 /data/system/dropbox/system_server_strictmode@1571218533817.txt +64772 8068 -1 /data/system/dropbox/event_data@1571229790939.txt +64772 9202 -1 /data/system/dropbox/event_data@1571231591088.txt +64772 6498 -1 /data/system/dropbox/event_data@1571233391387.txt +64772 9555 -1 /data/system/dropbox/event_data@1571236992121.txt +64772 2766 -1 /data/system/dropbox/system_server_strictmode@1571240592388.txt +64772 9988 -1 /data/system/dropbox/event_data@1571247793466.txt +64772 6722 -1 /data/system/dropbox/SYSTEM_TOMBSTONE@1571251360819.txt.gz +64772 6864 -1 /data/system/dropbox/system_server_strictmode@1571251393735.txt +64772 9689 -1 /data/system/dropbox/SYSTEM_TOMBSTONE@1571254412205.txt.gz +64772 6804 -1 /data/system/dropbox/event_data@1571254994301.txt +64772 7414 -1 /data/system/dropbox/system_server_wtf@1571086584472.txt +64772 7448 -1 /data/system/dropbox/system_server_wtf@1571086617079.txt +64772 7478 -1 /data/system/dropbox/system_server_wtf@1571086634357.txt +64772 7591 -1 /data/system/dropbox/system_server_wtf@1571086645055.txt +64772 7575 -1 /data/system/dropbox/system_server_wtf@1571086659355.txt +64772 7335 -1 /data/system/dropbox/system_server_wtf@1571086673625.txt +64772 8188 -1 /data/system/dropbox/system_server_wtf@1571086997503.txt +64772 8438 -1 /data/system/dropbox/system_server_wtf@1571087031898.txt +64772 8469 -1 /data/system/dropbox/system_server_wtf@1571087078106.txt +64772 8424 -1 /data/system/dropbox/system_server_wtf@1571087085978.txt +64772 8508 -1 /data/system/dropbox/system_server_wtf@1571087096683.txt +64772 8448 -1 /data/system/dropbox/system_server_wtf@1571087159700.txt +64772 4841 -1 /data/system/dropbox/system_server_wtf@1571087261025.txt +64772 8613 -1 /data/system/dropbox/system_server_wtf@1571087286428.txt +64772 8652 -1 /data/system/dropbox/system_server_wtf@1571087299932.txt +64772 8636 -1 /data/system/dropbox/system_server_wtf@1571087327877.txt +64772 4879 -1 /data/system/dropbox/system_server_wtf@1571087364140.txt +64772 4872 -1 /data/system/dropbox/system_server_wtf@1571087624227.txt +64772 9119 -1 /data/system/dropbox/system_server_wtf@1571087689332.txt +64772 9075 -1 /data/system/dropbox/system_server_wtf@1571087725239.txt +64772 4788 -1 /data/system/dropbox/system_server_wtf@1571087739183.txt +64772 9135 -1 /data/system/dropbox/system_server_wtf@1571087815223.txt +64772 9182 -1 /data/system/dropbox/system_server_wtf@1571087826088.txt +64772 9085 -1 /data/system/dropbox/system_server_wtf@1571087856212.txt +64772 9191 -1 /data/system/dropbox/system_server_wtf@1571087983186.txt +64772 9089 -1 /data/system/dropbox/system_server_wtf@1571087994009.txt +64772 9263 -1 /data/system/dropbox/system_server_wtf@1571088017086.txt +64772 9205 -1 /data/system/dropbox/system_server_wtf@1571088113849.txt +64772 9349 -1 /data/system/dropbox/system_server_wtf@1571088154984.txt +64772 9442 -1 /data/system/dropbox/system_server_wtf@1571089569304.txt +64772 9517 -1 /data/system/dropbox/system_server_wtf@1571089616346.txt +64772 7216 -1 /data/system/dropbox/system_server_wtf@1571089620064.txt +64772 7217 -1 /data/system/dropbox/system_server_wtf@1571089645383.txt +64772 7169 -1 /data/system/dropbox/system_server_wtf@1571089649041.txt +64772 9486 -1 /data/system/dropbox/system_server_wtf@1571089677981.txt +64772 9534 -1 /data/system/dropbox/system_server_wtf@1571089688831.txt +64772 4826 -1 /data/system/dropbox/system_server_wtf@1571089809942.txt +64772 3334 -1 /data/system/dropbox/system_server_wtf@1571091413920.txt +64772 3465 -1 /data/system/dropbox/system_server_wtf@1571091532033.txt +64772 3697 -1 /data/system/dropbox/system_server_wtf@1571091905603.txt +64772 6698 -1 /data/system/dropbox/system_server_strictmode@1571097252738.txt +64772 7093 -1 /data/system/dropbox/system_server_strictmode@1571108215263.txt +64772 7071 -1 /data/system/dropbox/system_server_strictmode@1571108215264.txt +64772 7262 -1 /data/system/dropbox/event_data@1571108215785.txt +64772 8154 -1 /data/system/dropbox/system_server_strictmode@1571119110271.txt +64772 8145 -1 /data/system/dropbox/system_server_strictmode@1571119110274.txt +64772 8162 -1 /data/system/dropbox/system_server_strictmode@1571119110275.txt +64772 8869 -1 /data/system/dropbox/event_data@1571128113667.txt +64772 8716 -1 /data/system/dropbox/system_server_strictmode@1571140947616.txt +64772 9362 -1 /data/system/dropbox/event_data@1571142748246.txt +64772 9730 -1 /data/system/dropbox/event_data@1571148153215.txt +64772 3763 -1 /data/system/dropbox/event_data@1571149951606.txt +64772 6976 -1 /data/system/dropbox/event_data@1571158957164.txt +64772 7254 -1 /data/system/dropbox/system_server_strictmode@1571162556725.txt +64772 8291 -1 /data/system/dropbox/system_server_strictmode@1571173359831.txt +64772 4735 -1 /data/system/dropbox/event_data@1571175814108.txt +64772 9454 -1 /data/system/dropbox/system_server_strictmode@1571184694848.txt +64772 6577 -1 /data/system/dropbox/event_data@1571186614879.txt +64772 9703 -1 /data/system/dropbox/system_server_strictmode@1571196154847.txt +64772 3717 -1 /data/system/dropbox/system_server_strictmode@1571196154851.txt +64772 3718 -1 /data/system/dropbox/system_server_strictmode@1571196154852.txt +64772 9479 -1 /data/system/dropbox/event_data@1571204590951.txt +64772 5773 -1 /data/system/dropbox/system_server_strictmode@1571207434851.txt +64772 7081 -1 /data/system/dropbox/event_data@1571216709961.txt +64772 7086 -1 /data/system/dropbox/event_data@1571220789386.txt +64772 7533 -1 /data/system/dropbox/event_data@1571222589794.txt +64772 9071 -1 /data/system/dropbox/system_server_strictmode@1571229514857.txt +64772 6604 -1 /data/system/dropbox/system_server_strictmode@1571229514860.txt +64772 9368 -1 /data/system/dropbox/event_data@1571235191844.txt +64772 7359 -1 /data/system/dropbox/system_server_strictmode@1571240592385.txt +64772 4790 -1 /data/system/dropbox/system_server_strictmode@1571240592387.txt +64772 3681 -1 /data/system/dropbox/event_data@1571245993210.txt +64772 3728 -1 /data/system/dropbox/event_data@1571249593572.txt +64772 3586 -1 /data/system/dropbox/system_server_strictmode@1571251393736.txt +64772 9471 -1 /data/system/dropbox/system_server_strictmode@1571251393737.txt +64772 9503 -1 /data/system/dropbox/event_data@1571251393886.txt +64772 6762 -1 /data/system/dropbox/event_data@1571253193954.txt +64772 7386 -1 /data/system/dropbox/system_server_strictmode@1571263672058.txt +64772 5535 -1 /data/system/dropbox/system_server_strictmode@1571263672060.txt +64772 3667 -1 /data/system/dropbox/system_server_strictmode@1571263672062.txt +64772 7630 -1 /data/system/dropbox/event_data@1571264632465.txt +64772 7545 -1 /data/system/dropbox/system_server_wtf@1571086598729.txt +64772 6940 -1 /data/system/dropbox/system_server_wtf@1571086613487.txt +64772 7583 -1 /data/system/dropbox/system_server_wtf@1571086648597.txt +64772 6075 -1 /data/system/dropbox/system_server_wtf@1571086770076.txt +64772 7942 -1 /data/system/dropbox/system_server_wtf@1571087017478.txt +64772 8435 -1 /data/system/dropbox/system_server_wtf@1571087028266.txt +64772 8446 -1 /data/system/dropbox/system_server_wtf@1571087042579.txt +64772 8451 -1 /data/system/dropbox/system_server_wtf@1571087061386.txt +64772 8288 -1 /data/system/dropbox/system_server_wtf@1571087067418.txt +64772 8511 -1 /data/system/dropbox/system_server_wtf@1571087101259.txt +64772 8518 -1 /data/system/dropbox/system_server_wtf@1571087111969.txt +64772 8514 -1 /data/system/dropbox/system_server_wtf@1571087132685.txt +64772 8532 -1 /data/system/dropbox/system_server_wtf@1571087143414.txt +64772 8592 -1 /data/system/dropbox/system_server_wtf@1571087197048.txt +64772 8118 -1 /data/system/dropbox/system_server_wtf@1571087207778.txt +64772 1454 -1 /data/system/dropbox/system_server_wtf@1571087224694.txt +64772 8500 -1 /data/system/dropbox/system_server_wtf@1571087250280.txt +64772 8098 -1 /data/system/dropbox/system_server_wtf@1571087353373.txt +64772 8982 -1 /data/system/dropbox/system_server_wtf@1571087402815.txt +64772 9026 -1 /data/system/dropbox/system_server_wtf@1571087413576.txt +64772 1367 -1 /data/system/dropbox/system_server_wtf@1571087613392.txt +64772 8955 -1 /data/system/dropbox/system_server_wtf@1571087642050.txt +64772 9065 -1 /data/system/dropbox/system_server_wtf@1571087700118.txt +64772 9125 -1 /data/system/dropbox/system_server_wtf@1571087714382.txt +64772 9103 -1 /data/system/dropbox/system_server_wtf@1571087764295.txt +64772 9129 -1 /data/system/dropbox/system_server_wtf@1571087852221.txt +64772 9078 -1 /data/system/dropbox/system_server_wtf@1571087873657.txt +64772 9114 -1 /data/system/dropbox/system_server_wtf@1571088067794.txt +64772 7231 -1 /data/system/dropbox/system_server_wtf@1571088129849.txt +64772 9453 -1 /data/system/dropbox/system_server_wtf@1571089538151.txt +64772 9399 -1 /data/system/dropbox/system_server_wtf@1571089549052.txt +64772 9436 -1 /data/system/dropbox/system_server_wtf@1571089580115.txt +64772 9434 -1 /data/system/dropbox/system_server_wtf@1571089596911.txt +64772 7197 -1 /data/system/dropbox/system_server_wtf@1571089659850.txt +64772 4711 -1 /data/system/dropbox/system_server_wtf@1571089820865.txt +64772 4740 -1 /data/system/dropbox/system_server_wtf@1571089840398.txt +64772 3646 -1 /data/system/dropbox/system_server_wtf@1571091886986.txt +64772 3732 -1 /data/system/dropbox/system_server_wtf@1571092145971.txt +64772 3700 -1 /data/system/dropbox/event_data@1571093526538.txt +64772 5666 -1 /data/system/dropbox/system_server_strictmode@1571097252734.txt +64772 7003 -1 /data/system/dropbox/event_data@1571102814739.txt +64772 2490 -1 /data/system/dropbox/event_data@1571106415690.txt +64772 7200 -1 /data/system/dropbox/system_server_strictmode@1571108215261.txt +64772 7613 -1 /data/system/dropbox/event_data@1571113617817.txt +64772 4702 -1 /data/system/dropbox/event_data@1571115510700.txt +64772 1413 -1 /data/system/dropbox/event_data@1571117310651.txt +64772 8824 -1 /data/system/dropbox/event_data@1571126313658.txt +64772 9133 -1 /data/system/dropbox/system_server_strictmode@1571129913306.txt +64772 9136 -1 /data/system/dropbox/system_server_strictmode@1571129913308.txt +64772 9151 -1 /data/system/dropbox/event_data@1571129914069.txt +64772 9392 -1 /data/system/dropbox/event_data@1571135547381.txt +64772 9549 -1 /data/system/dropbox/event_data@1571139147976.txt +64772 2698 -1 /data/system/dropbox/system_server_strictmode@1571140947618.txt +64772 2701 -1 /data/system/dropbox/system_server_strictmode@1571140947619.txt +64772 2721 -1 /data/system/dropbox/system_server_strictmode@1571140947620.txt +64772 6549 -1 /data/system/dropbox/event_data@1571157156070.txt +64772 7116 -1 /data/system/dropbox/event_data@1571160757091.txt +64772 6998 -1 /data/system/dropbox/system_server_strictmode@1571162556726.txt +64772 7314 -1 /data/system/dropbox/event_data@1571164357189.txt +64772 7440 -1 /data/system/dropbox/event_data@1571166159168.txt +64772 7465 -1 /data/system/dropbox/event_data@1571167959144.txt +64772 8449 -1 /data/system/dropbox/system_server_strictmode@1571173359823.txt +64772 8295 -1 /data/system/dropbox/system_server_strictmode@1571173359826.txt +64772 8218 -1 /data/system/dropbox/system_server_strictmode@1571173359829.txt +64772 8507 -1 /data/system/dropbox/event_data@1571173360822.txt +64772 9286 -1 /data/system/dropbox/event_data@1571183014901.txt +64772 9319 -1 /data/system/dropbox/event_data@1571184814773.txt +64772 9704 -1 /data/system/dropbox/system_server_strictmode@1571196154849.txt +64772 6873 -1 /data/system/dropbox/event_data@1571200990268.txt +64772 5670 -1 /data/system/dropbox/event_data@1571206391211.txt +64772 6995 -1 /data/system/dropbox/system_server_strictmode@1571207434855.txt +64772 6987 -1 /data/system/dropbox/event_data@1571208191492.txt +64772 1373 -1 /data/system/dropbox/system_server_strictmode@1571218533810.txt +64772 1453 -1 /data/system/dropbox/system_server_strictmode@1571218533812.txt +64772 6048 -1 /data/system/dropbox/event_data@1571226190461.txt +64772 9446 -1 /data/system/dropbox/event_data@1571238792173.txt +64772 3676 -1 /data/system/dropbox/event_data@1571244192935.txt +64772 7269 -1 /data/system/dropbox/event_data@1571256794395.txt +64772 7317 -1 /data/system/dropbox/system_server_strictmode@1571259562758.txt +64772 7055 -1 /data/system/dropbox/event_data@1571260924042.txt +64772 7444 -1 /data/system/dropbox/event_data@1571262831290.txt +64772 5345 -1 /data/system/dropbox/system_server_wtf@1571086662849.txt +64772 8544 -1 /data/system/dropbox/event_data@1571087216316.txt +64772 8599 -1 /data/system/dropbox/system_server_wtf@1571087235411.txt +64772 1336 -1 /data/system/dropbox/system_server_wtf@1571087275724.txt +64772 8683 -1 /data/system/dropbox/system_server_wtf@1571087310649.txt +64772 4855 -1 /data/system/dropbox/system_server_wtf@1571087338629.txt +64772 8781 -1 /data/system/dropbox/system_server_wtf@1571087378145.txt +64772 9605 -1 /data/system/dropbox/system_server_wtf@1571087789863.txt +64772 9138 -1 /data/system/dropbox/system_server_wtf@1571087841350.txt +64772 9149 -1 /data/system/dropbox/system_server_wtf@1571087884503.txt +64772 9228 -1 /data/system/dropbox/system_server_wtf@1571087958946.txt +64772 9203 -1 /data/system/dropbox/system_server_wtf@1571087969724.txt +64772 9258 -1 /data/system/dropbox/system_server_wtf@1571088006295.txt +64772 9249 -1 /data/system/dropbox/system_server_wtf@1571088030686.txt +64772 9287 -1 /data/system/dropbox/system_server_wtf@1571088102983.txt +64772 9237 -1 /data/system/dropbox/system_server_wtf@1571088140769.txt +64772 9271 -1 /data/system/dropbox/system_server_wtf@1571088165904.txt +64772 9367 -1 /data/system/dropbox/event_data@1571089413629.txt +64772 4138 -1 /data/system/dropbox/system_server_wtf@1571089565531.txt +64772 9424 -1 /data/system/dropbox/system_server_wtf@1571089586108.txt +64772 9526 -1 /data/system/dropbox/system_server_wtf@1571089630898.txt +64772 6373 -1 /data/system/dropbox/system_server_wtf@1571089663484.txt +64772 6569 -1 /data/system/dropbox/system_server_wtf@1571089774266.txt +64772 1368 -1 /data/system/dropbox/system_server_wtf@1571089785157.txt +64772 3012 -1 /data/system/dropbox/event_data@1571091214118.txt +64772 3401 -1 /data/system/dropbox/system_server_wtf@1571091466186.txt +64772 6700 -1 /data/system/dropbox/system_server_strictmode@1571097252736.txt +64772 6699 -1 /data/system/dropbox/system_server_strictmode@1571097252739.txt +64772 6872 -1 /data/system/dropbox/event_data@1571099182589.txt +64772 6527 -1 /data/system/dropbox/event_data@1571101014620.txt +64772 6742 -1 /data/system/dropbox/event_data@1571110015778.txt +64772 7459 -1 /data/system/dropbox/event_data@1571111817635.txt +64772 8225 -1 /data/system/dropbox/event_data@1571120910756.txt +64772 9297 -1 /data/system/dropbox/event_data@1571131714134.txt +64772 3610 -1 /data/system/dropbox/event_data@1571144550195.txt +64772 9948 -1 /data/system/dropbox/system_server_strictmode@1571151750807.txt +64772 6659 -1 /data/system/dropbox/system_server_strictmode@1571151750808.txt +64772 6688 -1 /data/system/dropbox/event_data@1571151751953.txt +64772 5859 -1 /data/system/dropbox/event_data@1571153551402.txt +64772 2152 -1 /data/system/dropbox/event_data@1571155356029.txt +64772 4937 -1 /data/system/dropbox/system_server_strictmode@1571162556724.txt +64772 7246 -1 /data/system/dropbox/event_data@1571171560409.txt +64772 8771 -1 /data/system/dropbox/event_data@1571177614621.txt +64772 9041 -1 /data/system/dropbox/event_data@1571179414739.txt +64772 2878 -1 /data/system/dropbox/event_data@1571188900019.txt +64772 1461 -1 /data/system/dropbox/system_server_strictmode@1571184694852.txt +64772 4720 -1 /data/system/dropbox/system_server_strictmode@1571184694853.txt +64772 3631 -1 /data/system/dropbox/event_data@1571191013666.txt +64772 2778 -1 /data/system/dropbox/event_data@1571193789240.txt +64772 7272 -1 /data/system/dropbox/event_data@1571211792041.txt +64772 7328 -1 /data/system/dropbox/event_data@1571214100014.txt +64772 5537 -1 /data/system/dropbox/system_server_strictmode@1571218533814.txt +64772 4823 -1 /data/system/dropbox/event_data@1571218989346.txt +64772 8431 -1 /data/system/dropbox/event_data@1571224390216.txt +64772 9082 -1 /data/system/dropbox/event_data@1571227990600.txt +64772 8879 -1 /data/system/dropbox/system_server_strictmode@1571229514854.txt +64772 9063 -1 /data/system/dropbox/system_server_strictmode@1571229514858.txt +64772 3500 -1 /data/system/dropbox/system_server_strictmode@1571240592382.txt +64772 2767 -1 /data/system/dropbox/event_data@1571240592529.txt +64772 2804 -1 /data/system/dropbox/event_data@1571242392598.txt +64772 7030 -1 /data/system/dropbox/system_server_strictmode@1571251393733.txt +64772 6713 -1 /data/system/dropbox/SYSTEM_TOMBSTONE@1571251525154.txt.gz +64772 1763 -1 /data/system/dropbox/SYSTEM_TOMBSTONE@1571254617971.txt.gz +64772 7370 -1 /data/system/dropbox/event_data@1571259122236.txt +64772 7332 -1 /data/system/dropbox/system_server_strictmode@1571262829291.txt +64772 5523 -1 /data/system/dropbox/system_server_strictmode@1571263672061.txt +64772 99 -1 /data/system/heapdump +64772 100 -1 /data/system/users +64772 132 -1 /data/system/users/0 +64772 3739 -1 /data/system/users/0/package-restrictions.xml +64772 9998 -1 /data/system/users/0/runtime-permissions.xml +64772 4150 -1 /data/system/users/0/settings_system.xml +64772 7633 -1 /data/system/users/0/settings_secure.xml +64772 7313 -1 /data/system/users/0/settings_global.xml +64772 7898 -1 /data/system/users/0/app_idle_stats.xml +64772 2186 -1 /data/system/users/0/wallpaper_info.xml +64772 8061 -1 /data/system/users/0/roles.xml +64772 6500 -1 /data/system/users/0/appwidgets.xml +64772 4906 -1 /data/system/users/0/registered_services +64772 4907 -1 /data/system/users/0/registered_services/android.accounts.AccountAuthenticator.xml +64772 5974 -1 /data/system/users/0/registered_services/android.content.SyncAdapter.xml +64772 9088 -1 /data/system/users/0/settings_ssaid.xml +64772 1530 -1 /data/system/users/0.xml +64772 1334 -1 /data/system/users/userlist.xml +64772 1323 -1 /data/system/battery-history +64772 6600 -1 /data/system/battery-history/0.bin +64772 1324 -1 /data/system/procstats +64772 9614 -1 /data/system/procstats/state-2019-10-16-06-30-34.bin +64772 6594 -1 /data/system/procstats/state-2019-10-16-09-35-33.bin +64772 2676 -1 /data/system/procstats/state-2019-10-16-12-38-34.bin +64772 9469 -1 /data/system/procstats/state-2019-10-16-15-43-12.bin +64772 7228 -1 /data/system/procstats/state-2019-10-16-18-43-13.bin +64772 1405 -1 /data/system/procstats/state-2019-10-15-21-02-39.bin +64772 3722 -1 /data/system/procstats/state-2019-10-16-00-11-34.bin +64772 6996 -1 /data/system/procstats/state-2019-10-16-03-22-34.bin +64772 8116 -1 /data/system/batterystats.bin +64772 1327 -1 /data/system/ifw +64772 7525 -1 /data/system/display-manager-state.xml +64772 1335 -1 /data/system/uiderrors.txt +64772 1491 -1 /data/system/package_cache +64772 9733 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b +64772 9734 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DisplayCutoutEmulationTall-16 +64772 9735 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularSettings-16 +64772 9686 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarMode3Button-16 +64772 9687 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularAndroid-16 +64772 9706 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedSettings-16 +64772 9707 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SystemUIGoogle__auto_generated_rro_product.apk-16 +64772 9708 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BuiltInPrintService__auto_generated_rro_product.apk-16 +64772 9709 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorGreen-16 +64772 9710 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularPixelThemePicker-16 +64772 9711 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorSpace-16 +64772 9720 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconShapeSquircle-16 +64772 9721 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ChinaMobileFrameworksRes-16 +64772 9719 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularSystemUI-16 +64772 9694 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedSystemUI-16 +64772 9567 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DisplayCutoutNoCutout-16 +64772 9588 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarModeGesturalNarrowBack-16 +64772 9587 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconShapeTeardrop-16 +64772 9751 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedAndroid-16 +64772 9752 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorPurple-16 +64772 9693 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Telecom__auto_generated_rro_product.apk-16 +64772 9696 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledAndroid-16 +64772 9757 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TeleService__auto_generated_rro_product.apk-16 +64772 9756 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorCinnamon-16 +64772 9758 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DisplayCutoutEmulationDouble-16 +64772 9759 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NfcNci__auto_generated_rro_product.apk-16 +64772 9699 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SafetyRegulatoryInfo__auto_generated_rro_product.apk-16 +64772 9761 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TelephonyProvider__auto_generated_rro_product.apk-16 +64772 9762 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorOcean-16 +64772 9763 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SimAppDialog__auto_generated_rro_product.apk-16 +64772 9764 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorOrchid-16 +64772 9765 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedPixelThemePicker-16 +64772 9766 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/FontArbutusSource-16 +64772 9767 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledSettings-16 +64772 9768 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePermissionControllerOverlay.apk-16 +64772 9769 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DisplayCutoutEmulationCorner-16 +64772 9770 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledPixelThemePicker-16 +64772 9716 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackRoundedPixelLauncher-16 +64772 9772 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelConfigOverlayCommon.apk-16 +64772 9773 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelDocumentsUIGoogleOverlay-16 +64772 9745 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackCircularPixelLauncher-16 +64772 9746 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleWebViewOverlay.apk-16 +64772 9744 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelConfigOverlay2018.apk-16 +64772 9677 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarMode2Button-16 +64772 9777 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledSystemUI-16 +64772 9778 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ContactsProvider__auto_generated_rro_product.apk-16 +64772 9678 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AccentColorBlack-16 +64772 9780 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleConfigOverlay.apk-16 +64772 9781 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarModeGesturalWideBack-16 +64772 9640 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/FontRubikRubik-16 +64772 9642 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarModeGesturalExtraWideBack-16 +64772 9643 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SettingsProvider__auto_generated_rro_product.apk-16 +64772 9779 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NavigationBarModeGestural-16 +64772 9782 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconPackFilledPixelLauncher-16 +64772 9788 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/FontArvoLato-16 +64772 9789 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/framework-res__auto_generated_rro_product.apk-16 +64772 9790 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/IconShapeRoundedRect-16 +64772 9791 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/framework-res__auto_generated_rro_vendor.apk-16 +64772 9738 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NfcNci__auto_generated_rro_vendor.apk-16 +64772 9739 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SystemUIGoogle__auto_generated_rro_vendor.apk-16 +64772 9740 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TeleService__auto_generated_rro_vendor.apk-16 +64772 9741 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Bluetooth__auto_generated_rro_vendor.apk-16 +64772 9742 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/framework-res.apk-16 +64772 9743 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ONS-16 +64772 9798 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SharedStorageBackup-16 +64772 9799 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NetworkPermissionConfig-16 +64772 9800 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/UserDictionaryProvider-16 +64772 9801 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CalendarProvider-16 +64772 9802 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/qcrilmsgtunnel-16 +64772 9803 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TelephonyProvider-16 +64772 9805 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DownloadProvider-16 +64772 9806 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DocumentsUIGoogle-16 +64772 9807 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/StatementService-16 +64772 9808 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CtsShimPrivPrebuilt-16 +64772 9810 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BlockedNumberProvider-16 +64772 9736 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DownloadProviderUi-16 +64772 9737 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ContactsProvider-16 +64772 9775 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/VpnDialogs-16 +64772 9776 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Shell-16 +64772 9774 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TimeZoneUpdater-16 +64772 7194 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BackupRestoreConfirmation-16 +64772 9816 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ExternalStorageProvider-16 +64772 9817 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MediaProvider-16 +64772 9755 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CNEService-16 +64772 9823 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DynamicSystemInstallationService-16 +64772 9822 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Telecom-16 +64772 9824 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ManagedProvisioning-16 +64772 9825 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MmsService-16 +64772 9760 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/InputDevices-16 +64772 9827 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CallLogBackup-16 +64772 9828 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BackupEncryption-16 +64772 9830 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SettingsProvider-16 +64772 9831 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WifiStackPermissionConfig-16 +64772 9832 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/FusedLocation-16 +64772 9792 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ProxyHandler-16 +64772 9793 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CellBroadcastAppPlatform-16 +64772 9794 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LocalTransport-16 +64772 9795 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MtpService-16 +64772 9796 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePackageInstaller-16 +64772 9797 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TagGoogle-16 +64772 9839 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MusicFX-16 +64772 9840 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleExtServices-16 +64772 9841 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NetworkStack-16 +64772 9844 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SoundPicker-16 +64772 9771 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WifiStack-16 +64772 9814 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TeleService-16 +64772 9813 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePermissionController-16 +64772 9849 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePrintRecommendationService-16 +64772 9850 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/vzw_msdc_api-16 +64772 9851 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/RcsService-16 +64772 9852 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/OsuLogin-16 +64772 9853 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LiveWallpapersPicker-16 +64772 9854 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CtsShimPrebuilt-16 +64772 9855 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierDefaultApp-16 +64772 9857 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PresencePolling-16 +64772 9859 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrintSpooler-16 +64772 9860 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Bluetooth-16 +64772 9862 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SafetyRegulatoryInfo-16 +64772 9811 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HTMLViewer-16 +64772 9848 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/embms-16 +64772 9846 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/radioconfig-16 +64772 7024 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CertInstaller-16 +64772 7579 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CompanionDeviceManager-16 +64772 9786 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/QTIDiagServices-16 +64772 9748 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PacProcessor-16 +64772 9804 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/uimremoteserver-16 +64772 9787 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/EasterEgg-16 +64772 9877 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SimAppDialog-16 +64772 9818 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/QAS_DVC_MSP_VZW-16 +64772 9820 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BuiltInPrintService-16 +64772 9891 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/atfwd-16 +64772 9826 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/uimremoteclient-16 +64772 9894 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BasicDreams-16 +64772 9896 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WallpaperBackup-16 +64772 9881 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/crosshatch_game_driver-16 +64772 9904 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DreamlinerUpdater-16 +64772 9906 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleServicesFramework-16 +64772 9908 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierSetup-16 +64772 9909 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SettingsIntelligenceGooglePrebuilt-16 +64772 9910 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AmbientSensePrebuilt-16 +64772 9873 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConnMO-16 +64772 9871 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DCMO-16 +64772 9916 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleANGLE-16 +64772 9917 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TetheringEntitlement-16 +64772 9918 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DMService-16 +64772 9865 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/OemDmTrigger-16 +64772 9870 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrebuiltGmsCore-16 +64772 9928 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NexusLauncherRelease-16 +64772 9929 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TipsPrebuilt-16 +64772 9930 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GmsCoreSetupPrebuilt-16 +64772 9932 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierSettings-16 +64772 9934 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SprintDM-16 +64772 9864 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierServices-16 +64772 9941 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WellbeingPrebuilt-16 +64772 9944 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AndroidAutoFullPrebuilt-16 +64772 9892 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleCBRS-16 +64772 9952 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/RilConfigService-16 +64772 9953 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SprintHM-16 +64772 9954 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HardwareInfo-16 +64772 9955 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleFeedback-16 +64772 9956 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TurboPrebuilt-16 +64772 9957 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SettingsGoogle-16 +64772 9920 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelSetupWizard-16 +64772 9923 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConnMetrics-16 +64772 9967 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DreamlinerPrebuilt-16 +64772 9939 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SetupWizardPrebuilt-16 +64772 9973 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SystemUIGoogle-16 +64772 9915 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaWebPluginBoot-16 +64772 9977 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelLogger-16 +64772 9978 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaClient-16 +64772 9979 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SoundAmplifierPrebuilt-16 +64772 9982 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleVrCore-16 +64772 9983 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Drive-16 +64772 9984 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SoundPickerPrebuilt-16 +64772 9986 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DiagnosticsToolPrebuilt-16 +64772 9987 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MarkupGoogle-16 +64772 9937 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SSRestartDetector-16 +64772 9958 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleTTS-16 +64772 9961 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/YouTube-16 +64772 9963 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/VZWAPNLib-16 +64772 9972 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/xdivert-16 +64772 9970 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/talkback-16 +64772 2593 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NexusWallpapersStubPrebuilt2018-16 +64772 2183 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/RamdumpUploader-16 +64772 9902 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CalculatorGooglePrebuilt-16 +64772 9875 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LocationHistoryPrebuilt-16 +64772 9999 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/com.qualcomm.qti.services.secureui-16 +64772 10002 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaSettingApp-16 +64772 10004 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ModuleMetadataGoogle-16 +64772 6562 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/EmergencyInfoGoogleNoUi-16 +64772 4139 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaMenuApp-16 +64772 2003 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Chrome-16 +64772 6031 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LatinIMEGooglePrebuilt-16 +64772 9858 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/datastatusnotification-16 +64772 9812 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Stk-16 +64772 9835 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PartnerBookmarksProvider-16 +64772 9836 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BookmarkProvider-16 +64772 9837 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/QAS_DVC_MSP-16 +64772 9838 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NfcNci-16 +64772 9847 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConferenceDialer-16 +64772 7561 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/KeyChain-16 +64772 9749 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Traceur-16 +64772 9882 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/uceShimService-16 +64772 9883 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CaptivePortalLogin-16 +64772 9890 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SecureElement-16 +64772 9893 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/QtiTelephonyService-16 +64772 9895 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleExtShared-16 +64772 9880 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ims-16 +64772 9897 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BluetoothMidiService-16 +64772 9898 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TimeService-16 +64772 9900 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Showcase-16 +64772 9899 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AppDirectedSMSService-16 +64772 9901 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/OTAConfigPrebuilt-16 +64772 9905 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/OBDM_Permissions-16 +64772 9907 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HotwordEnrollmentOKGoogleWCD9340-16 +64772 9911 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ScribePrebuilt-16 +64772 9872 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SafetyHubPrebuilt-16 +64772 9845 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConfigUpdater-16 +64772 9919 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TMobilePlanProvider-16 +64772 9866 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/EuiccGoogle-16 +64772 9867 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/VzwOmaTrigger-16 +64772 9868 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleOneTimeInitializer-16 +64772 9869 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Volta-16 +64772 9926 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/obdm_stub-16 +64772 9927 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleDialer-16 +64772 9931 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WfcActivation-16 +64772 9933 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/EuiccSupportPixel-16 +64772 9935 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MatchmakerPrebuiltPixel3-16 +64772 9863 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/grilservice-16 +64772 9913 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GooglePartnerSetup-16 +64772 9914 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Phonesky-16 +64772 9912 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/BetterBug-16 +64772 9942 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TmobileGrsuPrebuilt-16 +64772 9943 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/AndroidMigratePrebuilt-16 +64772 9884 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MaestroPrebuilt-16 +64772 9783 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WallpaperPickerGoogleRelease-16 +64772 9784 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ModemDiagnosticSystemPermissions-16 +64772 9785 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ConnectivityMonitor-16 +64772 9886 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GCS-16 +64772 9921 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/SCONE-16 +64772 9922 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DiagMon-16 +64772 9924 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HelpRtcPrebuilt-16 +64772 9925 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/LLKAgent-16 +64772 9964 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MyVerizonServices-16 +64772 9965 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/VendorLoggingService-16 +64772 9966 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/StorageManagerGoogle-16 +64772 9968 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/ModemDiagnosticSystem-16 +64772 9969 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/HotwordEnrollmentXGoogleWCD9340-16 +64772 9974 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Velvet-16 +64772 9976 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WebViewGoogle-16 +64772 9980 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrebuiltDeskClockGoogle-16 +64772 9981 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Tycho-16 +64772 9985 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleContacts-16 +64772 9936 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/arcore-16 +64772 9959 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/DMAgent-16 +64772 9960 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CalendarGooglePrebuilt-16 +64772 9962 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PixelThemesStub2018-16 +64772 9971 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrebuiltGmail-16 +64772 2181 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaWebPlugin-16 +64772 10001 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/NetGrapher-16 +64772 9903 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PlayAutoInstallConfig-16 +64772 10003 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Photos-16 +64772 9878 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleCamera-16 +64772 9879 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Videos-16 +64772 10009 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/PrebuiltBugle-16 +64772 9951 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/MobileFeliCaMenuMainApp-16 +64772 9945 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Ornament-16 +64772 6563 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/TrichromeLibrary-16 +64772 6561 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Maps-16 +64772 6559 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/Music2-16 +64772 6558 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/WallpapersBReel2018-16 +64772 5028 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/CarrierMetrics-16 +64772 1925 -1 /data/system/package_cache/e20d9a9c474cca6e99fd0f5e0a68ac5323ea474b/GoogleContactsSyncAdapter-16 +64772 5053 -1 /data/system/packages.xml +64772 1526 -1 /data/system/packages.list +64772 1823 -1 /data/system/install_sessions +64772 9946 -1 /data/system/overlays.xml +64772 2641 -1 /data/system/sensor_service +64772 2642 -1 /data/system/sensor_service/hmac_key +64772 7947 -1 /data/system/screen_on_time +64772 2644 -1 /data/system/entropy.dat +64772 2658 -1 /data/system/watchlist_settings.xml +64772 2659 -1 /data/system/watchlist_report.db +64772 2660 -1 /data/system/watchlist_report.db-journal +64772 2661 -1 /data/system/last-fstrim +64772 2668 -1 /data/system/recoverablekeystore.db +64772 2770 -1 /data/system/notification_log.db +64772 4930 -1 /data/system/notification_policy.xml +64772 3516 -1 /data/system/last-header.txt +64772 2674 -1 /data/system/netstats +64772 1480 -1 /data/system/package-dex-usage.list +64772 2679 -1 /data/system/job +64772 2952 -1 /data/system/job/jobs.xml +64772 2680 -1 /data/system/graphicsstats +64772 3574 -1 /data/system/graphicsstats/1570924800000 +64772 3575 -1 /data/system/graphicsstats/1570924800000/com.android.settings +64772 3576 -1 /data/system/graphicsstats/1570924800000/com.android.settings/29 +64772 3577 -1 /data/system/graphicsstats/1570924800000/com.android.settings/29/total +64772 1475 -1 /data/system/graphicsstats/1570924800000/com.android.deskclock +64772 1508 -1 /data/system/graphicsstats/1570924800000/com.android.deskclock/29 +64772 1537 -1 /data/system/graphicsstats/1570924800000/com.android.deskclock/29/total +64772 1509 -1 /data/system/graphicsstats/1570924800000/com.android.calendar +64772 1820 -1 /data/system/graphicsstats/1570924800000/com.android.calendar/29 +64772 2196 -1 /data/system/graphicsstats/1570924800000/com.android.calendar/29/total +64772 5849 -1 /data/system/graphicsstats/1570924800000/com.android.hotwordenrollment.okgoogle +64772 5850 -1 /data/system/graphicsstats/1570924800000/com.android.hotwordenrollment.okgoogle/29 +64772 5851 -1 /data/system/graphicsstats/1570924800000/com.android.hotwordenrollment.okgoogle/29/total +64772 6369 -1 /data/system/graphicsstats/1570924800000/com.google.android.calculator +64772 6370 -1 /data/system/graphicsstats/1570924800000/com.google.android.calculator/75013172 +64772 6371 -1 /data/system/graphicsstats/1570924800000/com.google.android.calculator/75013172/total +64772 6442 -1 /data/system/graphicsstats/1570924800000/com.google.android.googlequicksearchbox +64772 6443 -1 /data/system/graphicsstats/1570924800000/com.google.android.googlequicksearchbox/300951992 +64772 6444 -1 /data/system/graphicsstats/1570924800000/com.google.android.googlequicksearchbox/300951992/total +64772 7395 -1 /data/system/graphicsstats/1570924800000/com.android.systemui +64772 7396 -1 /data/system/graphicsstats/1570924800000/com.android.systemui/29 +64772 7397 -1 /data/system/graphicsstats/1570924800000/com.android.systemui/29/total +64772 7398 -1 /data/system/graphicsstats/1570924800000/com.google.android.apps.nexuslauncher +64772 7399 -1 /data/system/graphicsstats/1570924800000/com.google.android.apps.nexuslauncher/701 +64772 7400 -1 /data/system/graphicsstats/1570924800000/com.google.android.apps.nexuslauncher/701/total +64772 7401 -1 /data/system/graphicsstats/1570924800000/com.google.android.inputmethod.latin +64772 7402 -1 /data/system/graphicsstats/1570924800000/com.google.android.inputmethod.latin/26830610 +64772 7403 -1 /data/system/graphicsstats/1570924800000/com.google.android.inputmethod.latin/26830610/total +64772 9537 -1 /data/system/graphicsstats/1571011200000 +64772 9538 -1 /data/system/graphicsstats/1571011200000/com.android.settings +64772 9500 -1 /data/system/graphicsstats/1571011200000/com.android.settings/29 +64772 9501 -1 /data/system/graphicsstats/1571011200000/com.android.settings/29/total +64772 9597 -1 /data/system/graphicsstats/1571011200000/com.google.android.GoogleCamera +64772 9697 -1 /data/system/graphicsstats/1571011200000/com.google.android.GoogleCamera/54080538 +64772 9698 -1 /data/system/graphicsstats/1571011200000/com.google.android.GoogleCamera/54080538/total +64772 9215 -1 /data/system/graphicsstats/1571011200000/com.google.android.calculator +64772 9137 -1 /data/system/graphicsstats/1571011200000/com.google.android.calculator/75013172 +64772 9150 -1 /data/system/graphicsstats/1571011200000/com.google.android.calculator/75013172/total +64772 9348 -1 /data/system/graphicsstats/1571011200000/com.google.android.gms +64772 9416 -1 /data/system/graphicsstats/1571011200000/com.google.android.gms/19275048 +64772 9381 -1 /data/system/graphicsstats/1571011200000/com.google.android.gms/19275048/total +64772 4777 -1 /data/system/graphicsstats/1571011200000/com.android.systemui +64772 4882 -1 /data/system/graphicsstats/1571011200000/com.android.systemui/29 +64772 6798 -1 /data/system/graphicsstats/1571011200000/com.android.systemui/29/total +64772 6800 -1 /data/system/graphicsstats/1571011200000/com.google.android.apps.nexuslauncher +64772 6807 -1 /data/system/graphicsstats/1571011200000/com.google.android.apps.nexuslauncher/701 +64772 6770 -1 /data/system/graphicsstats/1571011200000/com.google.android.apps.nexuslauncher/701/total +64772 6603 -1 /data/system/graphicsstats/1571011200000/com.google.android.googlequicksearchbox +64772 6538 -1 /data/system/graphicsstats/1571011200000/com.google.android.googlequicksearchbox/300951992 +64772 6714 -1 /data/system/graphicsstats/1571011200000/com.google.android.googlequicksearchbox/300951992/total +64772 6363 -1 /data/system/graphicsstats/1571011200000/com.google.android.inputmethod.latin +64772 3374 -1 /data/system/graphicsstats/1571011200000/com.google.android.inputmethod.latin/26830610 +64772 3543 -1 /data/system/graphicsstats/1571011200000/com.google.android.inputmethod.latin/26830610/total +64772 9461 -1 /data/system/graphicsstats/1571097600000 +64772 9415 -1 /data/system/graphicsstats/1571097600000/com.google.android.googlequicksearchbox +64772 9407 -1 /data/system/graphicsstats/1571097600000/com.google.android.googlequicksearchbox/300951992 +64772 9470 -1 /data/system/graphicsstats/1571097600000/com.google.android.googlequicksearchbox/300951992/total +64772 9468 -1 /data/system/graphicsstats/1571097600000/com.google.android.apps.nexuslauncher +64772 9443 -1 /data/system/graphicsstats/1571097600000/com.google.android.apps.nexuslauncher/701 +64772 9421 -1 /data/system/graphicsstats/1571097600000/com.google.android.apps.nexuslauncher/701/total +64772 9444 -1 /data/system/graphicsstats/1571097600000/com.google.android.inputmethod.latin +64772 9318 -1 /data/system/graphicsstats/1571097600000/com.google.android.inputmethod.latin/26830610 +64772 9456 -1 /data/system/graphicsstats/1571097600000/com.google.android.inputmethod.latin/26830610/total +64772 9373 -1 /data/system/graphicsstats/1571097600000/com.android.systemui +64772 9374 -1 /data/system/graphicsstats/1571097600000/com.android.systemui/29 +64772 9459 -1 /data/system/graphicsstats/1571097600000/com.android.systemui/29/total +64772 6768 -1 /data/system/graphicsstats/1571184000000 +64772 6696 -1 /data/system/graphicsstats/1571184000000/android +64772 6810 -1 /data/system/graphicsstats/1571184000000/android/29 +64772 4761 -1 /data/system/graphicsstats/1571184000000/android/29/total +64772 7241 -1 /data/system/graphicsstats/1571184000000/com.google.android.gms +64772 9001 -1 /data/system/graphicsstats/1571184000000/com.google.android.gms/19275048 +64772 6622 -1 /data/system/graphicsstats/1571184000000/com.google.android.gms/19275048/total +64772 7287 -1 /data/system/graphicsstats/1571184000000/com.google.android.googlequicksearchbox +64772 7320 -1 /data/system/graphicsstats/1571184000000/com.google.android.googlequicksearchbox/300951992 +64772 7408 -1 /data/system/graphicsstats/1571184000000/com.google.android.googlequicksearchbox/300951992/total +64772 2681 -1 /data/system/stats_companion +64772 2682 -1 /data/system/locksettings.db +64772 1774 -1 /data/system/sound_model.db +64772 1525 -1 /data/system/log-files.xml +64772 9160 -1 /data/system/shortcut_service.xml +64772 2688 -1 /data/system/battery-saver +64772 9994 -1 /data/system/install_sessions.xml +64772 2694 -1 /data/system/sync +64772 6668 -1 /data/system/sync/accounts.xml +64772 2695 -1 /data/system/syncmanager-log +64772 2696 -1 /data/system/syncmanager-log/synclog-2019-10-13.log +64772 7394 -1 /data/system/syncmanager-log/synclog-2019-10-14.log +64772 5672 -1 /data/system/syncmanager-log/synclog-2019-10-15.log +64772 9400 -1 /data/system/syncmanager-log/synclog-2019-10-16.log +64772 2697 -1 /data/system/slice +64772 2699 -1 /data/system/appops +64772 1451 -1 /data/system/appops/history +64772 7615 -1 /data/system/appops/history/900000.xml +64772 7582 -1 /data/system/appops/history/9900000.xml +64772 7329 -1 /data/system/appops/history/99900000.xml +64772 8594 -1 /data/system/appops/history/999999900000.xml +64772 6591 -1 /data/system/netpolicy.xml +64772 6592 -1 /data/system/package-watchdog.xml +64772 1775 -1 /data/system/sound_model.db-journal +64772 2771 -1 /data/system/notification_log.db-journal +64772 7039 -1 /data/system/cachequota.xml +64772 1535 -1 /data/system/device_policies.xml +64772 7442 -1 /data/system/appops.xml +64772 1813 -1 /data/system/packages-warnings.xml +64772 7543 -1 /data/system/package-dcl.list +64772 6211 -1 /data/system/st_sound_model.db +64772 8614 -1 /data/system/package-cstats.list +64772 6212 -1 /data/system/st_sound_model.db-journal +64772 9195 -1 /data/system/batterystats-daily.xml +64772 7542 -1 /data/system/diskstats_cache.json +64772 8615 -1 /data/system/package-usage.list +64772 101 -1 /data/system_de +64772 134 -1 /data/system_de/0 +64772 3345 -1 /data/system_de/0/accounts_de.db +64772 3346 -1 /data/system_de/0/accounts_de.db-journal +64772 3595 -1 /data/system_de/0/ringtones +64772 3596 -1 /data/system_de/0/ringtones/ringtone_cache +64772 3597 -1 /data/system_de/0/ringtones/notification_sound_cache +64772 3598 -1 /data/system_de/0/ringtones/alarm_alert_cache +64772 3638 -1 /data/system_de/0/persisted_taskIds.txt +64772 7544 -1 /data/system_de/ambient_brightness_stats.xml +64772 102 -1 /data/system_ce +64772 2789 -1 /data/system_ce/0 +64772 2808 -1 /data/system_ce/0/backup +64772 2809 -1 /data/system_ce/0/backup_stage +64772 3322 -1 /data/system_ce/0/usagestats +64772 3323 -1 /data/system_ce/0/usagestats/migrated +64772 3324 -1 /data/system_ce/0/usagestats/daily +64772 3704 -1 /data/system_ce/0/usagestats/daily/1571007125976 +64772 6623 -1 /data/system_ce/0/usagestats/daily/1571093553774 +64772 8125 -1 /data/system_ce/0/usagestats/daily/1571180013782 +64772 3325 -1 /data/system_ce/0/usagestats/weekly +64772 4831 -1 /data/system_ce/0/usagestats/weekly/1571007125976 +64772 3326 -1 /data/system_ce/0/usagestats/monthly +64772 7948 -1 /data/system_ce/0/usagestats/monthly/1571007125976 +64772 3327 -1 /data/system_ce/0/usagestats/yearly +64772 7950 -1 /data/system_ce/0/usagestats/yearly/1571007125976 +64772 3328 -1 /data/system_ce/0/usagestats/version +64772 3347 -1 /data/system_ce/0/accounts_ce.db +64772 3348 -1 /data/system_ce/0/accounts_ce.db-journal +64772 3592 -1 /data/system_ce/0/shortcut_service +64772 7102 -1 /data/system_ce/0/shortcut_service/shortcuts.xml +64772 3628 -1 /data/system_ce/0/recent_tasks +64772 3630 -1 /data/system_ce/0/snapshots +64772 1572 -1 /data/system_ce/0/recent_images +64772 103 -1 /data/misc_de +64772 135 -1 /data/misc_de/0 +64772 138 -1 /data/misc_de/0/vold +64772 139 -1 /data/misc_de/0/storaged +64772 140 -1 /data/misc_de/0/rollback +64772 104 -1 /data/misc_ce +64772 2790 -1 /data/misc_ce/0 +64772 2805 -1 /data/misc_ce/0/vold +64772 2806 -1 /data/misc_ce/0/storaged +64772 7460 -1 /data/misc_ce/0/storaged/storaged.proto +64772 2807 -1 /data/misc_ce/0/rollback +64772 3003 -1 /data/misc_ce/0/wifi +64772 1556 -1 /data/misc_ce/0/wifi/WifiConfigStore.xml +64772 105 -1 /data/user +64772 75 -1 /data/user/0 +64772 106 -1 /data/user_de +64772 137 -1 /data/user_de/0 +64772 1664 -1 /data/user_de/0/com.android.providers.telephony +64772 1665 -1 /data/user_de/0/com.android.providers.telephony/cache +64772 1666 -1 /data/user_de/0/com.android.providers.telephony/code_cache +64772 2749 -1 /data/user_de/0/com.android.providers.telephony/files +64772 2752 -1 /data/user_de/0/com.android.providers.telephony/databases +64772 2753 -1 /data/user_de/0/com.android.providers.telephony/databases/carrierIdentification.db +64772 2754 -1 /data/user_de/0/com.android.providers.telephony/databases/carrierIdentification.db-journal +64772 2772 -1 /data/user_de/0/com.android.providers.telephony/databases/telephony.db +64772 2773 -1 /data/user_de/0/com.android.providers.telephony/databases/telephony.db-journal +64772 3431 -1 /data/user_de/0/com.android.providers.telephony/databases/HbpcdLookup.db +64772 3432 -1 /data/user_de/0/com.android.providers.telephony/databases/HbpcdLookup.db-journal +64772 3435 -1 /data/user_de/0/com.android.providers.telephony/databases/mmssms.db +64772 3436 -1 /data/user_de/0/com.android.providers.telephony/databases/mmssms.db-journal +64772 2756 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs +64772 2775 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs/CarrierIdProvider.xml +64772 2776 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs/build-id.xml +64772 3149 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs/telephonyprovider.xml +64772 3154 -1 /data/user_de/0/com.android.providers.telephony/shared_prefs/preferred-apn.xml +64772 1670 -1 /data/user_de/0/com.quicinc.cne.CNEService +64772 1671 -1 /data/user_de/0/com.quicinc.cne.CNEService/cache +64772 1672 -1 /data/user_de/0/com.quicinc.cne.CNEService/code_cache +64772 1676 -1 /data/user_de/0/com.qualcomm.qti.uceShimService +64772 1677 -1 /data/user_de/0/com.qualcomm.qti.uceShimService/cache +64772 1678 -1 /data/user_de/0/com.qualcomm.qti.uceShimService/code_cache +64772 1682 -1 /data/user_de/0/com.android.mms.service +64772 1683 -1 /data/user_de/0/com.android.mms.service/cache +64772 1684 -1 /data/user_de/0/com.android.mms.service/code_cache +64772 1688 -1 /data/user_de/0/com.qualcomm.qti.telephonyservice +64772 1689 -1 /data/user_de/0/com.qualcomm.qti.telephonyservice/cache +64772 1690 -1 /data/user_de/0/com.qualcomm.qti.telephonyservice/code_cache +64772 1694 -1 /data/user_de/0/android +64772 1695 -1 /data/user_de/0/android/cache +64772 1696 -1 /data/user_de/0/android/code_cache +64772 1699 -1 /data/user_de/0/com.android.ons +64772 1700 -1 /data/user_de/0/com.android.ons/cache +64772 1701 -1 /data/user_de/0/com.android.ons/code_cache +64772 3444 -1 /data/user_de/0/com.android.ons/shared_prefs +64772 3446 -1 /data/user_de/0/com.android.ons/shared_prefs/ONS.xml +64772 1705 -1 /data/user_de/0/org.codeaurora.ims +64772 1706 -1 /data/user_de/0/org.codeaurora.ims/cache +64772 1707 -1 /data/user_de/0/org.codeaurora.ims/code_cache +64772 1711 -1 /data/user_de/0/com.qualcomm.qcrilmsgtunnel +64772 1712 -1 /data/user_de/0/com.qualcomm.qcrilmsgtunnel/cache +64772 1713 -1 /data/user_de/0/com.qualcomm.qcrilmsgtunnel/code_cache +64772 1717 -1 /data/user_de/0/com.android.providers.settings +64772 1718 -1 /data/user_de/0/com.android.providers.settings/cache +64772 1719 -1 /data/user_de/0/com.android.providers.settings/code_cache +64772 2645 -1 /data/user_de/0/com.android.providers.settings/databases +64772 1723 -1 /data/user_de/0/com.android.inputdevices +64772 1724 -1 /data/user_de/0/com.android.inputdevices/cache +64772 1725 -1 /data/user_de/0/com.android.inputdevices/code_cache +64772 3784 -1 /data/user_de/0/com.google.android.ext.services +64772 3785 -1 /data/user_de/0/com.google.android.ext.services/cache +64772 3786 -1 /data/user_de/0/com.google.android.ext.services/code_cache +64772 1741 -1 /data/user_de/0/com.android.server.telecom +64772 1742 -1 /data/user_de/0/com.android.server.telecom/cache +64772 1743 -1 /data/user_de/0/com.android.server.telecom/code_cache +64772 2747 -1 /data/user_de/0/com.android.server.telecom/files +64772 5864 -1 /data/user_de/0/com.android.server.telecom/files/phone-account-registrar-state.xml +64772 1747 -1 /data/user_de/0/com.android.service.ims +64772 1748 -1 /data/user_de/0/com.android.service.ims/cache +64772 1749 -1 /data/user_de/0/com.android.service.ims/code_cache +64772 3790 -1 /data/user_de/0/com.google.android.ext.shared +64772 3791 -1 /data/user_de/0/com.google.android.ext.shared/cache +64772 3792 -1 /data/user_de/0/com.google.android.ext.shared/code_cache +64772 3853 -1 /data/user_de/0/com.vzw.apnlib +64772 3854 -1 /data/user_de/0/com.vzw.apnlib/cache +64772 3855 -1 /data/user_de/0/com.vzw.apnlib/code_cache +64772 1765 -1 /data/user_de/0/com.android.proxyhandler +64772 1766 -1 /data/user_de/0/com.android.proxyhandler/cache +64772 1767 -1 /data/user_de/0/com.android.proxyhandler/code_cache +64772 3796 -1 /data/user_de/0/com.google.android.grilservice +64772 3797 -1 /data/user_de/0/com.google.android.grilservice/cache +64772 3798 -1 /data/user_de/0/com.google.android.grilservice/code_cache +64772 1777 -1 /data/user_de/0/com.android.service.ims.presence +64772 1778 -1 /data/user_de/0/com.android.service.ims.presence/cache +64772 1779 -1 /data/user_de/0/com.android.service.ims.presence/code_cache +64772 1783 -1 /data/user_de/0/com.android.settings +64772 1784 -1 /data/user_de/0/com.android.settings/cache +64772 1785 -1 /data/user_de/0/com.android.settings/code_cache +64772 7214 -1 /data/user_de/0/com.android.settings/code_cache/com.android.opengl.shaders_cache +64772 7215 -1 /data/user_de/0/com.android.settings/code_cache/com.android.skia.shaders_cache +64772 7205 -1 /data/user_de/0/com.android.settings/shared_prefs +64772 7211 -1 /data/user_de/0/com.android.settings/shared_prefs/battery_fix_prefs.xml +64772 7206 -1 /data/user_de/0/com.android.settings/databases +64772 7207 -1 /data/user_de/0/com.android.settings/databases/homepage_cards.db +64772 7208 -1 /data/user_de/0/com.android.settings/databases/homepage_cards.db-journal +64772 7209 -1 /data/user_de/0/com.android.settings/databases/battery_settings.db +64772 7210 -1 /data/user_de/0/com.android.settings/databases/battery_settings.db-journal +64772 1789 -1 /data/user_de/0/com.android.phone +64772 1790 -1 /data/user_de/0/com.android.phone/cache +64772 1791 -1 /data/user_de/0/com.android.phone/code_cache +64772 3434 -1 /data/user_de/0/com.android.phone/shared_prefs +64772 4905 -1 /data/user_de/0/com.android.phone/shared_prefs/com.android.phone_preferences.xml +64772 3440 -1 /data/user_de/0/com.android.phone/shared_prefs/_has_set_default_values.xml +64772 3443 -1 /data/user_de/0/com.android.phone/files +64772 1795 -1 /data/user_de/0/com.android.shell +64772 1796 -1 /data/user_de/0/com.android.shell/cache +64772 1797 -1 /data/user_de/0/com.android.shell/code_cache +64772 1801 -1 /data/user_de/0/com.android.location.fused +64772 1802 -1 /data/user_de/0/com.android.location.fused/cache +64772 1803 -1 /data/user_de/0/com.android.location.fused/code_cache +64772 1807 -1 /data/user_de/0/com.android.systemui +64772 1808 -1 /data/user_de/0/com.android.systemui/cache +64772 6712 -1 /data/user_de/0/com.android.systemui/cache/einfo-cache.xml +64772 6691 -1 /data/user_de/0/com.android.systemui/cache/einfo-userphoto.bmp +64772 1809 -1 /data/user_de/0/com.android.systemui/code_cache +64772 4941 -1 /data/user_de/0/com.android.systemui/code_cache/com.android.renderscript.cache +64772 8726 -1 /data/user_de/0/com.android.systemui/code_cache/com.android.opengl.shaders_cache +64772 9095 -1 /data/user_de/0/com.android.systemui/code_cache/com.android.skia.shaders_cache +64772 2724 -1 /data/user_de/0/com.android.systemui/shared_prefs +64772 5036 -1 /data/user_de/0/com.android.systemui/shared_prefs/plugin_prefs.xml +64772 6957 -1 /data/user_de/0/com.android.systemui/shared_prefs/com.android.systemui.xml +64772 6565 -1 /data/user_de/0/com.android.systemui/shared_prefs/powerui_prefs.xml +64772 4925 -1 /data/user_de/0/com.android.systemui/files +64772 2519 -1 /data/user_de/0/com.android.systemui/files/smartspace_0_true +64772 3808 -1 /data/user_de/0/com.google.android.dialer +64772 3809 -1 /data/user_de/0/com.google.android.dialer/cache +64772 3810 -1 /data/user_de/0/com.google.android.dialer/code_cache +64772 4844 -1 /data/user_de/0/com.google.android.dialer/shared_prefs +64772 3613 -1 /data/user_de/0/com.google.android.dialer/shared_prefs/com.google.android.dialer_preferences.xml +64772 1824 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.noCutout +64772 1825 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.noCutout/cache +64772 1826 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.noCutout/code_cache +64772 1829 -1 /data/user_de/0/com.android.cts.priv.ctsshim +64772 1830 -1 /data/user_de/0/com.android.cts.priv.ctsshim/cache +64772 1831 -1 /data/user_de/0/com.android.cts.priv.ctsshim/code_cache +64772 1834 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.corner +64772 1835 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.corner/cache +64772 1836 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.corner/code_cache +64772 1839 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.double +64772 1840 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.double/cache +64772 1841 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.double/code_cache +64772 1844 -1 /data/user_de/0/com.android.dynsystem +64772 1845 -1 /data/user_de/0/com.android.dynsystem/cache +64772 1846 -1 /data/user_de/0/com.android.dynsystem/code_cache +64772 1850 -1 /data/user_de/0/com.android.providers.calendar +64772 1851 -1 /data/user_de/0/com.android.providers.calendar/cache +64772 1852 -1 /data/user_de/0/com.android.providers.calendar/code_cache +64772 1856 -1 /data/user_de/0/com.android.providers.media +64772 1857 -1 /data/user_de/0/com.android.providers.media/cache +64772 1858 -1 /data/user_de/0/com.android.providers.media/code_cache +64772 1862 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_wide_back +64772 1863 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_wide_back/cache +64772 1864 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_wide_back/code_cache +64772 3814 -1 /data/user_de/0/com.android.server.wifistack +64772 3815 -1 /data/user_de/0/com.android.server.wifistack/cache +64772 3816 -1 /data/user_de/0/com.android.server.wifistack/code_cache +64772 1873 -1 /data/user_de/0/com.android.theme.color.cinnamon +64772 1874 -1 /data/user_de/0/com.android.theme.color.cinnamon/cache +64772 1875 -1 /data/user_de/0/com.android.theme.color.cinnamon/code_cache +64772 1878 -1 /data/user_de/0/com.android.server.backup.encryption +64772 1879 -1 /data/user_de/0/com.android.server.backup.encryption/cache +64772 1880 -1 /data/user_de/0/com.android.server.backup.encryption/code_cache +64772 1884 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.systemui +64772 1885 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.systemui/cache +64772 1886 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.systemui/code_cache +64772 3835 -1 /data/user_de/0/com.google.omadm.trigger +64772 3836 -1 /data/user_de/0/com.google.omadm.trigger/cache +64772 3837 -1 /data/user_de/0/com.google.omadm.trigger/code_cache +64772 1895 -1 /data/user_de/0/com.android.externalstorage +64772 1896 -1 /data/user_de/0/com.android.externalstorage/cache +64772 1897 -1 /data/user_de/0/com.android.externalstorage/code_cache +64772 1901 -1 /data/user_de/0/com.qualcomm.uimremoteclient +64772 1902 -1 /data/user_de/0/com.qualcomm.uimremoteclient/cache +64772 1903 -1 /data/user_de/0/com.qualcomm.uimremoteclient/code_cache +64772 1907 -1 /data/user_de/0/com.android.htmlviewer +64772 1908 -1 /data/user_de/0/com.android.htmlviewer/cache +64772 1909 -1 /data/user_de/0/com.android.htmlviewer/code_cache +64772 1913 -1 /data/user_de/0/com.android.companiondevicemanager +64772 1914 -1 /data/user_de/0/com.android.companiondevicemanager/cache +64772 1915 -1 /data/user_de/0/com.android.companiondevicemanager/code_cache +64772 3802 -1 /data/user_de/0/com.google.android.permissioncontroller +64772 3803 -1 /data/user_de/0/com.google.android.permissioncontroller/cache +64772 3804 -1 /data/user_de/0/com.google.android.permissioncontroller/code_cache +64772 9691 -1 /data/user_de/0/com.google.android.permissioncontroller/code_cache/com.android.opengl.shaders_cache +64772 9692 -1 /data/user_de/0/com.google.android.permissioncontroller/code_cache/com.android.skia.shaders_cache +64772 4927 -1 /data/user_de/0/com.google.android.permissioncontroller/shared_prefs +64772 9487 -1 /data/user_de/0/com.google.android.permissioncontroller/shared_prefs/preferences.xml +64772 9491 -1 /data/user_de/0/com.google.android.permissioncontroller/files +64772 3820 -1 /data/user_de/0/com.google.android.documentsui +64772 3821 -1 /data/user_de/0/com.google.android.documentsui/cache +64772 3822 -1 /data/user_de/0/com.google.android.documentsui/code_cache +64772 3889 -1 /data/user_de/0/com.qualcomm.ltebc_vzw +64772 3890 -1 /data/user_de/0/com.qualcomm.ltebc_vzw/cache +64772 3891 -1 /data/user_de/0/com.qualcomm.ltebc_vzw/code_cache +64772 1937 -1 /data/user_de/0/com.android.providers.downloads +64772 1938 -1 /data/user_de/0/com.android.providers.downloads/cache +64772 1939 -1 /data/user_de/0/com.android.providers.downloads/code_cache +64772 3901 -1 /data/user_de/0/com.google.euiccpixel +64772 3902 -1 /data/user_de/0/com.google.euiccpixel/cache +64772 3903 -1 /data/user_de/0/com.google.euiccpixel/code_cache +64772 5023 -1 /data/user_de/0/com.google.euiccpixel/shared_prefs +64772 6191 -1 /data/user_de/0/com.google.euiccpixel/shared_prefs/ph_active_prefs.xml +64772 1949 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.android +64772 1950 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.android/cache +64772 1951 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.android/code_cache +64772 1954 -1 /data/user_de/0/com.android.theme.icon_pack.circular.themepicker +64772 1955 -1 /data/user_de/0/com.android.theme.icon_pack.circular.themepicker/cache +64772 1956 -1 /data/user_de/0/com.android.theme.icon_pack.circular.themepicker/code_cache +64772 1959 -1 /data/user_de/0/com.qualcomm.uimremoteserver +64772 1960 -1 /data/user_de/0/com.qualcomm.uimremoteserver/cache +64772 1961 -1 /data/user_de/0/com.qualcomm.uimremoteserver/code_cache +64772 1965 -1 /data/user_de/0/com.android.timezone.updater +64772 1966 -1 /data/user_de/0/com.android.timezone.updater/cache +64772 1967 -1 /data/user_de/0/com.android.timezone.updater/code_cache +64772 1971 -1 /data/user_de/0/com.android.providers.downloads.ui +64772 1972 -1 /data/user_de/0/com.android.providers.downloads.ui/cache +64772 1973 -1 /data/user_de/0/com.android.providers.downloads.ui/code_cache +64772 1977 -1 /data/user_de/0/com.android.pacprocessor +64772 1978 -1 /data/user_de/0/com.android.pacprocessor/cache +64772 1979 -1 /data/user_de/0/com.android.pacprocessor/code_cache +64772 1983 -1 /data/user_de/0/com.android.simappdialog +64772 1984 -1 /data/user_de/0/com.android.simappdialog/cache +64772 1985 -1 /data/user_de/0/com.android.simappdialog/code_cache +64772 3960 -1 /data/user_de/0/com.breel.wallpapers18 +64772 3961 -1 /data/user_de/0/com.breel.wallpapers18/cache +64772 3962 -1 /data/user_de/0/com.breel.wallpapers18/code_cache +64772 1995 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.tall +64772 1996 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.tall/cache +64772 1997 -1 /data/user_de/0/com.android.internal.display.cutout.emulation.tall/code_cache +64772 3841 -1 /data/user_de/0/com.google.android.carriersetup +64772 3842 -1 /data/user_de/0/com.google.android.carriersetup/cache +64772 3843 -1 /data/user_de/0/com.google.android.carriersetup/code_cache +64772 2005 -1 /data/user_de/0/com.android.certinstaller +64772 2006 -1 /data/user_de/0/com.android.certinstaller/cache +64772 2007 -1 /data/user_de/0/com.android.certinstaller/code_cache +64772 2011 -1 /data/user_de/0/com.android.theme.color.black +64772 2012 -1 /data/user_de/0/com.android.theme.color.black/cache +64772 2013 -1 /data/user_de/0/com.android.theme.color.black/code_cache +64772 3847 -1 /data/user_de/0/com.google.android.youtube +64772 3848 -1 /data/user_de/0/com.google.android.youtube/cache +64772 3849 -1 /data/user_de/0/com.google.android.youtube/code_cache +64772 1581 -1 /data/user_de/0/com.google.android.youtube/shared_prefs +64772 2022 -1 /data/user_de/0/com.android.theme.color.green +64772 2023 -1 /data/user_de/0/com.android.theme.color.green/cache +64772 2024 -1 /data/user_de/0/com.android.theme.color.green/code_cache +64772 2027 -1 /data/user_de/0/com.android.theme.color.ocean +64772 2028 -1 /data/user_de/0/com.android.theme.color.ocean/cache +64772 2029 -1 /data/user_de/0/com.android.theme.color.ocean/code_cache +64772 2032 -1 /data/user_de/0/com.android.theme.color.space +64772 2033 -1 /data/user_de/0/com.android.theme.color.space/cache +64772 2034 -1 /data/user_de/0/com.android.theme.color.space/code_cache +64772 2037 -1 /data/user_de/0/com.android.internal.systemui.navbar.threebutton +64772 2038 -1 /data/user_de/0/com.android.internal.systemui.navbar.threebutton/cache +64772 2039 -1 /data/user_de/0/com.android.internal.systemui.navbar.threebutton/code_cache +64772 2042 -1 /data/user_de/0/com.qti.qualcomm.datastatusnotification +64772 2043 -1 /data/user_de/0/com.qti.qualcomm.datastatusnotification/cache +64772 2044 -1 /data/user_de/0/com.qti.qualcomm.datastatusnotification/code_cache +64772 3826 -1 /data/user_de/0/com.google.android.inputmethod.latin +64772 3827 -1 /data/user_de/0/com.google.android.inputmethod.latin/cache +64772 3828 -1 /data/user_de/0/com.google.android.inputmethod.latin/code_cache +64772 6294 -1 /data/user_de/0/com.google.android.inputmethod.latin/code_cache/com.android.opengl.shaders_cache +64772 6295 -1 /data/user_de/0/com.google.android.inputmethod.latin/code_cache/com.android.skia.shaders_cache +64772 1388 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs +64772 6614 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_ueh.xml +64772 2016 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_version_code.xml +64772 6621 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_preferences.xml +64772 7996 -1 /data/user_de/0/com.google.android.inputmethod.latin/shared_prefs/com.google.android.inputmethod.latin_transient_files.xml +64772 2361 -1 /data/user_de/0/com.google.android.inputmethod.latin/files +64772 2589 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/stylesheet_builtin_google_blue_light.binarypb_2_11_12 +64772 4817 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_7724d6d93521b516227a30295be1bf6c +64772 6174 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_04c2227f655d75cb36f1cdda9360ee2a +64772 6176 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_842c03411b05a8b093ab25d4f6b7500b +64772 6178 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_8584bab33d61b43f7aa67893e2d88147 +64772 7992 -1 /data/user_de/0/com.google.android.inputmethod.latin/files/keyboard_def_cache_73d920745e210535364ac93089e68d88 +64772 2060 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.launcher +64772 2061 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.launcher/cache +64772 2062 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.launcher/code_cache +64772 2065 -1 /data/user_de/0/com.android.egg +64772 2066 -1 /data/user_de/0/com.android.egg/cache +64772 2067 -1 /data/user_de/0/com.android.egg/code_cache +64772 2071 -1 /data/user_de/0/com.android.mtp +64772 2072 -1 /data/user_de/0/com.android.mtp/cache +64772 2073 -1 /data/user_de/0/com.android.mtp/code_cache +64772 2077 -1 /data/user_de/0/com.android.nfc +64772 2078 -1 /data/user_de/0/com.android.nfc/cache +64772 2079 -1 /data/user_de/0/com.android.nfc/code_cache +64772 2083 -1 /data/user_de/0/com.android.stk +64772 2084 -1 /data/user_de/0/com.android.stk/cache +64772 2085 -1 /data/user_de/0/com.android.stk/code_cache +64772 3990 -1 /data/user_de/0/com.google.ar.core +64772 3991 -1 /data/user_de/0/com.google.ar.core/cache +64772 3992 -1 /data/user_de/0/com.google.ar.core/code_cache +64772 2095 -1 /data/user_de/0/com.android.backupconfirm +64772 2096 -1 /data/user_de/0/com.android.backupconfirm/cache +64772 2097 -1 /data/user_de/0/com.android.backupconfirm/code_cache +64772 3859 -1 /data/user_de/0/com.google.android.overlay.pixelconfig2018 +64772 3860 -1 /data/user_de/0/com.google.android.overlay.pixelconfig2018/cache +64772 3861 -1 /data/user_de/0/com.google.android.overlay.pixelconfig2018/code_cache +64772 2108 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_vendor__ +64772 2109 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_vendor__/cache +64772 2110 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_vendor__/code_cache +64772 2114 -1 /data/user_de/0/com.android.internal.systemui.navbar.twobutton +64772 2115 -1 /data/user_de/0/com.android.internal.systemui.navbar.twobutton/cache +64772 2116 -1 /data/user_de/0/com.android.internal.systemui.navbar.twobutton/code_cache +64772 3996 -1 /data/user_de/0/com.android.vending +64772 3997 -1 /data/user_de/0/com.android.vending/cache +64772 3998 -1 /data/user_de/0/com.android.vending/code_cache +64772 5836 -1 /data/user_de/0/com.android.vending/shared_prefs +64772 2125 -1 /data/user_de/0/com.qualcomm.qti.radioconfiginterface +64772 2126 -1 /data/user_de/0/com.qualcomm.qti.radioconfiginterface/cache +64772 2127 -1 /data/user_de/0/com.qualcomm.qti.radioconfiginterface/code_cache +64772 2131 -1 /data/user_de/0/com.android.statementservice +64772 2132 -1 /data/user_de/0/com.android.statementservice/cache +64772 2133 -1 /data/user_de/0/com.android.statementservice/code_cache +64772 2137 -1 /data/user_de/0/com.android.hotspot2 +64772 2138 -1 /data/user_de/0/com.android.hotspot2/cache +64772 2139 -1 /data/user_de/0/com.android.hotspot2/code_cache +64772 3865 -1 /data/user_de/0/com.android.sdm.plugins.connmo +64772 3866 -1 /data/user_de/0/com.android.sdm.plugins.connmo/cache +64772 3867 -1 /data/user_de/0/com.android.sdm.plugins.connmo/code_cache +64772 2156 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_extra_wide_back +64772 2157 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_extra_wide_back/cache +64772 2158 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_extra_wide_back/code_cache +64772 2161 -1 /data/user_de/0/com.android.sharedstoragebackup +64772 2162 -1 /data/user_de/0/com.android.sharedstoragebackup/cache +64772 2163 -1 /data/user_de/0/com.android.sharedstoragebackup/code_cache +64772 2167 -1 /data/user_de/0/com.android.printspooler +64772 2168 -1 /data/user_de/0/com.android.printspooler/cache +64772 2169 -1 /data/user_de/0/com.android.printspooler/code_cache +64772 2173 -1 /data/user_de/0/com.android.theme.icon_pack.filled.settings +64772 2174 -1 /data/user_de/0/com.android.theme.icon_pack.filled.settings/cache +64772 2175 -1 /data/user_de/0/com.android.theme.icon_pack.filled.settings/code_cache +64772 3871 -1 /data/user_de/0/com.google.android.googlequicksearchbox +64772 3872 -1 /data/user_de/0/com.google.android.googlequicksearchbox/cache +64772 3873 -1 /data/user_de/0/com.google.android.googlequicksearchbox/code_cache +64772 9192 -1 /data/user_de/0/com.google.android.googlequicksearchbox/code_cache/com.android.opengl.shaders_cache +64772 9283 -1 /data/user_de/0/com.google.android.googlequicksearchbox/code_cache/com.android.skia.shaders_cache +64772 3937 -1 /data/user_de/0/com.verizon.obdm_permissions +64772 3938 -1 /data/user_de/0/com.verizon.obdm_permissions/cache +64772 3939 -1 /data/user_de/0/com.verizon.obdm_permissions/code_cache +64772 2197 -1 /data/user_de/0/com.android.dreams.basic +64772 2198 -1 /data/user_de/0/com.android.dreams.basic/cache +64772 2199 -1 /data/user_de/0/com.android.dreams.basic/code_cache +64772 4037 -1 /data/user_de/0/com.google.android.as +64772 4038 -1 /data/user_de/0/com.google.android.as/cache +64772 4039 -1 /data/user_de/0/com.google.android.as/code_cache +64772 6389 -1 /data/user_de/0/com.google.android.as/code_cache/com.android.opengl.shaders_cache +64772 6390 -1 /data/user_de/0/com.google.android.as/code_cache/com.android.skia.shaders_cache +64772 2209 -1 /data/user_de/0/com.android.se +64772 2210 -1 /data/user_de/0/com.android.se/cache +64772 2211 -1 /data/user_de/0/com.android.se/code_cache +64772 2215 -1 /data/user_de/0/com.android.bips +64772 2216 -1 /data/user_de/0/com.android.bips/cache +64772 2217 -1 /data/user_de/0/com.android.bips/code_cache +64772 2222 -1 /data/user_de/0/com.android.theme.icon_pack.circular.settings +64772 2223 -1 /data/user_de/0/com.android.theme.icon_pack.circular.settings/cache +64772 2224 -1 /data/user_de/0/com.android.theme.icon_pack.circular.settings/code_cache +64772 2227 -1 /data/user_de/0/com.qti.xdivert +64772 2228 -1 /data/user_de/0/com.qti.xdivert/cache +64772 2229 -1 /data/user_de/0/com.qti.xdivert/code_cache +64772 2233 -1 /data/user_de/0/com.android.musicfx +64772 2234 -1 /data/user_de/0/com.android.musicfx/cache +64772 2235 -1 /data/user_de/0/com.android.musicfx/code_cache +64772 2239 -1 /data/user_de/0/com.android.bluetooth.auto_generated_rro_vendor__ +64772 2240 -1 /data/user_de/0/com.android.bluetooth.auto_generated_rro_vendor__/cache +64772 2241 -1 /data/user_de/0/com.android.bluetooth.auto_generated_rro_vendor__/code_cache +64772 2245 -1 /data/user_de/0/com.android.cellbroadcastreceiver +64772 2246 -1 /data/user_de/0/com.android.cellbroadcastreceiver/cache +64772 2247 -1 /data/user_de/0/com.android.cellbroadcastreceiver/code_cache +64772 3454 -1 /data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs +64772 3457 -1 /data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/com.android.cellbroadcastreceiver_preferences.xml +64772 3456 -1 /data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/_has_set_default_values.xml +64772 2251 -1 /data/user_de/0/android.telephony.overlay.cmcc +64772 2252 -1 /data/user_de/0/android.telephony.overlay.cmcc/cache +64772 2253 -1 /data/user_de/0/android.telephony.overlay.cmcc/code_cache +64772 2258 -1 /data/user_de/0/com.android.theme.icon.teardrop +64772 2259 -1 /data/user_de/0/com.android.theme.icon.teardrop/cache +64772 2260 -1 /data/user_de/0/com.android.theme.icon.teardrop/code_cache +64772 3954 -1 /data/user_de/0/com.google.android.soundpicker +64772 3955 -1 /data/user_de/0/com.google.android.soundpicker/cache +64772 3956 -1 /data/user_de/0/com.google.android.soundpicker/code_cache +64772 2269 -1 /data/user_de/0/com.android.keychain +64772 2270 -1 /data/user_de/0/com.android.keychain/cache +64772 2271 -1 /data/user_de/0/com.android.keychain/code_cache +64772 3883 -1 /data/user_de/0/com.google.android.onetimeinitializer +64772 3884 -1 /data/user_de/0/com.google.android.onetimeinitializer/cache +64772 3885 -1 /data/user_de/0/com.google.android.onetimeinitializer/code_cache +64772 4043 -1 /data/user_de/0/com.google.android.gm +64772 4044 -1 /data/user_de/0/com.google.android.gm/cache +64772 4045 -1 /data/user_de/0/com.google.android.gm/code_cache +64772 2293 -1 /data/user_de/0/com.android.calllogbackup +64772 2294 -1 /data/user_de/0/com.android.calllogbackup/cache +64772 2295 -1 /data/user_de/0/com.android.calllogbackup/code_cache +64772 2299 -1 /data/user_de/0/com.android.safetyregulatoryinfo +64772 2300 -1 /data/user_de/0/com.android.safetyregulatoryinfo/cache +64772 2301 -1 /data/user_de/0/com.android.safetyregulatoryinfo/code_cache +64772 3942 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_product__ +64772 3943 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_product__/cache +64772 3944 -1 /data/user_de/0/com.android.systemui.auto_generated_rro_product__/code_cache +64772 4479 -1 /data/user_de/0/com.verizon.obdm +64772 4480 -1 /data/user_de/0/com.verizon.obdm/cache +64772 4481 -1 /data/user_de/0/com.verizon.obdm/code_cache +64772 2334 -1 /data/user_de/0/com.android.theme.icon_pack.circular.systemui +64772 2335 -1 /data/user_de/0/com.android.theme.icon_pack.circular.systemui/cache +64772 2336 -1 /data/user_de/0/com.android.theme.icon_pack.circular.systemui/code_cache +64772 2345 -1 /data/user_de/0/com.android.managedprovisioning +64772 2346 -1 /data/user_de/0/com.android.managedprovisioning/cache +64772 2347 -1 /data/user_de/0/com.android.managedprovisioning/code_cache +64772 2351 -1 /data/user_de/0/com.android.soundpicker +64772 2352 -1 /data/user_de/0/com.android.soundpicker/cache +64772 2353 -1 /data/user_de/0/com.android.soundpicker/code_cache +64772 3972 -1 /data/user_de/0/com.google.android.configupdater +64772 3973 -1 /data/user_de/0/com.google.android.configupdater/cache +64772 3974 -1 /data/user_de/0/com.google.android.configupdater/code_cache +64772 4097 -1 /data/user_de/0/com.google.android.angle +64772 4098 -1 /data/user_de/0/com.google.android.angle/cache +64772 4099 -1 /data/user_de/0/com.google.android.angle/code_cache +64772 2381 -1 /data/user_de/0/com.android.wallpaper.livepicker +64772 2382 -1 /data/user_de/0/com.android.wallpaper.livepicker/cache +64772 2383 -1 /data/user_de/0/com.android.wallpaper.livepicker/code_cache +64772 4109 -1 /data/user_de/0/com.google.android.music +64772 4110 -1 /data/user_de/0/com.google.android.music/cache +64772 4111 -1 /data/user_de/0/com.google.android.music/code_cache +64772 2411 -1 /data/user_de/0/com.android.bookmarkprovider +64772 2412 -1 /data/user_de/0/com.android.bookmarkprovider/cache +64772 2413 -1 /data/user_de/0/com.android.bookmarkprovider/code_cache +64772 2417 -1 /data/user_de/0/com.android.theme.icon_pack.filled.launcher +64772 2418 -1 /data/user_de/0/com.android.theme.icon_pack.filled.launcher/cache +64772 2419 -1 /data/user_de/0/com.android.theme.icon_pack.filled.launcher/code_cache +64772 3978 -1 /data/user_de/0/com.google.android.overlay.googlewebview +64772 3979 -1 /data/user_de/0/com.google.android.overlay.googlewebview/cache +64772 3980 -1 /data/user_de/0/com.google.android.overlay.googlewebview/code_cache +64772 2428 -1 /data/user_de/0/com.android.cts.ctsshim +64772 2429 -1 /data/user_de/0/com.android.cts.ctsshim/cache +64772 2430 -1 /data/user_de/0/com.android.cts.ctsshim/code_cache +64772 2433 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_vendor__ +64772 2434 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_vendor__/cache +64772 2435 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_vendor__/code_cache +64772 2451 -1 /data/user_de/0/com.qualcomm.qti.services.secureui +64772 2452 -1 /data/user_de/0/com.qualcomm.qti.services.secureui/cache +64772 2453 -1 /data/user_de/0/com.qualcomm.qti.services.secureui/code_cache +64772 2457 -1 /data/user_de/0/com.android.vpndialogs +64772 2458 -1 /data/user_de/0/com.android.vpndialogs/cache +64772 2459 -1 /data/user_de/0/com.android.vpndialogs/code_cache +64772 2469 -1 /data/user_de/0/com.android.theme.icon_pack.filled.themepicker +64772 2470 -1 /data/user_de/0/com.android.theme.icon_pack.filled.themepicker/cache +64772 2471 -1 /data/user_de/0/com.android.theme.icon_pack.filled.themepicker/code_cache +64772 2474 -1 /data/user_de/0/com.android.wallpaperbackup +64772 2475 -1 /data/user_de/0/com.android.wallpaperbackup/cache +64772 2476 -1 /data/user_de/0/com.android.wallpaperbackup/code_cache +64772 2480 -1 /data/user_de/0/com.android.providers.blockednumber +64772 2481 -1 /data/user_de/0/com.android.providers.blockednumber/cache +64772 2482 -1 /data/user_de/0/com.android.providers.blockednumber/code_cache +64772 3449 -1 /data/user_de/0/com.android.providers.blockednumber/shared_prefs +64772 2499 -1 /data/user_de/0/com.android.emergency +64772 2500 -1 /data/user_de/0/com.android.emergency/cache +64772 2501 -1 /data/user_de/0/com.android.emergency/code_cache +64772 5824 -1 /data/user_de/0/com.android.emergency/shared_prefs +64772 5848 -1 /data/user_de/0/com.android.emergency/shared_prefs/com.android.emergency_preferences.xml +64772 2510 -1 /data/user_de/0/com.android.theme.color.orchid +64772 2511 -1 /data/user_de/0/com.android.theme.color.orchid/cache +64772 2512 -1 /data/user_de/0/com.android.theme.color.orchid/code_cache +64772 4297 -1 /data/user_de/0/com.google.android.gms +64772 4298 -1 /data/user_de/0/com.google.android.gms/cache +64772 4983 -1 /data/user_de/0/com.google.android.gms/cache/.stage_update.lock +64772 4299 -1 /data/user_de/0/com.google.android.gms/code_cache +64772 4749 -1 /data/user_de/0/com.google.android.gms/code_cache/com.android.opengl.shaders_cache +64772 4701 -1 /data/user_de/0/com.google.android.gms/code_cache/com.android.skia.shaders_cache +64772 4969 -1 /data/user_de/0/com.google.android.gms/shared_prefs +64772 4810 -1 /data/user_de/0/com.google.android.gms/shared_prefs/init.initialized_version.xml +64772 1580 -1 /data/user_de/0/com.google.android.gms/shared_prefs/QosTierPref.xml +64772 6556 -1 /data/user_de/0/com.google.android.gms/shared_prefs/ChimeraConfigService.xml +64772 2268 -1 /data/user_de/0/com.google.android.gms/shared_prefs/gservices-direboot-cache.xml +64772 4982 -1 /data/user_de/0/com.google.android.gms/app_chimera +64772 4984 -1 /data/user_de/0/com.google.android.gms/app_chimera/m +64772 4986 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000 +64772 4987 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/AdsDynamite.apk +64772 4989 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/n +64772 9029 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat +64772 9030 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat/arm64 +64772 9032 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat/arm64/AdsDynamite.odex +64772 9033 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat/arm64/AdsDynamite.vdex +64772 9031 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000000/oat/AdsDynamite.apk.prof +64772 4991 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000001 +64772 4992 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000001/CronetDynamite.apk +64772 5001 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002 +64772 5002 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/DynamiteLoader.apk +64772 9042 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat +64772 9043 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat/arm64 +64772 9045 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat/arm64/DynamiteLoader.odex +64772 9046 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat/arm64/DynamiteLoader.vdex +64772 9044 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat/DynamiteLoader.apk.prof +64772 5004 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000003 +64772 5005 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000003/DynamiteModulesA.apk +64772 5012 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004 +64772 5013 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/DynamiteModulesC.apk +64772 9036 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat +64772 9037 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat/arm64 +64772 9039 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat/arm64/DynamiteModulesC.odex +64772 9040 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat/arm64/DynamiteModulesC.vdex +64772 9038 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000004/oat/DynamiteModulesC.apk.prof +64772 5015 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005 +64772 5016 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/GoogleCertificates.apk +64772 9048 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat +64772 9049 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm64 +64772 9051 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm64/GoogleCertificates.odex +64772 9052 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm64/GoogleCertificates.vdex +64772 9050 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/GoogleCertificates.apk.prof +64772 9054 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm +64772 9055 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm/GoogleCertificates.odex +64772 9056 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000005/oat/arm/GoogleCertificates.vdex +64772 5018 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000006 +64772 5019 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000006/MapsDynamite.apk +64772 5021 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000007 +64772 5022 -1 /data/user_de/0/com.google.android.gms/app_chimera/m/00000007/MeasurementDynamite.apk +64772 5032 -1 /data/user_de/0/com.google.android.gms/app_chimera/.config.lock +64772 6744 -1 /data/user_de/0/com.google.android.gms/app_chimera/current_fileapks.pb +64772 5035 -1 /data/user_de/0/com.google.android.gms/app_chimera/stored_modulesets.pb +64772 5039 -1 /data/user_de/0/com.google.android.gms/app_chimera/current_config.fb +64772 5033 -1 /data/user_de/0/com.google.android.gms/files +64772 5034 -1 /data/user_de/0/com.google.android.gms/files/gmscore_global_dirs.txt +64772 5040 -1 /data/user_de/0/com.google.android.gms/app_extracted_libs +64772 5044 -1 /data/user_de/0/com.google.android.gms/databases +64772 5045 -1 /data/user_de/0/com.google.android.gms/databases/phenotype.db +64772 5046 -1 /data/user_de/0/com.google.android.gms/databases/phenotype.db-journal +64772 1931 -1 /data/user_de/0/com.google.android.gms/databases/playlog.db +64772 2533 -1 /data/user_de/0/com.qualcomm.qti.confdialer +64772 2534 -1 /data/user_de/0/com.qualcomm.qti.confdialer/cache +64772 2535 -1 /data/user_de/0/com.qualcomm.qti.confdialer/code_cache +64772 2539 -1 /data/user_de/0/com.android.traceur +64772 2540 -1 /data/user_de/0/com.android.traceur/cache +64772 2541 -1 /data/user_de/0/com.android.traceur/code_cache +64772 2545 -1 /data/user_de/0/com.google.pixel.crosshatch.gamedriver +64772 2546 -1 /data/user_de/0/com.google.pixel.crosshatch.gamedriver/cache +64772 2547 -1 /data/user_de/0/com.google.pixel.crosshatch.gamedriver/code_cache +64772 4026 -1 /data/user_de/0/com.android.theme.font.arvolato +64772 4027 -1 /data/user_de/0/com.android.theme.font.arvolato/cache +64772 4028 -1 /data/user_de/0/com.android.theme.font.arvolato/code_cache +64772 2599 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_narrow_back +64772 2600 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_narrow_back/cache +64772 2601 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural_narrow_back/code_cache +64772 2615 -1 /data/user_de/0/com.android.theme.icon_pack.circular.android +64772 2616 -1 /data/user_de/0/com.android.theme.icon_pack.circular.android/cache +64772 2617 -1 /data/user_de/0/com.android.theme.icon_pack.circular.android/code_cache +64772 4008 -1 /data/user_de/0/com.google.android.apps.work.oobconfig +64772 4009 -1 /data/user_de/0/com.google.android.apps.work.oobconfig/cache +64772 4010 -1 /data/user_de/0/com.google.android.apps.work.oobconfig/code_cache +64772 4014 -1 /data/user_de/0/com.android.hotwordenrollment.xgoogle +64772 4015 -1 /data/user_de/0/com.android.hotwordenrollment.xgoogle/cache +64772 4016 -1 /data/user_de/0/com.android.hotwordenrollment.xgoogle/code_cache +64772 4020 -1 /data/user_de/0/com.google.android.pixel.setupwizard +64772 4021 -1 /data/user_de/0/com.google.android.pixel.setupwizard/cache +64772 4022 -1 /data/user_de/0/com.google.android.pixel.setupwizard/code_cache +64772 4031 -1 /data/user_de/0/com.google.android.deskclock +64772 4032 -1 /data/user_de/0/com.google.android.deskclock/cache +64772 4033 -1 /data/user_de/0/com.google.android.deskclock/code_cache +64772 1447 -1 /data/user_de/0/com.google.android.deskclock/shared_prefs +64772 1869 -1 /data/user_de/0/com.google.android.deskclock/shared_prefs/com.google.android.deskclock_preferences.xml +64772 2360 -1 /data/user_de/0/com.google.android.deskclock/databases +64772 2376 -1 /data/user_de/0/com.google.android.deskclock/databases/alarms.db +64772 2378 -1 /data/user_de/0/com.google.android.deskclock/databases/alarms.db-journal +64772 4049 -1 /data/user_de/0/com.google.android.carrier +64772 4050 -1 /data/user_de/0/com.google.android.carrier/cache +64772 4051 -1 /data/user_de/0/com.google.android.carrier/code_cache +64772 5029 -1 /data/user_de/0/com.google.android.carrier/shared_prefs +64772 6892 -1 /data/user_de/0/com.google.android.carrier/shared_prefs/com.google.android.carrier_preferences.xml +64772 6056 -1 /data/user_de/0/com.google.android.carrier/shared_prefs/com.google.android.gms.appid.xml +64772 1408 -1 /data/user_de/0/com.google.android.carrier/files +64772 5900 -1 /data/user_de/0/com.google.android.carrier/no_backup +64772 5901 -1 /data/user_de/0/com.google.android.carrier/no_backup/com.google.android.gms.appid-no-backup +64772 6055 -1 /data/user_de/0/com.google.android.carrier/no_backup/com.google.InstanceId.properties +64772 4073 -1 /data/user_de/0/com.google.android.setupwizard +64772 4074 -1 /data/user_de/0/com.google.android.setupwizard/cache +64772 4075 -1 /data/user_de/0/com.google.android.setupwizard/code_cache +64772 4945 -1 /data/user_de/0/com.google.android.setupwizard/shared_prefs +64772 3780 -1 /data/user_de/0/com.google.android.setupwizard/shared_prefs/SetupWizardPrefs.xml +64772 1595 -1 /data/user_de/0/com.google.android.setupwizard/shared_prefs/SetupWizardLocalPrefs.xml +64772 4091 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_product__ +64772 4092 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_product__/cache +64772 4093 -1 /data/user_de/0/com.android.nfc.auto_generated_rro_product__/code_cache +64772 4127 -1 /data/user_de/0/com.android.sdm.plugins.diagmon +64772 4128 -1 /data/user_de/0/com.android.sdm.plugins.diagmon/cache +64772 4129 -1 /data/user_de/0/com.android.sdm.plugins.diagmon/code_cache +64772 4151 -1 /data/user_de/0/com.android.providers.settings.auto_generated_rro_product__ +64772 4152 -1 /data/user_de/0/com.android.providers.settings.auto_generated_rro_product__/cache +64772 4153 -1 /data/user_de/0/com.android.providers.settings.auto_generated_rro_product__/code_cache +64772 4163 -1 /data/user_de/0/com.google.audio.hearing.visualization.accessibility.scribe +64772 4164 -1 /data/user_de/0/com.google.audio.hearing.visualization.accessibility.scribe/cache +64772 4165 -1 /data/user_de/0/com.google.audio.hearing.visualization.accessibility.scribe/code_cache +64772 4169 -1 /data/user_de/0/com.google.android.captiveportallogin +64772 4170 -1 /data/user_de/0/com.google.android.captiveportallogin/cache +64772 4171 -1 /data/user_de/0/com.google.android.captiveportallogin/code_cache +64772 4181 -1 /data/user_de/0/com.google.mds.permissions +64772 4182 -1 /data/user_de/0/com.google.mds.permissions/cache +64772 4183 -1 /data/user_de/0/com.google.mds.permissions/code_cache +64772 4187 -1 /data/user_de/0/com.google.android.apps.docs +64772 4188 -1 /data/user_de/0/com.google.android.apps.docs/cache +64772 4189 -1 /data/user_de/0/com.google.android.apps.docs/code_cache +64772 4199 -1 /data/user_de/0/com.google.android.apps.tips +64772 4200 -1 /data/user_de/0/com.google.android.apps.tips/cache +64772 4201 -1 /data/user_de/0/com.google.android.apps.tips/code_cache +64772 4215 -1 /data/user_de/0/com.google.android.markup +64772 4216 -1 /data/user_de/0/com.google.android.markup/cache +64772 4217 -1 /data/user_de/0/com.google.android.markup/code_cache +64772 4239 -1 /data/user_de/0/com.google.android.contacts +64772 4240 -1 /data/user_de/0/com.google.android.contacts/cache +64772 4241 -1 /data/user_de/0/com.google.android.contacts/code_cache +64772 4245 -1 /data/user_de/0/com.google.android.syncadapters.contacts +64772 4246 -1 /data/user_de/0/com.google.android.syncadapters.contacts/cache +64772 4247 -1 /data/user_de/0/com.google.android.syncadapters.contacts/code_cache +64772 4316 -1 /data/user_de/0/com.google.android.tag +64772 4317 -1 /data/user_de/0/com.google.android.tag/cache +64772 4318 -1 /data/user_de/0/com.google.android.tag/code_cache +64772 4280 -1 /data/user_de/0/com.android.bips.auto_generated_rro_product__ +64772 4281 -1 /data/user_de/0/com.android.bips.auto_generated_rro_product__/cache +64772 4282 -1 /data/user_de/0/com.android.bips.auto_generated_rro_product__/code_cache +64772 4286 -1 /data/user_de/0/com.google.android.packageinstaller +64772 4287 -1 /data/user_de/0/com.google.android.packageinstaller/cache +64772 4288 -1 /data/user_de/0/com.google.android.packageinstaller/code_cache +64772 6072 -1 /data/user_de/0/com.google.android.packageinstaller/no_backup +64772 4292 -1 /data/user_de/0/com.google.android.apps.customization.pixel +64772 4293 -1 /data/user_de/0/com.google.android.apps.customization.pixel/cache +64772 4294 -1 /data/user_de/0/com.google.android.apps.customization.pixel/code_cache +64772 4328 -1 /data/user_de/0/com.google.android.overlay.permissioncontroller +64772 4329 -1 /data/user_de/0/com.google.android.overlay.permissioncontroller/cache +64772 4330 -1 /data/user_de/0/com.google.android.overlay.permissioncontroller/code_cache +64772 4334 -1 /data/user_de/0/com.google.android.partnersetup +64772 4335 -1 /data/user_de/0/com.google.android.partnersetup/cache +64772 4336 -1 /data/user_de/0/com.google.android.partnersetup/code_cache +64772 4345 -1 /data/user_de/0/com.google.android.videos +64772 4346 -1 /data/user_de/0/com.google.android.videos/cache +64772 4347 -1 /data/user_de/0/com.google.android.videos/code_cache +64772 4357 -1 /data/user_de/0/com.google.RilConfigService +64772 4358 -1 /data/user_de/0/com.google.RilConfigService/cache +64772 4359 -1 /data/user_de/0/com.google.RilConfigService/code_cache +64772 4363 -1 /data/user_de/0/com.google.SSRestartDetector +64772 4364 -1 /data/user_de/0/com.google.SSRestartDetector/cache +64772 4365 -1 /data/user_de/0/com.google.SSRestartDetector/code_cache +64772 4369 -1 /data/user_de/0/com.customermobile.preload.vzw +64772 4370 -1 /data/user_de/0/com.customermobile.preload.vzw/cache +64772 4371 -1 /data/user_de/0/com.customermobile.preload.vzw/code_cache +64772 4391 -1 /data/user_de/0/com.google.android.feedback +64772 4392 -1 /data/user_de/0/com.google.android.feedback/cache +64772 4393 -1 /data/user_de/0/com.google.android.feedback/code_cache +64772 4397 -1 /data/user_de/0/com.google.android.printservice.recommendation +64772 4398 -1 /data/user_de/0/com.google.android.printservice.recommendation/cache +64772 4399 -1 /data/user_de/0/com.google.android.printservice.recommendation/code_cache +64772 4415 -1 /data/user_de/0/com.google.android.apps.internal.betterbug +64772 4416 -1 /data/user_de/0/com.google.android.apps.internal.betterbug/cache +64772 4417 -1 /data/user_de/0/com.google.android.apps.internal.betterbug/code_cache +64772 4427 -1 /data/user_de/0/com.android.providers.telephony.auto_generated_rro_product__ +64772 4428 -1 /data/user_de/0/com.android.providers.telephony.auto_generated_rro_product__/cache +64772 4429 -1 /data/user_de/0/com.android.providers.telephony.auto_generated_rro_product__/code_cache +64772 4449 -1 /data/user_de/0/com.google.android.overlay.pixelconfigcommon +64772 4450 -1 /data/user_de/0/com.google.android.overlay.pixelconfigcommon/cache +64772 4451 -1 /data/user_de/0/com.google.android.overlay.pixelconfigcommon/code_cache +64772 4461 -1 /data/user_de/0/com.google.android.apps.pixelmigrate +64772 4462 -1 /data/user_de/0/com.google.android.apps.pixelmigrate/cache +64772 4463 -1 /data/user_de/0/com.google.android.apps.pixelmigrate/code_cache +64772 4467 -1 /data/user_de/0/com.google.android.settings.intelligence +64772 4468 -1 /data/user_de/0/com.google.android.settings.intelligence/cache +64772 4469 -1 /data/user_de/0/com.google.android.settings.intelligence/code_cache +64772 4473 -1 /data/user_de/0/com.google.android.projection.gearhead +64772 4474 -1 /data/user_de/0/com.google.android.projection.gearhead/cache +64772 4475 -1 /data/user_de/0/com.google.android.projection.gearhead/code_cache +64772 4509 -1 /data/user_de/0/com.android.omadm.service +64772 4510 -1 /data/user_de/0/com.android.omadm.service/cache +64772 4512 -1 /data/user_de/0/com.android.omadm.service/code_cache +64772 4540 -1 /data/user_de/0/com.google.googlecbrs +64772 4541 -1 /data/user_de/0/com.google.googlecbrs/cache +64772 4542 -1 /data/user_de/0/com.google.googlecbrs/code_cache +64772 4546 -1 /data/user_de/0/com.google.vr.vrcore +64772 4547 -1 /data/user_de/0/com.google.vr.vrcore/cache +64772 4549 -1 /data/user_de/0/com.google.vr.vrcore/code_cache +64772 4559 -1 /data/user_de/0/com.google.vr.apps.ornament +64772 4560 -1 /data/user_de/0/com.google.vr.apps.ornament/cache +64772 4561 -1 /data/user_de/0/com.google.vr.apps.ornament/code_cache +64772 4565 -1 /data/user_de/0/com.google.android.gms.location.history +64772 4566 -1 /data/user_de/0/com.google.android.gms.location.history/cache +64772 4567 -1 /data/user_de/0/com.google.android.gms.location.history/code_cache +64772 4572 -1 /data/user_de/0/com.android.pixellogger +64772 4573 -1 /data/user_de/0/com.android.pixellogger/cache +64772 4574 -1 /data/user_de/0/com.android.pixellogger/code_cache +64772 4602 -1 /data/user_de/0/com.google.android.apps.helprtc +64772 4603 -1 /data/user_de/0/com.google.android.apps.helprtc/cache +64772 4604 -1 /data/user_de/0/com.google.android.apps.helprtc/code_cache +64772 4614 -1 /data/user_de/0/com.google.mds +64772 4615 -1 /data/user_de/0/com.google.mds/cache +64772 4616 -1 /data/user_de/0/com.google.mds/code_cache +64772 4620 -1 /data/user_de/0/com.android.phone.auto_generated_rro_product__ +64772 4621 -1 /data/user_de/0/com.android.phone.auto_generated_rro_product__/cache +64772 4622 -1 /data/user_de/0/com.android.phone.auto_generated_rro_product__/code_cache +64772 4638 -1 /data/user_de/0/com.google.android.apps.gcs +64772 4639 -1 /data/user_de/0/com.google.android.apps.gcs/cache +64772 4640 -1 /data/user_de/0/com.google.android.apps.gcs/code_cache +64772 4662 -1 /data/user_de/0/com.verizon.llkagent +64772 4663 -1 /data/user_de/0/com.verizon.llkagent/cache +64772 4664 -1 /data/user_de/0/com.verizon.llkagent/code_cache +64772 4668 -1 /data/user_de/0/com.android.vzwomatrigger +64772 4669 -1 /data/user_de/0/com.android.vzwomatrigger/cache +64772 4670 -1 /data/user_de/0/com.android.vzwomatrigger/code_cache +64772 2288 -1 /data/user_de/0/com.android.theme.icon_pack.filled.systemui +64772 2289 -1 /data/user_de/0/com.android.theme.icon_pack.filled.systemui/cache +64772 2290 -1 /data/user_de/0/com.android.theme.icon_pack.filled.systemui/code_cache +64772 2305 -1 /data/user_de/0/com.android.localtransport +64772 2306 -1 /data/user_de/0/com.android.localtransport/cache +64772 2307 -1 /data/user_de/0/com.android.localtransport/code_cache +64772 2317 -1 /data/user_de/0/com.android.carrierdefaultapp +64772 2318 -1 /data/user_de/0/com.android.carrierdefaultapp/cache +64772 2319 -1 /data/user_de/0/com.android.carrierdefaultapp/code_cache +64772 2328 -1 /data/user_de/0/com.android.theme.icon_pack.filled.android +64772 2329 -1 /data/user_de/0/com.android.theme.icon_pack.filled.android/cache +64772 2330 -1 /data/user_de/0/com.android.theme.icon_pack.filled.android/code_cache +64772 3895 -1 /data/user_de/0/com.google.android.apps.diagnosticstool +64772 3896 -1 /data/user_de/0/com.google.android.apps.diagnosticstool/cache +64772 3897 -1 /data/user_de/0/com.google.android.apps.diagnosticstool/code_cache +64772 4055 -1 /data/user_de/0/com.android.sdm.plugins.sprintdm +64772 4056 -1 /data/user_de/0/com.android.sdm.plugins.sprintdm/cache +64772 4057 -1 /data/user_de/0/com.android.sdm.plugins.sprintdm/code_cache +64772 2368 -1 /data/user_de/0/com.android.providers.partnerbookmarks +64772 2369 -1 /data/user_de/0/com.android.providers.partnerbookmarks/cache +64772 2370 -1 /data/user_de/0/com.android.providers.partnerbookmarks/code_cache +64772 2387 -1 /data/user_de/0/com.android.phone.auto_generated_rro_vendor__ +64772 2388 -1 /data/user_de/0/com.android.phone.auto_generated_rro_vendor__/cache +64772 2389 -1 /data/user_de/0/com.android.phone.auto_generated_rro_vendor__/code_cache +64772 2399 -1 /data/user_de/0/com.android.theme.icon.squircle +64772 2400 -1 /data/user_de/0/com.android.theme.icon.squircle/cache +64772 2401 -1 /data/user_de/0/com.android.theme.icon.squircle/code_cache +64772 4061 -1 /data/user_de/0/com.android.ramdump +64772 4062 -1 /data/user_de/0/com.android.ramdump/cache +64772 4063 -1 /data/user_de/0/com.android.ramdump/code_cache +64772 2439 -1 /data/user_de/0/com.android.theme.icon_pack.circular.launcher +64772 2440 -1 /data/user_de/0/com.android.theme.icon_pack.circular.launcher/cache +64772 2441 -1 /data/user_de/0/com.android.theme.icon_pack.circular.launcher/code_cache +64772 2445 -1 /data/user_de/0/com.qti.diagservices +64772 2446 -1 /data/user_de/0/com.qti.diagservices/cache +64772 2447 -1 /data/user_de/0/com.qti.diagservices/code_cache +64772 3907 -1 /data/user_de/0/com.google.android.trichromelibrary_386509238 +64772 3908 -1 /data/user_de/0/com.google.android.trichromelibrary_386509238/cache +64772 3909 -1 /data/user_de/0/com.google.android.trichromelibrary_386509238/code_cache +64772 2493 -1 /data/user_de/0/com.android.providers.userdictionary +64772 2494 -1 /data/user_de/0/com.android.providers.userdictionary/cache +64772 2495 -1 /data/user_de/0/com.android.providers.userdictionary/code_cache +64772 2505 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural +64772 2506 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural/cache +64772 2507 -1 /data/user_de/0/com.android.internal.systemui.navbar.gestural/code_cache +64772 2522 -1 /data/user_de/0/com.android.theme.color.purple +64772 2523 -1 /data/user_de/0/com.android.theme.color.purple/cache +64772 2524 -1 /data/user_de/0/com.android.theme.color.purple/code_cache +64772 2527 -1 /data/user_de/0/com.android.bluetoothmidiservice +64772 2528 -1 /data/user_de/0/com.android.bluetoothmidiservice/cache +64772 2529 -1 /data/user_de/0/com.android.bluetoothmidiservice/code_cache +64772 2550 -1 /data/user_de/0/com.android.bluetooth +64772 2551 -1 /data/user_de/0/com.android.bluetooth/cache +64772 2552 -1 /data/user_de/0/com.android.bluetooth/code_cache +64772 2702 -1 /data/user_de/0/com.android.bluetooth/databases +64772 2704 -1 /data/user_de/0/com.android.bluetooth/databases/bluetooth_db +64772 2706 -1 /data/user_de/0/com.android.bluetooth/databases/bluetooth_db-wal +64772 2707 -1 /data/user_de/0/com.android.bluetooth/databases/bluetooth_db-shm +64772 3378 -1 /data/user_de/0/com.android.bluetooth/databases/btopp.db +64772 3379 -1 /data/user_de/0/com.android.bluetooth/databases/btopp.db-journal +64772 2703 -1 /data/user_de/0/com.android.bluetooth/shared_prefs +64772 3377 -1 /data/user_de/0/com.android.bluetooth/shared_prefs/bluetooth_volume_map.xml +64772 3394 -1 /data/user_de/0/com.android.bluetooth/shared_prefs/OPPMGR.xml +64772 2556 -1 /data/user_de/0/com.qualcomm.timeservice +64772 2557 -1 /data/user_de/0/com.qualcomm.timeservice/cache +64772 2558 -1 /data/user_de/0/com.qualcomm.timeservice/code_cache +64772 2563 -1 /data/user_de/0/com.qualcomm.atfwd +64772 2564 -1 /data/user_de/0/com.qualcomm.atfwd/cache +64772 2565 -1 /data/user_de/0/com.qualcomm.atfwd/code_cache +64772 4067 -1 /data/user_de/0/com.google.intelligence.sense +64772 4068 -1 /data/user_de/0/com.google.intelligence.sense/cache +64772 4069 -1 /data/user_de/0/com.google.intelligence.sense/code_cache +64772 2576 -1 /data/user_de/0/com.qualcomm.embms +64772 2577 -1 /data/user_de/0/com.qualcomm.embms/cache +64772 2578 -1 /data/user_de/0/com.qualcomm.embms/code_cache +64772 2582 -1 /data/user_de/0/com.android.providers.contacts +64772 2583 -1 /data/user_de/0/com.android.providers.contacts/cache +64772 2584 -1 /data/user_de/0/com.android.providers.contacts/code_cache +64772 3412 -1 /data/user_de/0/com.android.providers.contacts/databases +64772 3413 -1 /data/user_de/0/com.android.providers.contacts/databases/calllog_shadow.db +64772 3414 -1 /data/user_de/0/com.android.providers.contacts/databases/calllog_shadow.db-journal +64772 2594 -1 /data/user_de/0/com.android.theme.icon.roundedrect +64772 2595 -1 /data/user_de/0/com.android.theme.icon.roundedrect/cache +64772 2596 -1 /data/user_de/0/com.android.theme.icon.roundedrect/code_cache +64772 2604 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.settings +64772 2605 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.settings/cache +64772 2606 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.settings/code_cache +64772 2609 -1 /data/user_de/0/android.auto_generated_rro_vendor__ +64772 2610 -1 /data/user_de/0/android.auto_generated_rro_vendor__/cache +64772 2611 -1 /data/user_de/0/android.auto_generated_rro_vendor__/code_cache +64772 3913 -1 /data/user_de/0/com.android.simappdialog.auto_generated_rro_product__ +64772 3914 -1 /data/user_de/0/com.android.simappdialog.auto_generated_rro_product__/cache +64772 3915 -1 /data/user_de/0/com.android.simappdialog.auto_generated_rro_product__/code_cache +64772 3919 -1 /data/user_de/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__ +64772 3920 -1 /data/user_de/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__/cache +64772 3921 -1 /data/user_de/0/com.android.safetyregulatoryinfo.auto_generated_rro_product__/code_cache +64772 3925 -1 /data/user_de/0/com.google.android.apps.enterprise.dmagent +64772 3926 -1 /data/user_de/0/com.google.android.apps.enterprise.dmagent/cache +64772 3927 -1 /data/user_de/0/com.google.android.apps.enterprise.dmagent/code_cache +64772 3931 -1 /data/user_de/0/com.google.android.connectivitymonitor +64772 3932 -1 /data/user_de/0/com.google.android.connectivitymonitor/cache +64772 3933 -1 /data/user_de/0/com.google.android.connectivitymonitor/code_cache +64772 3948 -1 /data/user_de/0/com.google.android.apps.messaging +64772 3949 -1 /data/user_de/0/com.google.android.apps.messaging/cache +64772 3950 -1 /data/user_de/0/com.google.android.apps.messaging/code_cache +64772 3966 -1 /data/user_de/0/android.autoinstalls.config.google.nexus +64772 3967 -1 /data/user_de/0/android.autoinstalls.config.google.nexus/cache +64772 3968 -1 /data/user_de/0/android.autoinstalls.config.google.nexus/code_cache +64772 3984 -1 /data/user_de/0/com.google.android.apps.safetyhub +64772 3985 -1 /data/user_de/0/com.google.android.apps.safetyhub/cache +64772 3986 -1 /data/user_de/0/com.google.android.apps.safetyhub/code_cache +64772 1621 -1 /data/user_de/0/com.google.android.apps.safetyhub/files +64772 5862 -1 /data/user_de/0/com.google.android.apps.safetyhub/files/LockScreenDeviceEncryptedDataStore.pb +64772 4002 -1 /data/user_de/0/com.google.android.marvin.talkback +64772 4003 -1 /data/user_de/0/com.google.android.marvin.talkback/cache +64772 4004 -1 /data/user_de/0/com.google.android.marvin.talkback/code_cache +64772 4079 -1 /data/user_de/0/com.google.android.netgrapher +64772 4080 -1 /data/user_de/0/com.google.android.netgrapher/cache +64772 4081 -1 /data/user_de/0/com.google.android.netgrapher/code_cache +64772 4085 -1 /data/user_de/0/com.verizon.services +64772 4086 -1 /data/user_de/0/com.verizon.services/cache +64772 4087 -1 /data/user_de/0/com.verizon.services/code_cache +64772 4103 -1 /data/user_de/0/com.google.android.euicc +64772 4104 -1 /data/user_de/0/com.google.android.euicc/cache +64772 4105 -1 /data/user_de/0/com.google.android.euicc/code_cache +64772 4985 -1 /data/user_de/0/com.google.android.euicc/shared_prefs +64772 6572 -1 /data/user_de/0/com.google.android.euicc/shared_prefs/euicc_google.xml +64772 6756 -1 /data/user_de/0/com.google.android.euicc/shared_prefs/euicc.xml +64772 4115 -1 /data/user_de/0/com.google.android.volta +64772 4116 -1 /data/user_de/0/com.google.android.volta/cache +64772 4117 -1 /data/user_de/0/com.google.android.volta/code_cache +64772 4121 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle +64772 4122 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle/cache +64772 4123 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle/code_cache +64772 5551 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle/code_cache/com.android.opengl.shaders_cache +64772 5552 -1 /data/user_de/0/com.android.hotwordenrollment.okgoogle/code_cache/com.android.skia.shaders_cache +64772 4157 -1 /data/user_de/0/com.google.android.apps.wellbeing +64772 4158 -1 /data/user_de/0/com.google.android.apps.wellbeing/cache +64772 4159 -1 /data/user_de/0/com.google.android.apps.wellbeing/code_cache +64772 5349 -1 /data/user_de/0/com.google.android.apps.wellbeing/files +64772 4904 -1 /data/user_de/0/com.google.android.apps.wellbeing/files/DeviceEncryptedWindDownPreferences.pb +64772 3018 -1 /data/user_de/0/com.google.android.apps.wellbeing/files/DndPreferences.pb +64772 4175 -1 /data/user_de/0/com.google.android.accessibility.soundamplifier +64772 4176 -1 /data/user_de/0/com.google.android.accessibility.soundamplifier/cache +64772 4177 -1 /data/user_de/0/com.google.android.accessibility.soundamplifier/code_cache +64772 4193 -1 /data/user_de/0/com.google.android.apps.maps +64772 4194 -1 /data/user_de/0/com.google.android.apps.maps/cache +64772 4195 -1 /data/user_de/0/com.google.android.apps.maps/code_cache +64772 4205 -1 /data/user_de/0/com.google.android.documentsui.theme.pixel +64772 4206 -1 /data/user_de/0/com.google.android.documentsui.theme.pixel/cache +64772 4207 -1 /data/user_de/0/com.google.android.documentsui.theme.pixel/code_cache +64772 4210 -1 /data/user_de/0/com.google.android.modulemetadata +64772 4211 -1 /data/user_de/0/com.google.android.modulemetadata/cache +64772 4212 -1 /data/user_de/0/com.google.android.modulemetadata/code_cache +64772 4221 -1 /data/user_de/0/com.google.android.webview +64772 4222 -1 /data/user_de/0/com.google.android.webview/cache +64772 4223 -1 /data/user_de/0/com.google.android.webview/code_cache +64772 4227 -1 /data/user_de/0/com.google.android.apps.carrier.log +64772 4228 -1 /data/user_de/0/com.google.android.apps.carrier.log/cache +64772 4229 -1 /data/user_de/0/com.google.android.apps.carrier.log/code_cache +64772 4233 -1 /data/user_de/0/com.google.android.networkstack +64772 4234 -1 /data/user_de/0/com.google.android.networkstack/cache +64772 4235 -1 /data/user_de/0/com.google.android.networkstack/code_cache +64772 4934 -1 /data/user_de/0/com.google.android.networkstack/databases +64772 4935 -1 /data/user_de/0/com.google.android.networkstack/databases/IpMemoryStore.db +64772 4936 -1 /data/user_de/0/com.google.android.networkstack/databases/IpMemoryStore.db-journal +64772 4251 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.themepicker +64772 4252 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.themepicker/cache +64772 4253 -1 /data/user_de/0/com.android.theme.icon_pack.rounded.themepicker/code_cache +64772 4256 -1 /data/user_de/0/com.android.server.telecom.auto_generated_rro_product__ +64772 4257 -1 /data/user_de/0/com.android.server.telecom.auto_generated_rro_product__/cache +64772 4258 -1 /data/user_de/0/com.android.server.telecom.auto_generated_rro_product__/code_cache +64772 4262 -1 /data/user_de/0/com.google.android.overlay.googleconfig +64772 4263 -1 /data/user_de/0/com.google.android.overlay.googleconfig/cache +64772 4264 -1 /data/user_de/0/com.google.android.overlay.googleconfig/code_cache +64772 4268 -1 /data/user_de/0/com.google.android.calculator +64772 4269 -1 /data/user_de/0/com.google.android.calculator/cache +64772 4270 -1 /data/user_de/0/com.google.android.calculator/code_cache +64772 7074 -1 /data/user_de/0/com.google.android.calculator/code_cache/com.android.opengl.shaders_cache +64772 7075 -1 /data/user_de/0/com.google.android.calculator/code_cache/com.android.skia.shaders_cache +64772 4274 -1 /data/user_de/0/com.android.chrome +64772 4275 -1 /data/user_de/0/com.android.chrome/cache +64772 4276 -1 /data/user_de/0/com.android.chrome/code_cache +64772 4303 -1 /data/user_de/0/com.google.android.gsf +64772 4304 -1 /data/user_de/0/com.google.android.gsf/cache +64772 4305 -1 /data/user_de/0/com.google.android.gsf/code_cache +64772 4309 -1 /data/user_de/0/com.google.android.ims +64772 4310 -1 /data/user_de/0/com.google.android.ims/cache +64772 4311 -1 /data/user_de/0/com.google.android.ims/code_cache +64772 4322 -1 /data/user_de/0/com.google.android.tts +64772 4323 -1 /data/user_de/0/com.google.android.tts/cache +64772 4324 -1 /data/user_de/0/com.google.android.tts/code_cache +64772 9198 -1 /data/user_de/0/com.google.android.tts/shared_prefs +64772 9256 -1 /data/user_de/0/com.google.android.tts/app_pm_workaround +64772 9257 -1 /data/user_de/0/com.google.android.tts/files +64772 9113 -1 /data/user_de/0/com.google.android.tts/files/integrity_cache +64772 9225 -1 /data/user_de/0/com.google.android.tts/app_voices_greco_v16 +64772 9242 -1 /data/user_de/0/com.google.android.tts/app_patts +64772 5865 -1 /data/user_de/0/com.google.android.tts/app_voices +64772 4340 -1 /data/user_de/0/com.google.android.apps.wallpaper.nexus +64772 4341 -1 /data/user_de/0/com.google.android.apps.wallpaper.nexus/cache +64772 4342 -1 /data/user_de/0/com.google.android.apps.wallpaper.nexus/code_cache +64772 4351 -1 /data/user_de/0/com.google.android.apps.nexuslauncher +64772 4352 -1 /data/user_de/0/com.google.android.apps.nexuslauncher/cache +64772 4353 -1 /data/user_de/0/com.google.android.apps.nexuslauncher/code_cache +64772 8109 -1 /data/user_de/0/com.google.android.apps.nexuslauncher/code_cache/com.android.skia.shaders_cache +64772 8112 -1 /data/user_de/0/com.google.android.apps.nexuslauncher/code_cache/com.android.opengl.shaders_cache +64772 4375 -1 /data/user_de/0/com.android.theme.font.arbutussource +64772 4376 -1 /data/user_de/0/com.android.theme.font.arbutussource/cache +64772 4377 -1 /data/user_de/0/com.android.theme.font.arbutussource/code_cache +64772 4380 -1 /data/user_de/0/com.android.theme.font.rubikrubik +64772 4381 -1 /data/user_de/0/com.android.theme.font.rubikrubik/cache +64772 4382 -1 /data/user_de/0/com.android.theme.font.rubikrubik/code_cache +64772 4385 -1 /data/user_de/0/com.android.providers.contacts.auto_generated_rro_product__ +64772 4386 -1 /data/user_de/0/com.android.providers.contacts.auto_generated_rro_product__/cache +64772 4387 -1 /data/user_de/0/com.android.providers.contacts.auto_generated_rro_product__/code_cache +64772 4403 -1 /data/user_de/0/com.google.android.apps.photos +64772 4404 -1 /data/user_de/0/com.google.android.apps.photos/cache +64772 4405 -1 /data/user_de/0/com.google.android.apps.photos/code_cache +64772 4409 -1 /data/user_de/0/com.google.android.calendar +64772 4410 -1 /data/user_de/0/com.google.android.calendar/cache +64772 4411 -1 /data/user_de/0/com.google.android.calendar/code_cache +64772 4421 -1 /data/user_de/0/com.android.sdm.plugins.dcmo +64772 4422 -1 /data/user_de/0/com.android.sdm.plugins.dcmo/cache +64772 4423 -1 /data/user_de/0/com.android.sdm.plugins.dcmo/code_cache +64772 4433 -1 /data/user_de/0/com.android.server.wifistack.permissionconfig +64772 4434 -1 /data/user_de/0/com.android.server.wifistack.permissionconfig/cache +64772 4435 -1 /data/user_de/0/com.android.server.wifistack.permissionconfig/code_cache +64772 4443 -1 /data/user_de/0/com.google.android.networkstack.permissionconfig +64772 4444 -1 /data/user_de/0/com.google.android.networkstack.permissionconfig/cache +64772 4445 -1 /data/user_de/0/com.google.android.networkstack.permissionconfig/code_cache +64772 4455 -1 /data/user_de/0/com.google.android.wfcactivation +64772 4456 -1 /data/user_de/0/com.google.android.wfcactivation/cache +64772 4457 -1 /data/user_de/0/com.google.android.wfcactivation/code_cache +64772 4485 -1 /data/user_de/0/com.google.android.apps.scone +64772 4486 -1 /data/user_de/0/com.google.android.apps.scone/cache +64772 4487 -1 /data/user_de/0/com.google.android.apps.scone/code_cache +64772 1601 -1 /data/user_de/0/com.google.android.apps.scone/databases +64772 1602 -1 /data/user_de/0/com.google.android.apps.scone/databases/call_data_logs.db +64772 1604 -1 /data/user_de/0/com.google.android.apps.scone/databases/call_data_logs.db-journal +64772 1617 -1 /data/user_de/0/com.google.android.apps.scone/databases/androidx.work.workdb +64772 1622 -1 /data/user_de/0/com.google.android.apps.scone/databases/androidx.work.workdb-wal +64772 1623 -1 /data/user_de/0/com.google.android.apps.scone/databases/androidx.work.workdb-shm +64772 1757 -1 /data/user_de/0/com.google.android.apps.scone/databases/com.google.modemservice +64772 1759 -1 /data/user_de/0/com.google.android.apps.scone/databases/com.google.modemservice-journal +64772 1628 -1 /data/user_de/0/com.google.android.apps.scone/shared_prefs +64772 5867 -1 /data/user_de/0/com.google.android.apps.scone/shared_prefs/scone_awareness.xml +64772 5868 -1 /data/user_de/0/com.google.android.apps.scone/shared_prefs/scone_oos_timeline.xml +64772 6973 -1 /data/user_de/0/com.google.android.apps.scone/shared_prefs/scone_phenotype.xml +64772 4491 -1 /data/user_de/0/com.google.android.apps.turbo +64772 4492 -1 /data/user_de/0/com.google.android.apps.turbo/cache +64772 4493 -1 /data/user_de/0/com.google.android.apps.turbo/code_cache +64772 4503 -1 /data/user_de/0/com.google.android.tetheringentitlement +64772 4504 -1 /data/user_de/0/com.google.android.tetheringentitlement/cache +64772 4505 -1 /data/user_de/0/com.google.android.tetheringentitlement/code_cache +64772 4516 -1 /data/user_de/0/com.google.android.apps.dreamliner +64772 4517 -1 /data/user_de/0/com.google.android.apps.dreamliner/cache +64772 4518 -1 /data/user_de/0/com.google.android.apps.dreamliner/code_cache +64772 4522 -1 /data/user_de/0/com.google.android.apps.wearables.maestro.companion +64772 4523 -1 /data/user_de/0/com.google.android.apps.wearables.maestro.companion/cache +64772 4524 -1 /data/user_de/0/com.google.android.apps.wearables.maestro.companion/code_cache +64772 4528 -1 /data/user_de/0/com.google.android.hiddenmenu +64772 4529 -1 /data/user_de/0/com.google.android.hiddenmenu/cache +64772 4530 -1 /data/user_de/0/com.google.android.hiddenmenu/code_cache +64772 4534 -1 /data/user_de/0/com.google.android.apps.wallpaper +64772 4535 -1 /data/user_de/0/com.google.android.apps.wallpaper/cache +64772 4536 -1 /data/user_de/0/com.google.android.apps.wallpaper/code_cache +64772 4578 -1 /data/user_de/0/com.google.android.hardwareinfo +64772 4579 -1 /data/user_de/0/com.google.android.hardwareinfo/cache +64772 4580 -1 /data/user_de/0/com.google.android.hardwareinfo/code_cache +64772 4584 -1 /data/user_de/0/com.qti.ltebc +64772 4585 -1 /data/user_de/0/com.qti.ltebc/cache +64772 4586 -1 /data/user_de/0/com.qti.ltebc/code_cache +64772 4590 -1 /data/user_de/0/com.google.android.dreamlinerupdater +64772 4591 -1 /data/user_de/0/com.google.android.dreamlinerupdater/cache +64772 4592 -1 /data/user_de/0/com.google.android.dreamlinerupdater/code_cache +64772 4596 -1 /data/user_de/0/com.tmobile.planprovider +64772 4597 -1 /data/user_de/0/com.tmobile.planprovider/cache +64772 4598 -1 /data/user_de/0/com.tmobile.planprovider/code_cache +64772 4608 -1 /data/user_de/0/qualcomm.com.vzw_msdc_api +64772 4609 -1 /data/user_de/0/qualcomm.com.vzw_msdc_api/cache +64772 4610 -1 /data/user_de/0/qualcomm.com.vzw_msdc_api/code_cache +64772 4626 -1 /data/user_de/0/com.google.android.gms.setup +64772 4627 -1 /data/user_de/0/com.google.android.gms.setup/cache +64772 4628 -1 /data/user_de/0/com.google.android.gms.setup/code_cache +64772 4632 -1 /data/user_de/0/android.auto_generated_rro_product__ +64772 4633 -1 /data/user_de/0/android.auto_generated_rro_product__/cache +64772 4634 -1 /data/user_de/0/android.auto_generated_rro_product__/code_cache +64772 4644 -1 /data/user_de/0/com.google.android.GoogleCamera +64772 4645 -1 /data/user_de/0/com.google.android.GoogleCamera/cache +64772 4646 -1 /data/user_de/0/com.google.android.GoogleCamera/code_cache +64772 9621 -1 /data/user_de/0/com.google.android.GoogleCamera/code_cache/com.android.opengl.shaders_cache +64772 9623 -1 /data/user_de/0/com.google.android.GoogleCamera/code_cache/com.android.skia.shaders_cache +64772 4650 -1 /data/user_de/0/com.google.android.vendorloggingservice +64772 4651 -1 /data/user_de/0/com.google.android.vendorloggingservice/cache +64772 4652 -1 /data/user_de/0/com.google.android.vendorloggingservice/code_cache +64772 4656 -1 /data/user_de/0/com.android.connectivity.metrics +64772 4657 -1 /data/user_de/0/com.android.connectivity.metrics/cache +64772 4658 -1 /data/user_de/0/com.android.connectivity.metrics/code_cache +64772 4674 -1 /data/user_de/0/com.google.android.storagemanager +64772 4675 -1 /data/user_de/0/com.google.android.storagemanager/cache +64772 4676 -1 /data/user_de/0/com.google.android.storagemanager/code_cache +64772 108 -1 /data/media +64772 2792 -1 /data/media/0 +64772 3330 -1 /data/media/0/Android +64772 3331 -1 /data/media/0/Android/obb +64772 3599 -1 /data/media/0/Android/obb/.nomedia +64772 1566 -1 /data/media/0/Android/data +64772 1567 -1 /data/media/0/Android/data/.nomedia +64772 1568 -1 /data/media/0/Android/data/com.google.android.gms +64772 1569 -1 /data/media/0/Android/data/com.google.android.gms/files +64772 1630 -1 /data/media/0/Android/data/com.google.android.music +64772 1631 -1 /data/media/0/Android/data/com.google.android.music/files +64772 1634 -1 /data/media/0/Android/data/com.google.android.music/files/._playmusicid +64772 1993 -1 /data/media/0/Android/data/com.google.android.youtube +64772 2001 -1 /data/media/0/Android/data/com.google.android.youtube/files +64772 2019 -1 /data/media/0/Android/data/com.google.android.youtube/cache +64772 2059 -1 /data/media/0/Android/data/com.google.android.youtube/cache/exo +64772 2191 -1 /data/media/0/Android/data/com.google.android.youtube/cache/exo/7bf85c38c57e9cd6.uid +64772 4821 -1 /data/media/0/Android/data/com.qti.ltebc +64772 4825 -1 /data/media/0/Android/data/com.qti.ltebc/files +64772 5043 -1 /data/media/0/Android/data/com.android.pixellogger +64772 4998 -1 /data/media/0/Android/data/com.android.pixellogger/files +64772 4877 -1 /data/media/0/Android/data/com.google.android.apps.docs +64772 4714 -1 /data/media/0/Android/data/com.google.android.apps.docs/cache +64772 7063 -1 /data/media/0/Android/data/com.google.android.apps.docs/files +64772 7065 -1 /data/media/0/Android/data/com.google.android.apps.docs/files/pinned_docs_files_do_not_edit +64772 5746 -1 /data/media/0/Android/data/com.google.android.apps.maps +64772 5747 -1 /data/media/0/Android/data/com.google.android.apps.maps/files +64772 5748 -1 /data/media/0/Android/data/com.google.android.apps.maps/testdata +64772 5751 -1 /data/media/0/Android/data/com.google.android.apps.maps/cache +64772 5752 -1 /data/media/0/Android/data/com.android.vending +64772 5753 -1 /data/media/0/Android/data/com.android.vending/files +64772 6128 -1 /data/media/0/Android/data/com.google.android.videos +64772 6129 -1 /data/media/0/Android/data/com.google.android.videos/files +64772 6130 -1 /data/media/0/Android/data/com.google.android.videos/files/Movies +64772 7607 -1 /data/media/0/Android/data/com.google.android.GoogleCamera +64772 7608 -1 /data/media/0/Android/data/com.google.android.GoogleCamera/files +64772 7627 -1 /data/media/0/Android/data/com.google.android.apps.photos +64772 7628 -1 /data/media/0/Android/data/com.google.android.apps.photos/files +64772 3478 -1 /data/media/0/Music +64772 3479 -1 /data/media/0/Podcasts +64772 3480 -1 /data/media/0/Ringtones +64772 3481 -1 /data/media/0/Alarms +64772 3482 -1 /data/media/0/Notifications +64772 3483 -1 /data/media/0/Pictures +64772 3484 -1 /data/media/0/Movies +64772 3485 -1 /data/media/0/Download +64772 3486 -1 /data/media/0/DCIM +64772 7292 -1 /data/media/0/DCIM/Camera +64772 110 -1 /data/cache +64772 111 -1 /data/cache/recovery +64772 112 -1 /data/cache/backup_stage +64772 113 -1 /data/cache/backup +64772 114 -1 /data/rollback +64772 115 -1 /data/rollback-observer +64772 144 -1 /data/adb +64772 161 -1 /data/gsi +64772 162 -1 /data/gsi/dsu +64772 163 -1 /data/gsi/ota +64772 175 -1 /data/server_configurable_flags +64772 4928 -1 /data/per_boot +64772 7130 -1 /data/nativetest64 +64772 7131 -1 /data/nativetest64/VtsHalDataLatencyV1_0TargetTest +64772 7132 -1 /data/nativetest64/VtsHalDataLatencyV1_0TargetTest/VtsHalDataLatencyV1_0TargetTest +64772 7133 -1 /data/nativetest64/iorapd-tests +64772 7134 -1 /data/nativetest64/iorapd-tests/iorapd-tests +64772 7135 -1 /data/nativetest +64772 7136 -1 /data/nativetest/VtsHalDataLatencyV1_0TargetTest +64772 7137 -1 /data/nativetest/VtsHalDataLatencyV1_0TargetTest/VtsHalDataLatencyV1_0TargetTest +64772 7138 -1 /data/nativetest/iorapd-tests +64772 7139 -1 /data/nativetest/iorapd-tests/iorapd-tests +26 19554 -1 /product +26 160706 -1 /product/media +64770 671 -1 /product/media/bootanimation-dark.zip +64770 672 -1 /product/media/bootanimation.zip +26 177959 -1 /product/media/audio +26 182977 -1 /product/media/audio/ui +64770 659 -1 /product/media/audio/ui/NFCTransferComplete.ogg +64770 670 -1 /product/media/audio/ui/camera_focus.ogg +64770 665 -1 /product/media/audio/ui/VideoStop.ogg +64770 650 -1 /product/media/audio/ui/KeypressInvalid.ogg +64770 660 -1 /product/media/audio/ui/NFCTransferInitiated.ogg +64770 663 -1 /product/media/audio/ui/Unlock.ogg +64770 669 -1 /product/media/audio/ui/camera_click.ogg +64770 653 -1 /product/media/audio/ui/KeypressStandard.ogg +64770 649 -1 /product/media/audio/ui/KeypressDelete.ogg +64770 647 -1 /product/media/audio/ui/Effect_Tick.ogg +64770 666 -1 /product/media/audio/ui/WirelessChargingStarted.ogg +64770 668 -1 /product/media/audio/ui/audio_initiate.ogg +64770 662 -1 /product/media/audio/ui/Undock.ogg +64770 656 -1 /product/media/audio/ui/NFCFailure.ogg +64770 655 -1 /product/media/audio/ui/LowBattery.ogg +64770 651 -1 /product/media/audio/ui/KeypressReturn.ogg +64770 654 -1 /product/media/audio/ui/Lock.ogg +64770 652 -1 /product/media/audio/ui/KeypressSpacebar.ogg +64770 658 -1 /product/media/audio/ui/NFCSuccess.ogg +64770 648 -1 /product/media/audio/ui/InCallNotification.ogg +64770 646 -1 /product/media/audio/ui/Dock.ogg +64770 667 -1 /product/media/audio/ui/audio_end.ogg +64770 661 -1 /product/media/audio/ui/Trusted.ogg +64770 657 -1 /product/media/audio/ui/NFCInitiated.ogg +64770 664 -1 /product/media/audio/ui/VideoRecord.ogg +64770 645 -1 /product/media/audio/ui/ChargingStarted.ogg +26 1561686 -1 /product/media/audio/notifications +64770 621 -1 /product/media/audio/notifications/Mallet.ogg +64770 618 -1 /product/media/audio/notifications/Duet.ogg +64770 630 -1 /product/media/audio/notifications/Twinkle.ogg +64770 619 -1 /product/media/audio/notifications/End_note.ogg +64770 617 -1 /product/media/audio/notifications/Coconuts.ogg +64770 616 -1 /product/media/audio/notifications/Beginning.ogg +64770 623 -1 /product/media/audio/notifications/Ping.ogg +64770 629 -1 /product/media/audio/notifications/Tweeter.ogg +64770 628 -1 /product/media/audio/notifications/Tuneup.ogg +64770 627 -1 /product/media/audio/notifications/Sticks_and_stones.ogg +64770 626 -1 /product/media/audio/notifications/Shopkeeper.ogg +64770 624 -1 /product/media/audio/notifications/Pipes.ogg +64770 620 -1 /product/media/audio/notifications/Gentle_gong.ogg +64770 622 -1 /product/media/audio/notifications/Orders_up.ogg +64770 625 -1 /product/media/audio/notifications/Popcorn.ogg +26 1561702 -1 /product/media/audio/ringtones +64770 633 -1 /product/media/audio/ringtones/Crackle.ogg +64770 639 -1 /product/media/audio/ringtones/Mash_up.ogg +64770 636 -1 /product/media/audio/ringtones/Leaps_and_bounds.ogg +64770 640 -1 /product/media/audio/ringtones/Monkey_around.ogg +64770 638 -1 /product/media/audio/ringtones/Lost_and_found.ogg +64770 641 -1 /product/media/audio/ringtones/Schools_out.ogg +64770 634 -1 /product/media/audio/ringtones/Flutterby.ogg +64770 637 -1 /product/media/audio/ringtones/Lollipop.ogg +64770 642 -1 /product/media/audio/ringtones/The_big_adventure.ogg +64770 643 -1 /product/media/audio/ringtones/Zen_too.ogg +64770 635 -1 /product/media/audio/ringtones/Hotline.ogg +64770 632 -1 /product/media/audio/ringtones/Copycat.ogg +26 1561715 -1 /product/media/audio/alarms +64770 611 -1 /product/media/audio/alarms/Loose_change.ogg +64770 605 -1 /product/media/audio/alarms/Cuckoo_clock.ogg +64770 610 -1 /product/media/audio/alarms/Jump_start.ogg +64770 607 -1 /product/media/audio/alarms/Full_of_wonder.ogg +64770 606 -1 /product/media/audio/alarms/Early_twilight.ogg +64770 614 -1 /product/media/audio/alarms/Sunshower.ogg +64770 608 -1 /product/media/audio/alarms/Gentle_breeze.ogg +64770 612 -1 /product/media/audio/alarms/Rolling_fog.ogg +64770 613 -1 /product/media/audio/alarms/Spokes.ogg +64770 604 -1 /product/media/audio/alarms/Bright_morning.ogg +64770 609 -1 /product/media/audio/alarms/Icicles.ogg +64770 603 -1 /product/media/audio/alarms/A_real_hoot.ogg +26 172559 -1 /product/priv-app +26 1561728 -1 /product/priv-app/AppDirectedSMSService +26 1561729 -1 /product/priv-app/AppDirectedSMSService/oat +26 1561730 -1 /product/priv-app/AppDirectedSMSService/oat/arm64 +64770 794 -1 /product/priv-app/AppDirectedSMSService/oat/arm64/AppDirectedSMSService.vdex +64770 793 -1 /product/priv-app/AppDirectedSMSService/oat/arm64/AppDirectedSMSService.odex +64770 790 -1 /product/priv-app/AppDirectedSMSService/AppDirectedSMSService.apk +26 180667 -1 /product/priv-app/GoogleServicesFramework +26 1561734 -1 /product/priv-app/GoogleServicesFramework/oat +26 1561735 -1 /product/priv-app/GoogleServicesFramework/oat/arm64 +64770 951 -1 /product/priv-app/GoogleServicesFramework/oat/arm64/GoogleServicesFramework.odex +64770 952 -1 /product/priv-app/GoogleServicesFramework/oat/arm64/GoogleServicesFramework.vdex +64770 948 -1 /product/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk +26 1561738 -1 /product/priv-app/OTAConfigPrebuilt +26 1561739 -1 /product/priv-app/OTAConfigPrebuilt/oat +26 1561740 -1 /product/priv-app/OTAConfigPrebuilt/oat/arm64 +64770 1032 -1 /product/priv-app/OTAConfigPrebuilt/oat/arm64/OTAConfigPrebuilt.odex +64770 1033 -1 /product/priv-app/OTAConfigPrebuilt/oat/arm64/OTAConfigPrebuilt.vdex +64770 1029 -1 /product/priv-app/OTAConfigPrebuilt/OTAConfigPrebuilt.apk +26 1561744 -1 /product/priv-app/Showcase +26 1561745 -1 /product/priv-app/Showcase/oat +26 1561746 -1 /product/priv-app/Showcase/oat/arm64 +64770 1169 -1 /product/priv-app/Showcase/oat/arm64/Showcase.vdex +64770 1168 -1 /product/priv-app/Showcase/oat/arm64/Showcase.odex +64770 1165 -1 /product/priv-app/Showcase/Showcase.apk +26 1561750 -1 /product/priv-app/DreamlinerUpdater +26 1561751 -1 /product/priv-app/DreamlinerUpdater/oat +26 1561752 -1 /product/priv-app/DreamlinerUpdater/oat/arm64 +64770 879 -1 /product/priv-app/DreamlinerUpdater/oat/arm64/DreamlinerUpdater.vdex +64770 878 -1 /product/priv-app/DreamlinerUpdater/oat/arm64/DreamlinerUpdater.odex +64770 875 -1 /product/priv-app/DreamlinerUpdater/DreamlinerUpdater.apk +26 1561756 -1 /product/priv-app/OBDM_Permissions +64770 1023 -1 /product/priv-app/OBDM_Permissions/OBDM_Permissions.apk +26 1561758 -1 /product/priv-app/OBDM_Permissions/oat +26 1561759 -1 /product/priv-app/OBDM_Permissions/oat/arm64 +64770 1026 -1 /product/priv-app/OBDM_Permissions/oat/arm64/OBDM_Permissions.odex +64770 1027 -1 /product/priv-app/OBDM_Permissions/oat/arm64/OBDM_Permissions.vdex +26 1561762 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt +64770 1152 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/SettingsIntelligenceGooglePrebuilt.apk.prof +26 1561764 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat +26 1561765 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat/arm64 +64770 1157 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat/arm64/SettingsIntelligenceGooglePrebuilt.vdex +64770 1155 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat/arm64/SettingsIntelligenceGooglePrebuilt.art +64770 1156 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/oat/arm64/SettingsIntelligenceGooglePrebuilt.odex +64770 1151 -1 /product/priv-app/SettingsIntelligenceGooglePrebuilt/SettingsIntelligenceGooglePrebuilt.apk +26 1561770 -1 /product/priv-app/CarrierSetup +26 1561771 -1 /product/priv-app/CarrierSetup/oat +26 1561772 -1 /product/priv-app/CarrierSetup/oat/arm64 +64770 818 -1 /product/priv-app/CarrierSetup/oat/arm64/CarrierSetup.vdex +64770 817 -1 /product/priv-app/CarrierSetup/oat/arm64/CarrierSetup.odex +64770 814 -1 /product/priv-app/CarrierSetup/CarrierSetup.apk +26 1561776 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340 +64770 966 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/HotwordEnrollmentOKGoogleWCD9340.apk +26 1561778 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/oat +26 1561779 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/oat/arm64 +64770 970 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/oat/arm64/HotwordEnrollmentOKGoogleWCD9340.vdex +64770 969 -1 /product/priv-app/HotwordEnrollmentOKGoogleWCD9340/oat/arm64/HotwordEnrollmentOKGoogleWCD9340.odex +26 1543679 -1 /product/priv-app/ScribePrebuilt +26 1561782 -1 /product/priv-app/ScribePrebuilt/oat +26 1561783 -1 /product/priv-app/ScribePrebuilt/oat/arm64 +64770 1141 -1 /product/priv-app/ScribePrebuilt/oat/arm64/ScribePrebuilt.vdex +64770 1140 -1 /product/priv-app/ScribePrebuilt/oat/arm64/ScribePrebuilt.odex +64770 1137 -1 /product/priv-app/ScribePrebuilt/ScribePrebuilt.apk +26 312769 -1 /product/priv-app/SafetyHubPrebuilt +26 1561786 -1 /product/priv-app/SafetyHubPrebuilt/oat +26 1561787 -1 /product/priv-app/SafetyHubPrebuilt/oat/arm64 +64770 1135 -1 /product/priv-app/SafetyHubPrebuilt/oat/arm64/SafetyHubPrebuilt.vdex +64770 1134 -1 /product/priv-app/SafetyHubPrebuilt/oat/arm64/SafetyHubPrebuilt.odex +64770 1131 -1 /product/priv-app/SafetyHubPrebuilt/SafetyHubPrebuilt.apk +26 1561790 -1 /product/priv-app/AmbientSensePrebuilt +26 1561791 -1 /product/priv-app/AmbientSensePrebuilt/oat +26 1561792 -1 /product/priv-app/AmbientSensePrebuilt/oat/arm64 +64770 775 -1 /product/priv-app/AmbientSensePrebuilt/oat/arm64/AmbientSensePrebuilt.odex +64770 776 -1 /product/priv-app/AmbientSensePrebuilt/oat/arm64/AmbientSensePrebuilt.vdex +64770 772 -1 /product/priv-app/AmbientSensePrebuilt/AmbientSensePrebuilt.apk +26 180668 -1 /product/priv-app/PrebuiltGmsCore +26 1561796 -1 /product/priv-app/PrebuiltGmsCore/app_chimera +26 1561797 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m +64770 1058 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_AdsDynamite.apk +64770 1065 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_MeasurementDynamite.apk +64770 1059 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_CronetDynamite.apk +64770 1062 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_DynamiteModulesC.apk +26 1561802 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat +26 1561803 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm +64770 1078 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_GoogleCertificates.odex +64770 1083 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_MeasurementDynamite.vdex +64770 1082 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_MeasurementDynamite.odex +64770 1068 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_AdsDynamite.odex +64770 1071 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_CronetDynamite.vdex +64770 1077 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteModulesC.vdex +64770 1081 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_MapsDynamite.vdex +64770 1075 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteModulesA.vdex +64770 1069 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_AdsDynamite.vdex +64770 1074 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteModulesA.odex +64770 1070 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_CronetDynamite.odex +64770 1076 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteModulesC.odex +64770 1080 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_MapsDynamite.odex +64770 1079 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_GoogleCertificates.vdex +64770 1073 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteLoader.vdex +64770 1072 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm/PrebuiltGmsCoreQt_DynamiteLoader.odex +26 1561820 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64 +64770 1095 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_GoogleCertificates.odex +64770 1100 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_MeasurementDynamite.vdex +64770 1099 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_MeasurementDynamite.odex +64770 1085 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_AdsDynamite.odex +64770 1088 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_CronetDynamite.vdex +64770 1094 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteModulesC.vdex +64770 1098 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_MapsDynamite.vdex +64770 1092 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteModulesA.vdex +64770 1086 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_AdsDynamite.vdex +64770 1091 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteModulesA.odex +64770 1087 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_CronetDynamite.odex +64770 1093 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteModulesC.odex +64770 1097 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_MapsDynamite.odex +64770 1096 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_GoogleCertificates.vdex +64770 1090 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteLoader.vdex +64770 1089 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/oat/arm64/PrebuiltGmsCoreQt_DynamiteLoader.odex +64770 1061 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_DynamiteModulesA.apk +64770 1064 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_MapsDynamite.apk +64770 1063 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_GoogleCertificates.apk +64770 1060 -1 /product/priv-app/PrebuiltGmsCore/app_chimera/m/PrebuiltGmsCoreQt_DynamiteLoader.apk +26 1561841 -1 /product/priv-app/PrebuiltGmsCore/oat +26 1561842 -1 /product/priv-app/PrebuiltGmsCore/oat/arm +64770 1110 -1 /product/priv-app/PrebuiltGmsCore/oat/arm/PrebuiltGmsCoreQt.odex +64770 1111 -1 /product/priv-app/PrebuiltGmsCore/oat/arm/PrebuiltGmsCoreQt.vdex +26 1561845 -1 /product/priv-app/PrebuiltGmsCore/oat/arm64 +64770 1113 -1 /product/priv-app/PrebuiltGmsCore/oat/arm64/PrebuiltGmsCoreQt.odex +64770 1114 -1 /product/priv-app/PrebuiltGmsCore/oat/arm64/PrebuiltGmsCoreQt.vdex +26 1561848 -1 /product/priv-app/PrebuiltGmsCore/m +26 1561849 -1 /product/priv-app/PrebuiltGmsCore/m/independent +64770 1103 -1 /product/priv-app/PrebuiltGmsCore/m/independent/AndroidPlatformServices.apk +26 1561851 -1 /product/priv-app/PrebuiltGmsCore/m/independent/oat +26 1561852 -1 /product/priv-app/PrebuiltGmsCore/m/independent/oat/arm64 +64770 1106 -1 /product/priv-app/PrebuiltGmsCore/m/independent/oat/arm64/AndroidPlatformServices.odex +64770 1107 -1 /product/priv-app/PrebuiltGmsCore/m/independent/oat/arm64/AndroidPlatformServices.vdex +64770 1055 -1 /product/priv-app/PrebuiltGmsCore/PrebuiltGmsCoreQt.apk +26 1561855 -1 /product/priv-app/ConnMO +26 1561856 -1 /product/priv-app/ConnMO/oat +26 1561857 -1 /product/priv-app/ConnMO/oat/arm64 +64770 830 -1 /product/priv-app/ConnMO/oat/arm64/ConnMO.vdex +64770 829 -1 /product/priv-app/ConnMO/oat/arm64/ConnMO.odex +64770 826 -1 /product/priv-app/ConnMO/ConnMO.apk +26 1561861 -1 /product/priv-app/DCMO +26 1561862 -1 /product/priv-app/DCMO/oat +26 1561863 -1 /product/priv-app/DCMO/oat/arm64 +64770 851 -1 /product/priv-app/DCMO/oat/arm64/DCMO.vdex +64770 850 -1 /product/priv-app/DCMO/oat/arm64/DCMO.odex +64770 847 -1 /product/priv-app/DCMO/DCMO.apk +26 1561867 -1 /product/priv-app/GoogleANGLE +26 1561868 -1 /product/priv-app/GoogleANGLE/oat +26 1561869 -1 /product/priv-app/GoogleANGLE/oat/arm +64770 910 -1 /product/priv-app/GoogleANGLE/oat/arm/GoogleANGLE.odex +64770 911 -1 /product/priv-app/GoogleANGLE/oat/arm/GoogleANGLE.vdex +26 1561872 -1 /product/priv-app/GoogleANGLE/oat/arm64 +64770 913 -1 /product/priv-app/GoogleANGLE/oat/arm64/GoogleANGLE.odex +64770 914 -1 /product/priv-app/GoogleANGLE/oat/arm64/GoogleANGLE.vdex +64770 907 -1 /product/priv-app/GoogleANGLE/GoogleANGLE.apk +26 1561876 -1 /product/priv-app/ConfigUpdater +26 1561877 -1 /product/priv-app/ConfigUpdater/oat +26 1561878 -1 /product/priv-app/ConfigUpdater/oat/arm64 +64770 824 -1 /product/priv-app/ConfigUpdater/oat/arm64/ConfigUpdater.vdex +64770 823 -1 /product/priv-app/ConfigUpdater/oat/arm64/ConfigUpdater.odex +64770 820 -1 /product/priv-app/ConfigUpdater/ConfigUpdater.apk +26 1561882 -1 /product/priv-app/TetheringEntitlement +26 1561883 -1 /product/priv-app/TetheringEntitlement/oat +26 1561884 -1 /product/priv-app/TetheringEntitlement/oat/arm64 +64770 1205 -1 /product/priv-app/TetheringEntitlement/oat/arm64/TetheringEntitlement.vdex +64770 1204 -1 /product/priv-app/TetheringEntitlement/oat/arm64/TetheringEntitlement.odex +64770 1201 -1 /product/priv-app/TetheringEntitlement/TetheringEntitlement.apk +26 1561658 -1 /product/priv-app/DMService +26 1561888 -1 /product/priv-app/DMService/oat +26 1561889 -1 /product/priv-app/DMService/oat/arm +64770 861 -1 /product/priv-app/DMService/oat/arm/DMService.vdex +64770 860 -1 /product/priv-app/DMService/oat/arm/DMService.odex +64770 853 -1 /product/priv-app/DMService/DMService.apk +26 1561659 -1 /product/priv-app/DMService/lib +26 1561660 -1 /product/priv-app/DMService/lib/arm +64770 582 -1 /product/priv-app/DMService/lib/arm/libdmjavaplugin.so +64770 581 -1 /product/priv-app/DMService/lib/arm/libdmengine.so +26 1561897 -1 /product/priv-app/TMobilePlanProvider +26 1561898 -1 /product/priv-app/TMobilePlanProvider/oat +26 1561899 -1 /product/priv-app/TMobilePlanProvider/oat/arm64 +64770 1199 -1 /product/priv-app/TMobilePlanProvider/oat/arm64/TMobilePlanProvider.vdex +64770 1198 -1 /product/priv-app/TMobilePlanProvider/oat/arm64/TMobilePlanProvider.odex +64770 1195 -1 /product/priv-app/TMobilePlanProvider/TMobilePlanProvider.apk +26 180704 -1 /product/priv-app/GoogleDialer +64770 923 -1 /product/priv-app/GoogleDialer/GoogleDialer.apk.prof +26 1561904 -1 /product/priv-app/GoogleDialer/oat +26 1561905 -1 /product/priv-app/GoogleDialer/oat/arm64 +64770 928 -1 /product/priv-app/GoogleDialer/oat/arm64/GoogleDialer.vdex +64770 926 -1 /product/priv-app/GoogleDialer/oat/arm64/GoogleDialer.art +64770 927 -1 /product/priv-app/GoogleDialer/oat/arm64/GoogleDialer.odex +64770 922 -1 /product/priv-app/GoogleDialer/GoogleDialer.apk +26 1561909 -1 /product/priv-app/EuiccGoogle +26 1561910 -1 /product/priv-app/EuiccGoogle/oat +26 1561911 -1 /product/priv-app/EuiccGoogle/oat/arm64 +64770 884 -1 /product/priv-app/EuiccGoogle/oat/arm64/EuiccGoogle.odex +64770 885 -1 /product/priv-app/EuiccGoogle/oat/arm64/EuiccGoogle.vdex +64770 881 -1 /product/priv-app/EuiccGoogle/EuiccGoogle.apk +26 1561915 -1 /product/priv-app/OemDmTrigger +26 1561916 -1 /product/priv-app/OemDmTrigger/oat +26 1561917 -1 /product/priv-app/OemDmTrigger/oat/arm64 +64770 1038 -1 /product/priv-app/OemDmTrigger/oat/arm64/OemDmTrigger.odex +64770 1039 -1 /product/priv-app/OemDmTrigger/oat/arm64/OemDmTrigger.vdex +64770 1035 -1 /product/priv-app/OemDmTrigger/OemDmTrigger.apk +26 1485882 -1 /product/priv-app/Volta +26 1561921 -1 /product/priv-app/Volta/oat +26 1561922 -1 /product/priv-app/Volta/oat/arm64 +64770 1244 -1 /product/priv-app/Volta/oat/arm64/Volta.vdex +64770 1243 -1 /product/priv-app/Volta/oat/arm64/Volta.odex +64770 1240 -1 /product/priv-app/Volta/Volta.apk +26 1561925 -1 /product/priv-app/VzwOmaTrigger +26 1561926 -1 /product/priv-app/VzwOmaTrigger/oat +26 1561927 -1 /product/priv-app/VzwOmaTrigger/oat/arm64 +64770 1249 -1 /product/priv-app/VzwOmaTrigger/oat/arm64/VzwOmaTrigger.odex +64770 1250 -1 /product/priv-app/VzwOmaTrigger/oat/arm64/VzwOmaTrigger.vdex +64770 1246 -1 /product/priv-app/VzwOmaTrigger/VzwOmaTrigger.apk +26 1561931 -1 /product/priv-app/GoogleOneTimeInitializer +26 1561932 -1 /product/priv-app/GoogleOneTimeInitializer/oat +26 1561933 -1 /product/priv-app/GoogleOneTimeInitializer/oat/arm64 +64770 939 -1 /product/priv-app/GoogleOneTimeInitializer/oat/arm64/GoogleOneTimeInitializer.odex +64770 940 -1 /product/priv-app/GoogleOneTimeInitializer/oat/arm64/GoogleOneTimeInitializer.vdex +64770 936 -1 /product/priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk +26 464525 -1 /product/priv-app/SettingsGoogle +64770 1144 -1 /product/priv-app/SettingsGoogle/SettingsGoogle.apk.prof +26 1561938 -1 /product/priv-app/SettingsGoogle/oat +26 1561939 -1 /product/priv-app/SettingsGoogle/oat/arm64 +64770 1148 -1 /product/priv-app/SettingsGoogle/oat/arm64/SettingsGoogle.odex +64770 1147 -1 /product/priv-app/SettingsGoogle/oat/arm64/SettingsGoogle.art +64770 1149 -1 /product/priv-app/SettingsGoogle/oat/arm64/SettingsGoogle.vdex +64770 1143 -1 /product/priv-app/SettingsGoogle/SettingsGoogle.apk +26 1561943 -1 /product/priv-app/obdm_stub +26 1561944 -1 /product/priv-app/obdm_stub/oat +26 1561945 -1 /product/priv-app/obdm_stub/oat/arm64 +64770 1279 -1 /product/priv-app/obdm_stub/oat/arm64/obdm_stub.vdex +64770 1278 -1 /product/priv-app/obdm_stub/oat/arm64/obdm_stub.odex +64770 1280 -1 /product/priv-app/obdm_stub/obdm_stub.apk +26 180656 -1 /product/priv-app/NexusLauncherRelease +64770 1017 -1 /product/priv-app/NexusLauncherRelease/NexusLauncherRelease.apk +26 1561949 -1 /product/priv-app/NexusLauncherRelease/oat +26 1561950 -1 /product/priv-app/NexusLauncherRelease/oat/arm64 +64770 1021 -1 /product/priv-app/NexusLauncherRelease/oat/arm64/NexusLauncherRelease.vdex +64770 1020 -1 /product/priv-app/NexusLauncherRelease/oat/arm64/NexusLauncherRelease.odex +26 1484978 -1 /product/priv-app/TipsPrebuilt +26 1561953 -1 /product/priv-app/TipsPrebuilt/oat +26 1561954 -1 /product/priv-app/TipsPrebuilt/oat/arm64 +64770 1211 -1 /product/priv-app/TipsPrebuilt/oat/arm64/TipsPrebuilt.vdex +64770 1210 -1 /product/priv-app/TipsPrebuilt/oat/arm64/TipsPrebuilt.odex +64770 1207 -1 /product/priv-app/TipsPrebuilt/TipsPrebuilt.apk +26 1494254 -1 /product/priv-app/Phonesky +64770 1042 -1 /product/priv-app/Phonesky/Phonesky.apk.prof +26 1561958 -1 /product/priv-app/Phonesky/oat +26 1561959 -1 /product/priv-app/Phonesky/oat/arm +64770 1046 -1 /product/priv-app/Phonesky/oat/arm/Phonesky.odex +64770 1047 -1 /product/priv-app/Phonesky/oat/arm/Phonesky.vdex +64770 1045 -1 /product/priv-app/Phonesky/oat/arm/Phonesky.art +64770 1041 -1 /product/priv-app/Phonesky/Phonesky.apk +26 1561963 -1 /product/priv-app/GmsCoreSetupPrebuilt +26 1561964 -1 /product/priv-app/GmsCoreSetupPrebuilt/oat +26 1561965 -1 /product/priv-app/GmsCoreSetupPrebuilt/oat/arm64 +64770 905 -1 /product/priv-app/GmsCoreSetupPrebuilt/oat/arm64/GmsCoreSetupPrebuilt.vdex +64770 904 -1 /product/priv-app/GmsCoreSetupPrebuilt/oat/arm64/GmsCoreSetupPrebuilt.odex +64770 901 -1 /product/priv-app/GmsCoreSetupPrebuilt/GmsCoreSetupPrebuilt.apk +26 1561969 -1 /product/priv-app/WfcActivation +26 1561970 -1 /product/priv-app/WfcActivation/oat +26 1561971 -1 /product/priv-app/WfcActivation/oat/arm64 +64770 1268 -1 /product/priv-app/WfcActivation/oat/arm64/WfcActivation.vdex +64770 1267 -1 /product/priv-app/WfcActivation/oat/arm64/WfcActivation.odex +64770 1264 -1 /product/priv-app/WfcActivation/WfcActivation.apk +26 1561975 -1 /product/priv-app/CarrierSettings +26 1561976 -1 /product/priv-app/CarrierSettings/oat +26 1561977 -1 /product/priv-app/CarrierSettings/oat/arm64 +64770 812 -1 /product/priv-app/CarrierSettings/oat/arm64/CarrierSettings.vdex +64770 811 -1 /product/priv-app/CarrierSettings/oat/arm64/CarrierSettings.odex +64770 808 -1 /product/priv-app/CarrierSettings/CarrierSettings.apk +26 1561981 -1 /product/priv-app/EuiccSupportPixel +26 1561982 -1 /product/priv-app/EuiccSupportPixel/oat +26 1561983 -1 /product/priv-app/EuiccSupportPixel/oat/arm64 +64770 892 -1 /product/priv-app/EuiccSupportPixel/oat/arm64/EuiccSupportPixel.odex +64770 893 -1 /product/priv-app/EuiccSupportPixel/oat/arm64/EuiccSupportPixel.vdex +64770 888 -1 /product/priv-app/EuiccSupportPixel/esim-full-v0.img +64770 887 -1 /product/priv-app/EuiccSupportPixel/EuiccSupportPixel.apk +64770 889 -1 /product/priv-app/EuiccSupportPixel/esim-v1.img +26 1561989 -1 /product/priv-app/SprintDM +64770 1171 -1 /product/priv-app/SprintDM/SprintDM.apk +26 1561991 -1 /product/priv-app/SprintDM/oat +26 1561992 -1 /product/priv-app/SprintDM/oat/arm64 +64770 1174 -1 /product/priv-app/SprintDM/oat/arm64/SprintDM.odex +64770 1175 -1 /product/priv-app/SprintDM/oat/arm64/SprintDM.vdex +26 180735 -1 /product/priv-app/MatchmakerPrebuiltPixel3 +64770 986 -1 /product/priv-app/MatchmakerPrebuiltPixel3/MatchmakerPrebuiltPixel3.apk +26 1561995 -1 /product/priv-app/MatchmakerPrebuiltPixel3/oat +26 1561996 -1 /product/priv-app/MatchmakerPrebuiltPixel3/oat/arm64 +64770 990 -1 /product/priv-app/MatchmakerPrebuiltPixel3/oat/arm64/MatchmakerPrebuiltPixel3.vdex +64770 989 -1 /product/priv-app/MatchmakerPrebuiltPixel3/oat/arm64/MatchmakerPrebuiltPixel3.odex +26 1561999 -1 /product/priv-app/CarrierServices +26 1562000 -1 /product/priv-app/CarrierServices/oat +26 1562001 -1 /product/priv-app/CarrierServices/oat/arm64 +64770 806 -1 /product/priv-app/CarrierServices/oat/arm64/CarrierServices.vdex +64770 805 -1 /product/priv-app/CarrierServices/oat/arm64/CarrierServices.odex +64770 802 -1 /product/priv-app/CarrierServices/CarrierServices.apk +26 180750 -1 /product/priv-app/grilservice +26 1562005 -1 /product/priv-app/grilservice/oat +26 1562006 -1 /product/priv-app/grilservice/oat/arm64 +64770 1273 -1 /product/priv-app/grilservice/oat/arm64/grilservice.odex +64770 1274 -1 /product/priv-app/grilservice/oat/arm64/grilservice.vdex +64770 1270 -1 /product/priv-app/grilservice/grilservice.apk +26 1470378 -1 /product/priv-app/GooglePartnerSetup +26 1562009 -1 /product/priv-app/GooglePartnerSetup/oat +26 1562010 -1 /product/priv-app/GooglePartnerSetup/oat/arm64 +64770 945 -1 /product/priv-app/GooglePartnerSetup/oat/arm64/GooglePartnerSetup.odex +64770 946 -1 /product/priv-app/GooglePartnerSetup/oat/arm64/GooglePartnerSetup.vdex +64770 942 -1 /product/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk +26 1496135 -1 /product/priv-app/AndroidAutoFullPrebuilt +26 1562013 -1 /product/priv-app/AndroidAutoFullPrebuilt/oat +26 1562014 -1 /product/priv-app/AndroidAutoFullPrebuilt/oat/arm64 +64770 781 -1 /product/priv-app/AndroidAutoFullPrebuilt/oat/arm64/AndroidAutoFullPrebuilt.odex +64770 782 -1 /product/priv-app/AndroidAutoFullPrebuilt/oat/arm64/AndroidAutoFullPrebuilt.vdex +64770 778 -1 /product/priv-app/AndroidAutoFullPrebuilt/AndroidAutoFullPrebuilt.apk +26 1496133 -1 /product/priv-app/BetterBug +26 1562017 -1 /product/priv-app/BetterBug/oat +26 1562018 -1 /product/priv-app/BetterBug/oat/arm64 +64770 799 -1 /product/priv-app/BetterBug/oat/arm64/BetterBug.odex +64770 800 -1 /product/priv-app/BetterBug/oat/arm64/BetterBug.vdex +64770 796 -1 /product/priv-app/BetterBug/BetterBug.apk +26 180705 -1 /product/priv-app/WellbeingPrebuilt +64770 1258 -1 /product/priv-app/WellbeingPrebuilt/WellbeingPrebuilt.apk +26 1562021 -1 /product/priv-app/WellbeingPrebuilt/oat +26 1562022 -1 /product/priv-app/WellbeingPrebuilt/oat/arm64 +64770 1261 -1 /product/priv-app/WellbeingPrebuilt/oat/arm64/WellbeingPrebuilt.odex +64770 1262 -1 /product/priv-app/WellbeingPrebuilt/oat/arm64/WellbeingPrebuilt.vdex +26 1562025 -1 /product/priv-app/AndroidMigratePrebuilt +26 1562026 -1 /product/priv-app/AndroidMigratePrebuilt/oat +26 1562027 -1 /product/priv-app/AndroidMigratePrebuilt/oat/arm64 +64770 787 -1 /product/priv-app/AndroidMigratePrebuilt/oat/arm64/AndroidMigratePrebuilt.odex +64770 788 -1 /product/priv-app/AndroidMigratePrebuilt/oat/arm64/AndroidMigratePrebuilt.vdex +64770 784 -1 /product/priv-app/AndroidMigratePrebuilt/AndroidMigratePrebuilt.apk +26 1562031 -1 /product/priv-app/TmobileGrsuPrebuilt +26 1562032 -1 /product/priv-app/TmobileGrsuPrebuilt/oat +26 1562033 -1 /product/priv-app/TmobileGrsuPrebuilt/oat/arm64 +64770 1217 -1 /product/priv-app/TmobileGrsuPrebuilt/oat/arm64/TmobileGrsuPrebuilt.vdex +64770 1216 -1 /product/priv-app/TmobileGrsuPrebuilt/oat/arm64/TmobileGrsuPrebuilt.odex +64770 1213 -1 /product/priv-app/TmobileGrsuPrebuilt/TmobileGrsuPrebuilt.apk +26 1562037 -1 /product/priv-app/GoogleCBRS +26 1562038 -1 /product/priv-app/GoogleCBRS/oat +26 1562039 -1 /product/priv-app/GoogleCBRS/oat/arm64 +64770 919 -1 /product/priv-app/GoogleCBRS/oat/arm64/GoogleCBRS.odex +64770 920 -1 /product/priv-app/GoogleCBRS/oat/arm64/GoogleCBRS.vdex +64770 916 -1 /product/priv-app/GoogleCBRS/GoogleCBRS.apk +26 1482035 -1 /product/priv-app/WallpaperPickerGoogleRelease +26 1562043 -1 /product/priv-app/WallpaperPickerGoogleRelease/oat +26 1562044 -1 /product/priv-app/WallpaperPickerGoogleRelease/oat/arm64 +64770 1256 -1 /product/priv-app/WallpaperPickerGoogleRelease/oat/arm64/WallpaperPickerGoogleRelease.vdex +64770 1255 -1 /product/priv-app/WallpaperPickerGoogleRelease/oat/arm64/WallpaperPickerGoogleRelease.odex +64770 1252 -1 /product/priv-app/WallpaperPickerGoogleRelease/WallpaperPickerGoogleRelease.apk +26 1562047 -1 /product/priv-app/MaestroPrebuilt +64770 984 -1 /product/priv-app/MaestroPrebuilt/MaestroPrebuilt.apk +26 1562049 -1 /product/priv-app/ModemDiagnosticSystemPermissions +26 1562050 -1 /product/priv-app/ModemDiagnosticSystemPermissions/oat +26 1562051 -1 /product/priv-app/ModemDiagnosticSystemPermissions/oat/arm64 +64770 1005 -1 /product/priv-app/ModemDiagnosticSystemPermissions/oat/arm64/ModemDiagnosticSystemPermissions.vdex +64770 1004 -1 /product/priv-app/ModemDiagnosticSystemPermissions/oat/arm64/ModemDiagnosticSystemPermissions.odex +64770 1001 -1 /product/priv-app/ModemDiagnosticSystemPermissions/ModemDiagnosticSystemPermissions.apk +26 1342343 -1 /product/priv-app/GCS +26 1562055 -1 /product/priv-app/GCS/oat +26 1562056 -1 /product/priv-app/GCS/oat/arm64 +64770 899 -1 /product/priv-app/GCS/oat/arm64/GCS.vdex +64770 898 -1 /product/priv-app/GCS/oat/arm64/GCS.odex +64770 895 -1 /product/priv-app/GCS/GCS.apk +26 1562059 -1 /product/priv-app/ConnectivityMonitor +26 1562060 -1 /product/priv-app/ConnectivityMonitor/oat +26 1562061 -1 /product/priv-app/ConnectivityMonitor/oat/arm64 +64770 845 -1 /product/priv-app/ConnectivityMonitor/oat/arm64/ConnectivityMonitor.vdex +64770 844 -1 /product/priv-app/ConnectivityMonitor/oat/arm64/ConnectivityMonitor.odex +64770 838 -1 /product/priv-app/ConnectivityMonitor/ConnectivityMonitor.apk +26 1562065 -1 /product/priv-app/ConnectivityMonitor/lib +26 1562066 -1 /product/priv-app/ConnectivityMonitor/lib/arm64 +64770 592 -1 /product/priv-app/ConnectivityMonitor/lib/arm64/liblpmdeviceutils.so +26 1562069 -1 /product/priv-app/SprintHM +26 1562070 -1 /product/priv-app/SprintHM/oat +26 1562071 -1 /product/priv-app/SprintHM/oat/arm64 +64770 1181 -1 /product/priv-app/SprintHM/oat/arm64/SprintHM.vdex +64770 1180 -1 /product/priv-app/SprintHM/oat/arm64/SprintHM.odex +64770 1177 -1 /product/priv-app/SprintHM/SprintHM.apk +26 1562075 -1 /product/priv-app/RilConfigService +26 1562076 -1 /product/priv-app/RilConfigService/oat +26 1562077 -1 /product/priv-app/RilConfigService/oat/arm64 +64770 1119 -1 /product/priv-app/RilConfigService/oat/arm64/RilConfigService.odex +64770 1120 -1 /product/priv-app/RilConfigService/oat/arm64/RilConfigService.vdex +64770 1116 -1 /product/priv-app/RilConfigService/RilConfigService.apk +26 215970 -1 /product/priv-app/TurboPrebuilt +26 1562081 -1 /product/priv-app/TurboPrebuilt/oat +26 1562082 -1 /product/priv-app/TurboPrebuilt/oat/arm64 +64770 1222 -1 /product/priv-app/TurboPrebuilt/oat/arm64/TurboPrebuilt.odex +64770 1223 -1 /product/priv-app/TurboPrebuilt/oat/arm64/TurboPrebuilt.vdex +64770 1219 -1 /product/priv-app/TurboPrebuilt/TurboPrebuilt.apk +26 1562085 -1 /product/priv-app/HardwareInfo +26 1562086 -1 /product/priv-app/HardwareInfo/oat +26 1562087 -1 /product/priv-app/HardwareInfo/oat/arm64 +64770 957 -1 /product/priv-app/HardwareInfo/oat/arm64/HardwareInfo.odex +64770 958 -1 /product/priv-app/HardwareInfo/oat/arm64/HardwareInfo.vdex +64770 954 -1 /product/priv-app/HardwareInfo/HardwareInfo.apk +26 1562091 -1 /product/priv-app/GoogleFeedback +26 1562092 -1 /product/priv-app/GoogleFeedback/oat +26 1562093 -1 /product/priv-app/GoogleFeedback/oat/arm64 +64770 934 -1 /product/priv-app/GoogleFeedback/oat/arm64/GoogleFeedback.vdex +64770 933 -1 /product/priv-app/GoogleFeedback/oat/arm64/GoogleFeedback.odex +64770 930 -1 /product/priv-app/GoogleFeedback/GoogleFeedback.apk +26 180752 -1 /product/priv-app/PixelSetupWizard +26 1562097 -1 /product/priv-app/PixelSetupWizard/oat +26 1562098 -1 /product/priv-app/PixelSetupWizard/oat/arm64 +64770 1053 -1 /product/priv-app/PixelSetupWizard/oat/arm64/PixelSetupWizard.vdex +64770 1052 -1 /product/priv-app/PixelSetupWizard/oat/arm64/PixelSetupWizard.odex +64770 1049 -1 /product/priv-app/PixelSetupWizard/PixelSetupWizard.apk +26 180619 -1 /product/priv-app/SCONE +26 1562101 -1 /product/priv-app/SCONE/oat +26 1562102 -1 /product/priv-app/SCONE/oat/arm64 +64770 1129 -1 /product/priv-app/SCONE/oat/arm64/SCONE.vdex +64770 1128 -1 /product/priv-app/SCONE/oat/arm64/SCONE.odex +64770 1122 -1 /product/priv-app/SCONE/SCONE.apk +26 1562105 -1 /product/priv-app/SCONE/lib +26 1562106 -1 /product/priv-app/SCONE/lib/arm64 +64770 1125 -1 /product/priv-app/SCONE/lib/arm64/libborders_scone_leveldb_jni.so +26 1562108 -1 /product/priv-app/MyVerizonServices +26 1562109 -1 /product/priv-app/MyVerizonServices/oat +26 1562110 -1 /product/priv-app/MyVerizonServices/oat/arm64 +64770 1014 -1 /product/priv-app/MyVerizonServices/oat/arm64/MyVerizonServices.odex +64770 1015 -1 /product/priv-app/MyVerizonServices/oat/arm64/MyVerizonServices.vdex +64770 1007 -1 /product/priv-app/MyVerizonServices/MyVerizonServices.apk +26 1562114 -1 /product/priv-app/MyVerizonServices/lib +26 1562115 -1 /product/priv-app/MyVerizonServices/lib/arm64 +64770 1010 -1 /product/priv-app/MyVerizonServices/lib/arm64/libakuaf.so +64770 1011 -1 /product/priv-app/MyVerizonServices/lib/arm64/libmotricity.so +26 1562118 -1 /product/priv-app/ConnMetrics +26 1562119 -1 /product/priv-app/ConnMetrics/oat +26 1562120 -1 /product/priv-app/ConnMetrics/oat/arm64 +64770 835 -1 /product/priv-app/ConnMetrics/oat/arm64/ConnMetrics.odex +64770 836 -1 /product/priv-app/ConnMetrics/oat/arm64/ConnMetrics.vdex +64770 832 -1 /product/priv-app/ConnMetrics/ConnMetrics.apk +26 1562124 -1 /product/priv-app/DiagMon +26 1562125 -1 /product/priv-app/DiagMon/oat +26 1562126 -1 /product/priv-app/DiagMon/oat/arm64 +64770 867 -1 /product/priv-app/DiagMon/oat/arm64/DiagMon.vdex +64770 866 -1 /product/priv-app/DiagMon/oat/arm64/DiagMon.odex +64770 863 -1 /product/priv-app/DiagMon/DiagMon.apk +26 1562130 -1 /product/priv-app/HelpRtcPrebuilt +26 1562131 -1 /product/priv-app/HelpRtcPrebuilt/oat +26 1562132 -1 /product/priv-app/HelpRtcPrebuilt/oat/arm64 +64770 963 -1 /product/priv-app/HelpRtcPrebuilt/oat/arm64/HelpRtcPrebuilt.odex +64770 964 -1 /product/priv-app/HelpRtcPrebuilt/oat/arm64/HelpRtcPrebuilt.vdex +64770 960 -1 /product/priv-app/HelpRtcPrebuilt/HelpRtcPrebuilt.apk +26 1562136 -1 /product/priv-app/StorageManagerGoogle +26 1562137 -1 /product/priv-app/StorageManagerGoogle/oat +26 1562138 -1 /product/priv-app/StorageManagerGoogle/oat/arm64 +64770 1187 -1 /product/priv-app/StorageManagerGoogle/oat/arm64/StorageManagerGoogle.vdex +64770 1186 -1 /product/priv-app/StorageManagerGoogle/oat/arm64/StorageManagerGoogle.odex +64770 1183 -1 /product/priv-app/StorageManagerGoogle/StorageManagerGoogle.apk +26 1562142 -1 /product/priv-app/LLKAgent +26 1562143 -1 /product/priv-app/LLKAgent/oat +26 1562144 -1 /product/priv-app/LLKAgent/oat/arm64 +64770 982 -1 /product/priv-app/LLKAgent/oat/arm64/LLKAgent.vdex +64770 981 -1 /product/priv-app/LLKAgent/oat/arm64/LLKAgent.odex +64770 978 -1 /product/priv-app/LLKAgent/LLKAgent.apk +26 180809 -1 /product/priv-app/Velvet +64770 1225 -1 /product/priv-app/Velvet/Velvet.apk +26 1562148 -1 /product/priv-app/Velvet/oat +26 1562149 -1 /product/priv-app/Velvet/oat/arm +64770 1229 -1 /product/priv-app/Velvet/oat/arm/Velvet.vdex +64770 1228 -1 /product/priv-app/Velvet/oat/arm/Velvet.odex +26 1562152 -1 /product/priv-app/Velvet/oat/arm64 +64770 1232 -1 /product/priv-app/Velvet/oat/arm64/Velvet.vdex +64770 1231 -1 /product/priv-app/Velvet/oat/arm64/Velvet.odex +26 1562155 -1 /product/priv-app/VendorLoggingService +26 1562156 -1 /product/priv-app/VendorLoggingService/oat +26 1562157 -1 /product/priv-app/VendorLoggingService/oat/arm64 +64770 1238 -1 /product/priv-app/VendorLoggingService/oat/arm64/VendorLoggingService.vdex +64770 1237 -1 /product/priv-app/VendorLoggingService/oat/arm64/VendorLoggingService.odex +64770 1234 -1 /product/priv-app/VendorLoggingService/VendorLoggingService.apk +26 1562161 -1 /product/priv-app/DreamlinerPrebuilt +64770 869 -1 /product/priv-app/DreamlinerPrebuilt/DreamlinerPrebuilt.apk +26 1562163 -1 /product/priv-app/DreamlinerPrebuilt/oat +26 1562164 -1 /product/priv-app/DreamlinerPrebuilt/oat/arm64 +64770 873 -1 /product/priv-app/DreamlinerPrebuilt/oat/arm64/DreamlinerPrebuilt.vdex +64770 872 -1 /product/priv-app/DreamlinerPrebuilt/oat/arm64/DreamlinerPrebuilt.odex +26 1562167 -1 /product/priv-app/ModemDiagnosticSystem +26 1562168 -1 /product/priv-app/ModemDiagnosticSystem/oat +26 1562169 -1 /product/priv-app/ModemDiagnosticSystem/oat/arm64 +64770 999 -1 /product/priv-app/ModemDiagnosticSystem/oat/arm64/ModemDiagnosticSystem.vdex +64770 998 -1 /product/priv-app/ModemDiagnosticSystem/oat/arm64/ModemDiagnosticSystem.odex +64770 992 -1 /product/priv-app/ModemDiagnosticSystem/ModemDiagnosticSystem.apk +26 1562173 -1 /product/priv-app/ModemDiagnosticSystem/lib +26 1562174 -1 /product/priv-app/ModemDiagnosticSystem/lib/arm64 +64770 593 -1 /product/priv-app/ModemDiagnosticSystem/lib/arm64/libmdsdiag.so +26 180588 -1 /product/priv-app/SystemUIGoogle +64770 1189 -1 /product/priv-app/SystemUIGoogle/SystemUIGoogle.apk +26 182954 -1 /product/priv-app/SystemUIGoogle/oat +26 182955 -1 /product/priv-app/SystemUIGoogle/oat/arm64 +64770 1192 -1 /product/priv-app/SystemUIGoogle/oat/arm64/SystemUIGoogle.odex +64770 1193 -1 /product/priv-app/SystemUIGoogle/oat/arm64/SystemUIGoogle.vdex +26 180727 -1 /product/priv-app/SetupWizardPrebuilt +26 1562177 -1 /product/priv-app/SetupWizardPrebuilt/oat +26 1562178 -1 /product/priv-app/SetupWizardPrebuilt/oat/arm64 +64770 1163 -1 /product/priv-app/SetupWizardPrebuilt/oat/arm64/SetupWizardPrebuilt.vdex +64770 1162 -1 /product/priv-app/SetupWizardPrebuilt/oat/arm64/SetupWizardPrebuilt.odex +64770 1159 -1 /product/priv-app/SetupWizardPrebuilt/SetupWizardPrebuilt.apk +26 1562181 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340 +26 1562182 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/oat +26 1562183 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/oat/arm64 +64770 976 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/oat/arm64/HotwordEnrollmentXGoogleWCD9340.vdex +64770 975 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/oat/arm64/HotwordEnrollmentXGoogleWCD9340.odex +64770 972 -1 /product/priv-app/HotwordEnrollmentXGoogleWCD9340/HotwordEnrollmentXGoogleWCD9340.apk +26 36874 -1 /product/fonts +64770 528 -1 /product/fonts/ArbutusSlab-Regular.ttf +64770 538 -1 /product/fonts/Lato-Medium.ttf +64770 543 -1 /product/fonts/Rubik-Italic.ttf +64770 536 -1 /product/fonts/Lato-BoldItalic.ttf +64770 534 -1 /product/fonts/GoogleSans-Regular.ttf +64770 531 -1 /product/fonts/GoogleSans-Italic.ttf +64770 547 -1 /product/fonts/ZillaSlab-Medium.ttf +64770 550 -1 /product/fonts/ZillaSlab-SemiBoldItalic.ttf +64770 533 -1 /product/fonts/GoogleSans-MediumItalic.ttf +64770 544 -1 /product/fonts/Rubik-Medium.ttf +64770 535 -1 /product/fonts/Lato-Bold.ttf +64770 541 -1 /product/fonts/Rubik-Bold.ttf +64770 546 -1 /product/fonts/Rubik-Regular.ttf +64770 540 -1 /product/fonts/Lato-Regular.ttf +64770 545 -1 /product/fonts/Rubik-MediumItalic.ttf +64770 529 -1 /product/fonts/GoogleSans-Bold.ttf +64770 539 -1 /product/fonts/Lato-MediumItalic.ttf +64770 530 -1 /product/fonts/GoogleSans-BoldItalic.ttf +64770 542 -1 /product/fonts/Rubik-BoldItalic.ttf +64770 548 -1 /product/fonts/ZillaSlab-MediumItalic.ttf +64770 532 -1 /product/fonts/GoogleSans-Medium.ttf +64770 549 -1 /product/fonts/ZillaSlab-SemiBold.ttf +64770 537 -1 /product/fonts/Lato-Italic.ttf +26 1513470 -1 /product/usr +26 1562189 -1 /product/usr/share +26 1562190 -1 /product/usr/share/ime +26 1562191 -1 /product/usr/share/ime/google +26 1562192 -1 /product/usr/share/ime/google/d3_lms +64770 1288 -1 /product/usr/share/ime/google/d3_lms/zh_CN_2018030706.zip +64770 1286 -1 /product/usr/share/ime/google/d3_lms/ko_2018030706.zip +64770 1287 -1 /product/usr/share/ime/google/d3_lms/mozc.data +26 1513471 -1 /product/usr/srec +26 1513472 -1 /product/usr/srec/en-US +64770 1346 -1 /product/usr/srec/en-US/portable_lstm +64770 1324 -1 /product/usr/srec/en-US/endpointer_model +64770 1301 -1 /product/usr/srec/en-US/TERSE_LSTM_LM.lstm_lm.syms +64770 1305 -1 /product/usr/srec/en-US/compile_grammar.config +64770 1348 -1 /product/usr/srec/en-US/prons_exception_dictionary_file.txt +64770 1328 -1 /product/usr/srec/en-US/ep_portable_model.uint8.mmap +64770 1294 -1 /product/usr/srec/en-US/CONTACT.transform.mfar +64770 1298 -1 /product/usr/srec/en-US/SONG_NAME.syms +64770 1355 -1 /product/usr/srec/en-US/word_confidence_classifier +64770 1326 -1 /product/usr/srec/en-US/endpointer_voicesearch.config +64770 1339 -1 /product/usr/srec/en-US/magic_mic.config +64770 1312 -1 /product/usr/srec/en-US/embedded_normalizer.mfar +64770 1295 -1 /product/usr/srec/en-US/CONTACT_NAME.fst +64770 1354 -1 /product/usr/srec/en-US/voice_actions_compiler.config +64770 1325 -1 /product/usr/srec/en-US/endpointer_model.mmap +64770 1313 -1 /product/usr/srec/en-US/en-US_app-actions_prompted-app-name_TWIDDLER_FST.fst +64770 1304 -1 /product/usr/srec/en-US/commands.abnf +64770 1293 -1 /product/usr/srec/en-US/CLG.prewalk.fst +64770 1344 -1 /product/usr/srec/en-US/offline_action_data.pb +64770 1331 -1 /product/usr/srec/en-US/g2p_graphemes.syms +64770 1310 -1 /product/usr/srec/en-US/dnn +64770 1297 -1 /product/usr/srec/en-US/SONG_NAME.fst +64770 1309 -1 /product/usr/srec/en-US/dictation.config +64770 1327 -1 /product/usr/srec/en-US/ep_portable_mean_stddev +64770 1314 -1 /product/usr/srec/en-US/en-US_calendar-actions_AddCalendarEvent-Prompted-FieldToChange_TWIDDLER_FST.fst +64770 1318 -1 /product/usr/srec/en-US/en-US_monastery_GenericAction-Prompted-ContactName_TWIDDLER_FST.fst +64770 1353 -1 /product/usr/srec/en-US/voice_actions.config +64770 1336 -1 /product/usr/srec/en-US/input_mean_std_dev +64770 1340 -1 /product/usr/srec/en-US/metadata +64770 1351 -1 /product/usr/srec/en-US/semantics.pumpkin +64770 1302 -1 /product/usr/srec/en-US/am_phonemes.syms +64770 1291 -1 /product/usr/srec/en-US/APP_NAME.fst +64770 1349 -1 /product/usr/srec/en-US/pumpkin.mmap +64770 1322 -1 /product/usr/srec/en-US/en-US_time-actions_time-context_TWIDDLER_FST.fst +64770 1356 -1 /product/usr/srec/en-US/wordlist.syms +64770 1352 -1 /product/usr/srec/en-US/verbalizer_terse.mfar +64770 1320 -1 /product/usr/srec/en-US/en-US_read-items_SearchMessageAction-Prompted-Read_TWIDDLER_FST.fst +64770 1292 -1 /product/usr/srec/en-US/APP_NAME.syms +64770 1332 -1 /product/usr/srec/en-US/g2p_phonemes.syms +64770 1342 -1 /product/usr/srec/en-US/norm_fst +64770 1333 -1 /product/usr/srec/en-US/grammar.config +64770 1307 -1 /product/usr/srec/en-US/contacts.abnf +64770 1335 -1 /product/usr/srec/en-US/hmmlist +64770 1315 -1 /product/usr/srec/en-US/en-US_confirmation_confirmation-cancellation_TWIDDLER_FST.fst +64770 1345 -1 /product/usr/srec/en-US/phonelist +64770 1319 -1 /product/usr/srec/en-US/en-US_monastery_contact-disambig-static_TWIDDLER_FST.fst +64770 1350 -1 /product/usr/srec/en-US/rescoring.fst.compact +64770 1303 -1 /product/usr/srec/en-US/c_fst +64770 1296 -1 /product/usr/srec/en-US/CONTACT_NAME.syms +64770 1329 -1 /product/usr/srec/en-US/g2p.data +64770 1330 -1 /product/usr/srec/en-US/g2p_fst +64770 1308 -1 /product/usr/srec/en-US/dict +64770 1317 -1 /product/usr/srec/en-US/en-US_media-actions_music-service-controllable_TWIDDLER_FST.fst +64770 1343 -1 /product/usr/srec/en-US/offensive_word_normalizer.mfar +64770 1299 -1 /product/usr/srec/en-US/TERSE_LSTM_LM.lstm_lm.main_model.uint8.data +64770 1321 -1 /product/usr/srec/en-US/en-US_read-items_SearchMessageAction-Prompted-Skip_TWIDDLER_FST.fst +64770 1300 -1 /product/usr/srec/en-US/TERSE_LSTM_LM.lstm_lm.self_normalized_model.uint8.data +64770 1337 -1 /product/usr/srec/en-US/lexicon.U.fst +64770 1334 -1 /product/usr/srec/en-US/hmm_symbols +64770 1306 -1 /product/usr/srec/en-US/config.pumpkin +64770 1316 -1 /product/usr/srec/en-US/en-US_gmm-actions_gmm-nav-actions_TWIDDLER_FST.fst +64770 1341 -1 /product/usr/srec/en-US/monastery_config.pumpkin +64770 1338 -1 /product/usr/srec/en-US/lstm_model.uint8.data +64770 1323 -1 /product/usr/srec/en-US/endpointer_dictation.config +64770 1311 -1 /product/usr/srec/en-US/embedded_class_denorm.mfar +64770 1347 -1 /product/usr/srec/en-US/portable_meanstddev +26 1441598 -1 /product/bin +64770 352 -1 /product/bin/check_f2fs +64770 354 -1 /product/bin/f2fs_io +64770 355 -1 /product/bin/sg_write_buffer +64770 350 -1 /product/bin/a_sns_test +64770 351 -1 /product/bin/check_dynamic_partitions +64770 353 -1 /product/bin/dmabuf_dump +64770 356 -1 /product/build.prop +26 1562228 -1 /product/lost+found +26 177202 -1 /product/lib64 +64770 599 -1 /product/lib64/vendor.qti.hardware.qdutils_disp@1.0.so +64770 598 -1 /product/lib64/vendor.google.wireless_charger@1.0.so +64770 590 -1 /product/lib64/libaptX_encoder.so +64770 589 -1 /product/lib64/libaptXHD_encoder.so +64770 597 -1 /product/lib64/vendor.google.wifi_ext@1.0.so +64770 593 -1 /product/lib64/libmdsdiag.so +64770 592 -1 /product/lib64/liblpmdeviceutils.so +64770 596 -1 /product/lib64/libwallpapers-breel-2018-jni.so +64770 594 -1 /product/lib64/libsecureuisvc_jni.so +64770 591 -1 /product/lib64/libgdx.so +64770 595 -1 /product/lib64/libsketchology_native.so +64770 588 -1 /product/lib64/com.qualcomm.qti.ant@1.0.so +26 1562235 -1 /product/framework +64770 552 -1 /product/framework/VerizonLoggingLibrary.jar +26 1562237 -1 /product/framework/oat +26 1562238 -1 /product/framework/oat/arm +64770 563 -1 /product/framework/oat/arm/com.google.android.maps.vdex +64770 560 -1 /product/framework/oat/arm/com.google.android.dialer.support.odex +64770 559 -1 /product/framework/oat/arm/VerizonLoggingLibrary.vdex +64770 564 -1 /product/framework/oat/arm/libhwinfo.odex +64770 562 -1 /product/framework/oat/arm/com.google.android.maps.odex +64770 561 -1 /product/framework/oat/arm/com.google.android.dialer.support.vdex +64770 558 -1 /product/framework/oat/arm/VerizonLoggingLibrary.odex +64770 565 -1 /product/framework/oat/arm/libhwinfo.vdex +26 1562247 -1 /product/framework/oat/arm64 +64770 572 -1 /product/framework/oat/arm64/com.google.android.maps.vdex +64770 569 -1 /product/framework/oat/arm64/com.google.android.dialer.support.odex +64770 568 -1 /product/framework/oat/arm64/VerizonLoggingLibrary.vdex +64770 573 -1 /product/framework/oat/arm64/libhwinfo.odex +64770 571 -1 /product/framework/oat/arm64/com.google.android.maps.odex +64770 570 -1 /product/framework/oat/arm64/com.google.android.dialer.support.vdex +64770 567 -1 /product/framework/oat/arm64/VerizonLoggingLibrary.odex +64770 574 -1 /product/framework/oat/arm64/libhwinfo.vdex +64770 553 -1 /product/framework/com.google.android.dialer.support.jar +64770 554 -1 /product/framework/com.google.android.maps.jar +64770 555 -1 /product/framework/libhwinfo.jar +26 1453664 -1 /product/etc +64770 452 -1 /product/etc/group +64770 450 -1 /product/etc/fs_config_dirs +26 1562261 -1 /product/etc/security +26 1562262 -1 /product/etc/security/avb +64770 500 -1 /product/etc/security/avb/system_other.avbpubkey +64770 430 -1 /product/etc/NOTICE.xml.gz +26 1562265 -1 /product/etc/felica +64770 444 -1 /product/etc/felica/mfm.cfg +64770 443 -1 /product/etc/felica/common.cfg +64770 445 -1 /product/etc/felica/mfs.cfg +26 1517396 -1 /product/etc/selinux +64770 508 -1 /product/etc/selinux/product_seapp_contexts +64770 504 -1 /product/etc/selinux/product_file_contexts +64770 506 -1 /product/etc/selinux/product_mac_permissions.xml +64770 505 -1 /product/etc/selinux/product_hwservice_contexts +64770 509 -1 /product/etc/selinux/product_sepolicy.cil +26 1562273 -1 /product/etc/selinux/mapping +64770 503 -1 /product/etc/selinux/mapping/10000.0.cil +64770 510 -1 /product/etc/selinux/product_sepolicy_and_mapping.sha256 +64770 507 -1 /product/etc/selinux/product_property_contexts +64770 511 -1 /product/etc/selinux/product_service_contexts +26 1562278 -1 /product/etc/res +26 1562279 -1 /product/etc/res/values +26 1562280 -1 /product/etc/res/values/charger +64770 497 -1 /product/etc/res/values/charger/animation.txt +26 1562282 -1 /product/etc/res/images +26 1562283 -1 /product/etc/res/images/charger +64770 494 -1 /product/etc/res/images/charger/main_font.png +64770 493 -1 /product/etc/res/images/charger/battery_scale.png +64770 492 -1 /product/etc/res/images/charger/battery_fail.png +64770 454 -1 /product/etc/passwd +26 1562287 -1 /product/etc/CarrierSettings +64770 428 -1 /product/etc/CarrierSettings/vodafone_nl.pb +64770 415 -1 /product/etc/CarrierSettings/tracfoneverizon_us.pb +64770 398 -1 /product/etc/CarrierSettings/pcmobilebell_ca.pb +64770 402 -1 /product/etc/CarrierSettings/sfr_fr.pb +64770 388 -1 /product/etc/CarrierSettings/koodo_ca.pb +64770 391 -1 /product/etc/CarrierSettings/o2postpaid_gb.pb +64770 419 -1 /product/etc/CarrierSettings/videotron_ca.pb +64770 381 -1 /product/etc/CarrierSettings/fizz_ca.pb +64770 397 -1 /product/etc/CarrierSettings/others.pb +64770 420 -1 /product/etc/CarrierSettings/virgin_ca.pb +64770 375 -1 /product/etc/CarrierSettings/eplus_de.pb +64770 403 -1 /product/etc/CarrierSettings/singtel_sg.pb +64770 427 -1 /product/etc/CarrierSettings/vodafone_it.pb +64770 370 -1 /product/etc/CarrierSettings/cricket_us.pb +64770 396 -1 /product/etc/CarrierSettings/orange_fr.pb +64770 429 -1 /product/etc/CarrierSettings/xfinity_us.pb +64770 405 -1 /product/etc/CarrierSettings/solomobile_ca.pb +64770 408 -1 /product/etc/CarrierSettings/sprintwholesale_us.pb +64770 371 -1 /product/etc/CarrierSettings/cspire_us.pb +64770 361 -1 /product/etc/CarrierSettings/att_us.pb +64770 390 -1 /product/etc/CarrierSettings/o2_de.pb +64770 418 -1 /product/etc/CarrierSettings/verizon_us.pb +64770 385 -1 /product/etc/CarrierSettings/idmobile_gb.pb +64770 393 -1 /product/etc/CarrierSettings/o2prepaid_gb.pb +64770 364 -1 /product/etc/CarrierSettings/btb_gb.pb +64770 382 -1 /product/etc/CarrierSettings/freedommobile_ca.pb +64770 373 -1 /product/etc/CarrierSettings/docomo_jp.pb +64770 406 -1 /product/etc/CarrierSettings/spectrum_us.pb +64770 416 -1 /product/etc/CarrierSettings/twm_tw.pb +64770 387 -1 /product/etc/CarrierSettings/kddimvno_jp.pb +64770 425 -1 /product/etc/CarrierSettings/vodafone_gb.pb +64770 372 -1 /product/etc/CarrierSettings/default.pb +64770 366 -1 /product/etc/CarrierSettings/carrier_list.pb +64770 369 -1 /product/etc/CarrierSettings/cricket5g_us.pb +64770 383 -1 /product/etc/CarrierSettings/h3_gb.pb +64770 421 -1 /product/etc/CarrierSettings/visible_us.pb +64770 360 -1 /product/etc/CarrierSettings/att5g_us.pb +64770 409 -1 /product/etc/CarrierSettings/starhub_sg.pb +64770 423 -1 /product/etc/CarrierSettings/vodafone_de.pb +64770 377 -1 /product/etc/CarrierSettings/fi_us.pb +64770 426 -1 /product/etc/CarrierSettings/vodafone_in.pb +64770 411 -1 /product/etc/CarrierSettings/telstra_au.pb +64770 380 -1 /product/etc/CarrierSettings/firstnetpacific_us.pb +64770 413 -1 /product/etc/CarrierSettings/tmobile_us.pb +64770 384 -1 /product/etc/CarrierSettings/idea_in.pb +64770 407 -1 /product/etc/CarrierSettings/sprint_us.pb +64770 412 -1 /product/etc/CarrierSettings/telus_ca.pb +64770 389 -1 /product/etc/CarrierSettings/luckymobile_ca.pb +64770 424 -1 /product/etc/CarrierSettings/vodafone_es.pb +64770 410 -1 /product/etc/CarrierSettings/telekom_de.pb +64770 368 -1 /product/etc/CarrierSettings/cht_tw.pb +64770 414 -1 /product/etc/CarrierSettings/tracfonetmo_us.pb +64770 422 -1 /product/etc/CarrierSettings/vodafone_au.pb +64770 392 -1 /product/etc/CarrierSettings/o2prepaid_de.pb +64770 365 -1 /product/etc/CarrierSettings/btc_gb.pb +64770 386 -1 /product/etc/CarrierSettings/kddi_jp.pb +64770 359 -1 /product/etc/CarrierSettings/airtel_in.pb +64770 363 -1 /product/etc/CarrierSettings/bouygues_fr.pb +64770 367 -1 /product/etc/CarrierSettings/cellcom_us.pb +64770 395 -1 /product/etc/CarrierSettings/orange_es.pb +64770 399 -1 /product/etc/CarrierSettings/rakuten_jp.pb +64770 404 -1 /product/etc/CarrierSettings/softbank_jp.pb +64770 401 -1 /product/etc/CarrierSettings/rogers_ca.pb +64770 379 -1 /product/etc/CarrierSettings/firstnet_us.pb +64770 400 -1 /product/etc/CarrierSettings/rjio_in.pb +64770 362 -1 /product/etc/CarrierSettings/bell_ca.pb +64770 394 -1 /product/etc/CarrierSettings/optus_au.pb +64770 378 -1 /product/etc/CarrierSettings/fido_ca.pb +64770 376 -1 /product/etc/CarrierSettings/fet_tw.pb +64770 417 -1 /product/etc/CarrierSettings/uscc_us.pb +64770 374 -1 /product/etc/CarrierSettings/ee_gb.pb +26 1562359 -1 /product/etc/cne +64770 441 -1 /product/etc/cne/andsfCne.xml +26 1562361 -1 /product/etc/cne/Nexus +26 1562362 -1 /product/etc/cne/Nexus/ROW +64770 438 -1 /product/etc/cne/Nexus/ROW/ROW_profiles.xml +26 1562364 -1 /product/etc/cne/Nexus/ATT +64770 436 -1 /product/etc/cne/Nexus/ATT/ATT_profiles.xml +26 1562366 -1 /product/etc/cne/Nexus/VZW +64770 440 -1 /product/etc/cne/Nexus/VZW/VZW_profiles.xml +26 1562368 -1 /product/etc/permissions +64770 480 -1 /product/etc/permissions/com.verizon.services.xml +64770 466 -1 /product/etc/permissions/com.android.vzwomatrigger.xml +64770 481 -1 /product/etc/permissions/features-verizon.xml +64770 484 -1 /product/etc/permissions/split-permissions-google.xml +64770 477 -1 /product/etc/permissions/com.tmobile.planprovider.xml +64770 462 -1 /product/etc/permissions/com.android.sdm.plugins.diagmon.xml +64770 458 -1 /product/etc/permissions/com.android.launcher3.xml +64770 456 -1 /product/etc/permissions/android.hardware.telephony.euicc.xml +64770 476 -1 /product/etc/permissions/com.google.omadm.trigger.xml +64770 459 -1 /product/etc/permissions/com.android.omadm.service.xml +64770 479 -1 /product/etc/permissions/com.verizon.llkagent.xml +64770 468 -1 /product/etc/permissions/com.google.android.apps.dreamliner.xml +64770 474 -1 /product/etc/permissions/com.google.mds.permissions.xml +64770 471 -1 /product/etc/permissions/com.google.android.maps.xml +64770 470 -1 /product/etc/permissions/com.google.android.hardwareinfo.xml +64770 467 -1 /product/etc/permissions/com.customermobile.preload.vzw.xml +64770 482 -1 /product/etc/permissions/obdm_permissions.xml +64770 457 -1 /product/etc/permissions/android.software.verified_boot.xml +64770 463 -1 /product/etc/permissions/com.android.sdm.plugins.sprintdm.xml +64770 483 -1 /product/etc/permissions/privapp-permissions-google-p.xml +64770 461 -1 /product/etc/permissions/com.android.sdm.plugins.dcmo.xml +64770 464 -1 /product/etc/permissions/com.android.settings.xml +64770 475 -1 /product/etc/permissions/com.google.mds.xml +64770 478 -1 /product/etc/permissions/com.verizon.apn.xml +64770 469 -1 /product/etc/permissions/com.google.android.dialer.support.xml +64770 473 -1 /product/etc/permissions/com.google.googlecbrs.xml +64770 460 -1 /product/etc/permissions/com.android.sdm.plugins.connmo.xml +64770 465 -1 /product/etc/permissions/com.android.systemui.xml +64770 472 -1 /product/etc/permissions/com.google.android.verizonloggingservice.xml +64770 486 -1 /product/etc/permissions/vzw_mvs_permissions.xml +64770 485 -1 /product/etc/permissions/tmo_grsu_permissions.xml +64770 451 -1 /product/etc/fs_config_files +64770 453 -1 /product/etc/libnfc-nci.conf +64770 449 -1 /product/etc/fonts_customization.xml +26 1562403 -1 /product/etc/ambient +64770 432 -1 /product/etc/ambient/matcher_tah.leveldb +26 1562405 -1 /product/etc/sysconfig +64770 513 -1 /product/etc/sysconfig/dreamliner.xml +64770 517 -1 /product/etc/sysconfig/google_vr_build.xml +64770 525 -1 /product/etc/sysconfig/vzw_mvs_sysconfig.xml +64770 515 -1 /product/etc/sysconfig/google.xml +64770 519 -1 /product/etc/sysconfig/pixel_2018_exclusive.xml +64770 516 -1 /product/etc/sysconfig/google_build.xml +64770 524 -1 /product/etc/sysconfig/tmo_grsu_sysconfig.xml +64770 522 -1 /product/etc/sysconfig/preinstalled-packages-product-pixel-2018.xml +64770 514 -1 /product/etc/sysconfig/google-hiddenapi-package-whitelist.xml +64770 523 -1 /product/etc/sysconfig/qti_whitelist.xml +64770 520 -1 /product/etc/sysconfig/pixel_experience_2017.xml +64770 526 -1 /product/etc/sysconfig/whitelist_com.android.omadm.service.xml +64770 521 -1 /product/etc/sysconfig/pixel_experience_2018.xml +64770 518 -1 /product/etc/sysconfig/nexus.xml +26 1562420 -1 /product/etc/firmware +64770 448 -1 /product/etc/firmware/music_detector.sound_model +64770 447 -1 /product/etc/firmware/music_detector.descriptor +26 1562423 -1 /product/etc/preferred-apps +64770 488 -1 /product/etc/preferred-apps/google.xml +26 34900 -1 /product/overlay +26 1562425 -1 /product/overlay/IconPackCircularAndroid +64770 710 -1 /product/overlay/IconPackCircularAndroid/IconPackCircularAndroidOverlay.apk +26 1562427 -1 /product/overlay/IconPackCircularSettings +64770 716 -1 /product/overlay/IconPackCircularSettings/IconPackCircularSettingsOverlay.apk +26 1562429 -1 /product/overlay/NavigationBarMode3Button +64770 748 -1 /product/overlay/NavigationBarMode3Button/NavigationBarMode3ButtonOverlay.apk +26 1562431 -1 /product/overlay/DisplayCutoutEmulationTall +64770 697 -1 /product/overlay/DisplayCutoutEmulationTall/DisplayCutoutEmulationTallOverlay.apk +64770 765 -1 /product/overlay/SystemUIGoogle__auto_generated_rro_product.apk +26 1562433 -1 /product/overlay/IconPackRoundedSettings +64770 736 -1 /product/overlay/IconPackRoundedSettings/IconPackRoundedSettingsOverlay.apk +64770 688 -1 /product/overlay/BuiltInPrintService__auto_generated_rro_product.apk +26 1562436 -1 /product/overlay/AccentColorGreen +64770 679 -1 /product/overlay/AccentColorGreen/AccentColorGreenOverlay.apk +26 1562438 -1 /product/overlay/IconPackCircularPixelThemePicker +64770 714 -1 /product/overlay/IconPackCircularPixelThemePicker/IconPackCircularPixelThemePickerOverlay.apk +26 1562440 -1 /product/overlay/AccentColorSpace +64770 687 -1 /product/overlay/AccentColorSpace/AccentColorSpaceOverlay.apk +26 1562442 -1 /product/overlay/IconShapeSquircle +64770 742 -1 /product/overlay/IconShapeSquircle/IconShapeSquircleOverlay.apk +26 1562444 -1 /product/overlay/IconPackCircularSystemUI +64770 718 -1 /product/overlay/IconPackCircularSystemUI/IconPackCircularSystemUIOverlay.apk +26 1562446 -1 /product/overlay/ChinaMobileFrameworksRes +64770 690 -1 /product/overlay/ChinaMobileFrameworksRes/ChinaMobileFrameworksRes.apk +26 1562448 -1 /product/overlay/IconPackRoundedSystemUI +64770 738 -1 /product/overlay/IconPackRoundedSystemUI/IconPackRoundedSystemUIOverlay.apk +26 1562450 -1 /product/overlay/NavigationBarModeGesturalNarrowBack +64770 754 -1 /product/overlay/NavigationBarModeGesturalNarrowBack/NavigationBarModeGesturalOverlayNarrowBack.apk +26 1562452 -1 /product/overlay/DisplayCutoutNoCutout +64770 699 -1 /product/overlay/DisplayCutoutNoCutout/NoCutoutOverlay.apk +26 1562454 -1 /product/overlay/IconShapeTeardrop +64770 744 -1 /product/overlay/IconShapeTeardrop/IconShapeTeardropOverlay.apk +26 1562456 -1 /product/overlay/IconPackRoundedAndroid +64770 730 -1 /product/overlay/IconPackRoundedAndroid/IconPackRoundedAndroidOverlay.apk +26 1562458 -1 /product/overlay/AccentColorPurple +64770 685 -1 /product/overlay/AccentColorPurple/AccentColorPurpleOverlay.apk +64770 767 -1 /product/overlay/Telecom__auto_generated_rro_product.apk +26 1562460 -1 /product/overlay/IconPackFilledAndroid +64770 720 -1 /product/overlay/IconPackFilledAndroid/IconPackFilledAndroidOverlay.apk +64770 766 -1 /product/overlay/TeleService__auto_generated_rro_product.apk +64770 757 -1 /product/overlay/NfcNci__auto_generated_rro_product.apk +26 1562462 -1 /product/overlay/DisplayCutoutEmulationDouble +64770 695 -1 /product/overlay/DisplayCutoutEmulationDouble/DisplayCutoutEmulationDoubleOverlay.apk +26 1562464 -1 /product/overlay/AccentColorCinnamon +64770 677 -1 /product/overlay/AccentColorCinnamon/AccentColorCinnamonOverlay.apk +64770 768 -1 /product/overlay/TelephonyProvider__auto_generated_rro_product.apk +64770 762 -1 /product/overlay/SafetyRegulatoryInfo__auto_generated_rro_product.apk +64770 764 -1 /product/overlay/SimAppDialog__auto_generated_rro_product.apk +26 1562468 -1 /product/overlay/AccentColorOcean +64770 681 -1 /product/overlay/AccentColorOcean/AccentColorOceanOverlay.apk +26 1562470 -1 /product/overlay/AccentColorOrchid +64770 683 -1 /product/overlay/AccentColorOrchid/AccentColorOrchidOverlay.apk +26 1562472 -1 /product/overlay/IconPackRoundedPixelThemePicker +64770 734 -1 /product/overlay/IconPackRoundedPixelThemePicker/IconPackRoundedPixelThemePickerOverlay.apk +26 1562474 -1 /product/overlay/IconPackFilledSettings +64770 726 -1 /product/overlay/IconPackFilledSettings/IconPackFilledSettingsOverlay.apk +26 1562476 -1 /product/overlay/FontArbutusSource +64770 701 -1 /product/overlay/FontArbutusSource/FontArbutusSourceOverlay.apk +26 1562478 -1 /product/overlay/IconPackFilledPixelThemePicker +64770 724 -1 /product/overlay/IconPackFilledPixelThemePicker/IconPackFilledPixelThemePickerOverlay.apk +64770 707 -1 /product/overlay/GooglePermissionControllerOverlay.apk +26 1562480 -1 /product/overlay/DisplayCutoutEmulationCorner +64770 693 -1 /product/overlay/DisplayCutoutEmulationCorner/DisplayCutoutEmulationCornerOverlay.apk +26 1562482 -1 /product/overlay/IconPackRoundedPixelLauncher +64770 732 -1 /product/overlay/IconPackRoundedPixelLauncher/IconPackRoundedPixelLauncherOverlay.apk +64770 759 -1 /product/overlay/PixelConfigOverlayCommon.apk +26 1495636 -1 /product/overlay/PixelDocumentsUIGoogleOverlay +64770 761 -1 /product/overlay/PixelDocumentsUIGoogleOverlay/PixelDocumentsUIGoogleOverlay.apk +26 1562484 -1 /product/overlay/IconPackCircularPixelLauncher +64770 712 -1 /product/overlay/IconPackCircularPixelLauncher/IconPackCircularPixelLauncherOverlay.apk +64770 708 -1 /product/overlay/GoogleWebViewOverlay.apk +26 180740 -1 /product/overlay/NavigationBarMode2Button +64770 746 -1 /product/overlay/NavigationBarMode2Button/NavigationBarMode2ButtonOverlay.apk +26 1562486 -1 /product/overlay/IconPackFilledSystemUI +64770 728 -1 /product/overlay/IconPackFilledSystemUI/IconPackFilledSystemUIOverlay.apk +64770 758 -1 /product/overlay/PixelConfigOverlay2018.apk +64770 691 -1 /product/overlay/ContactsProvider__auto_generated_rro_product.apk +26 1562488 -1 /product/overlay/AccentColorBlack +64770 675 -1 /product/overlay/AccentColorBlack/AccentColorBlackOverlay.apk +26 1562490 -1 /product/overlay/NavigationBarModeGesturalWideBack +64770 756 -1 /product/overlay/NavigationBarModeGesturalWideBack/NavigationBarModeGesturalOverlayWideBack.apk +26 1562492 -1 /product/overlay/FontRubikRubik +64770 705 -1 /product/overlay/FontRubikRubik/FontRubikRubikOverlay.apk +26 1562494 -1 /product/overlay/NavigationBarModeGesturalExtraWideBack +64770 752 -1 /product/overlay/NavigationBarModeGesturalExtraWideBack/NavigationBarModeGesturalOverlayExtraWideBack.apk +64770 706 -1 /product/overlay/GoogleConfigOverlay.apk +64770 763 -1 /product/overlay/SettingsProvider__auto_generated_rro_product.apk +26 1562496 -1 /product/overlay/NavigationBarModeGestural +64770 750 -1 /product/overlay/NavigationBarModeGestural/NavigationBarModeGesturalOverlay.apk +26 1562498 -1 /product/overlay/IconPackFilledPixelLauncher +64770 722 -1 /product/overlay/IconPackFilledPixelLauncher/IconPackFilledPixelLauncherOverlay.apk +26 1562500 -1 /product/overlay/FontArvoLato +64770 703 -1 /product/overlay/FontArvoLato/FontArvoLatoOverlay.apk +64770 769 -1 /product/overlay/framework-res__auto_generated_rro_product.apk +26 1562502 -1 /product/overlay/IconShapeRoundedRect +64770 740 -1 /product/overlay/IconShapeRoundedRect/IconShapeRoundedRectOverlay.apk +26 172558 -1 /product/app +26 1495631 -1 /product/app/Drive +26 1562504 -1 /product/app/Drive/oat +26 1562505 -1 /product/app/Drive/oat/arm64 +64770 61 -1 /product/app/Drive/oat/arm64/Drive.odex +64770 62 -1 /product/app/Drive/oat/arm64/Drive.vdex +64770 58 -1 /product/app/Drive/Drive.apk +26 180686 -1 /product/app/WebViewGoogle +26 1562508 -1 /product/app/WebViewGoogle/oat +26 1562509 -1 /product/app/WebViewGoogle/oat/arm +64770 308 -1 /product/app/WebViewGoogle/oat/arm/WebViewGoogle.odex +64770 309 -1 /product/app/WebViewGoogle/oat/arm/WebViewGoogle.vdex +26 1562512 -1 /product/app/WebViewGoogle/oat/arm64 +64770 311 -1 /product/app/WebViewGoogle/oat/arm64/WebViewGoogle.odex +64770 312 -1 /product/app/WebViewGoogle/oat/arm64/WebViewGoogle.vdex +64770 305 -1 /product/app/WebViewGoogle/WebViewGoogle.apk +26 180591 -1 /product/app/PixelLogger +64770 205 -1 /product/app/PixelLogger/PixelLogger.apk +26 1562515 -1 /product/app/PixelLogger/oat +26 1562516 -1 /product/app/PixelLogger/oat/arm64 +64770 209 -1 /product/app/PixelLogger/oat/arm64/PixelLogger.vdex +64770 208 -1 /product/app/PixelLogger/oat/arm64/PixelLogger.odex +26 1562519 -1 /product/app/MobileFeliCaWebPluginBoot +26 1562520 -1 /product/app/MobileFeliCaWebPluginBoot/oat +26 1562521 -1 /product/app/MobileFeliCaWebPluginBoot/oat/arm64 +64770 170 -1 /product/app/MobileFeliCaWebPluginBoot/oat/arm64/MobileFeliCaWebPluginBoot.vdex +64770 169 -1 /product/app/MobileFeliCaWebPluginBoot/oat/arm64/MobileFeliCaWebPluginBoot.odex +64770 166 -1 /product/app/MobileFeliCaWebPluginBoot/MobileFeliCaWebPluginBoot.apk +26 1496123 -1 /product/app/PrebuiltDeskClockGoogle +26 1547367 -1 /product/app/PrebuiltDeskClockGoogle/oat +26 1545743 -1 /product/app/PrebuiltDeskClockGoogle/oat/arm64 +64770 234 -1 /product/app/PrebuiltDeskClockGoogle/oat/arm64/PrebuiltDeskClockGoogle.vdex +64770 232 -1 /product/app/PrebuiltDeskClockGoogle/oat/arm64/PrebuiltDeskClockGoogle.art +64770 233 -1 /product/app/PrebuiltDeskClockGoogle/oat/arm64/PrebuiltDeskClockGoogle.odex +64770 229 -1 /product/app/PrebuiltDeskClockGoogle/PrebuiltDeskClockGoogle.apk.prof +64770 228 -1 /product/app/PrebuiltDeskClockGoogle/PrebuiltDeskClockGoogle.apk +26 1562526 -1 /product/app/MobileFeliCaClient +26 1562527 -1 /product/app/MobileFeliCaClient/oat +26 1562528 -1 /product/app/MobileFeliCaClient/oat/arm64 +64770 140 -1 /product/app/MobileFeliCaClient/oat/arm64/MobileFeliCaClient.vdex +64770 139 -1 /product/app/MobileFeliCaClient/oat/arm64/MobileFeliCaClient.odex +64770 136 -1 /product/app/MobileFeliCaClient/MobileFeliCaClient.apk +26 1546782 -1 /product/app/SoundAmplifierPrebuilt +26 1562532 -1 /product/app/SoundAmplifierPrebuilt/oat +26 1562533 -1 /product/app/SoundAmplifierPrebuilt/oat/arm64 +64770 260 -1 /product/app/SoundAmplifierPrebuilt/oat/arm64/SoundAmplifierPrebuilt.vdex +64770 259 -1 /product/app/SoundAmplifierPrebuilt/oat/arm64/SoundAmplifierPrebuilt.odex +64770 256 -1 /product/app/SoundAmplifierPrebuilt/SoundAmplifierPrebuilt.apk +26 1562536 -1 /product/app/Tycho +26 1562537 -1 /product/app/Tycho/oat +26 1562538 -1 /product/app/Tycho/oat/arm64 +64770 281 -1 /product/app/Tycho/oat/arm64/Tycho.vdex +64770 280 -1 /product/app/Tycho/oat/arm64/Tycho.odex +64770 277 -1 /product/app/Tycho/Tycho.apk +26 1496122 -1 /product/app/GoogleContacts +26 1494556 -1 /product/app/GoogleContacts/oat +26 1494557 -1 /product/app/GoogleContacts/oat/arm64 +64770 82 -1 /product/app/GoogleContacts/oat/arm64/GoogleContacts.art +64770 83 -1 /product/app/GoogleContacts/oat/arm64/GoogleContacts.odex +64770 84 -1 /product/app/GoogleContacts/oat/arm64/GoogleContacts.vdex +64770 79 -1 /product/app/GoogleContacts/GoogleContacts.apk.prof +64770 78 -1 /product/app/GoogleContacts/GoogleContacts.apk +26 1562543 -1 /product/app/GoogleVrCore +26 1562544 -1 /product/app/GoogleVrCore/oat +26 1562545 -1 /product/app/GoogleVrCore/oat/arm +64770 101 -1 /product/app/GoogleVrCore/oat/arm/GoogleVrCore.odex +64770 102 -1 /product/app/GoogleVrCore/oat/arm/GoogleVrCore.vdex +26 1562548 -1 /product/app/GoogleVrCore/oat/arm64 +64770 104 -1 /product/app/GoogleVrCore/oat/arm64/GoogleVrCore.odex +64770 105 -1 /product/app/GoogleVrCore/oat/arm64/GoogleVrCore.vdex +64770 98 -1 /product/app/GoogleVrCore/GoogleVrCore.apk +26 1562552 -1 /product/app/SoundPickerPrebuilt +64770 262 -1 /product/app/SoundPickerPrebuilt/SoundPickerPrebuilt.apk +26 1562554 -1 /product/app/SoundPickerPrebuilt/oat +26 1562555 -1 /product/app/SoundPickerPrebuilt/oat/arm64 +64770 265 -1 /product/app/SoundPickerPrebuilt/oat/arm64/SoundPickerPrebuilt.odex +64770 266 -1 /product/app/SoundPickerPrebuilt/oat/arm64/SoundPickerPrebuilt.vdex +26 1496129 -1 /product/app/YouTube +26 1562558 -1 /product/app/YouTube/oat +26 1562559 -1 /product/app/YouTube/oat/arm +64770 319 -1 /product/app/YouTube/oat/arm/YouTube.odex +64770 320 -1 /product/app/YouTube/oat/arm/YouTube.vdex +64770 318 -1 /product/app/YouTube/oat/arm/YouTube.art +26 1562563 -1 /product/app/YouTube/oat/arm64 +64770 323 -1 /product/app/YouTube/oat/arm64/YouTube.odex +64770 324 -1 /product/app/YouTube/oat/arm64/YouTube.vdex +64770 322 -1 /product/app/YouTube/oat/arm64/YouTube.art +64770 315 -1 /product/app/YouTube/YouTube.apk.prof +64770 314 -1 /product/app/YouTube/YouTube.apk +26 1562568 -1 /product/app/DiagnosticsToolPrebuilt +26 1562569 -1 /product/app/DiagnosticsToolPrebuilt/oat +26 1562570 -1 /product/app/DiagnosticsToolPrebuilt/oat/arm64 +64770 55 -1 /product/app/DiagnosticsToolPrebuilt/oat/arm64/DiagnosticsToolPrebuilt.odex +64770 56 -1 /product/app/DiagnosticsToolPrebuilt/oat/arm64/DiagnosticsToolPrebuilt.vdex +64770 52 -1 /product/app/DiagnosticsToolPrebuilt/DiagnosticsToolPrebuilt.apk +26 1562574 -1 /product/app/MarkupGoogle +64770 127 -1 /product/app/MarkupGoogle/MarkupGoogle.apk +26 1562576 -1 /product/app/MarkupGoogle/oat +26 1562577 -1 /product/app/MarkupGoogle/oat/arm64 +64770 134 -1 /product/app/MarkupGoogle/oat/arm64/MarkupGoogle.vdex +64770 133 -1 /product/app/MarkupGoogle/oat/arm64/MarkupGoogle.odex +26 1562580 -1 /product/app/MarkupGoogle/lib +26 1562581 -1 /product/app/MarkupGoogle/lib/arm64 +64770 595 -1 /product/app/MarkupGoogle/lib/arm64/libsketchology_native.so +26 1562583 -1 /product/app/arcore +26 1562584 -1 /product/app/arcore/oat +26 1562585 -1 /product/app/arcore/oat/arm64 +64770 330 -1 /product/app/arcore/oat/arm64/arcore.vdex +64770 329 -1 /product/app/arcore/oat/arm64/arcore.odex +64770 326 -1 /product/app/arcore/arcore.apk +26 180651 -1 /product/app/SSRestartDetector +64770 250 -1 /product/app/SSRestartDetector/SSRestartDetector.apk +26 1562589 -1 /product/app/SSRestartDetector/oat +26 1562590 -1 /product/app/SSRestartDetector/oat/arm64 +64770 254 -1 /product/app/SSRestartDetector/oat/arm64/SSRestartDetector.vdex +64770 253 -1 /product/app/SSRestartDetector/oat/arm64/SSRestartDetector.odex +26 1486139 -1 /product/app/CalendarGooglePrebuilt +26 1562593 -1 /product/app/CalendarGooglePrebuilt/oat +26 1562594 -1 /product/app/CalendarGooglePrebuilt/oat/arm64 +64770 25 -1 /product/app/CalendarGooglePrebuilt/oat/arm64/CalendarGooglePrebuilt.odex +64770 26 -1 /product/app/CalendarGooglePrebuilt/oat/arm64/CalendarGooglePrebuilt.vdex +64770 22 -1 /product/app/CalendarGooglePrebuilt/CalendarGooglePrebuilt.apk +26 1562597 -1 /product/app/DMAgent +64770 46 -1 /product/app/DMAgent/DMAgent.apk +26 1562599 -1 /product/app/DMAgent/oat +26 1562600 -1 /product/app/DMAgent/oat/arm64 +64770 49 -1 /product/app/DMAgent/oat/arm64/DMAgent.odex +64770 50 -1 /product/app/DMAgent/oat/arm64/DMAgent.vdex +26 1517594 -1 /product/app/GoogleTTS +64770 92 -1 /product/app/GoogleTTS/GoogleTTS.apk +26 1562603 -1 /product/app/GoogleTTS/oat +26 1562604 -1 /product/app/GoogleTTS/oat/arm64 +64770 96 -1 /product/app/GoogleTTS/oat/arm64/GoogleTTS.vdex +64770 95 -1 /product/app/GoogleTTS/oat/arm64/GoogleTTS.odex +26 1496125 -1 /product/app/PrebuiltGmail +26 1562607 -1 /product/app/PrebuiltGmail/oat +26 1562608 -1 /product/app/PrebuiltGmail/oat/arm64 +64770 240 -1 /product/app/PrebuiltGmail/oat/arm64/PrebuiltGmail.art +64770 241 -1 /product/app/PrebuiltGmail/oat/arm64/PrebuiltGmail.odex +64770 242 -1 /product/app/PrebuiltGmail/oat/arm64/PrebuiltGmail.vdex +64770 237 -1 /product/app/PrebuiltGmail/PrebuiltGmail.apk.prof +64770 236 -1 /product/app/PrebuiltGmail/PrebuiltGmail.apk +26 1545929 -1 /product/app/talkback +64770 342 -1 /product/app/talkback/talkback.apk +26 1562613 -1 /product/app/talkback/oat +26 1562614 -1 /product/app/talkback/oat/arm64 +64770 340 -1 /product/app/talkback/oat/arm64/talkback.odex +64770 341 -1 /product/app/talkback/oat/arm64/talkback.vdex +26 1429451 -1 /product/app/Photos +64770 199 -1 /product/app/Photos/Photos.apk +26 1562617 -1 /product/app/Photos/oat +26 1562618 -1 /product/app/Photos/oat/arm64 +64770 203 -1 /product/app/Photos/oat/arm64/Photos.vdex +64770 202 -1 /product/app/Photos/oat/arm64/Photos.odex +26 1562621 -1 /product/app/PixelThemesStub2018 +64770 211 -1 /product/app/PixelThemesStub2018/PixelThemesStub2018.apk +26 1562623 -1 /product/app/VZWAPNLib +26 1562624 -1 /product/app/VZWAPNLib/oat +26 1562625 -1 /product/app/VZWAPNLib/oat/arm64 +64770 286 -1 /product/app/VZWAPNLib/oat/arm64/VZWAPNLib.odex +64770 287 -1 /product/app/VZWAPNLib/oat/arm64/VZWAPNLib.vdex +64770 283 -1 /product/app/VZWAPNLib/VZWAPNLib.apk +26 1562629 -1 /product/app/xdivert +26 1562630 -1 /product/app/xdivert/oat +26 1562631 -1 /product/app/xdivert/oat/arm64 +64770 346 -1 /product/app/xdivert/oat/arm64/xdivert.odex +64770 347 -1 /product/app/xdivert/oat/arm64/xdivert.vdex +64770 348 -1 /product/app/xdivert/xdivert.apk +26 180731 -1 /product/app/RamdumpUploader +26 1562635 -1 /product/app/RamdumpUploader/oat +26 1562636 -1 /product/app/RamdumpUploader/oat/arm64 +64770 248 -1 /product/app/RamdumpUploader/oat/arm64/RamdumpUploader.vdex +64770 247 -1 /product/app/RamdumpUploader/oat/arm64/RamdumpUploader.odex +64770 244 -1 /product/app/RamdumpUploader/RamdumpUploader.apk +26 1562639 -1 /product/app/NexusWallpapersStubPrebuilt2018 +64770 191 -1 /product/app/NexusWallpapersStubPrebuilt2018/NexusWallpapersStubPrebuilt2018.apk +26 1496120 -1 /product/app/PrebuiltBugle +26 1562641 -1 /product/app/PrebuiltBugle/oat +26 1562642 -1 /product/app/PrebuiltBugle/oat/arm64 +64770 225 -1 /product/app/PrebuiltBugle/oat/arm64/PrebuiltBugle.odex +64770 226 -1 /product/app/PrebuiltBugle/oat/arm64/PrebuiltBugle.vdex +64770 222 -1 /product/app/PrebuiltBugle/PrebuiltBugle.apk +26 984486 -1 /product/app/CalculatorGooglePrebuilt +64770 15 -1 /product/app/CalculatorGooglePrebuilt/CalculatorGooglePrebuilt.apk.prof +26 1562646 -1 /product/app/CalculatorGooglePrebuilt/oat +26 1562647 -1 /product/app/CalculatorGooglePrebuilt/oat/arm64 +64770 18 -1 /product/app/CalculatorGooglePrebuilt/oat/arm64/CalculatorGooglePrebuilt.art +64770 20 -1 /product/app/CalculatorGooglePrebuilt/oat/arm64/CalculatorGooglePrebuilt.vdex +64770 19 -1 /product/app/CalculatorGooglePrebuilt/oat/arm64/CalculatorGooglePrebuilt.odex +64770 14 -1 /product/app/CalculatorGooglePrebuilt/CalculatorGooglePrebuilt.apk +26 1562651 -1 /product/app/MobileFeliCaWebPlugin +26 1562652 -1 /product/app/MobileFeliCaWebPlugin/oat +26 1562653 -1 /product/app/MobileFeliCaWebPlugin/oat/arm64 +64770 163 -1 /product/app/MobileFeliCaWebPlugin/oat/arm64/MobileFeliCaWebPlugin.odex +64770 164 -1 /product/app/MobileFeliCaWebPlugin/oat/arm64/MobileFeliCaWebPlugin.vdex +64770 160 -1 /product/app/MobileFeliCaWebPlugin/MobileFeliCaWebPlugin.apk +26 1562657 -1 /product/app/LocationHistoryPrebuilt +26 1562658 -1 /product/app/LocationHistoryPrebuilt/oat +26 1562659 -1 /product/app/LocationHistoryPrebuilt/oat/arm64 +64770 117 -1 /product/app/LocationHistoryPrebuilt/oat/arm64/LocationHistoryPrebuilt.vdex +64770 116 -1 /product/app/LocationHistoryPrebuilt/oat/arm64/LocationHistoryPrebuilt.odex +64770 113 -1 /product/app/LocationHistoryPrebuilt/LocationHistoryPrebuilt.apk +26 1495638 -1 /product/app/NetGrapher +64770 182 -1 /product/app/NetGrapher/NetGrapher.apk +26 1562663 -1 /product/app/NetGrapher/oat +26 1562664 -1 /product/app/NetGrapher/oat/arm64 +64770 189 -1 /product/app/NetGrapher/oat/arm64/NetGrapher.vdex +64770 188 -1 /product/app/NetGrapher/oat/arm64/NetGrapher.odex +26 1562667 -1 /product/app/NetGrapher/lib +26 1562668 -1 /product/app/NetGrapher/lib/arm64 +64770 185 -1 /product/app/NetGrapher/lib/arm64/libcronet.65.0.3291.0.so +26 180607 -1 /product/app/com.qualcomm.qti.services.secureui +64770 332 -1 /product/app/com.qualcomm.qti.services.secureui/com.qualcomm.qti.services.secureui.apk +26 1562670 -1 /product/app/com.qualcomm.qti.services.secureui/oat +26 1562671 -1 /product/app/com.qualcomm.qti.services.secureui/oat/arm64 +64770 336 -1 /product/app/com.qualcomm.qti.services.secureui/oat/arm64/com.qualcomm.qti.services.secureui.vdex +64770 335 -1 /product/app/com.qualcomm.qti.services.secureui/oat/arm64/com.qualcomm.qti.services.secureui.odex +26 1562674 -1 /product/app/PlayAutoInstallConfig +26 1562675 -1 /product/app/PlayAutoInstallConfig/oat +26 1562676 -1 /product/app/PlayAutoInstallConfig/oat/arm +64770 217 -1 /product/app/PlayAutoInstallConfig/oat/arm/PlayAutoInstallConfig.vdex +64770 216 -1 /product/app/PlayAutoInstallConfig/oat/arm/PlayAutoInstallConfig.odex +26 1562679 -1 /product/app/PlayAutoInstallConfig/oat/arm64 +64770 220 -1 /product/app/PlayAutoInstallConfig/oat/arm64/PlayAutoInstallConfig.vdex +64770 219 -1 /product/app/PlayAutoInstallConfig/oat/arm64/PlayAutoInstallConfig.odex +64770 213 -1 /product/app/PlayAutoInstallConfig/PlayAutoInstallConfig.apk +26 180657 -1 /product/app/Videos +64770 289 -1 /product/app/Videos/Videos.apk +26 1562683 -1 /product/app/Videos/oat +26 1562684 -1 /product/app/Videos/oat/arm +64770 293 -1 /product/app/Videos/oat/arm/Videos.vdex +64770 292 -1 /product/app/Videos/oat/arm/Videos.odex +26 180566 -1 /product/app/GoogleCamera +26 1466389 -1 /product/app/GoogleCamera/oat +26 1452725 -1 /product/app/GoogleCamera/oat/arm64 +64770 75 -1 /product/app/GoogleCamera/oat/arm64/GoogleCamera.odex +64770 74 -1 /product/app/GoogleCamera/oat/arm64/GoogleCamera.art +64770 76 -1 /product/app/GoogleCamera/oat/arm64/GoogleCamera.vdex +64770 71 -1 /product/app/GoogleCamera/GoogleCamera.apk.prof +64770 70 -1 /product/app/GoogleCamera/GoogleCamera.apk +26 1562688 -1 /product/app/MobileFeliCaMenuMainApp +26 1562689 -1 /product/app/MobileFeliCaMenuMainApp/oat +26 1562690 -1 /product/app/MobileFeliCaMenuMainApp/oat/arm64 +64770 152 -1 /product/app/MobileFeliCaMenuMainApp/oat/arm64/MobileFeliCaMenuMainApp.vdex +64770 151 -1 /product/app/MobileFeliCaMenuMainApp/oat/arm64/MobileFeliCaMenuMainApp.odex +64770 148 -1 /product/app/MobileFeliCaMenuMainApp/MobileFeliCaMenuMainApp.apk +26 1562694 -1 /product/app/MobileFeliCaSettingApp +26 1562695 -1 /product/app/MobileFeliCaSettingApp/oat +26 1562696 -1 /product/app/MobileFeliCaSettingApp/oat/arm64 +64770 157 -1 /product/app/MobileFeliCaSettingApp/oat/arm64/MobileFeliCaSettingApp.odex +64770 158 -1 /product/app/MobileFeliCaSettingApp/oat/arm64/MobileFeliCaSettingApp.vdex +64770 154 -1 /product/app/MobileFeliCaSettingApp/MobileFeliCaSettingApp.apk +26 180559 -1 /product/app/LatinIMEGooglePrebuilt +64770 107 -1 /product/app/LatinIMEGooglePrebuilt/LatinIMEGooglePrebuilt.apk +26 1562700 -1 /product/app/LatinIMEGooglePrebuilt/oat +26 1562701 -1 /product/app/LatinIMEGooglePrebuilt/oat/arm64 +64770 110 -1 /product/app/LatinIMEGooglePrebuilt/oat/arm64/LatinIMEGooglePrebuilt.odex +64770 111 -1 /product/app/LatinIMEGooglePrebuilt/oat/arm64/LatinIMEGooglePrebuilt.vdex +26 1562704 -1 /product/app/ModuleMetadataGoogle +64770 172 -1 /product/app/ModuleMetadataGoogle/ModuleMetadataGoogle.apk +26 1347095 -1 /product/app/Maps +26 1350039 -1 /product/app/Maps/oat +26 1347099 -1 /product/app/Maps/oat/arm64 +64770 125 -1 /product/app/Maps/oat/arm64/Maps.vdex +64770 123 -1 /product/app/Maps/oat/arm64/Maps.art +64770 124 -1 /product/app/Maps/oat/arm64/Maps.odex +64770 119 -1 /product/app/Maps/Maps.apk +64770 120 -1 /product/app/Maps/Maps.apk.prof +26 1562707 -1 /product/app/Ornament +26 1562708 -1 /product/app/Ornament/oat +26 1562709 -1 /product/app/Ornament/oat/arm64 +64770 197 -1 /product/app/Ornament/oat/arm64/Ornament.vdex +64770 196 -1 /product/app/Ornament/oat/arm64/Ornament.odex +64770 193 -1 /product/app/Ornament/Ornament.apk +26 1496127 -1 /product/app/Music2 +26 1562713 -1 /product/app/Music2/oat +26 1562714 -1 /product/app/Music2/oat/arm64 +64770 178 -1 /product/app/Music2/oat/arm64/Music2.art +64770 179 -1 /product/app/Music2/oat/arm64/Music2.odex +64770 180 -1 /product/app/Music2/oat/arm64/Music2.vdex +64770 174 -1 /product/app/Music2/Music2.apk +64770 175 -1 /product/app/Music2/Music2.apk.prof +26 1562719 -1 /product/app/EmergencyInfoGoogleNoUi +26 1562720 -1 /product/app/EmergencyInfoGoogleNoUi/oat +26 1562721 -1 /product/app/EmergencyInfoGoogleNoUi/oat/arm64 +64770 67 -1 /product/app/EmergencyInfoGoogleNoUi/oat/arm64/EmergencyInfoGoogleNoUi.odex +64770 68 -1 /product/app/EmergencyInfoGoogleNoUi/oat/arm64/EmergencyInfoGoogleNoUi.vdex +64770 64 -1 /product/app/EmergencyInfoGoogleNoUi/EmergencyInfoGoogleNoUi.apk +26 180795 -1 /product/app/TrichromeLibrary +64770 268 -1 /product/app/TrichromeLibrary/TrichromeLibrary.apk +26 1562725 -1 /product/app/TrichromeLibrary/oat +26 1562726 -1 /product/app/TrichromeLibrary/oat/arm +64770 271 -1 /product/app/TrichromeLibrary/oat/arm/TrichromeLibrary.odex +64770 272 -1 /product/app/TrichromeLibrary/oat/arm/TrichromeLibrary.vdex +26 1562729 -1 /product/app/TrichromeLibrary/oat/arm64 +64770 274 -1 /product/app/TrichromeLibrary/oat/arm64/TrichromeLibrary.odex +64770 275 -1 /product/app/TrichromeLibrary/oat/arm64/TrichromeLibrary.vdex +26 1496117 -1 /product/app/Chrome +64770 35 -1 /product/app/Chrome/Chrome.apk.prof +26 1562733 -1 /product/app/Chrome/oat +26 1562734 -1 /product/app/Chrome/oat/arm +64770 38 -1 /product/app/Chrome/oat/arm/Chrome.art +64770 40 -1 /product/app/Chrome/oat/arm/Chrome.vdex +64770 39 -1 /product/app/Chrome/oat/arm/Chrome.odex +26 1562738 -1 /product/app/Chrome/oat/arm64 +64770 42 -1 /product/app/Chrome/oat/arm64/Chrome.art +64770 44 -1 /product/app/Chrome/oat/arm64/Chrome.vdex +64770 43 -1 /product/app/Chrome/oat/arm64/Chrome.odex +64770 34 -1 /product/app/Chrome/Chrome.apk +26 1562742 -1 /product/app/WallpapersBReel2018 +26 1562743 -1 /product/app/WallpapersBReel2018/oat +26 1562744 -1 /product/app/WallpapersBReel2018/oat/arm64 +64770 302 -1 /product/app/WallpapersBReel2018/oat/arm64/WallpapersBReel2018.odex +64770 303 -1 /product/app/WallpapersBReel2018/oat/arm64/WallpapersBReel2018.vdex +64770 295 -1 /product/app/WallpapersBReel2018/WallpapersBReel2018.apk +26 1562748 -1 /product/app/WallpapersBReel2018/lib +26 1562749 -1 /product/app/WallpapersBReel2018/lib/arm64 +64770 596 -1 /product/app/WallpapersBReel2018/lib/arm64/libwallpapers-breel-2018-jni.so +64770 591 -1 /product/app/WallpapersBReel2018/lib/arm64/libgdx.so +26 1562752 -1 /product/app/MobileFeliCaMenuApp +26 1562753 -1 /product/app/MobileFeliCaMenuApp/oat +26 1562754 -1 /product/app/MobileFeliCaMenuApp/oat/arm64 +64770 145 -1 /product/app/MobileFeliCaMenuApp/oat/arm64/MobileFeliCaMenuApp.odex +64770 146 -1 /product/app/MobileFeliCaMenuApp/oat/arm64/MobileFeliCaMenuApp.vdex +64770 142 -1 /product/app/MobileFeliCaMenuApp/MobileFeliCaMenuApp.apk +26 1481918 -1 /product/app/CarrierMetrics +26 1562758 -1 /product/app/CarrierMetrics/oat +26 1562759 -1 /product/app/CarrierMetrics/oat/arm64 +64770 31 -1 /product/app/CarrierMetrics/oat/arm64/CarrierMetrics.odex +64770 32 -1 /product/app/CarrierMetrics/oat/arm64/CarrierMetrics.vdex +64770 28 -1 /product/app/CarrierMetrics/CarrierMetrics.apk +26 1562762 -1 /product/app/GoogleContactsSyncAdapter +26 1562763 -1 /product/app/GoogleContactsSyncAdapter/oat +26 1562764 -1 /product/app/GoogleContactsSyncAdapter/oat/arm64 +64770 90 -1 /product/app/GoogleContactsSyncAdapter/oat/arm64/GoogleContactsSyncAdapter.vdex +64770 89 -1 /product/app/GoogleContactsSyncAdapter/oat/arm64/GoogleContactsSyncAdapter.odex +64770 86 -1 /product/app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk +26 1562768 -1 /product/iorap-trace +64770 576 -1 /product/iorap-trace/com.android.calendar.compiled_trace.pb +64770 577 -1 /product/iorap-trace/com.android.deskclock.compiled_trace.pb +64770 578 -1 /product/iorap-trace/com.google.android.GoogleCamera.compiled_trace.pb +2054 27 -1 /product/iorap-trace/com.android.settings.compiled_trace.pb +2054 28 -1 /product/iorap-trace/com.google.android.calculator.compiled_trace.pb +26 1494253 -1 /product/lib +64770 582 -1 /product/lib/libdmjavaplugin.so +64770 586 -1 /product/lib/vendor.qti.hardware.qdutils_disp@1.0.so +64770 585 -1 /product/lib/vendor.google.wireless_charger@1.0.so +64770 584 -1 /product/lib/vendor.google.wifi_ext@1.0.so +64770 583 -1 /product/lib/libsecureuisvc_jni.so +64770 581 -1 /product/lib/libdmengine.so +64770 580 -1 /product/lib/com.qualcomm.qti.ant@1.0.so +66317 2 -1 /metadata +66317 16 -1 /metadata/apex +66317 17 -1 /metadata/apex/sessions +66317 13 -1 /metadata/password_slots +66317 14 -1 /metadata/ota +66317 15 -1 /metadata/ota/snapshots +66317 12 -1 /metadata/vold +66317 21 -1 /metadata/vold/metadata_encryption +66317 22 -1 /metadata/vold/metadata_encryption/key +66317 26 -1 /metadata/vold/metadata_encryption/key/keymaster_key_blob +66317 23 -1 /metadata/vold/metadata_encryption/key/version +66317 25 -1 /metadata/vold/metadata_encryption/key/stretching +66317 27 -1 /metadata/vold/metadata_encryption/key/encrypted_key +66317 24 -1 /metadata/vold/metadata_encryption/key/secdiscardable +66317 18 -1 /metadata/gsi +66317 20 -1 /metadata/gsi/ota +66317 19 -1 /metadata/gsi/dsu +66317 11 -1 /metadata/lost+found diff --git a/tests/src/db/app_component_name_test.cc b/tests/src/db/app_component_name_test.cc new file mode 100644 index 0000000..2d2fa59 --- /dev/null +++ b/tests/src/db/app_component_name_test.cc @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2019 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. + */ + +#include "common/debug.h" +#include "db/app_component_name.h" + +#include <gtest/gtest.h> + +namespace iorap::compiler { + +TEST(AppComponentNameTest, FullyQualifiedActivityName) { + db::AppComponentName component_name{"foo.bar", "foo.bar.MainActivity"}; + + db::AppComponentName result = component_name.Canonicalize(); + + EXPECT_EQ(result.package, "foo.bar"); + EXPECT_EQ(result.activity_name, "foo.bar.MainActivity"); +} + +TEST(AppComponentNameTest, NotFullyQualifiedActivityName) { + db::AppComponentName component_name{"foo.bar", ".MainActivity"}; + + db::AppComponentName result = component_name.Canonicalize(); + + EXPECT_EQ(result.package, "foo.bar"); + EXPECT_EQ(result.activity_name, "foo.bar.MainActivity"); +} +} // namespace iorap::compiler diff --git a/tests/src/inode2filename/search_directories_test.cc b/tests/src/inode2filename/search_directories_test.cc index d9903d6..89dc433 100644 --- a/tests/src/inode2filename/search_directories_test.cc +++ b/tests/src/inode2filename/search_directories_test.cc @@ -14,6 +14,7 @@ * limitations under the License. */ +#include "inode2filename/inode.h" #include "inode2filename/search_directories.h" #include "inode2filename/system_call.h" @@ -28,6 +29,10 @@ #include <sys/sysmacros.h> +#ifdef makedev +#undef makedev +#endif + // Set this to 1 when debugging by hand to get more output. // Otherwise the spam might be too much when most tests are failing. @@ -2446,9 +2451,9 @@ class FakeSystemCall : public SystemCall { memset(statbuf, 0, sizeof(*statbuf)); Inode inode = maybe_path_entry->inode; - statbuf->st_dev = makedev(static_cast<int>(inode.device_major), - static_cast<int>(inode.device_minor)); - statbuf->st_ino = static_cast<ino_t>(inode.inode); + statbuf->st_dev = iorap::inode2filename::makedev(static_cast<int>(inode.device_major), + static_cast<int>(inode.device_minor)); + statbuf->st_ino = static_cast<iorap::inode2filename::ino_t>(inode.inode); return 0; } @@ -2813,7 +2818,7 @@ auto MakeAllPassInodes(std::vector<std::string> root_dirs, std::vector<std::stri INSTANTIATE_TEST_CASE_P(AllResultsAreSuccess, SearchDirectoriesTest, ::testing::Values( - MakeAllPassInodes(/*root_dirs*/{"/"}, {"66323@1127133"}, {"/data"}) + MakeAllPassInodes(/*root_dirs*/{"/"}, {"66323@1127133"}, {"//data"}) // TODO: why is it adding an extra '/' ? )); #endif diff --git a/tests/src/maintenance/controller_test.cc b/tests/src/maintenance/controller_test.cc new file mode 100644 index 0000000..d2ce19f --- /dev/null +++ b/tests/src/maintenance/controller_test.cc @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2019 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. + */ + +#include "common/debug.h" +#include "maintenance/controller.h" + +#include "db/file_models.h" +#include "db/models.h" + +#include <cstdio> +#include <filesystem> +#include <fstream> +#include <string> +#include <vector> + +#include <android-base/file.h> +#include <gtest/gtest.h> +#include <gmock/gmock.h> + +using ::testing::Return; +using ::testing::_; +using ::testing::SaveArg; +using ::testing::SaveArgPointee; + +namespace iorap::maintenance { + +static std::string GetTestDataPath(const std::string& fn) { + static std::string exec_dir = android::base::GetExecutableDirectory(); + return exec_dir + "/tests/src/maintenance/testdata/" + fn; +} + +class MockExec : public IExec { + public: + MOCK_METHOD(int, + Execve, + (const std::string& pathname, std::vector<std::string>& argv_vec, char *const envp[]), + (override)); + + MOCK_METHOD(pid_t, Fork, (), (override)); +}; + +class ControllerTest: public ::testing::Test { + protected: + void SetUp() override { + // The db is a fake db with the following tables: + // + // packages: + // id, name, version + // 1, com.android.settings, 1 + // 2, com.yawanng, 1 + // + // activities: + // id, name + // 1, Setting + // 2, yawanng + // + // app_launch_histories: + // id, activity_id, temperature, trace_enabled, readahead_enabled, intent_start_ns, total_time_ns, report_fully_drawn_ns + // 1, 1, 1, 1, 1, 1, 2, NULL + // 2, 1, 1, 1, 1, NULL, 4, 5 + // 3, 1, 1, 1, 1, 3, NULL, NULL + // 4, 1, 1, 1, 1, 3, 7, 8 + // 5, 1, 1, 0, 1, 4, 9, 10 + // 6, 1, 2, 1, 1, 5, 11, 12 + // 7, 2, 1, 1, 1, 6, 21, 22 + // 8, 2, 1, 1, 1, 7, 22, 23 + // + // raw_traces: + // id, history_id, file_path + // 1, 1, 1.txt + // 2, 3, 3.txt + // 3, 4, 4.txt + // 4, 5, 5.txt + // 5, 6, 6.txt + // 6, 7, 7.txt + // 7, 8, 8.txt + db_path = GetTestDataPath("test_sqlite.db"); + } + + std::string db_path; + TemporaryDir root_path; +}; + +MATCHER_P(AreArgsExpected, compiled_trace_path, "") { + std::vector<std::string> expect = + { "1.txt", + "3.txt", + "4.txt", + "--timestamp_limit_ns", "2", + "--timestamp_limit_ns", "18446744073709551615", + "--timestamp_limit_ns", "8", + "--output-text", + "--output-proto", compiled_trace_path, + "--verbose" }; + return arg == expect; +} + +TEST_F(ControllerTest, CompilationController) { + auto mock_exec = std::make_shared<MockExec>(); + iorap::db::SchemaModel db_schema = db::SchemaModel::GetOrCreate(db_path); + db::DbHandle db{db_schema.db()}; + + setenv("IORAPD_ROOT_DIR", root_path.path ,1); + std::string compiled_trace_path = std::string(root_path.path) + + "/com.android.settings/1/Setting/compiled_traces/compiled_trace.pb"; + + // No recompile + ControllerParameters params{ + /*output_text=*/true, + /*inode_textcache=*/std::nullopt, + /*verbose=*/true, + /*recompile=*/false, + /*min_traces=*/3, + mock_exec}; + + ON_CALL(*mock_exec, Fork()) + .WillByDefault(Return(-2)); + + EXPECT_CALL(*mock_exec, + Execve("/system/bin/iorap.cmd.compiler", + AreArgsExpected(compiled_trace_path), + nullptr)) + .Times(2); + + CompileAppsOnDevice(db, params); + + // Recompile + ControllerParameters params2{ + /*output_text=*/true, + /*inode_textcache=*/std::nullopt, + /*verbose=*/true, + /*recompile=*/true, + /*min_traces=*/3, + mock_exec}; + + // Create a fake compiled trace file to test recompile. + std::ofstream tmp_file; + tmp_file.open(compiled_trace_path); + tmp_file.close(); + + CompileAppsOnDevice(db, params2); +} + +} // namespace iorap::maintenance diff --git a/tests/src/maintenance/testdata/test_sqlite.db b/tests/src/maintenance/testdata/test_sqlite.db Binary files differnew file mode 100644 index 0000000..8e823f2 --- /dev/null +++ b/tests/src/maintenance/testdata/test_sqlite.db |