@saasquatch/squatch-js 2.6.0-8 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/.github/workflows/size-limit.yml +14 -14
  2. package/.github/workflows/static.yml +89 -89
  3. package/CHANGELOG.md +388 -326
  4. package/LICENSE +20 -20
  5. package/README.md +259 -208
  6. package/babel.config.js +7 -7
  7. package/cucumber.js +45 -45
  8. package/demo/sandbox.ts +124 -124
  9. package/demo/toolbar.tsx +526 -526
  10. package/dist/api/WidgetApi.d.ts +1 -0
  11. package/dist/async.d.ts +2 -0
  12. package/dist/globals.d.ts +4 -0
  13. package/dist/squatch.esm.js +80 -49
  14. package/dist/squatch.esm.js.map +1 -1
  15. package/dist/squatch.js +80 -49
  16. package/dist/squatch.js.map +1 -1
  17. package/dist/squatch.min.js +1 -1
  18. package/dist/squatch.min.js.br +0 -0
  19. package/dist/squatch.min.js.map +1 -1
  20. package/dist/squatch.modern.js +1 -1
  21. package/dist/squatch.modern.js.map +1 -1
  22. package/dist/stats.html +1 -1
  23. package/dist/utils/decodeJwt.d.ts +1 -0
  24. package/dist/utils/validate.d.ts +0 -2
  25. package/dist/widgets/PopupWidget.d.ts +2 -2
  26. package/dist/widgets/declarative/DeclarativeWidget.d.ts +5 -0
  27. package/jest.config.ts +200 -200
  28. package/package.json +123 -123
  29. package/tsconfig.json +23 -23
  30. package/coverage/clover.xml +0 -865
  31. package/coverage/coverage-final.json +0 -20
  32. package/coverage/lcov-report/DeclarativeWidget.ts.html +0 -790
  33. package/coverage/lcov-report/WidgetApi.ts.html +0 -631
  34. package/coverage/lcov-report/Widgets.ts.html +0 -1105
  35. package/coverage/lcov-report/api/AnalyticsApi.ts.html +0 -304
  36. package/coverage/lcov-report/api/EventsApi.ts.html +0 -352
  37. package/coverage/lcov-report/api/WidgetApi.ts.html +0 -658
  38. package/coverage/lcov-report/api/graphql.ts.html +0 -130
  39. package/coverage/lcov-report/base.css +0 -224
  40. package/coverage/lcov-report/block-navigation.js +0 -87
  41. package/coverage/lcov-report/favicon.png +0 -0
  42. package/coverage/lcov-report/prettify.css +0 -1
  43. package/coverage/lcov-report/prettify.js +0 -2
  44. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  45. package/coverage/lcov-report/sorter.js +0 -196
  46. package/coverage/lcov-report/squatch.ts.html +0 -721
  47. package/coverage/lcov-report/utils/cookieUtils.ts.html +0 -415
  48. package/coverage/lcov-report/utils/decodeUserJwt.ts.html +0 -133
  49. package/coverage/lcov-report/utils/domready.ts.html +0 -160
  50. package/coverage/lcov-report/utils/io.ts.html +0 -400
  51. package/coverage/lcov-report/utils/utmUtils.ts.html +0 -277
  52. package/coverage/lcov-report/utils/validate.ts.html +0 -268
  53. package/coverage/lcov-report/validate.ts.html +0 -268
  54. package/coverage/lcov-report/widgets/EmbedWidget.ts.html +0 -481
  55. package/coverage/lcov-report/widgets/PopupWidget.ts.html +0 -685
  56. package/coverage/lcov-report/widgets/Widget.ts.html +0 -1159
  57. package/coverage/lcov-report/widgets/Widgets.ts.html +0 -1102
  58. package/coverage/lcov-report/widgets/declarative/DeclarativeWidget.ts.html +0 -790
  59. package/coverage/lcov-report/widgets/declarative/DeclarativeWidgets.ts.html +0 -388
  60. package/coverage/lcov.info +0 -1593
  61. package/stats.json +0 -1
@@ -1,1159 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for widgets/Widget.ts</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> / <a href="index.html">widgets</a> Widget.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">4.42% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>5/113</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/59</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/20</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">4.62% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>5/108</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 low'></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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-yes">2x</span>
426
- <span class="cline-any cline-yes">2x</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-yes">2x</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-yes">2x</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-yes">2x</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-no">&nbsp;</span>
476
- <span class="cline-any cline-no">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-no">&nbsp;</span>
479
- <span class="cline-any cline-no">&nbsp;</span>
480
- <span class="cline-any cline-no">&nbsp;</span>
481
- <span class="cline-any cline-no">&nbsp;</span>
482
- <span class="cline-any cline-no">&nbsp;</span>
483
- <span class="cline-any cline-no">&nbsp;</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-no">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-no">&nbsp;</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-no">&nbsp;</span>
495
- <span class="cline-any cline-no">&nbsp;</span>
496
- <span class="cline-any cline-no">&nbsp;</span>
497
- <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-no">&nbsp;</span>
499
- <span class="cline-any cline-no">&nbsp;</span>
500
- <span class="cline-any cline-no">&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-no">&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-no">&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-no">&nbsp;</span>
510
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
516
- <span class="cline-any cline-no">&nbsp;</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
521
- <span class="cline-any cline-no">&nbsp;</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
523
- <span class="cline-any cline-no">&nbsp;</span>
524
- <span class="cline-any cline-no">&nbsp;</span>
525
- <span class="cline-any cline-no">&nbsp;</span>
526
- <span class="cline-any cline-no">&nbsp;</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
535
- <span class="cline-any cline-no">&nbsp;</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-no">&nbsp;</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-no">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
568
- <span class="cline-any cline-no">&nbsp;</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
583
- <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
593
- <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</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-no">&nbsp;</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-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-no">&nbsp;</span>
648
- <span class="cline-any cline-no">&nbsp;</span>
649
- <span class="cline-any cline-no">&nbsp;</span>
650
- <span class="cline-any cline-no">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-no">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-no">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-no">&nbsp;</span>
666
- <span class="cline-any cline-no">&nbsp;</span>
667
- <span class="cline-any cline-no">&nbsp;</span>
668
- <span class="cline-any cline-no">&nbsp;</span>
669
- <span class="cline-any cline-no">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-no">&nbsp;</span>
672
- <span class="cline-any cline-no">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
685
- <span class="cline-any cline-no">&nbsp;</span>
686
- <span class="cline-any cline-no">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-no">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-no">&nbsp;</span>
691
- <span class="cline-any cline-no">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-no">&nbsp;</span>
697
- <span class="cline-any cline-no">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
703
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
714
- <span class="cline-any cline-no">&nbsp;</span>
715
- <span class="cline-any cline-no">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-no">&nbsp;</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-no">&nbsp;</span>
726
- <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-no">&nbsp;</span>
728
- <span class="cline-any cline-no">&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-no">&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-neutral">&nbsp;</span>
735
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-no">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
749
- <span class="cline-any cline-no">&nbsp;</span>
750
- <span class="cline-any cline-no">&nbsp;</span>
751
- <span class="cline-any cline-no">&nbsp;</span>
752
- <span class="cline-any cline-no">&nbsp;</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-no">&nbsp;</span>
755
- <span class="cline-any cline-no">&nbsp;</span>
756
- <span class="cline-any cline-no">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
762
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
766
- <span class="cline-any cline-no">&nbsp;</span>
767
- <span class="cline-any cline-no">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-no">&nbsp;</span>
771
- <span class="cline-any cline-no">&nbsp;</span>
772
- <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
776
- <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-no">&nbsp;</span>
779
- <span class="cline-any cline-no">&nbsp;</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></td><td class="text"><pre class="prettyprint lang-js">// @ts-check
783
- import { debug } from "debug";
784
- import AnalyticsApi, { SQHDetails } from "../api/AnalyticsApi";
785
- import WidgetApi from "../api/WidgetApi";
786
- import { EngagementMedium, WidgetContext, WidgetType } from "../types";
787
- import { isObject } from "../utils/validate";
788
- &nbsp;
789
- /** @hidden */
790
- const _log = debug("squatch-js:widget");
791
- &nbsp;
792
- export interface Params {
793
- type: WidgetType;
794
- domain: string;
795
- npmCdn: string;
796
- content: string;
797
- api: WidgetApi;
798
- rsCode?: string;
799
- context: WidgetContext;
800
- container?: string | HTMLElement | null | undefined;
801
- }
802
- &nbsp;
803
- export type ProgramLoadEvent = {
804
- programId: string;
805
- tenantAlias?: string;
806
- accountId?: string;
807
- userId?: string;
808
- engagementMedium?: EngagementMedium;
809
- };
810
- export type GenericLoadEvent = {
811
- mode: any;
812
- analytics: any;
813
- };
814
- &nbsp;
815
- /*
816
- * The Widget class is the base class for the different widget types available
817
- *
818
- * Creates an `iframe` in which the html content of the widget gets embedded.
819
- * Uses element-resize-detector (https://github.com/wnr/element-resize-detector)
820
- * for listening to the height of the widget content and make the iframe responsive.
821
- *
822
- */
823
- export default abstract class Widget {
824
- type: WidgetType;
825
- content: string;
826
- analyticsApi: AnalyticsApi;
827
- widgetApi: WidgetApi;
828
- context: WidgetContext;
829
- npmCdn: string;
830
- container: string | HTMLElement | undefined | null;
831
- &nbsp;
832
- <span class="fstat-no" title="function not covered" > protected constructor(p</span>arams: Params) {
833
- <span class="cstat-no" title="statement not covered" > _log("widget initializing ...");</span>
834
- <span class="cstat-no" title="statement not covered" > this.content =</span>
835
- params.content === "error" ? this._error(params.rsCode) : params.content;
836
- <span class="cstat-no" title="statement not covered" > this.type = params.type;</span>
837
- <span class="cstat-no" title="statement not covered" > this.widgetApi = params.api;</span>
838
- <span class="cstat-no" title="statement not covered" > this.npmCdn = params.npmCdn;</span>
839
- <span class="cstat-no" title="statement not covered" > this.analyticsApi = new AnalyticsApi({ domain: params.domain });</span>
840
- <span class="cstat-no" title="statement not covered" > this.context = params.context;</span>
841
- <span class="cstat-no" title="statement not covered" > this.container = params.context.container;</span>
842
- }
843
- &nbsp;
844
- <span class="fstat-no" title="function not covered" > _findElement(</span>): HTMLElement {
845
- let element: Element | null;
846
- &nbsp;
847
- <span class="cstat-no" title="statement not covered" > if (typeof this.container === "string") {</span>
848
- // selector is a string
849
- <span class="cstat-no" title="statement not covered" > element = document.querySelector(this.container);</span>
850
- <span class="cstat-no" title="statement not covered" > _log("loading widget with selector", element);</span>
851
- // selector is an HTML element
852
- } else <span class="cstat-no" title="statement not covered" >if (this.container instanceof HTMLElement) {</span>
853
- <span class="cstat-no" title="statement not covered" > element = this.container;</span>
854
- <span class="cstat-no" title="statement not covered" > _log("loading widget with container", element);</span>
855
- // garbage container found
856
- } else <span class="cstat-no" title="statement not covered" >if (this.container) {</span>
857
- <span class="cstat-no" title="statement not covered" > element = null;</span>
858
- <span class="cstat-no" title="statement not covered" > _log("container must be an HTMLElement or string", this.container);</span>
859
- // find element on page
860
- } else {
861
- <span class="cstat-no" title="statement not covered" > element =</span>
862
- document.querySelector("#squatchembed") ||
863
- document.querySelector(".squatchembed");
864
- <span class="cstat-no" title="statement not covered" > _log("loading widget with default selector", element);</span>
865
- }
866
- &nbsp;
867
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!(element instanceof HTMLElement))</span>
868
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
869
- `element with selector '${
870
- this.container || "#squatchembed or .squatchembed"
871
- }' not found.'`
872
- );
873
- &nbsp;
874
- <span class="cstat-no" title="statement not covered" > return element;</span>
875
- }
876
- &nbsp;
877
- <span class="fstat-no" title="function not covered" > _createFrame(</span>) {
878
- const frame = <span class="cstat-no" title="statement not covered" >document.createElement("iframe");</span>
879
- <span class="cstat-no" title="statement not covered" > frame["squatchJsApi"] = this;</span>
880
- <span class="cstat-no" title="statement not covered" > frame.id = "squatchFrame";</span>
881
- <span class="cstat-no" title="statement not covered" > frame.width = "100%";</span>
882
- <span class="cstat-no" title="statement not covered" > frame.src = "about:blank";</span>
883
- <span class="cstat-no" title="statement not covered" > frame.scrolling = "no";</span>
884
- <span class="cstat-no" title="statement not covered" > frame.setAttribute(</span>
885
- "style",
886
- "border: 0; background-color: none; width: 1px; min-width: 100%;"
887
- );
888
- &nbsp;
889
- <span class="cstat-no" title="statement not covered" > return frame;</span>
890
- }
891
- &nbsp;
892
- <span class="fstat-no" title="function not covered" > _findFrame(</span>) {
893
- const element = <span class="cstat-no" title="statement not covered" >this.container ? this._findElement() : document.body;</span>
894
- const parent = <span class="cstat-no" title="statement not covered" >element.shadowRoot || element;</span>
895
- <span class="cstat-no" title="statement not covered" > return parent.querySelector(</span>
896
- "iframe#squatchFrame"
897
- ) as HTMLIFrameElement | null;
898
- }
899
- &nbsp;
900
- abstract load(): void;
901
- protected <span class="fstat-no" title="function not covered" >_loadEvent(</span>sqh: ProgramLoadEvent | GenericLoadEvent) {
902
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!sqh) <span class="cstat-no" title="statement not covered" >return; </span></span>// No non-truthy value
903
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isObject(sqh)) {</span>
904
- <span class="cstat-no" title="statement not covered" > throw new Error("Widget Load event identity property is not an object");</span>
905
- }
906
- &nbsp;
907
- let params: SQHDetails;
908
- <span class="cstat-no" title="statement not covered" > if ("programId" in sqh) {</span>
909
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
910
- !sqh.tenantAlias ||
911
- !sqh.accountId ||
912
- !sqh.userId ||
913
- !sqh.engagementMedium
914
- )
915
- <span class="cstat-no" title="statement not covered" > throw new Error("Widget Load event missing required properties");</span>
916
- &nbsp;
917
- <span class="cstat-no" title="statement not covered" > params = {</span>
918
- tenantAlias: sqh.tenantAlias,
919
- externalAccountId: sqh.accountId,
920
- externalUserId: sqh.userId,
921
- engagementMedium: sqh.engagementMedium,
922
- programId: sqh.programId,
923
- };
924
- } else {
925
- const { analytics, mode } = <span class="cstat-no" title="statement not covered" >sqh;</span>
926
- <span class="cstat-no" title="statement not covered" > params = {</span>
927
- tenantAlias: analytics.attributes.tenant,
928
- externalAccountId: analytics.attributes.accountId,
929
- externalUserId: analytics.attributes.userId,
930
- engagementMedium: mode.widgetMode,
931
- };
932
- }
933
- &nbsp;
934
- <span class="cstat-no" title="statement not covered" > this.analyticsApi</span>
935
- .pushAnalyticsLoadEvent(params)
936
- ?.then(<span class="fstat-no" title="function not covered" >(r</span>esponse) =&gt; {
937
- <span class="cstat-no" title="statement not covered" > _log(`${params.engagementMedium} loaded event recorded.`);</span>
938
- })
939
- .catch(<span class="fstat-no" title="function not covered" >(e</span>x) =&gt; {
940
- <span class="cstat-no" title="statement not covered" > _log(`ERROR: pushAnalyticsLoadEvent() ${ex}`);</span>
941
- });
942
- }
943
- &nbsp;
944
- protected <span class="fstat-no" title="function not covered" >_shareEvent(</span>sqh, medium) {
945
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (sqh) {</span>
946
- <span class="cstat-no" title="statement not covered" > this.analyticsApi</span>
947
- .pushAnalyticsShareClickedEvent({
948
- tenantAlias: sqh.analytics.attributes.tenant,
949
- externalAccountId: sqh.analytics.attributes.accountId,
950
- externalUserId: sqh.analytics.attributes.userId,
951
- engagementMedium: sqh.mode.widgetMode,
952
- shareMedium: medium,
953
- })
954
- .then(<span class="fstat-no" title="function not covered" >(r</span>esponse) =&gt; {
955
- <span class="cstat-no" title="statement not covered" > _log(</span>
956
- `${sqh.mode.widgetMode} share ${medium} event recorded. ${response}`
957
- );
958
- })
959
- .catch(<span class="fstat-no" title="function not covered" >(e</span>x) =&gt; {
960
- <span class="cstat-no" title="statement not covered" > _log(`ERROR: pushAnalyticsShareClickedEvent() ${ex}`);</span>
961
- });
962
- }
963
- }
964
- &nbsp;
965
- // TODO: CA: Refactor how error templates are shown
966
- protected <span class="fstat-no" title="function not covered" >_error(</span>rs, mode = <span class="branch-0 cbranch-no" title="branch not covered" >"modal",</span> style = <span class="branch-0 cbranch-no" title="branch not covered" >"")</span> {
967
- const errorTemplate = <span class="cstat-no" title="statement not covered" >`&lt;!DOCTYPE html&gt;</span>
968
- &lt;!--[if IE 7]&gt;&lt;html class="ie7 oldie" lang="en"&gt;&lt;![endif]--&gt;
969
- &lt;!--[if IE 8]&gt;&lt;html class="ie8 oldie" lang="en"&gt;&lt;![endif]--&gt;
970
- &lt;!--[if gt IE 8]&gt;&lt;!--&gt;&lt;html lang="en"&gt;&lt;!--&lt;![endif]--&gt;
971
- &lt;head&gt;
972
- &lt;link rel="stylesheet" media="all" href="https://fast.ssqt.io/assets/css/widget/errorpage.css"&gt;
973
- &lt;style&gt;
974
- ${style}
975
- &lt;/style&gt;
976
- &lt;/head&gt;
977
- &lt;body&gt;
978
- &nbsp;
979
- &lt;div class="squatch-container ${mode}" style="width:100%"&gt;
980
- &lt;div class="errorheader"&gt;
981
- &lt;button type="button" class="close" onclick="window.frameElement.squatchJsApi.close();"&gt;&amp;times;&lt;/button&gt;
982
- &lt;p class="errortitle"&gt;Error&lt;/p&gt;
983
- &lt;/div&gt;
984
- &lt;div class="errorbody"&gt;
985
- &lt;div class="sadface"&gt;&lt;img src="https://fast.ssqt.io/assets/images/face.png"&gt;&lt;/div&gt;
986
- &lt;h4&gt;Our referral program is temporarily unavailable.&lt;/h4&gt;&lt;br&gt;
987
- &lt;p&gt;Please reload the page or check back later.&lt;/p&gt;
988
- &lt;p&gt;If the persists please contact our support team.&lt;/p&gt;
989
- &lt;br&gt;
990
- &lt;br&gt;
991
- &lt;div class="right-align errtxt"&gt;
992
- Error Code: ${rs}
993
- &lt;/div&gt;
994
- &lt;/div&gt;
995
- &lt;/div&gt;
996
- &lt;/body&gt;
997
- &lt;/html&gt;`;
998
- &nbsp;
999
- <span class="cstat-no" title="statement not covered" > return errorTemplate;</span>
1000
- }
1001
- &nbsp;
1002
- protected <span class="fstat-no" title="function not covered" >async </span>_findInnerContainer(
1003
- frame: HTMLIFrameElement
1004
- ): Promise&lt;Element&gt; {
1005
- const { contentWindow } = <span class="cstat-no" title="statement not covered" >frame;</span>
1006
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!contentWindow)</span>
1007
- <span class="cstat-no" title="statement not covered" > throw new Error("Squatch.js frame inner frame is empty");</span>
1008
- const frameDoc = <span class="cstat-no" title="statement not covered" >contentWindow.document;</span>
1009
- &nbsp;
1010
- function <span class="fstat-no" title="function not covered" >search(</span>) {
1011
- const containers = <span class="cstat-no" title="statement not covered" >frameDoc.getElementsByTagName("sqh-global-container");</span>
1012
- const legacyContainers =
1013
- <span class="cstat-no" title="statement not covered" > frameDoc.getElementsByClassName("squatch-container");</span>
1014
- const fallback =
1015
- <span class="cstat-no" title="statement not covered" > containers.length &gt; 0</span>
1016
- ? containers[0]
1017
- : legacyContainers.length &gt; 0
1018
- ? legacyContainers[0]
1019
- : null;
1020
- <span class="cstat-no" title="statement not covered" > return fallback;</span>
1021
- }
1022
- &nbsp;
1023
- let found: Element | null = <span class="cstat-no" title="statement not covered" >null;</span>
1024
- <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; 5; i++) {</span>
1025
- <span class="cstat-no" title="statement not covered" > found = search();</span>
1026
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (found) <span class="cstat-no" title="statement not covered" >break;</span></span>
1027
- <span class="cstat-no" title="statement not covered" > await delay(100);</span>
1028
- }
1029
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!found) {</span>
1030
- <span class="cstat-no" title="statement not covered" > return frameDoc.body;</span>
1031
- }
1032
- <span class="cstat-no" title="statement not covered" > return found;</span>
1033
- }
1034
- &nbsp;
1035
- /**
1036
- * Reloads the current widget, makes updated request to API and renders result.
1037
- * Primarily for Classic widgets with registration
1038
- * @param param0 Form field values
1039
- * @param jwt JWT for API authentication
1040
- */
1041
- <span class="fstat-no" title="function not covered" > reload(</span>{ email, firstName, lastName }, jwt) {
1042
- const frame = <span class="cstat-no" title="statement not covered" >this._findFrame();</span>
1043
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!frame) <span class="cstat-no" title="statement not covered" >throw new Error("Could not find widget iframe");</span></span>
1044
- const frameWindow = <span class="cstat-no" title="statement not covered" >frame.contentWindow;</span>
1045
- &nbsp;
1046
- const engagementMedium = <span class="cstat-no" title="statement not covered" >this.context.engagementMedium || "POPUP";</span>
1047
- &nbsp;
1048
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!frameWindow) {</span>
1049
- <span class="cstat-no" title="statement not covered" > throw new Error("Frame needs a content window");</span>
1050
- }
1051
- &nbsp;
1052
- let response;
1053
- &nbsp;
1054
- <span class="cstat-no" title="statement not covered" > if (this.context.type === "upsert") {</span>
1055
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.context.user) <span class="cstat-no" title="statement not covered" >throw new Error("Can't reload without user ids");</span></span>
1056
- &nbsp;
1057
- let userObj = <span class="cstat-no" title="statement not covered" >{</span>
1058
- email: email || null,
1059
- firstName: firstName || null,
1060
- lastName: lastName || null,
1061
- &nbsp;
1062
- id: this.context.user!.id,
1063
- accountId: this.context.user!.accountId,
1064
- };
1065
- &nbsp;
1066
- <span class="cstat-no" title="statement not covered" > response = this.widgetApi.upsertUser({</span>
1067
- user: userObj,
1068
- engagementMedium,
1069
- widgetType: this.type,
1070
- jwt,
1071
- });
1072
- } else <span class="cstat-no" title="statement not covered" >if (this.context.type === "passwordless") {</span>
1073
- <span class="cstat-no" title="statement not covered" > response = this.widgetApi.render({</span>
1074
- user: undefined,
1075
- engagementMedium,
1076
- widgetType: this.type,
1077
- jwt: undefined,
1078
- });
1079
- } else {
1080
- <span class="cstat-no" title="statement not covered" > throw new Error("can't reload an error widget");</span>
1081
- }
1082
- &nbsp;
1083
- <span class="cstat-no" title="statement not covered" > response</span>
1084
- .then(<span class="fstat-no" title="function not covered" >({</span> template }) =&gt; {
1085
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (template) {</span>
1086
- <span class="cstat-no" title="statement not covered" > this.content = template;</span>
1087
- &nbsp;
1088
- // Support for classic widget registration forms
1089
- <span class="cstat-no" title="statement not covered" > this.__deprecated__register(</span>
1090
- frame,
1091
- { email, engagementMedium },
1092
- <span class="fstat-no" title="function not covered" > () =</span>&gt; {
1093
- <span class="cstat-no" title="statement not covered" > this.load();</span>
1094
- &nbsp;
1095
- // @ts-ignore -- open exists in the PopupWidget, so this call will always exist when it's called.
1096
- <span class="cstat-no" title="statement not covered" > engagementMedium === "POPUP" &amp;&amp; this.open();</span>
1097
- }
1098
- );
1099
- }
1100
- })
1101
- .catch(<span class="fstat-no" title="function not covered" >({</span> message }) =&gt; {
1102
- <span class="cstat-no" title="statement not covered" > _log(`${message}`);</span>
1103
- });
1104
- }
1105
- &nbsp;
1106
- private <span class="fstat-no" title="function not covered" >__deprecated__register(</span>frame, params, onClick) {
1107
- const frameWindow = <span class="cstat-no" title="statement not covered" >frame.contentWindow;</span>
1108
- const frameDoc = <span class="cstat-no" title="statement not covered" >frameWindow.document;</span>
1109
- const showStatsBtn = <span class="cstat-no" title="statement not covered" >frameDoc.createElement("button");</span>
1110
- const registerForm = <span class="cstat-no" title="statement not covered" >frameDoc.getElementsByClassName("squatch-register")[0];</span>
1111
- &nbsp;
1112
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (registerForm) {</span>
1113
- <span class="cstat-no" title="statement not covered" > showStatsBtn.className = "btn btn-primary";</span>
1114
- <span class="cstat-no" title="statement not covered" > showStatsBtn.id = "show-stats-btn";</span>
1115
- &nbsp;
1116
- <span class="cstat-no" title="statement not covered" > showStatsBtn.textContent =</span>
1117
- this.type === "REFERRER_WIDGET" ? "Show Stats" : "Show Reward";
1118
- &nbsp;
1119
- const widgetStyle =
1120
- <span class="cstat-no" title="statement not covered" > params.engagementMedium === "POPUP"</span>
1121
- ? "margin-top: 10px; max-width: 130px; width: 100%;"
1122
- : "margin-top: 10px;";
1123
- &nbsp;
1124
- <span class="cstat-no" title="statement not covered" > showStatsBtn.setAttribute("style", widgetStyle);</span>
1125
- <span class="cstat-no" title="statement not covered" > showStatsBtn.onclick = onClick;</span>
1126
- &nbsp;
1127
- // @ts-ignore -- expect register form to be a stylable element
1128
- <span class="cstat-no" title="statement not covered" > registerForm.style.paddingTop = "30px";</span>
1129
- <span class="cstat-no" title="statement not covered" > registerForm.innerHTML = `&lt;p&gt;&lt;strong&gt;${params.email}&lt;/strong&gt;&lt;br&gt;Has been successfully registered&lt;/p&gt;`;</span>
1130
- <span class="cstat-no" title="statement not covered" > registerForm.appendChild(showStatsBtn);</span>
1131
- }
1132
- }
1133
- }
1134
- &nbsp;
1135
- function <span class="fstat-no" title="function not covered" >delay(</span>duration) {
1136
- <span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >function (r</span>esolve, reject) {</span>
1137
- <span class="cstat-no" title="statement not covered" > setTimeout(resolve, duration);</span>
1138
- });
1139
- }
1140
- &nbsp;</pre></td></tr></table></pre>
1141
-
1142
- <div class='push'></div><!-- for sticky footer -->
1143
- </div><!-- /wrapper -->
1144
- <div class='footer quiet pad2 space-top1 center small'>
1145
- Code coverage generated by
1146
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1147
- at 2023-07-24T22:01:41.987Z
1148
- </div>
1149
- <script src="../prettify.js"></script>
1150
- <script>
1151
- window.onload = function () {
1152
- prettyPrint();
1153
- };
1154
- </script>
1155
- <script src="../sorter.js"></script>
1156
- <script src="../block-navigation.js"></script>
1157
- </body>
1158
- </html>
1159
-