fmea-api-mcp-server 1.1.37 → 1.1.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/endpoint-lookup.json +1 -1
- package/data/search-index.oxy +1 -1
- package/dist/index.js +1 -1
- package/dist/services/search/OramaSearchService.js +4 -0
- package/dist/synonyms.js +7 -2
- package/endpoints/v2/block-diagrams/core.json +8 -64
- package/endpoints/v2/divisions/core.json +358 -1
- package/endpoints/v2/documents/core.json +3 -3
- package/endpoints/v2/failure-modes/core.json +1 -9
- package/endpoints/v2/fourm/core.json +4 -4
- package/endpoints/v2/high-items/core.json +1 -1
- package/endpoints/v2/notices/core.json +4 -4
- package/endpoints/v2/projects/core.json +14 -5
- package/endpoints/v2/synonym-excel/core.json +114 -0
- package/endpoints/v2/synonyms/core.json +400 -0
- package/endpoints/v2/system/core.json +677 -0
- package/endpoints/v2/templates/core.json +3 -3
- package/endpoints/v2/users/core.json +2 -2
- package/endpoints/v2/worksheet-templates/core.json +2 -2
- package/endpoints/v2/worksheets/core.json +3 -3
- package/endpoints/v2/worksheets/excel.json +1 -1
- package/package.json +1 -1
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
{
|
|
7
7
|
"path": "/api/v2/projects",
|
|
8
8
|
"method": "GET",
|
|
9
|
-
"operationId": "
|
|
9
|
+
"operationId": "list_10",
|
|
10
10
|
"summary": "List project summaries",
|
|
11
|
-
"description": "Returns paged project summaries. scope: 'my' (default, user's projects), 'all' (admin, all active)
|
|
11
|
+
"description": "Returns paged project summaries. scope: 'my' (default, user's projects), 'division', 'all' (admin, all active). deleted=true returns admin-only trashed projects. Supports divisionId, search, fmeaType, status, sort, pagination.",
|
|
12
12
|
"tags": [
|
|
13
13
|
"Project"
|
|
14
14
|
],
|
|
@@ -16,15 +16,24 @@
|
|
|
16
16
|
{
|
|
17
17
|
"name": "scope",
|
|
18
18
|
"in": "query",
|
|
19
|
-
"description": "Scope: my (default),
|
|
19
|
+
"description": "Scope: my (default), division, all (admin only)",
|
|
20
20
|
"schema": {
|
|
21
21
|
"type": "string"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
|
+
{
|
|
25
|
+
"name": "deleted",
|
|
26
|
+
"in": "query",
|
|
27
|
+
"description": "Deleted-only view (admin only)",
|
|
28
|
+
"schema": {
|
|
29
|
+
"type": "boolean",
|
|
30
|
+
"default": false
|
|
31
|
+
}
|
|
32
|
+
},
|
|
24
33
|
{
|
|
25
34
|
"name": "divisionId",
|
|
26
35
|
"in": "query",
|
|
27
|
-
"description": "Division ID filter (used with scope=all)",
|
|
36
|
+
"description": "Division ID filter (used with scope=division or scope=all)",
|
|
28
37
|
"schema": {
|
|
29
38
|
"type": "integer",
|
|
30
39
|
"format": "int32"
|
|
@@ -1053,7 +1062,7 @@
|
|
|
1053
1062
|
{
|
|
1054
1063
|
"path": "/api/v2/projects/{projectId}/high-items",
|
|
1055
1064
|
"method": "GET",
|
|
1056
|
-
"operationId": "
|
|
1065
|
+
"operationId": "list_15",
|
|
1057
1066
|
"summary": "List high items by project",
|
|
1058
1067
|
"description": "Returns high items in the target project ordered by rank. Supports optional keyword search on high-item titles and is used by system-definition screens.",
|
|
1059
1068
|
"tags": [
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"category": "Synonym Excel",
|
|
3
|
+
"version": "v2",
|
|
4
|
+
"description": "",
|
|
5
|
+
"endpoints": [
|
|
6
|
+
{
|
|
7
|
+
"path": "/api/v2/synonym-excel/export",
|
|
8
|
+
"method": "GET",
|
|
9
|
+
"operationId": "export",
|
|
10
|
+
"summary": "Export synonyms to Excel",
|
|
11
|
+
"description": "Exports synonym groups to an XLSX file and returns a download URI. Optional q filter narrows the exported groups before generating the workbook.",
|
|
12
|
+
"tags": [
|
|
13
|
+
"SynonymExcel"
|
|
14
|
+
],
|
|
15
|
+
"parameters": [
|
|
16
|
+
{
|
|
17
|
+
"name": "q",
|
|
18
|
+
"in": "query",
|
|
19
|
+
"description": "Optional synonym keyword filter for exported rows",
|
|
20
|
+
"schema": {
|
|
21
|
+
"type": "string"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"requestBody": null,
|
|
26
|
+
"responses": {
|
|
27
|
+
"default": {
|
|
28
|
+
"description": "default response",
|
|
29
|
+
"content": {
|
|
30
|
+
"application/json": {
|
|
31
|
+
"schema": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"properties": {
|
|
34
|
+
"fileName": {
|
|
35
|
+
"type": "string"
|
|
36
|
+
},
|
|
37
|
+
"downloadUri": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"path": "/api/v2/synonym-excel/{uuid}",
|
|
49
|
+
"method": "POST",
|
|
50
|
+
"operationId": "importExcel",
|
|
51
|
+
"summary": "Import synonyms from Excel",
|
|
52
|
+
"description": "Imports synonym groups from a previously uploaded Excel file referenced by uuid. Supports row and column range selection and optional merge into existing groups by first term.",
|
|
53
|
+
"tags": [
|
|
54
|
+
"SynonymExcel"
|
|
55
|
+
],
|
|
56
|
+
"parameters": [
|
|
57
|
+
{
|
|
58
|
+
"name": "uuid",
|
|
59
|
+
"in": "path",
|
|
60
|
+
"description": "Uploaded file UUID",
|
|
61
|
+
"required": true,
|
|
62
|
+
"schema": {
|
|
63
|
+
"type": "string"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "rowStart",
|
|
68
|
+
"in": "query",
|
|
69
|
+
"description": "Data start row (1-based, default: 1)",
|
|
70
|
+
"schema": {
|
|
71
|
+
"type": "integer",
|
|
72
|
+
"format": "int32"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "columnStart",
|
|
77
|
+
"in": "query",
|
|
78
|
+
"description": "Start column (1-based, default: 1)",
|
|
79
|
+
"schema": {
|
|
80
|
+
"type": "integer",
|
|
81
|
+
"format": "int32"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "columnEnd",
|
|
86
|
+
"in": "query",
|
|
87
|
+
"description": "End column (1-based, required)",
|
|
88
|
+
"schema": {
|
|
89
|
+
"type": "integer",
|
|
90
|
+
"format": "int32"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "merge",
|
|
95
|
+
"in": "query",
|
|
96
|
+
"description": "Merge into existing groups when first term matches (default: false)",
|
|
97
|
+
"schema": {
|
|
98
|
+
"type": "boolean"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"requestBody": null,
|
|
103
|
+
"responses": {
|
|
104
|
+
"default": {
|
|
105
|
+
"description": "default response",
|
|
106
|
+
"content": {
|
|
107
|
+
"application/json": {}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"x-dependency-warning": "REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file identifier returned by the upload endpoint."
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
{
|
|
2
|
+
"category": "Synonyms",
|
|
3
|
+
"version": "v2",
|
|
4
|
+
"description": "",
|
|
5
|
+
"endpoints": [
|
|
6
|
+
{
|
|
7
|
+
"path": "/api/v2/synonyms",
|
|
8
|
+
"method": "DELETE",
|
|
9
|
+
"operationId": "deleteBatch",
|
|
10
|
+
"summary": "Delete synonym groups",
|
|
11
|
+
"description": "Deletes multiple synonym groups using the provided ID list and returns no content.",
|
|
12
|
+
"tags": [
|
|
13
|
+
"Synonym"
|
|
14
|
+
],
|
|
15
|
+
"parameters": [],
|
|
16
|
+
"requestBody": {
|
|
17
|
+
"content": {
|
|
18
|
+
"application/json": {
|
|
19
|
+
"schema": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"properties": {
|
|
22
|
+
"ids": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"items": {
|
|
25
|
+
"type": "integer",
|
|
26
|
+
"format": "int32"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"responses": {
|
|
35
|
+
"default": {
|
|
36
|
+
"description": "default response",
|
|
37
|
+
"content": {
|
|
38
|
+
"application/json": {}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"path": "/api/v2/synonyms/{groupId}",
|
|
45
|
+
"method": "DELETE",
|
|
46
|
+
"operationId": "delete_5",
|
|
47
|
+
"summary": "Delete synonym group",
|
|
48
|
+
"description": "Deletes a single synonym group by group ID. Returns 404 if the group does not exist.",
|
|
49
|
+
"tags": [
|
|
50
|
+
"Synonym"
|
|
51
|
+
],
|
|
52
|
+
"parameters": [
|
|
53
|
+
{
|
|
54
|
+
"name": "groupId",
|
|
55
|
+
"in": "path",
|
|
56
|
+
"description": "Synonym group ID to delete",
|
|
57
|
+
"required": true,
|
|
58
|
+
"schema": {
|
|
59
|
+
"type": "integer",
|
|
60
|
+
"format": "int32"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"requestBody": null,
|
|
65
|
+
"responses": {
|
|
66
|
+
"default": {
|
|
67
|
+
"description": "default response",
|
|
68
|
+
"content": {
|
|
69
|
+
"application/json": {}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"path": "/api/v2/synonyms",
|
|
76
|
+
"method": "GET",
|
|
77
|
+
"operationId": "list_11",
|
|
78
|
+
"summary": "List synonym groups",
|
|
79
|
+
"description": "Returns synonym groups with optional keyword filtering and paging. Use page=0 to retrieve all groups without paging.",
|
|
80
|
+
"tags": [
|
|
81
|
+
"Synonym"
|
|
82
|
+
],
|
|
83
|
+
"parameters": [
|
|
84
|
+
{
|
|
85
|
+
"name": "q",
|
|
86
|
+
"in": "query",
|
|
87
|
+
"description": "Synonym keyword filter",
|
|
88
|
+
"schema": {
|
|
89
|
+
"type": "string"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "page",
|
|
94
|
+
"in": "query",
|
|
95
|
+
"description": "Page number (0 = all, default: 1)",
|
|
96
|
+
"schema": {
|
|
97
|
+
"type": "integer",
|
|
98
|
+
"default": 1,
|
|
99
|
+
"format": "int32"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "size",
|
|
104
|
+
"in": "query",
|
|
105
|
+
"description": "Page size (default: 50)",
|
|
106
|
+
"schema": {
|
|
107
|
+
"type": "integer",
|
|
108
|
+
"default": 50,
|
|
109
|
+
"format": "int32"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"requestBody": null,
|
|
114
|
+
"responses": {
|
|
115
|
+
"default": {
|
|
116
|
+
"description": "default response",
|
|
117
|
+
"content": {
|
|
118
|
+
"application/json": {
|
|
119
|
+
"schema": {
|
|
120
|
+
"type": "object",
|
|
121
|
+
"properties": {
|
|
122
|
+
"items": {
|
|
123
|
+
"type": "array",
|
|
124
|
+
"items": {
|
|
125
|
+
"type": "object",
|
|
126
|
+
"properties": {
|
|
127
|
+
"id": {
|
|
128
|
+
"type": "integer"
|
|
129
|
+
},
|
|
130
|
+
"terms": {
|
|
131
|
+
"type": "array",
|
|
132
|
+
"items": {
|
|
133
|
+
"type": "string"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"termCount": {
|
|
137
|
+
"type": "integer"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"page": {
|
|
143
|
+
"type": "integer"
|
|
144
|
+
},
|
|
145
|
+
"size": {
|
|
146
|
+
"type": "integer"
|
|
147
|
+
},
|
|
148
|
+
"totalElements": {
|
|
149
|
+
"type": "integer",
|
|
150
|
+
"format": "int64"
|
|
151
|
+
},
|
|
152
|
+
"totalPages": {
|
|
153
|
+
"type": "integer"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"path": "/api/v2/synonyms/expand",
|
|
164
|
+
"method": "GET",
|
|
165
|
+
"operationId": "expand",
|
|
166
|
+
"summary": "Expand synonym terms",
|
|
167
|
+
"description": "Returns expanded synonym terms matching the provided keyword using partial keyword search across synonym groups.",
|
|
168
|
+
"tags": [
|
|
169
|
+
"Synonym"
|
|
170
|
+
],
|
|
171
|
+
"parameters": [
|
|
172
|
+
{
|
|
173
|
+
"name": "keyword",
|
|
174
|
+
"in": "query",
|
|
175
|
+
"description": "Keyword to expand into matching synonym terms",
|
|
176
|
+
"required": true,
|
|
177
|
+
"schema": {
|
|
178
|
+
"type": "string"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
],
|
|
182
|
+
"requestBody": null,
|
|
183
|
+
"responses": {
|
|
184
|
+
"default": {
|
|
185
|
+
"description": "default response",
|
|
186
|
+
"content": {
|
|
187
|
+
"application/json": {
|
|
188
|
+
"schema": {
|
|
189
|
+
"type": "array",
|
|
190
|
+
"items": {
|
|
191
|
+
"type": "string"
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"path": "/api/v2/synonyms/metadata",
|
|
201
|
+
"method": "GET",
|
|
202
|
+
"operationId": "metadata",
|
|
203
|
+
"summary": "Get synonym metadata",
|
|
204
|
+
"description": "Returns synonym dictionary metadata including maximum term count per group and total group count.",
|
|
205
|
+
"tags": [
|
|
206
|
+
"Synonym"
|
|
207
|
+
],
|
|
208
|
+
"parameters": [],
|
|
209
|
+
"requestBody": null,
|
|
210
|
+
"responses": {
|
|
211
|
+
"default": {
|
|
212
|
+
"description": "default response",
|
|
213
|
+
"content": {
|
|
214
|
+
"application/json": {
|
|
215
|
+
"schema": {
|
|
216
|
+
"type": "object",
|
|
217
|
+
"properties": {
|
|
218
|
+
"maxTermCount": {
|
|
219
|
+
"type": "integer"
|
|
220
|
+
},
|
|
221
|
+
"groupCount": {
|
|
222
|
+
"type": "integer"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"path": "/api/v2/synonyms/{groupId}",
|
|
233
|
+
"method": "GET",
|
|
234
|
+
"operationId": "get_4",
|
|
235
|
+
"summary": "Get synonym group",
|
|
236
|
+
"description": "Returns a single synonym group with its ordered term list. Returns 404 if the group does not exist.",
|
|
237
|
+
"tags": [
|
|
238
|
+
"Synonym"
|
|
239
|
+
],
|
|
240
|
+
"parameters": [
|
|
241
|
+
{
|
|
242
|
+
"name": "groupId",
|
|
243
|
+
"in": "path",
|
|
244
|
+
"description": "Synonym group ID to retrieve",
|
|
245
|
+
"required": true,
|
|
246
|
+
"schema": {
|
|
247
|
+
"type": "integer",
|
|
248
|
+
"format": "int32"
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
],
|
|
252
|
+
"requestBody": null,
|
|
253
|
+
"responses": {
|
|
254
|
+
"default": {
|
|
255
|
+
"description": "default response",
|
|
256
|
+
"content": {
|
|
257
|
+
"application/json": {
|
|
258
|
+
"schema": {
|
|
259
|
+
"type": "object",
|
|
260
|
+
"properties": {
|
|
261
|
+
"id": {
|
|
262
|
+
"type": "integer"
|
|
263
|
+
},
|
|
264
|
+
"terms": {
|
|
265
|
+
"type": "array",
|
|
266
|
+
"items": {
|
|
267
|
+
"type": "string"
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
"termCount": {
|
|
271
|
+
"type": "integer"
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"path": "/api/v2/synonyms",
|
|
282
|
+
"method": "POST",
|
|
283
|
+
"operationId": "create_6",
|
|
284
|
+
"summary": "Create synonym group",
|
|
285
|
+
"description": "Creates a synonym group from non-blank terms only and returns the created ordered group.",
|
|
286
|
+
"tags": [
|
|
287
|
+
"Synonym"
|
|
288
|
+
],
|
|
289
|
+
"parameters": [],
|
|
290
|
+
"requestBody": {
|
|
291
|
+
"content": {
|
|
292
|
+
"application/json": {
|
|
293
|
+
"schema": {
|
|
294
|
+
"type": "object",
|
|
295
|
+
"properties": {
|
|
296
|
+
"terms": {
|
|
297
|
+
"type": "array",
|
|
298
|
+
"items": {
|
|
299
|
+
"type": "string"
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
"responses": {
|
|
308
|
+
"default": {
|
|
309
|
+
"description": "default response",
|
|
310
|
+
"content": {
|
|
311
|
+
"application/json": {
|
|
312
|
+
"schema": {
|
|
313
|
+
"type": "object",
|
|
314
|
+
"properties": {
|
|
315
|
+
"id": {
|
|
316
|
+
"type": "integer"
|
|
317
|
+
},
|
|
318
|
+
"terms": {
|
|
319
|
+
"type": "array",
|
|
320
|
+
"items": {
|
|
321
|
+
"type": "string"
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
"termCount": {
|
|
325
|
+
"type": "integer"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"path": "/api/v2/synonyms/{groupId}",
|
|
336
|
+
"method": "PUT",
|
|
337
|
+
"operationId": "update_5",
|
|
338
|
+
"summary": "Update synonym group",
|
|
339
|
+
"description": "Replaces all terms in the specified synonym group and returns the updated ordered group.",
|
|
340
|
+
"tags": [
|
|
341
|
+
"Synonym"
|
|
342
|
+
],
|
|
343
|
+
"parameters": [
|
|
344
|
+
{
|
|
345
|
+
"name": "groupId",
|
|
346
|
+
"in": "path",
|
|
347
|
+
"description": "Synonym group ID to update",
|
|
348
|
+
"required": true,
|
|
349
|
+
"schema": {
|
|
350
|
+
"type": "integer",
|
|
351
|
+
"format": "int32"
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
],
|
|
355
|
+
"requestBody": {
|
|
356
|
+
"content": {
|
|
357
|
+
"application/json": {
|
|
358
|
+
"schema": {
|
|
359
|
+
"type": "object",
|
|
360
|
+
"properties": {
|
|
361
|
+
"terms": {
|
|
362
|
+
"type": "array",
|
|
363
|
+
"items": {
|
|
364
|
+
"type": "string"
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
"responses": {
|
|
373
|
+
"default": {
|
|
374
|
+
"description": "default response",
|
|
375
|
+
"content": {
|
|
376
|
+
"application/json": {
|
|
377
|
+
"schema": {
|
|
378
|
+
"type": "object",
|
|
379
|
+
"properties": {
|
|
380
|
+
"id": {
|
|
381
|
+
"type": "integer"
|
|
382
|
+
},
|
|
383
|
+
"terms": {
|
|
384
|
+
"type": "array",
|
|
385
|
+
"items": {
|
|
386
|
+
"type": "string"
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"termCount": {
|
|
390
|
+
"type": "integer"
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
]
|
|
400
|
+
}
|