@hoanghainh/komagu 2.0.0 → 2.1.0

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.
Files changed (143) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +1 -1
  3. package/assess/lsa/examples/eval-run-4/ground-truth.json +823 -0
  4. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/ai-run-stats.json +58 -0
  5. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/coverage.json +85 -0
  6. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/findings/priv-privilege-001.json +822 -0
  7. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/findings/priv-privilege-002.json +393 -0
  8. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/findings.json +4477 -0
  9. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/mass-assignment.candidates.json +232 -0
  10. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-001.json +425 -0
  11. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-002.json +333 -0
  12. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-003.json +400 -0
  13. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-004.json +403 -0
  14. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-005.json +398 -0
  15. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-006.json +63 -0
  16. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/score.json +120 -0
  17. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/ai-run-stats.json +55 -0
  18. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/coverage.json +50 -0
  19. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/findings/priv-privilege-001.json +613 -0
  20. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/findings/priv-privilege-002.json +287 -0
  21. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/findings.json +4870 -0
  22. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/mass-assignment.candidates.json +232 -0
  23. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-001.json +425 -0
  24. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-002.json +333 -0
  25. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-003.json +400 -0
  26. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-004.json +403 -0
  27. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-005.json +398 -0
  28. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-006.json +63 -0
  29. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/score.json +107 -0
  30. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/ai-run-stats.json +58 -0
  31. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/coverage.json +92 -0
  32. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/findings/priv-privilege-001.json +645 -0
  33. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/findings/priv-privilege-002.json +222 -0
  34. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/findings.json +4859 -0
  35. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/mass-assignment.candidates.json +232 -0
  36. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-001.json +425 -0
  37. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-002.json +333 -0
  38. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-003.json +400 -0
  39. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-004.json +403 -0
  40. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-005.json +398 -0
  41. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-006.json +63 -0
  42. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/score.json +121 -0
  43. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/coverage.json +111 -0
  44. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/findings/priv-privilege-001.json +6 -0
  45. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/findings/priv-privilege-002.json +344 -0
  46. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/findings.json +3544 -0
  47. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/mass-assignment.candidates.json +232 -0
  48. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-001.json +425 -0
  49. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-002.json +333 -0
  50. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-003.json +400 -0
  51. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-004.json +403 -0
  52. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-005.json +398 -0
  53. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-006.json +63 -0
  54. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/score.json +123 -0
  55. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/ai-run-stats.json +50 -0
  56. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/coverage.json +42 -0
  57. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/findings/priv-privilege-001.json +540 -0
  58. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/findings/priv-privilege-002.json +238 -0
  59. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/findings.json +4383 -0
  60. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/findings.sarif +8729 -0
  61. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/mass-assignment.candidates.json +232 -0
  62. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/report.ja.md +1911 -0
  63. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/report.md +1911 -0
  64. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-001.json +425 -0
  65. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-002.json +333 -0
  66. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-003.json +400 -0
  67. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-004.json +403 -0
  68. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-005.json +398 -0
  69. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-006.json +63 -0
  70. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/score.json +101 -0
  71. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/stack-profile.json +226 -0
  72. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/ai-run-stats.json +54 -0
  73. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/coverage.json +66 -0
  74. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/findings/priv-privilege-001.json +440 -0
  75. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/findings/priv-privilege-002.json +229 -0
  76. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/findings.json +3424 -0
  77. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/mass-assignment.candidates.json +232 -0
  78. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-001.json +425 -0
  79. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-002.json +333 -0
  80. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-003.json +400 -0
  81. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-004.json +403 -0
  82. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-005.json +398 -0
  83. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-006.json +63 -0
  84. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/score.json +120 -0
  85. package/assess/lsa/examples/eval-run-5/gptoss-a/ai-run-stats.json +88 -0
  86. package/assess/lsa/examples/eval-run-5/gptoss-a/coverage.json +36 -0
  87. package/assess/lsa/examples/eval-run-5/gptoss-a/findings/priv-privilege-001.json +530 -0
  88. package/assess/lsa/examples/eval-run-5/gptoss-a/findings/priv-privilege-002.json +248 -0
  89. package/assess/lsa/examples/eval-run-5/gptoss-a/findings.json +4766 -0
  90. package/assess/lsa/examples/eval-run-5/gptoss-a/findings.sarif +9326 -0
  91. package/assess/lsa/examples/eval-run-5/gptoss-a/mass-assignment.candidates.json +232 -0
  92. package/assess/lsa/examples/eval-run-5/gptoss-a/report.ja.md +2011 -0
  93. package/assess/lsa/examples/eval-run-5/gptoss-a/report.md +2011 -0
  94. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-001.json +425 -0
  95. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-002.json +333 -0
  96. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-003.json +400 -0
  97. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-004.json +403 -0
  98. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-005.json +398 -0
  99. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-006.json +63 -0
  100. package/assess/lsa/examples/eval-run-5/gptoss-a/score.json +80 -0
  101. package/assess/lsa/examples/eval-run-5/gptoss-a/stack-profile.json +226 -0
  102. package/assess/lsa/examples/eval-run-5/gptoss-b/ai-run-stats.json +83 -0
  103. package/assess/lsa/examples/eval-run-5/gptoss-b/coverage.json +44 -0
  104. package/assess/lsa/examples/eval-run-5/gptoss-b/findings/priv-privilege-001.json +579 -0
  105. package/assess/lsa/examples/eval-run-5/gptoss-b/findings/priv-privilege-002.json +268 -0
  106. package/assess/lsa/examples/eval-run-5/gptoss-b/findings.json +3913 -0
  107. package/assess/lsa/examples/eval-run-5/gptoss-b/mass-assignment.candidates.json +232 -0
  108. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-001.json +425 -0
  109. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-002.json +333 -0
  110. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-003.json +400 -0
  111. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-004.json +403 -0
  112. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-005.json +398 -0
  113. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-006.json +63 -0
  114. package/assess/lsa/examples/eval-run-5/gptoss-b/score.json +94 -0
  115. package/assess/lsa/examples/eval-run-5/ground-truth.json +823 -0
  116. package/assess/lsa/knowledge/injection-patterns.md +8 -1
  117. package/assess/lsa/knowledge/stacks/nextjs.md +62 -0
  118. package/assess/lsa/prompts/35-privilege-auditor.md +3 -1
  119. package/assess/lsa/prompts/_shared-rules.md +1 -0
  120. package/assess/lsa/scripts/detect_stack.py +5 -1
  121. package/assess/lsa/scripts/find_injection.py +34 -5
  122. package/assess/lsa/scripts/lsa_common.py +9 -2
  123. package/assess/lsa/scripts/make_batches.py +2 -1
  124. package/assess/lsa/scripts/map_routes.py +10 -2
  125. package/assess/lsa/scripts/nextjs_routes.py +236 -0
  126. package/assess/lsa/templates/audit-config.json +1 -1
  127. package/assess/lsa/tests/EVAL-RESULTS.md +156 -0
  128. package/assess/lsa/tests/score_findings.py +58 -0
  129. package/assess/lsa/tests/test_default_scope.py +86 -0
  130. package/assess/lsa/tests/test_eval_run_4.py +73 -0
  131. package/assess/lsa/tests/test_eval_run_5.py +73 -0
  132. package/assess/lsa/tests/test_js_tagged_sql.py +112 -0
  133. package/assess/lsa/tests/test_nextjs.py +198 -0
  134. package/assess/lsa/tests/test_privilege_tier2.py +30 -0
  135. package/operate/ai/anchoring.py +130 -0
  136. package/operate/ai/client.py +13 -0
  137. package/operate/ai/context.py +105 -0
  138. package/operate/ai/runner.py +197 -69
  139. package/operate/cli/__init__.py +1 -1
  140. package/operate/cli/commands/scan.py +1 -1
  141. package/operate/tests/test_ai_anchoring.py +184 -0
  142. package/operate/tests/test_headless_ai.py +148 -1
  143. package/package.json +1 -1
@@ -0,0 +1,403 @@
1
+ {
2
+ "routes": [
3
+ {
4
+ "route_id": "R-0055",
5
+ "method": [
6
+ "POST"
7
+ ],
8
+ "path": "/account/rename",
9
+ "path_source": "declared",
10
+ "handler": {
11
+ "file": "php-laravel/routes/web.php",
12
+ "line": 9
13
+ },
14
+ "id_inputs": [
15
+ {
16
+ "name": "id",
17
+ "source": "path"
18
+ }
19
+ ],
20
+ "guards": [],
21
+ "data_ops": [
22
+ {
23
+ "op": "read"
24
+ }
25
+ ],
26
+ "needs_bola_audit": true
27
+ },
28
+ {
29
+ "route_id": "R-0056",
30
+ "method": [
31
+ "POST"
32
+ ],
33
+ "path": "/account/profile",
34
+ "path_source": "declared",
35
+ "handler": {
36
+ "file": "php-laravel/routes/web.php",
37
+ "line": 10
38
+ },
39
+ "id_inputs": [
40
+ {
41
+ "name": "id",
42
+ "source": "path"
43
+ }
44
+ ],
45
+ "guards": [],
46
+ "data_ops": [
47
+ {
48
+ "op": "read"
49
+ }
50
+ ],
51
+ "needs_bola_audit": true
52
+ },
53
+ {
54
+ "route_id": "R-0052",
55
+ "method": [
56
+ "POST"
57
+ ],
58
+ "path": "/register",
59
+ "path_source": "declared",
60
+ "handler": {
61
+ "file": "php-laravel/routes/web.php",
62
+ "line": 6
63
+ },
64
+ "id_inputs": [
65
+ {
66
+ "name": "id",
67
+ "source": "path"
68
+ }
69
+ ],
70
+ "guards": [],
71
+ "data_ops": [
72
+ {
73
+ "op": "read"
74
+ }
75
+ ],
76
+ "needs_bola_audit": true
77
+ },
78
+ {
79
+ "route_id": "R-0053",
80
+ "method": [
81
+ "POST"
82
+ ],
83
+ "path": "/posts",
84
+ "path_source": "declared",
85
+ "handler": {
86
+ "file": "php-laravel/routes/web.php",
87
+ "line": 7
88
+ },
89
+ "id_inputs": [
90
+ {
91
+ "name": "id",
92
+ "source": "path"
93
+ }
94
+ ],
95
+ "guards": [],
96
+ "data_ops": [
97
+ {
98
+ "op": "read"
99
+ }
100
+ ],
101
+ "needs_bola_audit": true
102
+ },
103
+ {
104
+ "route_id": "R-0054",
105
+ "method": [
106
+ "POST"
107
+ ],
108
+ "path": "/teams",
109
+ "path_source": "declared",
110
+ "handler": {
111
+ "file": "php-laravel/routes/web.php",
112
+ "line": 8
113
+ },
114
+ "id_inputs": [
115
+ {
116
+ "name": "id",
117
+ "source": "path"
118
+ }
119
+ ],
120
+ "guards": [],
121
+ "data_ops": [
122
+ {
123
+ "op": "read"
124
+ }
125
+ ],
126
+ "needs_bola_audit": true
127
+ },
128
+ {
129
+ "route_id": "R-0057",
130
+ "method": [
131
+ "GET",
132
+ "POST"
133
+ ],
134
+ "path": "/php-plain/admin.php?action=view",
135
+ "path_source": "declared",
136
+ "handler": {
137
+ "file": "php-plain/admin.php",
138
+ "line": 6
139
+ },
140
+ "id_inputs": [
141
+ {
142
+ "name": "action",
143
+ "source": "query"
144
+ },
145
+ {
146
+ "name": "uid",
147
+ "source": "query"
148
+ },
149
+ {
150
+ "name": "id",
151
+ "source": "form"
152
+ }
153
+ ],
154
+ "guards": [],
155
+ "data_ops": [
156
+ {
157
+ "op": "read"
158
+ }
159
+ ],
160
+ "needs_bola_audit": true
161
+ },
162
+ {
163
+ "route_id": "R-0058",
164
+ "method": [
165
+ "GET",
166
+ "POST"
167
+ ],
168
+ "path": "/php-plain/admin.php?action=delete",
169
+ "path_source": "declared",
170
+ "handler": {
171
+ "file": "php-plain/admin.php",
172
+ "line": 10
173
+ },
174
+ "id_inputs": [
175
+ {
176
+ "name": "action",
177
+ "source": "query"
178
+ },
179
+ {
180
+ "name": "uid",
181
+ "source": "query"
182
+ },
183
+ {
184
+ "name": "id",
185
+ "source": "form"
186
+ }
187
+ ],
188
+ "guards": [],
189
+ "data_ops": [
190
+ {
191
+ "op": "read"
192
+ }
193
+ ],
194
+ "needs_bola_audit": true
195
+ },
196
+ {
197
+ "route_id": "R-0066",
198
+ "method": [
199
+ "POST"
200
+ ],
201
+ "path": "/php-plain/admin/delete_user.php",
202
+ "path_source": "declared",
203
+ "handler": {
204
+ "file": "php-plain/admin/delete_user.php",
205
+ "line": 1
206
+ },
207
+ "id_inputs": [
208
+ {
209
+ "name": "id",
210
+ "source": "form"
211
+ }
212
+ ],
213
+ "guards": [],
214
+ "data_ops": [
215
+ {
216
+ "op": "read"
217
+ }
218
+ ],
219
+ "needs_bola_audit": true
220
+ },
221
+ {
222
+ "route_id": "R-0067",
223
+ "method": [
224
+ "POST"
225
+ ],
226
+ "path": "/php-plain/admin/promote.php",
227
+ "path_source": "declared",
228
+ "handler": {
229
+ "file": "php-plain/admin/promote.php",
230
+ "line": 1
231
+ },
232
+ "id_inputs": [
233
+ {
234
+ "name": "is_admin",
235
+ "source": "form"
236
+ },
237
+ {
238
+ "name": "uid",
239
+ "source": "form"
240
+ }
241
+ ],
242
+ "guards": [],
243
+ "data_ops": [
244
+ {
245
+ "op": "read"
246
+ }
247
+ ],
248
+ "needs_bola_audit": true
249
+ },
250
+ {
251
+ "route_id": "R-0059",
252
+ "method": [
253
+ "POST"
254
+ ],
255
+ "path": "/php-plain/manage_users.php",
256
+ "path_source": "declared",
257
+ "handler": {
258
+ "file": "php-plain/manage_users.php",
259
+ "line": 1
260
+ },
261
+ "id_inputs": [
262
+ {
263
+ "name": "id",
264
+ "source": "form"
265
+ }
266
+ ],
267
+ "guards": [],
268
+ "data_ops": [
269
+ {
270
+ "op": "read"
271
+ }
272
+ ],
273
+ "needs_bola_audit": true
274
+ },
275
+ {
276
+ "route_id": "R-0061",
277
+ "method": [
278
+ "GET"
279
+ ],
280
+ "path": "/php-plain/order_detail.php",
281
+ "path_source": "declared",
282
+ "handler": {
283
+ "file": "php-plain/order_detail.php",
284
+ "line": 1
285
+ },
286
+ "id_inputs": [
287
+ {
288
+ "name": "id",
289
+ "source": "query"
290
+ }
291
+ ],
292
+ "guards": [],
293
+ "data_ops": [
294
+ {
295
+ "op": "read"
296
+ }
297
+ ],
298
+ "needs_bola_audit": true
299
+ },
300
+ {
301
+ "route_id": "R-0062",
302
+ "method": [
303
+ "GET"
304
+ ],
305
+ "path": "/php-plain/order_detail_safe.php",
306
+ "path_source": "declared",
307
+ "handler": {
308
+ "file": "php-plain/order_detail_safe.php",
309
+ "line": 1
310
+ },
311
+ "id_inputs": [
312
+ {
313
+ "name": "id",
314
+ "source": "query"
315
+ }
316
+ ],
317
+ "guards": [],
318
+ "data_ops": [
319
+ {
320
+ "op": "read"
321
+ }
322
+ ],
323
+ "needs_bola_audit": true
324
+ },
325
+ {
326
+ "route_id": "R-0069",
327
+ "method": [
328
+ "GET"
329
+ ],
330
+ "path": "/orders/<int:order_id>",
331
+ "path_source": "declared",
332
+ "handler": {
333
+ "file": "python-flask/app.py",
334
+ "line": 8
335
+ },
336
+ "id_inputs": [
337
+ {
338
+ "name": "order_id",
339
+ "source": "path"
340
+ }
341
+ ],
342
+ "guards": [],
343
+ "data_ops": [
344
+ {
345
+ "op": "read"
346
+ }
347
+ ],
348
+ "needs_bola_audit": true
349
+ },
350
+ {
351
+ "route_id": "R-0070",
352
+ "method": [
353
+ "GET"
354
+ ],
355
+ "path": "/orders/mine/<int:order_id>",
356
+ "path_source": "declared",
357
+ "handler": {
358
+ "file": "python-flask/app.py",
359
+ "line": 16
360
+ },
361
+ "id_inputs": [
362
+ {
363
+ "name": "order_id",
364
+ "source": "path"
365
+ }
366
+ ],
367
+ "guards": [],
368
+ "data_ops": [
369
+ {
370
+ "op": "read"
371
+ }
372
+ ],
373
+ "needs_bola_audit": true
374
+ },
375
+ {
376
+ "route_id": "R-0071",
377
+ "method": [
378
+ "GET",
379
+ "POST"
380
+ ],
381
+ "path": "/search",
382
+ "path_source": "declared",
383
+ "handler": {
384
+ "file": "python-flask/app.py",
385
+ "line": 24
386
+ },
387
+ "id_inputs": [
388
+ {
389
+ "name": "q",
390
+ "source": "query"
391
+ }
392
+ ],
393
+ "guards": [],
394
+ "data_ops": [
395
+ {
396
+ "op": "read"
397
+ }
398
+ ],
399
+ "needs_bola_audit": true
400
+ }
401
+ ],
402
+ "rejected": []
403
+ }