IActivityManager.java revision 1ccac75e1f1b97eccb916a8de04fc1012b30f6e5
1/* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.app; 18 19import android.content.ComponentName; 20import android.content.ContentProviderNative; 21import android.content.IContentProvider; 22import android.content.Intent; 23import android.content.IntentFilter; 24import android.content.IIntentSender; 25import android.content.IIntentReceiver; 26import android.content.pm.ApplicationInfo; 27import android.content.pm.ConfigurationInfo; 28import android.content.pm.IPackageDataObserver; 29import android.content.pm.ProviderInfo; 30import android.content.res.Configuration; 31import android.graphics.Bitmap; 32import android.net.Uri; 33import android.os.RemoteException; 34import android.os.IBinder; 35import android.os.IInterface; 36import android.os.Parcel; 37import android.os.Parcelable; 38import android.os.ParcelFileDescriptor; 39import android.os.Bundle; 40 41import java.util.List; 42 43/** 44 * System private API for talking with the activity manager service. This 45 * provides calls from the application back to the activity manager. 46 * 47 * {@hide} 48 */ 49public interface IActivityManager extends IInterface { 50 /** 51 * Returned by startActivity() if the start request was canceled because 52 * app switches are temporarily canceled to ensure the user's last request 53 * (such as pressing home) is performed. 54 */ 55 public static final int START_SWITCHES_CANCELED = 4; 56 /** 57 * Returned by startActivity() if an activity wasn't really started, but 58 * the given Intent was given to the existing top activity. 59 */ 60 public static final int START_DELIVERED_TO_TOP = 3; 61 /** 62 * Returned by startActivity() if an activity wasn't really started, but 63 * a task was simply brought to the foreground. 64 */ 65 public static final int START_TASK_TO_FRONT = 2; 66 /** 67 * Returned by startActivity() if the caller asked that the Intent not 68 * be executed if it is the recipient, and that is indeed the case. 69 */ 70 public static final int START_RETURN_INTENT_TO_CALLER = 1; 71 /** 72 * Activity was started successfully as normal. 73 */ 74 public static final int START_SUCCESS = 0; 75 public static final int START_INTENT_NOT_RESOLVED = -1; 76 public static final int START_CLASS_NOT_FOUND = -2; 77 public static final int START_FORWARD_AND_REQUEST_CONFLICT = -3; 78 public static final int START_PERMISSION_DENIED = -4; 79 public int startActivity(IApplicationThread caller, 80 Intent intent, String resolvedType, Uri[] grantedUriPermissions, 81 int grantedMode, IBinder resultTo, String resultWho, int requestCode, 82 boolean onlyIfNeeded, boolean debug) throws RemoteException; 83 public boolean startNextMatchingActivity(IBinder callingActivity, 84 Intent intent) throws RemoteException; 85 public boolean finishActivity(IBinder token, int code, Intent data) 86 throws RemoteException; 87 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException; 88 public Intent registerReceiver(IApplicationThread caller, 89 IIntentReceiver receiver, IntentFilter filter, 90 String requiredPermission) throws RemoteException; 91 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException; 92 public static final int BROADCAST_SUCCESS = 0; 93 public static final int BROADCAST_STICKY_CANT_HAVE_PERMISSION = -1; 94 public int broadcastIntent(IApplicationThread caller, Intent intent, 95 String resolvedType, IIntentReceiver resultTo, int resultCode, 96 String resultData, Bundle map, String requiredPermission, 97 boolean serialized, boolean sticky) throws RemoteException; 98 public void unbroadcastIntent(IApplicationThread caller, Intent intent) throws RemoteException; 99 /* oneway */ 100 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException; 101 public void setPersistent(IBinder token, boolean isPersistent) throws RemoteException; 102 public void attachApplication(IApplicationThread app) throws RemoteException; 103 /* oneway */ 104 public void activityIdle(IBinder token) throws RemoteException; 105 public void activityPaused(IBinder token, Bundle state) throws RemoteException; 106 /* oneway */ 107 public void activityStopped(IBinder token, 108 Bitmap thumbnail, CharSequence description) throws RemoteException; 109 /* oneway */ 110 public void activityDestroyed(IBinder token) throws RemoteException; 111 public String getCallingPackage(IBinder token) throws RemoteException; 112 public ComponentName getCallingActivity(IBinder token) throws RemoteException; 113 public List getTasks(int maxNum, int flags, 114 IThumbnailReceiver receiver) throws RemoteException; 115 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, 116 int flags) throws RemoteException; 117 public List getServices(int maxNum, int flags) throws RemoteException; 118 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState() 119 throws RemoteException; 120 public void moveTaskToFront(int task) throws RemoteException; 121 public void moveTaskToBack(int task) throws RemoteException; 122 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot) throws RemoteException; 123 public void moveTaskBackwards(int task) throws RemoteException; 124 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException; 125 public void finishOtherInstances(IBinder token, ComponentName className) throws RemoteException; 126 /* oneway */ 127 public void reportThumbnail(IBinder token, 128 Bitmap thumbnail, CharSequence description) throws RemoteException; 129 public ContentProviderHolder getContentProvider(IApplicationThread caller, 130 String name) throws RemoteException; 131 public void removeContentProvider(IApplicationThread caller, 132 String name) throws RemoteException; 133 public void publishContentProviders(IApplicationThread caller, 134 List<ContentProviderHolder> providers) throws RemoteException; 135 public ComponentName startService(IApplicationThread caller, Intent service, 136 String resolvedType) throws RemoteException; 137 public int stopService(IApplicationThread caller, Intent service, 138 String resolvedType) throws RemoteException; 139 public boolean stopServiceToken(ComponentName className, IBinder token, 140 int startId) throws RemoteException; 141 public void setServiceForeground(ComponentName className, IBinder token, 142 boolean isForeground) throws RemoteException; 143 public int bindService(IApplicationThread caller, IBinder token, 144 Intent service, String resolvedType, 145 IServiceConnection connection, int flags) throws RemoteException; 146 public boolean unbindService(IServiceConnection connection) throws RemoteException; 147 public void publishService(IBinder token, 148 Intent intent, IBinder service) throws RemoteException; 149 public void unbindFinished(IBinder token, Intent service, 150 boolean doRebind) throws RemoteException; 151 /* oneway */ 152 public void serviceDoneExecuting(IBinder token) throws RemoteException; 153 public IBinder peekService(Intent service, String resolvedType) throws RemoteException; 154 155 public boolean bindBackupAgent(ApplicationInfo appInfo, int backupRestoreMode) 156 throws RemoteException; 157 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException; 158 public void unbindBackupAgent(ApplicationInfo appInfo) throws RemoteException; 159 160 public boolean startInstrumentation(ComponentName className, String profileFile, 161 int flags, Bundle arguments, IInstrumentationWatcher watcher) 162 throws RemoteException; 163 public void finishInstrumentation(IApplicationThread target, 164 int resultCode, Bundle results) throws RemoteException; 165 166 public Configuration getConfiguration() throws RemoteException; 167 public void updateConfiguration(Configuration values) throws RemoteException; 168 public void setRequestedOrientation(IBinder token, 169 int requestedOrientation) throws RemoteException; 170 public int getRequestedOrientation(IBinder token) throws RemoteException; 171 172 public ComponentName getActivityClassForToken(IBinder token) throws RemoteException; 173 public String getPackageForToken(IBinder token) throws RemoteException; 174 175 public static final int INTENT_SENDER_BROADCAST = 1; 176 public static final int INTENT_SENDER_ACTIVITY = 2; 177 public static final int INTENT_SENDER_ACTIVITY_RESULT = 3; 178 public static final int INTENT_SENDER_SERVICE = 4; 179 public IIntentSender getIntentSender(int type, 180 String packageName, IBinder token, String resultWho, 181 int requestCode, Intent intent, String resolvedType, int flags) throws RemoteException; 182 public void cancelIntentSender(IIntentSender sender) throws RemoteException; 183 public boolean clearApplicationUserData(final String packageName, 184 final IPackageDataObserver observer) throws RemoteException; 185 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException; 186 187 public void setProcessLimit(int max) throws RemoteException; 188 public int getProcessLimit() throws RemoteException; 189 190 public void setProcessForeground(IBinder token, int pid, boolean isForeground) throws RemoteException; 191 192 public int checkPermission(String permission, int pid, int uid) 193 throws RemoteException; 194 195 public int checkUriPermission(Uri uri, int pid, int uid, int mode) 196 throws RemoteException; 197 public void grantUriPermission(IApplicationThread caller, String targetPkg, 198 Uri uri, int mode) throws RemoteException; 199 public void revokeUriPermission(IApplicationThread caller, Uri uri, 200 int mode) throws RemoteException; 201 202 public void showWaitingForDebugger(IApplicationThread who, boolean waiting) 203 throws RemoteException; 204 205 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException; 206 207 public void restartPackage(final String packageName) throws RemoteException; 208 209 // Note: probably don't want to allow applications access to these. 210 public void goingToSleep() throws RemoteException; 211 public void wakingUp() throws RemoteException; 212 213 public void unhandledBack() throws RemoteException; 214 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException; 215 public void setDebugApp( 216 String packageName, boolean waitForDebugger, boolean persistent) 217 throws RemoteException; 218 public void setAlwaysFinish(boolean enabled) throws RemoteException; 219 public void setActivityWatcher(IActivityWatcher watcher) 220 throws RemoteException; 221 222 public void enterSafeMode() throws RemoteException; 223 224 public void noteWakeupAlarm(IIntentSender sender) throws RemoteException; 225 226 public boolean killPidsForMemory(int[] pids) throws RemoteException; 227 228 public void reportPss(IApplicationThread caller, int pss) throws RemoteException; 229 230 // Special low-level communication with activity manager. 231 public void startRunning(String pkg, String cls, String action, 232 String data) throws RemoteException; 233 public void systemReady() throws RemoteException; 234 // Returns 1 if the user wants to debug. 235 public int handleApplicationError(IBinder app, 236 int flags, /* 1 == can debug */ 237 String tag, String shortMsg, String longMsg, 238 byte[] crashData) throws RemoteException; 239 240 /* 241 * This will deliver the specified signal to all the persistent processes. Currently only 242 * SIGUSR1 is delivered. All others are ignored. 243 */ 244 public void signalPersistentProcesses(int signal) throws RemoteException; 245 // Retrieve running application processes in the system 246 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() 247 throws RemoteException; 248 // Get device configuration 249 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException; 250 251 // Turn on/off profiling in a particular process. 252 public boolean profileControl(String process, boolean start, 253 String path) throws RemoteException; 254 255 public boolean shutdown(int timeout) throws RemoteException; 256 257 public void stopAppSwitches() throws RemoteException; 258 public void resumeAppSwitches() throws RemoteException; 259 260 /* 261 * Private non-Binder interfaces 262 */ 263 /* package */ boolean testIsSystemReady(); 264 265 /** Information you can retrieve about a particular application. */ 266 public static class ContentProviderHolder implements Parcelable { 267 public final ProviderInfo info; 268 public final String permissionFailure; 269 public IContentProvider provider; 270 public boolean noReleaseNeeded; 271 272 public ContentProviderHolder(ProviderInfo _info) { 273 info = _info; 274 permissionFailure = null; 275 } 276 277 public ContentProviderHolder(ProviderInfo _info, 278 String _permissionFailure) { 279 info = _info; 280 permissionFailure = _permissionFailure; 281 } 282 283 public int describeContents() { 284 return 0; 285 } 286 287 public void writeToParcel(Parcel dest, int flags) { 288 info.writeToParcel(dest, 0); 289 dest.writeString(permissionFailure); 290 if (provider != null) { 291 dest.writeStrongBinder(provider.asBinder()); 292 } else { 293 dest.writeStrongBinder(null); 294 } 295 dest.writeInt(noReleaseNeeded ? 1:0); 296 } 297 298 public static final Parcelable.Creator<ContentProviderHolder> CREATOR 299 = new Parcelable.Creator<ContentProviderHolder>() { 300 public ContentProviderHolder createFromParcel(Parcel source) { 301 return new ContentProviderHolder(source); 302 } 303 304 public ContentProviderHolder[] newArray(int size) { 305 return new ContentProviderHolder[size]; 306 } 307 }; 308 309 private ContentProviderHolder(Parcel source) { 310 info = ProviderInfo.CREATOR.createFromParcel(source); 311 permissionFailure = source.readString(); 312 provider = ContentProviderNative.asInterface( 313 source.readStrongBinder()); 314 noReleaseNeeded = source.readInt() != 0; 315 } 316 }; 317 318 String descriptor = "android.app.IActivityManager"; 319 320 // Please keep these transaction codes the same -- they are also 321 // sent by C++ code. 322 int START_RUNNING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION; 323 int HANDLE_APPLICATION_ERROR_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+1; 324 int START_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+2; 325 int UNHANDLED_BACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+3; 326 int OPEN_CONTENT_URI_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+4; 327 328 // Remaining non-native transaction codes. 329 int FINISH_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+10; 330 int REGISTER_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+11; 331 int UNREGISTER_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+12; 332 int BROADCAST_INTENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+13; 333 int UNBROADCAST_INTENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+14; 334 int FINISH_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+15; 335 int ATTACH_APPLICATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+16; 336 int ACTIVITY_IDLE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+17; 337 int ACTIVITY_PAUSED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+18; 338 int ACTIVITY_STOPPED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+19; 339 int GET_CALLING_PACKAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+20; 340 int GET_CALLING_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+21; 341 int GET_TASKS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+22; 342 int MOVE_TASK_TO_FRONT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+23; 343 int MOVE_TASK_TO_BACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+24; 344 int MOVE_TASK_BACKWARDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+25; 345 int GET_TASK_FOR_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+26; 346 int REPORT_THUMBNAIL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+27; 347 int GET_CONTENT_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+28; 348 int PUBLISH_CONTENT_PROVIDERS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+29; 349 int SET_PERSISTENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+30; 350 int FINISH_SUB_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+31; 351 int SYSTEM_READY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+32; 352 int START_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+33; 353 int STOP_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+34; 354 int BIND_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+35; 355 int UNBIND_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+36; 356 int PUBLISH_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+37; 357 int FINISH_OTHER_INSTANCES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+38; 358 int GOING_TO_SLEEP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+39; 359 int WAKING_UP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+40; 360 int SET_DEBUG_APP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+41; 361 int SET_ALWAYS_FINISH_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+42; 362 int START_INSTRUMENTATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+43; 363 int FINISH_INSTRUMENTATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+44; 364 int GET_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+45; 365 int UPDATE_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+46; 366 int STOP_SERVICE_TOKEN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+47; 367 int GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+48; 368 int GET_PACKAGE_FOR_TOKEN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+49; 369 int SET_PROCESS_LIMIT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+50; 370 int GET_PROCESS_LIMIT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+51; 371 int CHECK_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+52; 372 int CHECK_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+53; 373 int GRANT_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+54; 374 int REVOKE_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+55; 375 int SET_ACTIVITY_WATCHER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+56; 376 int SHOW_WAITING_FOR_DEBUGGER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+57; 377 int SIGNAL_PERSISTENT_PROCESSES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+58; 378 int GET_RECENT_TASKS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+59; 379 int SERVICE_DONE_EXECUTING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+60; 380 int ACTIVITY_DESTROYED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+61; 381 int GET_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+62; 382 int CANCEL_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+63; 383 int GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+64; 384 int ENTER_SAFE_MODE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+65; 385 int START_NEXT_MATCHING_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+66; 386 int NOTE_WAKEUP_ALARM_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+67; 387 int REMOVE_CONTENT_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+68; 388 int SET_REQUESTED_ORIENTATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+69; 389 int GET_REQUESTED_ORIENTATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+70; 390 int UNBIND_FINISHED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+71; 391 int SET_PROCESS_FOREGROUND_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+72; 392 int SET_SERVICE_FOREGROUND_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+73; 393 int MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+74; 394 int GET_MEMORY_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+75; 395 int GET_PROCESSES_IN_ERROR_STATE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+76; 396 int CLEAR_APP_DATA_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+77; 397 int RESTART_PACKAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+78; 398 int KILL_PIDS_FOR_MEMORY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+79; 399 int GET_SERVICES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+80; 400 int REPORT_PSS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+81; 401 int GET_RUNNING_APP_PROCESSES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+82; 402 int GET_DEVICE_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+83; 403 int PEEK_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+84; 404 int PROFILE_CONTROL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+85; 405 int SHUTDOWN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+86; 406 int STOP_APP_SWITCHES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+87; 407 int RESUME_APP_SWITCHES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+88; 408 int START_BACKUP_AGENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+89; 409 int BACKUP_AGENT_CREATED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+90; 410 int UNBIND_BACKUP_AGENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+91; 411} 412