pg-boss 9.0.1 → 9.0.2

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.
@@ -0,0 +1,1342 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for attorney.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="prettify.css" />
9
+ <link rel="stylesheet" href="base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="index.html">All files</a> attorney.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>155/155</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">89.86% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>204/227</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>23/23</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>154/154</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">12x</span>
486
+ <span class="cline-any cline-yes">12x</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-yes">12x</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-neutral">&nbsp;</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-yes">12x</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-yes">10786x</span>
516
+ <span class="cline-any cline-yes">10775x</span>
517
+ <span class="cline-any cline-yes">10775x</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-yes">10775x</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-yes">10774x</span>
522
+ <span class="cline-any cline-yes">11x</span>
523
+ <span class="cline-any cline-yes">10x</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-yes">10x</span>
526
+ <span class="cline-any cline-neutral">&nbsp;</span>
527
+ <span class="cline-any cline-yes">10x</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-yes">10x</span>
530
+ <span class="cline-any cline-yes">10x</span>
531
+ <span class="cline-any cline-yes">10x</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-yes">10785x</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-yes">10785x</span>
537
+ <span class="cline-any cline-yes">10784x</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-yes">10783x</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-yes">10783x</span>
542
+ <span class="cline-any cline-yes">10783x</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-yes">10783x</span>
545
+ <span class="cline-any cline-yes">10783x</span>
546
+ <span class="cline-any cline-yes">10783x</span>
547
+ <span class="cline-any cline-yes">10783x</span>
548
+ <span class="cline-any cline-yes">10783x</span>
549
+ <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-yes">10783x</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-yes">10783x</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-neutral">&nbsp;</span>
557
+ <span class="cline-any cline-neutral">&nbsp;</span>
558
+ <span class="cline-any cline-neutral">&nbsp;</span>
559
+ <span class="cline-any cline-neutral">&nbsp;</span>
560
+ <span class="cline-any cline-yes">10783x</span>
561
+ <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-neutral">&nbsp;</span>
563
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-yes">10783x</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
570
+ <span class="cline-any cline-yes">10783x</span>
571
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-yes">6x</span>
575
+ <span class="cline-any cline-yes">6x</span>
576
+ <span class="cline-any cline-yes">8x</span>
577
+ <span class="cline-any cline-yes">8x</span>
578
+ <span class="cline-any cline-yes">8x</span>
579
+ <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-yes">10791x</span>
584
+ <span class="cline-any cline-yes">10x</span>
585
+ <span class="cline-any cline-neutral">&nbsp;</span>
586
+ <span class="cline-any cline-yes">10791x</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-neutral">&nbsp;</span>
592
+ <span class="cline-any cline-yes">550x</span>
593
+ <span class="cline-any cline-neutral">&nbsp;</span>
594
+ <span class="cline-any cline-yes">549x</span>
595
+ <span class="cline-any cline-yes">22x</span>
596
+ <span class="cline-any cline-yes">22x</span>
597
+ <span class="cline-any cline-yes">527x</span>
598
+ <span class="cline-any cline-yes">526x</span>
599
+ <span class="cline-any cline-yes">526x</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-yes">549x</span>
603
+ <span class="cline-any cline-yes">547x</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-yes">547x</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-yes">547x</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-yes">547x</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-neutral">&nbsp;</span>
613
+ <span class="cline-any cline-yes">547x</span>
614
+ <span class="cline-any cline-yes">547x</span>
615
+ <span class="cline-any cline-yes">547x</span>
616
+ <span class="cline-any cline-yes">547x</span>
617
+ <span class="cline-any cline-neutral">&nbsp;</span>
618
+ <span class="cline-any cline-yes">547x</span>
619
+ <span class="cline-any cline-neutral">&nbsp;</span>
620
+ <span class="cline-any cline-neutral">&nbsp;</span>
621
+ <span class="cline-any cline-neutral">&nbsp;</span>
622
+ <span class="cline-any cline-yes">999x</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-yes">998x</span>
625
+ <span class="cline-any cline-neutral">&nbsp;</span>
626
+ <span class="cline-any cline-yes">998x</span>
627
+ <span class="cline-any cline-yes">998x</span>
628
+ <span class="cline-any cline-yes">998x</span>
629
+ <span class="cline-any cline-neutral">&nbsp;</span>
630
+ <span class="cline-any cline-yes">998x</span>
631
+ <span class="cline-any cline-neutral">&nbsp;</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
+ <span class="cline-any cline-yes">3142x</span>
635
+ <span class="cline-any cline-neutral">&nbsp;</span>
636
+ <span class="cline-any cline-neutral">&nbsp;</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-yes">202x</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-yes">202x</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
643
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-yes">202x</span>
646
+ <span class="cline-any cline-yes">201x</span>
647
+ <span class="cline-any cline-yes">201x</span>
648
+ <span class="cline-any cline-yes">201x</span>
649
+ <span class="cline-any cline-yes">201x</span>
650
+ <span class="cline-any cline-yes">201x</span>
651
+ <span class="cline-any cline-yes">201x</span>
652
+ <span class="cline-any cline-neutral">&nbsp;</span>
653
+ <span class="cline-any cline-yes">201x</span>
654
+ <span class="cline-any cline-yes">201x</span>
655
+ <span class="cline-any cline-yes">201x</span>
656
+ <span class="cline-any cline-yes">201x</span>
657
+ <span class="cline-any cline-neutral">&nbsp;</span>
658
+ <span class="cline-any cline-yes">201x</span>
659
+ <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-neutral">&nbsp;</span>
661
+ <span class="cline-any cline-neutral">&nbsp;</span>
662
+ <span class="cline-any cline-yes">202x</span>
663
+ <span class="cline-any cline-yes">199x</span>
664
+ <span class="cline-any cline-yes">199x</span>
665
+ <span class="cline-any cline-yes">198x</span>
666
+ <span class="cline-any cline-neutral">&nbsp;</span>
667
+ <span class="cline-any cline-neutral">&nbsp;</span>
668
+ <span class="cline-any cline-yes">201x</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-yes">201x</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-yes">201x</span>
675
+ <span class="cline-any cline-neutral">&nbsp;</span>
676
+ <span class="cline-any cline-neutral">&nbsp;</span>
677
+ <span class="cline-any cline-yes">201x</span>
678
+ <span class="cline-any cline-yes">201x</span>
679
+ <span class="cline-any cline-neutral">&nbsp;</span>
680
+ <span class="cline-any cline-yes">201x</span>
681
+ <span class="cline-any cline-yes">6x</span>
682
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
+ <span class="cline-any cline-neutral">&nbsp;</span>
684
+ <span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-neutral">&nbsp;</span>
686
+ <span class="cline-any cline-yes">201x</span>
687
+ <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-yes">201x</span>
690
+ <span class="cline-any cline-yes">201x</span>
691
+ <span class="cline-any cline-neutral">&nbsp;</span>
692
+ <span class="cline-any cline-neutral">&nbsp;</span>
693
+ <span class="cline-any cline-yes">201x</span>
694
+ <span class="cline-any cline-yes">1x</span>
695
+ <span class="cline-any cline-neutral">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-neutral">&nbsp;</span>
699
+ <span class="cline-any cline-yes">10984x</span>
700
+ <span class="cline-any cline-neutral">&nbsp;</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-yes">10984x</span>
703
+ <span class="cline-any cline-yes">10396x</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span>
707
+ <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-yes">10984x</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-neutral">&nbsp;</span>
713
+ <span class="cline-any cline-yes">10984x</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
716
+ <span class="cline-any cline-yes">10984x</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-yes">10984x</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-yes">10984x</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-neutral">&nbsp;</span>
732
+ <span class="cline-any cline-neutral">&nbsp;</span>
733
+ <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-yes">10984x</span>
735
+ <span class="cline-any cline-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-neutral">&nbsp;</span>
737
+ <span class="cline-any cline-neutral">&nbsp;</span>
738
+ <span class="cline-any cline-yes">10984x</span>
739
+ <span class="cline-any cline-yes">3x</span>
740
+ <span class="cline-any cline-neutral">&nbsp;</span>
741
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
+ <span class="cline-any cline-yes">10984x</span>
743
+ <span class="cline-any cline-neutral">&nbsp;</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-yes">10984x</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-yes">10984x</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-yes">10984x</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-neutral">&nbsp;</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span>
761
+ <span class="cline-any cline-yes">10984x</span>
762
+ <span class="cline-any cline-neutral">&nbsp;</span>
763
+ <span class="cline-any cline-neutral">&nbsp;</span>
764
+ <span class="cline-any cline-neutral">&nbsp;</span>
765
+ <span class="cline-any cline-yes">10783x</span>
766
+ <span class="cline-any cline-yes">10783x</span>
767
+ <span class="cline-any cline-yes">10783x</span>
768
+ <span class="cline-any cline-neutral">&nbsp;</span>
769
+ <span class="cline-any cline-yes">10783x</span>
770
+ <span class="cline-any cline-yes">10783x</span>
771
+ <span class="cline-any cline-yes">10783x</span>
772
+ <span class="cline-any cline-yes">10783x</span>
773
+ <span class="cline-any cline-neutral">&nbsp;</span>
774
+ <span class="cline-any cline-neutral">&nbsp;</span>
775
+ <span class="cline-any cline-yes">10783x</span>
776
+ <span class="cline-any cline-yes">10783x</span>
777
+ <span class="cline-any cline-yes">10783x</span>
778
+ <span class="cline-any cline-yes">10783x</span>
779
+ <span class="cline-any cline-yes">10783x</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</span>
781
+ <span class="cline-any cline-neutral">&nbsp;</span>
782
+ <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-yes">748x</span>
784
+ <span class="cline-any cline-neutral">&nbsp;</span>
785
+ <span class="cline-any cline-yes">748x</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span>
787
+ <span class="cline-any cline-neutral">&nbsp;</span>
788
+ <span class="cline-any cline-yes">748x</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-neutral">&nbsp;</span>
791
+ <span class="cline-any cline-yes">748x</span>
792
+ <span class="cline-any cline-neutral">&nbsp;</span>
793
+ <span class="cline-any cline-neutral">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-neutral">&nbsp;</span>
796
+ <span class="cline-any cline-neutral">&nbsp;</span>
797
+ <span class="cline-any cline-neutral">&nbsp;</span>
798
+ <span class="cline-any cline-neutral">&nbsp;</span>
799
+ <span class="cline-any cline-neutral">&nbsp;</span>
800
+ <span class="cline-any cline-neutral">&nbsp;</span>
801
+ <span class="cline-any cline-yes">201x</span>
802
+ <span class="cline-any cline-neutral">&nbsp;</span>
803
+ <span class="cline-any cline-neutral">&nbsp;</span>
804
+ <span class="cline-any cline-yes">201x</span>
805
+ <span class="cline-any cline-neutral">&nbsp;</span>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
807
+ <span class="cline-any cline-yes">201x</span>
808
+ <span class="cline-any cline-neutral">&nbsp;</span>
809
+ <span class="cline-any cline-neutral">&nbsp;</span>
810
+ <span class="cline-any cline-neutral">&nbsp;</span>
811
+ <span class="cline-any cline-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-neutral">&nbsp;</span>
813
+ <span class="cline-any cline-neutral">&nbsp;</span>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
815
+ <span class="cline-any cline-yes">201x</span>
816
+ <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-neutral">&nbsp;</span>
818
+ <span class="cline-any cline-yes">201x</span>
819
+ <span class="cline-any cline-neutral">&nbsp;</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-yes">201x</span>
822
+ <span class="cline-any cline-neutral">&nbsp;</span>
823
+ <span class="cline-any cline-neutral">&nbsp;</span>
824
+ <span class="cline-any cline-yes">201x</span>
825
+ <span class="cline-any cline-neutral">&nbsp;</span>
826
+ <span class="cline-any cline-neutral">&nbsp;</span>
827
+ <span class="cline-any cline-yes">201x</span>
828
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
+ <span class="cline-any cline-neutral">&nbsp;</span>
830
+ <span class="cline-any cline-neutral">&nbsp;</span>
831
+ <span class="cline-any cline-neutral">&nbsp;</span>
832
+ <span class="cline-any cline-neutral">&nbsp;</span>
833
+ <span class="cline-any cline-neutral">&nbsp;</span>
834
+ <span class="cline-any cline-neutral">&nbsp;</span>
835
+ <span class="cline-any cline-neutral">&nbsp;</span>
836
+ <span class="cline-any cline-neutral">&nbsp;</span>
837
+ <span class="cline-any cline-yes">201x</span>
838
+ <span class="cline-any cline-neutral">&nbsp;</span>
839
+ <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-yes">201x</span>
842
+ <span class="cline-any cline-neutral">&nbsp;</span>
843
+ <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-yes">201x</span>
845
+ <span class="cline-any cline-neutral">&nbsp;</span>
846
+ <span class="cline-any cline-neutral">&nbsp;</span>
847
+ <span class="cline-any cline-yes">201x</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-neutral">&nbsp;</span>
850
+ <span class="cline-any cline-neutral">&nbsp;</span>
851
+ <span class="cline-any cline-neutral">&nbsp;</span>
852
+ <span class="cline-any cline-neutral">&nbsp;</span>
853
+ <span class="cline-any cline-neutral">&nbsp;</span>
854
+ <span class="cline-any cline-yes">201x</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-yes">201x</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-yes">201x</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-yes">201x</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-yes">201x</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-yes">201x</span>
873
+ <span class="cline-any cline-neutral">&nbsp;</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-neutral">&nbsp;</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-yes">201x</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-yes">201x</span>
881
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
+ <span class="cline-any cline-neutral">&nbsp;</span>
883
+ <span class="cline-any cline-neutral">&nbsp;</span>
884
+ <span class="cline-any cline-neutral">&nbsp;</span>
885
+ <span class="cline-any cline-neutral">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-yes">201x</span>
888
+ <span class="cline-any cline-yes">201x</span>
889
+ <span class="cline-any cline-neutral">&nbsp;</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-neutral">&nbsp;</span>
892
+ <span class="cline-any cline-yes">1x</span>
893
+ <span class="cline-any cline-neutral">&nbsp;</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-yes">11x</span>
897
+ <span class="cline-any cline-neutral">&nbsp;</span>
898
+ <span class="cline-any cline-yes">11x</span>
899
+ <span class="cline-any cline-yes">4x</span>
900
+ <span class="cline-any cline-yes">4x</span>
901
+ <span class="cline-any cline-yes">4x</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-neutral">&nbsp;</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const assert = require('assert')
905
+ const { DEFAULT_SCHEMA, SINGLETON_QUEUE_KEY } = require('./plans')
906
+ &nbsp;
907
+ module.exports = {
908
+ getConfig,
909
+ checkSendArgs,
910
+ checkInsertArgs,
911
+ checkWorkArgs,
912
+ checkFetchArgs,
913
+ warnClockSkew
914
+ }
915
+ &nbsp;
916
+ const WARNINGS = {
917
+ EXPIRE_IN_REMOVED: {
918
+ message: '\'expireIn\' option detected. This option has been removed. Use expireInSeconds, expireInMinutes or expireInHours.',
919
+ code: 'pg-boss-w01'
920
+ },
921
+ CLOCK_SKEW: {
922
+ message: 'Timekeeper detected clock skew between this instance and the database server. This will not affect scheduling operations, but this warning is shown any time the skew exceeds 60 seconds.',
923
+ code: 'pg-boss-w02'
924
+ },
925
+ CRON_DISABLED: {
926
+ message: 'Archive interval is set less than 60s. Cron processing is disabled.',
927
+ code: 'pg-boss-w03'
928
+ }
929
+ }
930
+ &nbsp;
931
+ function checkSendArgs (args, defaults) {
932
+ let name, data, options
933
+ &nbsp;
934
+ if (typeof args[0] === 'string') {
935
+ name = args[0]
936
+ data = args[1]
937
+ &nbsp;
938
+ assert(typeof data !== 'function', 'send() cannot accept a function as the payload. Did you intend to use work()?')
939
+ &nbsp;
940
+ options = args[2]
941
+ } else if (typeof args[0] === 'object') {
942
+ assert(args.length === 1, 'send object API only accepts 1 argument')
943
+ &nbsp;
944
+ const job = args[0]
945
+ &nbsp;
946
+ assert(job, 'boss requires all jobs to have a name')
947
+ &nbsp;
948
+ name = job.name
949
+ data = job.data
950
+ options = job.options
951
+ }
952
+ &nbsp;
953
+ options = options || {}
954
+ &nbsp;
955
+ assert(name, 'boss requires all jobs to have a queue name')
956
+ assert(typeof options === 'object', 'options should be an object')
957
+ &nbsp;
958
+ options = { ...options }
959
+ &nbsp;
960
+ assert(!('priority' in options) || (Number.isInteger(options.priority)), 'priority must be an integer')
961
+ options.priority = options.priority || 0
962
+ &nbsp;
963
+ applyRetryConfig(options, defaults)
964
+ applyExpirationConfig(options, defaults)
965
+ applyRetentionConfig(options, defaults)
966
+ applyCompletionConfig(options, defaults)
967
+ applySingletonKeyConfig(options)
968
+ &nbsp;
969
+ const { startAfter, singletonSeconds, singletonMinutes, singletonHours } = options
970
+ &nbsp;
971
+ options.startAfter = (startAfter instanceof Date &amp;&amp; typeof startAfter.toISOString === 'function')
972
+ ? startAfter.toISOString()
973
+ : (startAfter &gt; 0)
974
+ ? '' + startAfter
975
+ : (typeof startAfter === 'string')
976
+ ? startAfter
977
+ : null
978
+ &nbsp;
979
+ options.singletonSeconds = (singletonHours &gt; 0)
980
+ ? singletonHours * 60 * 60
981
+ : (singletonMinutes &gt; 0)
982
+ ? singletonMinutes * 60
983
+ : (singletonSeconds &gt; 0)
984
+ ? singletonSeconds
985
+ : null
986
+ &nbsp;
987
+ assert(!singletonSeconds || singletonSeconds &lt;= defaults.archiveSeconds, `throttling interval ${singletonSeconds}s cannot exceed archive interval ${defaults.archiveSeconds}s`)
988
+ &nbsp;
989
+ return { name, data, options }
990
+ }
991
+ &nbsp;
992
+ function checkInsertArgs (jobs) {
993
+ assert(Array.isArray(jobs), `jobs argument should be an array. Received '${typeof jobs}'`)
994
+ return jobs.map(job =&gt; {
995
+ job = { ...job }
996
+ applySingletonKeyConfig(job)
997
+ return job
998
+ })
999
+ }
1000
+ &nbsp;
1001
+ function applySingletonKeyConfig (options) {
1002
+ if (options.singletonKey &amp;&amp; options.useSingletonQueue &amp;&amp; options.singletonKey !== SINGLETON_QUEUE_KEY) {
1003
+ options.singletonKey = SINGLETON_QUEUE_KEY + options.singletonKey
1004
+ }
1005
+ delete options.useSingletonQueue
1006
+ }
1007
+ &nbsp;
1008
+ function checkWorkArgs (name, args, defaults) {
1009
+ let options, callback
1010
+ &nbsp;
1011
+ assert(name, 'missing job name')
1012
+ &nbsp;
1013
+ if (args.length === 1) {
1014
+ callback = args[0]
1015
+ options = {}
1016
+ } else if (args.length &gt; 1) {
1017
+ options = args[0] || <span class="branch-1 cbranch-no" title="branch not covered" >{}</span>
1018
+ callback = args[1]
1019
+ }
1020
+ &nbsp;
1021
+ assert(typeof callback === 'function', 'expected callback to be a function')
1022
+ assert(typeof options === 'object', 'expected config to be an object')
1023
+ &nbsp;
1024
+ options = { ...options }
1025
+ &nbsp;
1026
+ applyNewJobCheckInterval(options, defaults)
1027
+ &nbsp;
1028
+ assert(!('teamConcurrency' in options) ||
1029
+ (Number.isInteger(options.teamConcurrency) &amp;&amp; options.teamConcurrency &gt;= 1 &amp;&amp; options.teamConcurrency &lt;= 1000),
1030
+ 'teamConcurrency must be an integer between 1 and 1000')
1031
+ &nbsp;
1032
+ assert(!('teamSize' in options) || (Number.isInteger(options.teamSize) &amp;&amp; options.teamSize &gt;= 1), 'teamSize must be an integer &gt; 0')
1033
+ assert(!('batchSize' in options) || (Number.isInteger(options.batchSize) &amp;&amp; options.batchSize &gt;= 1), 'batchSize must be an integer &gt; 0')
1034
+ assert(!('includeMetadata' in options) || typeof options.includeMetadata === 'boolean', 'includeMetadata must be a boolean')
1035
+ assert(!('enforceSingletonQueueActiveLimit' in options) || <span class="branch-1 cbranch-no" title="branch not covered" >typeof options.enforceSingletonQueueActiveLimit === 'boolean',</span> 'enforceSingletonQueueActiveLimit must be a boolean')
1036
+ &nbsp;
1037
+ return { options, callback }
1038
+ }
1039
+ &nbsp;
1040
+ function checkFetchArgs (name, batchSize, options) {
1041
+ assert(name, 'missing queue name')
1042
+ &nbsp;
1043
+ name = sanitizeQueueNameForFetch(name)
1044
+ &nbsp;
1045
+ assert(!batchSize || (Number.isInteger(batchSize) &amp;&amp; batchSize &gt;= 1), 'batchSize must be an integer &gt; 0')
1046
+ assert(!('includeMetadata' in options) || typeof options.includeMetadata === 'boolean', 'includeMetadata must be a boolean')
1047
+ assert(!('enforceSingletonQueueActiveLimit' in options) || typeof options.enforceSingletonQueueActiveLimit === 'boolean', 'enforceSingletonQueueActiveLimit must be a boolean')
1048
+ &nbsp;
1049
+ return { name }
1050
+ }
1051
+ &nbsp;
1052
+ function sanitizeQueueNameForFetch (name) {
1053
+ return name.replace(/[%_*]/g, match =&gt; match === '*' ? '%' : '\\' + match)
1054
+ }
1055
+ &nbsp;
1056
+ function getConfig (value) {
1057
+ assert(value &amp;&amp; (typeof value === 'object' || typeof value === 'string'),
1058
+ 'configuration assert: string or config object is required to connect to postgres')
1059
+ &nbsp;
1060
+ const config = (typeof value === 'string')
1061
+ ? { connectionString: value }
1062
+ : { ...value }
1063
+ &nbsp;
1064
+ applyDatabaseConfig(config)
1065
+ applyMaintenanceConfig(config)
1066
+ applyArchiveConfig(config)
1067
+ applyArchiveFailedConfig(config)
1068
+ applyDeleteConfig(config)
1069
+ applyMonitoringConfig(config)
1070
+ applyUuidConfig(config)
1071
+ &nbsp;
1072
+ applyNewJobCheckInterval(config)
1073
+ applyExpirationConfig(config)
1074
+ applyRetentionConfig(config)
1075
+ applyCompletionConfig(config)
1076
+ &nbsp;
1077
+ return config
1078
+ }
1079
+ &nbsp;
1080
+ function applyDatabaseConfig (config) {
1081
+ if (config.schema) {
1082
+ assert(typeof config.schema === 'string', 'configuration assert: schema must be a string')
1083
+ assert(config.schema.length &lt;= 50, 'configuration assert: schema name cannot exceed 50 characters')
1084
+ assert(!/\W/.test(config.schema), `configuration assert: ${config.schema} cannot be used as a schema. Only alphanumeric characters and underscores are allowed`)
1085
+ }
1086
+ &nbsp;
1087
+ config.schema = config.schema || DEFAULT_SCHEMA
1088
+ }
1089
+ &nbsp;
1090
+ function applyArchiveConfig (config) {
1091
+ const ARCHIVE_DEFAULT = 60 * 60 * 12
1092
+ &nbsp;
1093
+ assert(!('archiveCompletedAfterSeconds' in config) || config.archiveCompletedAfterSeconds &gt;= 1,
1094
+ 'configuration assert: archiveCompletedAfterSeconds must be at least every second and less than ')
1095
+ &nbsp;
1096
+ config.archiveSeconds = config.archiveCompletedAfterSeconds || ARCHIVE_DEFAULT
1097
+ config.archiveInterval = `${config.archiveSeconds} seconds`
1098
+ &nbsp;
1099
+ if (config.archiveSeconds &lt; 60) {
1100
+ emitWarning(WARNINGS.CRON_DISABLED)
1101
+ }
1102
+ }
1103
+ &nbsp;
1104
+ function applyArchiveFailedConfig (config) {
1105
+ assert(!('archiveFailedAfterSeconds' in config) || config.archiveFailedAfterSeconds &gt;= 1,
1106
+ 'configuration assert: archiveFailedAfterSeconds must be at least every second and less than ')
1107
+ &nbsp;
1108
+ config.archiveFailedSeconds = config.archiveFailedAfterSeconds || config.archiveSeconds
1109
+ config.archiveFailedInterval = `${config.archiveFailedSeconds} seconds`
1110
+ &nbsp;
1111
+ // Do not emit warning twice
1112
+ if (config.archiveFailedSeconds &lt; 60 &amp;&amp; config.archiveSeconds &gt;= 60) {
1113
+ emitWarning(WARNINGS.CRON_DISABLED)
1114
+ }
1115
+ }
1116
+ &nbsp;
1117
+ function applyCompletionConfig (config, defaults) {
1118
+ assert(!('onComplete' in config) || config.onComplete === true || config.onComplete === false,
1119
+ 'configuration assert: onComplete must be either true or false')
1120
+ &nbsp;
1121
+ if (!('onComplete' in config)) {
1122
+ config.onComplete = defaults
1123
+ ? defaults.onComplete
1124
+ : false
1125
+ }
1126
+ }
1127
+ &nbsp;
1128
+ function applyRetentionConfig (config, defaults) {
1129
+ assert(!('retentionSeconds' in config) || config.retentionSeconds &gt;= 1,
1130
+ 'configuration assert: retentionSeconds must be at least every second')
1131
+ &nbsp;
1132
+ assert(!('retentionMinutes' in config) || <span class="branch-1 cbranch-no" title="branch not covered" >config.retentionMinutes &gt;= 1,</span>
1133
+ 'configuration assert: retentionMinutes must be at least every minute')
1134
+ &nbsp;
1135
+ assert(!('retentionHours' in config) || <span class="branch-1 cbranch-no" title="branch not covered" >config.retentionHours &gt;= 1,</span>
1136
+ 'configuration assert: retentionHours must be at least every hour')
1137
+ &nbsp;
1138
+ assert(!('retentionDays' in config) || <span class="branch-1 cbranch-no" title="branch not covered" >config.retentionDays &gt;= 1,</span>
1139
+ 'configuration assert: retentionDays must be at least every day')
1140
+ &nbsp;
1141
+ const keepUntil = ('retentionDays' in config)
1142
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >`${config.retentionDays} days`</span>
1143
+ : ('retentionHours' in config)
1144
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >`${config.retentionHours} hours`</span>
1145
+ : ('retentionMinutes' in config)
1146
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >`${config.retentionMinutes} minutes`</span>
1147
+ : ('retentionSeconds' in config)
1148
+ ? `${config.retentionSeconds} seconds`
1149
+ : defaults
1150
+ ? defaults.keepUntil
1151
+ : '14 days'
1152
+ &nbsp;
1153
+ config.keepUntil = keepUntil
1154
+ }
1155
+ &nbsp;
1156
+ function applyExpirationConfig (config, defaults) {
1157
+ if ('expireIn' in config) {
1158
+ emitWarning(WARNINGS.EXPIRE_IN_REMOVED)
1159
+ }
1160
+ &nbsp;
1161
+ assert(!('expireInSeconds' in config) || config.expireInSeconds &gt;= 1,
1162
+ 'configuration assert: expireInSeconds must be at least every second')
1163
+ &nbsp;
1164
+ assert(!('expireInMinutes' in config) || <span class="branch-1 cbranch-no" title="branch not covered" >config.expireInMinutes &gt;= 1,</span>
1165
+ 'configuration assert: expireInMinutes must be at least every minute')
1166
+ &nbsp;
1167
+ assert(!('expireInHours' in config) || <span class="branch-1 cbranch-no" title="branch not covered" >config.expireInHours &gt;= 1,</span>
1168
+ 'configuration assert: expireInHours must be at least every hour')
1169
+ &nbsp;
1170
+ const expireIn = ('expireInHours' in config)
1171
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >`${config.expireInHours} hours`</span>
1172
+ : ('expireInMinutes' in config)
1173
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >`${config.expireInMinutes} minutes`</span>
1174
+ : ('expireInSeconds' in config)
1175
+ ? `${config.expireInSeconds} seconds`
1176
+ : defaults
1177
+ ? defaults.expireIn
1178
+ : '15 minutes'
1179
+ &nbsp;
1180
+ config.expireIn = expireIn
1181
+ }
1182
+ &nbsp;
1183
+ function applyRetryConfig (config, defaults) {
1184
+ assert(!('retryDelay' in config) || (Number.isInteger(config.retryDelay) &amp;&amp; config.retryDelay &gt;= 0), 'retryDelay must be an integer &gt;= 0')
1185
+ assert(!('retryLimit' in config) || (Number.isInteger(config.retryLimit) &amp;&amp; config.retryLimit &gt;= 0), 'retryLimit must be an integer &gt;= 0')
1186
+ assert(!('retryBackoff' in config) || (config.retryBackoff === true || <span class="branch-2 cbranch-no" title="branch not covered" >config.retryBackoff === false)</span>, 'retryBackoff must be either true or false')
1187
+ &nbsp;
1188
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (defaults) {
1189
+ config.retryDelay = config.retryDelay || defaults.retryDelay
1190
+ config.retryLimit = config.retryLimit || defaults.retryLimit
1191
+ config.retryBackoff = config.retryBackoff || defaults.retryBackoff
1192
+ }
1193
+ &nbsp;
1194
+ config.retryDelay = config.retryDelay || 0
1195
+ config.retryLimit = config.retryLimit || 0
1196
+ config.retryBackoff = !!config.retryBackoff
1197
+ config.retryDelay = (config.retryBackoff &amp;&amp; !config.retryDelay) ? 1 : config.retryDelay
1198
+ config.retryLimit = (config.retryDelay &amp;&amp; !config.retryLimit) ? 1 : config.retryLimit
1199
+ }
1200
+ &nbsp;
1201
+ function applyNewJobCheckInterval (config, defaults) {
1202
+ const second = 1000
1203
+ &nbsp;
1204
+ assert(!('newJobCheckInterval' in config) || config.newJobCheckInterval &gt;= 100,
1205
+ 'configuration assert: newJobCheckInterval must be at least every 100ms')
1206
+ &nbsp;
1207
+ assert(!('newJobCheckIntervalSeconds' in config) || config.newJobCheckIntervalSeconds &gt;= 1,
1208
+ 'configuration assert: newJobCheckIntervalSeconds must be at least every second')
1209
+ &nbsp;
1210
+ config.newJobCheckInterval = ('newJobCheckIntervalSeconds' in config)
1211
+ ? config.newJobCheckIntervalSeconds * second
1212
+ : ('newJobCheckInterval' in config)
1213
+ ? config.newJobCheckInterval
1214
+ : defaults
1215
+ ? defaults.newJobCheckInterval
1216
+ : second * 2
1217
+ }
1218
+ &nbsp;
1219
+ function applyMaintenanceConfig (config) {
1220
+ assert(!('maintenanceIntervalSeconds' in config) || config.maintenanceIntervalSeconds &gt;= 1,
1221
+ 'configuration assert: maintenanceIntervalSeconds must be at least every second')
1222
+ &nbsp;
1223
+ assert(!('maintenanceIntervalMinutes' in config) || config.maintenanceIntervalMinutes &gt;= 1,
1224
+ 'configuration assert: maintenanceIntervalMinutes must be at least every minute')
1225
+ &nbsp;
1226
+ config.maintenanceIntervalSeconds = ('maintenanceIntervalMinutes' in config)
1227
+ ? config.maintenanceIntervalMinutes * 60
1228
+ : ('maintenanceIntervalSeconds' in config)
1229
+ ? config.maintenanceIntervalSeconds
1230
+ : 120
1231
+ }
1232
+ &nbsp;
1233
+ function applyDeleteConfig (config) {
1234
+ assert(!('deleteAfterSeconds' in config) || config.deleteAfterSeconds &gt;= 1,
1235
+ 'configuration assert: deleteAfterSeconds must be at least every second')
1236
+ &nbsp;
1237
+ assert(!('deleteAfterMinutes' in config) || <span class="branch-1 cbranch-no" title="branch not covered" >config.deleteAfterMinutes &gt;= 1,</span>
1238
+ 'configuration assert: deleteAfterMinutes must be at least every minute')
1239
+ &nbsp;
1240
+ assert(!('deleteAfterHours' in config) || <span class="branch-1 cbranch-no" title="branch not covered" >config.deleteAfterHours &gt;= 1,</span>
1241
+ 'configuration assert: deleteAfterHours must be at least every hour')
1242
+ &nbsp;
1243
+ assert(!('deleteAfterDays' in config) || <span class="branch-1 cbranch-no" title="branch not covered" >config.deleteAfterDays &gt;= 1,</span>
1244
+ 'configuration assert: deleteAfterDays must be at least every day')
1245
+ &nbsp;
1246
+ const deleteAfter = ('deleteAfterDays' in config)
1247
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >`${config.deleteAfterDays} days`</span>
1248
+ : ('deleteAfterHours' in config)
1249
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >`${config.deleteAfterHours} hours`</span>
1250
+ : ('deleteAfterMinutes' in config)
1251
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >`${config.deleteAfterMinutes} minutes`</span>
1252
+ : ('deleteAfterSeconds' in config)
1253
+ ? `${config.deleteAfterSeconds} seconds`
1254
+ : '7 days'
1255
+ &nbsp;
1256
+ config.deleteAfter = deleteAfter
1257
+ }
1258
+ &nbsp;
1259
+ function applyMonitoringConfig (config) {
1260
+ assert(!('monitorStateIntervalSeconds' in config) || config.monitorStateIntervalSeconds &gt;= 1,
1261
+ 'configuration assert: monitorStateIntervalSeconds must be at least every second')
1262
+ &nbsp;
1263
+ assert(!('monitorStateIntervalMinutes' in config) || config.monitorStateIntervalMinutes &gt;= 1,
1264
+ 'configuration assert: monitorStateIntervalMinutes must be at least every minute')
1265
+ &nbsp;
1266
+ config.monitorStateIntervalSeconds =
1267
+ ('monitorStateIntervalMinutes' in config)
1268
+ ? config.monitorStateIntervalMinutes * 60
1269
+ : ('monitorStateIntervalSeconds' in config)
1270
+ ? config.monitorStateIntervalSeconds
1271
+ : null
1272
+ &nbsp;
1273
+ const TEN_MINUTES_IN_SECONDS = 600
1274
+ &nbsp;
1275
+ assert(!('clockMonitorIntervalSeconds' in config) || (config.clockMonitorIntervalSeconds &gt;= 1 &amp;&amp; config.clockMonitorIntervalSeconds &lt;= TEN_MINUTES_IN_SECONDS),
1276
+ 'configuration assert: clockMonitorIntervalSeconds must be between 1 second and 10 minutes')
1277
+ &nbsp;
1278
+ assert(!('clockMonitorIntervalMinutes' in config) || (<span class="branch-1 cbranch-no" title="branch not covered" >config.clockMonitorIntervalMinutes &gt;= 1 </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >config.clockMonitorIntervalMinutes &lt;= 10)</span>,
1279
+ 'configuration assert: clockMonitorIntervalMinutes must be between 1 and 10')
1280
+ &nbsp;
1281
+ config.clockMonitorIntervalSeconds =
1282
+ ('clockMonitorIntervalMinutes' in config)
1283
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >config.clockMonitorIntervalMinutes * 60</span>
1284
+ : ('clockMonitorIntervalSeconds' in config)
1285
+ ? config.clockMonitorIntervalSeconds
1286
+ : TEN_MINUTES_IN_SECONDS
1287
+ &nbsp;
1288
+ assert(!('cronMonitorIntervalSeconds' in config) || (config.cronMonitorIntervalSeconds &gt;= 1 &amp;&amp; config.cronMonitorIntervalSeconds &lt;= 60),
1289
+ 'configuration assert: cronMonitorIntervalSeconds must be between 1 and 60 seconds')
1290
+ &nbsp;
1291
+ config.cronMonitorIntervalSeconds =
1292
+ ('cronMonitorIntervalSeconds' in config)
1293
+ ? config.cronMonitorIntervalSeconds
1294
+ : 60
1295
+ &nbsp;
1296
+ assert(!('cronWorkerIntervalSeconds' in config) || (config.cronWorkerIntervalSeconds &gt;= 1 &amp;&amp; config.cronWorkerIntervalSeconds &lt;= 60),
1297
+ 'configuration assert: cronWorkerIntervalSeconds must be between 1 and 60 seconds')
1298
+ &nbsp;
1299
+ config.cronWorkerIntervalSeconds =
1300
+ ('cronWorkerIntervalSeconds' in config)
1301
+ ? config.cronWorkerIntervalSeconds
1302
+ : 4
1303
+ }
1304
+ &nbsp;
1305
+ function applyUuidConfig (config) {
1306
+ assert(!('uuid' in config) || config.uuid === 'v1' || config.uuid === 'v4', 'configuration assert: uuid option only supports v1 or v4')
1307
+ config.uuid = config.uuid || 'v4'
1308
+ }
1309
+ &nbsp;
1310
+ function warnClockSkew (message) {
1311
+ emitWarning(WARNINGS.CLOCK_SKEW, message, { force: true })
1312
+ }
1313
+ &nbsp;
1314
+ function emitWarning (warning, message, options = {}) {
1315
+ const { force } = options
1316
+ &nbsp;
1317
+ if (force || !warning.warned) {
1318
+ warning.warned = true
1319
+ message = `${warning.message} ${message || ''}`
1320
+ process.emitWarning(message, warning.type, warning.code)
1321
+ }
1322
+ }
1323
+ &nbsp;</pre></td></tr></table></pre>
1324
+
1325
+ <div class='push'></div><!-- for sticky footer -->
1326
+ </div><!-- /wrapper -->
1327
+ <div class='footer quiet pad2 space-top1 center small'>
1328
+ Code coverage generated by
1329
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1330
+ at 2023-07-02T21:44:11.859Z
1331
+ </div>
1332
+ <script src="prettify.js"></script>
1333
+ <script>
1334
+ window.onload = function () {
1335
+ prettyPrint();
1336
+ };
1337
+ </script>
1338
+ <script src="sorter.js"></script>
1339
+ <script src="block-navigation.js"></script>
1340
+ </body>
1341
+ </html>
1342
+