| egid | number | Yes| No| Effective group identifier (EGID) of the process.<br>**System API**: This is a system API.<br>It is used only to test applications.|
| euid | number | Yes| No| Effective user identifier (EUID) of the process.<br>**System API**: This is a system API.<br>It is used only to test applications.|
| gid | number | Yes| No| Group identifier (GID) of the process.<br>**System API**: This is a system API.<br>It is used only to test applications.|
| uid | number | Yes| No| User identifier (UID) of the process.|
| uid | number | Yes| No| User identifier (UID) of the process.|
| groups | number[] | Yes| No| Array with supplementary group IDs.<br>**System API**: This is a system API.<br>It is used only to test applications.|
| pid | number | Yes| No| Process ID (PID) of the process.|
| pid | number | Yes| No| Process ID (PID) of the process.|
| ppid | number | Yes| No| Parent process ID (PPID) of the process.<br>**System API**: This is a system API.<br>It is used only to test applications.|
| tid<sup>8+</sup> | number | Yes| No| Thread ID (TID) of the thread.|
| tid<sup>8+</sup> | number | Yes| No| Thread ID (TID) of the thread.|
...
@@ -120,50 +115,6 @@ let result = process.getPastCpuTime() ;
...
@@ -120,50 +115,6 @@ let result = process.getPastCpuTime() ;
```
```
## process.runCmd
runCmd(command: string, options?: { timeout?: number, killSignal?: number | string, maxBuffer?: number }): ChildProcess
Forks a new process to run a shell command and returns the **ChildProcess** object.
| timeout | number | No| Maximum running time (in milliseconds) of the child process. When the running time of the child process exceeds the value of this parameter, the parent process sends a **killSignal** to the child process to terminate it. The default value is **0**.|
| killSignal | number \| string | No| Signal sent to the child process when the running time of a child process exceeds the timeout period. The default value is **SIGTERM**.|
| maxBuffer | number | No| Maximum buffer size for the standard input and output of the child process. When the size is exceeded, the child process will be terminated. The default value is **1024 \* 1024**.|
@@ -729,156 +568,3 @@ let pro = new process.ProcessManager();
...
@@ -729,156 +568,3 @@ let pro = new process.ProcessManager();
letpres=process.pid;
letpres=process.pid;
letresult=pro.kill(28,pres);
letresult=pro.kill(28,pres);
```
```
## ChildProcess
The **ChildProcess** object is a new child process and can be obtained by calling [process.runCmd](#processruncmd). The main process can obtain the standard input and output of the child process, send signals to the child process, and close the child process.
| pid | number | Yes| No| PID of the child process.<br>**System API**: This is a system API.<br>It is used only to test applications.|
| ppid | number | Yes| No| PPID of the child process.<br>**System API**: This is a system API.<br>It is used only to test applications.|
| exitCode | number | Yes| No| Exit code of the child process.<br>**System API**: This is a system API.<br>It is used only to test applications.|
| killed | boolean | Yes| No| Whether the parent process successfully sends a signal to the child process to terminate it.<br>**System API**: This is a system API.<br>It is used only to test applications.|
### wait
wait(): Promise<number>
Waits until the child process ends. This method uses a promise to return the exit code of the child process.
@@ -26,7 +26,7 @@ Formats the specified values and inserts them into the string by replacing the w
...
@@ -26,7 +26,7 @@ Formats the specified values and inserts them into the string by replacing the w
| Name | Type | Mandatory| Description |
| Name | Type | Mandatory| Description |
| ------- | -------- | ---- | -------------- |
| ------- | -------- | ---- | -------------- |
| format | string | Yes | String.|
| format | string | Yes | String.|
| ...args | Object[] | No | Values to format. The formatted values will be replaced the wildcard in the string. |
| ...args | Object[] | No | Values to format. The formatted values will replace the wildcard in the string. If this parameter is not set, the first parameter is returned by default.|
**Return value**
**Return value**
...
@@ -69,6 +69,20 @@ let result = util.errnoToString(errnum);
...
@@ -69,6 +69,20 @@ let result = util.errnoToString(errnum);
@@ -243,7 +262,7 @@ Formats the specified values and inserts them into the string by replacing the w
...
@@ -243,7 +262,7 @@ Formats the specified values and inserts them into the string by replacing the w
| Name| Type| Mandatory| Description|
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
| -------- | -------- | -------- | -------- |
| format | string | Yes| String.|
| format | string | Yes| String.|
| ...args | Object[] | No| Values to format. The formatted values will be replaced the wildcard in the string.|
| ...args | Object[] | No| Values to format. The formatted values will replace the wildcard in the string. If this parameter is not set, the first parameter is returned by default.|
| isEvict | boolean | Yes | Whether the cache capacity is insufficient. If the value is **true**, this method is called due to insufficient capacity. |
| isEvict | boolean | Yes | Whether the cache capacity is insufficient. If the value is **true**, this API is called due to insufficient capacity. |
| key | K | Yes | Key removed. |
| key | K | Yes | Key removed. |
| value | V | Yes | Value removed. |
| value | V | Yes | Value removed. |
| newValue | V | Yes | New value for the key if the **put()** method is called and the key to be added already exists. In other cases, this parameter is left blank.|
| newValue | V | Yes | New value for the key if the **put()** method is called and the key to be added already exists. In other cases, this parameter is left blank.|
...
@@ -3358,7 +3378,7 @@ A constructor used to create a **LruBuffer** instance. The default capacity of t
...
@@ -3358,7 +3378,7 @@ A constructor used to create a **LruBuffer** instance. The default capacity of t
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [constructor<sup>9+</sup>](#constructor9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.constructor<sup>9+</sup>](#constructor9-3) instead.
@@ -3382,7 +3402,7 @@ Changes the **LruBuffer** capacity. If the new capacity is less than or equal to
...
@@ -3382,7 +3402,7 @@ Changes the **LruBuffer** capacity. If the new capacity is less than or equal to
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [updateCapacity<sup>9+</sup>](#updatecapacity9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.updateCapacity<sup>9+</sup>](#updatecapacity9) instead.
@@ -3407,7 +3427,7 @@ Obtains the string representation of this **LruBuffer** object.
...
@@ -3407,7 +3427,7 @@ Obtains the string representation of this **LruBuffer** object.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [toString<sup>9+</sup>](#tostring9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.toString<sup>9+</sup>](#tostring9) instead.
@@ -3435,7 +3455,7 @@ Obtains the capacity of this buffer.
...
@@ -3435,7 +3455,7 @@ Obtains the capacity of this buffer.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [getCapacity<sup>9+</sup>](#getcapacity9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.getCapacity<sup>9+</sup>](#getcapacity9) instead.
@@ -3480,7 +3500,7 @@ Obtains the number of return values for **createDefault()**.
...
@@ -3480,7 +3500,7 @@ Obtains the number of return values for **createDefault()**.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [getCreateCount<sup>9+</sup>](#getcreatecount9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.getCreateCount<sup>9+</sup>](#getcreatecount9) instead.
@@ -3506,7 +3526,7 @@ Obtains the number of times that the queried values are mismatched.
...
@@ -3506,7 +3526,7 @@ Obtains the number of times that the queried values are mismatched.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [getMissCount<sup>9+</sup>](#getmisscount9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.getMissCount<sup>9+</sup>](#getmisscount9) instead.
@@ -3533,7 +3553,7 @@ Obtains the number of removals from this buffer.
...
@@ -3533,7 +3553,7 @@ Obtains the number of removals from this buffer.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [getRemovalCount<sup>9+</sup>](#getremovalcount9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.getRemovalCount<sup>9+</sup>](#getremovalcount9) instead.
@@ -3561,7 +3581,7 @@ Obtains the number of times that the queried values are matched.
...
@@ -3561,7 +3581,7 @@ Obtains the number of times that the queried values are matched.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [getMatchCount<sup>9+</sup>](#getmatchcount9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.getMatchCount<sup>9+</sup>](#getmatchcount9) instead.
@@ -3588,7 +3608,7 @@ Obtains the number of additions to this buffer.
...
@@ -3588,7 +3608,7 @@ Obtains the number of additions to this buffer.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [getPutCount<sup>9+</sup>](#getputcount9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.getPutCount<sup>9+</sup>](#getputcount9) instead.
@@ -3614,7 +3634,7 @@ Checks whether this buffer is empty.
...
@@ -3614,7 +3634,7 @@ Checks whether this buffer is empty.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [isEmpty<sup>9+</sup>](#isempty9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.isEmpty<sup>9+</sup>](#isempty9) instead.
@@ -3704,7 +3724,7 @@ Obtains all values in this buffer, listed from the most to the least recently ac
...
@@ -3704,7 +3724,7 @@ Obtains all values in this buffer, listed from the most to the least recently ac
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [values<sup>9+</sup>](#values9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.values<sup>9+</sup>](#values9) instead.
@@ -3743,6 +3763,7 @@ Obtains all keys in this buffer, listed from the most to the least recently acce
...
@@ -3743,6 +3763,7 @@ Obtains all keys in this buffer, listed from the most to the least recently acce
| K [] | All keys in the buffer, listed from the most to the least recently accessed.|
| K [] | All keys in the buffer, listed from the most to the least recently accessed.|
**Example**
**Example**
```js
```js
letpro=newutil.LruBuffer();
letpro=newutil.LruBuffer();
pro.put(2,10);
pro.put(2,10);
...
@@ -3757,7 +3778,7 @@ Removes the specified key and its value from this buffer.
...
@@ -3757,7 +3778,7 @@ Removes the specified key and its value from this buffer.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [remove<sup>9+</sup>](#remove9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.remove<sup>9+</sup>](#remove9) instead.
@@ -3788,7 +3809,7 @@ Performs subsequent operations after a value is removed.
...
@@ -3788,7 +3809,7 @@ Performs subsequent operations after a value is removed.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [afterRemoval<sup>9+</sup>](#afterremoval9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.afterRemoval<sup>9+</sup>](#afterremoval9) instead.
@@ -3796,7 +3817,7 @@ Performs subsequent operations after a value is removed.
...
@@ -3796,7 +3817,7 @@ Performs subsequent operations after a value is removed.
| Name| Type| Mandatory| Description|
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
| -------- | -------- | -------- | -------- |
| isEvict | boolean | Yes| Whether the buffer capacity is insufficient. If the value is **true**, this method is called due to insufficient capacity.|
| isEvict | boolean | Yes| Whether the buffer capacity is insufficient. If the value is **true**, this API is called due to insufficient capacity.|
| key | K | Yes| Key removed.|
| key | K | Yes| Key removed.|
| value | V | Yes| Value removed.|
| value | V | Yes| Value removed.|
| newValue | V | Yes| New value for the key if the **put()** method is called and the key to be added already exists. In other cases, this parameter is left blank.|
| newValue | V | Yes| New value for the key if the **put()** method is called and the key to be added already exists. In other cases, this parameter is left blank.|
...
@@ -3832,7 +3853,7 @@ Checks whether this buffer contains the specified key.
...
@@ -3832,7 +3853,7 @@ Checks whether this buffer contains the specified key.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [contains<sup>9+</sup>](#contains9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.contains<sup>9+</sup>](#contains9) instead.
@@ -3864,7 +3885,7 @@ Creates a value if the value of the specified key is not available.
...
@@ -3864,7 +3885,7 @@ Creates a value if the value of the specified key is not available.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [createDefault<sup>9+</sup>](#createdefault9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.createDefault<sup>9+</sup>](#createdefault9) instead.
@@ -3895,7 +3916,7 @@ Obtains a new iterator object that contains all key-value pairs in this object.
...
@@ -3895,7 +3916,7 @@ Obtains a new iterator object that contains all key-value pairs in this object.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [entries<sup>9+</sup>](#entries9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.entries<sup>9+</sup>](#entries9) instead.
@@ -3921,7 +3942,7 @@ Obtains a two-dimensional array in key-value pairs.
...
@@ -3921,7 +3942,7 @@ Obtains a two-dimensional array in key-value pairs.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [Symbol.iterator<sup>9+</sup>](#symboliterator9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [LRUCache.Symbol.iterator<sup>9+</sup>](#symboliterator9) instead.
@@ -3953,7 +3974,7 @@ A constructor used to create a **Scope** object with the specified upper and low
...
@@ -3953,7 +3974,7 @@ A constructor used to create a **Scope** object with the specified upper and low
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [constructor<sup>9+</sup>](#constructor9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.constructor<sup>9+</sup>](#constructor9-4) instead.
@@ -3980,7 +4001,7 @@ Obtains a string representation that contains this **Scope**.
...
@@ -3980,7 +4001,7 @@ Obtains a string representation that contains this **Scope**.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [toString<sup>9+</sup>](#tostring9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.toString<sup>9+</sup>](#tostring9-1) instead.
@@ -4007,7 +4028,7 @@ Obtains the intersection of this **Scope** and the given **Scope**.
...
@@ -4007,7 +4028,7 @@ Obtains the intersection of this **Scope** and the given **Scope**.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [intersect<sup>9+</sup>](#intersect9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.intersect<sup>9+</sup>](#intersect9) instead.
@@ -4043,7 +4064,7 @@ Obtains the intersection of this **Scope** and the given lower and upper limits.
...
@@ -4043,7 +4064,7 @@ Obtains the intersection of this **Scope** and the given lower and upper limits.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [intersect<sup>9+</sup>](#intersect9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.intersect<sup>9+</sup>](#intersect9-1) instead.
@@ -4079,7 +4100,7 @@ Obtains the upper limit of this **Scope**.
...
@@ -4079,7 +4100,7 @@ Obtains the upper limit of this **Scope**.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [getUpper<sup>9+</sup>](#getupper9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.getUpper<sup>9+</sup>](#getupper9) instead.
@@ -4106,7 +4127,7 @@ Obtains the lower limit of this **Scope**.
...
@@ -4106,7 +4127,7 @@ Obtains the lower limit of this **Scope**.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [getLower<sup>9+</sup>](#getlower9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.getLower<sup>9+</sup>](#getlower9) instead.
@@ -4133,7 +4154,7 @@ Obtains the union set of this **Scope** and the given lower and upper limits.
...
@@ -4133,7 +4154,7 @@ Obtains the union set of this **Scope** and the given lower and upper limits.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [expand<sup>9+</sup>](#expand9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.expand<sup>9+</sup>](#expand9) instead.
@@ -4169,7 +4190,7 @@ Obtains the union set of this **Scope** and the given **Scope**.
...
@@ -4169,7 +4190,7 @@ Obtains the union set of this **Scope** and the given **Scope**.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [expand<sup>9+</sup>](#expand9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.expand<sup>9+</sup>](#expand9-1) instead.
@@ -4205,7 +4226,7 @@ Obtains the union set of this **Scope** and the given value.
...
@@ -4205,7 +4226,7 @@ Obtains the union set of this **Scope** and the given value.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [expand<sup>9+</sup>](#expand9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.expand<sup>9+</sup>](#expand9-2) instead.
@@ -4239,7 +4260,7 @@ Checks whether a value is within this **Scope**.
...
@@ -4239,7 +4260,7 @@ Checks whether a value is within this **Scope**.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [contains<sup>9+</sup>](#contains9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.contains<sup>9+</sup>](#contains9-1) instead.
@@ -4273,7 +4294,7 @@ Checks whether a range is within this **Scope**.
...
@@ -4273,7 +4294,7 @@ Checks whether a range is within this **Scope**.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [contains<sup>9+</sup>](#contains9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.contains<sup>9+</sup>](#contains9-2) instead.
@@ -4310,7 +4331,7 @@ Limits a value to this **Scope**.
...
@@ -4310,7 +4331,7 @@ Limits a value to this **Scope**.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [clamp<sup>9+</sup>](#clamp9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [ScopeHelper.clamp<sup>9+</sup>](#clamp9) instead.
@@ -4351,7 +4372,7 @@ A constructor used to create a **Base64** object.
...
@@ -4351,7 +4372,7 @@ A constructor used to create a **Base64** object.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [constructor<sup>9+</sup>](#constructor9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [Base64Helper.constructor<sup>9+</sup>](#constructor9-5) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [encodeSync<sup>9+</sup>](#encodesync9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [Base64Helper.encodeSync<sup>9+</sup>](#encodesync9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [encodeToStringSync<sup>9+</sup>](#encodetostringsync9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [Base64Helper.encodeToStringSync<sup>9+</sup>](#encodetostringsync9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [decodeSync<sup>9+</sup>](#decodesync9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [Base64Helper.decodeSync<sup>9+</sup>](#decodesync9) instead.
@@ -4465,7 +4486,7 @@ Encodes the input content asynchronously.
...
@@ -4465,7 +4486,7 @@ Encodes the input content asynchronously.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [encode<sup>9+</sup>](#encode9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [Base64Helper.encode<sup>9+</sup>](#encode9) instead.
@@ -4502,7 +4523,7 @@ Encodes the input content asynchronously.
...
@@ -4502,7 +4523,7 @@ Encodes the input content asynchronously.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [encodeToString<sup>9+</sup>](#encodetostring9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [Base64Helper.encodeToString<sup>9+</sup>](#encodetostring9) instead.
@@ -4537,7 +4558,7 @@ Decodes the input content asynchronously.
...
@@ -4537,7 +4558,7 @@ Decodes the input content asynchronously.
> **NOTE**
> **NOTE**
>
>
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [decode<sup>9+</sup>](#decode9) instead.
> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [Base64Helper.decode<sup>9+</sup>](#decode9) instead.