xref: /aosp_15_r20/art/libartservice/service/api/system-server-current.txt (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker// Signature format: 2.0
2*795d594fSAndroid Build Coastguard Workerpackage com.android.server.art {
3*795d594fSAndroid Build Coastguard Worker
4*795d594fSAndroid Build Coastguard Worker  @FlaggedApi("com.android.art.flags.art_service_v3") public final class ArtManagedInstallFileHelper {
5*795d594fSAndroid Build Coastguard Worker    method @FlaggedApi("com.android.art.flags.art_service_v3") @NonNull public static java.util.List<java.lang.String> filterPathsForApk(@NonNull java.util.List<java.lang.String>, @NonNull String);
6*795d594fSAndroid Build Coastguard Worker    method @FlaggedApi("com.android.art.flags.art_service_v3") @NonNull public static String getTargetPathForApk(@NonNull String, @NonNull String);
7*795d594fSAndroid Build Coastguard Worker    method @FlaggedApi("com.android.art.flags.art_service_v3") public static boolean isArtManaged(@NonNull String);
8*795d594fSAndroid Build Coastguard Worker  }
9*795d594fSAndroid Build Coastguard Worker
10*795d594fSAndroid Build Coastguard Worker  public final class ArtManagerLocal {
11*795d594fSAndroid Build Coastguard Worker    ctor @Deprecated public ArtManagerLocal();
12*795d594fSAndroid Build Coastguard Worker    ctor public ArtManagerLocal(@NonNull android.content.Context);
13*795d594fSAndroid Build Coastguard Worker    method public void addDexoptDoneCallback(boolean, @NonNull java.util.concurrent.Executor, @NonNull com.android.server.art.ArtManagerLocal.DexoptDoneCallback);
14*795d594fSAndroid Build Coastguard Worker    method public void cancelBackgroundDexoptJob();
15*795d594fSAndroid Build Coastguard Worker    method public void clearAdjustCompilerFilterCallback();
16*795d594fSAndroid Build Coastguard Worker    method @NonNull public void clearAppProfiles(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
17*795d594fSAndroid Build Coastguard Worker    method public void clearBatchDexoptStartCallback();
18*795d594fSAndroid Build Coastguard Worker    method public void clearScheduleBackgroundDexoptJobCallback();
19*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DeleteResult deleteDexoptArtifacts(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
20*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptResult dexoptPackage(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull com.android.server.art.model.DexoptParams);
21*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptResult dexoptPackage(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull com.android.server.art.model.DexoptParams, @NonNull android.os.CancellationSignal);
22*795d594fSAndroid Build Coastguard Worker    method public void dump(@NonNull java.io.PrintWriter, @NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot);
23*795d594fSAndroid Build Coastguard Worker    method public void dumpPackage(@NonNull java.io.PrintWriter, @NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
24*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.ArtManagedFileStats getArtManagedFileStats(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
25*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptStatus getDexoptStatus(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String);
26*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptStatus getDexoptStatus(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, int);
27*795d594fSAndroid Build Coastguard Worker    method public int handleShellCommand(@NonNull android.os.Binder, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull String[]);
28*795d594fSAndroid Build Coastguard Worker    method public void onApexStaged(@NonNull String[]);
29*795d594fSAndroid Build Coastguard Worker    method public void onBoot(@NonNull String, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<com.android.server.art.model.OperationProgress>);
30*795d594fSAndroid Build Coastguard Worker    method public void printShellCommandHelp(@NonNull java.io.PrintWriter);
31*795d594fSAndroid Build Coastguard Worker    method public void removeDexoptDoneCallback(@NonNull com.android.server.art.ArtManagerLocal.DexoptDoneCallback);
32*795d594fSAndroid Build Coastguard Worker    method public int scheduleBackgroundDexoptJob();
33*795d594fSAndroid Build Coastguard Worker    method public void setAdjustCompilerFilterCallback(@NonNull java.util.concurrent.Executor, @NonNull com.android.server.art.ArtManagerLocal.AdjustCompilerFilterCallback);
34*795d594fSAndroid Build Coastguard Worker    method public void setBatchDexoptStartCallback(@NonNull java.util.concurrent.Executor, @NonNull com.android.server.art.ArtManagerLocal.BatchDexoptStartCallback);
35*795d594fSAndroid Build Coastguard Worker    method public void setScheduleBackgroundDexoptJobCallback(@NonNull java.util.concurrent.Executor, @NonNull com.android.server.art.ArtManagerLocal.ScheduleBackgroundDexoptJobCallback);
36*795d594fSAndroid Build Coastguard Worker    method @NonNull public android.os.ParcelFileDescriptor snapshotAppProfile(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @Nullable String) throws com.android.server.art.ArtManagerLocal.SnapshotProfileException;
37*795d594fSAndroid Build Coastguard Worker    method @NonNull public android.os.ParcelFileDescriptor snapshotBootImageProfile(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot) throws com.android.server.art.ArtManagerLocal.SnapshotProfileException;
38*795d594fSAndroid Build Coastguard Worker    method public void startBackgroundDexoptJob();
39*795d594fSAndroid Build Coastguard Worker    method public void unscheduleBackgroundDexoptJob();
40*795d594fSAndroid Build Coastguard Worker  }
41*795d594fSAndroid Build Coastguard Worker
42*795d594fSAndroid Build Coastguard Worker  public static interface ArtManagerLocal.AdjustCompilerFilterCallback {
43*795d594fSAndroid Build Coastguard Worker    method @NonNull public String onAdjustCompilerFilter(@NonNull String, @NonNull String, @NonNull String);
44*795d594fSAndroid Build Coastguard Worker  }
45*795d594fSAndroid Build Coastguard Worker
46*795d594fSAndroid Build Coastguard Worker  public static interface ArtManagerLocal.BatchDexoptStartCallback {
47*795d594fSAndroid Build Coastguard Worker    method public void onBatchDexoptStart(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull java.util.List<java.lang.String>, @NonNull com.android.server.art.model.BatchDexoptParams.Builder, @NonNull android.os.CancellationSignal);
48*795d594fSAndroid Build Coastguard Worker  }
49*795d594fSAndroid Build Coastguard Worker
50*795d594fSAndroid Build Coastguard Worker  public static interface ArtManagerLocal.DexoptDoneCallback {
51*795d594fSAndroid Build Coastguard Worker    method public void onDexoptDone(@NonNull com.android.server.art.model.DexoptResult);
52*795d594fSAndroid Build Coastguard Worker  }
53*795d594fSAndroid Build Coastguard Worker
54*795d594fSAndroid Build Coastguard Worker  public static interface ArtManagerLocal.ScheduleBackgroundDexoptJobCallback {
55*795d594fSAndroid Build Coastguard Worker    method public void onOverrideJobInfo(@NonNull android.app.job.JobInfo.Builder);
56*795d594fSAndroid Build Coastguard Worker  }
57*795d594fSAndroid Build Coastguard Worker
58*795d594fSAndroid Build Coastguard Worker  public static class ArtManagerLocal.SnapshotProfileException extends java.lang.Exception {
59*795d594fSAndroid Build Coastguard Worker  }
60*795d594fSAndroid Build Coastguard Worker
61*795d594fSAndroid Build Coastguard Worker  public class ArtModuleServiceInitializer {
62*795d594fSAndroid Build Coastguard Worker    method public static void setArtModuleServiceManager(@NonNull android.os.ArtModuleServiceManager);
63*795d594fSAndroid Build Coastguard Worker  }
64*795d594fSAndroid Build Coastguard Worker
65*795d594fSAndroid Build Coastguard Worker  public class DexUseManagerLocal {
66*795d594fSAndroid Build Coastguard Worker    method @NonNull public static com.android.server.art.DexUseManagerLocal createInstance(@NonNull android.content.Context);
67*795d594fSAndroid Build Coastguard Worker    method @NonNull public java.util.List<com.android.server.art.model.DexContainerFileUseInfo> getSecondaryDexContainerFileUseInfo(@NonNull String);
68*795d594fSAndroid Build Coastguard Worker    method public void notifyDexContainersLoaded(@NonNull com.android.server.pm.PackageManagerLocal.FilteredSnapshot, @NonNull String, @NonNull java.util.Map<java.lang.String,java.lang.String>);
69*795d594fSAndroid Build Coastguard Worker    method public void systemReady();
70*795d594fSAndroid Build Coastguard Worker  }
71*795d594fSAndroid Build Coastguard Worker
72*795d594fSAndroid Build Coastguard Worker  public class ReasonMapping {
73*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_BG_DEXOPT = "bg-dexopt";
74*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_BOOT_AFTER_MAINLINE_UPDATE = "boot-after-mainline-update";
75*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_BOOT_AFTER_OTA = "boot-after-ota";
76*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_CMDLINE = "cmdline";
77*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_FIRST_BOOT = "first-boot";
78*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_INACTIVE = "inactive";
79*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_INSTALL = "install";
80*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_INSTALL_BULK = "install-bulk";
81*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_INSTALL_BULK_DOWNGRADED = "install-bulk-downgraded";
82*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_INSTALL_BULK_SECONDARY = "install-bulk-secondary";
83*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_INSTALL_BULK_SECONDARY_DOWNGRADED = "install-bulk-secondary-downgraded";
84*795d594fSAndroid Build Coastguard Worker    field public static final String REASON_INSTALL_FAST = "install-fast";
85*795d594fSAndroid Build Coastguard Worker    field @FlaggedApi("com.android.art.flags.art_service_v3") public static final String REASON_PRE_REBOOT_DEXOPT = "ab-ota";
86*795d594fSAndroid Build Coastguard Worker  }
87*795d594fSAndroid Build Coastguard Worker
88*795d594fSAndroid Build Coastguard Worker}
89*795d594fSAndroid Build Coastguard Worker
90*795d594fSAndroid Build Coastguard Workerpackage com.android.server.art.model {
91*795d594fSAndroid Build Coastguard Worker
92*795d594fSAndroid Build Coastguard Worker  public class ArtFlags {
93*795d594fSAndroid Build Coastguard Worker    method public static int defaultGetStatusFlags();
94*795d594fSAndroid Build Coastguard Worker    field public static final int FLAG_FORCE = 16; // 0x10
95*795d594fSAndroid Build Coastguard Worker    field public static final int FLAG_FOR_PRIMARY_DEX = 1; // 0x1
96*795d594fSAndroid Build Coastguard Worker    field public static final int FLAG_FOR_SECONDARY_DEX = 2; // 0x2
97*795d594fSAndroid Build Coastguard Worker    field public static final int FLAG_FOR_SINGLE_SPLIT = 32; // 0x20
98*795d594fSAndroid Build Coastguard Worker    field public static final int FLAG_IGNORE_PROFILE = 128; // 0x80
99*795d594fSAndroid Build Coastguard Worker    field public static final int FLAG_SHOULD_DOWNGRADE = 8; // 0x8
100*795d594fSAndroid Build Coastguard Worker    field public static final int FLAG_SHOULD_INCLUDE_DEPENDENCIES = 4; // 0x4
101*795d594fSAndroid Build Coastguard Worker    field public static final int FLAG_SKIP_IF_STORAGE_LOW = 64; // 0x40
102*795d594fSAndroid Build Coastguard Worker    field public static final int PRIORITY_BACKGROUND = 40; // 0x28
103*795d594fSAndroid Build Coastguard Worker    field public static final int PRIORITY_BOOT = 100; // 0x64
104*795d594fSAndroid Build Coastguard Worker    field public static final int PRIORITY_INTERACTIVE = 60; // 0x3c
105*795d594fSAndroid Build Coastguard Worker    field public static final int PRIORITY_INTERACTIVE_FAST = 80; // 0x50
106*795d594fSAndroid Build Coastguard Worker    field public static final int SCHEDULE_DISABLED_BY_SYSPROP = 2; // 0x2
107*795d594fSAndroid Build Coastguard Worker    field public static final int SCHEDULE_JOB_SCHEDULER_FAILURE = 1; // 0x1
108*795d594fSAndroid Build Coastguard Worker    field public static final int SCHEDULE_SUCCESS = 0; // 0x0
109*795d594fSAndroid Build Coastguard Worker  }
110*795d594fSAndroid Build Coastguard Worker
111*795d594fSAndroid Build Coastguard Worker  public class ArtManagedFileStats {
112*795d594fSAndroid Build Coastguard Worker    method public long getTotalSizeBytesByType(int);
113*795d594fSAndroid Build Coastguard Worker    field public static final int TYPE_CUR_PROFILE = 2; // 0x2
114*795d594fSAndroid Build Coastguard Worker    field public static final int TYPE_DEXOPT_ARTIFACT = 0; // 0x0
115*795d594fSAndroid Build Coastguard Worker    field public static final int TYPE_REF_PROFILE = 1; // 0x1
116*795d594fSAndroid Build Coastguard Worker  }
117*795d594fSAndroid Build Coastguard Worker
118*795d594fSAndroid Build Coastguard Worker  public abstract class BatchDexoptParams {
119*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract com.android.server.art.model.DexoptParams getDexoptParams();
120*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract java.util.List<java.lang.String> getPackages();
121*795d594fSAndroid Build Coastguard Worker  }
122*795d594fSAndroid Build Coastguard Worker
123*795d594fSAndroid Build Coastguard Worker  public static final class BatchDexoptParams.Builder {
124*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.BatchDexoptParams build();
125*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.BatchDexoptParams.Builder setDexoptParams(@NonNull com.android.server.art.model.DexoptParams);
126*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.BatchDexoptParams.Builder setPackages(@NonNull java.util.List<java.lang.String>);
127*795d594fSAndroid Build Coastguard Worker  }
128*795d594fSAndroid Build Coastguard Worker
129*795d594fSAndroid Build Coastguard Worker  public abstract class DeleteResult {
130*795d594fSAndroid Build Coastguard Worker    method public abstract long getFreedBytes();
131*795d594fSAndroid Build Coastguard Worker  }
132*795d594fSAndroid Build Coastguard Worker
133*795d594fSAndroid Build Coastguard Worker  public abstract class DexContainerFileUseInfo {
134*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getDexContainerFile();
135*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract java.util.Set<java.lang.String> getLoadingPackages();
136*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract android.os.UserHandle getUserHandle();
137*795d594fSAndroid Build Coastguard Worker  }
138*795d594fSAndroid Build Coastguard Worker
139*795d594fSAndroid Build Coastguard Worker  public class DexoptParams {
140*795d594fSAndroid Build Coastguard Worker    method @NonNull public String getCompilerFilter();
141*795d594fSAndroid Build Coastguard Worker    method public int getFlags();
142*795d594fSAndroid Build Coastguard Worker    method public int getPriorityClass();
143*795d594fSAndroid Build Coastguard Worker    method @NonNull public String getReason();
144*795d594fSAndroid Build Coastguard Worker    method @Nullable public String getSplitName();
145*795d594fSAndroid Build Coastguard Worker    field public static final String COMPILER_FILTER_NOOP = "skip";
146*795d594fSAndroid Build Coastguard Worker  }
147*795d594fSAndroid Build Coastguard Worker
148*795d594fSAndroid Build Coastguard Worker  public static final class DexoptParams.Builder {
149*795d594fSAndroid Build Coastguard Worker    ctor public DexoptParams.Builder(@NonNull String);
150*795d594fSAndroid Build Coastguard Worker    ctor public DexoptParams.Builder(@NonNull String, int);
151*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptParams build();
152*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptParams.Builder setCompilerFilter(@NonNull String);
153*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptParams.Builder setFlags(int);
154*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptParams.Builder setFlags(int, int);
155*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptParams.Builder setPriorityClass(int);
156*795d594fSAndroid Build Coastguard Worker    method @NonNull public com.android.server.art.model.DexoptParams.Builder setSplitName(@Nullable String);
157*795d594fSAndroid Build Coastguard Worker  }
158*795d594fSAndroid Build Coastguard Worker
159*795d594fSAndroid Build Coastguard Worker  public abstract class DexoptResult {
160*795d594fSAndroid Build Coastguard Worker    method public int getFinalStatus();
161*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract java.util.List<com.android.server.art.model.DexoptResult.PackageDexoptResult> getPackageDexoptResults();
162*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getReason();
163*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getRequestedCompilerFilter();
164*795d594fSAndroid Build Coastguard Worker    field public static final int DEXOPT_CANCELLED = 40; // 0x28
165*795d594fSAndroid Build Coastguard Worker    field public static final int DEXOPT_FAILED = 30; // 0x1e
166*795d594fSAndroid Build Coastguard Worker    field public static final int DEXOPT_PERFORMED = 20; // 0x14
167*795d594fSAndroid Build Coastguard Worker    field public static final int DEXOPT_SKIPPED = 10; // 0xa
168*795d594fSAndroid Build Coastguard Worker    field public static final int EXTENDED_BAD_EXTERNAL_PROFILE = 4; // 0x4
169*795d594fSAndroid Build Coastguard Worker    field public static final int EXTENDED_SKIPPED_NO_DEX_CODE = 2; // 0x2
170*795d594fSAndroid Build Coastguard Worker    field public static final int EXTENDED_SKIPPED_STORAGE_LOW = 1; // 0x1
171*795d594fSAndroid Build Coastguard Worker  }
172*795d594fSAndroid Build Coastguard Worker
173*795d594fSAndroid Build Coastguard Worker  public abstract static class DexoptResult.DexContainerFileDexoptResult {
174*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getAbi();
175*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getActualCompilerFilter();
176*795d594fSAndroid Build Coastguard Worker    method public abstract long getDex2oatCpuTimeMillis();
177*795d594fSAndroid Build Coastguard Worker    method public abstract long getDex2oatWallTimeMillis();
178*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getDexContainerFile();
179*795d594fSAndroid Build Coastguard Worker    method public abstract int getExtendedStatusFlags();
180*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract java.util.List<java.lang.String> getExternalProfileErrors();
181*795d594fSAndroid Build Coastguard Worker    method public abstract long getSizeBeforeBytes();
182*795d594fSAndroid Build Coastguard Worker    method public abstract long getSizeBytes();
183*795d594fSAndroid Build Coastguard Worker    method public abstract int getStatus();
184*795d594fSAndroid Build Coastguard Worker    method public abstract boolean isPrimaryAbi();
185*795d594fSAndroid Build Coastguard Worker  }
186*795d594fSAndroid Build Coastguard Worker
187*795d594fSAndroid Build Coastguard Worker  public abstract static class DexoptResult.PackageDexoptResult {
188*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract java.util.List<com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult> getDexContainerFileDexoptResults();
189*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getPackageName();
190*795d594fSAndroid Build Coastguard Worker    method public int getStatus();
191*795d594fSAndroid Build Coastguard Worker    method public boolean hasUpdatedArtifacts();
192*795d594fSAndroid Build Coastguard Worker  }
193*795d594fSAndroid Build Coastguard Worker
194*795d594fSAndroid Build Coastguard Worker  public abstract class DexoptStatus {
195*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract java.util.List<com.android.server.art.model.DexoptStatus.DexContainerFileDexoptStatus> getDexContainerFileDexoptStatuses();
196*795d594fSAndroid Build Coastguard Worker  }
197*795d594fSAndroid Build Coastguard Worker
198*795d594fSAndroid Build Coastguard Worker  public abstract static class DexoptStatus.DexContainerFileDexoptStatus {
199*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getAbi();
200*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getCompilationReason();
201*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getCompilerFilter();
202*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getDexContainerFile();
203*795d594fSAndroid Build Coastguard Worker    method @NonNull public abstract String getLocationDebugString();
204*795d594fSAndroid Build Coastguard Worker    method public abstract boolean isPrimaryAbi();
205*795d594fSAndroid Build Coastguard Worker    method public abstract boolean isPrimaryDex();
206*795d594fSAndroid Build Coastguard Worker  }
207*795d594fSAndroid Build Coastguard Worker
208*795d594fSAndroid Build Coastguard Worker  public abstract class OperationProgress {
209*795d594fSAndroid Build Coastguard Worker    method public int getPercentage();
210*795d594fSAndroid Build Coastguard Worker  }
211*795d594fSAndroid Build Coastguard Worker
212*795d594fSAndroid Build Coastguard Worker}
213*795d594fSAndroid Build Coastguard Worker
214