@karpeleslab/klbfw 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +81 -0
- package/package.json +8 -1
- package/CLAUDE.md +0 -50
- package/coverage/clover.xml +0 -835
- package/coverage/coverage-final.json +0 -9
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/cookies.js.html +0 -334
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/fw-wrapper.js.html +0 -163
- package/coverage/lcov-report/index.html +0 -131
- package/coverage/lcov-report/index.js.html +0 -196
- package/coverage/lcov-report/internal.js.html +0 -604
- package/coverage/lcov-report/klbfw/cookies.js.html +0 -490
- package/coverage/lcov-report/klbfw/fw-wrapper.js.html +0 -745
- package/coverage/lcov-report/klbfw/index.html +0 -206
- package/coverage/lcov-report/klbfw/index.js.html +0 -235
- package/coverage/lcov-report/klbfw/internal.js.html +0 -811
- package/coverage/lcov-report/klbfw/rest.js.html +0 -565
- package/coverage/lcov-report/klbfw/test/index.html +0 -116
- package/coverage/lcov-report/klbfw/test/setup.js.html +0 -1105
- package/coverage/lcov-report/klbfw/upload.js.html +0 -3487
- package/coverage/lcov-report/klbfw/util.js.html +0 -388
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/rest.js.html +0 -472
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/upload.js.html +0 -1789
- package/coverage/lcov-report/util.js.html +0 -313
- package/coverage/lcov.info +0 -1617
- package/test/README.md +0 -62
- package/test/api.test.js +0 -102
- package/test/cookies.test.js +0 -65
- package/test/integration.test.js +0 -481
- package/test/rest.test.js +0 -93
- package/test/setup.js +0 -341
- package/test/upload.test.js +0 -689
- package/test/util.test.js +0 -46
|
@@ -1,1789 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for upload.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> upload.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">72.53% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>235/324</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">52.67% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>59/112</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">65.3% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>32/49</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">74% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>222/300</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 type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line medium'></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>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
-
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
-
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
-
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
-
<a name='L569'></a><a href='#L569'>569</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
|
|
635
|
-
<span class="cline-any cline-yes">3x</span>
|
|
636
|
-
<span class="cline-any cline-yes">3x</span>
|
|
637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
640
|
-
<span class="cline-any cline-yes">3x</span>
|
|
641
|
-
<span class="cline-any cline-yes">3x</span>
|
|
642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
649
|
-
<span class="cline-any cline-neutral"> </span>
|
|
650
|
-
<span class="cline-any cline-neutral"> </span>
|
|
651
|
-
<span class="cline-any cline-yes">15x</span>
|
|
652
|
-
<span class="cline-any cline-yes">3x</span>
|
|
653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-yes">12x</span>
|
|
655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
659
|
-
<span class="cline-any cline-yes">3x</span>
|
|
660
|
-
<span class="cline-any cline-yes">3x</span>
|
|
661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
662
|
-
<span class="cline-any cline-yes">3x</span>
|
|
663
|
-
<span class="cline-any cline-yes">1x</span>
|
|
664
|
-
<span class="cline-any cline-neutral"> </span>
|
|
665
|
-
<span class="cline-any cline-yes">2x</span>
|
|
666
|
-
<span class="cline-any cline-neutral"> </span>
|
|
667
|
-
<span class="cline-any cline-neutral"> </span>
|
|
668
|
-
<span class="cline-any cline-yes">3x</span>
|
|
669
|
-
<span class="cline-any cline-yes">3x</span>
|
|
670
|
-
<span class="cline-any cline-neutral"> </span>
|
|
671
|
-
<span class="cline-any cline-yes">3x</span>
|
|
672
|
-
<span class="cline-any cline-yes">3x</span>
|
|
673
|
-
<span class="cline-any cline-neutral"> </span>
|
|
674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-yes">3x</span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-yes">3x</span>
|
|
687
|
-
<span class="cline-any cline-yes">3x</span>
|
|
688
|
-
<span class="cline-any cline-yes">3x</span>
|
|
689
|
-
<span class="cline-any cline-yes">8x</span>
|
|
690
|
-
<span class="cline-any cline-yes">8x</span>
|
|
691
|
-
<span class="cline-any cline-yes">1x</span>
|
|
692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
693
|
-
<span class="cline-any cline-yes">7x</span>
|
|
694
|
-
<span class="cline-any cline-yes">7x</span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-yes">3x</span>
|
|
697
|
-
<span class="cline-any cline-yes">3x</span>
|
|
698
|
-
<span class="cline-any cline-yes">3x</span>
|
|
699
|
-
<span class="cline-any cline-neutral"> </span>
|
|
700
|
-
<span class="cline-any cline-yes">3x</span>
|
|
701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
702
|
-
<span class="cline-any cline-yes">3x</span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-yes">3x</span>
|
|
705
|
-
<span class="cline-any cline-yes">3x</span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-yes">3x</span>
|
|
708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
709
|
-
<span class="cline-any cline-yes">3x</span>
|
|
710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-yes">3x</span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-yes">3x</span>
|
|
727
|
-
<span class="cline-any cline-yes">3x</span>
|
|
728
|
-
<span class="cline-any cline-yes">3x</span>
|
|
729
|
-
<span class="cline-any cline-yes">3x</span>
|
|
730
|
-
<span class="cline-any cline-yes">3x</span>
|
|
731
|
-
<span class="cline-any cline-yes">3x</span>
|
|
732
|
-
<span class="cline-any cline-yes">3x</span>
|
|
733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-yes">17x</span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-no"> </span>
|
|
739
|
-
<span class="cline-any cline-neutral"> </span>
|
|
740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-yes">6x</span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-yes">6x</span>
|
|
745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
747
|
-
<span class="cline-any cline-yes">6x</span>
|
|
748
|
-
<span class="cline-any cline-yes">6x</span>
|
|
749
|
-
<span class="cline-any cline-yes">6x</span>
|
|
750
|
-
<span class="cline-any cline-yes">6x</span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-yes">6x</span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-yes">4x</span>
|
|
755
|
-
<span class="cline-any cline-yes">1x</span>
|
|
756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-yes">1x</span>
|
|
759
|
-
<span class="cline-any cline-yes">1x</span>
|
|
760
|
-
<span class="cline-any cline-yes">1x</span>
|
|
761
|
-
<span class="cline-any cline-yes">1x</span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
763
|
-
<span class="cline-any cline-yes">1x</span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-yes">1x</span>
|
|
767
|
-
<span class="cline-any cline-yes">1x</span>
|
|
768
|
-
<span class="cline-any cline-yes">1x</span>
|
|
769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
770
|
-
<span class="cline-any cline-yes">1x</span>
|
|
771
|
-
<span class="cline-any cline-yes">1x</span>
|
|
772
|
-
<span class="cline-any cline-yes">1x</span>
|
|
773
|
-
<span class="cline-any cline-yes">1x</span>
|
|
774
|
-
<span class="cline-any cline-yes">1x</span>
|
|
775
|
-
<span class="cline-any cline-yes">1x</span>
|
|
776
|
-
<span class="cline-any cline-no"> </span>
|
|
777
|
-
<span class="cline-any cline-yes">1x</span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
780
|
-
<span class="cline-any cline-yes">3x</span>
|
|
781
|
-
<span class="cline-any cline-yes">3x</span>
|
|
782
|
-
<span class="cline-any cline-yes">3x</span>
|
|
783
|
-
<span class="cline-any cline-yes">3x</span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-yes">3x</span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-yes">3x</span>
|
|
789
|
-
<span class="cline-any cline-yes">3x</span>
|
|
790
|
-
<span class="cline-any cline-yes">3x</span>
|
|
791
|
-
<span class="cline-any cline-yes">3x</span>
|
|
792
|
-
<span class="cline-any cline-yes">3x</span>
|
|
793
|
-
<span class="cline-any cline-yes">3x</span>
|
|
794
|
-
<span class="cline-any cline-yes">3x</span>
|
|
795
|
-
<span class="cline-any cline-yes">3x</span>
|
|
796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
798
|
-
<span class="cline-any cline-no"> </span>
|
|
799
|
-
<span class="cline-any cline-no"> </span>
|
|
800
|
-
<span class="cline-any cline-no"> </span>
|
|
801
|
-
<span class="cline-any cline-no"> </span>
|
|
802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
803
|
-
<span class="cline-any cline-no"> </span>
|
|
804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-no"> </span>
|
|
809
|
-
<span class="cline-any cline-neutral"> </span>
|
|
810
|
-
<span class="cline-any cline-no"> </span>
|
|
811
|
-
<span class="cline-any cline-no"> </span>
|
|
812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-no"> </span>
|
|
814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
817
|
-
<span class="cline-any cline-no"> </span>
|
|
818
|
-
<span class="cline-any cline-no"> </span>
|
|
819
|
-
<span class="cline-any cline-no"> </span>
|
|
820
|
-
<span class="cline-any cline-no"> </span>
|
|
821
|
-
<span class="cline-any cline-no"> </span>
|
|
822
|
-
<span class="cline-any cline-no"> </span>
|
|
823
|
-
<span class="cline-any cline-no"> </span>
|
|
824
|
-
<span class="cline-any cline-no"> </span>
|
|
825
|
-
<span class="cline-any cline-neutral"> </span>
|
|
826
|
-
<span class="cline-any cline-neutral"> </span>
|
|
827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-neutral"> </span>
|
|
830
|
-
<span class="cline-any cline-no"> </span>
|
|
831
|
-
<span class="cline-any cline-neutral"> </span>
|
|
832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
833
|
-
<span class="cline-any cline-neutral"> </span>
|
|
834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
837
|
-
<span class="cline-any cline-yes">12x</span>
|
|
838
|
-
<span class="cline-any cline-yes">12x</span>
|
|
839
|
-
<span class="cline-any cline-yes">12x</span>
|
|
840
|
-
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-yes">12x</span>
|
|
842
|
-
<span class="cline-any cline-yes">12x</span>
|
|
843
|
-
<span class="cline-any cline-yes">9x</span>
|
|
844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
845
|
-
<span class="cline-any cline-yes">1x</span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-yes">1x</span>
|
|
848
|
-
<span class="cline-any cline-yes">1x</span>
|
|
849
|
-
<span class="cline-any cline-yes">1x</span>
|
|
850
|
-
<span class="cline-any cline-no"> </span>
|
|
851
|
-
<span class="cline-any cline-yes">1x</span>
|
|
852
|
-
<span class="cline-any cline-neutral"> </span>
|
|
853
|
-
<span class="cline-any cline-yes">8x</span>
|
|
854
|
-
<span class="cline-any cline-yes">8x</span>
|
|
855
|
-
<span class="cline-any cline-yes">8x</span>
|
|
856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
857
|
-
<span class="cline-any cline-neutral"> </span>
|
|
858
|
-
<span class="cline-any cline-yes">6x</span>
|
|
859
|
-
<span class="cline-any cline-yes">6x</span>
|
|
860
|
-
<span class="cline-any cline-neutral"> </span>
|
|
861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
862
|
-
<span class="cline-any cline-yes">8x</span>
|
|
863
|
-
<span class="cline-any cline-neutral"> </span>
|
|
864
|
-
<span class="cline-any cline-neutral"> </span>
|
|
865
|
-
<span class="cline-any cline-neutral"> </span>
|
|
866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
867
|
-
<span class="cline-any cline-yes">8x</span>
|
|
868
|
-
<span class="cline-any cline-yes">8x</span>
|
|
869
|
-
<span class="cline-any cline-yes">8x</span>
|
|
870
|
-
<span class="cline-any cline-no"> </span>
|
|
871
|
-
<span class="cline-any cline-yes">8x</span>
|
|
872
|
-
<span class="cline-any cline-neutral"> </span>
|
|
873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
874
|
-
<span class="cline-any cline-neutral"> </span>
|
|
875
|
-
<span class="cline-any cline-yes">12x</span>
|
|
876
|
-
<span class="cline-any cline-no"> </span>
|
|
877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
879
|
-
<span class="cline-any cline-yes">12x</span>
|
|
880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-neutral"> </span>
|
|
883
|
-
<span class="cline-any cline-neutral"> </span>
|
|
884
|
-
<span class="cline-any cline-yes">29x</span>
|
|
885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
886
|
-
<span class="cline-any cline-yes">29x</span>
|
|
887
|
-
<span class="cline-any cline-yes">29x</span>
|
|
888
|
-
<span class="cline-any cline-yes">29x</span>
|
|
889
|
-
<span class="cline-any cline-yes">126x</span>
|
|
890
|
-
<span class="cline-any cline-yes">12x</span>
|
|
891
|
-
<span class="cline-any cline-yes">12x</span>
|
|
892
|
-
<span class="cline-any cline-yes">114x</span>
|
|
893
|
-
<span class="cline-any cline-yes">66x</span>
|
|
894
|
-
<span class="cline-any cline-yes">66x</span>
|
|
895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
896
|
-
<span class="cline-any cline-yes">60x</span>
|
|
897
|
-
<span class="cline-any cline-yes">60x</span>
|
|
898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
900
|
-
<span class="cline-any cline-yes">29x</span>
|
|
901
|
-
<span class="cline-any cline-neutral"> </span>
|
|
902
|
-
<span class="cline-any cline-yes">29x</span>
|
|
903
|
-
<span class="cline-any cline-yes">3x</span>
|
|
904
|
-
<span class="cline-any cline-yes">3x</span>
|
|
905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
906
|
-
<span class="cline-any cline-neutral"> </span>
|
|
907
|
-
<span class="cline-any cline-yes">1x</span>
|
|
908
|
-
<span class="cline-any cline-yes">1x</span>
|
|
909
|
-
<span class="cline-any cline-yes">1x</span>
|
|
910
|
-
<span class="cline-any cline-neutral"> </span>
|
|
911
|
-
<span class="cline-any cline-yes">1x</span>
|
|
912
|
-
<span class="cline-any cline-yes">1x</span>
|
|
913
|
-
<span class="cline-any cline-yes">1x</span>
|
|
914
|
-
<span class="cline-any cline-neutral"> </span>
|
|
915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
916
|
-
<span class="cline-any cline-yes">1x</span>
|
|
917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
918
|
-
<span class="cline-any cline-yes">1x</span>
|
|
919
|
-
<span class="cline-any cline-yes">1x</span>
|
|
920
|
-
<span class="cline-any cline-yes">1x</span>
|
|
921
|
-
<span class="cline-any cline-yes">1x</span>
|
|
922
|
-
<span class="cline-any cline-yes">1x</span>
|
|
923
|
-
<span class="cline-any cline-yes">1x</span>
|
|
924
|
-
<span class="cline-any cline-no"> </span>
|
|
925
|
-
<span class="cline-any cline-no"> </span>
|
|
926
|
-
<span class="cline-any cline-yes">1x</span>
|
|
927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
928
|
-
<span class="cline-any cline-neutral"> </span>
|
|
929
|
-
<span class="cline-any cline-yes">2x</span>
|
|
930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
931
|
-
<span class="cline-any cline-yes">2x</span>
|
|
932
|
-
<span class="cline-any cline-yes">2x</span>
|
|
933
|
-
<span class="cline-any cline-yes">2x</span>
|
|
934
|
-
<span class="cline-any cline-yes">2x</span>
|
|
935
|
-
<span class="cline-any cline-yes">2x</span>
|
|
936
|
-
<span class="cline-any cline-yes">2x</span>
|
|
937
|
-
<span class="cline-any cline-no"> </span>
|
|
938
|
-
<span class="cline-any cline-yes">2x</span>
|
|
939
|
-
<span class="cline-any cline-neutral"> </span>
|
|
940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
941
|
-
<span class="cline-any cline-neutral"> </span>
|
|
942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
945
|
-
<span class="cline-any cline-yes">21x</span>
|
|
946
|
-
<span class="cline-any cline-neutral"> </span>
|
|
947
|
-
<span class="cline-any cline-neutral"> </span>
|
|
948
|
-
<span class="cline-any cline-neutral"> </span>
|
|
949
|
-
<span class="cline-any cline-yes">20x</span>
|
|
950
|
-
<span class="cline-any cline-yes">25x</span>
|
|
951
|
-
<span class="cline-any cline-yes">6x</span>
|
|
952
|
-
<span class="cline-any cline-yes">6x</span>
|
|
953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
954
|
-
<span class="cline-any cline-yes">1x</span>
|
|
955
|
-
<span class="cline-any cline-neutral"> </span>
|
|
956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
958
|
-
<span class="cline-any cline-yes">3x</span>
|
|
959
|
-
<span class="cline-any cline-yes">20x</span>
|
|
960
|
-
<span class="cline-any cline-neutral"> </span>
|
|
961
|
-
<span class="cline-any cline-neutral"> </span>
|
|
962
|
-
<span class="cline-any cline-yes">53x</span>
|
|
963
|
-
<span class="cline-any cline-neutral"> </span>
|
|
964
|
-
<span class="cline-any cline-neutral"> </span>
|
|
965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
966
|
-
<span class="cline-any cline-neutral"> </span>
|
|
967
|
-
<span class="cline-any cline-yes">20x</span>
|
|
968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
969
|
-
<span class="cline-any cline-neutral"> </span>
|
|
970
|
-
<span class="cline-any cline-yes">3x</span>
|
|
971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-no"> </span>
|
|
973
|
-
<span class="cline-any cline-no"> </span>
|
|
974
|
-
<span class="cline-any cline-neutral"> </span>
|
|
975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
976
|
-
<span class="cline-any cline-no"> </span>
|
|
977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
978
|
-
<span class="cline-any cline-neutral"> </span>
|
|
979
|
-
<span class="cline-any cline-yes">3x</span>
|
|
980
|
-
<span class="cline-any cline-yes">3x</span>
|
|
981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
982
|
-
<span class="cline-any cline-neutral"> </span>
|
|
983
|
-
<span class="cline-any cline-no"> </span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-no"> </span>
|
|
986
|
-
<span class="cline-any cline-no"> </span>
|
|
987
|
-
<span class="cline-any cline-no"> </span>
|
|
988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-no"> </span>
|
|
991
|
-
<span class="cline-any cline-no"> </span>
|
|
992
|
-
<span class="cline-any cline-no"> </span>
|
|
993
|
-
<span class="cline-any cline-no"> </span>
|
|
994
|
-
<span class="cline-any cline-no"> </span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
997
|
-
<span class="cline-any cline-no"> </span>
|
|
998
|
-
<span class="cline-any cline-no"> </span>
|
|
999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
-
<span class="cline-any cline-no"> </span>
|
|
1001
|
-
<span class="cline-any cline-no"> </span>
|
|
1002
|
-
<span class="cline-any cline-no"> </span>
|
|
1003
|
-
<span class="cline-any cline-no"> </span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
-
<span class="cline-any cline-no"> </span>
|
|
1007
|
-
<span class="cline-any cline-no"> </span>
|
|
1008
|
-
<span class="cline-any cline-no"> </span>
|
|
1009
|
-
<span class="cline-any cline-no"> </span>
|
|
1010
|
-
<span class="cline-any cline-no"> </span>
|
|
1011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
-
<span class="cline-any cline-no"> </span>
|
|
1013
|
-
<span class="cline-any cline-no"> </span>
|
|
1014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1015
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1016
|
-
<span class="cline-any cline-no"> </span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1020
|
-
<span class="cline-any cline-no"> </span>
|
|
1021
|
-
<span class="cline-any cline-no"> </span>
|
|
1022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1026
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1027
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1028
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1029
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1032
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1033
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1038
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1044
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1045
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1050
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1051
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1052
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1053
|
-
<span class="cline-any cline-no"> </span>
|
|
1054
|
-
<span class="cline-any cline-no"> </span>
|
|
1055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1056
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1057
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1058
|
-
<span class="cline-any cline-no"> </span>
|
|
1059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1061
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1062
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1063
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1064
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1067
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1071
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1072
|
-
<span class="cline-any cline-no"> </span>
|
|
1073
|
-
<span class="cline-any cline-no"> </span>
|
|
1074
|
-
<span class="cline-any cline-no"> </span>
|
|
1075
|
-
<span class="cline-any cline-no"> </span>
|
|
1076
|
-
<span class="cline-any cline-no"> </span>
|
|
1077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1079
|
-
<span class="cline-any cline-no"> </span>
|
|
1080
|
-
<span class="cline-any cline-no"> </span>
|
|
1081
|
-
<span class="cline-any cline-no"> </span>
|
|
1082
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1083
|
-
<span class="cline-any cline-no"> </span>
|
|
1084
|
-
<span class="cline-any cline-no"> </span>
|
|
1085
|
-
<span class="cline-any cline-no"> </span>
|
|
1086
|
-
<span class="cline-any cline-no"> </span>
|
|
1087
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1088
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1090
|
-
<span class="cline-any cline-no"> </span>
|
|
1091
|
-
<span class="cline-any cline-no"> </span>
|
|
1092
|
-
<span class="cline-any cline-no"> </span>
|
|
1093
|
-
<span class="cline-any cline-no"> </span>
|
|
1094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1096
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1097
|
-
<span class="cline-any cline-no"> </span>
|
|
1098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1102
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1103
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1104
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1105
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1106
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1107
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1108
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1109
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1110
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1111
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1113
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1118
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1119
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1120
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1121
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1122
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1123
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1126
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1127
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1128
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1130
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1131
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1134
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1135
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1136
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1137
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1138
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1139
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1140
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1141
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1142
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1145
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1146
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1147
|
-
<span class="cline-any cline-no"> </span>
|
|
1148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
-
<span class="cline-any cline-no"> </span>
|
|
1150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1154
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1155
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1156
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1161
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1162
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1164
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1165
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1166
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1167
|
-
<span class="cline-any cline-no"> </span>
|
|
1168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1170
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1171
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1172
|
-
<span class="cline-any cline-no"> </span>
|
|
1173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1183
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1184
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1185
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1187
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1188
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1189
|
-
<span class="cline-any cline-yes">37x</span>
|
|
1190
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1191
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1192
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1194
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1195
|
-
<span class="cline-any cline-yes">28x</span>
|
|
1196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1200
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1202
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const rest = require('./rest');
|
|
1203
|
-
const fwWrapper = require('./fw-wrapper');
|
|
1204
|
-
var sha256 = require('js-sha256').sha256;
|
|
1205
|
-
|
|
1206
|
-
// retunr time in amz format, eg 20180930T132108Z
|
|
1207
|
-
function getAmzTime() {
|
|
1208
|
-
var t = new Date();
|
|
1209
|
-
return t.getUTCFullYear() +
|
|
1210
|
-
'' + pad(t.getUTCMonth() + 1) +
|
|
1211
|
-
pad(t.getUTCDate()) +
|
|
1212
|
-
'T' + pad(t.getUTCHours()) +
|
|
1213
|
-
pad(t.getUTCMinutes()) +
|
|
1214
|
-
pad(t.getUTCSeconds()) +
|
|
1215
|
-
'Z';
|
|
1216
|
-
}
|
|
1217
|
-
|
|
1218
|
-
function pad(number) {
|
|
1219
|
-
if (number < 10) {
|
|
1220
|
-
return '0' + number;
|
|
1221
|
-
}
|
|
1222
|
-
return number;
|
|
1223
|
-
}
|
|
1224
|
-
|
|
1225
|
-
// perform call against AWS S3 with the appropriate signature obtained from server
|
|
1226
|
-
function awsReq(upInfo, method, query, body, headers, context) {
|
|
1227
|
-
headers = headers || {};
|
|
1228
|
-
context = context || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
|
|
1229
|
-
|
|
1230
|
-
if (body == "") {
|
|
1231
|
-
var bodyHash = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; // sha256('')
|
|
1232
|
-
} else {
|
|
1233
|
-
var bodyHash = sha256(body);
|
|
1234
|
-
}
|
|
1235
|
-
|
|
1236
|
-
var ts = getAmzTime(); // aws format, eg 20180930T132108Z
|
|
1237
|
-
var ts_d = ts.substring(0, 8);
|
|
1238
|
-
|
|
1239
|
-
headers["X-Amz-Content-Sha256"] = bodyHash;
|
|
1240
|
-
headers["X-Amz-Date"] = ts;
|
|
1241
|
-
|
|
1242
|
-
// prepare auth string
|
|
1243
|
-
var aws_auth_str = [
|
|
1244
|
-
"AWS4-HMAC-SHA256",
|
|
1245
|
-
ts,
|
|
1246
|
-
ts_d + "/" + upInfo.Bucket_Endpoint.Region + "/s3/aws4_request",
|
|
1247
|
-
method,
|
|
1248
|
-
"/" + upInfo.Bucket_Endpoint.Name + "/" + upInfo.Key,
|
|
1249
|
-
query,
|
|
1250
|
-
"host:" + upInfo.Bucket_Endpoint.Host,
|
|
1251
|
-
];
|
|
1252
|
-
|
|
1253
|
-
// list headers to sign (host and anything starting with x-)
|
|
1254
|
-
var sign_head = ['host'];
|
|
1255
|
-
var k = Object.keys(headers).sort();
|
|
1256
|
-
for (var i = 0; i < k.length; i++) {
|
|
1257
|
-
var s = k[i].toLowerCase();
|
|
1258
|
-
if (s.substring(0, 2) != "x-") {
|
|
1259
|
-
continue;
|
|
1260
|
-
}
|
|
1261
|
-
sign_head.push(s);
|
|
1262
|
-
aws_auth_str.push(s + ":" + headers[k[i]]);
|
|
1263
|
-
}
|
|
1264
|
-
aws_auth_str.push("");
|
|
1265
|
-
aws_auth_str.push(sign_head.join(";"));
|
|
1266
|
-
aws_auth_str.push(bodyHash);
|
|
1267
|
-
|
|
1268
|
-
var promise = new Promise(function (resolve, reject) {
|
|
1269
|
-
|
|
1270
|
-
rest.rest("Cloud/Aws/Bucket/Upload/" + upInfo.Cloud_Aws_Bucket_Upload__ + ":signV4", "POST", {headers: aws_auth_str.join("\n")}, context)
|
|
1271
|
-
.then(function (ares) {
|
|
1272
|
-
var u = "https://" + upInfo.Bucket_Endpoint.Host + "/" + upInfo.Bucket_Endpoint.Name + "/" + upInfo.Key;
|
|
1273
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (query != "") u = u + "?" + query;
|
|
1274
|
-
|
|
1275
|
-
headers["Authorization"] = ares.data.authorization;
|
|
1276
|
-
|
|
1277
|
-
fetch(u, {
|
|
1278
|
-
method: method,
|
|
1279
|
-
body: body,
|
|
1280
|
-
headers: headers
|
|
1281
|
-
})
|
|
1282
|
-
.then(resolve, reject)
|
|
1283
|
-
.catch(reject);
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
}, reject)
|
|
1287
|
-
.catch(reject);
|
|
1288
|
-
|
|
1289
|
-
});
|
|
1290
|
-
|
|
1291
|
-
return promise;
|
|
1292
|
-
}
|
|
1293
|
-
|
|
1294
|
-
module.exports.upload = (function () {
|
|
1295
|
-
var upload = {};
|
|
1296
|
-
var upload_queue = []; // queue of uploads to run
|
|
1297
|
-
var upload_failed = []; // failed upload(s)
|
|
1298
|
-
var upload_running = {}; // currently processing uploads
|
|
1299
|
-
var up_id = 0; // next upload id
|
|
1300
|
-
var last_input = null;
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
function sendprogress() {
|
|
1304
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof upload.onprogress === "undefined") return;
|
|
1305
|
-
|
|
1306
|
-
<span class="cstat-no" title="statement not covered" > upload.onprogress(upload.getStatus());</span>
|
|
1307
|
-
}
|
|
1308
|
-
|
|
1309
|
-
function do_process_pending(up) {
|
|
1310
|
-
up["status"] = "pending-wip";
|
|
1311
|
-
// up is an object with api path, file, dfd
|
|
1312
|
-
var params = up.params;
|
|
1313
|
-
|
|
1314
|
-
// set params for upload
|
|
1315
|
-
params["filename"] = up.file.name;
|
|
1316
|
-
params["size"] = up.file.size;
|
|
1317
|
-
params["lastModified"] = up.file.lastModified / 1000;
|
|
1318
|
-
params["type"] = up.file.type;
|
|
1319
|
-
|
|
1320
|
-
rest.rest(up.path, "POST", params, up.context).then(function (res) {
|
|
1321
|
-
// Method 1: aws signed multipart upload
|
|
1322
|
-
if (res["data"]["Cloud_Aws_Bucket_Upload__"]) {
|
|
1323
|
-
up.info = res["data"]; // contains stuff like Bucket_Endpoint, Key, etc
|
|
1324
|
-
|
|
1325
|
-
// ok we are ready to upload - this will initiate an upload
|
|
1326
|
-
awsReq(up.info, "POST", "uploads=", "", {"Content-Type": up.file.type, "X-Amz-Acl": "private"}, up.context)
|
|
1327
|
-
.then(response => response.text())
|
|
1328
|
-
.then(str => (new DOMParser()).parseFromString(str, "text/xml"))
|
|
1329
|
-
.then(dom => dom.querySelector('UploadId').innerHTML)
|
|
1330
|
-
.then(function (uploadId) {
|
|
1331
|
-
up.uploadId = uploadId;
|
|
1332
|
-
|
|
1333
|
-
// ok, let's compute block size so we know how many parts we need to send
|
|
1334
|
-
var fsize = up.file.size;
|
|
1335
|
-
var bsize = Math.ceil(fsize / 10000); // we want ~10k parts
|
|
1336
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (bsize < 5242880) bsize = 5242880; // minimum block size = 5MB
|
|
1337
|
-
|
|
1338
|
-
up.method = 'aws';
|
|
1339
|
-
up.bsize = bsize;
|
|
1340
|
-
up.blocks = Math.ceil(fsize / bsize);
|
|
1341
|
-
up.b = {};
|
|
1342
|
-
up['status'] = 'uploading';
|
|
1343
|
-
upload.run();
|
|
1344
|
-
}).catch(<span class="fstat-no" title="function not covered" >re</span>s => <span class="cstat-no" title="statement not covered" >failure(up, res))</span>
|
|
1345
|
-
return;
|
|
1346
|
-
}
|
|
1347
|
-
// Method 2: PUT requests
|
|
1348
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (res["data"]["PUT"]) {
|
|
1349
|
-
var fsize = up.file.size;
|
|
1350
|
-
var bsize = fsize; // upload file in a single block
|
|
1351
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (res["data"]["Blocksize"]) {
|
|
1352
|
-
// this upload target supports multipart PUT upload
|
|
1353
|
-
bsize = res["data"]["Blocksize"]; // multipart upload
|
|
1354
|
-
}
|
|
1355
|
-
|
|
1356
|
-
up.info = res["data"];
|
|
1357
|
-
up.method = 'put';
|
|
1358
|
-
up.bsize = bsize;
|
|
1359
|
-
up.blocks = Math.ceil(fsize / bsize);
|
|
1360
|
-
up.b = {};
|
|
1361
|
-
up['status'] = 'uploading';
|
|
1362
|
-
upload.run();
|
|
1363
|
-
return;
|
|
1364
|
-
}
|
|
1365
|
-
// invalid data
|
|
1366
|
-
<span class="cstat-no" title="statement not covered" > delete upload_running[up.up_id];</span>
|
|
1367
|
-
<span class="cstat-no" title="statement not covered" > upload_failed.push(up);</span>
|
|
1368
|
-
<span class="cstat-no" title="statement not covered" > up.reject();</span>
|
|
1369
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1370
|
-
})
|
|
1371
|
-
.catch(<span class="fstat-no" title="function not covered" >re</span>s => <span class="cstat-no" title="statement not covered" >failure(up, res))</span>;
|
|
1372
|
-
}
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
function <span class="fstat-no" title="function not covered" >failure(</span>up, data) {
|
|
1376
|
-
<span class="cstat-no" title="statement not covered" > if (!(up.up_id in upload_running)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
1377
|
-
|
|
1378
|
-
<span class="cstat-no" title="statement not covered" > for (var i = <span class="cstat-no" title="statement not covered" >0,</span> len = <span class="cstat-no" title="statement not covered" >upload_failed.length;</span> i < len; i++) {</span>
|
|
1379
|
-
<span class="cstat-no" title="statement not covered" > if (upload_failed[i].up_id === up.up_id) {</span>
|
|
1380
|
-
//already in
|
|
1381
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1382
|
-
}
|
|
1383
|
-
}
|
|
1384
|
-
|
|
1385
|
-
<span class="cstat-no" title="statement not covered" > up.failure = data;</span>
|
|
1386
|
-
<span class="cstat-no" title="statement not covered" > upload_failed.push(up);</span>
|
|
1387
|
-
<span class="cstat-no" title="statement not covered" > delete upload_running[up.up_id];</span>
|
|
1388
|
-
<span class="cstat-no" title="statement not covered" > upload.run();</span>
|
|
1389
|
-
<span class="cstat-no" title="statement not covered" > sendprogress();</span>
|
|
1390
|
-
<span class="cstat-no" title="statement not covered" > if (typeof document !== "undefined") {</span>
|
|
1391
|
-
<span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >fu</span>nction () {</span>
|
|
1392
|
-
var evt = <span class="cstat-no" title="statement not covered" >new CustomEvent("upload:failed", {</span>
|
|
1393
|
-
detail: {
|
|
1394
|
-
item: up,
|
|
1395
|
-
res: data
|
|
1396
|
-
}
|
|
1397
|
-
});
|
|
1398
|
-
<span class="cstat-no" title="statement not covered" > document.dispatchEvent(evt);</span>
|
|
1399
|
-
}, 10);
|
|
1400
|
-
}
|
|
1401
|
-
}
|
|
1402
|
-
|
|
1403
|
-
function do_upload_part(up, partno) {
|
|
1404
|
-
// ok, need to start this!
|
|
1405
|
-
up.b[partno] = "pending";
|
|
1406
|
-
var start = partno * up.bsize;
|
|
1407
|
-
var part = up.file.slice(start, start + up.bsize);
|
|
1408
|
-
|
|
1409
|
-
var reader = new FileReader();
|
|
1410
|
-
reader.addEventListener("loadend", function () {
|
|
1411
|
-
switch(up.method) {
|
|
1412
|
-
case 'aws':
|
|
1413
|
-
awsReq(up.info, "PUT", "partNumber=" + (partno + 1) + "&uploadId=" + up.uploadId, reader.result, null, up.context)
|
|
1414
|
-
.then(function (response) {
|
|
1415
|
-
up.b[partno] = response.headers.get("ETag");
|
|
1416
|
-
sendprogress();
|
|
1417
|
-
upload.run();
|
|
1418
|
-
}).catch(<span class="fstat-no" title="function not covered" >re</span>s => <span class="cstat-no" title="statement not covered" >failure(up, res))</span>;
|
|
1419
|
-
break;
|
|
1420
|
-
case 'put':
|
|
1421
|
-
let headers = {};
|
|
1422
|
-
headers["Content-Type"] = up.file.type;
|
|
1423
|
-
if (up.blocks > 1) {
|
|
1424
|
-
// add Content-Range header
|
|
1425
|
-
// Content-Range: bytes start-end/*
|
|
1426
|
-
const end = start + reader.result.byteLength - 1; // inclusive
|
|
1427
|
-
headers["Content-Range"] = "bytes "+start+"-"+end+"/*";
|
|
1428
|
-
}
|
|
1429
|
-
|
|
1430
|
-
fetch(up.info["PUT"], {
|
|
1431
|
-
method: "PUT",
|
|
1432
|
-
body: reader.result,
|
|
1433
|
-
headers: headers,
|
|
1434
|
-
}).then(function (response) {
|
|
1435
|
-
up.b[partno] = "done";
|
|
1436
|
-
sendprogress();
|
|
1437
|
-
upload.run();
|
|
1438
|
-
}).catch(<span class="fstat-no" title="function not covered" >re</span>s => <span class="cstat-no" title="statement not covered" >failure(up, res))</span>;
|
|
1439
|
-
break;
|
|
1440
|
-
}
|
|
1441
|
-
});
|
|
1442
|
-
|
|
1443
|
-
reader.addEventListener("error", <span class="fstat-no" title="function not covered" >fu</span>nction (e) {
|
|
1444
|
-
<span class="cstat-no" title="statement not covered" > failure(up, e);</span>
|
|
1445
|
-
});
|
|
1446
|
-
|
|
1447
|
-
reader.readAsArrayBuffer(part);
|
|
1448
|
-
}
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
function do_process_uploading(up) {
|
|
1452
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (up.paused || up.canceled) <span class="cstat-no" title="statement not covered" >return;</span>
|
|
1453
|
-
|
|
1454
|
-
var p = 0; // pending
|
|
1455
|
-
var d = 0; // done
|
|
1456
|
-
for (var i = 0; i < up.blocks; i++) {
|
|
1457
|
-
if (up.b[i] == undefined) {
|
|
1458
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (up.paused) <span class="cstat-no" title="statement not covered" >break; </span>// do not start new parts if paused
|
|
1459
|
-
do_upload_part(up, i);
|
|
1460
|
-
} else if (up.b[i] != "pending") {
|
|
1461
|
-
d += 1;
|
|
1462
|
-
continue;
|
|
1463
|
-
}
|
|
1464
|
-
p += 1;
|
|
1465
|
-
if (p >= 3) break;
|
|
1466
|
-
}
|
|
1467
|
-
|
|
1468
|
-
up["done"] = d;
|
|
1469
|
-
|
|
1470
|
-
if (p == 0) {
|
|
1471
|
-
up["status"] = "validating";
|
|
1472
|
-
switch(up.method) {
|
|
1473
|
-
case 'aws':
|
|
1474
|
-
// complete, see https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html
|
|
1475
|
-
var xml = "<CompleteMultipartUpload>";
|
|
1476
|
-
for (var i = 0; i < up.blocks; i++) {
|
|
1477
|
-
xml += "<Part><PartNumber>" + (i + 1) + "</PartNumber><ETag>" + up.b[i] + "</ETag></Part>";
|
|
1478
|
-
}
|
|
1479
|
-
xml += "</CompleteMultipartUpload>";
|
|
1480
|
-
awsReq(up.info, "POST", "uploadId=" + up.uploadId, xml, null, up.context)
|
|
1481
|
-
.then(response => response.text())
|
|
1482
|
-
.then(function (r) {
|
|
1483
|
-
// if success, need to call finalize
|
|
1484
|
-
rest.rest("Cloud/Aws/Bucket/Upload/" + up.info.Cloud_Aws_Bucket_Upload__ + ":handleComplete", "POST", {}, up.context).then(function (ares) {
|
|
1485
|
-
// SUCCESS!
|
|
1486
|
-
up["status"] = "complete";
|
|
1487
|
-
up["final"] = ares["data"];
|
|
1488
|
-
sendprogress();
|
|
1489
|
-
up.resolve(up);
|
|
1490
|
-
delete upload_running[up.up_id];
|
|
1491
|
-
upload.run();
|
|
1492
|
-
}).catch(<span class="fstat-no" title="function not covered" >re</span>s => <span class="cstat-no" title="statement not covered" >failure(up, res))</span>;
|
|
1493
|
-
}).catch(<span class="fstat-no" title="function not covered" >re</span>s => <span class="cstat-no" title="statement not covered" >failure(up, res))</span>;
|
|
1494
|
-
break;
|
|
1495
|
-
case 'put':
|
|
1496
|
-
// complete, directly call handleComplete
|
|
1497
|
-
rest.rest(up.info.Complete, "POST", {}, up.context).then(function (ares) {
|
|
1498
|
-
// success!
|
|
1499
|
-
up["status"] = "complete";
|
|
1500
|
-
up["final"] = ares["data"];
|
|
1501
|
-
sendprogress();
|
|
1502
|
-
delete upload_running[up.up_id];
|
|
1503
|
-
up.resolve(up);
|
|
1504
|
-
upload.run();
|
|
1505
|
-
}).catch(<span class="fstat-no" title="function not covered" >re</span>s => <span class="cstat-no" title="statement not covered" >failure(up, res))</span>;
|
|
1506
|
-
break;
|
|
1507
|
-
}
|
|
1508
|
-
}
|
|
1509
|
-
}
|
|
1510
|
-
|
|
1511
|
-
// take tasks from queue and run them if needed
|
|
1512
|
-
function fillqueue() {
|
|
1513
|
-
if (Object.keys(upload_running).length >= 3) return; // nothing yet
|
|
1514
|
-
// if (upload_failed.length > 0) return; // need to push "retry" to resume
|
|
1515
|
-
|
|
1516
|
-
// max 3 uploading files
|
|
1517
|
-
while (Object.keys(upload_running).length < 3) {
|
|
1518
|
-
if (upload_queue.length == 0) return;
|
|
1519
|
-
var up = upload_queue.shift();
|
|
1520
|
-
upload_running[up.up_id] = up;
|
|
1521
|
-
}
|
|
1522
|
-
sendprogress();
|
|
1523
|
-
}
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
upload.getStatus = function () {
|
|
1527
|
-
var prog = {
|
|
1528
|
-
"queue": upload_queue,
|
|
1529
|
-
"running": Object.keys(upload_running).map(function (e) {
|
|
1530
|
-
return upload_running[e]
|
|
1531
|
-
}),
|
|
1532
|
-
"failed": upload_failed,
|
|
1533
|
-
};
|
|
1534
|
-
|
|
1535
|
-
return prog;
|
|
1536
|
-
};
|
|
1537
|
-
|
|
1538
|
-
upload.resume = <span class="fstat-no" title="function not covered" >fu</span>nction () {
|
|
1539
|
-
// put failed stuff at end of queue, resume upload
|
|
1540
|
-
<span class="cstat-no" title="statement not covered" > while (upload_failed.length > 0) {</span>
|
|
1541
|
-
<span class="cstat-no" title="statement not covered" > upload_queue.push(upload_failed.shift());</span>
|
|
1542
|
-
}
|
|
1543
|
-
|
|
1544
|
-
<span class="cstat-no" title="statement not covered" > upload.run();</span>
|
|
1545
|
-
};
|
|
1546
|
-
|
|
1547
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof document !== "undefined") {
|
|
1548
|
-
upload.init = <span class="fstat-no" title="function not covered" >fu</span>nction (path, params, notify) {
|
|
1549
|
-
// perform upload to a given API, for example Drive/Item/<id>:upload
|
|
1550
|
-
// will allow multiple files to be uploaded
|
|
1551
|
-
<span class="cstat-no" title="statement not covered" > params = params || {};</span>
|
|
1552
|
-
|
|
1553
|
-
<span class="cstat-no" title="statement not covered" > if (last_input != null) {</span>
|
|
1554
|
-
<span class="cstat-no" title="statement not covered" > last_input.parentNode.removeChild(last_input);</span>
|
|
1555
|
-
<span class="cstat-no" title="statement not covered" > last_input = null;</span>
|
|
1556
|
-
}
|
|
1557
|
-
|
|
1558
|
-
var input = <span class="cstat-no" title="statement not covered" >document.createElement("input");</span>
|
|
1559
|
-
<span class="cstat-no" title="statement not covered" > input.type = "file";</span>
|
|
1560
|
-
<span class="cstat-no" title="statement not covered" > input.style.display = "none";</span>
|
|
1561
|
-
<span class="cstat-no" title="statement not covered" > if (!params["single"]) {</span>
|
|
1562
|
-
<span class="cstat-no" title="statement not covered" > input.multiple = "multiple";</span>
|
|
1563
|
-
}
|
|
1564
|
-
|
|
1565
|
-
<span class="cstat-no" title="statement not covered" > document.getElementsByTagName('body')[0].appendChild(input);</span>
|
|
1566
|
-
<span class="cstat-no" title="statement not covered" > last_input = input;</span>
|
|
1567
|
-
|
|
1568
|
-
var promise = <span class="cstat-no" title="statement not covered" >new Promise(<span class="fstat-no" title="function not covered" >fu</span>nction (resolve, reject) {</span>
|
|
1569
|
-
<span class="cstat-no" title="statement not covered" > input.onchange = <span class="fstat-no" title="function not covered" >fu</span>nction () {</span>
|
|
1570
|
-
<span class="cstat-no" title="statement not covered" > if (this.files.length == 0) {</span>
|
|
1571
|
-
<span class="cstat-no" title="statement not covered" > resolve();</span>
|
|
1572
|
-
}
|
|
1573
|
-
|
|
1574
|
-
var count = <span class="cstat-no" title="statement not covered" >this.files.length;</span>
|
|
1575
|
-
<span class="cstat-no" title="statement not covered" > if (notify !== undefined) <span class="cstat-no" title="statement not covered" >notify({status: 'init', count: count});</span></span>
|
|
1576
|
-
<span class="cstat-no" title="statement not covered" > for (var i = <span class="cstat-no" title="statement not covered" >0;</span> i < this.files.length; i++) {</span>
|
|
1577
|
-
<span class="cstat-no" title="statement not covered" > upload.append(path, this.files[i], params, fwWrapper.getContext()).then(<span class="fstat-no" title="function not covered" >fu</span>nction (obj) {</span>
|
|
1578
|
-
<span class="cstat-no" title="statement not covered" > count -= 1;</span>
|
|
1579
|
-
// Todo notify process
|
|
1580
|
-
<span class="cstat-no" title="statement not covered" > if (notify !== undefined) <span class="cstat-no" title="statement not covered" >notify(obj);</span></span>
|
|
1581
|
-
<span class="cstat-no" title="statement not covered" > if (count == 0) <span class="cstat-no" title="statement not covered" >resolve();</span></span>
|
|
1582
|
-
});
|
|
1583
|
-
}
|
|
1584
|
-
<span class="cstat-no" title="statement not covered" > upload.run();</span>
|
|
1585
|
-
};
|
|
1586
|
-
});
|
|
1587
|
-
|
|
1588
|
-
<span class="cstat-no" title="statement not covered" > input.click();</span>
|
|
1589
|
-
<span class="cstat-no" title="statement not covered" > return promise;</span>
|
|
1590
|
-
};
|
|
1591
|
-
}
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
upload.append = function (path, file, params, context) {
|
|
1595
|
-
var promise = new Promise(function (resolve, reject) {
|
|
1596
|
-
params = params || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
|
|
1597
|
-
context = context || fwWrapper.getContext(); // refer to https://git.atonline.com/templates/atonline_drive_2018/issues/58
|
|
1598
|
-
|
|
1599
|
-
var ctx = {...{}, ...context};
|
|
1600
|
-
upload_queue.push({
|
|
1601
|
-
path: path,
|
|
1602
|
-
file: file,
|
|
1603
|
-
resolve: resolve,
|
|
1604
|
-
reject: reject,
|
|
1605
|
-
"status": "pending",
|
|
1606
|
-
paused: false,
|
|
1607
|
-
up_id: up_id++,
|
|
1608
|
-
params: params,
|
|
1609
|
-
context: ctx
|
|
1610
|
-
});
|
|
1611
|
-
});
|
|
1612
|
-
|
|
1613
|
-
return promise;
|
|
1614
|
-
};
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
upload.cancelItem = function (up_id) {
|
|
1618
|
-
var itemKey = -1;
|
|
1619
|
-
for (var i in upload_running) {
|
|
1620
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (upload_running[i].up_id == up_id) {
|
|
1621
|
-
<span class="cstat-no" title="statement not covered" > itemKey = i;</span>
|
|
1622
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1623
|
-
}
|
|
1624
|
-
}
|
|
1625
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (itemKey >= 0) {
|
|
1626
|
-
<span class="cstat-no" title="statement not covered" > upload_running[itemKey].canceled = true;</span>
|
|
1627
|
-
} else { // /!\ we should be able to cancel the upload of an item even if it's pending, so we're going to look at the queued items
|
|
1628
|
-
for (var i = 0; i < upload_queue.length; i++) {
|
|
1629
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (upload_queue[i].up_id == up_id) {
|
|
1630
|
-
upload_queue[i].canceled = true;
|
|
1631
|
-
break;
|
|
1632
|
-
}
|
|
1633
|
-
}
|
|
1634
|
-
}
|
|
1635
|
-
sendprogress();
|
|
1636
|
-
};
|
|
1637
|
-
|
|
1638
|
-
// removes the canceled item of given ID from the queue or running list.
|
|
1639
|
-
upload.deleteItem = <span class="fstat-no" title="function not covered" >fu</span>nction (up_id) {
|
|
1640
|
-
var itemKey = <span class="cstat-no" title="statement not covered" >-1;</span>
|
|
1641
|
-
<span class="cstat-no" title="statement not covered" > for (var i in upload_running) {</span>
|
|
1642
|
-
<span class="cstat-no" title="statement not covered" > if (upload_running[i].up_id == up_id) {</span>
|
|
1643
|
-
<span class="cstat-no" title="statement not covered" > itemKey = i;</span>
|
|
1644
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1645
|
-
}
|
|
1646
|
-
}
|
|
1647
|
-
<span class="cstat-no" title="statement not covered" > if (itemKey >= 0) {</span>
|
|
1648
|
-
<span class="cstat-no" title="statement not covered" > if (upload_running[itemKey].canceled)</span>
|
|
1649
|
-
<span class="cstat-no" title="statement not covered" > delete upload_running[itemKey];</span>
|
|
1650
|
-
} else { // /!\ we should be able to cancel the upload of an item even if it's pending, so we're going to look at the queued items
|
|
1651
|
-
<span class="cstat-no" title="statement not covered" > for (var i = <span class="cstat-no" title="statement not covered" >0;</span> i < upload_queue.length; i++) {</span>
|
|
1652
|
-
<span class="cstat-no" title="statement not covered" > if (upload_queue[i].up_id == up_id) {</span>
|
|
1653
|
-
<span class="cstat-no" title="statement not covered" > upload_queue.splice(i, 1);</span>
|
|
1654
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1655
|
-
}
|
|
1656
|
-
}
|
|
1657
|
-
|
|
1658
|
-
<span class="cstat-no" title="statement not covered" > for (var i = <span class="cstat-no" title="statement not covered" >0;</span> i < upload_failed.length; i++) {</span>
|
|
1659
|
-
<span class="cstat-no" title="statement not covered" > if (upload_failed[i].up_id == up_id) {</span>
|
|
1660
|
-
<span class="cstat-no" title="statement not covered" > upload_failed.splice(i, 1);</span>
|
|
1661
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1662
|
-
}
|
|
1663
|
-
}
|
|
1664
|
-
}
|
|
1665
|
-
<span class="cstat-no" title="statement not covered" > sendprogress();</span>
|
|
1666
|
-
};
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
// changes the status of the item of given ID to "pause" so it stops triggering "do_process_uploading"
|
|
1670
|
-
upload.pauseItem = function (up_id) {
|
|
1671
|
-
var itemKey = -1;
|
|
1672
|
-
for (var i in upload_running) {
|
|
1673
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (upload_running[i].up_id == up_id) {
|
|
1674
|
-
itemKey = i;
|
|
1675
|
-
break;
|
|
1676
|
-
}
|
|
1677
|
-
}
|
|
1678
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (itemKey >= 0 && upload_running[itemKey].status == "uploading") // if the item we're willing to pause exists in the running list and is currently uploading
|
|
1679
|
-
upload_running[itemKey].paused = true;
|
|
1680
|
-
|
|
1681
|
-
sendprogress();
|
|
1682
|
-
};
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
// changes the status of the item of given ID to "uploading" and triggers "do_process_uploading" on it
|
|
1686
|
-
upload.resumeItem = function (up_id) {
|
|
1687
|
-
var itemKey = -1;
|
|
1688
|
-
for (var i in upload_running) {
|
|
1689
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (upload_running[i].up_id == up_id) {
|
|
1690
|
-
itemKey = i;
|
|
1691
|
-
break;
|
|
1692
|
-
}
|
|
1693
|
-
}
|
|
1694
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (itemKey >= 0 && upload_running[itemKey].paused) { // if the item we're willing to resume exists in the running list and is currently paused
|
|
1695
|
-
upload_running[itemKey].paused = false;
|
|
1696
|
-
do_process_uploading(upload_running[itemKey]);
|
|
1697
|
-
}
|
|
1698
|
-
sendprogress();
|
|
1699
|
-
};
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
upload.retryItem = function (up_id) {
|
|
1703
|
-
var itemKey = -1;
|
|
1704
|
-
var up = undefined;
|
|
1705
|
-
for (var i in upload_failed) {
|
|
1706
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (upload_failed[i].up_id == up_id) {
|
|
1707
|
-
itemKey = i;
|
|
1708
|
-
up = upload_failed[i];
|
|
1709
|
-
break;
|
|
1710
|
-
}
|
|
1711
|
-
}
|
|
1712
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (itemKey >= 0) {
|
|
1713
|
-
up.failure = {};
|
|
1714
|
-
for (var i = 0, len = upload_queue.length; i < len; i++) {
|
|
1715
|
-
<span class="cstat-no" title="statement not covered" > if (upload_queue[i].up_id === up.up_id) {</span>
|
|
1716
|
-
//already in queue what ?
|
|
1717
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1718
|
-
}
|
|
1719
|
-
}
|
|
1720
|
-
|
|
1721
|
-
//reset pending partNumbers
|
|
1722
|
-
for (var i = 0; i < up.blocks; i++) {
|
|
1723
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (up.b[i] == "pending") {
|
|
1724
|
-
up.b[i] = undefined
|
|
1725
|
-
}
|
|
1726
|
-
}
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
upload_failed.splice(itemKey, 1);
|
|
1730
|
-
upload_queue.push(up);
|
|
1731
|
-
|
|
1732
|
-
upload.run();
|
|
1733
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof document !== "undefined") {
|
|
1734
|
-
setTimeout(<span class="fstat-no" title="function not covered" >fu</span>nction () {
|
|
1735
|
-
var evt = <span class="cstat-no" title="statement not covered" >new CustomEvent("upload:retry", {</span>
|
|
1736
|
-
detail: {
|
|
1737
|
-
item: up,
|
|
1738
|
-
}
|
|
1739
|
-
});
|
|
1740
|
-
<span class="cstat-no" title="statement not covered" > document.dispatchEvent(evt);</span>
|
|
1741
|
-
}, 10);
|
|
1742
|
-
}
|
|
1743
|
-
}
|
|
1744
|
-
sendprogress();
|
|
1745
|
-
};
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
// perform an upload following a response to upload a file from an API.
|
|
1749
|
-
//
|
|
1750
|
-
// TODO: if file is small enough, we can skip the multipart upload and just perform a straight PUT (will fail over 5GB, but we probably want a smaller cutoff, like 32MB or less)
|
|
1751
|
-
upload.run = function () {
|
|
1752
|
-
fillqueue();
|
|
1753
|
-
|
|
1754
|
-
// check for elements in "q", start uploads we can start
|
|
1755
|
-
for (var up_id in upload_running) {
|
|
1756
|
-
var up = upload_running[up_id];
|
|
1757
|
-
switch (up['status']) {
|
|
1758
|
-
case "pending":
|
|
1759
|
-
do_process_pending(up);
|
|
1760
|
-
break;
|
|
1761
|
-
case "uploading":
|
|
1762
|
-
do_process_uploading(up);
|
|
1763
|
-
break;
|
|
1764
|
-
}
|
|
1765
|
-
}
|
|
1766
|
-
};
|
|
1767
|
-
|
|
1768
|
-
return upload;
|
|
1769
|
-
}());
|
|
1770
|
-
</pre></td></tr></table></pre>
|
|
1771
|
-
|
|
1772
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1773
|
-
</div><!-- /wrapper -->
|
|
1774
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1775
|
-
Code coverage generated by
|
|
1776
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1777
|
-
at 2025-03-15T23:47:56.004Z
|
|
1778
|
-
</div>
|
|
1779
|
-
<script src="prettify.js"></script>
|
|
1780
|
-
<script>
|
|
1781
|
-
window.onload = function () {
|
|
1782
|
-
prettyPrint();
|
|
1783
|
-
};
|
|
1784
|
-
</script>
|
|
1785
|
-
<script src="sorter.js"></script>
|
|
1786
|
-
<script src="block-navigation.js"></script>
|
|
1787
|
-
</body>
|
|
1788
|
-
</html>
|
|
1789
|
-
|