react-voodoo 2.6.4 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/scheduled_tasks.lock +1 -0
- package/README.md +23 -7
- package/coverage/clover.xml +2221 -0
- package/coverage/coverage-final.json +35 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/comps/Axis.js.html +391 -0
- package/coverage/lcov-report/comps/Draggable.js.html +1180 -0
- package/coverage/lcov-report/comps/Node.js.html +691 -0
- package/coverage/lcov-report/comps/Tweener.js.html +3637 -0
- package/coverage/lcov-report/comps/TweenerContext.js.html +127 -0
- package/coverage/lcov-report/comps/index.html +176 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/hooks/index.html +146 -0
- package/coverage/lcov-report/hooks/useReducedMotion.js.html +172 -0
- package/coverage/lcov-report/hooks/useTweener.js.html +130 -0
- package/coverage/lcov-report/hooks/useVoodoo.js.html +553 -0
- package/coverage/lcov-report/index.html +206 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov-report/spells/asTweener.js.html +361 -0
- package/coverage/lcov-report/spells/index.html +131 -0
- package/coverage/lcov-report/spells/withTweener.js.html +262 -0
- package/coverage/lcov-report/utils/CssTweenAxis.js.html +721 -0
- package/coverage/lcov-report/utils/css/cssUtils.js.html +916 -0
- package/coverage/lcov-report/utils/css/demux/backgroundColor.js.html +115 -0
- package/coverage/lcov-report/utils/css/demux/boxShadow.js.html +115 -0
- package/coverage/lcov-report/utils/css/demux/filter.js.html +724 -0
- package/coverage/lcov-report/utils/css/demux/index.html +176 -0
- package/coverage/lcov-report/utils/css/demux/textShadow.js.html +115 -0
- package/coverage/lcov-report/utils/css/demux/transform.js.html +1006 -0
- package/coverage/lcov-report/utils/css/demux/typed/any.js.html +640 -0
- package/coverage/lcov-report/utils/css/demux/typed/bool.js.html +196 -0
- package/coverage/lcov-report/utils/css/demux/typed/color.js.html +322 -0
- package/coverage/lcov-report/utils/css/demux/typed/index.html +236 -0
- package/coverage/lcov-report/utils/css/demux/typed/length.js.html +562 -0
- package/coverage/lcov-report/utils/css/demux/typed/multi.js.html +298 -0
- package/coverage/lcov-report/utils/css/demux/typed/number.js.html +199 -0
- package/coverage/lcov-report/utils/css/demux/typed/ratio.js.html +199 -0
- package/coverage/lcov-report/utils/css/demux/typed/shadow.js.html +1060 -0
- package/coverage/lcov-report/utils/css/demux/typed/svgAttr.js.html +214 -0
- package/coverage/lcov-report/utils/css/index.html +146 -0
- package/coverage/lcov-report/utils/css/index.js.html +829 -0
- package/coverage/lcov-report/utils/css/prop.js.html +199 -0
- package/coverage/lcov-report/utils/dom.js.html +1309 -0
- package/coverage/lcov-report/utils/index.html +206 -0
- package/coverage/lcov-report/utils/inertia.js.html +2140 -0
- package/coverage/lcov-report/utils/motionPrefs.js.html +262 -0
- package/coverage/lcov-report/utils/react.js.html +199 -0
- package/coverage/lcov-report/utils/spring.js.html +397 -0
- package/coverage/lcov-report/utils/tweenTools.js.html +1003 -0
- package/coverage/lcov.info +4931 -0
- package/dist/react-voodoo.js +1 -1
- package/dist/react-voodoo.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,3637 @@
|
|
|
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"> </span>
|
|
1251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1252
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1253
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1254
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1256
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1257
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1258
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1259
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1260
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1261
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1267
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1268
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1285
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1292
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
1297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1298
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1301
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1303
|
+
<span class="cline-any cline-no"> </span>
|
|
1304
|
+
<span class="cline-any cline-no"> </span>
|
|
1305
|
+
<span class="cline-any cline-no"> </span>
|
|
1306
|
+
<span class="cline-any cline-no"> </span>
|
|
1307
|
+
<span class="cline-any cline-no"> </span>
|
|
1308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1317
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1318
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1320
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1324
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1326
|
+
<span class="cline-any cline-no"> </span>
|
|
1327
|
+
<span class="cline-any cline-no"> </span>
|
|
1328
|
+
<span class="cline-any cline-no"> </span>
|
|
1329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
+
<span class="cline-any cline-no"> </span>
|
|
1331
|
+
<span class="cline-any cline-no"> </span>
|
|
1332
|
+
<span class="cline-any cline-no"> </span>
|
|
1333
|
+
<span class="cline-any cline-no"> </span>
|
|
1334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1340
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1342
|
+
<span class="cline-any cline-no"> </span>
|
|
1343
|
+
<span class="cline-any cline-no"> </span>
|
|
1344
|
+
<span class="cline-any cline-no"> </span>
|
|
1345
|
+
<span class="cline-any cline-no"> </span>
|
|
1346
|
+
<span class="cline-any cline-no"> </span>
|
|
1347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1349
|
+
<span class="cline-any cline-no"> </span>
|
|
1350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1351
|
+
<span class="cline-any cline-no"> </span>
|
|
1352
|
+
<span class="cline-any cline-no"> </span>
|
|
1353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1355
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1356
|
+
<span class="cline-any cline-no"> </span>
|
|
1357
|
+
<span class="cline-any cline-no"> </span>
|
|
1358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1359
|
+
<span class="cline-any cline-no"> </span>
|
|
1360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1364
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
1368
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1369
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1371
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1372
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1373
|
+
<span class="cline-any cline-yes">15x</span>
|
|
1374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1375
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1376
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1386
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1387
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1390
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
1394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1396
|
+
<span class="cline-any cline-yes">15x</span>
|
|
1397
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1398
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1399
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1400
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
1406
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1407
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1408
|
+
<span class="cline-any cline-neutral"> </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"> </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"> </span>
|
|
1426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1429
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1430
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1432
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1433
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1434
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1435
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1438
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1439
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1442
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1448
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1449
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1450
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1451
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1452
|
+
<span class="cline-any cline-no"> </span>
|
|
1453
|
+
<span class="cline-any cline-no"> </span>
|
|
1454
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
+
<span class="cline-any cline-no"> </span>
|
|
1456
|
+
<span class="cline-any cline-no"> </span>
|
|
1457
|
+
<span class="cline-any cline-no"> </span>
|
|
1458
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1459
|
+
<span class="cline-any cline-no"> </span>
|
|
1460
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1461
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1462
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1463
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1464
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1467
|
+
<span class="cline-any cline-no"> </span>
|
|
1468
|
+
<span class="cline-any cline-no"> </span>
|
|
1469
|
+
<span class="cline-any cline-no"> </span>
|
|
1470
|
+
<span class="cline-any cline-no"> </span>
|
|
1471
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1473
|
+
<span class="cline-any cline-no"> </span>
|
|
1474
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1475
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1476
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1477
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1478
|
+
<span class="cline-any cline-no"> </span>
|
|
1479
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1480
|
+
<span class="cline-any cline-no"> </span>
|
|
1481
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1483
|
+
<span class="cline-any cline-no"> </span>
|
|
1484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1485
|
+
<span class="cline-any cline-no"> </span>
|
|
1486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1487
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1488
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1489
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1490
|
+
<span class="cline-any cline-no"> </span>
|
|
1491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1492
|
+
<span class="cline-any cline-no"> </span>
|
|
1493
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1494
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1495
|
+
<span class="cline-any cline-no"> </span>
|
|
1496
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1498
|
+
<span class="cline-any cline-no"> </span>
|
|
1499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1501
|
+
<span class="cline-any cline-no"> </span>
|
|
1502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1503
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1504
|
+
<span class="cline-any cline-no"> </span>
|
|
1505
|
+
<span class="cline-any cline-no"> </span>
|
|
1506
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1507
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1508
|
+
<span class="cline-any cline-no"> </span>
|
|
1509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1510
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1511
|
+
<span class="cline-any cline-no"> </span>
|
|
1512
|
+
<span class="cline-any cline-no"> </span>
|
|
1513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1514
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1515
|
+
<span class="cline-any cline-no"> </span>
|
|
1516
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1517
|
+
<span class="cline-any cline-no"> </span>
|
|
1518
|
+
<span class="cline-any cline-no"> </span>
|
|
1519
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1520
|
+
<span class="cline-any cline-no"> </span>
|
|
1521
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1522
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1523
|
+
<span class="cline-any cline-no"> </span>
|
|
1524
|
+
<span class="cline-any cline-no"> </span>
|
|
1525
|
+
<span class="cline-any cline-no"> </span>
|
|
1526
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1527
|
+
<span class="cline-any cline-no"> </span>
|
|
1528
|
+
<span class="cline-any cline-no"> </span>
|
|
1529
|
+
<span class="cline-any cline-no"> </span>
|
|
1530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1531
|
+
<span class="cline-any cline-no"> </span>
|
|
1532
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1533
|
+
<span class="cline-any cline-no"> </span>
|
|
1534
|
+
<span class="cline-any cline-no"> </span>
|
|
1535
|
+
<span class="cline-any cline-no"> </span>
|
|
1536
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1537
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1538
|
+
<span class="cline-any cline-no"> </span>
|
|
1539
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1540
|
+
<span class="cline-any cline-no"> </span>
|
|
1541
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1542
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1543
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1544
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1545
|
+
<span class="cline-any cline-no"> </span>
|
|
1546
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1547
|
+
<span class="cline-any cline-no"> </span>
|
|
1548
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1549
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1550
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1551
|
+
<span class="cline-any cline-no"> </span>
|
|
1552
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1553
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1554
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1555
|
+
<span class="cline-any cline-no"> </span>
|
|
1556
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1557
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1558
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1559
|
+
<span class="cline-any cline-no"> </span>
|
|
1560
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1561
|
+
<span class="cline-any cline-no"> </span>
|
|
1562
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1563
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1564
|
+
<span class="cline-any cline-no"> </span>
|
|
1565
|
+
<span class="cline-any cline-no"> </span>
|
|
1566
|
+
<span class="cline-any cline-no"> </span>
|
|
1567
|
+
<span class="cline-any cline-no"> </span>
|
|
1568
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1569
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1570
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1571
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1572
|
+
<span class="cline-any cline-no"> </span>
|
|
1573
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1574
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1575
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1576
|
+
<span class="cline-any cline-no"> </span>
|
|
1577
|
+
<span class="cline-any cline-no"> </span>
|
|
1578
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1579
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1580
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1581
|
+
<span class="cline-any cline-no"> </span>
|
|
1582
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1583
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1584
|
+
<span class="cline-any cline-no"> </span>
|
|
1585
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1586
|
+
<span class="cline-any cline-no"> </span>
|
|
1587
|
+
<span class="cline-any cline-no"> </span>
|
|
1588
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1589
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1590
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1591
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1592
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1593
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1594
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1595
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1596
|
+
<span class="cline-any cline-no"> </span>
|
|
1597
|
+
<span class="cline-any cline-no"> </span>
|
|
1598
|
+
<span class="cline-any cline-no"> </span>
|
|
1599
|
+
<span class="cline-any cline-no"> </span>
|
|
1600
|
+
<span class="cline-any cline-no"> </span>
|
|
1601
|
+
<span class="cline-any cline-no"> </span>
|
|
1602
|
+
<span class="cline-any cline-no"> </span>
|
|
1603
|
+
<span class="cline-any cline-no"> </span>
|
|
1604
|
+
<span class="cline-any cline-no"> </span>
|
|
1605
|
+
<span class="cline-any cline-no"> </span>
|
|
1606
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1607
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1608
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1609
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1610
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1611
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1612
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1613
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1614
|
+
<span class="cline-any cline-no"> </span>
|
|
1615
|
+
<span class="cline-any cline-no"> </span>
|
|
1616
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1617
|
+
<span class="cline-any cline-no"> </span>
|
|
1618
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1619
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1620
|
+
<span class="cline-any cline-no"> </span>
|
|
1621
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1622
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1623
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1625
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1626
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1627
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1628
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1629
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1630
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1631
|
+
<span class="cline-any cline-no"> </span>
|
|
1632
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1633
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1634
|
+
<span class="cline-any cline-no"> </span>
|
|
1635
|
+
<span class="cline-any cline-no"> </span>
|
|
1636
|
+
<span class="cline-any cline-no"> </span>
|
|
1637
|
+
<span class="cline-any cline-no"> </span>
|
|
1638
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1639
|
+
<span class="cline-any cline-no"> </span>
|
|
1640
|
+
<span class="cline-any cline-no"> </span>
|
|
1641
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1642
|
+
<span class="cline-any cline-no"> </span>
|
|
1643
|
+
<span class="cline-any cline-no"> </span>
|
|
1644
|
+
<span class="cline-any cline-no"> </span>
|
|
1645
|
+
<span class="cline-any cline-no"> </span>
|
|
1646
|
+
<span class="cline-any cline-no"> </span>
|
|
1647
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1648
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1649
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1650
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1651
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1652
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1653
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1654
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1655
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1656
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1657
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1658
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1659
|
+
<span class="cline-any cline-no"> </span>
|
|
1660
|
+
<span class="cline-any cline-no"> </span>
|
|
1661
|
+
<span class="cline-any cline-no"> </span>
|
|
1662
|
+
<span class="cline-any cline-no"> </span>
|
|
1663
|
+
<span class="cline-any cline-no"> </span>
|
|
1664
|
+
<span class="cline-any cline-no"> </span>
|
|
1665
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1666
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1667
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1668
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1669
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1670
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1671
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
1675
|
+
<span class="cline-any cline-no"> </span>
|
|
1676
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1677
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1678
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1679
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1680
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1681
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1682
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1683
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1684
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1685
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1686
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1687
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1688
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1689
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1690
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1691
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1692
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1693
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1694
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1695
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1696
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1697
|
+
<span class="cline-any cline-no"> </span>
|
|
1698
|
+
<span class="cline-any cline-no"> </span>
|
|
1699
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1700
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1701
|
+
<span class="cline-any cline-no"> </span>
|
|
1702
|
+
<span class="cline-any cline-no"> </span>
|
|
1703
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1704
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1705
|
+
<span class="cline-any cline-no"> </span>
|
|
1706
|
+
<span class="cline-any cline-no"> </span>
|
|
1707
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1708
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1709
|
+
<span class="cline-any cline-no"> </span>
|
|
1710
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1711
|
+
<span class="cline-any cline-no"> </span>
|
|
1712
|
+
<span class="cline-any cline-no"> </span>
|
|
1713
|
+
<span class="cline-any cline-no"> </span>
|
|
1714
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1715
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1716
|
+
<span class="cline-any cline-no"> </span>
|
|
1717
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1718
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1719
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1720
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1721
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1722
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1723
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1724
|
+
<span class="cline-any cline-no"> </span>
|
|
1725
|
+
<span class="cline-any cline-no"> </span>
|
|
1726
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1727
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1728
|
+
<span class="cline-any cline-no"> </span>
|
|
1729
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1730
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1731
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1732
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1733
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1734
|
+
<span class="cline-any cline-no"> </span>
|
|
1735
|
+
<span class="cline-any cline-no"> </span>
|
|
1736
|
+
<span class="cline-any cline-no"> </span>
|
|
1737
|
+
<span class="cline-any cline-no"> </span>
|
|
1738
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1739
|
+
<span class="cline-any cline-no"> </span>
|
|
1740
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1741
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1742
|
+
<span class="cline-any cline-no"> </span>
|
|
1743
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1744
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1745
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1746
|
+
<span class="cline-any cline-no"> </span>
|
|
1747
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1748
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1749
|
+
<span class="cline-any cline-no"> </span>
|
|
1750
|
+
<span class="cline-any cline-no"> </span>
|
|
1751
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1752
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1753
|
+
<span class="cline-any cline-no"> </span>
|
|
1754
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1755
|
+
<span class="cline-any cline-no"> </span>
|
|
1756
|
+
<span class="cline-any cline-no"> </span>
|
|
1757
|
+
<span class="cline-any cline-no"> </span>
|
|
1758
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1759
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1760
|
+
<span class="cline-any cline-no"> </span>
|
|
1761
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1762
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1763
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1764
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1765
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1766
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1767
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1769
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1770
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1771
|
+
<span class="cline-any cline-no"> </span>
|
|
1772
|
+
<span class="cline-any cline-no"> </span>
|
|
1773
|
+
<span class="cline-any cline-no"> </span>
|
|
1774
|
+
<span class="cline-any cline-no"> </span>
|
|
1775
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1776
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1777
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1779
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1780
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1781
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1782
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1783
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1784
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1785
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1786
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1787
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1788
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1789
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1790
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1791
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1792
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1793
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1794
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1795
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1796
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1797
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1798
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
1804
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
1809
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1810
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1811
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1812
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1813
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1814
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1815
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1816
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1817
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1818
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1819
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1820
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1821
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1822
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1823
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1824
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1825
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1826
|
+
<span class="cline-any cline-no"> </span>
|
|
1827
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1828
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1829
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
1836
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1837
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1838
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1839
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1840
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1841
|
+
<span class="cline-any cline-no"> </span>
|
|
1842
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1843
|
+
<span class="cline-any cline-no"> </span>
|
|
1844
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1845
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1846
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1847
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1848
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1849
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1850
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1851
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1852
|
+
<span class="cline-any cline-no"> </span>
|
|
1853
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1854
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1855
|
+
<span class="cline-any cline-no"> </span>
|
|
1856
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1857
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1858
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1859
|
+
<span class="cline-any cline-no"> </span>
|
|
1860
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1861
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1862
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1863
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1864
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1865
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1866
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1867
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1868
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1869
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1870
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1871
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1872
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1873
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1874
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1875
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1876
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1877
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1878
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1879
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
1883
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1884
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1885
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1886
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1887
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1888
|
+
<span class="cline-any cline-no"> </span>
|
|
1889
|
+
<span class="cline-any cline-no"> </span>
|
|
1890
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1891
|
+
<span class="cline-any cline-no"> </span>
|
|
1892
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1893
|
+
<span class="cline-any cline-no"> </span>
|
|
1894
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1895
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1896
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1897
|
+
<span class="cline-any cline-no"> </span>
|
|
1898
|
+
<span class="cline-any cline-no"> </span>
|
|
1899
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1900
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1901
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1902
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1903
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1904
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1905
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1906
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1907
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1908
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1909
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1910
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1911
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1912
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1913
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1914
|
+
<span class="cline-any cline-no"> </span>
|
|
1915
|
+
<span class="cline-any cline-no"> </span>
|
|
1916
|
+
<span class="cline-any cline-no"> </span>
|
|
1917
|
+
<span class="cline-any cline-no"> </span>
|
|
1918
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1919
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1920
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1921
|
+
<span class="cline-any cline-no"> </span>
|
|
1922
|
+
<span class="cline-any cline-no"> </span>
|
|
1923
|
+
<span class="cline-any cline-no"> </span>
|
|
1924
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1925
|
+
<span class="cline-any cline-no"> </span>
|
|
1926
|
+
<span class="cline-any cline-no"> </span>
|
|
1927
|
+
<span class="cline-any cline-no"> </span>
|
|
1928
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1929
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1930
|
+
<span class="cline-any cline-no"> </span>
|
|
1931
|
+
<span class="cline-any cline-no"> </span>
|
|
1932
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1933
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1934
|
+
<span class="cline-any cline-no"> </span>
|
|
1935
|
+
<span class="cline-any cline-no"> </span>
|
|
1936
|
+
<span class="cline-any cline-no"> </span>
|
|
1937
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1938
|
+
<span class="cline-any cline-no"> </span>
|
|
1939
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1940
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1941
|
+
<span class="cline-any cline-no"> </span>
|
|
1942
|
+
<span class="cline-any cline-no"> </span>
|
|
1943
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1944
|
+
<span class="cline-any cline-no"> </span>
|
|
1945
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1946
|
+
<span class="cline-any cline-no"> </span>
|
|
1947
|
+
<span class="cline-any cline-no"> </span>
|
|
1948
|
+
<span class="cline-any cline-no"> </span>
|
|
1949
|
+
<span class="cline-any cline-no"> </span>
|
|
1950
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1951
|
+
<span class="cline-any cline-no"> </span>
|
|
1952
|
+
<span class="cline-any cline-no"> </span>
|
|
1953
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1954
|
+
<span class="cline-any cline-no"> </span>
|
|
1955
|
+
<span class="cline-any cline-no"> </span>
|
|
1956
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1957
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1958
|
+
<span class="cline-any cline-no"> </span>
|
|
1959
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1960
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1961
|
+
<span class="cline-any cline-no"> </span>
|
|
1962
|
+
<span class="cline-any cline-no"> </span>
|
|
1963
|
+
<span class="cline-any cline-no"> </span>
|
|
1964
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1965
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1966
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1967
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1968
|
+
<span class="cline-any cline-no"> </span>
|
|
1969
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1970
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1971
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1972
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1973
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1974
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1975
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1976
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1977
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1978
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1979
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1980
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1981
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1982
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1983
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1984
|
+
<span class="cline-any cline-no"> </span>
|
|
1985
|
+
<span class="cline-any cline-no"> </span>
|
|
1986
|
+
<span class="cline-any cline-no"> </span>
|
|
1987
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1988
|
+
<span class="cline-any cline-no"> </span>
|
|
1989
|
+
<span class="cline-any cline-no"> </span>
|
|
1990
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1991
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1992
|
+
<span class="cline-any cline-no"> </span>
|
|
1993
|
+
<span class="cline-any cline-no"> </span>
|
|
1994
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1995
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1996
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1997
|
+
<span class="cline-any cline-no"> </span>
|
|
1998
|
+
<span class="cline-any cline-no"> </span>
|
|
1999
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2000
|
+
<span class="cline-any cline-no"> </span>
|
|
2001
|
+
<span class="cline-any cline-no"> </span>
|
|
2002
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2003
|
+
<span class="cline-any cline-no"> </span>
|
|
2004
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2005
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2006
|
+
<span class="cline-any cline-no"> </span>
|
|
2007
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2008
|
+
<span class="cline-any cline-no"> </span>
|
|
2009
|
+
<span class="cline-any cline-no"> </span>
|
|
2010
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2011
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2012
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2013
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2014
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2015
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2016
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2017
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2018
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2019
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2020
|
+
<span class="cline-any cline-no"> </span>
|
|
2021
|
+
<span class="cline-any cline-no"> </span>
|
|
2022
|
+
<span class="cline-any cline-no"> </span>
|
|
2023
|
+
<span class="cline-any cline-no"> </span>
|
|
2024
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2025
|
+
<span class="cline-any cline-no"> </span>
|
|
2026
|
+
<span class="cline-any cline-no"> </span>
|
|
2027
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2028
|
+
<span class="cline-any cline-no"> </span>
|
|
2029
|
+
<span class="cline-any cline-no"> </span>
|
|
2030
|
+
<span class="cline-any cline-no"> </span>
|
|
2031
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2032
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2033
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2034
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2035
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2036
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2037
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2038
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2039
|
+
<span class="cline-any cline-no"> </span>
|
|
2040
|
+
<span class="cline-any cline-no"> </span>
|
|
2041
|
+
<span class="cline-any cline-no"> </span>
|
|
2042
|
+
<span class="cline-any cline-no"> </span>
|
|
2043
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2044
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2045
|
+
<span class="cline-any cline-no"> </span>
|
|
2046
|
+
<span class="cline-any cline-no"> </span>
|
|
2047
|
+
<span class="cline-any cline-no"> </span>
|
|
2048
|
+
<span class="cline-any cline-no"> </span>
|
|
2049
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2050
|
+
<span class="cline-any cline-no"> </span>
|
|
2051
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2052
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2053
|
+
<span class="cline-any cline-no"> </span>
|
|
2054
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2055
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2056
|
+
<span class="cline-any cline-no"> </span>
|
|
2057
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2058
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2059
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2060
|
+
<span class="cline-any cline-no"> </span>
|
|
2061
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2062
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2063
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2064
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2065
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2066
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2067
|
+
<span class="cline-any cline-no"> </span>
|
|
2068
|
+
<span class="cline-any cline-no"> </span>
|
|
2069
|
+
<span class="cline-any cline-no"> </span>
|
|
2070
|
+
<span class="cline-any cline-no"> </span>
|
|
2071
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2072
|
+
<span class="cline-any cline-no"> </span>
|
|
2073
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2074
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2075
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2076
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2077
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2078
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2079
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2080
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2081
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2082
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2083
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2084
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2085
|
+
<span class="cline-any cline-no"> </span>
|
|
2086
|
+
<span class="cline-any cline-no"> </span>
|
|
2087
|
+
<span class="cline-any cline-no"> </span>
|
|
2088
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2089
|
+
<span class="cline-any cline-no"> </span>
|
|
2090
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2091
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2092
|
+
<span class="cline-any cline-no"> </span>
|
|
2093
|
+
<span class="cline-any cline-no"> </span>
|
|
2094
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2095
|
+
<span class="cline-any cline-no"> </span>
|
|
2096
|
+
<span class="cline-any cline-no"> </span>
|
|
2097
|
+
<span class="cline-any cline-no"> </span>
|
|
2098
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2099
|
+
<span class="cline-any cline-no"> </span>
|
|
2100
|
+
<span class="cline-any cline-no"> </span>
|
|
2101
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2102
|
+
<span class="cline-any cline-no"> </span>
|
|
2103
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2104
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2105
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2106
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2107
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2108
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2109
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2110
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2111
|
+
<span class="cline-any cline-no"> </span>
|
|
2112
|
+
<span class="cline-any cline-no"> </span>
|
|
2113
|
+
<span class="cline-any cline-no"> </span>
|
|
2114
|
+
<span class="cline-any cline-no"> </span>
|
|
2115
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2116
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2117
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2118
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2119
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2120
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2121
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2122
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
2126
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2127
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2128
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2129
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2130
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2131
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2132
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2133
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2134
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2135
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2136
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2137
|
+
<span class="cline-any cline-no"> </span>
|
|
2138
|
+
<span class="cline-any cline-no"> </span>
|
|
2139
|
+
<span class="cline-any cline-no"> </span>
|
|
2140
|
+
<span class="cline-any cline-no"> </span>
|
|
2141
|
+
<span class="cline-any cline-no"> </span>
|
|
2142
|
+
<span class="cline-any cline-no"> </span>
|
|
2143
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2144
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2145
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2146
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2147
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2148
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2149
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2150
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
2155
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2156
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2157
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2158
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2159
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2160
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2161
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2162
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2163
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2164
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2165
|
+
<span class="cline-any cline-yes">3x</span>
|
|
2166
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2167
|
+
<span class="cline-any cline-yes">3x</span>
|
|
2168
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2169
|
+
<span class="cline-any cline-no"> </span>
|
|
2170
|
+
<span class="cline-any cline-no"> </span>
|
|
2171
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2172
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
2179
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2180
|
+
<span class="cline-any cline-no"> </span>
|
|
2181
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2182
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2183
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2184
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2185
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2186
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2187
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2189
|
+
<span class="cline-any cline-no"> </span>
|
|
2190
|
+
<span class="cline-any cline-no"> </span>
|
|
2191
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2192
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2193
|
+
<span class="cline-any cline-no"> </span>
|
|
2194
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2195
|
+
<span class="cline-any cline-no"> </span>
|
|
2196
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2197
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2198
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2199
|
+
<span class="cline-any cline-no"> </span>
|
|
2200
|
+
<span class="cline-any cline-no"> </span>
|
|
2201
|
+
<span class="cline-any cline-no"> </span>
|
|
2202
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2203
|
+
<span class="cline-any cline-no"> </span>
|
|
2204
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2205
|
+
<span class="cline-any cline-no"> </span>
|
|
2206
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2207
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2208
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2209
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2210
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2211
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2212
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2213
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2214
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2215
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2216
|
+
<span class="cline-any cline-no"> </span>
|
|
2217
|
+
<span class="cline-any cline-no"> </span>
|
|
2218
|
+
<span class="cline-any cline-no"> </span>
|
|
2219
|
+
<span class="cline-any cline-no"> </span>
|
|
2220
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2221
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2222
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2223
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2224
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2225
|
+
<span class="cline-any cline-no"> </span>
|
|
2226
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2227
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2229
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2230
|
+
<span class="cline-any cline-no"> </span>
|
|
2231
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2232
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2233
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2234
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2235
|
+
<span class="cline-any cline-no"> </span>
|
|
2236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2237
|
+
<span class="cline-any cline-no"> </span>
|
|
2238
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2239
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2240
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2241
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2242
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2243
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2244
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
2248
|
+
<span class="cline-any cline-yes">13x</span>
|
|
2249
|
+
<span class="cline-any cline-no"> </span>
|
|
2250
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2251
|
+
<span class="cline-any cline-yes">13x</span>
|
|
2252
|
+
<span class="cline-any cline-no"> </span>
|
|
2253
|
+
<span class="cline-any cline-no"> </span>
|
|
2254
|
+
<span class="cline-any cline-no"> </span>
|
|
2255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2256
|
+
<span class="cline-any cline-no"> </span>
|
|
2257
|
+
<span class="cline-any cline-no"> </span>
|
|
2258
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2259
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2260
|
+
<span class="cline-any cline-no"> </span>
|
|
2261
|
+
<span class="cline-any cline-no"> </span>
|
|
2262
|
+
<span class="cline-any cline-no"> </span>
|
|
2263
|
+
<span class="cline-any cline-no"> </span>
|
|
2264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2266
|
+
<span class="cline-any cline-yes">13x</span>
|
|
2267
|
+
<span class="cline-any cline-no"> </span>
|
|
2268
|
+
<span class="cline-any cline-yes">13x</span>
|
|
2269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2272
|
+
<span class="cline-any cline-no"> </span>
|
|
2273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2275
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
2282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2285
|
+
<span class="cline-any cline-no"> </span>
|
|
2286
|
+
<span class="cline-any cline-no"> </span>
|
|
2287
|
+
<span class="cline-any cline-no"> </span>
|
|
2288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2290
|
+
<span class="cline-any cline-no"> </span>
|
|
2291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2296
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2298
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2300
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
2304
|
+
<span class="cline-any cline-no"> </span>
|
|
2305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2317
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2318
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2321
|
+
<span class="cline-any cline-no"> </span>
|
|
2322
|
+
<span class="cline-any cline-no"> </span>
|
|
2323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2324
|
+
<span class="cline-any cline-no"> </span>
|
|
2325
|
+
<span class="cline-any cline-no"> </span>
|
|
2326
|
+
<span class="cline-any cline-no"> </span>
|
|
2327
|
+
<span class="cline-any cline-no"> </span>
|
|
2328
|
+
<span class="cline-any cline-no"> </span>
|
|
2329
|
+
<span class="cline-any cline-no"> </span>
|
|
2330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2331
|
+
<span class="cline-any cline-no"> </span>
|
|
2332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2333
|
+
<span class="cline-any cline-no"> </span>
|
|
2334
|
+
<span class="cline-any cline-no"> </span>
|
|
2335
|
+
<span class="cline-any cline-no"> </span>
|
|
2336
|
+
<span class="cline-any cline-no"> </span>
|
|
2337
|
+
<span class="cline-any cline-no"> </span>
|
|
2338
|
+
<span class="cline-any cline-no"> </span>
|
|
2339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2340
|
+
<span class="cline-any cline-no"> </span>
|
|
2341
|
+
<span class="cline-any cline-no"> </span>
|
|
2342
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2343
|
+
<span class="cline-any cline-no"> </span>
|
|
2344
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2346
|
+
<span class="cline-any cline-no"> </span>
|
|
2347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2351
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2352
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2354
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
2360
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2362
|
+
<span class="cline-any cline-yes">5x</span>
|
|
2363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2365
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2368
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2369
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2371
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2372
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2375
|
+
<span class="cline-any cline-no"> </span>
|
|
2376
|
+
<span class="cline-any cline-no"> </span>
|
|
2377
|
+
<span class="cline-any cline-no"> </span>
|
|
2378
|
+
<span class="cline-any cline-no"> </span>
|
|
2379
|
+
<span class="cline-any cline-no"> </span>
|
|
2380
|
+
<span class="cline-any cline-no"> </span>
|
|
2381
|
+
<span class="cline-any cline-no"> </span>
|
|
2382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2386
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2387
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2391
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2392
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2394
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2396
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
2400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2401
|
+
<span class="cline-any cline-no"> </span>
|
|
2402
|
+
<span class="cline-any cline-no"> </span>
|
|
2403
|
+
<span class="cline-any cline-no"> </span>
|
|
2404
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
2408
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2409
|
+
<span class="cline-any cline-no"> </span>
|
|
2410
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2411
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2412
|
+
<span class="cline-any cline-no"> </span>
|
|
2413
|
+
<span class="cline-any cline-no"> </span>
|
|
2414
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2415
|
+
<span class="cline-any cline-no"> </span>
|
|
2416
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2417
|
+
<span class="cline-any cline-no"> </span>
|
|
2418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2421
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2422
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2423
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2424
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2428
|
+
<span class="cline-any cline-no"> </span>
|
|
2429
|
+
<span class="cline-any cline-no"> </span>
|
|
2430
|
+
<span class="cline-any cline-no"> </span>
|
|
2431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2432
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2433
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2434
|
+
<span class="cline-any cline-neutral"> </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 <http://creativecommons.org/licenses/by-nd/4.0/> or <http://www.gnu.org/licenses/agpl-3.0.txt>.
|
|
2443
|
+
*/
|
|
2444
|
+
|
|
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
|
+
|
|
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
|
+
|
|
2477
|
+
let isBrowserSide = (new Function("try {return this===window;}catch(e){ return false;}"))(),
|
|
2478
|
+
isArray = is.array,
|
|
2479
|
+
_live, lastTm, _running = [];
|
|
2480
|
+
|
|
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 < 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
|
+
|
|
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 ) => <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
|
+
|
|
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 < _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
|
+
|
|
2535
|
+
<span class="cstat-no" title="statement not covered" > _running[i].cb && setTimeout(_running[i].cb);</span>
|
|
2536
|
+
<span class="cstat-no" title="statement not covered" > _running.splice(i, 1), i--;</span>
|
|
2537
|
+
}
|
|
2538
|
+
|
|
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
|
+
|
|
2549
|
+
axes = {};
|
|
2550
|
+
_scrollWatcherByAxis = {};
|
|
2551
|
+
|
|
2552
|
+
// ------------------------------------------------------------
|
|
2553
|
+
// -------------------- TweenRefs utils -----------------------
|
|
2554
|
+
// ------------------------------------------------------------
|
|
2555
|
+
|
|
2556
|
+
// Scratch buffer reused every RAF frame by _updateTweenRef to avoid allocations
|
|
2557
|
+
_swap = {};
|
|
2558
|
+
|
|
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] && (// 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 & 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 => (<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 => (<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 => (<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 => {
|
|
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 => {
|
|
2688
|
+
<span class="cstat-no" title="statement not covered" > if ( _.tweenRefCSS[id][key] && !_.muxByTarget[id][key] && !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 => {
|
|
2695
|
+
<span class="cstat-no" title="statement not covered" > if ( _.tweenRefCSS[id][key] !== iStyle[key] && !_.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 => (<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 => (<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 => (<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 => (<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 => (<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 => (<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 ) => {
|
|
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 & 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) && 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 ) => <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 ) => <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 && 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 && this._.rootRef.current;
|
|
2858
|
+
} catch ( e ) {
|
|
2859
|
+
<span class="cstat-no" title="statement not covered" > return this._.rootRef && 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> => (
|
|
2900
|
+
<span class="cstat-no" title="statement not covered" > this._.tweenRefMaps[id] &&</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 => {
|
|
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 & 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> => {</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> => {
|
|
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 => {
|
|
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> => (<span class="cstat-no" title="statement not covered" >then && 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 ) => <span class="cstat-no" title="statement not covered" >this._.tweenRefMaps[id][p] = (!reset && 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 && dim
|
|
2987
|
+
? <span class="branch-0 cbranch-no" title="branch not covered" >dim.scrollPos</span>
|
|
2988
|
+
: _.defaultAxesPosition?.[axe] || defaultPosition || scrollableBounds && <span class="branch-3 cbranch-no" title="branch not covered" >scrollableBounds.min </span>|| 0,
|
|
2989
|
+
scrollableArea = Math.max(dim && <span class="branch-1 cbranch-no" title="branch not covered" >dim.scrollableArea </span>|| 0, _scrollableArea),
|
|
2990
|
+
scrollableWindow = Math.max(dim && <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: () => this.shouldReduceMotion()
|
|
2998
|
+
})),
|
|
2999
|
+
nextDescr = {
|
|
3000
|
+
//...(_inertia || {}),
|
|
3001
|
+
scrollFirst,
|
|
3002
|
+
tweenAxis: dim && <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 ) => {
|
|
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 && (inertia._.disabled = true);
|
|
3016
|
+
(_inertia) && <span class="branch-1 cbranch-no" title="branch not covered" >inertia </span>&& <span class="branch-2 cbranch-no" title="branch not covered" >!inertia.active </span>&& (<span class="branch-3 cbranch-no" title="branch not covered" >inertia._.pos = scrollPos)</span>;
|
|
3017
|
+
(_inertia) && <span class="branch-1 cbranch-no" title="branch not covered" >inertia </span>&& (<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 && scrollableBounds )
|
|
3019
|
+
<span class="cstat-no" title="statement not covered" > inertia.setBounds?.(scrollableBounds.min, scrollableBounds.max);</span>
|
|
3020
|
+
else
|
|
3021
|
+
inertia && 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 && _.options.initialScrollPos[axe] || 0,
|
|
3030
|
+
targetPos : 0,
|
|
3031
|
+
scrollableWindow: 0,
|
|
3032
|
+
scrollableArea : 0,
|
|
3033
|
+
inertia : new Inertia({
|
|
3034
|
+
value : _.options.initialScrollPos && _.options.initialScrollPos[axe] || 0,
|
|
3035
|
+
...(_.options.axes && _.options.axes[axe] && _.options.axes[axe].inertia || {}),
|
|
3036
|
+
reducedMotion: <span class="fstat-no" title="function not covered" >()</span> => <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 ) => {
|
|
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' && prefersReducedMotion());
|
|
3066
|
+
}
|
|
3067
|
+
|
|
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 && Object.keys(this.axes)</span>
|
|
3074
|
+
.forEach(
|
|
3075
|
+
<span class="fstat-no" title="function not covered" > ax</span>e => (<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 > 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 && 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 ) => {
|
|
3109
|
+
<span class="cstat-no" title="statement not covered" > if ( this.axes && 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 => {</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> => <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>=> {
|
|
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> => {
|
|
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> => <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> => {
|
|
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 => {
|
|
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] &&
|
|
3246
|
+
//_.refs[id] && _.refs[id].style &&
|
|
3247
|
+
// _.refs[id].style[rkey] &&
|
|
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 && 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>=> <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 ) => {
|
|
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> => <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 && 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
|
+
|
|
3302
|
+
/**
|
|
3303
|
+
* Hook to know if the composed element allow scrolling
|
|
3304
|
+
* @returns {boolean}
|
|
3305
|
+
*/
|
|
3306
|
+
componentShouldScroll() {
|
|
3307
|
+
let _ = this._;
|
|
3308
|
+
return _.rootRef &&
|
|
3309
|
+
_.rootRef.current &&
|
|
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> => {</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 & 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> => {
|
|
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 &&</span>
|
|
3375
|
+
Object.keys(this.axes)
|
|
3376
|
+
.forEach(
|
|
3377
|
+
<span class="fstat-no" title="function not covered" > ax</span>e => (<span class="cstat-no" title="statement not covered" >active = active || this.axes[axe] && 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 && this.axes[axis],</span>
|
|
3385
|
+
pos = <span class="cstat-no" title="statement not covered" >abs ? v : dim && (dim.scrollPos + v);</span>
|
|
3386
|
+
|
|
3387
|
+
<span class="cstat-no" title="statement not covered" > pos = pos && Math.round(pos);</span>
|
|
3388
|
+
|
|
3389
|
+
<span class="cstat-no" title="statement not covered" > return !dim</span>
|
|
3390
|
+
|| (
|
|
3391
|
+
dim.scrollableBounds
|
|
3392
|
+
?
|
|
3393
|
+
(pos <= dim.scrollableBounds.min || pos >= dim.scrollableBounds.max)
|
|
3394
|
+
:
|
|
3395
|
+
(pos <= 0 || pos >= 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 => (<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> => <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> => <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 & drawers -------------------
|
|
3427
|
+
// ------------------------------------------------------------
|
|
3428
|
+
|
|
3429
|
+
_updateNodeInertia = () => {
|
|
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 > 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 && !current.inertia.y.active && !current.inertia.x.holding && !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 < 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
|
+
|
|
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] &&</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 > 5 && o[0] === 'a' && o[1] === 't' && o[2] === 't' && o[3] === 'r' && 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 > 5 && o[0] === 'a' && o[1] === 't' && o[2] === 't' && o[3] === 'r' && 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 => {
|
|
3546
|
+
this.axes[axe].inertiaFrame &&
|
|
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 > 5 && k[0] === 'a' && k[1] === 't' && k[2] === 't' && k[3] === 'r' && k[4] === '_' )</span>
|
|
3565
|
+
<span class="cstat-no" title="statement not covered" > node.setAttribute(k.slice(5), css[k]);</span>
|
|
3566
|
+
}
|
|
3567
|
+
}
|
|
3568
|
+
|
|
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
|
+
|
|
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 && window.addEventListener(
|
|
3583
|
+
"resize",
|
|
3584
|
+
this._.onResize = this._.onResize || (<span class="fstat-no" title="function not covered" >( </span>e ) => {//@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 < 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 => <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
|
+
|
|
3610
|
+
<span class="fstat-no" title="function not covered" > co</span>mponentDidUpdate( prevProps, prevState ) {
|
|
3611
|
+
|
|
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
|
+
</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
|
+
|