react-voodoo 2.7.1 → 2.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/package.json +1 -1
  2. package/.claude/scheduled_tasks.lock +0 -1
  3. package/coverage/clover.xml +0 -2221
  4. package/coverage/coverage-final.json +0 -35
  5. package/coverage/lcov-report/base.css +0 -224
  6. package/coverage/lcov-report/block-navigation.js +0 -87
  7. package/coverage/lcov-report/comps/Axis.js.html +0 -391
  8. package/coverage/lcov-report/comps/Draggable.js.html +0 -1180
  9. package/coverage/lcov-report/comps/Node.js.html +0 -691
  10. package/coverage/lcov-report/comps/Tweener.js.html +0 -3637
  11. package/coverage/lcov-report/comps/TweenerContext.js.html +0 -127
  12. package/coverage/lcov-report/comps/index.html +0 -176
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/hooks/index.html +0 -146
  15. package/coverage/lcov-report/hooks/useReducedMotion.js.html +0 -172
  16. package/coverage/lcov-report/hooks/useTweener.js.html +0 -130
  17. package/coverage/lcov-report/hooks/useVoodoo.js.html +0 -553
  18. package/coverage/lcov-report/index.html +0 -206
  19. package/coverage/lcov-report/prettify.css +0 -1
  20. package/coverage/lcov-report/prettify.js +0 -2
  21. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  22. package/coverage/lcov-report/sorter.js +0 -210
  23. package/coverage/lcov-report/spells/asTweener.js.html +0 -361
  24. package/coverage/lcov-report/spells/index.html +0 -131
  25. package/coverage/lcov-report/spells/withTweener.js.html +0 -262
  26. package/coverage/lcov-report/utils/CssTweenAxis.js.html +0 -721
  27. package/coverage/lcov-report/utils/css/cssUtils.js.html +0 -916
  28. package/coverage/lcov-report/utils/css/demux/backgroundColor.js.html +0 -115
  29. package/coverage/lcov-report/utils/css/demux/boxShadow.js.html +0 -115
  30. package/coverage/lcov-report/utils/css/demux/filter.js.html +0 -724
  31. package/coverage/lcov-report/utils/css/demux/index.html +0 -176
  32. package/coverage/lcov-report/utils/css/demux/textShadow.js.html +0 -115
  33. package/coverage/lcov-report/utils/css/demux/transform.js.html +0 -1006
  34. package/coverage/lcov-report/utils/css/demux/typed/any.js.html +0 -640
  35. package/coverage/lcov-report/utils/css/demux/typed/bool.js.html +0 -196
  36. package/coverage/lcov-report/utils/css/demux/typed/color.js.html +0 -322
  37. package/coverage/lcov-report/utils/css/demux/typed/index.html +0 -236
  38. package/coverage/lcov-report/utils/css/demux/typed/length.js.html +0 -562
  39. package/coverage/lcov-report/utils/css/demux/typed/multi.js.html +0 -298
  40. package/coverage/lcov-report/utils/css/demux/typed/number.js.html +0 -199
  41. package/coverage/lcov-report/utils/css/demux/typed/ratio.js.html +0 -199
  42. package/coverage/lcov-report/utils/css/demux/typed/shadow.js.html +0 -1060
  43. package/coverage/lcov-report/utils/css/demux/typed/svgAttr.js.html +0 -214
  44. package/coverage/lcov-report/utils/css/index.html +0 -146
  45. package/coverage/lcov-report/utils/css/index.js.html +0 -829
  46. package/coverage/lcov-report/utils/css/prop.js.html +0 -199
  47. package/coverage/lcov-report/utils/dom.js.html +0 -1309
  48. package/coverage/lcov-report/utils/index.html +0 -206
  49. package/coverage/lcov-report/utils/inertia.js.html +0 -2140
  50. package/coverage/lcov-report/utils/motionPrefs.js.html +0 -262
  51. package/coverage/lcov-report/utils/react.js.html +0 -199
  52. package/coverage/lcov-report/utils/spring.js.html +0 -397
  53. package/coverage/lcov-report/utils/tweenTools.js.html +0 -1003
  54. package/coverage/lcov.info +0 -4931
@@ -1,3637 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for comps/Tweener.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> / <a href="index.html">comps</a> Tweener.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">21.28% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>93/437</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">17.03% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>62/364</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">16.27% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>14/86</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">21.05% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>88/418</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 low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
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>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a>
642
- <a name='L577'></a><a href='#L577'>577</a>
643
- <a name='L578'></a><a href='#L578'>578</a>
644
- <a name='L579'></a><a href='#L579'>579</a>
645
- <a name='L580'></a><a href='#L580'>580</a>
646
- <a name='L581'></a><a href='#L581'>581</a>
647
- <a name='L582'></a><a href='#L582'>582</a>
648
- <a name='L583'></a><a href='#L583'>583</a>
649
- <a name='L584'></a><a href='#L584'>584</a>
650
- <a name='L585'></a><a href='#L585'>585</a>
651
- <a name='L586'></a><a href='#L586'>586</a>
652
- <a name='L587'></a><a href='#L587'>587</a>
653
- <a name='L588'></a><a href='#L588'>588</a>
654
- <a name='L589'></a><a href='#L589'>589</a>
655
- <a name='L590'></a><a href='#L590'>590</a>
656
- <a name='L591'></a><a href='#L591'>591</a>
657
- <a name='L592'></a><a href='#L592'>592</a>
658
- <a name='L593'></a><a href='#L593'>593</a>
659
- <a name='L594'></a><a href='#L594'>594</a>
660
- <a name='L595'></a><a href='#L595'>595</a>
661
- <a name='L596'></a><a href='#L596'>596</a>
662
- <a name='L597'></a><a href='#L597'>597</a>
663
- <a name='L598'></a><a href='#L598'>598</a>
664
- <a name='L599'></a><a href='#L599'>599</a>
665
- <a name='L600'></a><a href='#L600'>600</a>
666
- <a name='L601'></a><a href='#L601'>601</a>
667
- <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a>
669
- <a name='L604'></a><a href='#L604'>604</a>
670
- <a name='L605'></a><a href='#L605'>605</a>
671
- <a name='L606'></a><a href='#L606'>606</a>
672
- <a name='L607'></a><a href='#L607'>607</a>
673
- <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a>
718
- <a name='L653'></a><a href='#L653'>653</a>
719
- <a name='L654'></a><a href='#L654'>654</a>
720
- <a name='L655'></a><a href='#L655'>655</a>
721
- <a name='L656'></a><a href='#L656'>656</a>
722
- <a name='L657'></a><a href='#L657'>657</a>
723
- <a name='L658'></a><a href='#L658'>658</a>
724
- <a name='L659'></a><a href='#L659'>659</a>
725
- <a name='L660'></a><a href='#L660'>660</a>
726
- <a name='L661'></a><a href='#L661'>661</a>
727
- <a name='L662'></a><a href='#L662'>662</a>
728
- <a name='L663'></a><a href='#L663'>663</a>
729
- <a name='L664'></a><a href='#L664'>664</a>
730
- <a name='L665'></a><a href='#L665'>665</a>
731
- <a name='L666'></a><a href='#L666'>666</a>
732
- <a name='L667'></a><a href='#L667'>667</a>
733
- <a name='L668'></a><a href='#L668'>668</a>
734
- <a name='L669'></a><a href='#L669'>669</a>
735
- <a name='L670'></a><a href='#L670'>670</a>
736
- <a name='L671'></a><a href='#L671'>671</a>
737
- <a name='L672'></a><a href='#L672'>672</a>
738
- <a name='L673'></a><a href='#L673'>673</a>
739
- <a name='L674'></a><a href='#L674'>674</a>
740
- <a name='L675'></a><a href='#L675'>675</a>
741
- <a name='L676'></a><a href='#L676'>676</a>
742
- <a name='L677'></a><a href='#L677'>677</a>
743
- <a name='L678'></a><a href='#L678'>678</a>
744
- <a name='L679'></a><a href='#L679'>679</a>
745
- <a name='L680'></a><a href='#L680'>680</a>
746
- <a name='L681'></a><a href='#L681'>681</a>
747
- <a name='L682'></a><a href='#L682'>682</a>
748
- <a name='L683'></a><a href='#L683'>683</a>
749
- <a name='L684'></a><a href='#L684'>684</a>
750
- <a name='L685'></a><a href='#L685'>685</a>
751
- <a name='L686'></a><a href='#L686'>686</a>
752
- <a name='L687'></a><a href='#L687'>687</a>
753
- <a name='L688'></a><a href='#L688'>688</a>
754
- <a name='L689'></a><a href='#L689'>689</a>
755
- <a name='L690'></a><a href='#L690'>690</a>
756
- <a name='L691'></a><a href='#L691'>691</a>
757
- <a name='L692'></a><a href='#L692'>692</a>
758
- <a name='L693'></a><a href='#L693'>693</a>
759
- <a name='L694'></a><a href='#L694'>694</a>
760
- <a name='L695'></a><a href='#L695'>695</a>
761
- <a name='L696'></a><a href='#L696'>696</a>
762
- <a name='L697'></a><a href='#L697'>697</a>
763
- <a name='L698'></a><a href='#L698'>698</a>
764
- <a name='L699'></a><a href='#L699'>699</a>
765
- <a name='L700'></a><a href='#L700'>700</a>
766
- <a name='L701'></a><a href='#L701'>701</a>
767
- <a name='L702'></a><a href='#L702'>702</a>
768
- <a name='L703'></a><a href='#L703'>703</a>
769
- <a name='L704'></a><a href='#L704'>704</a>
770
- <a name='L705'></a><a href='#L705'>705</a>
771
- <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a>
779
- <a name='L714'></a><a href='#L714'>714</a>
780
- <a name='L715'></a><a href='#L715'>715</a>
781
- <a name='L716'></a><a href='#L716'>716</a>
782
- <a name='L717'></a><a href='#L717'>717</a>
783
- <a name='L718'></a><a href='#L718'>718</a>
784
- <a name='L719'></a><a href='#L719'>719</a>
785
- <a name='L720'></a><a href='#L720'>720</a>
786
- <a name='L721'></a><a href='#L721'>721</a>
787
- <a name='L722'></a><a href='#L722'>722</a>
788
- <a name='L723'></a><a href='#L723'>723</a>
789
- <a name='L724'></a><a href='#L724'>724</a>
790
- <a name='L725'></a><a href='#L725'>725</a>
791
- <a name='L726'></a><a href='#L726'>726</a>
792
- <a name='L727'></a><a href='#L727'>727</a>
793
- <a name='L728'></a><a href='#L728'>728</a>
794
- <a name='L729'></a><a href='#L729'>729</a>
795
- <a name='L730'></a><a href='#L730'>730</a>
796
- <a name='L731'></a><a href='#L731'>731</a>
797
- <a name='L732'></a><a href='#L732'>732</a>
798
- <a name='L733'></a><a href='#L733'>733</a>
799
- <a name='L734'></a><a href='#L734'>734</a>
800
- <a name='L735'></a><a href='#L735'>735</a>
801
- <a name='L736'></a><a href='#L736'>736</a>
802
- <a name='L737'></a><a href='#L737'>737</a>
803
- <a name='L738'></a><a href='#L738'>738</a>
804
- <a name='L739'></a><a href='#L739'>739</a>
805
- <a name='L740'></a><a href='#L740'>740</a>
806
- <a name='L741'></a><a href='#L741'>741</a>
807
- <a name='L742'></a><a href='#L742'>742</a>
808
- <a name='L743'></a><a href='#L743'>743</a>
809
- <a name='L744'></a><a href='#L744'>744</a>
810
- <a name='L745'></a><a href='#L745'>745</a>
811
- <a name='L746'></a><a href='#L746'>746</a>
812
- <a name='L747'></a><a href='#L747'>747</a>
813
- <a name='L748'></a><a href='#L748'>748</a>
814
- <a name='L749'></a><a href='#L749'>749</a>
815
- <a name='L750'></a><a href='#L750'>750</a>
816
- <a name='L751'></a><a href='#L751'>751</a>
817
- <a name='L752'></a><a href='#L752'>752</a>
818
- <a name='L753'></a><a href='#L753'>753</a>
819
- <a name='L754'></a><a href='#L754'>754</a>
820
- <a name='L755'></a><a href='#L755'>755</a>
821
- <a name='L756'></a><a href='#L756'>756</a>
822
- <a name='L757'></a><a href='#L757'>757</a>
823
- <a name='L758'></a><a href='#L758'>758</a>
824
- <a name='L759'></a><a href='#L759'>759</a>
825
- <a name='L760'></a><a href='#L760'>760</a>
826
- <a name='L761'></a><a href='#L761'>761</a>
827
- <a name='L762'></a><a href='#L762'>762</a>
828
- <a name='L763'></a><a href='#L763'>763</a>
829
- <a name='L764'></a><a href='#L764'>764</a>
830
- <a name='L765'></a><a href='#L765'>765</a>
831
- <a name='L766'></a><a href='#L766'>766</a>
832
- <a name='L767'></a><a href='#L767'>767</a>
833
- <a name='L768'></a><a href='#L768'>768</a>
834
- <a name='L769'></a><a href='#L769'>769</a>
835
- <a name='L770'></a><a href='#L770'>770</a>
836
- <a name='L771'></a><a href='#L771'>771</a>
837
- <a name='L772'></a><a href='#L772'>772</a>
838
- <a name='L773'></a><a href='#L773'>773</a>
839
- <a name='L774'></a><a href='#L774'>774</a>
840
- <a name='L775'></a><a href='#L775'>775</a>
841
- <a name='L776'></a><a href='#L776'>776</a>
842
- <a name='L777'></a><a href='#L777'>777</a>
843
- <a name='L778'></a><a href='#L778'>778</a>
844
- <a name='L779'></a><a href='#L779'>779</a>
845
- <a name='L780'></a><a href='#L780'>780</a>
846
- <a name='L781'></a><a href='#L781'>781</a>
847
- <a name='L782'></a><a href='#L782'>782</a>
848
- <a name='L783'></a><a href='#L783'>783</a>
849
- <a name='L784'></a><a href='#L784'>784</a>
850
- <a name='L785'></a><a href='#L785'>785</a>
851
- <a name='L786'></a><a href='#L786'>786</a>
852
- <a name='L787'></a><a href='#L787'>787</a>
853
- <a name='L788'></a><a href='#L788'>788</a>
854
- <a name='L789'></a><a href='#L789'>789</a>
855
- <a name='L790'></a><a href='#L790'>790</a>
856
- <a name='L791'></a><a href='#L791'>791</a>
857
- <a name='L792'></a><a href='#L792'>792</a>
858
- <a name='L793'></a><a href='#L793'>793</a>
859
- <a name='L794'></a><a href='#L794'>794</a>
860
- <a name='L795'></a><a href='#L795'>795</a>
861
- <a name='L796'></a><a href='#L796'>796</a>
862
- <a name='L797'></a><a href='#L797'>797</a>
863
- <a name='L798'></a><a href='#L798'>798</a>
864
- <a name='L799'></a><a href='#L799'>799</a>
865
- <a name='L800'></a><a href='#L800'>800</a>
866
- <a name='L801'></a><a href='#L801'>801</a>
867
- <a name='L802'></a><a href='#L802'>802</a>
868
- <a name='L803'></a><a href='#L803'>803</a>
869
- <a name='L804'></a><a href='#L804'>804</a>
870
- <a name='L805'></a><a href='#L805'>805</a>
871
- <a name='L806'></a><a href='#L806'>806</a>
872
- <a name='L807'></a><a href='#L807'>807</a>
873
- <a name='L808'></a><a href='#L808'>808</a>
874
- <a name='L809'></a><a href='#L809'>809</a>
875
- <a name='L810'></a><a href='#L810'>810</a>
876
- <a name='L811'></a><a href='#L811'>811</a>
877
- <a name='L812'></a><a href='#L812'>812</a>
878
- <a name='L813'></a><a href='#L813'>813</a>
879
- <a name='L814'></a><a href='#L814'>814</a>
880
- <a name='L815'></a><a href='#L815'>815</a>
881
- <a name='L816'></a><a href='#L816'>816</a>
882
- <a name='L817'></a><a href='#L817'>817</a>
883
- <a name='L818'></a><a href='#L818'>818</a>
884
- <a name='L819'></a><a href='#L819'>819</a>
885
- <a name='L820'></a><a href='#L820'>820</a>
886
- <a name='L821'></a><a href='#L821'>821</a>
887
- <a name='L822'></a><a href='#L822'>822</a>
888
- <a name='L823'></a><a href='#L823'>823</a>
889
- <a name='L824'></a><a href='#L824'>824</a>
890
- <a name='L825'></a><a href='#L825'>825</a>
891
- <a name='L826'></a><a href='#L826'>826</a>
892
- <a name='L827'></a><a href='#L827'>827</a>
893
- <a name='L828'></a><a href='#L828'>828</a>
894
- <a name='L829'></a><a href='#L829'>829</a>
895
- <a name='L830'></a><a href='#L830'>830</a>
896
- <a name='L831'></a><a href='#L831'>831</a>
897
- <a name='L832'></a><a href='#L832'>832</a>
898
- <a name='L833'></a><a href='#L833'>833</a>
899
- <a name='L834'></a><a href='#L834'>834</a>
900
- <a name='L835'></a><a href='#L835'>835</a>
901
- <a name='L836'></a><a href='#L836'>836</a>
902
- <a name='L837'></a><a href='#L837'>837</a>
903
- <a name='L838'></a><a href='#L838'>838</a>
904
- <a name='L839'></a><a href='#L839'>839</a>
905
- <a name='L840'></a><a href='#L840'>840</a>
906
- <a name='L841'></a><a href='#L841'>841</a>
907
- <a name='L842'></a><a href='#L842'>842</a>
908
- <a name='L843'></a><a href='#L843'>843</a>
909
- <a name='L844'></a><a href='#L844'>844</a>
910
- <a name='L845'></a><a href='#L845'>845</a>
911
- <a name='L846'></a><a href='#L846'>846</a>
912
- <a name='L847'></a><a href='#L847'>847</a>
913
- <a name='L848'></a><a href='#L848'>848</a>
914
- <a name='L849'></a><a href='#L849'>849</a>
915
- <a name='L850'></a><a href='#L850'>850</a>
916
- <a name='L851'></a><a href='#L851'>851</a>
917
- <a name='L852'></a><a href='#L852'>852</a>
918
- <a name='L853'></a><a href='#L853'>853</a>
919
- <a name='L854'></a><a href='#L854'>854</a>
920
- <a name='L855'></a><a href='#L855'>855</a>
921
- <a name='L856'></a><a href='#L856'>856</a>
922
- <a name='L857'></a><a href='#L857'>857</a>
923
- <a name='L858'></a><a href='#L858'>858</a>
924
- <a name='L859'></a><a href='#L859'>859</a>
925
- <a name='L860'></a><a href='#L860'>860</a>
926
- <a name='L861'></a><a href='#L861'>861</a>
927
- <a name='L862'></a><a href='#L862'>862</a>
928
- <a name='L863'></a><a href='#L863'>863</a>
929
- <a name='L864'></a><a href='#L864'>864</a>
930
- <a name='L865'></a><a href='#L865'>865</a>
931
- <a name='L866'></a><a href='#L866'>866</a>
932
- <a name='L867'></a><a href='#L867'>867</a>
933
- <a name='L868'></a><a href='#L868'>868</a>
934
- <a name='L869'></a><a href='#L869'>869</a>
935
- <a name='L870'></a><a href='#L870'>870</a>
936
- <a name='L871'></a><a href='#L871'>871</a>
937
- <a name='L872'></a><a href='#L872'>872</a>
938
- <a name='L873'></a><a href='#L873'>873</a>
939
- <a name='L874'></a><a href='#L874'>874</a>
940
- <a name='L875'></a><a href='#L875'>875</a>
941
- <a name='L876'></a><a href='#L876'>876</a>
942
- <a name='L877'></a><a href='#L877'>877</a>
943
- <a name='L878'></a><a href='#L878'>878</a>
944
- <a name='L879'></a><a href='#L879'>879</a>
945
- <a name='L880'></a><a href='#L880'>880</a>
946
- <a name='L881'></a><a href='#L881'>881</a>
947
- <a name='L882'></a><a href='#L882'>882</a>
948
- <a name='L883'></a><a href='#L883'>883</a>
949
- <a name='L884'></a><a href='#L884'>884</a>
950
- <a name='L885'></a><a href='#L885'>885</a>
951
- <a name='L886'></a><a href='#L886'>886</a>
952
- <a name='L887'></a><a href='#L887'>887</a>
953
- <a name='L888'></a><a href='#L888'>888</a>
954
- <a name='L889'></a><a href='#L889'>889</a>
955
- <a name='L890'></a><a href='#L890'>890</a>
956
- <a name='L891'></a><a href='#L891'>891</a>
957
- <a name='L892'></a><a href='#L892'>892</a>
958
- <a name='L893'></a><a href='#L893'>893</a>
959
- <a name='L894'></a><a href='#L894'>894</a>
960
- <a name='L895'></a><a href='#L895'>895</a>
961
- <a name='L896'></a><a href='#L896'>896</a>
962
- <a name='L897'></a><a href='#L897'>897</a>
963
- <a name='L898'></a><a href='#L898'>898</a>
964
- <a name='L899'></a><a href='#L899'>899</a>
965
- <a name='L900'></a><a href='#L900'>900</a>
966
- <a name='L901'></a><a href='#L901'>901</a>
967
- <a name='L902'></a><a href='#L902'>902</a>
968
- <a name='L903'></a><a href='#L903'>903</a>
969
- <a name='L904'></a><a href='#L904'>904</a>
970
- <a name='L905'></a><a href='#L905'>905</a>
971
- <a name='L906'></a><a href='#L906'>906</a>
972
- <a name='L907'></a><a href='#L907'>907</a>
973
- <a name='L908'></a><a href='#L908'>908</a>
974
- <a name='L909'></a><a href='#L909'>909</a>
975
- <a name='L910'></a><a href='#L910'>910</a>
976
- <a name='L911'></a><a href='#L911'>911</a>
977
- <a name='L912'></a><a href='#L912'>912</a>
978
- <a name='L913'></a><a href='#L913'>913</a>
979
- <a name='L914'></a><a href='#L914'>914</a>
980
- <a name='L915'></a><a href='#L915'>915</a>
981
- <a name='L916'></a><a href='#L916'>916</a>
982
- <a name='L917'></a><a href='#L917'>917</a>
983
- <a name='L918'></a><a href='#L918'>918</a>
984
- <a name='L919'></a><a href='#L919'>919</a>
985
- <a name='L920'></a><a href='#L920'>920</a>
986
- <a name='L921'></a><a href='#L921'>921</a>
987
- <a name='L922'></a><a href='#L922'>922</a>
988
- <a name='L923'></a><a href='#L923'>923</a>
989
- <a name='L924'></a><a href='#L924'>924</a>
990
- <a name='L925'></a><a href='#L925'>925</a>
991
- <a name='L926'></a><a href='#L926'>926</a>
992
- <a name='L927'></a><a href='#L927'>927</a>
993
- <a name='L928'></a><a href='#L928'>928</a>
994
- <a name='L929'></a><a href='#L929'>929</a>
995
- <a name='L930'></a><a href='#L930'>930</a>
996
- <a name='L931'></a><a href='#L931'>931</a>
997
- <a name='L932'></a><a href='#L932'>932</a>
998
- <a name='L933'></a><a href='#L933'>933</a>
999
- <a name='L934'></a><a href='#L934'>934</a>
1000
- <a name='L935'></a><a href='#L935'>935</a>
1001
- <a name='L936'></a><a href='#L936'>936</a>
1002
- <a name='L937'></a><a href='#L937'>937</a>
1003
- <a name='L938'></a><a href='#L938'>938</a>
1004
- <a name='L939'></a><a href='#L939'>939</a>
1005
- <a name='L940'></a><a href='#L940'>940</a>
1006
- <a name='L941'></a><a href='#L941'>941</a>
1007
- <a name='L942'></a><a href='#L942'>942</a>
1008
- <a name='L943'></a><a href='#L943'>943</a>
1009
- <a name='L944'></a><a href='#L944'>944</a>
1010
- <a name='L945'></a><a href='#L945'>945</a>
1011
- <a name='L946'></a><a href='#L946'>946</a>
1012
- <a name='L947'></a><a href='#L947'>947</a>
1013
- <a name='L948'></a><a href='#L948'>948</a>
1014
- <a name='L949'></a><a href='#L949'>949</a>
1015
- <a name='L950'></a><a href='#L950'>950</a>
1016
- <a name='L951'></a><a href='#L951'>951</a>
1017
- <a name='L952'></a><a href='#L952'>952</a>
1018
- <a name='L953'></a><a href='#L953'>953</a>
1019
- <a name='L954'></a><a href='#L954'>954</a>
1020
- <a name='L955'></a><a href='#L955'>955</a>
1021
- <a name='L956'></a><a href='#L956'>956</a>
1022
- <a name='L957'></a><a href='#L957'>957</a>
1023
- <a name='L958'></a><a href='#L958'>958</a>
1024
- <a name='L959'></a><a href='#L959'>959</a>
1025
- <a name='L960'></a><a href='#L960'>960</a>
1026
- <a name='L961'></a><a href='#L961'>961</a>
1027
- <a name='L962'></a><a href='#L962'>962</a>
1028
- <a name='L963'></a><a href='#L963'>963</a>
1029
- <a name='L964'></a><a href='#L964'>964</a>
1030
- <a name='L965'></a><a href='#L965'>965</a>
1031
- <a name='L966'></a><a href='#L966'>966</a>
1032
- <a name='L967'></a><a href='#L967'>967</a>
1033
- <a name='L968'></a><a href='#L968'>968</a>
1034
- <a name='L969'></a><a href='#L969'>969</a>
1035
- <a name='L970'></a><a href='#L970'>970</a>
1036
- <a name='L971'></a><a href='#L971'>971</a>
1037
- <a name='L972'></a><a href='#L972'>972</a>
1038
- <a name='L973'></a><a href='#L973'>973</a>
1039
- <a name='L974'></a><a href='#L974'>974</a>
1040
- <a name='L975'></a><a href='#L975'>975</a>
1041
- <a name='L976'></a><a href='#L976'>976</a>
1042
- <a name='L977'></a><a href='#L977'>977</a>
1043
- <a name='L978'></a><a href='#L978'>978</a>
1044
- <a name='L979'></a><a href='#L979'>979</a>
1045
- <a name='L980'></a><a href='#L980'>980</a>
1046
- <a name='L981'></a><a href='#L981'>981</a>
1047
- <a name='L982'></a><a href='#L982'>982</a>
1048
- <a name='L983'></a><a href='#L983'>983</a>
1049
- <a name='L984'></a><a href='#L984'>984</a>
1050
- <a name='L985'></a><a href='#L985'>985</a>
1051
- <a name='L986'></a><a href='#L986'>986</a>
1052
- <a name='L987'></a><a href='#L987'>987</a>
1053
- <a name='L988'></a><a href='#L988'>988</a>
1054
- <a name='L989'></a><a href='#L989'>989</a>
1055
- <a name='L990'></a><a href='#L990'>990</a>
1056
- <a name='L991'></a><a href='#L991'>991</a>
1057
- <a name='L992'></a><a href='#L992'>992</a>
1058
- <a name='L993'></a><a href='#L993'>993</a>
1059
- <a name='L994'></a><a href='#L994'>994</a>
1060
- <a name='L995'></a><a href='#L995'>995</a>
1061
- <a name='L996'></a><a href='#L996'>996</a>
1062
- <a name='L997'></a><a href='#L997'>997</a>
1063
- <a name='L998'></a><a href='#L998'>998</a>
1064
- <a name='L999'></a><a href='#L999'>999</a>
1065
- <a name='L1000'></a><a href='#L1000'>1000</a>
1066
- <a name='L1001'></a><a href='#L1001'>1001</a>
1067
- <a name='L1002'></a><a href='#L1002'>1002</a>
1068
- <a name='L1003'></a><a href='#L1003'>1003</a>
1069
- <a name='L1004'></a><a href='#L1004'>1004</a>
1070
- <a name='L1005'></a><a href='#L1005'>1005</a>
1071
- <a name='L1006'></a><a href='#L1006'>1006</a>
1072
- <a name='L1007'></a><a href='#L1007'>1007</a>
1073
- <a name='L1008'></a><a href='#L1008'>1008</a>
1074
- <a name='L1009'></a><a href='#L1009'>1009</a>
1075
- <a name='L1010'></a><a href='#L1010'>1010</a>
1076
- <a name='L1011'></a><a href='#L1011'>1011</a>
1077
- <a name='L1012'></a><a href='#L1012'>1012</a>
1078
- <a name='L1013'></a><a href='#L1013'>1013</a>
1079
- <a name='L1014'></a><a href='#L1014'>1014</a>
1080
- <a name='L1015'></a><a href='#L1015'>1015</a>
1081
- <a name='L1016'></a><a href='#L1016'>1016</a>
1082
- <a name='L1017'></a><a href='#L1017'>1017</a>
1083
- <a name='L1018'></a><a href='#L1018'>1018</a>
1084
- <a name='L1019'></a><a href='#L1019'>1019</a>
1085
- <a name='L1020'></a><a href='#L1020'>1020</a>
1086
- <a name='L1021'></a><a href='#L1021'>1021</a>
1087
- <a name='L1022'></a><a href='#L1022'>1022</a>
1088
- <a name='L1023'></a><a href='#L1023'>1023</a>
1089
- <a name='L1024'></a><a href='#L1024'>1024</a>
1090
- <a name='L1025'></a><a href='#L1025'>1025</a>
1091
- <a name='L1026'></a><a href='#L1026'>1026</a>
1092
- <a name='L1027'></a><a href='#L1027'>1027</a>
1093
- <a name='L1028'></a><a href='#L1028'>1028</a>
1094
- <a name='L1029'></a><a href='#L1029'>1029</a>
1095
- <a name='L1030'></a><a href='#L1030'>1030</a>
1096
- <a name='L1031'></a><a href='#L1031'>1031</a>
1097
- <a name='L1032'></a><a href='#L1032'>1032</a>
1098
- <a name='L1033'></a><a href='#L1033'>1033</a>
1099
- <a name='L1034'></a><a href='#L1034'>1034</a>
1100
- <a name='L1035'></a><a href='#L1035'>1035</a>
1101
- <a name='L1036'></a><a href='#L1036'>1036</a>
1102
- <a name='L1037'></a><a href='#L1037'>1037</a>
1103
- <a name='L1038'></a><a href='#L1038'>1038</a>
1104
- <a name='L1039'></a><a href='#L1039'>1039</a>
1105
- <a name='L1040'></a><a href='#L1040'>1040</a>
1106
- <a name='L1041'></a><a href='#L1041'>1041</a>
1107
- <a name='L1042'></a><a href='#L1042'>1042</a>
1108
- <a name='L1043'></a><a href='#L1043'>1043</a>
1109
- <a name='L1044'></a><a href='#L1044'>1044</a>
1110
- <a name='L1045'></a><a href='#L1045'>1045</a>
1111
- <a name='L1046'></a><a href='#L1046'>1046</a>
1112
- <a name='L1047'></a><a href='#L1047'>1047</a>
1113
- <a name='L1048'></a><a href='#L1048'>1048</a>
1114
- <a name='L1049'></a><a href='#L1049'>1049</a>
1115
- <a name='L1050'></a><a href='#L1050'>1050</a>
1116
- <a name='L1051'></a><a href='#L1051'>1051</a>
1117
- <a name='L1052'></a><a href='#L1052'>1052</a>
1118
- <a name='L1053'></a><a href='#L1053'>1053</a>
1119
- <a name='L1054'></a><a href='#L1054'>1054</a>
1120
- <a name='L1055'></a><a href='#L1055'>1055</a>
1121
- <a name='L1056'></a><a href='#L1056'>1056</a>
1122
- <a name='L1057'></a><a href='#L1057'>1057</a>
1123
- <a name='L1058'></a><a href='#L1058'>1058</a>
1124
- <a name='L1059'></a><a href='#L1059'>1059</a>
1125
- <a name='L1060'></a><a href='#L1060'>1060</a>
1126
- <a name='L1061'></a><a href='#L1061'>1061</a>
1127
- <a name='L1062'></a><a href='#L1062'>1062</a>
1128
- <a name='L1063'></a><a href='#L1063'>1063</a>
1129
- <a name='L1064'></a><a href='#L1064'>1064</a>
1130
- <a name='L1065'></a><a href='#L1065'>1065</a>
1131
- <a name='L1066'></a><a href='#L1066'>1066</a>
1132
- <a name='L1067'></a><a href='#L1067'>1067</a>
1133
- <a name='L1068'></a><a href='#L1068'>1068</a>
1134
- <a name='L1069'></a><a href='#L1069'>1069</a>
1135
- <a name='L1070'></a><a href='#L1070'>1070</a>
1136
- <a name='L1071'></a><a href='#L1071'>1071</a>
1137
- <a name='L1072'></a><a href='#L1072'>1072</a>
1138
- <a name='L1073'></a><a href='#L1073'>1073</a>
1139
- <a name='L1074'></a><a href='#L1074'>1074</a>
1140
- <a name='L1075'></a><a href='#L1075'>1075</a>
1141
- <a name='L1076'></a><a href='#L1076'>1076</a>
1142
- <a name='L1077'></a><a href='#L1077'>1077</a>
1143
- <a name='L1078'></a><a href='#L1078'>1078</a>
1144
- <a name='L1079'></a><a href='#L1079'>1079</a>
1145
- <a name='L1080'></a><a href='#L1080'>1080</a>
1146
- <a name='L1081'></a><a href='#L1081'>1081</a>
1147
- <a name='L1082'></a><a href='#L1082'>1082</a>
1148
- <a name='L1083'></a><a href='#L1083'>1083</a>
1149
- <a name='L1084'></a><a href='#L1084'>1084</a>
1150
- <a name='L1085'></a><a href='#L1085'>1085</a>
1151
- <a name='L1086'></a><a href='#L1086'>1086</a>
1152
- <a name='L1087'></a><a href='#L1087'>1087</a>
1153
- <a name='L1088'></a><a href='#L1088'>1088</a>
1154
- <a name='L1089'></a><a href='#L1089'>1089</a>
1155
- <a name='L1090'></a><a href='#L1090'>1090</a>
1156
- <a name='L1091'></a><a href='#L1091'>1091</a>
1157
- <a name='L1092'></a><a href='#L1092'>1092</a>
1158
- <a name='L1093'></a><a href='#L1093'>1093</a>
1159
- <a name='L1094'></a><a href='#L1094'>1094</a>
1160
- <a name='L1095'></a><a href='#L1095'>1095</a>
1161
- <a name='L1096'></a><a href='#L1096'>1096</a>
1162
- <a name='L1097'></a><a href='#L1097'>1097</a>
1163
- <a name='L1098'></a><a href='#L1098'>1098</a>
1164
- <a name='L1099'></a><a href='#L1099'>1099</a>
1165
- <a name='L1100'></a><a href='#L1100'>1100</a>
1166
- <a name='L1101'></a><a href='#L1101'>1101</a>
1167
- <a name='L1102'></a><a href='#L1102'>1102</a>
1168
- <a name='L1103'></a><a href='#L1103'>1103</a>
1169
- <a name='L1104'></a><a href='#L1104'>1104</a>
1170
- <a name='L1105'></a><a href='#L1105'>1105</a>
1171
- <a name='L1106'></a><a href='#L1106'>1106</a>
1172
- <a name='L1107'></a><a href='#L1107'>1107</a>
1173
- <a name='L1108'></a><a href='#L1108'>1108</a>
1174
- <a name='L1109'></a><a href='#L1109'>1109</a>
1175
- <a name='L1110'></a><a href='#L1110'>1110</a>
1176
- <a name='L1111'></a><a href='#L1111'>1111</a>
1177
- <a name='L1112'></a><a href='#L1112'>1112</a>
1178
- <a name='L1113'></a><a href='#L1113'>1113</a>
1179
- <a name='L1114'></a><a href='#L1114'>1114</a>
1180
- <a name='L1115'></a><a href='#L1115'>1115</a>
1181
- <a name='L1116'></a><a href='#L1116'>1116</a>
1182
- <a name='L1117'></a><a href='#L1117'>1117</a>
1183
- <a name='L1118'></a><a href='#L1118'>1118</a>
1184
- <a name='L1119'></a><a href='#L1119'>1119</a>
1185
- <a name='L1120'></a><a href='#L1120'>1120</a>
1186
- <a name='L1121'></a><a href='#L1121'>1121</a>
1187
- <a name='L1122'></a><a href='#L1122'>1122</a>
1188
- <a name='L1123'></a><a href='#L1123'>1123</a>
1189
- <a name='L1124'></a><a href='#L1124'>1124</a>
1190
- <a name='L1125'></a><a href='#L1125'>1125</a>
1191
- <a name='L1126'></a><a href='#L1126'>1126</a>
1192
- <a name='L1127'></a><a href='#L1127'>1127</a>
1193
- <a name='L1128'></a><a href='#L1128'>1128</a>
1194
- <a name='L1129'></a><a href='#L1129'>1129</a>
1195
- <a name='L1130'></a><a href='#L1130'>1130</a>
1196
- <a name='L1131'></a><a href='#L1131'>1131</a>
1197
- <a name='L1132'></a><a href='#L1132'>1132</a>
1198
- <a name='L1133'></a><a href='#L1133'>1133</a>
1199
- <a name='L1134'></a><a href='#L1134'>1134</a>
1200
- <a name='L1135'></a><a href='#L1135'>1135</a>
1201
- <a name='L1136'></a><a href='#L1136'>1136</a>
1202
- <a name='L1137'></a><a href='#L1137'>1137</a>
1203
- <a name='L1138'></a><a href='#L1138'>1138</a>
1204
- <a name='L1139'></a><a href='#L1139'>1139</a>
1205
- <a name='L1140'></a><a href='#L1140'>1140</a>
1206
- <a name='L1141'></a><a href='#L1141'>1141</a>
1207
- <a name='L1142'></a><a href='#L1142'>1142</a>
1208
- <a name='L1143'></a><a href='#L1143'>1143</a>
1209
- <a name='L1144'></a><a href='#L1144'>1144</a>
1210
- <a name='L1145'></a><a href='#L1145'>1145</a>
1211
- <a name='L1146'></a><a href='#L1146'>1146</a>
1212
- <a name='L1147'></a><a href='#L1147'>1147</a>
1213
- <a name='L1148'></a><a href='#L1148'>1148</a>
1214
- <a name='L1149'></a><a href='#L1149'>1149</a>
1215
- <a name='L1150'></a><a href='#L1150'>1150</a>
1216
- <a name='L1151'></a><a href='#L1151'>1151</a>
1217
- <a name='L1152'></a><a href='#L1152'>1152</a>
1218
- <a name='L1153'></a><a href='#L1153'>1153</a>
1219
- <a name='L1154'></a><a href='#L1154'>1154</a>
1220
- <a name='L1155'></a><a href='#L1155'>1155</a>
1221
- <a name='L1156'></a><a href='#L1156'>1156</a>
1222
- <a name='L1157'></a><a href='#L1157'>1157</a>
1223
- <a name='L1158'></a><a href='#L1158'>1158</a>
1224
- <a name='L1159'></a><a href='#L1159'>1159</a>
1225
- <a name='L1160'></a><a href='#L1160'>1160</a>
1226
- <a name='L1161'></a><a href='#L1161'>1161</a>
1227
- <a name='L1162'></a><a href='#L1162'>1162</a>
1228
- <a name='L1163'></a><a href='#L1163'>1163</a>
1229
- <a name='L1164'></a><a href='#L1164'>1164</a>
1230
- <a name='L1165'></a><a href='#L1165'>1165</a>
1231
- <a name='L1166'></a><a href='#L1166'>1166</a>
1232
- <a name='L1167'></a><a href='#L1167'>1167</a>
1233
- <a name='L1168'></a><a href='#L1168'>1168</a>
1234
- <a name='L1169'></a><a href='#L1169'>1169</a>
1235
- <a name='L1170'></a><a href='#L1170'>1170</a>
1236
- <a name='L1171'></a><a href='#L1171'>1171</a>
1237
- <a name='L1172'></a><a href='#L1172'>1172</a>
1238
- <a name='L1173'></a><a href='#L1173'>1173</a>
1239
- <a name='L1174'></a><a href='#L1174'>1174</a>
1240
- <a name='L1175'></a><a href='#L1175'>1175</a>
1241
- <a name='L1176'></a><a href='#L1176'>1176</a>
1242
- <a name='L1177'></a><a href='#L1177'>1177</a>
1243
- <a name='L1178'></a><a href='#L1178'>1178</a>
1244
- <a name='L1179'></a><a href='#L1179'>1179</a>
1245
- <a name='L1180'></a><a href='#L1180'>1180</a>
1246
- <a name='L1181'></a><a href='#L1181'>1181</a>
1247
- <a name='L1182'></a><a href='#L1182'>1182</a>
1248
- <a name='L1183'></a><a href='#L1183'>1183</a>
1249
- <a name='L1184'></a><a href='#L1184'>1184</a>
1250
- <a name='L1185'></a><a href='#L1185'>1185</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-neutral">&nbsp;</span>
1258
- <span class="cline-any cline-neutral">&nbsp;</span>
1259
- <span class="cline-any cline-neutral">&nbsp;</span>
1260
- <span class="cline-any cline-neutral">&nbsp;</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-neutral">&nbsp;</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-neutral">&nbsp;</span>
1266
- <span class="cline-any cline-neutral">&nbsp;</span>
1267
- <span class="cline-any cline-neutral">&nbsp;</span>
1268
- <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-neutral">&nbsp;</span>
1271
- <span class="cline-any cline-neutral">&nbsp;</span>
1272
- <span class="cline-any cline-neutral">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-neutral">&nbsp;</span>
1277
- <span class="cline-any cline-neutral">&nbsp;</span>
1278
- <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-neutral">&nbsp;</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-neutral">&nbsp;</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-neutral">&nbsp;</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
- <span class="cline-any cline-neutral">&nbsp;</span>
1291
- <span class="cline-any cline-neutral">&nbsp;</span>
1292
- <span class="cline-any cline-neutral">&nbsp;</span>
1293
- <span class="cline-any cline-yes">5x</span>
1294
- <span class="cline-any cline-yes">5x</span>
1295
- <span class="cline-any cline-yes">5x</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-neutral">&nbsp;</span>
1299
- <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-neutral">&nbsp;</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-no">&nbsp;</span>
1304
- <span class="cline-any cline-no">&nbsp;</span>
1305
- <span class="cline-any cline-no">&nbsp;</span>
1306
- <span class="cline-any cline-no">&nbsp;</span>
1307
- <span class="cline-any cline-no">&nbsp;</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-neutral">&nbsp;</span>
1310
- <span class="cline-any cline-neutral">&nbsp;</span>
1311
- <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-neutral">&nbsp;</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-neutral">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-neutral">&nbsp;</span>
1320
- <span class="cline-any cline-yes">5x</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-neutral">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-neutral">&nbsp;</span>
1326
- <span class="cline-any cline-no">&nbsp;</span>
1327
- <span class="cline-any cline-no">&nbsp;</span>
1328
- <span class="cline-any cline-no">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-no">&nbsp;</span>
1331
- <span class="cline-any cline-no">&nbsp;</span>
1332
- <span class="cline-any cline-no">&nbsp;</span>
1333
- <span class="cline-any cline-no">&nbsp;</span>
1334
- <span class="cline-any cline-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-neutral">&nbsp;</span>
1336
- <span class="cline-any cline-neutral">&nbsp;</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-neutral">&nbsp;</span>
1339
- <span class="cline-any cline-neutral">&nbsp;</span>
1340
- <span class="cline-any cline-neutral">&nbsp;</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-no">&nbsp;</span>
1343
- <span class="cline-any cline-no">&nbsp;</span>
1344
- <span class="cline-any cline-no">&nbsp;</span>
1345
- <span class="cline-any cline-no">&nbsp;</span>
1346
- <span class="cline-any cline-no">&nbsp;</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-neutral">&nbsp;</span>
1349
- <span class="cline-any cline-no">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-no">&nbsp;</span>
1352
- <span class="cline-any cline-no">&nbsp;</span>
1353
- <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-neutral">&nbsp;</span>
1355
- <span class="cline-any cline-neutral">&nbsp;</span>
1356
- <span class="cline-any cline-no">&nbsp;</span>
1357
- <span class="cline-any cline-no">&nbsp;</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-no">&nbsp;</span>
1360
- <span class="cline-any cline-neutral">&nbsp;</span>
1361
- <span class="cline-any cline-neutral">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-yes">15x</span>
1366
- <span class="cline-any cline-yes">15x</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-neutral">&nbsp;</span>
1369
- <span class="cline-any cline-neutral">&nbsp;</span>
1370
- <span class="cline-any cline-neutral">&nbsp;</span>
1371
- <span class="cline-any cline-neutral">&nbsp;</span>
1372
- <span class="cline-any cline-neutral">&nbsp;</span>
1373
- <span class="cline-any cline-yes">15x</span>
1374
- <span class="cline-any cline-neutral">&nbsp;</span>
1375
- <span class="cline-any cline-neutral">&nbsp;</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-neutral">&nbsp;</span>
1378
- <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-neutral">&nbsp;</span>
1381
- <span class="cline-any cline-neutral">&nbsp;</span>
1382
- <span class="cline-any cline-neutral">&nbsp;</span>
1383
- <span class="cline-any cline-neutral">&nbsp;</span>
1384
- <span class="cline-any cline-neutral">&nbsp;</span>
1385
- <span class="cline-any cline-neutral">&nbsp;</span>
1386
- <span class="cline-any cline-neutral">&nbsp;</span>
1387
- <span class="cline-any cline-neutral">&nbsp;</span>
1388
- <span class="cline-any cline-neutral">&nbsp;</span>
1389
- <span class="cline-any cline-neutral">&nbsp;</span>
1390
- <span class="cline-any cline-neutral">&nbsp;</span>
1391
- <span class="cline-any cline-yes">15x</span>
1392
- <span class="cline-any cline-yes">15x</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-neutral">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-yes">15x</span>
1397
- <span class="cline-any cline-neutral">&nbsp;</span>
1398
- <span class="cline-any cline-neutral">&nbsp;</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-neutral">&nbsp;</span>
1401
- <span class="cline-any cline-yes">15x</span>
1402
- <span class="cline-any cline-yes">15x</span>
1403
- <span class="cline-any cline-yes">15x</span>
1404
- <span class="cline-any cline-yes">15x</span>
1405
- <span class="cline-any cline-neutral">&nbsp;</span>
1406
- <span class="cline-any cline-neutral">&nbsp;</span>
1407
- <span class="cline-any cline-neutral">&nbsp;</span>
1408
- <span class="cline-any cline-neutral">&nbsp;</span>
1409
- <span class="cline-any cline-yes">15x</span>
1410
- <span class="cline-any cline-yes">15x</span>
1411
- <span class="cline-any cline-yes">15x</span>
1412
- <span class="cline-any cline-yes">15x</span>
1413
- <span class="cline-any cline-yes">15x</span>
1414
- <span class="cline-any cline-yes">15x</span>
1415
- <span class="cline-any cline-yes">15x</span>
1416
- <span class="cline-any cline-yes">15x</span>
1417
- <span class="cline-any cline-yes">15x</span>
1418
- <span class="cline-any cline-yes">15x</span>
1419
- <span class="cline-any cline-yes">15x</span>
1420
- <span class="cline-any cline-yes">15x</span>
1421
- <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-yes">15x</span>
1423
- <span class="cline-any cline-yes">15x</span>
1424
- <span class="cline-any cline-yes">15x</span>
1425
- <span class="cline-any cline-neutral">&nbsp;</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-neutral">&nbsp;</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-neutral">&nbsp;</span>
1433
- <span class="cline-any cline-neutral">&nbsp;</span>
1434
- <span class="cline-any cline-neutral">&nbsp;</span>
1435
- <span class="cline-any cline-neutral">&nbsp;</span>
1436
- <span class="cline-any cline-neutral">&nbsp;</span>
1437
- <span class="cline-any cline-neutral">&nbsp;</span>
1438
- <span class="cline-any cline-neutral">&nbsp;</span>
1439
- <span class="cline-any cline-neutral">&nbsp;</span>
1440
- <span class="cline-any cline-neutral">&nbsp;</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-neutral">&nbsp;</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1444
- <span class="cline-any cline-neutral">&nbsp;</span>
1445
- <span class="cline-any cline-neutral">&nbsp;</span>
1446
- <span class="cline-any cline-neutral">&nbsp;</span>
1447
- <span class="cline-any cline-neutral">&nbsp;</span>
1448
- <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-neutral">&nbsp;</span>
1450
- <span class="cline-any cline-neutral">&nbsp;</span>
1451
- <span class="cline-any cline-neutral">&nbsp;</span>
1452
- <span class="cline-any cline-no">&nbsp;</span>
1453
- <span class="cline-any cline-no">&nbsp;</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-no">&nbsp;</span>
1456
- <span class="cline-any cline-no">&nbsp;</span>
1457
- <span class="cline-any cline-no">&nbsp;</span>
1458
- <span class="cline-any cline-neutral">&nbsp;</span>
1459
- <span class="cline-any cline-no">&nbsp;</span>
1460
- <span class="cline-any cline-neutral">&nbsp;</span>
1461
- <span class="cline-any cline-neutral">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-neutral">&nbsp;</span>
1464
- <span class="cline-any cline-neutral">&nbsp;</span>
1465
- <span class="cline-any cline-neutral">&nbsp;</span>
1466
- <span class="cline-any cline-neutral">&nbsp;</span>
1467
- <span class="cline-any cline-no">&nbsp;</span>
1468
- <span class="cline-any cline-no">&nbsp;</span>
1469
- <span class="cline-any cline-no">&nbsp;</span>
1470
- <span class="cline-any cline-no">&nbsp;</span>
1471
- <span class="cline-any cline-neutral">&nbsp;</span>
1472
- <span class="cline-any cline-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-no">&nbsp;</span>
1474
- <span class="cline-any cline-neutral">&nbsp;</span>
1475
- <span class="cline-any cline-neutral">&nbsp;</span>
1476
- <span class="cline-any cline-neutral">&nbsp;</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-no">&nbsp;</span>
1479
- <span class="cline-any cline-neutral">&nbsp;</span>
1480
- <span class="cline-any cline-no">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-no">&nbsp;</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-no">&nbsp;</span>
1486
- <span class="cline-any cline-neutral">&nbsp;</span>
1487
- <span class="cline-any cline-neutral">&nbsp;</span>
1488
- <span class="cline-any cline-neutral">&nbsp;</span>
1489
- <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-no">&nbsp;</span>
1491
- <span class="cline-any cline-neutral">&nbsp;</span>
1492
- <span class="cline-any cline-no">&nbsp;</span>
1493
- <span class="cline-any cline-neutral">&nbsp;</span>
1494
- <span class="cline-any cline-neutral">&nbsp;</span>
1495
- <span class="cline-any cline-no">&nbsp;</span>
1496
- <span class="cline-any cline-neutral">&nbsp;</span>
1497
- <span class="cline-any cline-neutral">&nbsp;</span>
1498
- <span class="cline-any cline-no">&nbsp;</span>
1499
- <span class="cline-any cline-neutral">&nbsp;</span>
1500
- <span class="cline-any cline-neutral">&nbsp;</span>
1501
- <span class="cline-any cline-no">&nbsp;</span>
1502
- <span class="cline-any cline-neutral">&nbsp;</span>
1503
- <span class="cline-any cline-neutral">&nbsp;</span>
1504
- <span class="cline-any cline-no">&nbsp;</span>
1505
- <span class="cline-any cline-no">&nbsp;</span>
1506
- <span class="cline-any cline-neutral">&nbsp;</span>
1507
- <span class="cline-any cline-neutral">&nbsp;</span>
1508
- <span class="cline-any cline-no">&nbsp;</span>
1509
- <span class="cline-any cline-neutral">&nbsp;</span>
1510
- <span class="cline-any cline-neutral">&nbsp;</span>
1511
- <span class="cline-any cline-no">&nbsp;</span>
1512
- <span class="cline-any cline-no">&nbsp;</span>
1513
- <span class="cline-any cline-neutral">&nbsp;</span>
1514
- <span class="cline-any cline-neutral">&nbsp;</span>
1515
- <span class="cline-any cline-no">&nbsp;</span>
1516
- <span class="cline-any cline-neutral">&nbsp;</span>
1517
- <span class="cline-any cline-no">&nbsp;</span>
1518
- <span class="cline-any cline-no">&nbsp;</span>
1519
- <span class="cline-any cline-neutral">&nbsp;</span>
1520
- <span class="cline-any cline-no">&nbsp;</span>
1521
- <span class="cline-any cline-neutral">&nbsp;</span>
1522
- <span class="cline-any cline-neutral">&nbsp;</span>
1523
- <span class="cline-any cline-no">&nbsp;</span>
1524
- <span class="cline-any cline-no">&nbsp;</span>
1525
- <span class="cline-any cline-no">&nbsp;</span>
1526
- <span class="cline-any cline-neutral">&nbsp;</span>
1527
- <span class="cline-any cline-no">&nbsp;</span>
1528
- <span class="cline-any cline-no">&nbsp;</span>
1529
- <span class="cline-any cline-no">&nbsp;</span>
1530
- <span class="cline-any cline-neutral">&nbsp;</span>
1531
- <span class="cline-any cline-no">&nbsp;</span>
1532
- <span class="cline-any cline-neutral">&nbsp;</span>
1533
- <span class="cline-any cline-no">&nbsp;</span>
1534
- <span class="cline-any cline-no">&nbsp;</span>
1535
- <span class="cline-any cline-no">&nbsp;</span>
1536
- <span class="cline-any cline-neutral">&nbsp;</span>
1537
- <span class="cline-any cline-neutral">&nbsp;</span>
1538
- <span class="cline-any cline-no">&nbsp;</span>
1539
- <span class="cline-any cline-neutral">&nbsp;</span>
1540
- <span class="cline-any cline-no">&nbsp;</span>
1541
- <span class="cline-any cline-neutral">&nbsp;</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-neutral">&nbsp;</span>
1544
- <span class="cline-any cline-neutral">&nbsp;</span>
1545
- <span class="cline-any cline-no">&nbsp;</span>
1546
- <span class="cline-any cline-neutral">&nbsp;</span>
1547
- <span class="cline-any cline-no">&nbsp;</span>
1548
- <span class="cline-any cline-neutral">&nbsp;</span>
1549
- <span class="cline-any cline-neutral">&nbsp;</span>
1550
- <span class="cline-any cline-neutral">&nbsp;</span>
1551
- <span class="cline-any cline-no">&nbsp;</span>
1552
- <span class="cline-any cline-neutral">&nbsp;</span>
1553
- <span class="cline-any cline-neutral">&nbsp;</span>
1554
- <span class="cline-any cline-neutral">&nbsp;</span>
1555
- <span class="cline-any cline-no">&nbsp;</span>
1556
- <span class="cline-any cline-neutral">&nbsp;</span>
1557
- <span class="cline-any cline-neutral">&nbsp;</span>
1558
- <span class="cline-any cline-neutral">&nbsp;</span>
1559
- <span class="cline-any cline-no">&nbsp;</span>
1560
- <span class="cline-any cline-neutral">&nbsp;</span>
1561
- <span class="cline-any cline-no">&nbsp;</span>
1562
- <span class="cline-any cline-neutral">&nbsp;</span>
1563
- <span class="cline-any cline-neutral">&nbsp;</span>
1564
- <span class="cline-any cline-no">&nbsp;</span>
1565
- <span class="cline-any cline-no">&nbsp;</span>
1566
- <span class="cline-any cline-no">&nbsp;</span>
1567
- <span class="cline-any cline-no">&nbsp;</span>
1568
- <span class="cline-any cline-neutral">&nbsp;</span>
1569
- <span class="cline-any cline-neutral">&nbsp;</span>
1570
- <span class="cline-any cline-neutral">&nbsp;</span>
1571
- <span class="cline-any cline-neutral">&nbsp;</span>
1572
- <span class="cline-any cline-no">&nbsp;</span>
1573
- <span class="cline-any cline-neutral">&nbsp;</span>
1574
- <span class="cline-any cline-neutral">&nbsp;</span>
1575
- <span class="cline-any cline-neutral">&nbsp;</span>
1576
- <span class="cline-any cline-no">&nbsp;</span>
1577
- <span class="cline-any cline-no">&nbsp;</span>
1578
- <span class="cline-any cline-neutral">&nbsp;</span>
1579
- <span class="cline-any cline-neutral">&nbsp;</span>
1580
- <span class="cline-any cline-neutral">&nbsp;</span>
1581
- <span class="cline-any cline-no">&nbsp;</span>
1582
- <span class="cline-any cline-neutral">&nbsp;</span>
1583
- <span class="cline-any cline-neutral">&nbsp;</span>
1584
- <span class="cline-any cline-no">&nbsp;</span>
1585
- <span class="cline-any cline-neutral">&nbsp;</span>
1586
- <span class="cline-any cline-no">&nbsp;</span>
1587
- <span class="cline-any cline-no">&nbsp;</span>
1588
- <span class="cline-any cline-neutral">&nbsp;</span>
1589
- <span class="cline-any cline-neutral">&nbsp;</span>
1590
- <span class="cline-any cline-neutral">&nbsp;</span>
1591
- <span class="cline-any cline-neutral">&nbsp;</span>
1592
- <span class="cline-any cline-neutral">&nbsp;</span>
1593
- <span class="cline-any cline-neutral">&nbsp;</span>
1594
- <span class="cline-any cline-neutral">&nbsp;</span>
1595
- <span class="cline-any cline-neutral">&nbsp;</span>
1596
- <span class="cline-any cline-no">&nbsp;</span>
1597
- <span class="cline-any cline-no">&nbsp;</span>
1598
- <span class="cline-any cline-no">&nbsp;</span>
1599
- <span class="cline-any cline-no">&nbsp;</span>
1600
- <span class="cline-any cline-no">&nbsp;</span>
1601
- <span class="cline-any cline-no">&nbsp;</span>
1602
- <span class="cline-any cline-no">&nbsp;</span>
1603
- <span class="cline-any cline-no">&nbsp;</span>
1604
- <span class="cline-any cline-no">&nbsp;</span>
1605
- <span class="cline-any cline-no">&nbsp;</span>
1606
- <span class="cline-any cline-neutral">&nbsp;</span>
1607
- <span class="cline-any cline-neutral">&nbsp;</span>
1608
- <span class="cline-any cline-neutral">&nbsp;</span>
1609
- <span class="cline-any cline-neutral">&nbsp;</span>
1610
- <span class="cline-any cline-neutral">&nbsp;</span>
1611
- <span class="cline-any cline-neutral">&nbsp;</span>
1612
- <span class="cline-any cline-neutral">&nbsp;</span>
1613
- <span class="cline-any cline-neutral">&nbsp;</span>
1614
- <span class="cline-any cline-no">&nbsp;</span>
1615
- <span class="cline-any cline-no">&nbsp;</span>
1616
- <span class="cline-any cline-neutral">&nbsp;</span>
1617
- <span class="cline-any cline-no">&nbsp;</span>
1618
- <span class="cline-any cline-neutral">&nbsp;</span>
1619
- <span class="cline-any cline-neutral">&nbsp;</span>
1620
- <span class="cline-any cline-no">&nbsp;</span>
1621
- <span class="cline-any cline-neutral">&nbsp;</span>
1622
- <span class="cline-any cline-neutral">&nbsp;</span>
1623
- <span class="cline-any cline-neutral">&nbsp;</span>
1624
- <span class="cline-any cline-neutral">&nbsp;</span>
1625
- <span class="cline-any cline-neutral">&nbsp;</span>
1626
- <span class="cline-any cline-neutral">&nbsp;</span>
1627
- <span class="cline-any cline-neutral">&nbsp;</span>
1628
- <span class="cline-any cline-neutral">&nbsp;</span>
1629
- <span class="cline-any cline-neutral">&nbsp;</span>
1630
- <span class="cline-any cline-neutral">&nbsp;</span>
1631
- <span class="cline-any cline-no">&nbsp;</span>
1632
- <span class="cline-any cline-neutral">&nbsp;</span>
1633
- <span class="cline-any cline-neutral">&nbsp;</span>
1634
- <span class="cline-any cline-no">&nbsp;</span>
1635
- <span class="cline-any cline-no">&nbsp;</span>
1636
- <span class="cline-any cline-no">&nbsp;</span>
1637
- <span class="cline-any cline-no">&nbsp;</span>
1638
- <span class="cline-any cline-neutral">&nbsp;</span>
1639
- <span class="cline-any cline-no">&nbsp;</span>
1640
- <span class="cline-any cline-no">&nbsp;</span>
1641
- <span class="cline-any cline-neutral">&nbsp;</span>
1642
- <span class="cline-any cline-no">&nbsp;</span>
1643
- <span class="cline-any cline-no">&nbsp;</span>
1644
- <span class="cline-any cline-no">&nbsp;</span>
1645
- <span class="cline-any cline-no">&nbsp;</span>
1646
- <span class="cline-any cline-no">&nbsp;</span>
1647
- <span class="cline-any cline-neutral">&nbsp;</span>
1648
- <span class="cline-any cline-neutral">&nbsp;</span>
1649
- <span class="cline-any cline-neutral">&nbsp;</span>
1650
- <span class="cline-any cline-neutral">&nbsp;</span>
1651
- <span class="cline-any cline-neutral">&nbsp;</span>
1652
- <span class="cline-any cline-neutral">&nbsp;</span>
1653
- <span class="cline-any cline-neutral">&nbsp;</span>
1654
- <span class="cline-any cline-neutral">&nbsp;</span>
1655
- <span class="cline-any cline-neutral">&nbsp;</span>
1656
- <span class="cline-any cline-neutral">&nbsp;</span>
1657
- <span class="cline-any cline-neutral">&nbsp;</span>
1658
- <span class="cline-any cline-neutral">&nbsp;</span>
1659
- <span class="cline-any cline-no">&nbsp;</span>
1660
- <span class="cline-any cline-no">&nbsp;</span>
1661
- <span class="cline-any cline-no">&nbsp;</span>
1662
- <span class="cline-any cline-no">&nbsp;</span>
1663
- <span class="cline-any cline-no">&nbsp;</span>
1664
- <span class="cline-any cline-no">&nbsp;</span>
1665
- <span class="cline-any cline-neutral">&nbsp;</span>
1666
- <span class="cline-any cline-neutral">&nbsp;</span>
1667
- <span class="cline-any cline-neutral">&nbsp;</span>
1668
- <span class="cline-any cline-neutral">&nbsp;</span>
1669
- <span class="cline-any cline-neutral">&nbsp;</span>
1670
- <span class="cline-any cline-neutral">&nbsp;</span>
1671
- <span class="cline-any cline-neutral">&nbsp;</span>
1672
- <span class="cline-any cline-yes">53x</span>
1673
- <span class="cline-any cline-yes">53x</span>
1674
- <span class="cline-any cline-neutral">&nbsp;</span>
1675
- <span class="cline-any cline-no">&nbsp;</span>
1676
- <span class="cline-any cline-neutral">&nbsp;</span>
1677
- <span class="cline-any cline-neutral">&nbsp;</span>
1678
- <span class="cline-any cline-neutral">&nbsp;</span>
1679
- <span class="cline-any cline-neutral">&nbsp;</span>
1680
- <span class="cline-any cline-neutral">&nbsp;</span>
1681
- <span class="cline-any cline-neutral">&nbsp;</span>
1682
- <span class="cline-any cline-neutral">&nbsp;</span>
1683
- <span class="cline-any cline-neutral">&nbsp;</span>
1684
- <span class="cline-any cline-neutral">&nbsp;</span>
1685
- <span class="cline-any cline-neutral">&nbsp;</span>
1686
- <span class="cline-any cline-neutral">&nbsp;</span>
1687
- <span class="cline-any cline-neutral">&nbsp;</span>
1688
- <span class="cline-any cline-neutral">&nbsp;</span>
1689
- <span class="cline-any cline-neutral">&nbsp;</span>
1690
- <span class="cline-any cline-neutral">&nbsp;</span>
1691
- <span class="cline-any cline-neutral">&nbsp;</span>
1692
- <span class="cline-any cline-neutral">&nbsp;</span>
1693
- <span class="cline-any cline-neutral">&nbsp;</span>
1694
- <span class="cline-any cline-neutral">&nbsp;</span>
1695
- <span class="cline-any cline-neutral">&nbsp;</span>
1696
- <span class="cline-any cline-neutral">&nbsp;</span>
1697
- <span class="cline-any cline-no">&nbsp;</span>
1698
- <span class="cline-any cline-no">&nbsp;</span>
1699
- <span class="cline-any cline-neutral">&nbsp;</span>
1700
- <span class="cline-any cline-neutral">&nbsp;</span>
1701
- <span class="cline-any cline-no">&nbsp;</span>
1702
- <span class="cline-any cline-no">&nbsp;</span>
1703
- <span class="cline-any cline-neutral">&nbsp;</span>
1704
- <span class="cline-any cline-neutral">&nbsp;</span>
1705
- <span class="cline-any cline-no">&nbsp;</span>
1706
- <span class="cline-any cline-no">&nbsp;</span>
1707
- <span class="cline-any cline-neutral">&nbsp;</span>
1708
- <span class="cline-any cline-neutral">&nbsp;</span>
1709
- <span class="cline-any cline-no">&nbsp;</span>
1710
- <span class="cline-any cline-neutral">&nbsp;</span>
1711
- <span class="cline-any cline-no">&nbsp;</span>
1712
- <span class="cline-any cline-no">&nbsp;</span>
1713
- <span class="cline-any cline-no">&nbsp;</span>
1714
- <span class="cline-any cline-neutral">&nbsp;</span>
1715
- <span class="cline-any cline-neutral">&nbsp;</span>
1716
- <span class="cline-any cline-no">&nbsp;</span>
1717
- <span class="cline-any cline-neutral">&nbsp;</span>
1718
- <span class="cline-any cline-neutral">&nbsp;</span>
1719
- <span class="cline-any cline-neutral">&nbsp;</span>
1720
- <span class="cline-any cline-neutral">&nbsp;</span>
1721
- <span class="cline-any cline-neutral">&nbsp;</span>
1722
- <span class="cline-any cline-neutral">&nbsp;</span>
1723
- <span class="cline-any cline-neutral">&nbsp;</span>
1724
- <span class="cline-any cline-no">&nbsp;</span>
1725
- <span class="cline-any cline-no">&nbsp;</span>
1726
- <span class="cline-any cline-neutral">&nbsp;</span>
1727
- <span class="cline-any cline-neutral">&nbsp;</span>
1728
- <span class="cline-any cline-no">&nbsp;</span>
1729
- <span class="cline-any cline-neutral">&nbsp;</span>
1730
- <span class="cline-any cline-neutral">&nbsp;</span>
1731
- <span class="cline-any cline-neutral">&nbsp;</span>
1732
- <span class="cline-any cline-neutral">&nbsp;</span>
1733
- <span class="cline-any cline-neutral">&nbsp;</span>
1734
- <span class="cline-any cline-no">&nbsp;</span>
1735
- <span class="cline-any cline-no">&nbsp;</span>
1736
- <span class="cline-any cline-no">&nbsp;</span>
1737
- <span class="cline-any cline-no">&nbsp;</span>
1738
- <span class="cline-any cline-neutral">&nbsp;</span>
1739
- <span class="cline-any cline-no">&nbsp;</span>
1740
- <span class="cline-any cline-neutral">&nbsp;</span>
1741
- <span class="cline-any cline-neutral">&nbsp;</span>
1742
- <span class="cline-any cline-no">&nbsp;</span>
1743
- <span class="cline-any cline-neutral">&nbsp;</span>
1744
- <span class="cline-any cline-neutral">&nbsp;</span>
1745
- <span class="cline-any cline-neutral">&nbsp;</span>
1746
- <span class="cline-any cline-no">&nbsp;</span>
1747
- <span class="cline-any cline-neutral">&nbsp;</span>
1748
- <span class="cline-any cline-neutral">&nbsp;</span>
1749
- <span class="cline-any cline-no">&nbsp;</span>
1750
- <span class="cline-any cline-no">&nbsp;</span>
1751
- <span class="cline-any cline-neutral">&nbsp;</span>
1752
- <span class="cline-any cline-neutral">&nbsp;</span>
1753
- <span class="cline-any cline-no">&nbsp;</span>
1754
- <span class="cline-any cline-neutral">&nbsp;</span>
1755
- <span class="cline-any cline-no">&nbsp;</span>
1756
- <span class="cline-any cline-no">&nbsp;</span>
1757
- <span class="cline-any cline-no">&nbsp;</span>
1758
- <span class="cline-any cline-neutral">&nbsp;</span>
1759
- <span class="cline-any cline-neutral">&nbsp;</span>
1760
- <span class="cline-any cline-no">&nbsp;</span>
1761
- <span class="cline-any cline-neutral">&nbsp;</span>
1762
- <span class="cline-any cline-neutral">&nbsp;</span>
1763
- <span class="cline-any cline-neutral">&nbsp;</span>
1764
- <span class="cline-any cline-neutral">&nbsp;</span>
1765
- <span class="cline-any cline-neutral">&nbsp;</span>
1766
- <span class="cline-any cline-neutral">&nbsp;</span>
1767
- <span class="cline-any cline-neutral">&nbsp;</span>
1768
- <span class="cline-any cline-neutral">&nbsp;</span>
1769
- <span class="cline-any cline-neutral">&nbsp;</span>
1770
- <span class="cline-any cline-neutral">&nbsp;</span>
1771
- <span class="cline-any cline-no">&nbsp;</span>
1772
- <span class="cline-any cline-no">&nbsp;</span>
1773
- <span class="cline-any cline-no">&nbsp;</span>
1774
- <span class="cline-any cline-no">&nbsp;</span>
1775
- <span class="cline-any cline-neutral">&nbsp;</span>
1776
- <span class="cline-any cline-neutral">&nbsp;</span>
1777
- <span class="cline-any cline-neutral">&nbsp;</span>
1778
- <span class="cline-any cline-neutral">&nbsp;</span>
1779
- <span class="cline-any cline-neutral">&nbsp;</span>
1780
- <span class="cline-any cline-neutral">&nbsp;</span>
1781
- <span class="cline-any cline-neutral">&nbsp;</span>
1782
- <span class="cline-any cline-neutral">&nbsp;</span>
1783
- <span class="cline-any cline-neutral">&nbsp;</span>
1784
- <span class="cline-any cline-neutral">&nbsp;</span>
1785
- <span class="cline-any cline-neutral">&nbsp;</span>
1786
- <span class="cline-any cline-neutral">&nbsp;</span>
1787
- <span class="cline-any cline-neutral">&nbsp;</span>
1788
- <span class="cline-any cline-neutral">&nbsp;</span>
1789
- <span class="cline-any cline-neutral">&nbsp;</span>
1790
- <span class="cline-any cline-neutral">&nbsp;</span>
1791
- <span class="cline-any cline-neutral">&nbsp;</span>
1792
- <span class="cline-any cline-neutral">&nbsp;</span>
1793
- <span class="cline-any cline-neutral">&nbsp;</span>
1794
- <span class="cline-any cline-neutral">&nbsp;</span>
1795
- <span class="cline-any cline-neutral">&nbsp;</span>
1796
- <span class="cline-any cline-neutral">&nbsp;</span>
1797
- <span class="cline-any cline-neutral">&nbsp;</span>
1798
- <span class="cline-any cline-neutral">&nbsp;</span>
1799
- <span class="cline-any cline-yes">5x</span>
1800
- <span class="cline-any cline-yes">5x</span>
1801
- <span class="cline-any cline-yes">5x</span>
1802
- <span class="cline-any cline-yes">5x</span>
1803
- <span class="cline-any cline-neutral">&nbsp;</span>
1804
- <span class="cline-any cline-neutral">&nbsp;</span>
1805
- <span class="cline-any cline-yes">5x</span>
1806
- <span class="cline-any cline-yes">5x</span>
1807
- <span class="cline-any cline-yes">5x</span>
1808
- <span class="cline-any cline-neutral">&nbsp;</span>
1809
- <span class="cline-any cline-yes">5x</span>
1810
- <span class="cline-any cline-neutral">&nbsp;</span>
1811
- <span class="cline-any cline-neutral">&nbsp;</span>
1812
- <span class="cline-any cline-neutral">&nbsp;</span>
1813
- <span class="cline-any cline-yes">3x</span>
1814
- <span class="cline-any cline-neutral">&nbsp;</span>
1815
- <span class="cline-any cline-yes">5x</span>
1816
- <span class="cline-any cline-neutral">&nbsp;</span>
1817
- <span class="cline-any cline-neutral">&nbsp;</span>
1818
- <span class="cline-any cline-neutral">&nbsp;</span>
1819
- <span class="cline-any cline-neutral">&nbsp;</span>
1820
- <span class="cline-any cline-neutral">&nbsp;</span>
1821
- <span class="cline-any cline-neutral">&nbsp;</span>
1822
- <span class="cline-any cline-neutral">&nbsp;</span>
1823
- <span class="cline-any cline-neutral">&nbsp;</span>
1824
- <span class="cline-any cline-neutral">&nbsp;</span>
1825
- <span class="cline-any cline-neutral">&nbsp;</span>
1826
- <span class="cline-any cline-no">&nbsp;</span>
1827
- <span class="cline-any cline-neutral">&nbsp;</span>
1828
- <span class="cline-any cline-neutral">&nbsp;</span>
1829
- <span class="cline-any cline-neutral">&nbsp;</span>
1830
- <span class="cline-any cline-yes">5x</span>
1831
- <span class="cline-any cline-yes">5x</span>
1832
- <span class="cline-any cline-yes">5x</span>
1833
- <span class="cline-any cline-yes">5x</span>
1834
- <span class="cline-any cline-yes">5x</span>
1835
- <span class="cline-any cline-no">&nbsp;</span>
1836
- <span class="cline-any cline-neutral">&nbsp;</span>
1837
- <span class="cline-any cline-yes">5x</span>
1838
- <span class="cline-any cline-neutral">&nbsp;</span>
1839
- <span class="cline-any cline-neutral">&nbsp;</span>
1840
- <span class="cline-any cline-neutral">&nbsp;</span>
1841
- <span class="cline-any cline-no">&nbsp;</span>
1842
- <span class="cline-any cline-neutral">&nbsp;</span>
1843
- <span class="cline-any cline-no">&nbsp;</span>
1844
- <span class="cline-any cline-neutral">&nbsp;</span>
1845
- <span class="cline-any cline-neutral">&nbsp;</span>
1846
- <span class="cline-any cline-neutral">&nbsp;</span>
1847
- <span class="cline-any cline-neutral">&nbsp;</span>
1848
- <span class="cline-any cline-neutral">&nbsp;</span>
1849
- <span class="cline-any cline-neutral">&nbsp;</span>
1850
- <span class="cline-any cline-neutral">&nbsp;</span>
1851
- <span class="cline-any cline-neutral">&nbsp;</span>
1852
- <span class="cline-any cline-no">&nbsp;</span>
1853
- <span class="cline-any cline-neutral">&nbsp;</span>
1854
- <span class="cline-any cline-neutral">&nbsp;</span>
1855
- <span class="cline-any cline-no">&nbsp;</span>
1856
- <span class="cline-any cline-neutral">&nbsp;</span>
1857
- <span class="cline-any cline-neutral">&nbsp;</span>
1858
- <span class="cline-any cline-neutral">&nbsp;</span>
1859
- <span class="cline-any cline-no">&nbsp;</span>
1860
- <span class="cline-any cline-neutral">&nbsp;</span>
1861
- <span class="cline-any cline-neutral">&nbsp;</span>
1862
- <span class="cline-any cline-neutral">&nbsp;</span>
1863
- <span class="cline-any cline-neutral">&nbsp;</span>
1864
- <span class="cline-any cline-neutral">&nbsp;</span>
1865
- <span class="cline-any cline-neutral">&nbsp;</span>
1866
- <span class="cline-any cline-neutral">&nbsp;</span>
1867
- <span class="cline-any cline-neutral">&nbsp;</span>
1868
- <span class="cline-any cline-neutral">&nbsp;</span>
1869
- <span class="cline-any cline-neutral">&nbsp;</span>
1870
- <span class="cline-any cline-neutral">&nbsp;</span>
1871
- <span class="cline-any cline-neutral">&nbsp;</span>
1872
- <span class="cline-any cline-neutral">&nbsp;</span>
1873
- <span class="cline-any cline-neutral">&nbsp;</span>
1874
- <span class="cline-any cline-neutral">&nbsp;</span>
1875
- <span class="cline-any cline-neutral">&nbsp;</span>
1876
- <span class="cline-any cline-neutral">&nbsp;</span>
1877
- <span class="cline-any cline-neutral">&nbsp;</span>
1878
- <span class="cline-any cline-neutral">&nbsp;</span>
1879
- <span class="cline-any cline-neutral">&nbsp;</span>
1880
- <span class="cline-any cline-yes">8x</span>
1881
- <span class="cline-any cline-yes">8x</span>
1882
- <span class="cline-any cline-neutral">&nbsp;</span>
1883
- <span class="cline-any cline-neutral">&nbsp;</span>
1884
- <span class="cline-any cline-neutral">&nbsp;</span>
1885
- <span class="cline-any cline-neutral">&nbsp;</span>
1886
- <span class="cline-any cline-neutral">&nbsp;</span>
1887
- <span class="cline-any cline-neutral">&nbsp;</span>
1888
- <span class="cline-any cline-no">&nbsp;</span>
1889
- <span class="cline-any cline-no">&nbsp;</span>
1890
- <span class="cline-any cline-neutral">&nbsp;</span>
1891
- <span class="cline-any cline-no">&nbsp;</span>
1892
- <span class="cline-any cline-neutral">&nbsp;</span>
1893
- <span class="cline-any cline-no">&nbsp;</span>
1894
- <span class="cline-any cline-neutral">&nbsp;</span>
1895
- <span class="cline-any cline-neutral">&nbsp;</span>
1896
- <span class="cline-any cline-neutral">&nbsp;</span>
1897
- <span class="cline-any cline-no">&nbsp;</span>
1898
- <span class="cline-any cline-no">&nbsp;</span>
1899
- <span class="cline-any cline-neutral">&nbsp;</span>
1900
- <span class="cline-any cline-neutral">&nbsp;</span>
1901
- <span class="cline-any cline-neutral">&nbsp;</span>
1902
- <span class="cline-any cline-neutral">&nbsp;</span>
1903
- <span class="cline-any cline-neutral">&nbsp;</span>
1904
- <span class="cline-any cline-neutral">&nbsp;</span>
1905
- <span class="cline-any cline-neutral">&nbsp;</span>
1906
- <span class="cline-any cline-neutral">&nbsp;</span>
1907
- <span class="cline-any cline-neutral">&nbsp;</span>
1908
- <span class="cline-any cline-neutral">&nbsp;</span>
1909
- <span class="cline-any cline-neutral">&nbsp;</span>
1910
- <span class="cline-any cline-neutral">&nbsp;</span>
1911
- <span class="cline-any cline-neutral">&nbsp;</span>
1912
- <span class="cline-any cline-neutral">&nbsp;</span>
1913
- <span class="cline-any cline-neutral">&nbsp;</span>
1914
- <span class="cline-any cline-no">&nbsp;</span>
1915
- <span class="cline-any cline-no">&nbsp;</span>
1916
- <span class="cline-any cline-no">&nbsp;</span>
1917
- <span class="cline-any cline-no">&nbsp;</span>
1918
- <span class="cline-any cline-neutral">&nbsp;</span>
1919
- <span class="cline-any cline-neutral">&nbsp;</span>
1920
- <span class="cline-any cline-neutral">&nbsp;</span>
1921
- <span class="cline-any cline-no">&nbsp;</span>
1922
- <span class="cline-any cline-no">&nbsp;</span>
1923
- <span class="cline-any cline-no">&nbsp;</span>
1924
- <span class="cline-any cline-neutral">&nbsp;</span>
1925
- <span class="cline-any cline-no">&nbsp;</span>
1926
- <span class="cline-any cline-no">&nbsp;</span>
1927
- <span class="cline-any cline-no">&nbsp;</span>
1928
- <span class="cline-any cline-neutral">&nbsp;</span>
1929
- <span class="cline-any cline-neutral">&nbsp;</span>
1930
- <span class="cline-any cline-no">&nbsp;</span>
1931
- <span class="cline-any cline-no">&nbsp;</span>
1932
- <span class="cline-any cline-neutral">&nbsp;</span>
1933
- <span class="cline-any cline-neutral">&nbsp;</span>
1934
- <span class="cline-any cline-no">&nbsp;</span>
1935
- <span class="cline-any cline-no">&nbsp;</span>
1936
- <span class="cline-any cline-no">&nbsp;</span>
1937
- <span class="cline-any cline-neutral">&nbsp;</span>
1938
- <span class="cline-any cline-no">&nbsp;</span>
1939
- <span class="cline-any cline-neutral">&nbsp;</span>
1940
- <span class="cline-any cline-neutral">&nbsp;</span>
1941
- <span class="cline-any cline-no">&nbsp;</span>
1942
- <span class="cline-any cline-no">&nbsp;</span>
1943
- <span class="cline-any cline-neutral">&nbsp;</span>
1944
- <span class="cline-any cline-no">&nbsp;</span>
1945
- <span class="cline-any cline-neutral">&nbsp;</span>
1946
- <span class="cline-any cline-no">&nbsp;</span>
1947
- <span class="cline-any cline-no">&nbsp;</span>
1948
- <span class="cline-any cline-no">&nbsp;</span>
1949
- <span class="cline-any cline-no">&nbsp;</span>
1950
- <span class="cline-any cline-neutral">&nbsp;</span>
1951
- <span class="cline-any cline-no">&nbsp;</span>
1952
- <span class="cline-any cline-no">&nbsp;</span>
1953
- <span class="cline-any cline-neutral">&nbsp;</span>
1954
- <span class="cline-any cline-no">&nbsp;</span>
1955
- <span class="cline-any cline-no">&nbsp;</span>
1956
- <span class="cline-any cline-neutral">&nbsp;</span>
1957
- <span class="cline-any cline-neutral">&nbsp;</span>
1958
- <span class="cline-any cline-no">&nbsp;</span>
1959
- <span class="cline-any cline-neutral">&nbsp;</span>
1960
- <span class="cline-any cline-neutral">&nbsp;</span>
1961
- <span class="cline-any cline-no">&nbsp;</span>
1962
- <span class="cline-any cline-no">&nbsp;</span>
1963
- <span class="cline-any cline-no">&nbsp;</span>
1964
- <span class="cline-any cline-neutral">&nbsp;</span>
1965
- <span class="cline-any cline-neutral">&nbsp;</span>
1966
- <span class="cline-any cline-neutral">&nbsp;</span>
1967
- <span class="cline-any cline-neutral">&nbsp;</span>
1968
- <span class="cline-any cline-no">&nbsp;</span>
1969
- <span class="cline-any cline-neutral">&nbsp;</span>
1970
- <span class="cline-any cline-neutral">&nbsp;</span>
1971
- <span class="cline-any cline-neutral">&nbsp;</span>
1972
- <span class="cline-any cline-neutral">&nbsp;</span>
1973
- <span class="cline-any cline-neutral">&nbsp;</span>
1974
- <span class="cline-any cline-neutral">&nbsp;</span>
1975
- <span class="cline-any cline-neutral">&nbsp;</span>
1976
- <span class="cline-any cline-neutral">&nbsp;</span>
1977
- <span class="cline-any cline-neutral">&nbsp;</span>
1978
- <span class="cline-any cline-neutral">&nbsp;</span>
1979
- <span class="cline-any cline-neutral">&nbsp;</span>
1980
- <span class="cline-any cline-neutral">&nbsp;</span>
1981
- <span class="cline-any cline-neutral">&nbsp;</span>
1982
- <span class="cline-any cline-neutral">&nbsp;</span>
1983
- <span class="cline-any cline-neutral">&nbsp;</span>
1984
- <span class="cline-any cline-no">&nbsp;</span>
1985
- <span class="cline-any cline-no">&nbsp;</span>
1986
- <span class="cline-any cline-no">&nbsp;</span>
1987
- <span class="cline-any cline-neutral">&nbsp;</span>
1988
- <span class="cline-any cline-no">&nbsp;</span>
1989
- <span class="cline-any cline-no">&nbsp;</span>
1990
- <span class="cline-any cline-neutral">&nbsp;</span>
1991
- <span class="cline-any cline-neutral">&nbsp;</span>
1992
- <span class="cline-any cline-no">&nbsp;</span>
1993
- <span class="cline-any cline-no">&nbsp;</span>
1994
- <span class="cline-any cline-neutral">&nbsp;</span>
1995
- <span class="cline-any cline-neutral">&nbsp;</span>
1996
- <span class="cline-any cline-neutral">&nbsp;</span>
1997
- <span class="cline-any cline-no">&nbsp;</span>
1998
- <span class="cline-any cline-no">&nbsp;</span>
1999
- <span class="cline-any cline-neutral">&nbsp;</span>
2000
- <span class="cline-any cline-no">&nbsp;</span>
2001
- <span class="cline-any cline-no">&nbsp;</span>
2002
- <span class="cline-any cline-neutral">&nbsp;</span>
2003
- <span class="cline-any cline-no">&nbsp;</span>
2004
- <span class="cline-any cline-neutral">&nbsp;</span>
2005
- <span class="cline-any cline-neutral">&nbsp;</span>
2006
- <span class="cline-any cline-no">&nbsp;</span>
2007
- <span class="cline-any cline-neutral">&nbsp;</span>
2008
- <span class="cline-any cline-no">&nbsp;</span>
2009
- <span class="cline-any cline-no">&nbsp;</span>
2010
- <span class="cline-any cline-neutral">&nbsp;</span>
2011
- <span class="cline-any cline-neutral">&nbsp;</span>
2012
- <span class="cline-any cline-neutral">&nbsp;</span>
2013
- <span class="cline-any cline-neutral">&nbsp;</span>
2014
- <span class="cline-any cline-neutral">&nbsp;</span>
2015
- <span class="cline-any cline-neutral">&nbsp;</span>
2016
- <span class="cline-any cline-neutral">&nbsp;</span>
2017
- <span class="cline-any cline-neutral">&nbsp;</span>
2018
- <span class="cline-any cline-neutral">&nbsp;</span>
2019
- <span class="cline-any cline-neutral">&nbsp;</span>
2020
- <span class="cline-any cline-no">&nbsp;</span>
2021
- <span class="cline-any cline-no">&nbsp;</span>
2022
- <span class="cline-any cline-no">&nbsp;</span>
2023
- <span class="cline-any cline-no">&nbsp;</span>
2024
- <span class="cline-any cline-neutral">&nbsp;</span>
2025
- <span class="cline-any cline-no">&nbsp;</span>
2026
- <span class="cline-any cline-no">&nbsp;</span>
2027
- <span class="cline-any cline-neutral">&nbsp;</span>
2028
- <span class="cline-any cline-no">&nbsp;</span>
2029
- <span class="cline-any cline-no">&nbsp;</span>
2030
- <span class="cline-any cline-no">&nbsp;</span>
2031
- <span class="cline-any cline-neutral">&nbsp;</span>
2032
- <span class="cline-any cline-neutral">&nbsp;</span>
2033
- <span class="cline-any cline-neutral">&nbsp;</span>
2034
- <span class="cline-any cline-neutral">&nbsp;</span>
2035
- <span class="cline-any cline-neutral">&nbsp;</span>
2036
- <span class="cline-any cline-neutral">&nbsp;</span>
2037
- <span class="cline-any cline-neutral">&nbsp;</span>
2038
- <span class="cline-any cline-neutral">&nbsp;</span>
2039
- <span class="cline-any cline-no">&nbsp;</span>
2040
- <span class="cline-any cline-no">&nbsp;</span>
2041
- <span class="cline-any cline-no">&nbsp;</span>
2042
- <span class="cline-any cline-no">&nbsp;</span>
2043
- <span class="cline-any cline-neutral">&nbsp;</span>
2044
- <span class="cline-any cline-neutral">&nbsp;</span>
2045
- <span class="cline-any cline-no">&nbsp;</span>
2046
- <span class="cline-any cline-no">&nbsp;</span>
2047
- <span class="cline-any cline-no">&nbsp;</span>
2048
- <span class="cline-any cline-no">&nbsp;</span>
2049
- <span class="cline-any cline-neutral">&nbsp;</span>
2050
- <span class="cline-any cline-no">&nbsp;</span>
2051
- <span class="cline-any cline-neutral">&nbsp;</span>
2052
- <span class="cline-any cline-neutral">&nbsp;</span>
2053
- <span class="cline-any cline-no">&nbsp;</span>
2054
- <span class="cline-any cline-neutral">&nbsp;</span>
2055
- <span class="cline-any cline-neutral">&nbsp;</span>
2056
- <span class="cline-any cline-no">&nbsp;</span>
2057
- <span class="cline-any cline-neutral">&nbsp;</span>
2058
- <span class="cline-any cline-neutral">&nbsp;</span>
2059
- <span class="cline-any cline-neutral">&nbsp;</span>
2060
- <span class="cline-any cline-no">&nbsp;</span>
2061
- <span class="cline-any cline-neutral">&nbsp;</span>
2062
- <span class="cline-any cline-neutral">&nbsp;</span>
2063
- <span class="cline-any cline-neutral">&nbsp;</span>
2064
- <span class="cline-any cline-neutral">&nbsp;</span>
2065
- <span class="cline-any cline-neutral">&nbsp;</span>
2066
- <span class="cline-any cline-neutral">&nbsp;</span>
2067
- <span class="cline-any cline-no">&nbsp;</span>
2068
- <span class="cline-any cline-no">&nbsp;</span>
2069
- <span class="cline-any cline-no">&nbsp;</span>
2070
- <span class="cline-any cline-no">&nbsp;</span>
2071
- <span class="cline-any cline-neutral">&nbsp;</span>
2072
- <span class="cline-any cline-no">&nbsp;</span>
2073
- <span class="cline-any cline-neutral">&nbsp;</span>
2074
- <span class="cline-any cline-neutral">&nbsp;</span>
2075
- <span class="cline-any cline-neutral">&nbsp;</span>
2076
- <span class="cline-any cline-neutral">&nbsp;</span>
2077
- <span class="cline-any cline-neutral">&nbsp;</span>
2078
- <span class="cline-any cline-neutral">&nbsp;</span>
2079
- <span class="cline-any cline-neutral">&nbsp;</span>
2080
- <span class="cline-any cline-neutral">&nbsp;</span>
2081
- <span class="cline-any cline-neutral">&nbsp;</span>
2082
- <span class="cline-any cline-neutral">&nbsp;</span>
2083
- <span class="cline-any cline-neutral">&nbsp;</span>
2084
- <span class="cline-any cline-neutral">&nbsp;</span>
2085
- <span class="cline-any cline-no">&nbsp;</span>
2086
- <span class="cline-any cline-no">&nbsp;</span>
2087
- <span class="cline-any cline-no">&nbsp;</span>
2088
- <span class="cline-any cline-neutral">&nbsp;</span>
2089
- <span class="cline-any cline-no">&nbsp;</span>
2090
- <span class="cline-any cline-neutral">&nbsp;</span>
2091
- <span class="cline-any cline-neutral">&nbsp;</span>
2092
- <span class="cline-any cline-no">&nbsp;</span>
2093
- <span class="cline-any cline-no">&nbsp;</span>
2094
- <span class="cline-any cline-neutral">&nbsp;</span>
2095
- <span class="cline-any cline-no">&nbsp;</span>
2096
- <span class="cline-any cline-no">&nbsp;</span>
2097
- <span class="cline-any cline-no">&nbsp;</span>
2098
- <span class="cline-any cline-neutral">&nbsp;</span>
2099
- <span class="cline-any cline-no">&nbsp;</span>
2100
- <span class="cline-any cline-no">&nbsp;</span>
2101
- <span class="cline-any cline-neutral">&nbsp;</span>
2102
- <span class="cline-any cline-no">&nbsp;</span>
2103
- <span class="cline-any cline-neutral">&nbsp;</span>
2104
- <span class="cline-any cline-neutral">&nbsp;</span>
2105
- <span class="cline-any cline-neutral">&nbsp;</span>
2106
- <span class="cline-any cline-neutral">&nbsp;</span>
2107
- <span class="cline-any cline-neutral">&nbsp;</span>
2108
- <span class="cline-any cline-neutral">&nbsp;</span>
2109
- <span class="cline-any cline-neutral">&nbsp;</span>
2110
- <span class="cline-any cline-neutral">&nbsp;</span>
2111
- <span class="cline-any cline-no">&nbsp;</span>
2112
- <span class="cline-any cline-no">&nbsp;</span>
2113
- <span class="cline-any cline-no">&nbsp;</span>
2114
- <span class="cline-any cline-no">&nbsp;</span>
2115
- <span class="cline-any cline-neutral">&nbsp;</span>
2116
- <span class="cline-any cline-neutral">&nbsp;</span>
2117
- <span class="cline-any cline-neutral">&nbsp;</span>
2118
- <span class="cline-any cline-neutral">&nbsp;</span>
2119
- <span class="cline-any cline-neutral">&nbsp;</span>
2120
- <span class="cline-any cline-neutral">&nbsp;</span>
2121
- <span class="cline-any cline-neutral">&nbsp;</span>
2122
- <span class="cline-any cline-neutral">&nbsp;</span>
2123
- <span class="cline-any cline-yes">6x</span>
2124
- <span class="cline-any cline-yes">6x</span>
2125
- <span class="cline-any cline-neutral">&nbsp;</span>
2126
- <span class="cline-any cline-neutral">&nbsp;</span>
2127
- <span class="cline-any cline-neutral">&nbsp;</span>
2128
- <span class="cline-any cline-neutral">&nbsp;</span>
2129
- <span class="cline-any cline-neutral">&nbsp;</span>
2130
- <span class="cline-any cline-neutral">&nbsp;</span>
2131
- <span class="cline-any cline-neutral">&nbsp;</span>
2132
- <span class="cline-any cline-neutral">&nbsp;</span>
2133
- <span class="cline-any cline-neutral">&nbsp;</span>
2134
- <span class="cline-any cline-neutral">&nbsp;</span>
2135
- <span class="cline-any cline-neutral">&nbsp;</span>
2136
- <span class="cline-any cline-neutral">&nbsp;</span>
2137
- <span class="cline-any cline-no">&nbsp;</span>
2138
- <span class="cline-any cline-no">&nbsp;</span>
2139
- <span class="cline-any cline-no">&nbsp;</span>
2140
- <span class="cline-any cline-no">&nbsp;</span>
2141
- <span class="cline-any cline-no">&nbsp;</span>
2142
- <span class="cline-any cline-no">&nbsp;</span>
2143
- <span class="cline-any cline-neutral">&nbsp;</span>
2144
- <span class="cline-any cline-neutral">&nbsp;</span>
2145
- <span class="cline-any cline-neutral">&nbsp;</span>
2146
- <span class="cline-any cline-neutral">&nbsp;</span>
2147
- <span class="cline-any cline-neutral">&nbsp;</span>
2148
- <span class="cline-any cline-neutral">&nbsp;</span>
2149
- <span class="cline-any cline-neutral">&nbsp;</span>
2150
- <span class="cline-any cline-neutral">&nbsp;</span>
2151
- <span class="cline-any cline-yes">3x</span>
2152
- <span class="cline-any cline-yes">3x</span>
2153
- <span class="cline-any cline-yes">3x</span>
2154
- <span class="cline-any cline-no">&nbsp;</span>
2155
- <span class="cline-any cline-neutral">&nbsp;</span>
2156
- <span class="cline-any cline-neutral">&nbsp;</span>
2157
- <span class="cline-any cline-neutral">&nbsp;</span>
2158
- <span class="cline-any cline-neutral">&nbsp;</span>
2159
- <span class="cline-any cline-neutral">&nbsp;</span>
2160
- <span class="cline-any cline-neutral">&nbsp;</span>
2161
- <span class="cline-any cline-neutral">&nbsp;</span>
2162
- <span class="cline-any cline-neutral">&nbsp;</span>
2163
- <span class="cline-any cline-neutral">&nbsp;</span>
2164
- <span class="cline-any cline-neutral">&nbsp;</span>
2165
- <span class="cline-any cline-yes">3x</span>
2166
- <span class="cline-any cline-neutral">&nbsp;</span>
2167
- <span class="cline-any cline-yes">3x</span>
2168
- <span class="cline-any cline-neutral">&nbsp;</span>
2169
- <span class="cline-any cline-no">&nbsp;</span>
2170
- <span class="cline-any cline-no">&nbsp;</span>
2171
- <span class="cline-any cline-neutral">&nbsp;</span>
2172
- <span class="cline-any cline-neutral">&nbsp;</span>
2173
- <span class="cline-any cline-yes">3x</span>
2174
- <span class="cline-any cline-yes">3x</span>
2175
- <span class="cline-any cline-yes">3x</span>
2176
- <span class="cline-any cline-yes">3x</span>
2177
- <span class="cline-any cline-yes">3x</span>
2178
- <span class="cline-any cline-neutral">&nbsp;</span>
2179
- <span class="cline-any cline-neutral">&nbsp;</span>
2180
- <span class="cline-any cline-no">&nbsp;</span>
2181
- <span class="cline-any cline-neutral">&nbsp;</span>
2182
- <span class="cline-any cline-neutral">&nbsp;</span>
2183
- <span class="cline-any cline-neutral">&nbsp;</span>
2184
- <span class="cline-any cline-neutral">&nbsp;</span>
2185
- <span class="cline-any cline-neutral">&nbsp;</span>
2186
- <span class="cline-any cline-neutral">&nbsp;</span>
2187
- <span class="cline-any cline-neutral">&nbsp;</span>
2188
- <span class="cline-any cline-neutral">&nbsp;</span>
2189
- <span class="cline-any cline-no">&nbsp;</span>
2190
- <span class="cline-any cline-no">&nbsp;</span>
2191
- <span class="cline-any cline-neutral">&nbsp;</span>
2192
- <span class="cline-any cline-neutral">&nbsp;</span>
2193
- <span class="cline-any cline-no">&nbsp;</span>
2194
- <span class="cline-any cline-neutral">&nbsp;</span>
2195
- <span class="cline-any cline-no">&nbsp;</span>
2196
- <span class="cline-any cline-neutral">&nbsp;</span>
2197
- <span class="cline-any cline-neutral">&nbsp;</span>
2198
- <span class="cline-any cline-neutral">&nbsp;</span>
2199
- <span class="cline-any cline-no">&nbsp;</span>
2200
- <span class="cline-any cline-no">&nbsp;</span>
2201
- <span class="cline-any cline-no">&nbsp;</span>
2202
- <span class="cline-any cline-neutral">&nbsp;</span>
2203
- <span class="cline-any cline-no">&nbsp;</span>
2204
- <span class="cline-any cline-neutral">&nbsp;</span>
2205
- <span class="cline-any cline-no">&nbsp;</span>
2206
- <span class="cline-any cline-neutral">&nbsp;</span>
2207
- <span class="cline-any cline-neutral">&nbsp;</span>
2208
- <span class="cline-any cline-neutral">&nbsp;</span>
2209
- <span class="cline-any cline-neutral">&nbsp;</span>
2210
- <span class="cline-any cline-neutral">&nbsp;</span>
2211
- <span class="cline-any cline-neutral">&nbsp;</span>
2212
- <span class="cline-any cline-neutral">&nbsp;</span>
2213
- <span class="cline-any cline-neutral">&nbsp;</span>
2214
- <span class="cline-any cline-neutral">&nbsp;</span>
2215
- <span class="cline-any cline-neutral">&nbsp;</span>
2216
- <span class="cline-any cline-no">&nbsp;</span>
2217
- <span class="cline-any cline-no">&nbsp;</span>
2218
- <span class="cline-any cline-no">&nbsp;</span>
2219
- <span class="cline-any cline-no">&nbsp;</span>
2220
- <span class="cline-any cline-neutral">&nbsp;</span>
2221
- <span class="cline-any cline-neutral">&nbsp;</span>
2222
- <span class="cline-any cline-neutral">&nbsp;</span>
2223
- <span class="cline-any cline-neutral">&nbsp;</span>
2224
- <span class="cline-any cline-neutral">&nbsp;</span>
2225
- <span class="cline-any cline-no">&nbsp;</span>
2226
- <span class="cline-any cline-neutral">&nbsp;</span>
2227
- <span class="cline-any cline-neutral">&nbsp;</span>
2228
- <span class="cline-any cline-neutral">&nbsp;</span>
2229
- <span class="cline-any cline-neutral">&nbsp;</span>
2230
- <span class="cline-any cline-no">&nbsp;</span>
2231
- <span class="cline-any cline-neutral">&nbsp;</span>
2232
- <span class="cline-any cline-neutral">&nbsp;</span>
2233
- <span class="cline-any cline-neutral">&nbsp;</span>
2234
- <span class="cline-any cline-neutral">&nbsp;</span>
2235
- <span class="cline-any cline-no">&nbsp;</span>
2236
- <span class="cline-any cline-neutral">&nbsp;</span>
2237
- <span class="cline-any cline-no">&nbsp;</span>
2238
- <span class="cline-any cline-neutral">&nbsp;</span>
2239
- <span class="cline-any cline-neutral">&nbsp;</span>
2240
- <span class="cline-any cline-neutral">&nbsp;</span>
2241
- <span class="cline-any cline-neutral">&nbsp;</span>
2242
- <span class="cline-any cline-neutral">&nbsp;</span>
2243
- <span class="cline-any cline-neutral">&nbsp;</span>
2244
- <span class="cline-any cline-neutral">&nbsp;</span>
2245
- <span class="cline-any cline-yes">15x</span>
2246
- <span class="cline-any cline-yes">13x</span>
2247
- <span class="cline-any cline-neutral">&nbsp;</span>
2248
- <span class="cline-any cline-yes">13x</span>
2249
- <span class="cline-any cline-no">&nbsp;</span>
2250
- <span class="cline-any cline-neutral">&nbsp;</span>
2251
- <span class="cline-any cline-yes">13x</span>
2252
- <span class="cline-any cline-no">&nbsp;</span>
2253
- <span class="cline-any cline-no">&nbsp;</span>
2254
- <span class="cline-any cline-no">&nbsp;</span>
2255
- <span class="cline-any cline-neutral">&nbsp;</span>
2256
- <span class="cline-any cline-no">&nbsp;</span>
2257
- <span class="cline-any cline-no">&nbsp;</span>
2258
- <span class="cline-any cline-neutral">&nbsp;</span>
2259
- <span class="cline-any cline-neutral">&nbsp;</span>
2260
- <span class="cline-any cline-no">&nbsp;</span>
2261
- <span class="cline-any cline-no">&nbsp;</span>
2262
- <span class="cline-any cline-no">&nbsp;</span>
2263
- <span class="cline-any cline-no">&nbsp;</span>
2264
- <span class="cline-any cline-neutral">&nbsp;</span>
2265
- <span class="cline-any cline-neutral">&nbsp;</span>
2266
- <span class="cline-any cline-yes">13x</span>
2267
- <span class="cline-any cline-no">&nbsp;</span>
2268
- <span class="cline-any cline-yes">13x</span>
2269
- <span class="cline-any cline-neutral">&nbsp;</span>
2270
- <span class="cline-any cline-neutral">&nbsp;</span>
2271
- <span class="cline-any cline-neutral">&nbsp;</span>
2272
- <span class="cline-any cline-no">&nbsp;</span>
2273
- <span class="cline-any cline-neutral">&nbsp;</span>
2274
- <span class="cline-any cline-neutral">&nbsp;</span>
2275
- <span class="cline-any cline-neutral">&nbsp;</span>
2276
- <span class="cline-any cline-yes">43x</span>
2277
- <span class="cline-any cline-yes">43x</span>
2278
- <span class="cline-any cline-yes">43x</span>
2279
- <span class="cline-any cline-yes">43x</span>
2280
- <span class="cline-any cline-yes">43x</span>
2281
- <span class="cline-any cline-neutral">&nbsp;</span>
2282
- <span class="cline-any cline-neutral">&nbsp;</span>
2283
- <span class="cline-any cline-neutral">&nbsp;</span>
2284
- <span class="cline-any cline-neutral">&nbsp;</span>
2285
- <span class="cline-any cline-no">&nbsp;</span>
2286
- <span class="cline-any cline-no">&nbsp;</span>
2287
- <span class="cline-any cline-no">&nbsp;</span>
2288
- <span class="cline-any cline-neutral">&nbsp;</span>
2289
- <span class="cline-any cline-neutral">&nbsp;</span>
2290
- <span class="cline-any cline-no">&nbsp;</span>
2291
- <span class="cline-any cline-neutral">&nbsp;</span>
2292
- <span class="cline-any cline-neutral">&nbsp;</span>
2293
- <span class="cline-any cline-neutral">&nbsp;</span>
2294
- <span class="cline-any cline-neutral">&nbsp;</span>
2295
- <span class="cline-any cline-neutral">&nbsp;</span>
2296
- <span class="cline-any cline-neutral">&nbsp;</span>
2297
- <span class="cline-any cline-neutral">&nbsp;</span>
2298
- <span class="cline-any cline-neutral">&nbsp;</span>
2299
- <span class="cline-any cline-neutral">&nbsp;</span>
2300
- <span class="cline-any cline-neutral">&nbsp;</span>
2301
- <span class="cline-any cline-yes">23x</span>
2302
- <span class="cline-any cline-yes">23x</span>
2303
- <span class="cline-any cline-no">&nbsp;</span>
2304
- <span class="cline-any cline-no">&nbsp;</span>
2305
- <span class="cline-any cline-neutral">&nbsp;</span>
2306
- <span class="cline-any cline-neutral">&nbsp;</span>
2307
- <span class="cline-any cline-neutral">&nbsp;</span>
2308
- <span class="cline-any cline-neutral">&nbsp;</span>
2309
- <span class="cline-any cline-neutral">&nbsp;</span>
2310
- <span class="cline-any cline-neutral">&nbsp;</span>
2311
- <span class="cline-any cline-neutral">&nbsp;</span>
2312
- <span class="cline-any cline-neutral">&nbsp;</span>
2313
- <span class="cline-any cline-neutral">&nbsp;</span>
2314
- <span class="cline-any cline-neutral">&nbsp;</span>
2315
- <span class="cline-any cline-neutral">&nbsp;</span>
2316
- <span class="cline-any cline-neutral">&nbsp;</span>
2317
- <span class="cline-any cline-neutral">&nbsp;</span>
2318
- <span class="cline-any cline-neutral">&nbsp;</span>
2319
- <span class="cline-any cline-neutral">&nbsp;</span>
2320
- <span class="cline-any cline-neutral">&nbsp;</span>
2321
- <span class="cline-any cline-no">&nbsp;</span>
2322
- <span class="cline-any cline-no">&nbsp;</span>
2323
- <span class="cline-any cline-neutral">&nbsp;</span>
2324
- <span class="cline-any cline-no">&nbsp;</span>
2325
- <span class="cline-any cline-no">&nbsp;</span>
2326
- <span class="cline-any cline-no">&nbsp;</span>
2327
- <span class="cline-any cline-no">&nbsp;</span>
2328
- <span class="cline-any cline-no">&nbsp;</span>
2329
- <span class="cline-any cline-no">&nbsp;</span>
2330
- <span class="cline-any cline-neutral">&nbsp;</span>
2331
- <span class="cline-any cline-no">&nbsp;</span>
2332
- <span class="cline-any cline-neutral">&nbsp;</span>
2333
- <span class="cline-any cline-no">&nbsp;</span>
2334
- <span class="cline-any cline-no">&nbsp;</span>
2335
- <span class="cline-any cline-no">&nbsp;</span>
2336
- <span class="cline-any cline-no">&nbsp;</span>
2337
- <span class="cline-any cline-no">&nbsp;</span>
2338
- <span class="cline-any cline-no">&nbsp;</span>
2339
- <span class="cline-any cline-neutral">&nbsp;</span>
2340
- <span class="cline-any cline-no">&nbsp;</span>
2341
- <span class="cline-any cline-no">&nbsp;</span>
2342
- <span class="cline-any cline-neutral">&nbsp;</span>
2343
- <span class="cline-any cline-no">&nbsp;</span>
2344
- <span class="cline-any cline-neutral">&nbsp;</span>
2345
- <span class="cline-any cline-neutral">&nbsp;</span>
2346
- <span class="cline-any cline-no">&nbsp;</span>
2347
- <span class="cline-any cline-neutral">&nbsp;</span>
2348
- <span class="cline-any cline-neutral">&nbsp;</span>
2349
- <span class="cline-any cline-neutral">&nbsp;</span>
2350
- <span class="cline-any cline-neutral">&nbsp;</span>
2351
- <span class="cline-any cline-neutral">&nbsp;</span>
2352
- <span class="cline-any cline-neutral">&nbsp;</span>
2353
- <span class="cline-any cline-neutral">&nbsp;</span>
2354
- <span class="cline-any cline-neutral">&nbsp;</span>
2355
- <span class="cline-any cline-yes">10x</span>
2356
- <span class="cline-any cline-yes">10x</span>
2357
- <span class="cline-any cline-yes">10x</span>
2358
- <span class="cline-any cline-yes">10x</span>
2359
- <span class="cline-any cline-neutral">&nbsp;</span>
2360
- <span class="cline-any cline-yes">10x</span>
2361
- <span class="cline-any cline-neutral">&nbsp;</span>
2362
- <span class="cline-any cline-yes">5x</span>
2363
- <span class="cline-any cline-neutral">&nbsp;</span>
2364
- <span class="cline-any cline-neutral">&nbsp;</span>
2365
- <span class="cline-any cline-neutral">&nbsp;</span>
2366
- <span class="cline-any cline-neutral">&nbsp;</span>
2367
- <span class="cline-any cline-neutral">&nbsp;</span>
2368
- <span class="cline-any cline-neutral">&nbsp;</span>
2369
- <span class="cline-any cline-neutral">&nbsp;</span>
2370
- <span class="cline-any cline-neutral">&nbsp;</span>
2371
- <span class="cline-any cline-neutral">&nbsp;</span>
2372
- <span class="cline-any cline-neutral">&nbsp;</span>
2373
- <span class="cline-any cline-neutral">&nbsp;</span>
2374
- <span class="cline-any cline-neutral">&nbsp;</span>
2375
- <span class="cline-any cline-no">&nbsp;</span>
2376
- <span class="cline-any cline-no">&nbsp;</span>
2377
- <span class="cline-any cline-no">&nbsp;</span>
2378
- <span class="cline-any cline-no">&nbsp;</span>
2379
- <span class="cline-any cline-no">&nbsp;</span>
2380
- <span class="cline-any cline-no">&nbsp;</span>
2381
- <span class="cline-any cline-no">&nbsp;</span>
2382
- <span class="cline-any cline-neutral">&nbsp;</span>
2383
- <span class="cline-any cline-neutral">&nbsp;</span>
2384
- <span class="cline-any cline-neutral">&nbsp;</span>
2385
- <span class="cline-any cline-neutral">&nbsp;</span>
2386
- <span class="cline-any cline-neutral">&nbsp;</span>
2387
- <span class="cline-any cline-neutral">&nbsp;</span>
2388
- <span class="cline-any cline-neutral">&nbsp;</span>
2389
- <span class="cline-any cline-neutral">&nbsp;</span>
2390
- <span class="cline-any cline-neutral">&nbsp;</span>
2391
- <span class="cline-any cline-neutral">&nbsp;</span>
2392
- <span class="cline-any cline-yes">10x</span>
2393
- <span class="cline-any cline-neutral">&nbsp;</span>
2394
- <span class="cline-any cline-yes">10x</span>
2395
- <span class="cline-any cline-neutral">&nbsp;</span>
2396
- <span class="cline-any cline-neutral">&nbsp;</span>
2397
- <span class="cline-any cline-yes">10x</span>
2398
- <span class="cline-any cline-yes">10x</span>
2399
- <span class="cline-any cline-neutral">&nbsp;</span>
2400
- <span class="cline-any cline-neutral">&nbsp;</span>
2401
- <span class="cline-any cline-no">&nbsp;</span>
2402
- <span class="cline-any cline-no">&nbsp;</span>
2403
- <span class="cline-any cline-no">&nbsp;</span>
2404
- <span class="cline-any cline-neutral">&nbsp;</span>
2405
- <span class="cline-any cline-yes">10x</span>
2406
- <span class="cline-any cline-yes">10x</span>
2407
- <span class="cline-any cline-neutral">&nbsp;</span>
2408
- <span class="cline-any cline-yes">10x</span>
2409
- <span class="cline-any cline-no">&nbsp;</span>
2410
- <span class="cline-any cline-neutral">&nbsp;</span>
2411
- <span class="cline-any cline-yes">10x</span>
2412
- <span class="cline-any cline-no">&nbsp;</span>
2413
- <span class="cline-any cline-no">&nbsp;</span>
2414
- <span class="cline-any cline-neutral">&nbsp;</span>
2415
- <span class="cline-any cline-no">&nbsp;</span>
2416
- <span class="cline-any cline-neutral">&nbsp;</span>
2417
- <span class="cline-any cline-no">&nbsp;</span>
2418
- <span class="cline-any cline-neutral">&nbsp;</span>
2419
- <span class="cline-any cline-neutral">&nbsp;</span>
2420
- <span class="cline-any cline-neutral">&nbsp;</span>
2421
- <span class="cline-any cline-neutral">&nbsp;</span>
2422
- <span class="cline-any cline-neutral">&nbsp;</span>
2423
- <span class="cline-any cline-neutral">&nbsp;</span>
2424
- <span class="cline-any cline-neutral">&nbsp;</span>
2425
- <span class="cline-any cline-neutral">&nbsp;</span>
2426
- <span class="cline-any cline-neutral">&nbsp;</span>
2427
- <span class="cline-any cline-neutral">&nbsp;</span>
2428
- <span class="cline-any cline-no">&nbsp;</span>
2429
- <span class="cline-any cline-no">&nbsp;</span>
2430
- <span class="cline-any cline-no">&nbsp;</span>
2431
- <span class="cline-any cline-neutral">&nbsp;</span>
2432
- <span class="cline-any cline-neutral">&nbsp;</span>
2433
- <span class="cline-any cline-neutral">&nbsp;</span>
2434
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*
2435
- * Copyright (c) 2022-2023 Braun Nathanael
2436
- *
2437
- * This project is dual licensed under one of the following licenses:
2438
- * - Creative Commons Attribution-NoDerivatives 4.0 International License.
2439
- * - GNU AFFERO GENERAL PUBLIC LICENSE Version 3
2440
- *
2441
- * You should have received a copy of theses licenses along with this work.
2442
- * If not, see &lt;http://creativecommons.org/licenses/by-nd/4.0/&gt; or &lt;http://www.gnu.org/licenses/agpl-3.0.txt&gt;.
2443
- */
2444
- &nbsp;
2445
- import * as easingFn from "d3-ease";
2446
- import deepEqual from "fast-deep-equal";
2447
- import is from "is";
2448
- import React from "react";
2449
- import {clearTweenableValue, deMuxLine, deMuxTween, muxToCss} from "../utils/css";
2450
- import tweenAxis
2451
- from "../utils/CssTweenAxis";
2452
- import domUtils from "../utils/dom";
2453
- import Inertia from '../utils/inertia';
2454
- import { prefersReducedMotion } from '../utils/motionPrefs';
2455
- &nbsp;
2456
- /**
2457
- * Tweener — the central animation engine for react-voodoo.
2458
- *
2459
- * Responsibilities:
2460
- * - Owns all registered node state: numeric interpolatable values (`tweenRefMaps`),
2461
- * CSS string cache (`tweenRefCSS`), demuxer registries (`muxByTarget`, `muxDataByTarget`).
2462
- * - Drives scroll axes: each Axis registers a CssTweenAxis timeline here; on each
2463
- * scroll event `goTo(pos, tweenRefMaps)` emits deltas directly into tweenRefMaps.
2464
- * - Writes CSS to the DOM directly, bypassing React's render loop entirely, via
2465
- * `_updateTweenRefs()` → `node.style[prop] = value` (or setAttribute for SVG attrs).
2466
- * - Is distributed to all descendants via TweenerContext so that Node, Axis, and
2467
- * Draggable can find the nearest engine without prop-drilling.
2468
- *
2469
- * Tweener is a PURE engine class — it does not extend React.Component and is never
2470
- * rendered. Hosts own its lifecycle and call the lifecycle-named methods manually:
2471
- * - `useVoodoo` instantiates it and drives componentDidMount/WillUnmount from effects
2472
- * - `asTweener` wraps it in a thin TweenerHost function component that also maps the
2473
- * parent engine from TweenerContext (the role the legacy render() used to play)
2474
- * All mutable animation state lives in `this._` (see constructor).
2475
- */
2476
- &nbsp;
2477
- let isBrowserSide = (new Function("try {return this===window;}catch(e){ return false;}"))(),
2478
- isArray = is.array,
2479
- _live, lastTm, _running = [];
2480
- &nbsp;
2481
- /**
2482
- * Build a plain style object from a tweenRefCSS map, filtering out SVG geometry
2483
- * attribute entries (keys prefixed with "attr_") that are applied via setAttribute
2484
- * and must not appear in a React style prop.
2485
- */
2486
- function <span class="fstat-no" title="function not covered" >toStyleProp(</span> css ) {
2487
- const s = <span class="cstat-no" title="statement not covered" >{};</span>
2488
- <span class="cstat-no" title="statement not covered" > for ( const k in css )</span>
2489
- <span class="cstat-no" title="statement not covered" > if ( k.length &lt; 5 || k[0] !== 'a' || k[1] !== 't' || k[2] !== 't' || k[3] !== 'r' || k[4] !== '_' )</span>
2490
- <span class="cstat-no" title="statement not covered" > s[k] = css[k];</span>
2491
- <span class="cstat-no" title="statement not covered" > return s;</span>
2492
- }
2493
- &nbsp;
2494
- /**
2495
- * Runner — a module-level setTimeout-based timer shared across all Tweener instances.
2496
- *
2497
- * This is NOT the per-frame RAF loop. Its job is to drive time-based animations:
2498
- * - `pushAnim()` one-shot timelines
2499
- * - `scrollTo(pos, ms)` eased scroll transitions via `_runScrollGoTo`
2500
- *
2501
- * RAF (`requestAnimationFrame`) is used separately in `_rafLoop` only for the
2502
- * per-frame DOM write pass that flushes accumulated deltas to node.style.
2503
- */
2504
- const Runner = {
2505
- /**
2506
- * Enqueue a new animation. Resets the timeline to position 0, then starts
2507
- * ticking at ~16ms intervals until all queued animations complete.
2508
- */
2509
- run : <span class="fstat-no" title="function not covered" >fu</span>nction ( tl, ctx, duration, cb ) {
2510
- let apply = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >( </span>pos, size ) =&gt; <span class="cstat-no" title="statement not covered" >tl.go(pos / size, ctx);</span></span>
2511
- <span class="cstat-no" title="statement not covered" > _running.push({ apply, duration, cpos: 0, cb });</span>
2512
- <span class="cstat-no" title="statement not covered" > tl.go(0, ctx, true);/</span>/reset tl
2513
- &nbsp;
2514
- <span class="cstat-no" title="statement not covered" > if ( !_live ) {</span>
2515
- <span class="cstat-no" title="statement not covered" > _live = true;</span>
2516
- <span class="cstat-no" title="statement not covered" > lastTm = Date.now();</span>
2517
- <span class="cstat-no" title="statement not covered" > setTimeout(this._tick, 16);</span>
2518
- }
2519
- },
2520
- /**
2521
- * Advance each running animation by elapsed ms. Animations that reach their
2522
- * full duration are completed (callback fired) and removed from the queue.
2523
- * The loop stops itself when the queue is empty.
2524
- */
2525
- _tick: function <span class="fstat-no" title="function not covered" >_tick(</span>) {
2526
- let i = <span class="cstat-no" title="statement not covered" >0,</span> o, tm = <span class="cstat-no" title="statement not covered" >Date.now(),</span> delta = <span class="cstat-no" title="statement not covered" >tm - lastTm;</span>
2527
- <span class="cstat-no" title="statement not covered" > lastTm = tm;</span>
2528
- <span class="cstat-no" title="statement not covered" > for ( ; i &lt; _running.length; i++ ) {</span>
2529
- <span class="cstat-no" title="statement not covered" > _running[i].cpos = Math.min(delta + _running[i].cpos, _running[i].duration);/</span>/cpos
2530
- <span class="cstat-no" title="statement not covered" > _running[i].apply(</span>
2531
- _running[i].cpos, _running[i].duration
2532
- );
2533
- <span class="cstat-no" title="statement not covered" > if ( _running[i].cpos == _running[i].duration ) {</span>
2534
- &nbsp;
2535
- <span class="cstat-no" title="statement not covered" > _running[i].cb &amp;&amp; setTimeout(_running[i].cb);</span>
2536
- <span class="cstat-no" title="statement not covered" > _running.splice(i, 1), i--;</span>
2537
- }
2538
- &nbsp;
2539
- }
2540
- <span class="cstat-no" title="statement not covered" > if ( _running.length )</span>
2541
- <span class="cstat-no" title="statement not covered" > setTimeout(_tick, 16);</span>
2542
- else {
2543
- <span class="cstat-no" title="statement not covered" > _live = false;</span>
2544
- }
2545
- },
2546
- };
2547
- export default class Tweener {
2548
- &nbsp;
2549
- axes = {};
2550
- _scrollWatcherByAxis = {};
2551
- &nbsp;
2552
- // ------------------------------------------------------------
2553
- // -------------------- TweenRefs utils -----------------------
2554
- // ------------------------------------------------------------
2555
- &nbsp;
2556
- // Scratch buffer reused every RAF frame by _updateTweenRef to avoid allocations
2557
- _swap = {};
2558
- &nbsp;
2559
- /**
2560
- * All mutable animation state is stored in `this._` rather than directly on
2561
- * the instance or in React state. This prevents React's reconciler from
2562
- * touching it during re-renders, and avoids the overhead of setState for
2563
- * changes that are written straight to the DOM anyway.
2564
- *
2565
- * Key sub-objects:
2566
- * - `_.tweenRefMaps[id]` — numeric additive values per node (the hot path)
2567
- * - `_.tweenRefCSS[id]` — last-written CSS string values per node
2568
- * - `_.muxByTarget[id]` — active demuxer instances per CSS property per node
2569
- * - `_.muxDataByTarget[id]` — per-target mux metadata (ref counts, unit info)
2570
- * - `_.tweenRefOrigin[id]` — snapshot of initial numeric values at registration time
2571
- * - `_.runningAnims` — pushAnim timelines currently being ticked
2572
- * - `_.refs[id]` — DOM node references set by the ref callback on each Node
2573
- */
2574
- constructor( props ) {
2575
- this.props = props;
2576
- let _ = this._ = {
2577
- refs : {},
2578
- muxByTarget: {},
2579
- };
2580
- _.box = {
2581
- x: 100,
2582
- y: 100,
2583
- z: 800
2584
- };
2585
- this.__isTweener = true;
2586
- _._rafLoop = this._rafLoop.bind(this);
2587
- _.rootRef = this.props.forwardedRef || React.createRef();
2588
- _.options = {
2589
- maxClickTm : 200,
2590
- maxClickOffset: 5,
2591
- ...(props.tweenerOptions || <span class="branch-1 cbranch-no" title="branch not covered" >{})</span>
2592
- };
2593
- _.tweenRefCSS = {};
2594
- _.tweenRefs = {};
2595
- _.tweenRefMaps = {};
2596
- _.iMapOrigin = {};
2597
- _.tweenRefInitialData = {};
2598
- _.tweenEnabled = true;
2599
- _.tweenRefOrigin = {};
2600
- _.tweenRefOriginCss = {};
2601
- _.muxDataByTarget = _.muxDataByTarget || {};
2602
- _.tweenRefDemuxed = _.tweenRefDemuxed || {};
2603
- _.tweenRefTargets = _.tweenRefTargets || [];
2604
- _.runningAnims = _.runningAnims || [];
2605
-
2606
- _.scrollHook = [];
2607
- _.activeInertia = [];
2608
- _.defaultAxesPosition = props.tweenerOptions?.defaultAxesPosition;
2609
- // note: side effects (tweenerOptions.ref callback, window resize listener)
2610
- // live in componentDidMount — hosts may construct engines during render
2611
- // passes that never commit (StrictMode, concurrent rendering), so the
2612
- // constructor must stay pure.
2613
- }
2614
-
2615
- /**
2616
- * Register (or re-register) an animatable node.
2617
- *
2618
- * First call: allocates `tweenRefMaps[id]` with numeric initial values derived
2619
- * from `iMap` via deMuxTween. The resulting demuxer instances are stored in
2620
- * `muxByTarget[id]` so the same parsers are reused on every subsequent frame.
2621
- *
2622
- * Subsequent calls with a changed `iMap` or `iStyle`: hot-swaps the initial
2623
- * offset so any running animation deltas are preserved. The algorithm:
2624
- * 1. Subtracts the old origin from tweenRefMaps (undoes previous baseline).
2625
- * 2. Re-demuxes the new iMap to get a fresh tweenableMap.
2626
- * 3. Adds the new tweenableMap to tweenRefMaps (applies new baseline).
2627
- * This keeps in-flight animations (whose deltas are already accumulated in
2628
- * tweenRefMaps) intact through style prop changes.
2629
- *
2630
- * Returns `{ style, ref }` — style is the initial CSS for React's first render;
2631
- * ref is a callback that stores the DOM node into `_.refs[id]` for direct writes.
2632
- */
2633
- <span class="fstat-no" title="function not covered" > tw</span>eenRef( id, iStyle = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> iMap = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> pos, ref, noref, mapReset ) {// ref initial style
2634
-
2635
-
2636
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span>
2637
- tweenableMap = <span class="cstat-no" title="statement not covered" >{};</span>
2638
-
2639
- let initials = <span class="cstat-no" title="statement not covered" >{};</span>
2640
- <span class="cstat-no" title="statement not covered" > if ( !_.tweenRefs[id] )</span>
2641
- <span class="cstat-no" title="statement not covered" > _.tweenRefTargets.push(id);</span>
2642
-
2643
- <span class="cstat-no" title="statement not covered" > if ( _.tweenRefs[id] &amp;&amp; (// if node exist hot switch initial values</span>
2644
- mapReset
2645
- || (_.iMapOrigin[id] !== iMap || !deepEqual(iMap, _.iMapOrigin[id]))
2646
- || (_.tweenRefOriginCss[id] !== iStyle || !deepEqual(iStyle, _.tweenRefOriginCss[id]))
2647
- ) ) {
2648
-
2649
- //console.warn('ref exist &amp; style is !==', id, iStyle,
2650
- // _.tweenRefOriginCss[id], mapReset)
2651
- <span class="cstat-no" title="statement not covered" > _.iMapOrigin[id] = iMap;</span>
2652
- <span class="cstat-no" title="statement not covered" > _.tweenRefOriginCss[id] = iStyle;</span>
2653
- <span class="cstat-no" title="statement not covered" > iStyle = iStyle || {};</span>
2654
- <span class="cstat-no" title="statement not covered" > iMap = iMap || {};</span>
2655
-
2656
-
2657
- <span class="cstat-no" title="statement not covered" > iStyle = { ...iStyle, ...deMuxTween(iMap, tweenableMap, initials, _.muxDataByTarget[id], _.muxByTarget[id], false, true) };</span>
2658
-
2659
- //console.log("update ref", id)
2660
-
2661
- // minus initial values
2662
- <span class="cstat-no" title="statement not covered" > Object.keys(_.tweenRefOrigin[id])</span>
2663
- .forEach(
2664
- <span class="fstat-no" title="function not covered" > ke</span>y =&gt; (<span class="cstat-no" title="statement not covered" >_.tweenRefMaps[id][key] -= _.tweenRefOrigin[id][key])</span>
2665
- );
2666
- // set defaults values in case of
2667
- <span class="cstat-no" title="statement not covered" > Object.keys(initials)</span>
2668
- .forEach(
2669
- <span class="fstat-no" title="function not covered" > ke</span>y =&gt; (<span class="cstat-no" title="statement not covered" >_.tweenRefMaps[id][key] = is.number(_.tweenRefMaps[id][key])</span>
2670
- ? _.tweenRefMaps[id][key]
2671
- : initials[key])
2672
- );
2673
- // add new initial values
2674
- <span class="cstat-no" title="statement not covered" > Object.keys(tweenableMap)</span>
2675
- .forEach(
2676
- <span class="fstat-no" title="function not covered" > ke</span>y =&gt; (<span class="cstat-no" title="statement not covered" >_.tweenRefMaps[id][key] += tweenableMap[key])</span>
2677
- );
2678
-
2679
- <span class="cstat-no" title="statement not covered" > Object.keys(_.tweenRefOrigin[id])// unset</span>
2680
- .forEach(
2681
- <span class="fstat-no" title="function not covered" > ke</span>y =&gt; {
2682
- <span class="cstat-no" title="statement not covered" > clearTweenableValue(key, key, _.tweenRefMaps[id], _.tweenRefCSS[id], _.muxDataByTarget[id], _.muxByTarget[id])</span>
2683
- }
2684
- );
2685
- <span class="cstat-no" title="statement not covered" > Object.keys(_.tweenRefCSS[id])// unset not tweened</span>
2686
- .forEach(
2687
- <span class="fstat-no" title="function not covered" > ke</span>y =&gt; {
2688
- <span class="cstat-no" title="statement not covered" > if ( _.tweenRefCSS[id][key] &amp;&amp; !_.muxByTarget[id][key] &amp;&amp; !iStyle[key] )</span>
2689
- <span class="cstat-no" title="statement not covered" > delete _.tweenRefCSS[id][key];</span>
2690
- }
2691
- );
2692
- <span class="cstat-no" title="statement not covered" > Object.keys(iStyle)// reset not tweened</span>
2693
- .forEach(
2694
- <span class="fstat-no" title="function not covered" > ke</span>y =&gt; {
2695
- <span class="cstat-no" title="statement not covered" > if ( _.tweenRefCSS[id][key] !== iStyle[key] &amp;&amp; !_.muxByTarget[id][key] )</span>
2696
- <span class="cstat-no" title="statement not covered" > _.tweenRefCSS[id][key] = iStyle[key];</span>
2697
- }
2698
- );
2699
- <span class="cstat-no" title="statement not covered" > _.tweenRefOrigin[id] = { ...tweenableMap };</span>
2700
-
2701
- <span class="cstat-no" title="statement not covered" > muxToCss(_.tweenRefMaps[id], _.tweenRefCSS[id], _.muxByTarget[id], _.muxDataByTarget[id], _.box);</span>
2702
- <span class="cstat-no" title="statement not covered" > this._updateTweenRef(id, true);</span>
2703
- }
2704
- else <span class="cstat-no" title="statement not covered" >if ( !_.tweenRefs[id] ) {</span>
2705
- //console.log("init ref", id)
2706
-
2707
- <span class="cstat-no" title="statement not covered" > _.iMapOrigin[id] = iMap;</span>
2708
- <span class="cstat-no" title="statement not covered" > iStyle = iStyle || {};</span>
2709
- <span class="cstat-no" title="statement not covered" > iMap = iMap || {};</span>
2710
-
2711
- <span class="cstat-no" title="statement not covered" > _.tweenRefs[id] = true;</span>
2712
- <span class="cstat-no" title="statement not covered" > _.muxByTarget[id] = _.muxByTarget[id] || {};</span>
2713
- <span class="cstat-no" title="statement not covered" > _.muxDataByTarget[id] = _.muxDataByTarget[id] || {};</span>
2714
-
2715
- <span class="cstat-no" title="statement not covered" > _.tweenRefOriginCss[id] = iStyle;</span>
2716
-
2717
- <span class="cstat-no" title="statement not covered" > _.tweenRefMaps[id] = _.tweenRefMaps[id] || {};</span>
2718
- <span class="cstat-no" title="statement not covered" > if ( _.tweenRefOrigin[id] ) {</span>
2719
- <span class="cstat-no" title="statement not covered" > iStyle = { ...iStyle, ...deMuxTween(iMap, tweenableMap, initials, _.muxDataByTarget[id], _.muxByTarget[id], false, true) };</span>
2720
-
2721
- //// set defaults values in case of
2722
- <span class="cstat-no" title="statement not covered" > Object.keys(initials)</span>
2723
- .forEach(
2724
- <span class="fstat-no" title="function not covered" > ke</span>y =&gt; (<span class="cstat-no" title="statement not covered" >_.tweenRefMaps[id][key] = is.number(_.tweenRefMaps[id][key])</span>
2725
- ? _.tweenRefMaps[id][key] - initials[key]
2726
- : 0)
2727
- );
2728
- //// add new initial values
2729
- <span class="cstat-no" title="statement not covered" > Object.keys(tweenableMap)</span>
2730
- .forEach(
2731
- <span class="fstat-no" title="function not covered" > ke</span>y =&gt; (<span class="cstat-no" title="statement not covered" >_.tweenRefMaps[id][key] += tweenableMap[key])</span>
2732
- );
2733
- }
2734
- else {
2735
- <span class="cstat-no" title="statement not covered" > iStyle = { ...iStyle, ...deMuxTween(iMap, tweenableMap, initials, _.muxDataByTarget[id], _.muxByTarget[id]) };</span>
2736
-
2737
-
2738
- // init / reset or get the tweenable view
2739
- <span class="cstat-no" title="statement not covered" > tweenableMap = Object.assign({}, initials, tweenableMap || {});</span>
2740
-
2741
- // set defaults values in case of
2742
- // add new initial values
2743
- <span class="cstat-no" title="statement not covered" > Object.keys(tweenableMap)</span>
2744
- .forEach(
2745
- <span class="fstat-no" title="function not covered" > ke</span>y =&gt; (<span class="cstat-no" title="statement not covered" >_.tweenRefMaps[id][key] = (_.tweenRefMaps[id][key] || 0) + tweenableMap[key])</span>
2746
- );
2747
- }
2748
- <span class="cstat-no" title="statement not covered" > _.tweenRefOrigin[id] = { ...tweenableMap };</span>
2749
- <span class="cstat-no" title="statement not covered" > _.tweenRefCSS[id] = iStyle;</span>
2750
- <span class="cstat-no" title="statement not covered" > tweenableMap = _.tweenRefMaps[id];</span>
2751
- <span class="cstat-no" title="statement not covered" > muxToCss(tweenableMap, iStyle, _.muxByTarget[id], _.muxDataByTarget[id], _.box);</span>
2752
-
2753
- }
2754
- else {
2755
-
2756
- <span class="cstat-no" title="statement not covered" > muxToCss(_.tweenRefMaps[id], _.tweenRefCSS[id], _.muxByTarget[id], _.muxDataByTarget[id], _.box);</span>
2757
- }
2758
- //console.log('tweenRef::tweenRef:519: ', id, { ..._.muxDataByTarget[id] }, {
2759
- // ..._.tweenRefCSS[id] });
2760
- <span class="cstat-no" title="statement not covered" > if ( noref )</span>
2761
- <span class="cstat-no" title="statement not covered" > return {</span>
2762
- style: toStyleProp(_.tweenRefCSS[id])
2763
- };
2764
- else
2765
- <span class="cstat-no" title="statement not covered" > return {</span>
2766
- style: toStyleProp(_.tweenRefCSS[id]),
2767
- ref : is.function(ref)
2768
- ? <span class="fstat-no" title="function not covered" >no</span>de =&gt; (<span class="cstat-no" title="statement not covered" >_.refs[id] = ref(node))</span>
2769
- : ref
2770
- ? <span class="fstat-no" title="function not covered" >no</span>de =&gt; (<span class="cstat-no" title="statement not covered" >_.refs[id] = ref.current = node)</span>
2771
- : <span class="fstat-no" title="function not covered" >no</span>de =&gt; (<span class="cstat-no" title="statement not covered" >_.refs[id] = node)</span>
2772
- };
2773
- }
2774
-
2775
- /**
2776
- * Delete tweenable element
2777
- * @param id
2778
- */
2779
- <span class="fstat-no" title="function not covered" > rm</span>TweenRef( id ) {
2780
- <span class="cstat-no" title="statement not covered" > if ( this._.tweenRefs[id] ) {</span>
2781
- <span class="cstat-no" title="statement not covered" > this._.tweenRefTargets.splice(this._.tweenRefTargets.indexOf(id), 1);</span>
2782
- <span class="cstat-no" title="statement not covered" > delete this._.tweenRefs[id];</span>
2783
- <span class="cstat-no" title="statement not covered" > delete this._.muxByTarget[id];</span>
2784
- <span class="cstat-no" title="statement not covered" > delete this._.muxDataByTarget[id];</span>
2785
- <span class="cstat-no" title="statement not covered" > delete this._.iMapOrigin[id];</span>
2786
- <span class="cstat-no" title="statement not covered" > delete this._.tweenRefOrigin[id];</span>
2787
- <span class="cstat-no" title="statement not covered" > delete this._.tweenRefCSS[id];</span>
2788
- <span class="cstat-no" title="statement not covered" > delete this._.tweenRefMaps[id];</span>
2789
- <span class="cstat-no" title="statement not covered" > delete this._.refs[id];</span>
2790
- }
2791
- }
2792
-
2793
- /**
2794
- * Reset tweenRefs
2795
- * @param targets
2796
- */
2797
- <span class="fstat-no" title="function not covered" > re</span>setTweenable( ...targets ) {
2798
- let _ = <span class="cstat-no" title="statement not covered" >this._;</span>
2799
- <span class="cstat-no" title="statement not covered" > targets.forEach(</span>
2800
- <span class="fstat-no" title="function not covered" > ( </span>t ) =&gt; {
2801
- <span class="cstat-no" title="statement not covered" > this.tweenRef(t, _.tweenRefOriginCss[t], _.iMapOrigin[t], null, null, null, true)</span>
2802
- }
2803
- );
2804
- <span class="cstat-no" title="statement not covered" > this._updateTweenRefs();</span>
2805
- }
2806
-
2807
- /**
2808
- * Update tweenRefs style ( anims &amp; axis will still update the ref )
2809
- * @param target
2810
- * @param style
2811
- * @param postPone
2812
- * @returns {*}
2813
- */
2814
- <span class="fstat-no" title="function not covered" > up</span>dateRefStyle( target, style, postPone ) {
2815
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span> initials = <span class="cstat-no" title="statement not covered" >{},</span> pureCss;
2816
-
2817
- // allow batched stykes updates
2818
- <span class="cstat-no" title="statement not covered" > if ( isArray(target) &amp;&amp; isArray(style) )</span>
2819
- <span class="cstat-no" title="statement not covered" > return target.map(<span class="fstat-no" title="function not covered" >( </span>m, i ) =&gt; <span class="cstat-no" title="statement not covered" >this.updateRefStyle(m, style[i], postPone))</span>;</span>
2820
- <span class="cstat-no" title="statement not covered" > if ( isArray(target) )</span>
2821
- <span class="cstat-no" title="statement not covered" > return target.map(<span class="fstat-no" title="function not covered" >( </span>m ) =&gt; <span class="cstat-no" title="statement not covered" >this.updateRefStyle(m, style, postPone))</span>;</span>
2822
-
2823
- <span class="cstat-no" title="statement not covered" > if ( !_.tweenRefMaps[target] )</span>
2824
- <span class="cstat-no" title="statement not covered" > return console.warn("[react-voodoo] Cannot update styles: unknown Node id '", target, "'");</span>
2825
-
2826
- <span class="cstat-no" title="statement not covered" > pureCss = deMuxTween(style, _.tweenRefMaps[target], initials, _.muxDataByTarget[target], _.muxByTarget[target]);</span>
2827
- <span class="cstat-no" title="statement not covered" > Object.assign(_.tweenRefCSS[target], pureCss);</span>
2828
- <span class="cstat-no" title="statement not covered" > Object.assign(_.tweenRefOriginCss[target], pureCss);</span>
2829
- <span class="cstat-no" title="statement not covered" > muxToCss(_.tweenRefMaps[target], _.tweenRefCSS[target], _.muxByTarget[target], _.muxDataByTarget[target], _.box);</span>
2830
- <span class="cstat-no" title="statement not covered" > this._updateTweenRef(target, true);</span>
2831
- }
2832
-
2833
- // ------------------------------------------------------------
2834
- // -------------------- Pushable anims ------------------------
2835
- // ------------------------------------------------------------
2836
-
2837
- /**
2838
- * Retrieve the tween ref dom node
2839
- * @param id
2840
- * @returns {*}
2841
- */
2842
- <span class="fstat-no" title="function not covered" > ge</span>tTweenableRef( id ) {
2843
- <span class="cstat-no" title="statement not covered" > if ( this._.refs[id]?.nodeType === 1 )</span>
2844
- <span class="cstat-no" title="statement not covered" > return this._.refs[id];</span>
2845
- else <span class="cstat-no" title="statement not covered" >if ( this._.refs[id]?._?.rootRef?.current &amp;&amp; is.element(this._.refs[id]._.rootRef.current) )</span>
2846
- <span class="cstat-no" title="statement not covered" > return this._.refs[id]._.rootRef.current</span>
2847
- else <span class="cstat-no" title="statement not covered" >if ( !this._.tweenRefs[id] )</span>
2848
- <span class="cstat-no" title="statement not covered" > console.warn("[react-voodoo] getTweenableRef: no registered node found for id '", id, "'")</span>
2849
- }
2850
-
2851
- /**
2852
- * Get the root dom node of the tweener element
2853
- * @returns {*}
2854
- */
2855
- getRootNode() {
2856
- try {
2857
- return this._.rootRef &amp;&amp; this._.rootRef.current;
2858
- } catch ( e ) {
2859
- <span class="cstat-no" title="statement not covered" > return this._.rootRef &amp;&amp; this._.rootRef.current;</span>
2860
- }
2861
- }
2862
-
2863
- // ------------------------------------------------------------
2864
- // ------------------ Scrollable axes -------------------------
2865
- // ------------------------------------------------------------
2866
-
2867
- /**
2868
- * Run a one-shot animation timeline and return a Promise that resolves when it completes.
2869
- *
2870
- * If `anim` is a plain descriptor array, it is demuxed into a CssTweenAxis here.
2871
- * The axis is handed to `tweenAxis.run()` which drives it via the module-level
2872
- * Runner (setTimeout loop). While the animation runs, the RAF loop is also kept
2873
- * alive so DOM writes happen every frame.
2874
- *
2875
- * On completion the axis is destroyed (returned to the pool) and the demuxed
2876
- * property locks are released via `clearTweenableValue`.
2877
- */
2878
- <span class="fstat-no" title="function not covered" > pu</span>shAnim( anim, then, keepResults = <span class="branch-0 cbranch-no" title="branch not covered" >true </span>) {
2879
- let sl,
2880
- initial,
2881
- _ = <span class="cstat-no" title="statement not covered" >this._,</span>
2882
- initials = <span class="cstat-no" title="statement not covered" >{},</span>
2883
- fail;
2884
-
2885
- <span class="cstat-no" title="statement not covered" > if ( isArray(anim) ) {</span>
2886
- <span class="cstat-no" title="statement not covered" > sl = anim;</span>
2887
- }
2888
- else {
2889
- <span class="cstat-no" title="statement not covered" > sl = anim.anims;</span>
2890
- <span class="cstat-no" title="statement not covered" > initial = anim.initial;</span>
2891
- }
2892
-
2893
- <span class="cstat-no" title="statement not covered" > if ( !(sl instanceof tweenAxis) ) {</span>
2894
- // tweenLine, initials, data, demuxers
2895
- <span class="cstat-no" title="statement not covered" > sl = deMuxLine(sl, initials, this._.muxDataByTarget, this._.muxByTarget);</span>
2896
- <span class="cstat-no" title="statement not covered" > sl = new tweenAxis(sl, this._.tweenRefMaps);</span>
2897
- <span class="cstat-no" title="statement not covered" > Object.keys(initials)</span>
2898
- .forEach(
2899
- <span class="fstat-no" title="function not covered" > id</span> =&gt; (
2900
- <span class="cstat-no" title="statement not covered" > this._.tweenRefMaps[id] &amp;&amp;</span>
2901
- Object.assign(this._.tweenRefMaps[id], {
2902
- ...initials[id],
2903
- ...this._.tweenRefMaps[id]
2904
- }) || (fail = console.warn("[react-voodoo] pushAnim: cannot find tween target '", id, "' in", Tweener.displayName) || true)
2905
- )
2906
- )
2907
- }
2908
- <span class="cstat-no" title="statement not covered" > if ( fail )</span>
2909
- <span class="cstat-no" title="statement not covered" > return;</span>
2910
-
2911
-
2912
- <span class="cstat-no" title="statement not covered" > return new Promise(</span>
2913
- <span class="fstat-no" title="function not covered" > re</span>solve =&gt; {
2914
-
2915
- // start timer launch @todo
2916
- // reduced motion: tm=1 → the first Runner tick completes the timeline,
2917
- // applying the full final state (keepResults &amp; cleanup path unchanged)
2918
- <span class="cstat-no" title="statement not covered" > sl.run(this._.tweenRefMaps, <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
2919
- let i = <span class="cstat-no" title="statement not covered" >this._.runningAnims.indexOf(sl);</span>
2920
- <span class="cstat-no" title="statement not covered" > if ( i != -1 )</span>
2921
- <span class="cstat-no" title="statement not covered" > this._.runningAnims.splice(i, 1);</span>
2922
- //console.log( _.muxDataByTarget)
2923
- <span class="cstat-no" title="statement not covered" > Object.keys(initials)// unset</span>
2924
- .forEach(
2925
- <span class="fstat-no" title="function not covered" > id</span> =&gt; {
2926
- <span class="cstat-no" title="statement not covered" > Object.keys(initials[id])// unset</span>
2927
- .forEach(
2928
- <span class="fstat-no" title="function not covered" > rk</span>ey =&gt; {
2929
- // todo
2930
- <span class="cstat-no" title="statement not covered" > clearTweenableValue(rkey, rkey, _.tweenRefMaps[id], _.tweenRefCSS[id], _.muxDataByTarget[id], _.muxByTarget[id], keepResults)</span>
2931
- })
2932
- });
2933
- <span class="cstat-no" title="statement not covered" > sl.destroy();</span>
2934
- <span class="cstat-no" title="statement not covered" > resolve(sl);</span>
2935
- }, this.shouldReduceMotion() ? 1 : undefined);
2936
-
2937
- <span class="cstat-no" title="statement not covered" > this._.runningAnims.push(sl);</span>
2938
-
2939
- <span class="cstat-no" title="statement not covered" > if ( !this._.live ) {</span>
2940
- <span class="cstat-no" title="statement not covered" > this._.live = true;</span>
2941
- <span class="cstat-no" title="statement not covered" > requestAnimationFrame(this._._rafLoop = this._._rafLoop || this._rafLoop.bind(this));</span>
2942
- }
2943
- }
2944
- ).then(<span class="fstat-no" title="function not covered" >sl</span> =&gt; (<span class="cstat-no" title="statement not covered" >then &amp;&amp; then(sl))</span>);
2945
-
2946
- }
2947
-
2948
- /**
2949
- * Update tweenRef raw tweened values
2950
- * @param id
2951
- * @param map
2952
- * @param reset
2953
- */
2954
- <span class="fstat-no" title="function not covered" > ap</span>plyTweenState( id, map, reset ) {
2955
- let tmap = <span class="cstat-no" title="statement not covered" >{},</span> initials = <span class="cstat-no" title="statement not covered" >{};</span>
2956
- <span class="cstat-no" title="statement not covered" > deMuxTween(map, tmap, initials, this._.muxDataByTarget[id], this._.muxByTarget[id], true)</span>
2957
- <span class="cstat-no" title="statement not covered" > Object.keys(tmap).map(</span>
2958
- <span class="fstat-no" title="function not covered" > ( </span>p ) =&gt; <span class="cstat-no" title="statement not covered" >this._.tweenRefMaps[id][p] = (!reset &amp;&amp; this._.tweenRefMaps[id][p] || initials[p]) + tmap[p]</span>
2959
- );
2960
- }
2961
-
2962
- /**
2963
- * Will init / update a scrollable axis
2964
- * @param axe
2965
- * @param _inertia
2966
- * @param _scrollableArea
2967
- * @param _scrollableBounds
2968
- * @param _scrollableWindow
2969
- * @param defaultPosition
2970
- * @param scrollFirst
2971
- * @param reset
2972
- */
2973
- initAxis( axe, {
2974
- inertia : _inertia,
2975
- scrollableArea : _scrollableArea = <span class="branch-0 cbranch-no" title="branch not covered" >0,</span>
2976
- scrollableBounds: _scrollableBounds,
2977
- scrollableWindow: _scrollableWindow,
2978
- defaultPosition,
2979
- scrollFirst
2980
- }, reset ) {
2981
-
2982
-
2983
- let _ = this._,
2984
- dim = this.axes[axe],
2985
- scrollableBounds = _scrollableBounds,
2986
- scrollPos = !reset &amp;&amp; dim
2987
- ? <span class="branch-0 cbranch-no" title="branch not covered" >dim.scrollPos</span>
2988
- : _.defaultAxesPosition?.[axe] || defaultPosition || scrollableBounds &amp;&amp; <span class="branch-3 cbranch-no" title="branch not covered" >scrollableBounds.min </span>|| 0,
2989
- scrollableArea = Math.max(dim &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >dim.scrollableArea </span>|| 0, _scrollableArea),
2990
- scrollableWindow = Math.max(dim &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >dim.scrollableWindow </span>|| 0, _scrollableWindow),
2991
- targetPos = dim ? <span class="branch-0 cbranch-no" title="branch not covered" >dim.targetPos </span>: scrollPos,
2992
- inertia = (
2993
- dim ? <span class="branch-0 cbranch-no" title="branch not covered" >dim.inertia </span>: new Inertia({// todo mk pure
2994
- disabled : !_inertia,
2995
- ...(_inertia || {}),
2996
- value : scrollPos,
2997
- reducedMotion: () =&gt; this.shouldReduceMotion()
2998
- })),
2999
- nextDescr = {
3000
- //...(_inertia || {}),
3001
- scrollFirst,
3002
- tweenAxis: dim &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >dim.tweenAxis </span>|| [],
3003
- scrollPos,
3004
- targetPos,
3005
- inertia,
3006
- scrollableWindow,
3007
- scrollableBounds,
3008
- scrollableArea,
3009
- scrollTo : <span class="fstat-no" title="function not covered" >( </span>pos, tm, ease, noEvents ) =&gt; {
3010
- <span class="cstat-no" title="statement not covered" > return this.scrollTo(pos, tm, axe, ease, noEvents)</span>
3011
- }
3012
- };
3013
-
3014
- this.axes[axe] = nextDescr;
3015
- !_inertia &amp;&amp; (inertia._.disabled = true);
3016
- (_inertia) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >inertia </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >!inertia.active </span>&amp;&amp; (<span class="branch-3 cbranch-no" title="branch not covered" >inertia._.pos = scrollPos)</span>;
3017
- (_inertia) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >inertia </span>&amp;&amp; (<span class="branch-2 cbranch-no" title="branch not covered" >inertia.updateConf(_inertia))</span>;
3018
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( inertia &amp;&amp; scrollableBounds )
3019
- <span class="cstat-no" title="statement not covered" > inertia.setBounds?.(scrollableBounds.min, scrollableBounds.max);</span>
3020
- else
3021
- inertia &amp;&amp; inertia.setBounds?.(0, scrollableArea)
3022
- }
3023
-
3024
- <span class="fstat-no" title="function not covered" > _g</span>etAxis( axe = <span class="branch-0 cbranch-no" title="branch not covered" >"scrollY" </span>) {
3025
- let _ = <span class="cstat-no" title="statement not covered" >this._;</span>
3026
-
3027
- <span class="cstat-no" title="statement not covered" > this.axes[axe] = this.axes[axe] || {</span>
3028
- tweenAxis : [],
3029
- scrollPos : _.options.initialScrollPos &amp;&amp; _.options.initialScrollPos[axe] || 0,
3030
- targetPos : 0,
3031
- scrollableWindow: 0,
3032
- scrollableArea : 0,
3033
- inertia : new Inertia({
3034
- value : _.options.initialScrollPos &amp;&amp; _.options.initialScrollPos[axe] || 0,
3035
- ...(_.options.axes &amp;&amp; _.options.axes[axe] &amp;&amp; _.options.axes[axe].inertia || {}),
3036
- reducedMotion: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.shouldReduceMotion()</span>
3037
- }),
3038
- scrollTo : <span class="fstat-no" title="function not covered" >( </span>pos, tm, ease, noEvents ) =&gt; {
3039
- <span class="cstat-no" title="statement not covered" > return this.scrollTo(pos, tm, axe, ease, noEvents)</span>
3040
- }
3041
- };
3042
-
3043
- <span class="cstat-no" title="statement not covered" > return this.axes[axe];</span>
3044
- }
3045
-
3046
- /**
3047
- * Resolve the effective reduced-motion state for this tweener.
3048
- *
3049
- * Driven by the `reducedMotion` tweener option:
3050
- * 'user' — follow the OS prefers-reduced-motion setting (live)
3051
- * 'always' — always reduce
3052
- * 'never' — never reduce (default: existing behavior)
3053
- *
3054
- * When active: eased scrollTo() calls become instant, pushAnim() timelines jump
3055
- * to their final state, and inertia releases teleport straight to the predicted
3056
- * snap target. Direct 1:1 dragging is intentionally unaffected (user-controlled
3057
- * motion is exempt from reduced-motion guidelines).
3058
- *
3059
- * @returns {boolean}
3060
- */
3061
- shouldReduceMotion() {
3062
- // optional chain: useVoodoo's options hot-update effect can leave _.options
3063
- // undefined when the hook is called without arguments
3064
- const mode = this._.options?.reducedMotion;
3065
- return mode === 'always' || (mode === 'user' &amp;&amp; prefersReducedMotion());
3066
- }
3067
- &nbsp;
3068
- /**
3069
- * Return axis infos
3070
- */
3071
- <span class="fstat-no" title="function not covered" > ge</span>tAxisState( axe ) {
3072
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span> state = <span class="cstat-no" title="statement not covered" >{};</span>
3073
- <span class="cstat-no" title="statement not covered" > this.axes &amp;&amp; Object.keys(this.axes)</span>
3074
- .forEach(
3075
- <span class="fstat-no" title="function not covered" > ax</span>e =&gt; (<span class="cstat-no" title="statement not covered" >state[axe] = this.axes[axe].targetPos || this.axes[axe].scrollPos)</span>
3076
- );
3077
- <span class="cstat-no" title="statement not covered" > return state;</span>
3078
- }
3079
-
3080
- <span class="fstat-no" title="function not covered" > ge</span>tScrollPos( axis = <span class="branch-0 cbranch-no" title="branch not covered" >"scrollY" </span>) {
3081
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span> state = <span class="cstat-no" title="statement not covered" >{};</span>
3082
- <span class="cstat-no" title="statement not covered" > return this.axes[axis]</span>
3083
- ? this.axes[axis].targetPos || this.axes[axis].scrollPos
3084
- : 0
3085
- }
3086
-
3087
- /**
3088
- * Scroll an axis to `newPos`.
3089
- *
3090
- * Fast path (ms === 0): directly calls `axis.tweenAxis[].goTo(newPos)` and
3091
- * triggers a single `_updateTweenRefs()` pass — no timer is started.
3092
- *
3093
- * Eased path (ms &gt; 0): delegates to `_runScrollGoTo()` which enqueues an entry
3094
- * in the module-level Runner, interpolating between the current position and the
3095
- * target over the given duration using the supplied d3-ease function.
3096
- */
3097
- <span class="fstat-no" title="function not covered" > sc</span>rollTo( newPos, ms = <span class="branch-0 cbranch-no" title="branch not covered" >0,</span> axe = <span class="branch-0 cbranch-no" title="branch not covered" >"scrollY",</span> ease, noEvents ) {
3098
- let _ = <span class="cstat-no" title="statement not covered" >this._;</span>
3099
- <span class="cstat-no" title="statement not covered" > if ( !isBrowserSide ) {</span>
3100
- <span class="cstat-no" title="statement not covered" > console.warn("[react-voodoo] scrollTo() cannot be used server-side — use the Axis defaultPosition prop to set the initial axis position");</span>
3101
- <span class="cstat-no" title="statement not covered" > return Promise.resolve();</span>
3102
- }
3103
- // reduced motion: collapse eased scrolls to the existing instant path —
3104
- // same final state, same events, same resolved Promise
3105
- <span class="cstat-no" title="statement not covered" > if ( ms &amp;&amp; this.shouldReduceMotion() )</span>
3106
- <span class="cstat-no" title="statement not covered" > ms = 0;</span>
3107
- <span class="cstat-no" title="statement not covered" > return new Promise(</span>
3108
- (<span class="fstat-no" title="function not covered" >( </span>resolve, reject ) =&gt; {
3109
- <span class="cstat-no" title="statement not covered" > if ( this.axes &amp;&amp; this.axes[axe] ) {</span>
3110
- let oldPos = <span class="cstat-no" title="statement not covered" >this.axes[axe].targetPos,</span>
3111
- setPos = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >po</span>s =&gt; {</span>
3112
- //console.log('TweenableComp::setPos:514: ', newPos,pos, ms,
3113
- // axe);
3114
- <span class="cstat-no" title="statement not covered" > pos = (~~(pos * 10000)) / 10000;</span>
3115
- <span class="cstat-no" title="statement not covered" > this.axes[axe].targetPos = this.axes[axe].scrollPos = pos;</span>
3116
-
3117
- //this.axes[axe].inertia._doSnap()
3118
- <span class="cstat-no" title="statement not covered" > if ( ~~pos !== oldPos ) {</span>
3119
- <span class="cstat-no" title="statement not covered" > this.axisDidScroll(~~pos, axe);</span>
3120
- <span class="cstat-no" title="statement not covered" > _.rootRef?.current?.componentDidScroll?.(~~pos, axe);</span>
3121
- }
3122
- <span class="cstat-no" title="statement not covered" > this._updateTweenRefs()</span>
3123
- };
3124
-
3125
- <span class="cstat-no" title="statement not covered" > newPos = Math.max(0, newPos);</span>
3126
- <span class="cstat-no" title="statement not covered" > newPos = Math.min(newPos, this.axes[axe].scrollableArea || 0);</span>
3127
-
3128
- <span class="cstat-no" title="statement not covered" > this.axes[axe].targetPos = newPos;</span>
3129
-
3130
- <span class="cstat-no" title="statement not covered" > if ( !ms ) {</span>
3131
- <span class="cstat-no" title="statement not covered" > this.axes?.[axe]?.inertia?.setPos(newPos);</span>
3132
- <span class="cstat-no" title="statement not covered" > if ( this.axes?.[axe]?.inertia?._ ) {</span>
3133
- <span class="cstat-no" title="statement not covered" > newPos = this.axes?.[axe]?.inertia?._.pos;</span>
3134
- }
3135
- <span class="cstat-no" title="statement not covered" > this.axes[axe].tweenAxis.forEach(</span>
3136
- <span class="fstat-no" title="function not covered" > sl</span> =&gt; <span class="cstat-no" title="statement not covered" >sl.goTo(newPos, _.tweenRefMaps, false, noEvents)</span>
3137
- );
3138
- <span class="cstat-no" title="statement not covered" > setPos(newPos);</span>
3139
- <span class="cstat-no" title="statement not covered" > resolve()</span>
3140
- }
3141
- else {
3142
- <span class="cstat-no" title="statement not covered" > this._runScrollGoTo(axe, newPos, ms, easingFn[ease], noEvents, setPos, resolve)</span>
3143
- }
3144
-
3145
- <span class="cstat-no" title="statement not covered" > if ( !_.live ) {</span>
3146
- <span class="cstat-no" title="statement not covered" > _.live = true;</span>
3147
- <span class="cstat-no" title="statement not covered" > requestAnimationFrame(_._rafLoop);</span>
3148
- }
3149
- }
3150
- })).then(
3151
- <span class="fstat-no" title="function not covered" > p </span>=&gt; {
3152
- <span class="cstat-no" title="statement not covered" > this.axes?.[axe]?.inertia?._detectCurrentSnap();</span>
3153
- }
3154
- )
3155
- }
3156
-
3157
- /**
3158
- * Parse a tween descriptor array into a CssTweenAxis, register it on the named
3159
- * axis, and immediately advance it to the current scroll position so there is no
3160
- * visual jump when an axis is added mid-session.
3161
- *
3162
- * The resulting CssTweenAxis is pushed into `dim.tweenAxis[]` so that every
3163
- * future `goTo()` call (from scrolling or inertia) hits all registered timelines
3164
- * for that axis in one pass.
3165
- */
3166
- <span class="fstat-no" title="function not covered" > ad</span>dScrollableAnim( anim, axe = <span class="branch-0 cbranch-no" title="branch not covered" >"scrollY",</span> size ) {
3167
- let sl,
3168
- _ = <span class="cstat-no" title="statement not covered" >this._,</span>
3169
- initials = <span class="cstat-no" title="statement not covered" >{},</span>
3170
- dim = <span class="cstat-no" title="statement not covered" >this._getAxis(axe);</span>
3171
-
3172
- <span class="cstat-no" title="statement not covered" > if ( isArray(anim) ) {</span>
3173
- <span class="cstat-no" title="statement not covered" > sl = anim;</span>
3174
- }
3175
- else {
3176
- <span class="cstat-no" title="statement not covered" > sl = anim.anims;</span>
3177
- <span class="cstat-no" title="statement not covered" > size = anim.length;</span>
3178
- }
3179
-
3180
- //console.warn("add scrollable")
3181
- <span class="cstat-no" title="statement not covered" > if ( !(sl instanceof tweenAxis) ) {</span>
3182
- <span class="cstat-no" title="statement not covered" > sl = deMuxLine(sl, initials, this._.muxDataByTarget, this._.muxByTarget);</span>
3183
-
3184
- <span class="cstat-no" title="statement not covered" > sl = new tweenAxis(sl, _.tweenRefMaps);</span>
3185
- <span class="cstat-no" title="statement not covered" > sl.initials = initials;</span>
3186
-
3187
- <span class="cstat-no" title="statement not covered" > Object.keys(initials)</span>
3188
- .forEach(
3189
- <span class="fstat-no" title="function not covered" > id</span> =&gt; {
3190
- <span class="cstat-no" title="statement not covered" > _.tweenRefOrigin[id] = _.tweenRefOrigin[id] || {};</span>
3191
-
3192
- <span class="cstat-no" title="statement not covered" > _.tweenRefMaps[id] = _.tweenRefMaps[id] || {};</span>
3193
- <span class="cstat-no" title="statement not covered" > Object.assign(this._.tweenRefMaps[id], {</span>
3194
- ...initials[id],
3195
- ...this._.tweenRefMaps[id]
3196
- })
3197
- }
3198
- );
3199
-
3200
- }
3201
-
3202
-
3203
- // init scroll
3204
- <span class="cstat-no" title="statement not covered" > dim.tweenAxis.push(sl);</span>
3205
- <span class="cstat-no" title="statement not covered" > dim.scrollPos = dim.scrollPos || 0;</span>
3206
- <span class="cstat-no" title="statement not covered" > dim.scrollableArea = dim.scrollableArea || 0;</span>
3207
- <span class="cstat-no" title="statement not covered" > dim.scrollableArea = Math.max(dim.scrollableArea, sl.duration);</span>
3208
-
3209
- <span class="cstat-no" title="statement not covered" > if ( !dim.scrollableBounds )</span>
3210
- <span class="cstat-no" title="statement not covered" > dim.inertia?.setBounds(0, dim.scrollableArea);</span>
3211
-
3212
- <span class="cstat-no" title="statement not covered" > sl.goTo(dim.scrollPos, this._.tweenRefMaps, false, true);</span>
3213
- <span class="cstat-no" title="statement not covered" > this._updateTweenRefs();</span>
3214
- <span class="cstat-no" title="statement not covered" > return sl;</span>
3215
- }
3216
-
3217
- /**
3218
- * Remove a tweenAxis object from a component scrollable axis
3219
- * @param sl
3220
- * @param axe
3221
- */
3222
- <span class="fstat-no" title="function not covered" > rm</span>ScrollableAnim( sl, axe = <span class="branch-0 cbranch-no" title="branch not covered" >"scrollY" </span>) {
3223
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span> found,
3224
- dim = <span class="cstat-no" title="statement not covered" >this._getAxis(axe),</span> twAxis;
3225
- let i = <span class="cstat-no" title="statement not covered" >dim.tweenAxis.indexOf(sl);</span>
3226
- <span class="cstat-no" title="statement not covered" > if ( i !== -1 ) {</span>
3227
-
3228
- //dim.tweenAxis[i].destroy();
3229
- <span class="cstat-no" title="statement not covered" > dim.tweenAxis.splice(i, 1);</span>
3230
- <span class="cstat-no" title="statement not covered" > dim.scrollableArea = Math.max(...dim.tweenAxis.map(<span class="fstat-no" title="function not covered" >tl</span> =&gt; <span class="cstat-no" title="statement not covered" >tl.duration)</span>, 0);</span>
3231
- <span class="cstat-no" title="statement not covered" > if ( !dim.scrollableBounds )</span>
3232
- <span class="cstat-no" title="statement not covered" > dim.inertia?.setBounds(0, dim.scrollableArea || 0);</span>
3233
- //console.warn("rm scrollable", { ...this._.tweenRefMaps })
3234
- <span class="cstat-no" title="statement not covered" > sl.goTo(0, this._.tweenRefMaps, false, true);</span>
3235
- //console.warn("rm scrollable", { ...this._.tweenRefMaps["card"] })
3236
-
3237
- <span class="cstat-no" title="statement not covered" > Object.keys(sl.initials)// unset</span>
3238
- .forEach(
3239
- <span class="fstat-no" title="function not covered" > id</span> =&gt; {
3240
- <span class="cstat-no" title="statement not covered" > Object.keys(sl.initials[id])// unset</span>
3241
- .forEach(
3242
- <span class="fstat-no" title="function not covered" > rk</span>ey =&gt; {
3243
- //debugger
3244
- <span class="cstat-no" title="statement not covered" > clearTweenableValue(rkey, rkey, _.tweenRefMaps[id], _.tweenRefCSS[id], _.muxDataByTarget[id], _.muxByTarget[id])</span>
3245
- //!_.tweenRefCSS[id] &amp;&amp;
3246
- //_.refs[id] &amp;&amp; _.refs[id].style &amp;&amp;
3247
- // _.refs[id].style[rkey] &amp;&amp;
3248
- // (_.refs[id].style[rkey] = null);
3249
- })
3250
- });
3251
- <span class="cstat-no" title="statement not covered" > delete sl.initials;</span>
3252
- <span class="cstat-no" title="statement not covered" > sl.destroy();</span>
3253
- <span class="cstat-no" title="statement not covered" > found = true;</span>
3254
- <span class="cstat-no" title="statement not covered" > this._updateTweenRefs();</span>
3255
- }
3256
- <span class="cstat-no" title="statement not covered" > !found &amp;&amp; console.warn("[react-voodoo] rmScrollableAnim: axis not found:", axe)</span>
3257
- }
3258
-
3259
- /**
3260
- * @private fn to push scrollTo
3261
- * @param axe
3262
- * @param to
3263
- * @param tm
3264
- * @param easing
3265
- * @param tick
3266
- * @param cb
3267
- * @private
3268
- */
3269
- <span class="fstat-no" title="function not covered" > _r</span>unScrollGoTo( axe, to, tm, easing = <span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >x </span>=&gt; <span class="cstat-no" title="statement not covered" >x,</span></span> noEvents, tick, cb ) {
3270
- let from = <span class="cstat-no" title="statement not covered" >this.axes[axe].scrollPos,</span>
3271
- length = <span class="cstat-no" title="statement not covered" >to - from;</span>
3272
-
3273
- <span class="cstat-no" title="statement not covered" > _running.push(</span>
3274
- {
3275
- apply : <span class="fstat-no" title="function not covered" >( </span>pos, max ) =&gt; {
3276
- let x = (<span class="cstat-no" title="statement not covered" >from + (easing(pos / max)) * length)</span>;
3277
- <span class="cstat-no" title="statement not covered" > if ( this._.tweenEnabled ) {</span>
3278
- // allow shouldLoop on scrollTo
3279
- <span class="cstat-no" title="statement not covered" > this.axes?.[axe]?.inertia?.setPos(x);</span>
3280
- <span class="cstat-no" title="statement not covered" > if ( this.axes?.[axe]?.inertia?._ ) {</span>
3281
- <span class="cstat-no" title="statement not covered" > x = this.axes?.[axe]?.inertia?._.pos;</span>
3282
- }
3283
- <span class="cstat-no" title="statement not covered" > this.axes[axe].tweenAxis.forEach(</span>
3284
- <span class="fstat-no" title="function not covered" > sl</span> =&gt; <span class="cstat-no" title="statement not covered" >sl.goTo(x, this._.tweenRefMaps, false, noEvents)</span>
3285
- );
3286
- <span class="cstat-no" title="statement not covered" > tick &amp;&amp; tick(x);</span>
3287
- }
3288
- },
3289
- duration: tm,
3290
- cpos : 0,
3291
- cb
3292
- })
3293
- ;
3294
-
3295
- <span class="cstat-no" title="statement not covered" > if ( !_live ) {</span>
3296
- <span class="cstat-no" title="statement not covered" > _live = true;</span>
3297
- <span class="cstat-no" title="statement not covered" > lastTm = Date.now();</span>
3298
- <span class="cstat-no" title="statement not covered" > setTimeout(Runner._tick, 16);</span>
3299
- }
3300
- }
3301
- &nbsp;
3302
- /**
3303
- * Hook to know if the composed element allow scrolling
3304
- * @returns {boolean}
3305
- */
3306
- componentShouldScroll() {
3307
- let _ = this._;
3308
- return _.rootRef &amp;&amp;
3309
- _.rootRef.current &amp;&amp;
3310
- _.rootRef.current.componentShouldScroll ?
3311
- <span class="branch-0 cbranch-no" title="branch not covered" > _.rootRef.current.componentShouldScroll(...arguments) </span>: true
3312
- }
3313
-
3314
- /**
3315
- * Add scroll listener to {axisId} axis, return unwatch
3316
- * @param axisId
3317
- * @param listener
3318
- * @returns {function(...[*]=)}
3319
- */
3320
- <span class="fstat-no" title="function not covered" > wa</span>tchAxis( axisId, listener ) {
3321
- let byId = <span class="cstat-no" title="statement not covered" >this._scrollWatcherByAxis;</span>
3322
- <span class="cstat-no" title="statement not covered" > byId[axisId] = byId[axisId] || [];</span>
3323
- <span class="cstat-no" title="statement not covered" > byId[axisId].push(listener);</span>
3324
- <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
3325
- let index = <span class="cstat-no" title="statement not covered" >byId[axisId].indexOf(listener);</span>
3326
- <span class="cstat-no" title="statement not covered" > byId[axisId].splice(index, 1);</span>
3327
- }
3328
- }
3329
-
3330
- // ------------------------------------------------------------
3331
- // --------------- Inertia &amp; scroll modifiers -----------------
3332
- // ------------------------------------------------------------
3333
-
3334
- axisDidScroll( pos, axisId ) {
3335
- let watchers = this._scrollWatcherByAxis[axisId],
3336
- i = watchers?.length;
3337
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( watchers )
3338
- <span class="cstat-no" title="statement not covered" > while ( i ) <span class="cstat-no" title="statement not covered" >watchers[--i](pos);</span></span>
3339
- }
3340
-
3341
- /**
3342
- * Called from a recurring 16ms setTimeout while inertia is active (set up by
3343
- * the drag handlers in Draggable). Each call reads the next position from
3344
- * `Inertia.update()`, calls `goTo()` on all registered timelines for the axis,
3345
- * and triggers a DOM write via `_updateTweenRefs()`. Re-schedules itself as long
3346
- * as `dim.inertia.active` or `dim.inertia.holding` remains true.
3347
- */
3348
- applyInertia( dim, axe ) {
3349
- let x = dim.inertia.update(), _ = this._;
3350
-
3351
- this.axes[axe].tweenAxis.forEach(
3352
- <span class="fstat-no" title="function not covered" > sl</span> =&gt; {
3353
- <span class="cstat-no" title="statement not covered" > this.axes[axe].targetPos = this.axes[axe].scrollPos = x;</span>
3354
- <span class="cstat-no" title="statement not covered" > sl.goTo(x, this._.tweenRefMaps)</span>
3355
- }
3356
- );
3357
- _.rootRef?.current?.componentDidScroll?.(x, axe);
3358
- this.axisDidScroll(x, axe);
3359
- this._updateTweenRefs()
3360
- if ( dim.inertia.active || <span class="branch-1 cbranch-no" title="branch not covered" >dim.inertia.holding </span>) {
3361
- dim.inertiaFrame = setTimeout(this.applyInertia.bind(this, dim, axe), 16);
3362
- }
3363
- else <span class="missing-if-branch" title="else path not taken" >E</span>{
3364
- <span class="cstat-no" title="statement not covered" > dim.inertiaFrame = null;</span>
3365
- }
3366
- }
3367
-
3368
- /**
3369
- * Return true if at least 1 of this tweener axis have it's inertia active
3370
- * @returns {boolean}
3371
- */
3372
- <span class="fstat-no" title="function not covered" > is</span>InertiaActive() {//todo
3373
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span> active = <span class="cstat-no" title="statement not covered" >false;</span>
3374
- <span class="cstat-no" title="statement not covered" > this.axes &amp;&amp;</span>
3375
- Object.keys(this.axes)
3376
- .forEach(
3377
- <span class="fstat-no" title="function not covered" > ax</span>e =&gt; (<span class="cstat-no" title="statement not covered" >active = active || this.axes[axe] &amp;&amp; this.axes[axe].inertia.active)</span>
3378
- );
3379
- <span class="cstat-no" title="statement not covered" > return active;</span>
3380
- }
3381
-
3382
- <span class="fstat-no" title="function not covered" > is</span>AxisOut( axis, v, abs ) {
3383
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span>
3384
- dim = <span class="cstat-no" title="statement not covered" >this.axes &amp;&amp; this.axes[axis],</span>
3385
- pos = <span class="cstat-no" title="statement not covered" >abs ? v : dim &amp;&amp; (dim.scrollPos + v);</span>
3386
-
3387
- <span class="cstat-no" title="statement not covered" > pos = pos &amp;&amp; Math.round(pos);</span>
3388
-
3389
- <span class="cstat-no" title="statement not covered" > return !dim</span>
3390
- || (
3391
- dim.scrollableBounds
3392
- ?
3393
- (pos &lt;= dim.scrollableBounds.min || pos &gt;= dim.scrollableBounds.max)
3394
- :
3395
- (pos &lt;= 0 || pos &gt;= dim.scrollableArea)
3396
- );
3397
- }
3398
-
3399
- <span class="fstat-no" title="function not covered" > _a</span>ctivateNodeInertia( node ) {
3400
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span>
3401
- i = <span class="cstat-no" title="statement not covered" >_.activeInertia.findIndex(<span class="fstat-no" title="function not covered" >it</span>em =&gt; (<span class="cstat-no" title="statement not covered" >item.target === node)</span>);</span>
3402
- <span class="cstat-no" title="statement not covered" > if ( i === -1 ) {</span>
3403
- <span class="cstat-no" title="statement not covered" > _.activeInertia.push(</span>
3404
- {
3405
- inertia: {
3406
- x: new Inertia({
3407
- max : node.scrollWidth - node.offsetLeft,
3408
- value : node.scrollLeft,
3409
- reducedMotion: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.shouldReduceMotion()</span>
3410
- }),
3411
- y: new Inertia({
3412
- max : node.scrollHeight - node.offsetHeight,
3413
- value : node.scrollTop,
3414
- reducedMotion: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.shouldReduceMotion()</span>
3415
- })
3416
- },
3417
- target : node
3418
- });
3419
- <span class="cstat-no" title="statement not covered" > i = _.activeInertia.length - 1;</span>
3420
- }
3421
- <span class="cstat-no" title="statement not covered" > return _.activeInertia[i].inertia;</span>
3422
-
3423
- }
3424
-
3425
- // ------------------------------------------------------------
3426
- // --------------- Initialization &amp; drawers -------------------
3427
- // ------------------------------------------------------------
3428
-
3429
- _updateNodeInertia = () =&gt; {
3430
- let _ = this._, current, ln = _.activeInertia.length;
3431
-
3432
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( this._inertiaRaf )
3433
- <span class="cstat-no" title="statement not covered" > cancelAnimationFrame(this._inertiaRaf);</span>
3434
-
3435
- for ( let i = 0; ln &gt; i; i++ ) {
3436
- <span class="cstat-no" title="statement not covered" > current = _.activeInertia[i];</span>
3437
- <span class="cstat-no" title="statement not covered" > if ( current.inertia.x.active || current.inertia.x.holding ) {</span>
3438
- <span class="cstat-no" title="statement not covered" > current.target.scrollLeft = ~~current.inertia.x.update()</span>
3439
- }
3440
- <span class="cstat-no" title="statement not covered" > if ( current.inertia.y.active || current.inertia.y.holding ) {</span>
3441
- <span class="cstat-no" title="statement not covered" > current.target.scrollTop = ~~current.inertia.y.update()</span>
3442
- }
3443
-
3444
- <span class="cstat-no" title="statement not covered" > if ( !current.inertia.x.active &amp;&amp; !current.inertia.y.active &amp;&amp; !current.inertia.x.holding &amp;&amp; !current.inertia.y.holding ) {</span>
3445
- <span class="cstat-no" title="statement not covered" > _.activeInertia.slice(i, 1);</span>
3446
- <span class="cstat-no" title="statement not covered" > i--;</span>
3447
- <span class="cstat-no" title="statement not covered" > ln--;</span>
3448
- }
3449
- }
3450
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( ln !== 0 )
3451
- <span class="cstat-no" title="statement not covered" > this._inertiaRaf = requestAnimationFrame(this._updateNodeInertia)</span>
3452
- else this._inertiaRaf = null;
3453
- }
3454
-
3455
- <span class="fstat-no" title="function not covered" > se</span>tRootRef( id ) {
3456
- <span class="cstat-no" title="statement not covered" > this._.rootRef = id;</span>
3457
- }
3458
-
3459
- _updateBox() {
3460
- let node = this.getRootNode();
3461
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( node ) {
3462
- this._.box.inited = true;
3463
- this._.box.x = node.offsetWidth;
3464
- this._.box.y = node.offsetHeight;
3465
- }
3466
- }
3467
-
3468
- <span class="fstat-no" title="function not covered" > _r</span>afLoop() {
3469
- <span class="cstat-no" title="statement not covered" > this._updateTweenRefs();</span>
3470
- <span class="cstat-no" title="statement not covered" > if ( this._.runningAnims.length ) {</span>
3471
- <span class="cstat-no" title="statement not covered" > requestAnimationFrame(this._._rafLoop);</span>
3472
- }
3473
- else {
3474
- <span class="cstat-no" title="statement not covered" > this._.live = false;</span>
3475
- }
3476
- }
3477
-
3478
- /**
3479
- * Hot path — called every RAF frame and after any scroll/inertia event.
3480
- * Iterates every registered node id and delegates to `_updateTweenRef` which
3481
- * reconstructs CSS strings from the accumulated numeric state and writes any
3482
- * changed values to the DOM node directly.
3483
- */
3484
- _updateTweenRefs() {
3485
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( this._.tweenEnabled ) {
3486
- for ( let i = 0, target, node, style; i &lt; this._.tweenRefTargets.length; i++ ) {
3487
- <span class="cstat-no" title="statement not covered" > target = this._.tweenRefTargets[i];</span>
3488
- <span class="cstat-no" title="statement not covered" > style = this._updateTweenRef(target);</span>
3489
- }
3490
- }
3491
- }
3492
- &nbsp;
3493
- /**
3494
- * Swap-buffer DOM write for a single registered target.
3495
- *
3496
- * Writes new CSS values into the shared `this._swap` scratch object, then diffs
3497
- * against `tweenRefCSS[id]` (the last-written values). Only changed properties
3498
- * are applied to the DOM, avoiding unnecessary style recalculations.
3499
- *
3500
- * Keys prefixed with `attr_` are SVG geometry attributes (e.g. `attr_cx`) that
3501
- * must be applied via `element.setAttribute(name, value)` rather than
3502
- * `element.style[name]` because they are not CSS properties.
3503
- */
3504
- <span class="fstat-no" title="function not covered" > _u</span>pdateTweenRef( target, force ) {
3505
- let node, swap = <span class="cstat-no" title="statement not covered" >this._swap,</span> changes;
3506
- <span class="cstat-no" title="statement not covered" > this._.tweenRefCSS[target] &amp;&amp;</span>
3507
- muxToCss(this._.tweenRefMaps[target], swap, this._.muxByTarget[target], this._.muxDataByTarget[target], this._.box);
3508
- <span class="cstat-no" title="statement not covered" > node = this.getTweenableRef(target);</span>
3509
- <span class="cstat-no" title="statement not covered" > if ( node ) {</span>
3510
- <span class="cstat-no" title="statement not covered" > for ( let o in this._.tweenRefCSS[target] )</span>
3511
- <span class="cstat-no" title="statement not covered" > if ( swap[o] === undefined ) {</span>
3512
- <span class="cstat-no" title="statement not covered" > if ( o.length &gt; 5 &amp;&amp; o[0] === 'a' &amp;&amp; o[1] === 't' &amp;&amp; o[2] === 't' &amp;&amp; o[3] === 'r' &amp;&amp; o[4] === '_' )</span>
3513
- <span class="cstat-no" title="statement not covered" > node.setAttribute(o.slice(5), this._.tweenRefCSS[target][o]);</span>
3514
- else
3515
- <span class="cstat-no" title="statement not covered" > node.style[o] = this._.tweenRefCSS[target][o];</span>
3516
- }
3517
- <span class="cstat-no" title="statement not covered" > for ( let o in swap )</span>
3518
- <span class="cstat-no" title="statement not covered" > if ( this._.tweenRefCSS[target].hasOwnProperty(o) ) {</span>
3519
- <span class="cstat-no" title="statement not covered" > if ( force || swap[o] !== this._.tweenRefCSS[target][o] ) {</span>
3520
- <span class="cstat-no" title="statement not covered" > this._.tweenRefCSS[target][o] = swap[o];</span>
3521
- <span class="cstat-no" title="statement not covered" > if ( o.length &gt; 5 &amp;&amp; o[0] === 'a' &amp;&amp; o[1] === 't' &amp;&amp; o[2] === 't' &amp;&amp; o[3] === 'r' &amp;&amp; o[4] === '_' )</span>
3522
- <span class="cstat-no" title="statement not covered" > node.setAttribute(o.slice(5), swap[o]);</span>
3523
- else
3524
- <span class="cstat-no" title="statement not covered" > node.style[o] = swap[o];</span>
3525
- <span class="cstat-no" title="statement not covered" > changes = true;</span>
3526
- }
3527
- <span class="cstat-no" title="statement not covered" > delete swap[o];</span>
3528
- }
3529
- }
3530
- <span class="cstat-no" title="statement not covered" > return toStyleProp(this._.tweenRefCSS[target]);</span>
3531
- }
3532
-
3533
-
3534
- // ------------------------------------------------------------
3535
- // --------------- React Hooks --------------------------------
3536
- // ------------------------------------------------------------
3537
-
3538
- componentWillUnmount() {
3539
- let node = this.getRootNode();
3540
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( this._.tweenEnabled ) {
3541
- this._.tweenEnabled = false;
3542
- window.removeEventListener("resize", this._.onResize);
3543
-
3544
- Object.keys(this.axes).forEach(
3545
- axe =&gt; {
3546
- this.axes[axe].inertiaFrame &amp;&amp;
3547
- clearTimeout(this.axes[axe].inertiaFrame);
3548
- }
3549
- );
3550
- }
3551
- }
3552
-
3553
- /**
3554
- * Apply SVG geometry attribute values (attr_* keys in tweenRefCSS) to the DOM
3555
- * via setAttribute. Called once on mount because these are filtered from the
3556
- * React style prop and cannot be applied via node.style.
3557
- */
3558
- <span class="fstat-no" title="function not covered" > _a</span>pplyInitialSvgAttrs() {
3559
- <span class="cstat-no" title="statement not covered" > for ( const id of this._.tweenRefTargets ) {</span>
3560
- const node = <span class="cstat-no" title="statement not covered" >this.getTweenableRef(id);</span>
3561
- const css = <span class="cstat-no" title="statement not covered" >this._.tweenRefCSS[id];</span>
3562
- <span class="cstat-no" title="statement not covered" > if ( !node || !css ) <span class="cstat-no" title="statement not covered" >continue;</span></span>
3563
- <span class="cstat-no" title="statement not covered" > for ( const k in css )</span>
3564
- <span class="cstat-no" title="statement not covered" > if ( k.length &gt; 5 &amp;&amp; k[0] === 'a' &amp;&amp; k[1] === 't' &amp;&amp; k[2] === 't' &amp;&amp; k[3] === 'r' &amp;&amp; k[4] === '_' )</span>
3565
- <span class="cstat-no" title="statement not covered" > node.setAttribute(k.slice(5), css[k]);</span>
3566
- }
3567
- }
3568
- &nbsp;
3569
- /**
3570
- * Called once after the root DOM node is available. Measures the viewport box,
3571
- * force-writes all initial CSS/attr values to the DOM, and processes the static
3572
- * `scrollableAnim` property — the hook used by the `asTweener` HOC pattern to
3573
- * declare axis animations directly on a class component.
3574
- */
3575
- componentDidMount() {
3576
- let _static = this.constructor;
3577
- &nbsp;
3578
- this._.rendered = true;
3579
- // side effects deferred from the constructor — only mounted engines may
3580
- // touch the DOM or call user callbacks
3581
- this.props.tweenerOptions?.ref?.(this);
3582
- isBrowserSide &amp;&amp; window.addEventListener(
3583
- "resize",
3584
- this._.onResize = this._.onResize || (<span class="fstat-no" title="function not covered" >( </span>e ) =&gt; {//@todo
3585
- <span class="cstat-no" title="statement not covered" > this._updateBox();</span>
3586
- <span class="cstat-no" title="statement not covered" > this._updateTweenRefs();</span>
3587
- <span class="cstat-no" title="statement not covered" > this._.rootRef?.current?.windowDidResize?.(e);</span>
3588
- }));
3589
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( this._.tweenEnabled ) {
3590
- this._updateBox();
3591
- // Force-push all values (CSS and attr_*) to the DOM on initial mount.
3592
- for ( let i = 0; i &lt; this._.tweenRefTargets.length; i++ )
3593
- <span class="cstat-no" title="statement not covered" > this._updateTweenRef(this._.tweenRefTargets[i], true);</span>
3594
- }
3595
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( _static.scrollableAnim ) {
3596
- <span class="cstat-no" title="statement not covered" > if ( is.array(_static.scrollableAnim) )</span>
3597
- <span class="cstat-no" title="statement not covered" > this.addScrollableAnim(_static.scrollableAnim);</span>
3598
- else
3599
- <span class="cstat-no" title="statement not covered" > Object.keys(_static.scrollableAnim)</span>
3600
- .forEach(
3601
- <span class="fstat-no" title="function not covered" > ax</span>e =&gt; <span class="cstat-no" title="statement not covered" >this.addScrollableAnim(_static.scrollableAnim[axe], axe)</span>
3602
- )
3603
- }
3604
- //if ( this._.doRegister || this.__isFirst ) {
3605
- //
3606
- // this._.doRegister = false;
3607
- //}
3608
- }
3609
- &nbsp;
3610
- <span class="fstat-no" title="function not covered" > co</span>mponentDidUpdate( prevProps, prevState ) {
3611
- &nbsp;
3612
- <span class="cstat-no" title="statement not covered" > if ( this._.tweenEnabled ) {</span>
3613
- <span class="cstat-no" title="statement not covered" > this._updateBox();</span>
3614
- <span class="cstat-no" title="statement not covered" > this._updateTweenRefs();</span>
3615
- }
3616
- }
3617
- }
3618
- &nbsp;</pre></td></tr></table></pre>
3619
-
3620
- <div class='push'></div><!-- for sticky footer -->
3621
- </div><!-- /wrapper -->
3622
- <div class='footer quiet pad2 space-top1 center small'>
3623
- Code coverage generated by
3624
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3625
- at 2026-06-06T09:33:16.802Z
3626
- </div>
3627
- <script src="../prettify.js"></script>
3628
- <script>
3629
- window.onload = function () {
3630
- prettyPrint();
3631
- };
3632
- </script>
3633
- <script src="../sorter.js"></script>
3634
- <script src="../block-navigation.js"></script>
3635
- </body>
3636
- </html>
3637
-