@budibase/server 0.9.185-alpha.1 → 0.9.185-alpha.13

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 (234) hide show
  1. package/Dockerfile +1 -1
  2. package/builder/assets/bb-space-man.5be51a45.svg +290 -0
  3. package/builder/assets/index.4a7c5636.css +1 -0
  4. package/builder/assets/index.dc495306.js +1317 -0
  5. package/builder/assets/vendor.470042a4.js +152 -0
  6. package/builder/assets/vendor.5e1fe644.css +1 -0
  7. package/builder/index.html +4 -4
  8. package/coverage/clover.xml +689 -598
  9. package/coverage/coverage-final.json +89 -87
  10. package/coverage/lcov-report/api/controllers/analytics.js.html +2 -2
  11. package/coverage/lcov-report/api/controllers/apikeys.js.html +2 -2
  12. package/coverage/lcov-report/api/controllers/application.js.html +43 -13
  13. package/coverage/lcov-report/api/controllers/auth.js.html +7 -7
  14. package/coverage/lcov-report/api/controllers/automation.js.html +3 -3
  15. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  18. package/coverage/lcov-report/api/controllers/datasource.js.html +129 -21
  19. package/coverage/lcov-report/api/controllers/dev.js.html +16 -7
  20. package/coverage/lcov-report/api/controllers/hosting.js.html +10 -10
  21. package/coverage/lcov-report/api/controllers/index.html +83 -83
  22. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/layout.js.html +3 -3
  24. package/coverage/lcov-report/api/controllers/metadata.js.html +3 -3
  25. package/coverage/lcov-report/api/controllers/permission.js.html +3 -3
  26. package/coverage/lcov-report/api/controllers/query.js.html +48 -210
  27. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  28. package/coverage/lcov-report/api/controllers/routing.js.html +3 -3
  29. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  30. package/coverage/lcov-report/api/controllers/row/index.html +10 -10
  31. package/coverage/lcov-report/api/controllers/row/index.js.html +2 -2
  32. package/coverage/lcov-report/api/controllers/row/internal.js.html +9 -9
  33. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +2 -2
  34. package/coverage/lcov-report/api/controllers/row/utils.js.html +2 -2
  35. package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
  36. package/coverage/lcov-report/api/controllers/script.js.html +3 -3
  37. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.html +11 -11
  39. package/coverage/lcov-report/api/controllers/table/index.js.html +3 -3
  40. package/coverage/lcov-report/api/controllers/table/internal.js.html +2 -2
  41. package/coverage/lcov-report/api/controllers/table/utils.js.html +8 -8
  42. package/coverage/lcov-report/api/controllers/templates.js.html +4 -4
  43. package/coverage/lcov-report/api/controllers/user.js.html +33 -18
  44. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.html +9 -9
  46. package/coverage/lcov-report/api/controllers/view/index.js.html +5 -5
  47. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  48. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -3
  49. package/coverage/lcov-report/api/controllers/webhook.js.html +4 -4
  50. package/coverage/lcov-report/api/index.html +1 -1
  51. package/coverage/lcov-report/api/index.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/dev.js.html +2 -2
  63. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/index.html +4 -4
  65. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/query.js.html +5 -2
  71. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/static.js.html +2 -2
  77. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  80. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  82. package/coverage/lcov-report/automations/actions.js.html +2 -2
  83. package/coverage/lcov-report/automations/automationUtils.js.html +3 -3
  84. package/coverage/lcov-report/automations/bullboard.js.html +71 -20
  85. package/coverage/lcov-report/automations/index.html +33 -48
  86. package/coverage/lcov-report/automations/index.js.html +2 -2
  87. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/discord.js.html +3 -3
  92. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -3
  94. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/index.html +14 -14
  96. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +3 -3
  98. package/coverage/lcov-report/automations/steps/queryRows.js.html +3 -3
  99. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/utils.js.html +7 -7
  104. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  106. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  107. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  109. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  110. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  111. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  112. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  113. package/coverage/lcov-report/automations/triggers.js.html +22 -10
  114. package/coverage/lcov-report/automations/utils.js.html +42 -12
  115. package/coverage/lcov-report/constants/index.html +5 -5
  116. package/coverage/lcov-report/constants/index.js.html +25 -4
  117. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  118. package/coverage/lcov-report/constants/screens.js.html +1 -1
  119. package/coverage/lcov-report/db/client.js.html +2 -2
  120. package/coverage/lcov-report/db/inMemoryView.js.html +2 -2
  121. package/coverage/lcov-report/db/index.html +2 -2
  122. package/coverage/lcov-report/db/index.js.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +6 -6
  124. package/coverage/lcov-report/db/linkedRows/index.html +10 -10
  125. package/coverage/lcov-report/db/linkedRows/index.js.html +5 -5
  126. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +6 -6
  127. package/coverage/lcov-report/db/newid.js.html +1 -1
  128. package/coverage/lcov-report/db/utils.js.html +1 -1
  129. package/coverage/lcov-report/events/AutomationEmitter.js.html +6 -6
  130. package/coverage/lcov-report/events/index.html +6 -6
  131. package/coverage/lcov-report/events/index.js.html +1 -1
  132. package/coverage/lcov-report/events/utils.js.html +5 -5
  133. package/coverage/lcov-report/index.html +83 -68
  134. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  135. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  136. package/coverage/lcov-report/middleware/appInfo.js.html +2 -2
  137. package/coverage/lcov-report/middleware/authorized.js.html +4 -4
  138. package/coverage/lcov-report/middleware/builder.js.html +16 -7
  139. package/coverage/lcov-report/middleware/currentapp.js.html +6 -6
  140. package/coverage/lcov-report/middleware/index.html +21 -21
  141. package/coverage/lcov-report/middleware/joi-validator.js.html +2 -2
  142. package/coverage/lcov-report/middleware/resourceId.js.html +18 -18
  143. package/coverage/lcov-report/middleware/selfhost.js.html +2 -2
  144. package/coverage/lcov-report/middleware/usageQuota.js.html +4 -4
  145. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  146. package/coverage/lcov-report/{automations/thread.js.html → threads/automation.js.html} +83 -32
  147. package/coverage/lcov-report/threads/index.html +141 -0
  148. package/coverage/lcov-report/threads/index.js.html +260 -0
  149. package/coverage/lcov-report/threads/query.js.html +269 -0
  150. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  151. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  152. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  153. package/coverage/lcov-report/utilities/csvParser.js.html +2 -2
  154. package/coverage/lcov-report/utilities/global.js.html +2 -2
  155. package/coverage/lcov-report/utilities/index.html +21 -21
  156. package/coverage/lcov-report/utilities/index.js.html +12 -9
  157. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +30 -9
  158. package/coverage/lcov-report/utilities/queue/index.html +14 -14
  159. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  160. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  161. package/coverage/lcov-report/utilities/rowProcessor/index.html +4 -4
  162. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +2 -2
  163. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +3 -3
  164. package/coverage/lcov-report/utilities/scriptRunner.js.html +16 -7
  165. package/coverage/lcov-report/utilities/security.js.html +3 -3
  166. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  167. package/coverage/lcov-report/utilities/users.js.html +1 -1
  168. package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
  169. package/coverage/lcov.info +1136 -972
  170. package/dist/api/controllers/application.js +11 -1
  171. package/dist/api/controllers/datasource.js +31 -7
  172. package/dist/api/controllers/deploy/index.js +2 -0
  173. package/dist/api/controllers/dev.js +4 -1
  174. package/dist/api/controllers/query.js +27 -57
  175. package/dist/api/controllers/user.js +10 -6
  176. package/dist/api/routes/query.js +1 -1
  177. package/dist/app.js +2 -11
  178. package/dist/automations/bullboard.js +37 -10
  179. package/dist/automations/triggers.js +7 -3
  180. package/dist/automations/utils.js +11 -2
  181. package/dist/constants/index.js +6 -0
  182. package/dist/integrations/base/IntegrationBase.js +2 -0
  183. package/dist/integrations/base/sql.js +36 -8
  184. package/dist/integrations/mysql.js +3 -1
  185. package/dist/integrations/utils.js +7 -1
  186. package/dist/middleware/builder.js +4 -1
  187. package/dist/package.json +7 -6
  188. package/dist/{automations/thread.js → threads/automation.js} +23 -7
  189. package/dist/threads/index.js +58 -0
  190. package/dist/threads/query.js +61 -0
  191. package/dist/tsconfig.tsbuildinfo +1 -1
  192. package/dist/utilities/index.js +1 -0
  193. package/dist/utilities/queue/inMemoryQueue.js +8 -0
  194. package/dist/utilities/scriptRunner.js +4 -1
  195. package/package.json +8 -7
  196. package/scripts/likeCypress.ts +33 -0
  197. package/src/api/controllers/application.js +11 -1
  198. package/src/api/controllers/datasource.js +45 -9
  199. package/src/api/controllers/deploy/index.js +2 -0
  200. package/src/api/controllers/dev.js +4 -1
  201. package/src/api/controllers/query.js +26 -80
  202. package/src/api/controllers/user.js +15 -10
  203. package/src/api/routes/query.js +1 -0
  204. package/src/app.ts +2 -10
  205. package/src/automations/bullboard.js +28 -11
  206. package/src/automations/tests/automation.spec.js +3 -4
  207. package/src/automations/triggers.js +7 -3
  208. package/src/automations/utils.js +12 -2
  209. package/src/constants/index.js +7 -0
  210. package/src/integrations/airtable.ts +2 -1
  211. package/src/integrations/arangodb.ts +2 -1
  212. package/src/integrations/base/IntegrationBase.ts +6 -0
  213. package/src/integrations/base/datasourcePlus.ts +2 -1
  214. package/src/integrations/base/sql.ts +38 -9
  215. package/src/integrations/couchdb.ts +2 -1
  216. package/src/integrations/dynamodb.ts +2 -1
  217. package/src/integrations/elasticsearch.ts +2 -1
  218. package/src/integrations/mongodb.ts +2 -1
  219. package/src/integrations/mysql.ts +1 -1
  220. package/src/integrations/rest.ts +2 -1
  221. package/src/integrations/s3.ts +2 -1
  222. package/src/integrations/utils.ts +6 -1
  223. package/src/middleware/builder.js +4 -1
  224. package/src/{automations/thread.js → threads/automation.js} +24 -7
  225. package/src/threads/index.js +60 -0
  226. package/src/threads/query.js +63 -0
  227. package/src/utilities/index.js +1 -0
  228. package/src/utilities/queue/inMemoryQueue.js +7 -0
  229. package/src/utilities/scriptRunner.js +4 -1
  230. package/tsconfig.json +1 -1
  231. package/builder/assets/index.4feb6e69.js +0 -201
  232. package/builder/assets/index.a79ec0ef.css +0 -29
  233. package/builder/assets/vendor.278a305c.js +0 -9
  234. package/builder/assets/vendor.d75d5eb7.css +0 -1
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">61.9% </span>
26
+ <span class="strong">53.57% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>13/21</span>
28
+ <span class='fraction'>15/28</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">75% </span>
33
+ <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/4</span>
35
+ <span class='fraction'>3/6</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>0/3</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">61.9% </span>
47
+ <span class="strong">53.57% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>13/21</span>
49
+ <span class='fraction'>15/28</span>
50
50
  </div>
51
51
 
52
52
 
@@ -88,7 +88,24 @@
88
88
  <a name='L29'></a><a href='#L29'>29</a>
89
89
  <a name='L30'></a><a href='#L30'>30</a>
90
90
  <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
91
+ <a name='L32'></a><a href='#L32'>32</a>
92
+ <a name='L33'></a><a href='#L33'>33</a>
93
+ <a name='L34'></a><a href='#L34'>34</a>
94
+ <a name='L35'></a><a href='#L35'>35</a>
95
+ <a name='L36'></a><a href='#L36'>36</a>
96
+ <a name='L37'></a><a href='#L37'>37</a>
97
+ <a name='L38'></a><a href='#L38'>38</a>
98
+ <a name='L39'></a><a href='#L39'>39</a>
99
+ <a name='L40'></a><a href='#L40'>40</a>
100
+ <a name='L41'></a><a href='#L41'>41</a>
101
+ <a name='L42'></a><a href='#L42'>42</a>
102
+ <a name='L43'></a><a href='#L43'>43</a>
103
+ <a name='L44'></a><a href='#L44'>44</a>
104
+ <a name='L45'></a><a href='#L45'>45</a>
105
+ <a name='L46'></a><a href='#L46'>46</a>
106
+ <a name='L47'></a><a href='#L47'>47</a>
107
+ <a name='L48'></a><a href='#L48'>48</a>
108
+ <a name='L49'></a><a href='#L49'>49</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">33x</span>
92
109
  <span class="cline-any cline-yes">33x</span>
93
110
  <span class="cline-any cline-yes">33x</span>
94
111
  <span class="cline-any cline-yes">33x</span>
@@ -101,27 +118,44 @@
101
118
  <span class="cline-any cline-neutral">&nbsp;</span>
102
119
  <span class="cline-any cline-yes">33x</span>
103
120
  <span class="cline-any cline-yes">33x</span>
121
+ <span class="cline-any cline-yes">33x</span>
104
122
  <span class="cline-any cline-neutral">&nbsp;</span>
105
123
  <span class="cline-any cline-yes">33x</span>
106
124
  <span class="cline-any cline-neutral">&nbsp;</span>
125
+ <span class="cline-any cline-neutral">&nbsp;</span>
126
+ <span class="cline-any cline-no">&nbsp;</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
107
129
  <span class="cline-any cline-yes">33x</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-yes">33x</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-no">&nbsp;</span>
134
+ <span class="cline-any cline-no">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
108
136
  <span class="cline-any cline-no">&nbsp;</span>
137
+ <span class="cline-any cline-no">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
109
140
  <span class="cline-any cline-neutral">&nbsp;</span>
110
141
  <span class="cline-any cline-no">&nbsp;</span>
111
142
  <span class="cline-any cline-no">&nbsp;</span>
112
143
  <span class="cline-any cline-no">&nbsp;</span>
113
144
  <span class="cline-any cline-no">&nbsp;</span>
145
+ <span class="cline-any cline-no">&nbsp;</span>
114
146
  <span class="cline-any cline-neutral">&nbsp;</span>
115
147
  <span class="cline-any cline-no">&nbsp;</span>
116
148
  <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
117
151
  <span class="cline-any cline-no">&nbsp;</span>
118
152
  <span class="cline-any cline-no">&nbsp;</span>
119
153
  <span class="cline-any cline-neutral">&nbsp;</span>
120
154
  <span class="cline-any cline-neutral">&nbsp;</span>
121
155
  <span class="cline-any cline-yes">33x</span>
122
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { createBullBoard } = require("bull-board")
123
- const { BullAdapter } = require("bull-board/bullAdapter")
124
- const express = require("express")
156
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { createBullBoard } = require("@bull-board/api")
157
+ const { BullAdapter } = require("@bull-board/api/bullAdapter")
158
+ const { KoaAdapter } = require("@bull-board/koa")
125
159
  const env = require("../environment")
126
160
  const Queue = env.isTest()
127
161
  ? require("../utilities/queue/inMemoryQueue")
@@ -130,23 +164,40 @@ const { JobQueues } = require("../constants")
130
164
  const { utils } = require("@budibase/auth/redis")
131
165
  const { opts, redisProtocolUrl } = utils.getRedisOptions()
132
166
  &nbsp;
133
- const redisConfig = redisProtocolUrl || { redis: opts }
134
- let automationQueue = new Queue(JobQueues.AUTOMATIONS, redisConfig)
167
+ const CLEANUP_PERIOD_MS = 60 * 1000
168
+ const queueConfig = redisProtocolUrl || { redis: opts }
169
+ let cleanupInternal = null
135
170
  &nbsp;
136
- exports.pathPrefix = "/bulladmin"
171
+ let automationQueue = new Queue(JobQueues.AUTOMATIONS, queueConfig)
172
+ &nbsp;
173
+ async function <span class="fstat-no" title="function not covered" >cleanup(</span>) {
174
+ <span class="cstat-no" title="statement not covered" > await automationQueue.clean(CLEANUP_PERIOD_MS, "completed")</span>
175
+ }
176
+ &nbsp;
177
+ const PATH_PREFIX = "/bulladmin"
137
178
  &nbsp;
138
179
  exports.init = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
139
- const expressApp = <span class="cstat-no" title="statement not covered" >express()</span>
180
+ // cleanup the events every 5 minutes
181
+ <span class="cstat-no" title="statement not covered" > if (!cleanupInternal) {</span>
182
+ <span class="cstat-no" title="statement not covered" > cleanupInternal = setInterval(cleanup, CLEANUP_PERIOD_MS)</span>
183
+ // fire off an initial cleanup
184
+ <span class="cstat-no" title="statement not covered" > cleanup().catch(<span class="fstat-no" title="function not covered" >er</span>r =&gt; {</span>
185
+ <span class="cstat-no" title="statement not covered" > console.error(`Unable to cleanup automation queue initially - ${err}`)</span>
186
+ })
187
+ }
140
188
  // Set up queues for bull board admin
141
189
  const queues = <span class="cstat-no" title="statement not covered" >[automationQueue]</span>
142
190
  const adapters = <span class="cstat-no" title="statement not covered" >[]</span>
191
+ const serverAdapter = <span class="cstat-no" title="statement not covered" >new KoaAdapter()</span>
143
192
  <span class="cstat-no" title="statement not covered" > for (let queue of queues) {</span>
144
193
  <span class="cstat-no" title="statement not covered" > adapters.push(new BullAdapter(queue))</span>
145
194
  }
146
- const { router } = <span class="cstat-no" title="statement not covered" >createBullBoard(adapters)</span>
147
- &nbsp;
148
- <span class="cstat-no" title="statement not covered" > expressApp.use(exports.pathPrefix, router)</span>
149
- <span class="cstat-no" title="statement not covered" > return expressApp</span>
195
+ <span class="cstat-no" title="statement not covered" > createBullBoard({</span>
196
+ queues: adapters,
197
+ serverAdapter,
198
+ })
199
+ <span class="cstat-no" title="statement not covered" > serverAdapter.setBasePath(PATH_PREFIX)</span>
200
+ <span class="cstat-no" title="statement not covered" > return serverAdapter.registerPlugin()</span>
150
201
  }
151
202
  &nbsp;
152
203
  exports.queue = automationQueue
@@ -157,7 +208,7 @@ exports.queue = automationQueue
157
208
  <div class='footer quiet pad2 space-top1 center small'>
158
209
  Code coverage generated by
159
210
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
160
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
211
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
161
212
  </div>
162
213
  </div>
163
214
  <script src="../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">86.61% </span>
26
+ <span class="strong">84.84% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>220/254</span>
28
+ <span class='fraction'>168/198</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">77.36% </span>
33
+ <span class="strong">80.45% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>82/106</span>
35
+ <span class='fraction'>70/87</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">93.1% </span>
40
+ <span class="strong">80% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>27/29</span>
42
+ <span class='fraction'>20/25</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">86.61% </span>
47
+ <span class="strong">84.84% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>220/254</span>
49
+ <span class='fraction'>168/198</span>
50
50
  </div>
51
51
 
52
52
 
@@ -94,7 +94,7 @@
94
94
  </td>
95
95
  <td data-value="100" class="pct high">100%</td>
96
96
  <td data-value="27" class="abs high">27/27</td>
97
- <td data-value="88.89" class="pct high">88.89%</td>
97
+ <td data-value="88.88" class="pct high">88.88%</td>
98
98
  <td data-value="18" class="abs high">16/18</td>
99
99
  <td data-value="100" class="pct high">100%</td>
100
100
  <td data-value="3" class="abs high">3/3</td>
@@ -104,17 +104,17 @@
104
104
 
105
105
  <tr>
106
106
  <td class="file medium" data-value="bullboard.js"><a href="bullboard.js.html">bullboard.js</a></td>
107
- <td data-value="61.9" class="pic medium">
108
- <div class="chart"><div class="cover-fill" style="width: 61%"></div><div class="cover-empty" style="width: 39%"></div></div>
107
+ <td data-value="53.57" class="pic medium">
108
+ <div class="chart"><div class="cover-fill" style="width: 53%"></div><div class="cover-empty" style="width: 47%"></div></div>
109
109
  </td>
110
- <td data-value="61.9" class="pct medium">61.9%</td>
111
- <td data-value="21" class="abs medium">13/21</td>
112
- <td data-value="75" class="pct medium">75%</td>
113
- <td data-value="4" class="abs medium">3/4</td>
110
+ <td data-value="53.57" class="pct medium">53.57%</td>
111
+ <td data-value="28" class="abs medium">15/28</td>
112
+ <td data-value="50" class="pct medium">50%</td>
113
+ <td data-value="6" class="abs medium">3/6</td>
114
114
  <td data-value="0" class="pct low">0%</td>
115
- <td data-value="1" class="abs low">0/1</td>
116
- <td data-value="61.9" class="pct medium">61.9%</td>
117
- <td data-value="21" class="abs medium">13/21</td>
115
+ <td data-value="3" class="abs low">0/3</td>
116
+ <td data-value="53.57" class="pct medium">53.57%</td>
117
+ <td data-value="28" class="abs medium">15/28</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
@@ -126,55 +126,40 @@
126
126
  <td data-value="8" class="abs high">7/8</td>
127
127
  <td data-value="100" class="pct high">100%</td>
128
128
  <td data-value="0" class="abs high">0/0</td>
129
- <td data-value="66.67" class="pct medium">66.67%</td>
129
+ <td data-value="66.66" class="pct medium">66.66%</td>
130
130
  <td data-value="3" class="abs medium">2/3</td>
131
131
  <td data-value="87.5" class="pct high">87.5%</td>
132
132
  <td data-value="8" class="abs high">7/8</td>
133
133
  </tr>
134
134
 
135
- <tr>
136
- <td class="file high" data-value="thread.js"><a href="thread.js.html">thread.js</a></td>
137
- <td data-value="85.07" class="pic high">
138
- <div class="chart"><div class="cover-fill" style="width: 85%"></div><div class="cover-empty" style="width: 15%"></div></div>
139
- </td>
140
- <td data-value="85.07" class="pct high">85.07%</td>
141
- <td data-value="67" class="abs high">57/67</td>
142
- <td data-value="57.14" class="pct medium">57.14%</td>
143
- <td data-value="21" class="abs medium">12/21</td>
144
- <td data-value="100" class="pct high">100%</td>
145
- <td data-value="7" class="abs high">7/7</td>
146
- <td data-value="85.07" class="pct high">85.07%</td>
147
- <td data-value="67" class="abs high">57/67</td>
148
- </tr>
149
-
150
135
  <tr>
151
136
  <td class="file high" data-value="triggers.js"><a href="triggers.js.html">triggers.js</a></td>
152
- <td data-value="95.45" class="pic high">
137
+ <td data-value="95.55" class="pic high">
153
138
  <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
154
139
  </td>
155
- <td data-value="95.45" class="pct high">95.45%</td>
156
- <td data-value="44" class="abs high">42/44</td>
140
+ <td data-value="95.55" class="pct high">95.55%</td>
141
+ <td data-value="45" class="abs high">43/45</td>
157
142
  <td data-value="84" class="pct high">84%</td>
158
143
  <td data-value="25" class="abs high">21/25</td>
159
144
  <td data-value="100" class="pct high">100%</td>
160
145
  <td data-value="7" class="abs high">7/7</td>
161
- <td data-value="95.45" class="pct high">95.45%</td>
162
- <td data-value="44" class="abs high">42/44</td>
146
+ <td data-value="95.55" class="pct high">95.55%</td>
147
+ <td data-value="45" class="abs high">43/45</td>
163
148
  </tr>
164
149
 
165
150
  <tr>
166
151
  <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
167
- <td data-value="79.69" class="pic medium">
152
+ <td data-value="79.1" class="pic medium">
168
153
  <div class="chart"><div class="cover-fill" style="width: 79%"></div><div class="cover-empty" style="width: 21%"></div></div>
169
154
  </td>
170
- <td data-value="79.69" class="pct medium">79.69%</td>
171
- <td data-value="64" class="abs medium">51/64</td>
172
- <td data-value="80.56" class="pct high">80.56%</td>
155
+ <td data-value="79.1" class="pct medium">79.1%</td>
156
+ <td data-value="67" class="abs medium">53/67</td>
157
+ <td data-value="80.55" class="pct high">80.55%</td>
173
158
  <td data-value="36" class="abs high">29/36</td>
174
- <td data-value="100" class="pct high">100%</td>
175
- <td data-value="8" class="abs high">8/8</td>
176
- <td data-value="79.69" class="pct medium">79.69%</td>
177
- <td data-value="64" class="abs medium">51/64</td>
159
+ <td data-value="88.88" class="pct high">88.88%</td>
160
+ <td data-value="9" class="abs high">8/9</td>
161
+ <td data-value="79.1" class="pct medium">79.1%</td>
162
+ <td data-value="67" class="abs medium">53/67</td>
178
163
  </tr>
179
164
 
180
165
  </tbody>
@@ -185,7 +170,7 @@
185
170
  <div class='footer quiet pad2 space-top1 center small'>
186
171
  Code coverage generated by
187
172
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
188
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
173
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
189
174
  </div>
190
175
  </div>
191
176
  <script src="../prettify.js"></script>
@@ -37,7 +37,7 @@
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">66.67% </span>
40
+ <span class="strong">66.66% </span>
41
41
  <span class="quiet">Functions</span>
42
42
  <span class='fraction'>2/3</span>
43
43
  </div>
@@ -115,7 +115,7 @@ exports.queue = queue
115
115
  <div class='footer quiet pad2 space-top1 center small'>
116
116
  Code coverage generated by
117
117
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
118
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
118
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
119
119
  </div>
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
@@ -274,7 +274,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
274
274
  <div class='footer quiet pad2 space-top1 center small'>
275
275
  Code coverage generated by
276
276
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
277
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
277
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
278
278
  </div>
279
279
  </div>
280
280
  <script src="../../prettify.js"></script>
@@ -373,7 +373,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
373
373
  <div class='footer quiet pad2 space-top1 center small'>
374
374
  Code coverage generated by
375
375
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
376
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
376
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
377
377
  </div>
378
378
  </div>
379
379
  <script src="../../prettify.js"></script>
@@ -181,7 +181,7 @@ exports.run = async function delay({ inputs }) {
181
181
  <div class='footer quiet pad2 space-top1 center small'>
182
182
  Code coverage generated by
183
183
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
184
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
184
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
185
185
  </div>
186
186
  </div>
187
187
  <script src="../../prettify.js"></script>
@@ -340,7 +340,7 @@ exports.run = async function ({ inputs, appId, emitter }) {
340
340
  <div class='footer quiet pad2 space-top1 center small'>
341
341
  Code coverage generated by
342
342
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
343
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
343
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
344
344
  </div>
345
345
  </div>
346
346
  <script src="../../prettify.js"></script>
@@ -23,7 +23,7 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">42.86% </span>
26
+ <span class="strong">42.85% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>6/14</span>
29
29
  </div>
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">42.86% </span>
47
+ <span class="strong">42.85% </span>
48
48
  <span class="quiet">Lines</span>
49
49
  <span class='fraction'>6/14</span>
50
50
  </div>
@@ -313,7 +313,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
313
313
  <div class='footer quiet pad2 space-top1 center small'>
314
314
  Code coverage generated by
315
315
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
316
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
316
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
317
317
  </div>
318
318
  </div>
319
319
  <script src="../../prettify.js"></script>
@@ -307,7 +307,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
307
307
  <div class='footer quiet pad2 space-top1 center small'>
308
308
  Code coverage generated by
309
309
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
310
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
310
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
311
311
  </div>
312
312
  </div>
313
313
  <script src="../../prettify.js"></script>
@@ -23,7 +23,7 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">41.67% </span>
26
+ <span class="strong">41.66% </span>
27
27
  <span class="quiet">Statements</span>
28
28
  <span class='fraction'>5/12</span>
29
29
  </div>
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">41.67% </span>
47
+ <span class="strong">41.66% </span>
48
48
  <span class="quiet">Lines</span>
49
49
  <span class='fraction'>5/12</span>
50
50
  </div>
@@ -274,7 +274,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
274
274
  <div class='footer quiet pad2 space-top1 center small'>
275
275
  Code coverage generated by
276
276
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
277
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
277
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
278
278
  </div>
279
279
  </div>
280
280
  <script src="../../prettify.js"></script>
@@ -337,7 +337,7 @@ exports.run = async function filter({ inputs }) {
337
337
  <div class='footer quiet pad2 space-top1 center small'>
338
338
  Code coverage generated by
339
339
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
340
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
340
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
341
341
  </div>
342
342
  </div>
343
343
  <script src="../../prettify.js"></script>
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">70.79% </span>
33
+ <span class="strong">70.78% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>63/89</span>
36
36
  </div>
@@ -134,16 +134,16 @@
134
134
 
135
135
  <tr>
136
136
  <td class="file low" data-value="discord.js"><a href="discord.js.html">discord.js</a></td>
137
- <td data-value="42.86" class="pic low">
137
+ <td data-value="42.85" class="pic low">
138
138
  <div class="chart"><div class="cover-fill" style="width: 42%"></div><div class="cover-empty" style="width: 58%"></div></div>
139
139
  </td>
140
- <td data-value="42.86" class="pct low">42.86%</td>
140
+ <td data-value="42.85" class="pct low">42.85%</td>
141
141
  <td data-value="14" class="abs low">6/14</td>
142
142
  <td data-value="0" class="pct low">0%</td>
143
143
  <td data-value="6" class="abs low">0/6</td>
144
144
  <td data-value="0" class="pct low">0%</td>
145
145
  <td data-value="1" class="abs low">0/1</td>
146
- <td data-value="42.86" class="pct low">42.86%</td>
146
+ <td data-value="42.85" class="pct low">42.85%</td>
147
147
  <td data-value="14" class="abs low">6/14</td>
148
148
  </tr>
149
149
 
@@ -164,16 +164,16 @@
164
164
 
165
165
  <tr>
166
166
  <td class="file low" data-value="executeScript.js"><a href="executeScript.js.html">executeScript.js</a></td>
167
- <td data-value="41.67" class="pic low">
167
+ <td data-value="41.66" class="pic low">
168
168
  <div class="chart"><div class="cover-fill" style="width: 41%"></div><div class="cover-empty" style="width: 59%"></div></div>
169
169
  </td>
170
- <td data-value="41.67" class="pct low">41.67%</td>
170
+ <td data-value="41.66" class="pct low">41.66%</td>
171
171
  <td data-value="12" class="abs low">5/12</td>
172
172
  <td data-value="0" class="pct low">0%</td>
173
173
  <td data-value="2" class="abs low">0/2</td>
174
174
  <td data-value="0" class="pct low">0%</td>
175
175
  <td data-value="1" class="abs low">0/1</td>
176
- <td data-value="41.67" class="pct low">41.67%</td>
176
+ <td data-value="41.66" class="pct low">41.66%</td>
177
177
  <td data-value="12" class="abs low">5/12</td>
178
178
  </tr>
179
179
 
@@ -214,7 +214,7 @@
214
214
  </td>
215
215
  <td data-value="84" class="pct high">84%</td>
216
216
  <td data-value="25" class="abs high">21/25</td>
217
- <td data-value="70.59" class="pct medium">70.59%</td>
217
+ <td data-value="70.58" class="pct medium">70.58%</td>
218
218
  <td data-value="17" class="abs medium">12/17</td>
219
219
  <td data-value="100" class="pct high">100%</td>
220
220
  <td data-value="1" class="abs high">1/1</td>
@@ -229,7 +229,7 @@
229
229
  </td>
230
230
  <td data-value="95.65" class="pct high">95.65%</td>
231
231
  <td data-value="23" class="abs high">22/23</td>
232
- <td data-value="63.64" class="pct medium">63.64%</td>
232
+ <td data-value="63.63" class="pct medium">63.63%</td>
233
233
  <td data-value="11" class="abs medium">7/11</td>
234
234
  <td data-value="100" class="pct high">100%</td>
235
235
  <td data-value="2" class="abs high">2/2</td>
@@ -299,16 +299,16 @@
299
299
 
300
300
  <tr>
301
301
  <td class="file high" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
302
- <td data-value="88.24" class="pic high">
302
+ <td data-value="88.23" class="pic high">
303
303
  <div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
304
304
  </td>
305
- <td data-value="88.24" class="pct high">88.24%</td>
305
+ <td data-value="88.23" class="pct high">88.23%</td>
306
306
  <td data-value="17" class="abs high">15/17</td>
307
- <td data-value="66.67" class="pct medium">66.67%</td>
307
+ <td data-value="66.66" class="pct medium">66.66%</td>
308
308
  <td data-value="9" class="abs medium">6/9</td>
309
309
  <td data-value="100" class="pct high">100%</td>
310
310
  <td data-value="3" class="abs high">3/3</td>
311
- <td data-value="88.24" class="pct high">88.24%</td>
311
+ <td data-value="88.23" class="pct high">88.23%</td>
312
312
  <td data-value="17" class="abs high">15/17</td>
313
313
  </tr>
314
314
 
@@ -335,7 +335,7 @@
335
335
  <div class='footer quiet pad2 space-top1 center small'>
336
336
  Code coverage generated by
337
337
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
338
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
338
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
339
339
  </div>
340
340
  </div>
341
341
  <script src="../../prettify.js"></script>
@@ -325,7 +325,7 @@ exports.run = <span class="fstat-no" title="function not covered" >as</span>ync
325
325
  <div class='footer quiet pad2 space-top1 center small'>
326
326
  Code coverage generated by
327
327
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
328
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
328
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
329
329
  </div>
330
330
  </div>
331
331
  <script src="../../prettify.js"></script>
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">70.59% </span>
33
+ <span class="strong">70.58% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>12/17</span>
36
36
  </div>
@@ -406,7 +406,7 @@ exports.definition = {
406
406
  &nbsp;
407
407
  exports.run = async function ({ inputs }) {
408
408
  let { requestMethod, url, requestBody, headers } = inputs
409
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!url.startsWith("http")) {
409
+ if (!url.startsWith("http")) {
410
410
  url = `http://${url}`
411
411
  }
412
412
  const request = {
@@ -466,7 +466,7 @@ exports.run = async function ({ inputs }) {
466
466
  <div class='footer quiet pad2 space-top1 center small'>
467
467
  Code coverage generated by
468
468
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
469
- at Mon Nov 15 2021 14:40:16 GMT+0000 (Coordinated Universal Time)
469
+ at Mon Nov 22 2021 11:11:02 GMT+0000 (Coordinated Universal Time)
470
470
  </div>
471
471
  </div>
472
472
  <script src="../../prettify.js"></script>