@sebbo2002/node-pyatv 6.0.0-develop.2 → 6.0.0-develop.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/bin/check.cjs +10 -0
  2. package/dist/bin/check.cjs.map +1 -0
  3. package/dist/bin/check.d.ts +2 -1
  4. package/dist/bin/check.js +4 -45
  5. package/dist/bin/check.js.map +1 -1
  6. package/dist/chunk-TZSWUAOB.js +7 -0
  7. package/dist/chunk-TZSWUAOB.js.map +1 -0
  8. package/dist/lib/index.cjs +7 -0
  9. package/dist/lib/index.cjs.map +1 -0
  10. package/dist/lib/{device.d.ts → index.d.cts} +340 -4
  11. package/dist/lib/index.d.ts +806 -6
  12. package/dist/lib/index.js +1 -7
  13. package/dist/lib/index.js.map +1 -1
  14. package/package.json +18 -9
  15. package/.editorconfig +0 -12
  16. package/.eslintignore +0 -4
  17. package/.eslintrc +0 -60
  18. package/.mocharc.yml +0 -7
  19. package/.nycrc +0 -32
  20. package/CHANGELOG.md +0 -295
  21. package/check.sh +0 -5
  22. package/dist/examples/push.d.ts +0 -1
  23. package/dist/examples/push.js +0 -51
  24. package/dist/examples/push.js.map +0 -1
  25. package/dist/lib/device-event.d.ts +0 -44
  26. package/dist/lib/device-event.js +0 -47
  27. package/dist/lib/device-event.js.map +0 -1
  28. package/dist/lib/device-events.d.ts +0 -30
  29. package/dist/lib/device-events.js +0 -237
  30. package/dist/lib/device-events.js.map +0 -1
  31. package/dist/lib/device.js +0 -793
  32. package/dist/lib/device.js.map +0 -1
  33. package/dist/lib/fake-spawn.d.ts +0 -43
  34. package/dist/lib/fake-spawn.js +0 -85
  35. package/dist/lib/fake-spawn.js.map +0 -1
  36. package/dist/lib/instance.d.ts +0 -97
  37. package/dist/lib/instance.js +0 -208
  38. package/dist/lib/instance.js.map +0 -1
  39. package/dist/lib/tools.d.ts +0 -12
  40. package/dist/lib/tools.js +0 -319
  41. package/dist/lib/tools.js.map +0 -1
  42. package/dist/lib/types.d.ts +0 -204
  43. package/dist/lib/types.js +0 -108
  44. package/dist/lib/types.js.map +0 -1
  45. package/docs/coverage/base.css +0 -224
  46. package/docs/coverage/block-navigation.js +0 -87
  47. package/docs/coverage/cobertura-coverage.xml +0 -2889
  48. package/docs/coverage/device-event.ts.html +0 -256
  49. package/docs/coverage/device-events.ts.html +0 -970
  50. package/docs/coverage/device.ts.html +0 -2518
  51. package/docs/coverage/fake-spawn.ts.html +0 -448
  52. package/docs/coverage/favicon.png +0 -0
  53. package/docs/coverage/index.html +0 -221
  54. package/docs/coverage/index.ts.html +0 -172
  55. package/docs/coverage/instance.ts.html +0 -718
  56. package/docs/coverage/prettify.css +0 -1
  57. package/docs/coverage/prettify.js +0 -2
  58. package/docs/coverage/sort-arrow-sprite.png +0 -0
  59. package/docs/coverage/sorter.js +0 -196
  60. package/docs/coverage/tools.ts.html +0 -1222
  61. package/docs/coverage/types.ts.html +0 -775
  62. package/docs/reference/.nojekyll +0 -1
  63. package/docs/reference/assets/highlight.css +0 -99
  64. package/docs/reference/assets/main.js +0 -58
  65. package/docs/reference/assets/search.js +0 -1
  66. package/docs/reference/assets/style.css +0 -1280
  67. package/docs/reference/classes/NodePyATVDevice.html +0 -1266
  68. package/docs/reference/classes/NodePyATVDeviceEvent.html +0 -123
  69. package/docs/reference/classes/NodePyATVInstance.html +0 -240
  70. package/docs/reference/enums/NodePyATVDeviceState.html +0 -97
  71. package/docs/reference/enums/NodePyATVExecutableType.html +0 -69
  72. package/docs/reference/enums/NodePyATVKeys.html +0 -216
  73. package/docs/reference/enums/NodePyATVListenerState.html +0 -83
  74. package/docs/reference/enums/NodePyATVMediaType.html +0 -83
  75. package/docs/reference/enums/NodePyATVPowerState.html +0 -69
  76. package/docs/reference/enums/NodePyATVProtocol.html +0 -83
  77. package/docs/reference/enums/NodePyATVRepeatState.html +0 -76
  78. package/docs/reference/enums/NodePyATVShuffleState.html +0 -76
  79. package/docs/reference/index.html +0 -139
  80. package/docs/reference/interfaces/NodePyATVDeviceOptions.html +0 -232
  81. package/docs/reference/interfaces/NodePyATVFindAndInstanceOptions.html +0 -193
  82. package/docs/reference/interfaces/NodePyATVFindOptions.html +0 -124
  83. package/docs/reference/interfaces/NodePyATVGetStateOptions.html +0 -66
  84. package/docs/reference/interfaces/NodePyATVInstanceOptions.html +0 -113
  85. package/docs/reference/interfaces/NodePyATVService.html +0 -73
  86. package/docs/reference/interfaces/NodePyATVState.html +0 -164
  87. package/docs/reference/interfaces/NodePyATVVersionResponse.html +0 -73
  88. package/docs/reference/modules.html +0 -106
  89. package/docs/reference/types/NodePyATVEventValueType.html +0 -66
  90. package/docs/tests/assets/MaterialIcons-Regular.woff +0 -0
  91. package/docs/tests/assets/MaterialIcons-Regular.woff2 +0 -0
  92. package/docs/tests/assets/app.css +0 -14
  93. package/docs/tests/assets/app.js +0 -2
  94. package/docs/tests/assets/app.js.LICENSE.txt +0 -55
  95. package/docs/tests/assets/roboto-light-webfont.woff +0 -0
  96. package/docs/tests/assets/roboto-light-webfont.woff2 +0 -0
  97. package/docs/tests/assets/roboto-medium-webfont.woff +0 -0
  98. package/docs/tests/assets/roboto-medium-webfont.woff2 +0 -0
  99. package/docs/tests/assets/roboto-regular-webfont.woff +0 -0
  100. package/docs/tests/assets/roboto-regular-webfont.woff2 +0 -0
  101. package/docs/tests/index.html +0 -2
  102. package/docs/tests/mochawesome.json +0 -4823
  103. package/release.config.cjs +0 -51
  104. package/src/bin/check.ts +0 -41
  105. package/src/examples/push.ts +0 -46
  106. package/src/lib/device-event.ts +0 -57
  107. package/src/lib/device-events.ts +0 -295
  108. package/src/lib/device.ts +0 -811
  109. package/src/lib/fake-spawn.ts +0 -121
  110. package/src/lib/index.ts +0 -29
  111. package/src/lib/instance.ts +0 -211
  112. package/src/lib/tools.ts +0 -379
  113. package/src/lib/types.ts +0 -230
  114. package/test/device-event.ts +0 -88
  115. package/test/device-events.ts +0 -502
  116. package/test/device.ts +0 -826
  117. package/test/instance.ts +0 -428
  118. package/test/tools.ts +0 -301
  119. package/tsconfig.json +0 -19
  120. package/typedoc.json +0 -15
@@ -1,2518 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for device.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="prettify.css" />
9
- <link rel="stylesheet" href="base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="index.html">All files</a> device.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">99.38% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>806/811</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">96.66% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>87/90</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">97.29% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>72/74</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">99.38% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>806/811</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
878
- <span class="cline-any cline-yes">1x</span>
879
- <span class="cline-any cline-yes">1x</span>
880
- <span class="cline-any cline-yes">1x</span>
881
- <span class="cline-any cline-yes">1x</span>
882
- <span class="cline-any cline-yes">1x</span>
883
- <span class="cline-any cline-yes">1x</span>
884
- <span class="cline-any cline-yes">1x</span>
885
- <span class="cline-any cline-yes">1x</span>
886
- <span class="cline-any cline-yes">1x</span>
887
- <span class="cline-any cline-yes">1x</span>
888
- <span class="cline-any cline-yes">1x</span>
889
- <span class="cline-any cline-yes">1x</span>
890
- <span class="cline-any cline-yes">1x</span>
891
- <span class="cline-any cline-yes">1x</span>
892
- <span class="cline-any cline-yes">1x</span>
893
- <span class="cline-any cline-yes">1x</span>
894
- <span class="cline-any cline-yes">1x</span>
895
- <span class="cline-any cline-yes">1x</span>
896
- <span class="cline-any cline-yes">1x</span>
897
- <span class="cline-any cline-yes">1x</span>
898
- <span class="cline-any cline-yes">1x</span>
899
- <span class="cline-any cline-yes">1x</span>
900
- <span class="cline-any cline-yes">1x</span>
901
- <span class="cline-any cline-yes">1x</span>
902
- <span class="cline-any cline-yes">1x</span>
903
- <span class="cline-any cline-yes">1x</span>
904
- <span class="cline-any cline-yes">1x</span>
905
- <span class="cline-any cline-yes">1x</span>
906
- <span class="cline-any cline-yes">1x</span>
907
- <span class="cline-any cline-yes">1x</span>
908
- <span class="cline-any cline-yes">1x</span>
909
- <span class="cline-any cline-yes">1x</span>
910
- <span class="cline-any cline-yes">1x</span>
911
- <span class="cline-any cline-yes">1x</span>
912
- <span class="cline-any cline-yes">101x</span>
913
- <span class="cline-any cline-yes">101x</span>
914
- <span class="cline-any cline-yes">101x</span>
915
- <span class="cline-any cline-yes">101x</span>
916
- <span class="cline-any cline-yes">101x</span>
917
- <span class="cline-any cline-yes">101x</span>
918
- <span class="cline-any cline-yes">1x</span>
919
- <span class="cline-any cline-yes">1x</span>
920
- <span class="cline-any cline-yes">1x</span>
921
- <span class="cline-any cline-yes">1x</span>
922
- <span class="cline-any cline-yes">1x</span>
923
- <span class="cline-any cline-yes">1x</span>
924
- <span class="cline-any cline-yes">1x</span>
925
- <span class="cline-any cline-yes">1x</span>
926
- <span class="cline-any cline-yes">1x</span>
927
- <span class="cline-any cline-yes">1x</span>
928
- <span class="cline-any cline-yes">1x</span>
929
- <span class="cline-any cline-yes">1x</span>
930
- <span class="cline-any cline-yes">1x</span>
931
- <span class="cline-any cline-yes">8x</span>
932
- <span class="cline-any cline-yes">8x</span>
933
- <span class="cline-any cline-yes">1x</span>
934
- <span class="cline-any cline-yes">1x</span>
935
- <span class="cline-any cline-yes">1x</span>
936
- <span class="cline-any cline-yes">1x</span>
937
- <span class="cline-any cline-yes">1x</span>
938
- <span class="cline-any cline-yes">8x</span>
939
- <span class="cline-any cline-yes">8x</span>
940
- <span class="cline-any cline-yes">1x</span>
941
- <span class="cline-any cline-yes">1x</span>
942
- <span class="cline-any cline-yes">1x</span>
943
- <span class="cline-any cline-yes">1x</span>
944
- <span class="cline-any cline-yes">1x</span>
945
- <span class="cline-any cline-yes">6x</span>
946
- <span class="cline-any cline-yes">6x</span>
947
- <span class="cline-any cline-yes">1x</span>
948
- <span class="cline-any cline-yes">1x</span>
949
- <span class="cline-any cline-yes">1x</span>
950
- <span class="cline-any cline-yes">1x</span>
951
- <span class="cline-any cline-yes">1x</span>
952
- <span class="cline-any cline-yes">4x</span>
953
- <span class="cline-any cline-yes">4x</span>
954
- <span class="cline-any cline-yes">1x</span>
955
- <span class="cline-any cline-yes">1x</span>
956
- <span class="cline-any cline-yes">1x</span>
957
- <span class="cline-any cline-yes">1x</span>
958
- <span class="cline-any cline-yes">1x</span>
959
- <span class="cline-any cline-yes">1x</span>
960
- <span class="cline-any cline-yes">1x</span>
961
- <span class="cline-any cline-yes">1x</span>
962
- <span class="cline-any cline-yes">4x</span>
963
- <span class="cline-any cline-yes">4x</span>
964
- <span class="cline-any cline-yes">1x</span>
965
- <span class="cline-any cline-yes">1x</span>
966
- <span class="cline-any cline-yes">1x</span>
967
- <span class="cline-any cline-yes">1x</span>
968
- <span class="cline-any cline-yes">1x</span>
969
- <span class="cline-any cline-yes">1x</span>
970
- <span class="cline-any cline-yes">1x</span>
971
- <span class="cline-any cline-yes">1x</span>
972
- <span class="cline-any cline-yes">4x</span>
973
- <span class="cline-any cline-yes">4x</span>
974
- <span class="cline-any cline-yes">1x</span>
975
- <span class="cline-any cline-yes">1x</span>
976
- <span class="cline-any cline-yes">1x</span>
977
- <span class="cline-any cline-yes">1x</span>
978
- <span class="cline-any cline-yes">1x</span>
979
- <span class="cline-any cline-yes">1x</span>
980
- <span class="cline-any cline-yes">1x</span>
981
- <span class="cline-any cline-yes">1x</span>
982
- <span class="cline-any cline-yes">4x</span>
983
- <span class="cline-any cline-yes">4x</span>
984
- <span class="cline-any cline-yes">1x</span>
985
- <span class="cline-any cline-yes">1x</span>
986
- <span class="cline-any cline-yes">1x</span>
987
- <span class="cline-any cline-yes">1x</span>
988
- <span class="cline-any cline-yes">1x</span>
989
- <span class="cline-any cline-yes">1x</span>
990
- <span class="cline-any cline-yes">1x</span>
991
- <span class="cline-any cline-yes">1x</span>
992
- <span class="cline-any cline-yes">4x</span>
993
- <span class="cline-any cline-yes">4x</span>
994
- <span class="cline-any cline-yes">1x</span>
995
- <span class="cline-any cline-yes">1x</span>
996
- <span class="cline-any cline-yes">1x</span>
997
- <span class="cline-any cline-yes">1x</span>
998
- <span class="cline-any cline-yes">1x</span>
999
- <span class="cline-any cline-yes">1x</span>
1000
- <span class="cline-any cline-yes">1x</span>
1001
- <span class="cline-any cline-yes">1x</span>
1002
- <span class="cline-any cline-yes">1x</span>
1003
- <span class="cline-any cline-yes">1x</span>
1004
- <span class="cline-any cline-yes">1x</span>
1005
- <span class="cline-any cline-yes">1x</span>
1006
- <span class="cline-any cline-yes">1x</span>
1007
- <span class="cline-any cline-yes">1x</span>
1008
- <span class="cline-any cline-yes">1x</span>
1009
- <span class="cline-any cline-yes">1x</span>
1010
- <span class="cline-any cline-yes">1x</span>
1011
- <span class="cline-any cline-yes">1x</span>
1012
- <span class="cline-any cline-yes">4x</span>
1013
- <span class="cline-any cline-yes">4x</span>
1014
- <span class="cline-any cline-yes">1x</span>
1015
- <span class="cline-any cline-yes">1x</span>
1016
- <span class="cline-any cline-yes">1x</span>
1017
- <span class="cline-any cline-yes">1x</span>
1018
- <span class="cline-any cline-yes">1x</span>
1019
- <span class="cline-any cline-yes">1x</span>
1020
- <span class="cline-any cline-yes">1x</span>
1021
- <span class="cline-any cline-yes">1x</span>
1022
- <span class="cline-any cline-yes">12x</span>
1023
- <span class="cline-any cline-yes">12x</span>
1024
- <span class="cline-any cline-yes">1x</span>
1025
- <span class="cline-any cline-yes">1x</span>
1026
- <span class="cline-any cline-yes">1x</span>
1027
- <span class="cline-any cline-yes">1x</span>
1028
- <span class="cline-any cline-yes">1x</span>
1029
- <span class="cline-any cline-yes">1x</span>
1030
- <span class="cline-any cline-yes">1x</span>
1031
- <span class="cline-any cline-yes">1x</span>
1032
- <span class="cline-any cline-yes">4x</span>
1033
- <span class="cline-any cline-yes">1x</span>
1034
- <span class="cline-any cline-yes">1x</span>
1035
- <span class="cline-any cline-yes">3x</span>
1036
- <span class="cline-any cline-yes">3x</span>
1037
- <span class="cline-any cline-yes">3x</span>
1038
- <span class="cline-any cline-yes">4x</span>
1039
- <span class="cline-any cline-yes">1x</span>
1040
- <span class="cline-any cline-yes">1x</span>
1041
- <span class="cline-any cline-yes">1x</span>
1042
- <span class="cline-any cline-yes">1x</span>
1043
- <span class="cline-any cline-yes">1x</span>
1044
- <span class="cline-any cline-yes">1x</span>
1045
- <span class="cline-any cline-yes">1x</span>
1046
- <span class="cline-any cline-yes">1x</span>
1047
- <span class="cline-any cline-yes">3x</span>
1048
- <span class="cline-any cline-yes">3x</span>
1049
- <span class="cline-any cline-yes">3x</span>
1050
- <span class="cline-any cline-yes">3x</span>
1051
- <span class="cline-any cline-yes">3x</span>
1052
- <span class="cline-any cline-yes">3x</span>
1053
- <span class="cline-any cline-yes">3x</span>
1054
- <span class="cline-any cline-yes">1x</span>
1055
- <span class="cline-any cline-yes">1x</span>
1056
- <span class="cline-any cline-yes">1x</span>
1057
- <span class="cline-any cline-yes">1x</span>
1058
- <span class="cline-any cline-yes">1x</span>
1059
- <span class="cline-any cline-yes">1x</span>
1060
- <span class="cline-any cline-yes">1x</span>
1061
- <span class="cline-any cline-yes">1x</span>
1062
- <span class="cline-any cline-yes">1x</span>
1063
- <span class="cline-any cline-yes">1x</span>
1064
- <span class="cline-any cline-yes">1x</span>
1065
- <span class="cline-any cline-yes">1x</span>
1066
- <span class="cline-any cline-yes">1x</span>
1067
- <span class="cline-any cline-yes">1x</span>
1068
- <span class="cline-any cline-yes">1x</span>
1069
- <span class="cline-any cline-yes">1x</span>
1070
- <span class="cline-any cline-yes">1x</span>
1071
- <span class="cline-any cline-yes">1x</span>
1072
- <span class="cline-any cline-yes">1x</span>
1073
- <span class="cline-any cline-yes">1x</span>
1074
- <span class="cline-any cline-yes">1x</span>
1075
- <span class="cline-any cline-yes">1x</span>
1076
- <span class="cline-any cline-yes">1x</span>
1077
- <span class="cline-any cline-yes">23x</span>
1078
- <span class="cline-any cline-yes">2x</span>
1079
- <span class="cline-any cline-yes">2x</span>
1080
- <span class="cline-any cline-yes">2x</span>
1081
- <span class="cline-any cline-yes">2x</span>
1082
- <span class="cline-any cline-yes">2x</span>
1083
- <span class="cline-any cline-yes">2x</span>
1084
- <span class="cline-any cline-yes">2x</span>
1085
- <span class="cline-any cline-yes">2x</span>
1086
- <span class="cline-any cline-yes">2x</span>
1087
- <span class="cline-any cline-yes">2x</span>
1088
- <span class="cline-any cline-yes">21x</span>
1089
- <span class="cline-any cline-yes">21x</span>
1090
- <span class="cline-any cline-yes">21x</span>
1091
- <span class="cline-any cline-yes">21x</span>
1092
- <span class="cline-any cline-yes">21x</span>
1093
- <span class="cline-any cline-yes">21x</span>
1094
- <span class="cline-any cline-yes">21x</span>
1095
- <span class="cline-any cline-yes">21x</span>
1096
- <span class="cline-any cline-yes">21x</span>
1097
- <span class="cline-any cline-yes">21x</span>
1098
- <span class="cline-any cline-yes">21x</span>
1099
- <span class="cline-any cline-yes">21x</span>
1100
- <span class="cline-any cline-yes">21x</span>
1101
- <span class="cline-any cline-yes">21x</span>
1102
- <span class="cline-any cline-yes">21x</span>
1103
- <span class="cline-any cline-yes">23x</span>
1104
- <span class="cline-any cline-yes">1x</span>
1105
- <span class="cline-any cline-yes">1x</span>
1106
- <span class="cline-any cline-yes">1x</span>
1107
- <span class="cline-any cline-yes">1x</span>
1108
- <span class="cline-any cline-yes">1x</span>
1109
- <span class="cline-any cline-yes">1x</span>
1110
- <span class="cline-any cline-yes">1x</span>
1111
- <span class="cline-any cline-yes">1x</span>
1112
- <span class="cline-any cline-yes">1x</span>
1113
- <span class="cline-any cline-yes">1x</span>
1114
- <span class="cline-any cline-yes">1x</span>
1115
- <span class="cline-any cline-yes">21x</span>
1116
- <span class="cline-any cline-yes">21x</span>
1117
- <span class="cline-any cline-yes">1x</span>
1118
- <span class="cline-any cline-yes">1x</span>
1119
- <span class="cline-any cline-yes">1x</span>
1120
- <span class="cline-any cline-yes">1x</span>
1121
- <span class="cline-any cline-yes">1x</span>
1122
- <span class="cline-any cline-yes">1x</span>
1123
- <span class="cline-any cline-yes">1x</span>
1124
- <span class="cline-any cline-yes">1x</span>
1125
- <span class="cline-any cline-yes">1x</span>
1126
- <span class="cline-any cline-yes">1x</span>
1127
- <span class="cline-any cline-yes">1x</span>
1128
- <span class="cline-any cline-yes">1x</span>
1129
- <span class="cline-any cline-yes">1x</span>
1130
- <span class="cline-any cline-yes">1x</span>
1131
- <span class="cline-any cline-yes">1x</span>
1132
- <span class="cline-any cline-yes">1x</span>
1133
- <span class="cline-any cline-yes">1x</span>
1134
- <span class="cline-any cline-yes">1x</span>
1135
- <span class="cline-any cline-yes">1x</span>
1136
- <span class="cline-any cline-yes">1x</span>
1137
- <span class="cline-any cline-yes">1x</span>
1138
- <span class="cline-any cline-yes">1x</span>
1139
- <span class="cline-any cline-yes">1x</span>
1140
- <span class="cline-any cline-yes">1x</span>
1141
- <span class="cline-any cline-yes">1x</span>
1142
- <span class="cline-any cline-yes">1x</span>
1143
- <span class="cline-any cline-yes">1x</span>
1144
- <span class="cline-any cline-yes">1x</span>
1145
- <span class="cline-any cline-yes">1x</span>
1146
- <span class="cline-any cline-yes">1x</span>
1147
- <span class="cline-any cline-yes">1x</span>
1148
- <span class="cline-any cline-yes">1x</span>
1149
- <span class="cline-any cline-yes">1x</span>
1150
- <span class="cline-any cline-yes">1x</span>
1151
- <span class="cline-any cline-yes">1x</span>
1152
- <span class="cline-any cline-yes">1x</span>
1153
- <span class="cline-any cline-yes">1x</span>
1154
- <span class="cline-any cline-yes">1x</span>
1155
- <span class="cline-any cline-yes">1x</span>
1156
- <span class="cline-any cline-yes">1x</span>
1157
- <span class="cline-any cline-yes">1x</span>
1158
- <span class="cline-any cline-yes">1x</span>
1159
- <span class="cline-any cline-yes">1x</span>
1160
- <span class="cline-any cline-yes">1x</span>
1161
- <span class="cline-any cline-yes">1x</span>
1162
- <span class="cline-any cline-yes">1x</span>
1163
- <span class="cline-any cline-yes">1x</span>
1164
- <span class="cline-any cline-yes">3x</span>
1165
- <span class="cline-any cline-yes">3x</span>
1166
- <span class="cline-any cline-yes">3x</span>
1167
- <span class="cline-any cline-yes">1x</span>
1168
- <span class="cline-any cline-yes">1x</span>
1169
- <span class="cline-any cline-yes">1x</span>
1170
- <span class="cline-any cline-yes">1x</span>
1171
- <span class="cline-any cline-yes">1x</span>
1172
- <span class="cline-any cline-yes">1x</span>
1173
- <span class="cline-any cline-yes">1x</span>
1174
- <span class="cline-any cline-yes">1x</span>
1175
- <span class="cline-any cline-yes">1x</span>
1176
- <span class="cline-any cline-yes">1x</span>
1177
- <span class="cline-any cline-yes">1x</span>
1178
- <span class="cline-any cline-yes">1x</span>
1179
- <span class="cline-any cline-yes">1x</span>
1180
- <span class="cline-any cline-yes">1x</span>
1181
- <span class="cline-any cline-yes">1x</span>
1182
- <span class="cline-any cline-yes">1x</span>
1183
- <span class="cline-any cline-yes">1x</span>
1184
- <span class="cline-any cline-yes">1x</span>
1185
- <span class="cline-any cline-yes">1x</span>
1186
- <span class="cline-any cline-yes">1x</span>
1187
- <span class="cline-any cline-yes">1x</span>
1188
- <span class="cline-any cline-yes">1x</span>
1189
- <span class="cline-any cline-yes">1x</span>
1190
- <span class="cline-any cline-yes">1x</span>
1191
- <span class="cline-any cline-yes">1x</span>
1192
- <span class="cline-any cline-yes">1x</span>
1193
- <span class="cline-any cline-yes">1x</span>
1194
- <span class="cline-any cline-yes">1x</span>
1195
- <span class="cline-any cline-yes">1x</span>
1196
- <span class="cline-any cline-yes">1x</span>
1197
- <span class="cline-any cline-yes">1x</span>
1198
- <span class="cline-any cline-yes">1x</span>
1199
- <span class="cline-any cline-yes">1x</span>
1200
- <span class="cline-any cline-yes">1x</span>
1201
- <span class="cline-any cline-yes">1x</span>
1202
- <span class="cline-any cline-yes">1x</span>
1203
- <span class="cline-any cline-yes">1x</span>
1204
- <span class="cline-any cline-yes">1x</span>
1205
- <span class="cline-any cline-yes">1x</span>
1206
- <span class="cline-any cline-yes">1x</span>
1207
- <span class="cline-any cline-yes">1x</span>
1208
- <span class="cline-any cline-yes">1x</span>
1209
- <span class="cline-any cline-yes">1x</span>
1210
- <span class="cline-any cline-yes">1x</span>
1211
- <span class="cline-any cline-yes">1x</span>
1212
- <span class="cline-any cline-yes">1x</span>
1213
- <span class="cline-any cline-yes">1x</span>
1214
- <span class="cline-any cline-yes">1x</span>
1215
- <span class="cline-any cline-yes">1x</span>
1216
- <span class="cline-any cline-yes">1x</span>
1217
- <span class="cline-any cline-yes">1x</span>
1218
- <span class="cline-any cline-yes">1x</span>
1219
- <span class="cline-any cline-yes">1x</span>
1220
- <span class="cline-any cline-yes">1x</span>
1221
- <span class="cline-any cline-yes">1x</span>
1222
- <span class="cline-any cline-yes">1x</span>
1223
- <span class="cline-any cline-yes">1x</span>
1224
- <span class="cline-any cline-yes">1x</span>
1225
- <span class="cline-any cline-yes">1x</span>
1226
- <span class="cline-any cline-yes">1x</span>
1227
- <span class="cline-any cline-yes">1x</span>
1228
- <span class="cline-any cline-yes">1x</span>
1229
- <span class="cline-any cline-yes">1x</span>
1230
- <span class="cline-any cline-yes">1x</span>
1231
- <span class="cline-any cline-yes">1x</span>
1232
- <span class="cline-any cline-yes">1x</span>
1233
- <span class="cline-any cline-yes">1x</span>
1234
- <span class="cline-any cline-yes">1x</span>
1235
- <span class="cline-any cline-yes">1x</span>
1236
- <span class="cline-any cline-yes">1x</span>
1237
- <span class="cline-any cline-yes">1x</span>
1238
- <span class="cline-any cline-yes">1x</span>
1239
- <span class="cline-any cline-yes">1x</span>
1240
- <span class="cline-any cline-yes">1x</span>
1241
- <span class="cline-any cline-yes">1x</span>
1242
- <span class="cline-any cline-yes">1x</span>
1243
- <span class="cline-any cline-yes">1x</span>
1244
- <span class="cline-any cline-yes">1x</span>
1245
- <span class="cline-any cline-yes">1x</span>
1246
- <span class="cline-any cline-yes">1x</span>
1247
- <span class="cline-any cline-yes">1x</span>
1248
- <span class="cline-any cline-yes">1x</span>
1249
- <span class="cline-any cline-yes">1x</span>
1250
- <span class="cline-any cline-yes">1x</span>
1251
- <span class="cline-any cline-yes">1x</span>
1252
- <span class="cline-any cline-yes">1x</span>
1253
- <span class="cline-any cline-yes">1x</span>
1254
- <span class="cline-any cline-yes">1x</span>
1255
- <span class="cline-any cline-yes">1x</span>
1256
- <span class="cline-any cline-yes">1x</span>
1257
- <span class="cline-any cline-yes">1x</span>
1258
- <span class="cline-any cline-yes">1x</span>
1259
- <span class="cline-any cline-yes">1x</span>
1260
- <span class="cline-any cline-yes">1x</span>
1261
- <span class="cline-any cline-yes">1x</span>
1262
- <span class="cline-any cline-yes">1x</span>
1263
- <span class="cline-any cline-yes">1x</span>
1264
- <span class="cline-any cline-yes">1x</span>
1265
- <span class="cline-any cline-yes">1x</span>
1266
- <span class="cline-any cline-yes">1x</span>
1267
- <span class="cline-any cline-yes">1x</span>
1268
- <span class="cline-any cline-no">&nbsp;</span>
1269
- <span class="cline-any cline-no">&nbsp;</span>
1270
- <span class="cline-any cline-yes">1x</span>
1271
- <span class="cline-any cline-yes">1x</span>
1272
- <span class="cline-any cline-yes">1x</span>
1273
- <span class="cline-any cline-yes">1x</span>
1274
- <span class="cline-any cline-yes">25x</span>
1275
- <span class="cline-any cline-yes">25x</span>
1276
- <span class="cline-any cline-yes">25x</span>
1277
- <span class="cline-any cline-yes">25x</span>
1278
- <span class="cline-any cline-yes">25x</span>
1279
- <span class="cline-any cline-yes">25x</span>
1280
- <span class="cline-any cline-yes">25x</span>
1281
- <span class="cline-any cline-yes">25x</span>
1282
- <span class="cline-any cline-yes">1x</span>
1283
- <span class="cline-any cline-yes">1x</span>
1284
- <span class="cline-any cline-yes">1x</span>
1285
- <span class="cline-any cline-yes">1x</span>
1286
- <span class="cline-any cline-yes">1x</span>
1287
- <span class="cline-any cline-yes">1x</span>
1288
- <span class="cline-any cline-yes">26x</span>
1289
- <span class="cline-any cline-yes">26x</span>
1290
- <span class="cline-any cline-yes">26x</span>
1291
- <span class="cline-any cline-yes">26x</span>
1292
- <span class="cline-any cline-yes">26x</span>
1293
- <span class="cline-any cline-yes">26x</span>
1294
- <span class="cline-any cline-yes">23x</span>
1295
- <span class="cline-any cline-yes">26x</span>
1296
- <span class="cline-any cline-yes">1x</span>
1297
- <span class="cline-any cline-yes">1x</span>
1298
- <span class="cline-any cline-yes">25x</span>
1299
- <span class="cline-any cline-yes">25x</span>
1300
- <span class="cline-any cline-yes">25x</span>
1301
- <span class="cline-any cline-yes">1x</span>
1302
- <span class="cline-any cline-yes">1x</span>
1303
- <span class="cline-any cline-yes">1x</span>
1304
- <span class="cline-any cline-yes">1x</span>
1305
- <span class="cline-any cline-yes">1x</span>
1306
- <span class="cline-any cline-yes">1x</span>
1307
- <span class="cline-any cline-yes">1x</span>
1308
- <span class="cline-any cline-yes">1x</span>
1309
- <span class="cline-any cline-yes">1x</span>
1310
- <span class="cline-any cline-yes">1x</span>
1311
- <span class="cline-any cline-yes">1x</span>
1312
- <span class="cline-any cline-yes">1x</span>
1313
- <span class="cline-any cline-yes">1x</span>
1314
- <span class="cline-any cline-yes">1x</span>
1315
- <span class="cline-any cline-yes">1x</span>
1316
- <span class="cline-any cline-yes">1x</span>
1317
- <span class="cline-any cline-yes">1x</span>
1318
- <span class="cline-any cline-yes">1x</span>
1319
- <span class="cline-any cline-yes">3x</span>
1320
- <span class="cline-any cline-yes">3x</span>
1321
- <span class="cline-any cline-yes">3x</span>
1322
- <span class="cline-any cline-yes">3x</span>
1323
- <span class="cline-any cline-yes">1x</span>
1324
- <span class="cline-any cline-yes">1x</span>
1325
- <span class="cline-any cline-yes">2x</span>
1326
- <span class="cline-any cline-yes">2x</span>
1327
- <span class="cline-any cline-yes">3x</span>
1328
- <span class="cline-any cline-yes">3x</span>
1329
- <span class="cline-any cline-yes">3x</span>
1330
- <span class="cline-any cline-yes">3x</span>
1331
- <span class="cline-any cline-yes">3x</span>
1332
- <span class="cline-any cline-yes">1x</span>
1333
- <span class="cline-any cline-yes">1x</span>
1334
- <span class="cline-any cline-yes">1x</span>
1335
- <span class="cline-any cline-yes">1x</span>
1336
- <span class="cline-any cline-yes">1x</span>
1337
- <span class="cline-any cline-yes">1x</span>
1338
- <span class="cline-any cline-yes">1x</span>
1339
- <span class="cline-any cline-yes">1x</span>
1340
- <span class="cline-any cline-yes">1x</span>
1341
- <span class="cline-any cline-yes">1x</span>
1342
- <span class="cline-any cline-yes">1x</span>
1343
- <span class="cline-any cline-yes">1x</span>
1344
- <span class="cline-any cline-yes">1x</span>
1345
- <span class="cline-any cline-yes">1x</span>
1346
- <span class="cline-any cline-yes">1x</span>
1347
- <span class="cline-any cline-yes">1x</span>
1348
- <span class="cline-any cline-yes">1x</span>
1349
- <span class="cline-any cline-yes">1x</span>
1350
- <span class="cline-any cline-yes">1x</span>
1351
- <span class="cline-any cline-yes">1x</span>
1352
- <span class="cline-any cline-yes">1x</span>
1353
- <span class="cline-any cline-yes">1x</span>
1354
- <span class="cline-any cline-yes">1x</span>
1355
- <span class="cline-any cline-yes">1x</span>
1356
- <span class="cline-any cline-yes">1x</span>
1357
- <span class="cline-any cline-yes">1x</span>
1358
- <span class="cline-any cline-yes">1x</span>
1359
- <span class="cline-any cline-yes">1x</span>
1360
- <span class="cline-any cline-yes">1x</span>
1361
- <span class="cline-any cline-yes">1x</span>
1362
- <span class="cline-any cline-yes">1x</span>
1363
- <span class="cline-any cline-yes">1x</span>
1364
- <span class="cline-any cline-yes">1x</span>
1365
- <span class="cline-any cline-yes">1x</span>
1366
- <span class="cline-any cline-yes">1x</span>
1367
- <span class="cline-any cline-yes">1x</span>
1368
- <span class="cline-any cline-yes">1x</span>
1369
- <span class="cline-any cline-yes">1x</span>
1370
- <span class="cline-any cline-yes">1x</span>
1371
- <span class="cline-any cline-yes">1x</span>
1372
- <span class="cline-any cline-yes">1x</span>
1373
- <span class="cline-any cline-yes">1x</span>
1374
- <span class="cline-any cline-yes">1x</span>
1375
- <span class="cline-any cline-yes">1x</span>
1376
- <span class="cline-any cline-yes">1x</span>
1377
- <span class="cline-any cline-yes">1x</span>
1378
- <span class="cline-any cline-yes">1x</span>
1379
- <span class="cline-any cline-yes">1x</span>
1380
- <span class="cline-any cline-yes">1x</span>
1381
- <span class="cline-any cline-yes">1x</span>
1382
- <span class="cline-any cline-yes">1x</span>
1383
- <span class="cline-any cline-yes">1x</span>
1384
- <span class="cline-any cline-yes">1x</span>
1385
- <span class="cline-any cline-yes">1x</span>
1386
- <span class="cline-any cline-yes">1x</span>
1387
- <span class="cline-any cline-yes">1x</span>
1388
- <span class="cline-any cline-yes">1x</span>
1389
- <span class="cline-any cline-yes">1x</span>
1390
- <span class="cline-any cline-yes">1x</span>
1391
- <span class="cline-any cline-yes">1x</span>
1392
- <span class="cline-any cline-yes">1x</span>
1393
- <span class="cline-any cline-yes">1x</span>
1394
- <span class="cline-any cline-yes">1x</span>
1395
- <span class="cline-any cline-yes">1x</span>
1396
- <span class="cline-any cline-yes">1x</span>
1397
- <span class="cline-any cline-yes">1x</span>
1398
- <span class="cline-any cline-yes">1x</span>
1399
- <span class="cline-any cline-yes">1x</span>
1400
- <span class="cline-any cline-yes">1x</span>
1401
- <span class="cline-any cline-yes">1x</span>
1402
- <span class="cline-any cline-yes">1x</span>
1403
- <span class="cline-any cline-yes">1x</span>
1404
- <span class="cline-any cline-yes">1x</span>
1405
- <span class="cline-any cline-yes">1x</span>
1406
- <span class="cline-any cline-yes">1x</span>
1407
- <span class="cline-any cline-yes">1x</span>
1408
- <span class="cline-any cline-yes">1x</span>
1409
- <span class="cline-any cline-yes">1x</span>
1410
- <span class="cline-any cline-yes">1x</span>
1411
- <span class="cline-any cline-yes">1x</span>
1412
- <span class="cline-any cline-yes">1x</span>
1413
- <span class="cline-any cline-yes">1x</span>
1414
- <span class="cline-any cline-yes">1x</span>
1415
- <span class="cline-any cline-yes">1x</span>
1416
- <span class="cline-any cline-yes">1x</span>
1417
- <span class="cline-any cline-yes">1x</span>
1418
- <span class="cline-any cline-yes">1x</span>
1419
- <span class="cline-any cline-yes">1x</span>
1420
- <span class="cline-any cline-yes">1x</span>
1421
- <span class="cline-any cline-yes">1x</span>
1422
- <span class="cline-any cline-yes">1x</span>
1423
- <span class="cline-any cline-yes">1x</span>
1424
- <span class="cline-any cline-yes">1x</span>
1425
- <span class="cline-any cline-yes">1x</span>
1426
- <span class="cline-any cline-yes">1x</span>
1427
- <span class="cline-any cline-yes">1x</span>
1428
- <span class="cline-any cline-yes">1x</span>
1429
- <span class="cline-any cline-yes">1x</span>
1430
- <span class="cline-any cline-yes">1x</span>
1431
- <span class="cline-any cline-yes">1x</span>
1432
- <span class="cline-any cline-yes">1x</span>
1433
- <span class="cline-any cline-yes">1x</span>
1434
- <span class="cline-any cline-yes">1x</span>
1435
- <span class="cline-any cline-yes">1x</span>
1436
- <span class="cline-any cline-yes">1x</span>
1437
- <span class="cline-any cline-yes">1x</span>
1438
- <span class="cline-any cline-yes">1x</span>
1439
- <span class="cline-any cline-yes">1x</span>
1440
- <span class="cline-any cline-yes">1x</span>
1441
- <span class="cline-any cline-yes">1x</span>
1442
- <span class="cline-any cline-yes">1x</span>
1443
- <span class="cline-any cline-yes">1x</span>
1444
- <span class="cline-any cline-yes">1x</span>
1445
- <span class="cline-any cline-yes">1x</span>
1446
- <span class="cline-any cline-yes">1x</span>
1447
- <span class="cline-any cline-yes">1x</span>
1448
- <span class="cline-any cline-yes">1x</span>
1449
- <span class="cline-any cline-yes">1x</span>
1450
- <span class="cline-any cline-yes">1x</span>
1451
- <span class="cline-any cline-yes">1x</span>
1452
- <span class="cline-any cline-yes">1x</span>
1453
- <span class="cline-any cline-yes">1x</span>
1454
- <span class="cline-any cline-yes">1x</span>
1455
- <span class="cline-any cline-yes">1x</span>
1456
- <span class="cline-any cline-yes">1x</span>
1457
- <span class="cline-any cline-yes">1x</span>
1458
- <span class="cline-any cline-yes">1x</span>
1459
- <span class="cline-any cline-yes">1x</span>
1460
- <span class="cline-any cline-yes">1x</span>
1461
- <span class="cline-any cline-yes">1x</span>
1462
- <span class="cline-any cline-yes">1x</span>
1463
- <span class="cline-any cline-yes">1x</span>
1464
- <span class="cline-any cline-yes">1x</span>
1465
- <span class="cline-any cline-yes">1x</span>
1466
- <span class="cline-any cline-yes">1x</span>
1467
- <span class="cline-any cline-yes">1x</span>
1468
- <span class="cline-any cline-yes">1x</span>
1469
- <span class="cline-any cline-yes">1x</span>
1470
- <span class="cline-any cline-yes">1x</span>
1471
- <span class="cline-any cline-yes">1x</span>
1472
- <span class="cline-any cline-yes">1x</span>
1473
- <span class="cline-any cline-yes">1x</span>
1474
- <span class="cline-any cline-yes">1x</span>
1475
- <span class="cline-any cline-yes">1x</span>
1476
- <span class="cline-any cline-yes">1x</span>
1477
- <span class="cline-any cline-yes">1x</span>
1478
- <span class="cline-any cline-yes">1x</span>
1479
- <span class="cline-any cline-yes">1x</span>
1480
- <span class="cline-any cline-yes">1x</span>
1481
- <span class="cline-any cline-yes">1x</span>
1482
- <span class="cline-any cline-yes">1x</span>
1483
- <span class="cline-any cline-yes">1x</span>
1484
- <span class="cline-any cline-yes">1x</span>
1485
- <span class="cline-any cline-yes">1x</span>
1486
- <span class="cline-any cline-yes">1x</span>
1487
- <span class="cline-any cline-yes">1x</span>
1488
- <span class="cline-any cline-yes">1x</span>
1489
- <span class="cline-any cline-yes">1x</span>
1490
- <span class="cline-any cline-yes">1x</span>
1491
- <span class="cline-any cline-yes">1x</span>
1492
- <span class="cline-any cline-yes">1x</span>
1493
- <span class="cline-any cline-yes">1x</span>
1494
- <span class="cline-any cline-yes">1x</span>
1495
- <span class="cline-any cline-yes">1x</span>
1496
- <span class="cline-any cline-yes">1x</span>
1497
- <span class="cline-any cline-yes">1x</span>
1498
- <span class="cline-any cline-yes">1x</span>
1499
- <span class="cline-any cline-yes">1x</span>
1500
- <span class="cline-any cline-yes">1x</span>
1501
- <span class="cline-any cline-yes">1x</span>
1502
- <span class="cline-any cline-yes">1x</span>
1503
- <span class="cline-any cline-yes">1x</span>
1504
- <span class="cline-any cline-yes">1x</span>
1505
- <span class="cline-any cline-yes">1x</span>
1506
- <span class="cline-any cline-yes">1x</span>
1507
- <span class="cline-any cline-yes">1x</span>
1508
- <span class="cline-any cline-yes">1x</span>
1509
- <span class="cline-any cline-yes">1x</span>
1510
- <span class="cline-any cline-yes">1x</span>
1511
- <span class="cline-any cline-yes">1x</span>
1512
- <span class="cline-any cline-yes">1x</span>
1513
- <span class="cline-any cline-yes">1x</span>
1514
- <span class="cline-any cline-yes">1x</span>
1515
- <span class="cline-any cline-yes">1x</span>
1516
- <span class="cline-any cline-yes">1x</span>
1517
- <span class="cline-any cline-yes">1x</span>
1518
- <span class="cline-any cline-yes">1x</span>
1519
- <span class="cline-any cline-yes">1x</span>
1520
- <span class="cline-any cline-yes">1x</span>
1521
- <span class="cline-any cline-yes">1x</span>
1522
- <span class="cline-any cline-yes">1x</span>
1523
- <span class="cline-any cline-yes">1x</span>
1524
- <span class="cline-any cline-yes">1x</span>
1525
- <span class="cline-any cline-yes">1x</span>
1526
- <span class="cline-any cline-yes">1x</span>
1527
- <span class="cline-any cline-yes">1x</span>
1528
- <span class="cline-any cline-yes">1x</span>
1529
- <span class="cline-any cline-yes">1x</span>
1530
- <span class="cline-any cline-yes">1x</span>
1531
- <span class="cline-any cline-yes">1x</span>
1532
- <span class="cline-any cline-yes">1x</span>
1533
- <span class="cline-any cline-yes">1x</span>
1534
- <span class="cline-any cline-yes">1x</span>
1535
- <span class="cline-any cline-yes">1x</span>
1536
- <span class="cline-any cline-yes">1x</span>
1537
- <span class="cline-any cline-yes">2x</span>
1538
- <span class="cline-any cline-yes">2x</span>
1539
- <span class="cline-any cline-yes">2x</span>
1540
- <span class="cline-any cline-yes">1x</span>
1541
- <span class="cline-any cline-yes">1x</span>
1542
- <span class="cline-any cline-yes">1x</span>
1543
- <span class="cline-any cline-yes">1x</span>
1544
- <span class="cline-any cline-yes">1x</span>
1545
- <span class="cline-any cline-yes">1x</span>
1546
- <span class="cline-any cline-yes">1x</span>
1547
- <span class="cline-any cline-yes">1x</span>
1548
- <span class="cline-any cline-yes">1x</span>
1549
- <span class="cline-any cline-yes">1x</span>
1550
- <span class="cline-any cline-yes">1x</span>
1551
- <span class="cline-any cline-yes">1x</span>
1552
- <span class="cline-any cline-yes">1x</span>
1553
- <span class="cline-any cline-yes">1x</span>
1554
- <span class="cline-any cline-yes">1x</span>
1555
- <span class="cline-any cline-yes">1x</span>
1556
- <span class="cline-any cline-yes">1x</span>
1557
- <span class="cline-any cline-yes">1x</span>
1558
- <span class="cline-any cline-yes">1x</span>
1559
- <span class="cline-any cline-yes">1x</span>
1560
- <span class="cline-any cline-yes">1x</span>
1561
- <span class="cline-any cline-yes">1x</span>
1562
- <span class="cline-any cline-yes">1x</span>
1563
- <span class="cline-any cline-yes">1x</span>
1564
- <span class="cline-any cline-yes">1x</span>
1565
- <span class="cline-any cline-yes">1x</span>
1566
- <span class="cline-any cline-yes">1x</span>
1567
- <span class="cline-any cline-yes">1x</span>
1568
- <span class="cline-any cline-yes">1x</span>
1569
- <span class="cline-any cline-yes">1x</span>
1570
- <span class="cline-any cline-yes">1x</span>
1571
- <span class="cline-any cline-yes">1x</span>
1572
- <span class="cline-any cline-yes">1x</span>
1573
- <span class="cline-any cline-yes">4x</span>
1574
- <span class="cline-any cline-yes">4x</span>
1575
- <span class="cline-any cline-yes">1x</span>
1576
- <span class="cline-any cline-yes">1x</span>
1577
- <span class="cline-any cline-yes">1x</span>
1578
- <span class="cline-any cline-yes">1x</span>
1579
- <span class="cline-any cline-yes">1x</span>
1580
- <span class="cline-any cline-yes">1x</span>
1581
- <span class="cline-any cline-yes">1x</span>
1582
- <span class="cline-any cline-yes">1x</span>
1583
- <span class="cline-any cline-yes">1x</span>
1584
- <span class="cline-any cline-yes">1x</span>
1585
- <span class="cline-any cline-yes">3x</span>
1586
- <span class="cline-any cline-yes">3x</span>
1587
- <span class="cline-any cline-yes">1x</span>
1588
- <span class="cline-any cline-yes">1x</span>
1589
- <span class="cline-any cline-yes">1x</span>
1590
- <span class="cline-any cline-yes">1x</span>
1591
- <span class="cline-any cline-yes">1x</span>
1592
- <span class="cline-any cline-yes">1x</span>
1593
- <span class="cline-any cline-yes">1x</span>
1594
- <span class="cline-any cline-yes">1x</span>
1595
- <span class="cline-any cline-yes">1x</span>
1596
- <span class="cline-any cline-yes">9x</span>
1597
- <span class="cline-any cline-yes">9x</span>
1598
- <span class="cline-any cline-yes">9x</span>
1599
- <span class="cline-any cline-yes">1x</span>
1600
- <span class="cline-any cline-yes">1x</span>
1601
- <span class="cline-any cline-yes">1x</span>
1602
- <span class="cline-any cline-yes">1x</span>
1603
- <span class="cline-any cline-yes">1x</span>
1604
- <span class="cline-any cline-yes">1x</span>
1605
- <span class="cline-any cline-yes">1x</span>
1606
- <span class="cline-any cline-yes">1x</span>
1607
- <span class="cline-any cline-yes">1x</span>
1608
- <span class="cline-any cline-yes">9x</span>
1609
- <span class="cline-any cline-yes">9x</span>
1610
- <span class="cline-any cline-yes">9x</span>
1611
- <span class="cline-any cline-yes">1x</span>
1612
- <span class="cline-any cline-yes">1x</span>
1613
- <span class="cline-any cline-yes">1x</span>
1614
- <span class="cline-any cline-yes">1x</span>
1615
- <span class="cline-any cline-yes">1x</span>
1616
- <span class="cline-any cline-yes">1x</span>
1617
- <span class="cline-any cline-yes">1x</span>
1618
- <span class="cline-any cline-yes">1x</span>
1619
- <span class="cline-any cline-yes">1x</span>
1620
- <span class="cline-any cline-yes">1x</span>
1621
- <span class="cline-any cline-yes">11x</span>
1622
- <span class="cline-any cline-yes">11x</span>
1623
- <span class="cline-any cline-yes">11x</span>
1624
- <span class="cline-any cline-yes">1x</span>
1625
- <span class="cline-any cline-yes">1x</span>
1626
- <span class="cline-any cline-yes">1x</span>
1627
- <span class="cline-any cline-yes">1x</span>
1628
- <span class="cline-any cline-yes">1x</span>
1629
- <span class="cline-any cline-yes">1x</span>
1630
- <span class="cline-any cline-yes">1x</span>
1631
- <span class="cline-any cline-yes">1x</span>
1632
- <span class="cline-any cline-yes">1x</span>
1633
- <span class="cline-any cline-yes">1x</span>
1634
- <span class="cline-any cline-yes">1x</span>
1635
- <span class="cline-any cline-yes">1x</span>
1636
- <span class="cline-any cline-yes">1x</span>
1637
- <span class="cline-any cline-yes">1x</span>
1638
- <span class="cline-any cline-yes">1x</span>
1639
- <span class="cline-any cline-yes">1x</span>
1640
- <span class="cline-any cline-yes">1x</span>
1641
- <span class="cline-any cline-yes">1x</span>
1642
- <span class="cline-any cline-yes">1x</span>
1643
- <span class="cline-any cline-yes">1x</span>
1644
- <span class="cline-any cline-yes">1x</span>
1645
- <span class="cline-any cline-yes">1x</span>
1646
- <span class="cline-any cline-yes">1x</span>
1647
- <span class="cline-any cline-yes">1x</span>
1648
- <span class="cline-any cline-yes">1x</span>
1649
- <span class="cline-any cline-yes">1x</span>
1650
- <span class="cline-any cline-yes">1x</span>
1651
- <span class="cline-any cline-yes">3x</span>
1652
- <span class="cline-any cline-yes">3x</span>
1653
- <span class="cline-any cline-yes">1x</span>
1654
- <span class="cline-any cline-yes">1x</span>
1655
- <span class="cline-any cline-yes">1x</span>
1656
- <span class="cline-any cline-yes">1x</span>
1657
- <span class="cline-any cline-yes">1x</span>
1658
- <span class="cline-any cline-yes">1x</span>
1659
- <span class="cline-any cline-yes">1x</span>
1660
- <span class="cline-any cline-yes">1x</span>
1661
- <span class="cline-any cline-yes">1x</span>
1662
- <span class="cline-any cline-yes">1x</span>
1663
- <span class="cline-any cline-yes">2x</span>
1664
- <span class="cline-any cline-yes">2x</span>
1665
- <span class="cline-any cline-yes">2x</span>
1666
- <span class="cline-any cline-yes">1x</span>
1667
- <span class="cline-any cline-yes">1x</span>
1668
- <span class="cline-any cline-yes">1x</span>
1669
- <span class="cline-any cline-yes">1x</span>
1670
- <span class="cline-any cline-yes">1x</span>
1671
- <span class="cline-any cline-yes">1x</span>
1672
- <span class="cline-any cline-yes">1x</span>
1673
- <span class="cline-any cline-yes">1x</span>
1674
- <span class="cline-any cline-yes">1x</span>
1675
- <span class="cline-any cline-yes">1x</span>
1676
- <span class="cline-any cline-yes">1x</span>
1677
- <span class="cline-any cline-yes">1x</span>
1678
- <span class="cline-any cline-yes">1x</span>
1679
- <span class="cline-any cline-yes">1x</span>
1680
- <span class="cline-any cline-yes">1x</span>
1681
- <span class="cline-any cline-yes">1x</span>
1682
- <span class="cline-any cline-yes">1x</span>
1683
- <span class="cline-any cline-yes">1x</span>
1684
- <span class="cline-any cline-no">&nbsp;</span>
1685
- <span class="cline-any cline-no">&nbsp;</span>
1686
- <span class="cline-any cline-no">&nbsp;</span>
1687
- <span class="cline-any cline-yes">1x</span>
1688
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
1689
- &nbsp;
1690
- import {
1691
- NodePyATVApp,
1692
- NodePyATVDeviceOptions,
1693
- NodePyATVDeviceState,
1694
- NodePyATVExecutableType,
1695
- NodePyATVGetStateOptions,
1696
- NodePyATVInternalKeys,
1697
- NodePyATVKeys,
1698
- NodePyATVMediaType,
1699
- NodePyATVProtocol,
1700
- NodePyATVRepeatState,
1701
- NodePyATVService,
1702
- NodePyATVShuffleState,
1703
- NodePyATVState
1704
- } from './types.js';
1705
- &nbsp;
1706
- import { addRequestId, getParamters, parseState, removeRequestId, request } from './tools.js';
1707
- import { NodePyATVDeviceEvent, NodePyATVDeviceEvents } from '../lib/index.js';
1708
- import { EventEmitter } from 'events';
1709
- &nbsp;
1710
- /**
1711
- * Represents an Apple TV. Use [[getState]] to query the current state (e.g. media
1712
- * type and title). You can also use the attribute methods (e.g. [[getTitle]] to get
1713
- * the state. If you want realtime updates, subscribe to it's events with an
1714
- * `EventEmitter` like API, so for example by using [[on]], [[once]] or [[addListener]].
1715
- * It's also possible to send key commands by using [[pressKey]] or methods like [[pause]].
1716
- */
1717
- export default class NodePyATVDevice implements EventEmitter{
1718
- private readonly options: NodePyATVDeviceOptions;
1719
- private readonly state: NodePyATVState;
1720
- private readonly events: NodePyATVDeviceEvents;
1721
- &nbsp;
1722
- constructor(options: NodePyATVDeviceOptions) {
1723
- this.options = Object.assign({}, options);
1724
- this.state = parseState({}, '', {});
1725
- this.events = new NodePyATVDeviceEvents(this.state, this, this.options);
1726
- &nbsp;
1727
- // @todo basic validation
1728
- }
1729
- &nbsp;
1730
- /**
1731
- * Get the name of the Apple TV.
1732
- *
1733
- * ```typescript
1734
- * import pyatv from '@sebbo2002/node-pyatv';
1735
- * const devices = await pyatv.find();
1736
- * devices.forEach(device =&gt;
1737
- * console.log(device.name)
1738
- * );
1739
- * ```
1740
- */
1741
- get name(): string {
1742
- return this.options.name;
1743
- }
1744
- &nbsp;
1745
- /**
1746
- * Get the IP address of the Apple TV.
1747
- */
1748
- get host(): string {
1749
- return this.options.host;
1750
- }
1751
- &nbsp;
1752
- /**
1753
- * Get the ID of the Apple TV.
1754
- */
1755
- get id(): string | undefined {
1756
- return this.options.id;
1757
- }
1758
- &nbsp;
1759
- /**
1760
- * Get the used protocol to connect to the Apple TV.
1761
- */
1762
- get protocol(): NodePyATVProtocol | undefined {
1763
- return this.options.protocol;
1764
- }
1765
- &nbsp;
1766
- /**
1767
- * Get the model identifier of the device. Only set, if the
1768
- * device was found using [[find()]]. Requires pyatv ≧ 0.10.3.
1769
- *
1770
- * @example device.model → "Gen4K"
1771
- */
1772
- get model(): string | undefined {
1773
- return this.options.model;
1774
- }
1775
- &nbsp;
1776
- /**
1777
- * Get the model name of the device. Only set, if the device
1778
- * was found with [[find()]]. Requires pyatv ≧ 0.10.3.
1779
- *
1780
- * @example device.modelName → "Apple TV 4K"
1781
- */
1782
- get modelName(): string | undefined {
1783
- return this.options.modelName;
1784
- }
1785
- &nbsp;
1786
- /**
1787
- * Get the operating system of the device. Only set, if the
1788
- * device was found with [[find()]]. Requires pyatv ≧ 0.10.3.
1789
- *
1790
- * @example device.os → "TvOS"
1791
- */
1792
- get os(): string | undefined {
1793
- return this.options.os;
1794
- }
1795
- &nbsp;
1796
- /**
1797
- * Get the device version. Only set, if the device was found
1798
- * during a scan using [[find()]]. Requires pyatv ≧ 0.10.3.
1799
- *
1800
- * @example device.version → "15.5.1"
1801
- */
1802
- get version(): string | undefined {
1803
- return this.options.version;
1804
- }
1805
- &nbsp;
1806
- /**
1807
- * Returns a list of services supported by the device. Ony set, if
1808
- * the device was found during a scan using [[find()]]. Requires
1809
- * pyatv ≧ 0.10.3.
1810
- *
1811
- * @example device.services → [
1812
- * {
1813
- * "protocol": "airplay",
1814
- * "port": 7000
1815
- * },
1816
- * {
1817
- * "protocol": "dmap",
1818
- * "port": 3689
1819
- * }
1820
- * ]
1821
- */
1822
- get services(): NodePyATVService[] | undefined {
1823
- return this.options.services;
1824
- }
1825
- &nbsp;
1826
- &nbsp;
1827
- /**
1828
- * Returns true, if debugging is enabled. Returns the custom
1829
- * logging method, if one was specified. Otherwise, if debug
1830
- * log is disabled, returns undefined.
1831
- */
1832
- get debug(): true | ((msg: string) =&gt; void) | undefined {
1833
- return this.options.debug;
1834
- }
1835
- &nbsp;
1836
- /**
1837
- * Enable or disable debugging or set a custom
1838
- * debugging method to use.
1839
- *
1840
- * @param debug
1841
- */
1842
- set debug(debug: true | ((msg: string) =&gt; void) | undefined) {
1843
- if (typeof debug === 'function') {
1844
- this.options.debug = debug;
1845
- }
1846
- else {
1847
- this.options.debug = Boolean(debug) || undefined;
1848
- }
1849
- }
1850
- &nbsp;
1851
- /**
1852
- * Returns an object with `name`, `host`, `id` and `protocol`.
1853
- * Can be used to initiate a new device instance.
1854
- *
1855
- * @category Basic
1856
- */
1857
- toJSON(): { name: string; host: string; id: string | undefined; protocol: NodePyATVProtocol | undefined } {
1858
- return {
1859
- name: this.name,
1860
- host: this.host,
1861
- id: this.id,
1862
- protocol: this.protocol
1863
- };
1864
- }
1865
- &nbsp;
1866
- /**
1867
- * Returns a string. Just for debugging, etc.
1868
- *
1869
- * @category Basic
1870
- */
1871
- toString(): string {
1872
- return `NodePyATVDevice(${this.name}, ${this.host})`;
1873
- }
1874
- &nbsp;
1875
- /**
1876
- * Returns an [[NodePyATVState]] object representing the current state
1877
- * of the device. Has an internal cache, which has a default TTL of 5s.
1878
- * You can change this default value by passing the `maxAge` option.
1879
- *
1880
- * ```typescript
1881
- * await device.getState({maxAge: 10000}); // cache TTL: 10s
1882
- * ```
1883
- *
1884
- * @param options
1885
- * @category State
1886
- */
1887
- async getState(options: NodePyATVGetStateOptions = {}): Promise&lt;NodePyATVState&gt; {
1888
- if (this.state<span class="branch-0 cbranch-no" title="branch not covered" >?.d</span>ateTime &amp;&amp; new Date().getTime() - this.state.dateTime.getTime() &lt; (options.maxAge || 5000)) {
1889
- let position = null;
1890
- if (this.state.position &amp;&amp; this.state.dateTime) {
1891
- position = Math.round(
1892
- this.state.position +
1893
- ((new Date().getTime() - this.state.dateTime.getTime()) / 1000)
1894
- );
1895
- }
1896
- &nbsp;
1897
- return Object.assign({}, this.state, {position});
1898
- }
1899
- &nbsp;
1900
- const id = addRequestId();
1901
- &nbsp;
1902
- try {
1903
- const parameters = getParamters(this.options);
1904
- &nbsp;
1905
- const result = await request(id, NodePyATVExecutableType.atvscript, [...parameters, 'playing'], this.options);
1906
- const newState = parseState(result, id, this.options);
1907
- &nbsp;
1908
- this.applyState(newState);
1909
- return newState;
1910
- }
1911
- finally {
1912
- removeRequestId(id);
1913
- }
1914
- }
1915
- &nbsp;
1916
- /**
1917
- * Removes the state node-pyatv cached for this device.
1918
- *
1919
- * @category State
1920
- */
1921
- clearState(): void {
1922
- this.applyState(parseState({}, '', {}));
1923
- }
1924
- &nbsp;
1925
- private applyState(newState: NodePyATVState): void {
1926
- this.events.applyStateAndEmitEvents(newState);
1927
- }
1928
- &nbsp;
1929
- /**
1930
- * Get the date and time when the state was last updated.
1931
- * @param options
1932
- * @category State
1933
- */
1934
- async getDateTime(options: NodePyATVGetStateOptions = {}): Promise&lt;Date | null&gt; {
1935
- const state = await this.getState(options);
1936
- return state.dateTime;
1937
- }
1938
- &nbsp;
1939
- /**
1940
- * Get the hash of the current media
1941
- * @param options
1942
- * @category State
1943
- */
1944
- async getHash(options: NodePyATVGetStateOptions = {}): Promise&lt;string | null&gt; {
1945
- const state = await this.getState(options);
1946
- return state.hash;
1947
- }
1948
- &nbsp;
1949
- /**
1950
- * Get the media type of the current media
1951
- * @param options
1952
- * @category State
1953
- */
1954
- async getMediaType(options: NodePyATVGetStateOptions = {}): Promise&lt;NodePyATVMediaType | null&gt; {
1955
- const state = await this.getState(options);
1956
- return state.mediaType;
1957
- }
1958
- &nbsp;
1959
- /**
1960
- * Get the state of this device (e.g. playing, etc.)
1961
- * @param options
1962
- * @category State
1963
- */
1964
- async getDeviceState(options: NodePyATVGetStateOptions = {}): Promise&lt;NodePyATVDeviceState | null&gt; {
1965
- const state = await this.getState(options);
1966
- return state.deviceState;
1967
- }
1968
- &nbsp;
1969
- /**
1970
- * Returns the title of the current playing media
1971
- * @param options
1972
- * @category State
1973
- */
1974
- async getTitle(options: NodePyATVGetStateOptions = {}): Promise&lt;string | null&gt; {
1975
- const state = await this.getState(options);
1976
- return state.title;
1977
- }
1978
- &nbsp;
1979
- /**
1980
- * Returns the artist of the current playing media
1981
- * @param options
1982
- * @category State
1983
- */
1984
- async getArtist(options: NodePyATVGetStateOptions = {}): Promise&lt;string | null&gt; {
1985
- const state = await this.getState(options);
1986
- return state.artist;
1987
- }
1988
- &nbsp;
1989
- /**
1990
- * Returns the album of the current playing media
1991
- * @param options
1992
- * @category State
1993
- */
1994
- async getAlbum(options: NodePyATVGetStateOptions = {}): Promise&lt;string | null&gt; {
1995
- const state = await this.getState(options);
1996
- return state.album;
1997
- }
1998
- &nbsp;
1999
- /**
2000
- * Returns the genre of the current playing media
2001
- * @param options
2002
- * @category State
2003
- */
2004
- async getGenre(options: NodePyATVGetStateOptions = {}): Promise&lt;string | null&gt; {
2005
- const state = await this.getState(options);
2006
- return state.genre;
2007
- }
2008
- &nbsp;
2009
- /**
2010
- * Returns the media length of the current playing media
2011
- * @param options
2012
- * @category State
2013
- */
2014
- async getTotalTime(options: NodePyATVGetStateOptions = {}): Promise&lt;number | null&gt; {
2015
- const state = await this.getState(options);
2016
- return state.totalTime;
2017
- }
2018
- &nbsp;
2019
- /**
2020
- * Returns the title of the current playing media
2021
- * @param options
2022
- * @category State
2023
- */
2024
- async getPosition(options: NodePyATVGetStateOptions = {}): Promise&lt;number | null&gt; {
2025
- const state = await this.getState(options);
2026
- return state.position;
2027
- }
2028
- &nbsp;
2029
- /**
2030
- * Returns the shuffle state
2031
- * @param options
2032
- * @category State
2033
- */
2034
- async getShuffle(options: NodePyATVGetStateOptions = {}): Promise&lt;NodePyATVShuffleState | null&gt; {
2035
- const state = await this.getState(options);
2036
- return state.shuffle;
2037
- }
2038
- &nbsp;
2039
- /**
2040
- * Returns the repeat state
2041
- * @param options
2042
- * @category State
2043
- */
2044
- async getRepeat(options: NodePyATVGetStateOptions = {}): Promise&lt;NodePyATVRepeatState | null&gt; {
2045
- const state = await this.getState(options);
2046
- return state.repeat;
2047
- }
2048
- &nbsp;
2049
- /**
2050
- * Returns the currently used app
2051
- * @param options
2052
- * @category State
2053
- */
2054
- async getApp(options: NodePyATVGetStateOptions = {}): Promise&lt;string | null&gt; {
2055
- const state = await this.getState(options);
2056
- return state.app;
2057
- }
2058
- &nbsp;
2059
- /**
2060
- * Returns the id of the currently used app
2061
- * @param options
2062
- * @category State
2063
- */
2064
- async getAppId(options: NodePyATVGetStateOptions = {}): Promise&lt;string | null&gt; {
2065
- const state = await this.getState(options);
2066
- return state.appId;
2067
- }
2068
- &nbsp;
2069
- /**
2070
- * Returns the list of installed apps on the Apple TV. Probably requires `companionCredentials`,
2071
- * see https://pyatv.dev/documentation/atvremote/#apps for more details.
2072
- */
2073
- async listApps(): Promise&lt;NodePyATVApp[]&gt; {
2074
- const id = addRequestId();
2075
- const parameters = getParamters(this.options);
2076
- &nbsp;
2077
- const result = await request(id, NodePyATVExecutableType.atvremote, [...parameters, 'app_list'], this.options);
2078
- if(typeof result !== 'string' || !result.startsWith('App: ')) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
2079
- <span class="cstat-no" title="statement not covered" > throw new Error('Unexpected atvremote response: ' + result);</span>
2080
- <span class="cstat-no" title="statement not covered" > }</span>
2081
- &nbsp;
2082
- removeRequestId(id);
2083
- const regex = /(.+) \(([^\)]+)\)$/i;
2084
- const items = result.substring(5, ).split(', App: ').map(i =&gt; {
2085
- const m = i.match(regex);
2086
- if (m !== null) {
2087
- return {
2088
- id: m[2],
2089
- name: m[1],
2090
- launch: <span class="fstat-no" title="function not covered" >() =&gt; this.launchApp(m[2])</span>
2091
- };
2092
- }
2093
- }) as Array&lt;NodePyATVApp | undefined&gt;;
2094
- &nbsp;
2095
- return items.filter(Boolean) as NodePyATVApp[];
2096
- }
2097
- &nbsp;
2098
- private async _pressKey(key: NodePyATVInternalKeys | string, executableType: NodePyATVExecutableType) {
2099
- const id = addRequestId();
2100
- const parameters = getParamters(this.options);
2101
- &nbsp;
2102
- const result = await request(id, executableType, [...parameters, key], this.options);
2103
- if (
2104
- executableType === NodePyATVExecutableType.atvscript &amp;&amp;
2105
- (typeof result !== 'object' || result.result !== 'success')
2106
- ) {
2107
- throw new Error(`Unable to parse pyatv response: ${JSON.stringify(result, null, ' ')}`);
2108
- }
2109
- &nbsp;
2110
- removeRequestId(id);
2111
- }
2112
- &nbsp;
2113
- /**
2114
- * Send a key press to the Apple TV
2115
- *
2116
- * ```typescript
2117
- * await device.pressKey(NodePyATVKeys.home);
2118
- * ```
2119
- *
2120
- * &lt;br /&gt;
2121
- *
2122
- * ```javascript
2123
- * await device.pressKey('home');
2124
- * ```
2125
- *
2126
- * @param key
2127
- * @category Control
2128
- */
2129
- async pressKey(key: NodePyATVKeys): Promise&lt;void&gt; {
2130
- const internalKeyEntry = Object.entries(NodePyATVInternalKeys)
2131
- .find(([k]) =&gt; key === k);
2132
- &nbsp;
2133
- if(!internalKeyEntry) {
2134
- throw new Error(`Unsupported key value ${key}!`);
2135
- }
2136
- &nbsp;
2137
- const internalKey = internalKeyEntry[1];
2138
- const executableType = [NodePyATVKeys.turnOn, NodePyATVKeys.turnOff].includes(key) <span class="branch-0 cbranch-no" title="branch not covered" >?</span>
2139
- NodePyATVExecutableType.atvremote :
2140
- NodePyATVExecutableType.atvscript;
2141
- &nbsp;
2142
- await this._pressKey(internalKey, executableType);
2143
- }
2144
- &nbsp;
2145
- /**
2146
- * Send the "down" command
2147
- * @category Control
2148
- */
2149
- async down(): Promise&lt;void&gt; {
2150
- await this._pressKey(NodePyATVInternalKeys.down, NodePyATVExecutableType.atvscript);
2151
- }
2152
- &nbsp;
2153
- /**
2154
- * Send the "home" command
2155
- * @category Control
2156
- */
2157
- async home(): Promise&lt;void&gt; {
2158
- await this._pressKey(NodePyATVInternalKeys.home, NodePyATVExecutableType.atvscript);
2159
- }
2160
- &nbsp;
2161
- /**
2162
- * Send the "homeHold" command
2163
- * @category Control
2164
- */
2165
- async homeHold(): Promise&lt;void&gt; {
2166
- await this._pressKey(NodePyATVInternalKeys.homeHold, NodePyATVExecutableType.atvscript);
2167
- }
2168
- &nbsp;
2169
- /**
2170
- * Send the "left" command
2171
- * @category Control
2172
- */
2173
- async left(): Promise&lt;void&gt; {
2174
- await this._pressKey(NodePyATVInternalKeys.left, NodePyATVExecutableType.atvscript);
2175
- }
2176
- &nbsp;
2177
- /**
2178
- * Send the "menu" command
2179
- * @category Control
2180
- */
2181
- async menu(): Promise&lt;void&gt; {
2182
- await this._pressKey(NodePyATVInternalKeys.menu, NodePyATVExecutableType.atvscript);
2183
- }
2184
- &nbsp;
2185
- /**
2186
- * Send the "next" command
2187
- * @category Control
2188
- */
2189
- async next(): Promise&lt;void&gt; {
2190
- await this._pressKey(NodePyATVInternalKeys.next, NodePyATVExecutableType.atvscript);
2191
- }
2192
- &nbsp;
2193
- /**
2194
- * Send the "pause" command
2195
- * @category Control
2196
- */
2197
- async pause(): Promise&lt;void&gt; {
2198
- await this._pressKey(NodePyATVInternalKeys.pause, NodePyATVExecutableType.atvscript);
2199
- }
2200
- &nbsp;
2201
- /**
2202
- * Send the "play" command
2203
- * @category Control
2204
- */
2205
- async play(): Promise&lt;void&gt; {
2206
- await this._pressKey(NodePyATVInternalKeys.play, NodePyATVExecutableType.atvscript);
2207
- }
2208
- &nbsp;
2209
- /**
2210
- * Send the "playPause" command
2211
- * @category Control
2212
- */
2213
- async playPause(): Promise&lt;void&gt; {
2214
- await this._pressKey(NodePyATVInternalKeys.playPause, NodePyATVExecutableType.atvscript);
2215
- }
2216
- &nbsp;
2217
- /**
2218
- * Send the "previous" command
2219
- * @category Control
2220
- */
2221
- async previous(): Promise&lt;void&gt; {
2222
- await this._pressKey(NodePyATVInternalKeys.previous, NodePyATVExecutableType.atvscript);
2223
- }
2224
- &nbsp;
2225
- /**
2226
- * Send the "right" command
2227
- * @category Control
2228
- */
2229
- async right(): Promise&lt;void&gt; {
2230
- await this._pressKey(NodePyATVInternalKeys.right, NodePyATVExecutableType.atvscript);
2231
- }
2232
- &nbsp;
2233
- /**
2234
- * Send the "select" command
2235
- * @category Control
2236
- */
2237
- async select(): Promise&lt;void&gt; {
2238
- await this._pressKey(NodePyATVInternalKeys.select, NodePyATVExecutableType.atvscript);
2239
- }
2240
- &nbsp;
2241
- /**
2242
- * Send the "skipBackward" command
2243
- * @category Control
2244
- */
2245
- async skipBackward(): Promise&lt;void&gt; {
2246
- await this._pressKey(NodePyATVInternalKeys.skipBackward, NodePyATVExecutableType.atvscript);
2247
- }
2248
- &nbsp;
2249
- /**
2250
- * Send the "skipForward" command
2251
- * @category Control
2252
- */
2253
- async skipForward(): Promise&lt;void&gt; {
2254
- await this._pressKey(NodePyATVInternalKeys.skipForward, NodePyATVExecutableType.atvscript);
2255
- }
2256
- &nbsp;
2257
- /**
2258
- * Send the "stop" command
2259
- * @category Control
2260
- */
2261
- async stop(): Promise&lt;void&gt; {
2262
- await this._pressKey(NodePyATVInternalKeys.stop, NodePyATVExecutableType.atvscript);
2263
- }
2264
- &nbsp;
2265
- /**
2266
- * Send the "suspend" command
2267
- * @category Control
2268
- * @deprecated
2269
- */
2270
- async suspend(): Promise&lt;void&gt; {
2271
- await this._pressKey(NodePyATVInternalKeys.suspend, NodePyATVExecutableType.atvscript);
2272
- }
2273
- &nbsp;
2274
- /**
2275
- * Send the "topMenu" command
2276
- * @category Control
2277
- */
2278
- async topMenu(): Promise&lt;void&gt; {
2279
- await this._pressKey(NodePyATVInternalKeys.topMenu, NodePyATVExecutableType.atvscript);
2280
- }
2281
- &nbsp;
2282
- /**
2283
- * Send the "up" command
2284
- * @category Control
2285
- */
2286
- async up(): Promise&lt;void&gt; {
2287
- await this._pressKey(NodePyATVInternalKeys.up, NodePyATVExecutableType.atvscript);
2288
- }
2289
- &nbsp;
2290
- /**
2291
- * Send the "volumeDown" command
2292
- * @category Control
2293
- */
2294
- async volumeDown(): Promise&lt;void&gt; {
2295
- await this._pressKey(NodePyATVInternalKeys.volumeDown, NodePyATVExecutableType.atvscript);
2296
- }
2297
- &nbsp;
2298
- /**
2299
- * Send the "volumeUp" command
2300
- * @category Control
2301
- */
2302
- async volumeUp(): Promise&lt;void&gt; {
2303
- await this._pressKey(NodePyATVInternalKeys.volumeUp, NodePyATVExecutableType.atvscript);
2304
- }
2305
- &nbsp;
2306
- /**
2307
- * Send the "wakeup" command
2308
- * @category Control
2309
- * @deprecated
2310
- */
2311
- async wakeup(): Promise&lt;void&gt; {
2312
- await this._pressKey(NodePyATVInternalKeys.wakeup, NodePyATVExecutableType.atvscript);
2313
- }
2314
- &nbsp;
2315
- /**
2316
- * Send the "turn_off" command
2317
- * @category Control
2318
- */
2319
- async turnOff(): Promise&lt;void&gt; {
2320
- await this._pressKey(NodePyATVInternalKeys.turnOff, NodePyATVExecutableType.atvremote);
2321
- }
2322
- &nbsp;
2323
- /**
2324
- * Send the "turn_on" command
2325
- * @category Control
2326
- */
2327
- async turnOn(): Promise&lt;void&gt; {
2328
- await this._pressKey(NodePyATVInternalKeys.turnOn, NodePyATVExecutableType.atvremote);
2329
- }
2330
- &nbsp;
2331
- /**
2332
- * Launch an application. Probably requires `companionCredentials`, see
2333
- * https://pyatv.dev/documentation/atvremote/#apps for more details.
2334
- * @param id App identifier, e.g. `com.netflix.Netflix`
2335
- */
2336
- async launchApp(id: string): Promise&lt;void&gt; {
2337
- await this._pressKey('launch_app=' + id, NodePyATVExecutableType.atvremote);
2338
- }
2339
- &nbsp;
2340
- /**
2341
- * Add an event listener. Will start the event subscription with the
2342
- * Apple TV as long as there are listeners for any event registered.
2343
- * @param event
2344
- * @param listener
2345
- * @category Event
2346
- */
2347
- addListener(event: string | symbol, listener: (event: NodePyATVDeviceEvent) =&gt; void): this {
2348
- this.events.addListener(event, listener);
2349
- return this;
2350
- }
2351
- &nbsp;
2352
- /**
2353
- * Emit an event.
2354
- * @param event
2355
- * @param payload
2356
- * @category Event
2357
- */
2358
- emit(event: string | symbol, payload: NodePyATVDeviceEvent): boolean {
2359
- return this.events.emit(event, payload);
2360
- }
2361
- &nbsp;
2362
- /**
2363
- * Get all event names which are currently known.
2364
- * @category Event
2365
- */
2366
- eventNames(): Array&lt;string | symbol&gt; {
2367
- return this.events.eventNames();
2368
- }
2369
- &nbsp;
2370
- /**
2371
- * Get max number of listeners allowed
2372
- * @category Event
2373
- */
2374
- getMaxListeners(): number {
2375
- return this.events.getMaxListeners();
2376
- }
2377
- &nbsp;
2378
- /**
2379
- * Get number of listeners for event
2380
- * @param event
2381
- * @category Event
2382
- */
2383
- listenerCount(event: string | symbol): number {
2384
- return this.events.listenerCount(event);
2385
- }
2386
- &nbsp;
2387
- /**
2388
- * Get listeners for event. Will also return
2389
- * node-pyatv wrappers (e.g. once)
2390
- *
2391
- * @param event
2392
- * @category Event
2393
- */
2394
- // eslint-disable-next-line @typescript-eslint/ban-types
2395
- listeners(event: string | symbol): Function[] {
2396
- return this.events.listeners(event);
2397
- }
2398
- &nbsp;
2399
- /**
2400
- * Remove an event listener. Will stop the event subscription with the
2401
- * Apple TV if this was the last event listener.
2402
- * @param event
2403
- * @param listener
2404
- * @category Event
2405
- */
2406
- off(event: string | symbol, listener: (event: NodePyATVDeviceEvent | Error) =&gt; void): this {
2407
- this.events.off(event, listener);
2408
- return this;
2409
- }
2410
- &nbsp;
2411
- /**
2412
- * Add an event listener. Will start the event subscription with the
2413
- * Apple TV as long as there are listeners for any event registered.
2414
- * @param event
2415
- * @param listener
2416
- * @category Event
2417
- */
2418
- on(event: string | symbol, listener: (event: NodePyATVDeviceEvent | Error) =&gt; void): this {
2419
- this.events.on(event, listener);
2420
- return this;
2421
- }
2422
- &nbsp;
2423
- /**
2424
- * Add an event listener. Will start the event subscription with the
2425
- * Apple TV as long as there are listeners for any event registered.
2426
- * Removes the listener automatically after the first occurrence.
2427
- * @param event
2428
- * @param listener
2429
- * @category Event
2430
- */
2431
- once(event: string | symbol, listener: (event: NodePyATVDeviceEvent | Error) =&gt; void): this {
2432
- this.events.once(event, listener);
2433
- return this;
2434
- }
2435
- &nbsp;
2436
- /**
2437
- * @param event
2438
- * @param listener
2439
- * @category Event
2440
- */
2441
- prependListener(event: string | symbol, listener: (event: NodePyATVDeviceEvent | Error) =&gt; void): this {
2442
- this.events.prependListener(event, listener);
2443
- return this;
2444
- }
2445
- &nbsp;
2446
- /**
2447
- * @param event
2448
- * @param listener
2449
- * @category Event
2450
- */
2451
- prependOnceListener(event: string | symbol, listener: (event: NodePyATVDeviceEvent | Error) =&gt; void): this {
2452
- this.events.prependOnceListener(event, listener);
2453
- return this;
2454
- }
2455
- &nbsp;
2456
- /**
2457
- * @param event
2458
- * @category Event
2459
- */
2460
- // eslint-disable-next-line @typescript-eslint/ban-types
2461
- rawListeners(event: string | symbol): Function[] {
2462
- return this.events.rawListeners(event);
2463
- }
2464
- &nbsp;
2465
- /**
2466
- * Removes all listeners, either for the given event or
2467
- * for every event. Will stop the event subscription with
2468
- * the Apple TV if this was the last event listener.
2469
- *
2470
- * @param event
2471
- * @category Event
2472
- */
2473
- removeAllListeners(event?: string | symbol): this {
2474
- this.events.removeAllListeners(event);
2475
- return this;
2476
- }
2477
- &nbsp;
2478
- /**
2479
- * Remove an event listener. Will stop the event subscription with the
2480
- * Apple TV if this was the last event listener.
2481
- * @param event
2482
- * @param listener
2483
- * @category Event
2484
- */
2485
- removeListener(event: string | symbol, listener: (event: NodePyATVDeviceEvent) =&gt; void): this {
2486
- this.events.removeListener(event, listener);
2487
- return this;
2488
- }
2489
- &nbsp;
2490
- /**
2491
- * @param n
2492
- * @category Event
2493
- */
2494
- <span class="fstat-no" title="function not covered" > setMaxListeners(n: number): this {</span>
2495
- <span class="cstat-no" title="statement not covered" > this.events.setMaxListeners(n);</span>
2496
- <span class="cstat-no" title="statement not covered" > return this;</span>
2497
- <span class="cstat-no" title="statement not covered" > }</span>
2498
- }
2499
- &nbsp;</pre></td></tr></table></pre>
2500
-
2501
- <div class='push'></div><!-- for sticky footer -->
2502
- </div><!-- /wrapper -->
2503
- <div class='footer quiet pad2 space-top1 center small'>
2504
- Code coverage generated by
2505
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2506
- at 2023-03-21T19:06:29.919Z
2507
- </div>
2508
- <script src="prettify.js"></script>
2509
- <script>
2510
- window.onload = function () {
2511
- prettyPrint();
2512
- };
2513
- </script>
2514
- <script src="sorter.js"></script>
2515
- <script src="block-navigation.js"></script>
2516
- </body>
2517
- </html>
2518
-