@sebbo2002/node-pyatv 4.3.4-develop.2 → 5.0.0-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/.mocharc.yml +3 -3
  2. package/CHANGELOG.md +16 -0
  3. package/dist/bin/check.js +2 -6
  4. package/dist/bin/check.js.map +1 -1
  5. package/dist/examples/push.js +2 -6
  6. package/dist/examples/push.js.map +1 -1
  7. package/dist/lib/device-event.d.ts +2 -2
  8. package/dist/lib/device-event.js +1 -3
  9. package/dist/lib/device-event.js.map +1 -1
  10. package/dist/lib/device-events.d.ts +2 -2
  11. package/dist/lib/device-events.js +38 -40
  12. package/dist/lib/device-events.js.map +1 -1
  13. package/dist/lib/device.d.ts +2 -2
  14. package/dist/lib/device.js +44 -46
  15. package/dist/lib/device.js.map +1 -1
  16. package/dist/lib/fake-spawn.d.ts +2 -0
  17. package/dist/lib/fake-spawn.js +7 -14
  18. package/dist/lib/fake-spawn.js.map +1 -1
  19. package/dist/lib/index.d.ts +5 -5
  20. package/dist/lib/index.js +5 -22
  21. package/dist/lib/index.js.map +1 -1
  22. package/dist/lib/instance.d.ts +2 -2
  23. package/dist/lib/instance.js +27 -27
  24. package/dist/lib/instance.js.map +1 -1
  25. package/dist/lib/tools.d.ts +1 -1
  26. package/dist/lib/tools.js +24 -34
  27. package/dist/lib/tools.js.map +1 -1
  28. package/dist/lib/types.js +20 -23
  29. package/dist/lib/types.js.map +1 -1
  30. package/docs/coverage/cobertura-coverage.xml +1 -1528
  31. package/docs/coverage/index.html +20 -125
  32. package/docs/coverage/index.ts.html +27 -27
  33. package/docs/reference/assets/highlight.css +7 -21
  34. package/docs/reference/assets/main.js +4 -2
  35. package/docs/reference/assets/search.js +1 -1
  36. package/docs/reference/assets/style.css +424 -538
  37. package/docs/reference/classes/NodePyATVDevice.html +1059 -125
  38. package/docs/reference/classes/NodePyATVDeviceEvent.html +111 -10
  39. package/docs/reference/classes/default.html +211 -34
  40. package/docs/reference/enums/NodePyATVDeviceState.html +93 -1
  41. package/docs/reference/enums/NodePyATVKeys.html +212 -1
  42. package/docs/reference/enums/NodePyATVListenerState.html +79 -1
  43. package/docs/reference/enums/NodePyATVMediaType.html +79 -1
  44. package/docs/reference/enums/NodePyATVPowerState.html +65 -1
  45. package/docs/reference/enums/NodePyATVProtocol.html +79 -1
  46. package/docs/reference/enums/NodePyATVRepeatState.html +72 -1
  47. package/docs/reference/enums/NodePyATVShuffleState.html +72 -1
  48. package/docs/reference/index.html +58 -53
  49. package/docs/reference/interfaces/NodePyATVDeviceOptions.html +194 -1
  50. package/docs/reference/interfaces/NodePyATVFindAndInstanceOptions.html +190 -1
  51. package/docs/reference/interfaces/NodePyATVFindOptions.html +120 -1
  52. package/docs/reference/interfaces/NodePyATVGetStateOptions.html +62 -1
  53. package/docs/reference/interfaces/NodePyATVInstanceOptions.html +110 -1
  54. package/docs/reference/interfaces/NodePyATVState.html +160 -1
  55. package/docs/reference/interfaces/NodePyATVVersionResponse.html +69 -1
  56. package/docs/reference/modules.html +89 -1
  57. package/docs/reference/types/NodePyATVEventValueType.html +61 -0
  58. package/docs/tests/index.html +1 -1
  59. package/docs/tests/mochawesome.json +728 -766
  60. package/package.json +17 -14
  61. package/release.config.cjs +56 -0
  62. package/src/bin/check.ts +1 -1
  63. package/src/examples/push.ts +1 -1
  64. package/src/lib/device-event.ts +2 -2
  65. package/src/lib/device-events.ts +4 -4
  66. package/src/lib/device.ts +3 -3
  67. package/src/lib/index.ts +5 -5
  68. package/src/lib/instance.ts +23 -20
  69. package/src/lib/tools.ts +1 -1
  70. package/test/device-event.ts +2 -2
  71. package/test/device-events.ts +2 -2
  72. package/test/device.ts +4 -4
  73. package/test/instance.ts +44 -37
  74. package/test/tools.ts +2 -2
  75. package/tsconfig.json +1 -1
  76. package/docs/coverage/device-event.ts.html +0 -251
  77. package/docs/coverage/device-events.ts.html +0 -956
  78. package/docs/coverage/device.ts.html +0 -2210
  79. package/docs/coverage/fake-spawn.ts.html +0 -443
  80. package/docs/coverage/instance.ts.html +0 -686
  81. package/docs/coverage/tools.ts.html +0 -1217
  82. package/docs/coverage/types.ts.html +0 -674
  83. package/docs/reference/assets/icons.css +0 -1043
  84. package/docs/reference/assets/icons.png +0 -0
  85. package/docs/reference/assets/icons@2x.png +0 -0
@@ -1,1217 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for tools.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> tools.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">99.44% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>179/180</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">90.09% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>100/111</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>24/24</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">99.4% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>166/167</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
- </div>
58
- <div class='status-line high'></div>
59
- <pre><table class="coverage">
60
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
- <a name='L2'></a><a href='#L2'>2</a>
62
- <a name='L3'></a><a href='#L3'>3</a>
63
- <a name='L4'></a><a href='#L4'>4</a>
64
- <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a>
66
- <a name='L7'></a><a href='#L7'>7</a>
67
- <a name='L8'></a><a href='#L8'>8</a>
68
- <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a>
72
- <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a>
77
- <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a>
104
- <a name='L45'></a><a href='#L45'>45</a>
105
- <a name='L46'></a><a href='#L46'>46</a>
106
- <a name='L47'></a><a href='#L47'>47</a>
107
- <a name='L48'></a><a href='#L48'>48</a>
108
- <a name='L49'></a><a href='#L49'>49</a>
109
- <a name='L50'></a><a href='#L50'>50</a>
110
- <a name='L51'></a><a href='#L51'>51</a>
111
- <a name='L52'></a><a href='#L52'>52</a>
112
- <a name='L53'></a><a href='#L53'>53</a>
113
- <a name='L54'></a><a href='#L54'>54</a>
114
- <a name='L55'></a><a href='#L55'>55</a>
115
- <a name='L56'></a><a href='#L56'>56</a>
116
- <a name='L57'></a><a href='#L57'>57</a>
117
- <a name='L58'></a><a href='#L58'>58</a>
118
- <a name='L59'></a><a href='#L59'>59</a>
119
- <a name='L60'></a><a href='#L60'>60</a>
120
- <a name='L61'></a><a href='#L61'>61</a>
121
- <a name='L62'></a><a href='#L62'>62</a>
122
- <a name='L63'></a><a href='#L63'>63</a>
123
- <a name='L64'></a><a href='#L64'>64</a>
124
- <a name='L65'></a><a href='#L65'>65</a>
125
- <a name='L66'></a><a href='#L66'>66</a>
126
- <a name='L67'></a><a href='#L67'>67</a>
127
- <a name='L68'></a><a href='#L68'>68</a>
128
- <a name='L69'></a><a href='#L69'>69</a>
129
- <a name='L70'></a><a href='#L70'>70</a>
130
- <a name='L71'></a><a href='#L71'>71</a>
131
- <a name='L72'></a><a href='#L72'>72</a>
132
- <a name='L73'></a><a href='#L73'>73</a>
133
- <a name='L74'></a><a href='#L74'>74</a>
134
- <a name='L75'></a><a href='#L75'>75</a>
135
- <a name='L76'></a><a href='#L76'>76</a>
136
- <a name='L77'></a><a href='#L77'>77</a>
137
- <a name='L78'></a><a href='#L78'>78</a>
138
- <a name='L79'></a><a href='#L79'>79</a>
139
- <a name='L80'></a><a href='#L80'>80</a>
140
- <a name='L81'></a><a href='#L81'>81</a>
141
- <a name='L82'></a><a href='#L82'>82</a>
142
- <a name='L83'></a><a href='#L83'>83</a>
143
- <a name='L84'></a><a href='#L84'>84</a>
144
- <a name='L85'></a><a href='#L85'>85</a>
145
- <a name='L86'></a><a href='#L86'>86</a>
146
- <a name='L87'></a><a href='#L87'>87</a>
147
- <a name='L88'></a><a href='#L88'>88</a>
148
- <a name='L89'></a><a href='#L89'>89</a>
149
- <a name='L90'></a><a href='#L90'>90</a>
150
- <a name='L91'></a><a href='#L91'>91</a>
151
- <a name='L92'></a><a href='#L92'>92</a>
152
- <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a>
154
- <a name='L95'></a><a href='#L95'>95</a>
155
- <a name='L96'></a><a href='#L96'>96</a>
156
- <a name='L97'></a><a href='#L97'>97</a>
157
- <a name='L98'></a><a href='#L98'>98</a>
158
- <a name='L99'></a><a href='#L99'>99</a>
159
- <a name='L100'></a><a href='#L100'>100</a>
160
- <a name='L101'></a><a href='#L101'>101</a>
161
- <a name='L102'></a><a href='#L102'>102</a>
162
- <a name='L103'></a><a href='#L103'>103</a>
163
- <a name='L104'></a><a href='#L104'>104</a>
164
- <a name='L105'></a><a href='#L105'>105</a>
165
- <a name='L106'></a><a href='#L106'>106</a>
166
- <a name='L107'></a><a href='#L107'>107</a>
167
- <a name='L108'></a><a href='#L108'>108</a>
168
- <a name='L109'></a><a href='#L109'>109</a>
169
- <a name='L110'></a><a href='#L110'>110</a>
170
- <a name='L111'></a><a href='#L111'>111</a>
171
- <a name='L112'></a><a href='#L112'>112</a>
172
- <a name='L113'></a><a href='#L113'>113</a>
173
- <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a>
175
- <a name='L116'></a><a href='#L116'>116</a>
176
- <a name='L117'></a><a href='#L117'>117</a>
177
- <a name='L118'></a><a href='#L118'>118</a>
178
- <a name='L119'></a><a href='#L119'>119</a>
179
- <a name='L120'></a><a href='#L120'>120</a>
180
- <a name='L121'></a><a href='#L121'>121</a>
181
- <a name='L122'></a><a href='#L122'>122</a>
182
- <a name='L123'></a><a href='#L123'>123</a>
183
- <a name='L124'></a><a href='#L124'>124</a>
184
- <a name='L125'></a><a href='#L125'>125</a>
185
- <a name='L126'></a><a href='#L126'>126</a>
186
- <a name='L127'></a><a href='#L127'>127</a>
187
- <a name='L128'></a><a href='#L128'>128</a>
188
- <a name='L129'></a><a href='#L129'>129</a>
189
- <a name='L130'></a><a href='#L130'>130</a>
190
- <a name='L131'></a><a href='#L131'>131</a>
191
- <a name='L132'></a><a href='#L132'>132</a>
192
- <a name='L133'></a><a href='#L133'>133</a>
193
- <a name='L134'></a><a href='#L134'>134</a>
194
- <a name='L135'></a><a href='#L135'>135</a>
195
- <a name='L136'></a><a href='#L136'>136</a>
196
- <a name='L137'></a><a href='#L137'>137</a>
197
- <a name='L138'></a><a href='#L138'>138</a>
198
- <a name='L139'></a><a href='#L139'>139</a>
199
- <a name='L140'></a><a href='#L140'>140</a>
200
- <a name='L141'></a><a href='#L141'>141</a>
201
- <a name='L142'></a><a href='#L142'>142</a>
202
- <a name='L143'></a><a href='#L143'>143</a>
203
- <a name='L144'></a><a href='#L144'>144</a>
204
- <a name='L145'></a><a href='#L145'>145</a>
205
- <a name='L146'></a><a href='#L146'>146</a>
206
- <a name='L147'></a><a href='#L147'>147</a>
207
- <a name='L148'></a><a href='#L148'>148</a>
208
- <a name='L149'></a><a href='#L149'>149</a>
209
- <a name='L150'></a><a href='#L150'>150</a>
210
- <a name='L151'></a><a href='#L151'>151</a>
211
- <a name='L152'></a><a href='#L152'>152</a>
212
- <a name='L153'></a><a href='#L153'>153</a>
213
- <a name='L154'></a><a href='#L154'>154</a>
214
- <a name='L155'></a><a href='#L155'>155</a>
215
- <a name='L156'></a><a href='#L156'>156</a>
216
- <a name='L157'></a><a href='#L157'>157</a>
217
- <a name='L158'></a><a href='#L158'>158</a>
218
- <a name='L159'></a><a href='#L159'>159</a>
219
- <a name='L160'></a><a href='#L160'>160</a>
220
- <a name='L161'></a><a href='#L161'>161</a>
221
- <a name='L162'></a><a href='#L162'>162</a>
222
- <a name='L163'></a><a href='#L163'>163</a>
223
- <a name='L164'></a><a href='#L164'>164</a>
224
- <a name='L165'></a><a href='#L165'>165</a>
225
- <a name='L166'></a><a href='#L166'>166</a>
226
- <a name='L167'></a><a href='#L167'>167</a>
227
- <a name='L168'></a><a href='#L168'>168</a>
228
- <a name='L169'></a><a href='#L169'>169</a>
229
- <a name='L170'></a><a href='#L170'>170</a>
230
- <a name='L171'></a><a href='#L171'>171</a>
231
- <a name='L172'></a><a href='#L172'>172</a>
232
- <a name='L173'></a><a href='#L173'>173</a>
233
- <a name='L174'></a><a href='#L174'>174</a>
234
- <a name='L175'></a><a href='#L175'>175</a>
235
- <a name='L176'></a><a href='#L176'>176</a>
236
- <a name='L177'></a><a href='#L177'>177</a>
237
- <a name='L178'></a><a href='#L178'>178</a>
238
- <a name='L179'></a><a href='#L179'>179</a>
239
- <a name='L180'></a><a href='#L180'>180</a>
240
- <a name='L181'></a><a href='#L181'>181</a>
241
- <a name='L182'></a><a href='#L182'>182</a>
242
- <a name='L183'></a><a href='#L183'>183</a>
243
- <a name='L184'></a><a href='#L184'>184</a>
244
- <a name='L185'></a><a href='#L185'>185</a>
245
- <a name='L186'></a><a href='#L186'>186</a>
246
- <a name='L187'></a><a href='#L187'>187</a>
247
- <a name='L188'></a><a href='#L188'>188</a>
248
- <a name='L189'></a><a href='#L189'>189</a>
249
- <a name='L190'></a><a href='#L190'>190</a>
250
- <a name='L191'></a><a href='#L191'>191</a>
251
- <a name='L192'></a><a href='#L192'>192</a>
252
- <a name='L193'></a><a href='#L193'>193</a>
253
- <a name='L194'></a><a href='#L194'>194</a>
254
- <a name='L195'></a><a href='#L195'>195</a>
255
- <a name='L196'></a><a href='#L196'>196</a>
256
- <a name='L197'></a><a href='#L197'>197</a>
257
- <a name='L198'></a><a href='#L198'>198</a>
258
- <a name='L199'></a><a href='#L199'>199</a>
259
- <a name='L200'></a><a href='#L200'>200</a>
260
- <a name='L201'></a><a href='#L201'>201</a>
261
- <a name='L202'></a><a href='#L202'>202</a>
262
- <a name='L203'></a><a href='#L203'>203</a>
263
- <a name='L204'></a><a href='#L204'>204</a>
264
- <a name='L205'></a><a href='#L205'>205</a>
265
- <a name='L206'></a><a href='#L206'>206</a>
266
- <a name='L207'></a><a href='#L207'>207</a>
267
- <a name='L208'></a><a href='#L208'>208</a>
268
- <a name='L209'></a><a href='#L209'>209</a>
269
- <a name='L210'></a><a href='#L210'>210</a>
270
- <a name='L211'></a><a href='#L211'>211</a>
271
- <a name='L212'></a><a href='#L212'>212</a>
272
- <a name='L213'></a><a href='#L213'>213</a>
273
- <a name='L214'></a><a href='#L214'>214</a>
274
- <a name='L215'></a><a href='#L215'>215</a>
275
- <a name='L216'></a><a href='#L216'>216</a>
276
- <a name='L217'></a><a href='#L217'>217</a>
277
- <a name='L218'></a><a href='#L218'>218</a>
278
- <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a>
280
- <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a>
282
- <a name='L223'></a><a href='#L223'>223</a>
283
- <a name='L224'></a><a href='#L224'>224</a>
284
- <a name='L225'></a><a href='#L225'>225</a>
285
- <a name='L226'></a><a href='#L226'>226</a>
286
- <a name='L227'></a><a href='#L227'>227</a>
287
- <a name='L228'></a><a href='#L228'>228</a>
288
- <a name='L229'></a><a href='#L229'>229</a>
289
- <a name='L230'></a><a href='#L230'>230</a>
290
- <a name='L231'></a><a href='#L231'>231</a>
291
- <a name='L232'></a><a href='#L232'>232</a>
292
- <a name='L233'></a><a href='#L233'>233</a>
293
- <a name='L234'></a><a href='#L234'>234</a>
294
- <a name='L235'></a><a href='#L235'>235</a>
295
- <a name='L236'></a><a href='#L236'>236</a>
296
- <a name='L237'></a><a href='#L237'>237</a>
297
- <a name='L238'></a><a href='#L238'>238</a>
298
- <a name='L239'></a><a href='#L239'>239</a>
299
- <a name='L240'></a><a href='#L240'>240</a>
300
- <a name='L241'></a><a href='#L241'>241</a>
301
- <a name='L242'></a><a href='#L242'>242</a>
302
- <a name='L243'></a><a href='#L243'>243</a>
303
- <a name='L244'></a><a href='#L244'>244</a>
304
- <a name='L245'></a><a href='#L245'>245</a>
305
- <a name='L246'></a><a href='#L246'>246</a>
306
- <a name='L247'></a><a href='#L247'>247</a>
307
- <a name='L248'></a><a href='#L248'>248</a>
308
- <a name='L249'></a><a href='#L249'>249</a>
309
- <a name='L250'></a><a href='#L250'>250</a>
310
- <a name='L251'></a><a href='#L251'>251</a>
311
- <a name='L252'></a><a href='#L252'>252</a>
312
- <a name='L253'></a><a href='#L253'>253</a>
313
- <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a>
315
- <a name='L256'></a><a href='#L256'>256</a>
316
- <a name='L257'></a><a href='#L257'>257</a>
317
- <a name='L258'></a><a href='#L258'>258</a>
318
- <a name='L259'></a><a href='#L259'>259</a>
319
- <a name='L260'></a><a href='#L260'>260</a>
320
- <a name='L261'></a><a href='#L261'>261</a>
321
- <a name='L262'></a><a href='#L262'>262</a>
322
- <a name='L263'></a><a href='#L263'>263</a>
323
- <a name='L264'></a><a href='#L264'>264</a>
324
- <a name='L265'></a><a href='#L265'>265</a>
325
- <a name='L266'></a><a href='#L266'>266</a>
326
- <a name='L267'></a><a href='#L267'>267</a>
327
- <a name='L268'></a><a href='#L268'>268</a>
328
- <a name='L269'></a><a href='#L269'>269</a>
329
- <a name='L270'></a><a href='#L270'>270</a>
330
- <a name='L271'></a><a href='#L271'>271</a>
331
- <a name='L272'></a><a href='#L272'>272</a>
332
- <a name='L273'></a><a href='#L273'>273</a>
333
- <a name='L274'></a><a href='#L274'>274</a>
334
- <a name='L275'></a><a href='#L275'>275</a>
335
- <a name='L276'></a><a href='#L276'>276</a>
336
- <a name='L277'></a><a href='#L277'>277</a>
337
- <a name='L278'></a><a href='#L278'>278</a>
338
- <a name='L279'></a><a href='#L279'>279</a>
339
- <a name='L280'></a><a href='#L280'>280</a>
340
- <a name='L281'></a><a href='#L281'>281</a>
341
- <a name='L282'></a><a href='#L282'>282</a>
342
- <a name='L283'></a><a href='#L283'>283</a>
343
- <a name='L284'></a><a href='#L284'>284</a>
344
- <a name='L285'></a><a href='#L285'>285</a>
345
- <a name='L286'></a><a href='#L286'>286</a>
346
- <a name='L287'></a><a href='#L287'>287</a>
347
- <a name='L288'></a><a href='#L288'>288</a>
348
- <a name='L289'></a><a href='#L289'>289</a>
349
- <a name='L290'></a><a href='#L290'>290</a>
350
- <a name='L291'></a><a href='#L291'>291</a>
351
- <a name='L292'></a><a href='#L292'>292</a>
352
- <a name='L293'></a><a href='#L293'>293</a>
353
- <a name='L294'></a><a href='#L294'>294</a>
354
- <a name='L295'></a><a href='#L295'>295</a>
355
- <a name='L296'></a><a href='#L296'>296</a>
356
- <a name='L297'></a><a href='#L297'>297</a>
357
- <a name='L298'></a><a href='#L298'>298</a>
358
- <a name='L299'></a><a href='#L299'>299</a>
359
- <a name='L300'></a><a href='#L300'>300</a>
360
- <a name='L301'></a><a href='#L301'>301</a>
361
- <a name='L302'></a><a href='#L302'>302</a>
362
- <a name='L303'></a><a href='#L303'>303</a>
363
- <a name='L304'></a><a href='#L304'>304</a>
364
- <a name='L305'></a><a href='#L305'>305</a>
365
- <a name='L306'></a><a href='#L306'>306</a>
366
- <a name='L307'></a><a href='#L307'>307</a>
367
- <a name='L308'></a><a href='#L308'>308</a>
368
- <a name='L309'></a><a href='#L309'>309</a>
369
- <a name='L310'></a><a href='#L310'>310</a>
370
- <a name='L311'></a><a href='#L311'>311</a>
371
- <a name='L312'></a><a href='#L312'>312</a>
372
- <a name='L313'></a><a href='#L313'>313</a>
373
- <a name='L314'></a><a href='#L314'>314</a>
374
- <a name='L315'></a><a href='#L315'>315</a>
375
- <a name='L316'></a><a href='#L316'>316</a>
376
- <a name='L317'></a><a href='#L317'>317</a>
377
- <a name='L318'></a><a href='#L318'>318</a>
378
- <a name='L319'></a><a href='#L319'>319</a>
379
- <a name='L320'></a><a href='#L320'>320</a>
380
- <a name='L321'></a><a href='#L321'>321</a>
381
- <a name='L322'></a><a href='#L322'>322</a>
382
- <a name='L323'></a><a href='#L323'>323</a>
383
- <a name='L324'></a><a href='#L324'>324</a>
384
- <a name='L325'></a><a href='#L325'>325</a>
385
- <a name='L326'></a><a href='#L326'>326</a>
386
- <a name='L327'></a><a href='#L327'>327</a>
387
- <a name='L328'></a><a href='#L328'>328</a>
388
- <a name='L329'></a><a href='#L329'>329</a>
389
- <a name='L330'></a><a href='#L330'>330</a>
390
- <a name='L331'></a><a href='#L331'>331</a>
391
- <a name='L332'></a><a href='#L332'>332</a>
392
- <a name='L333'></a><a href='#L333'>333</a>
393
- <a name='L334'></a><a href='#L334'>334</a>
394
- <a name='L335'></a><a href='#L335'>335</a>
395
- <a name='L336'></a><a href='#L336'>336</a>
396
- <a name='L337'></a><a href='#L337'>337</a>
397
- <a name='L338'></a><a href='#L338'>338</a>
398
- <a name='L339'></a><a href='#L339'>339</a>
399
- <a name='L340'></a><a href='#L340'>340</a>
400
- <a name='L341'></a><a href='#L341'>341</a>
401
- <a name='L342'></a><a href='#L342'>342</a>
402
- <a name='L343'></a><a href='#L343'>343</a>
403
- <a name='L344'></a><a href='#L344'>344</a>
404
- <a name='L345'></a><a href='#L345'>345</a>
405
- <a name='L346'></a><a href='#L346'>346</a>
406
- <a name='L347'></a><a href='#L347'>347</a>
407
- <a name='L348'></a><a href='#L348'>348</a>
408
- <a name='L349'></a><a href='#L349'>349</a>
409
- <a name='L350'></a><a href='#L350'>350</a>
410
- <a name='L351'></a><a href='#L351'>351</a>
411
- <a name='L352'></a><a href='#L352'>352</a>
412
- <a name='L353'></a><a href='#L353'>353</a>
413
- <a name='L354'></a><a href='#L354'>354</a>
414
- <a name='L355'></a><a href='#L355'>355</a>
415
- <a name='L356'></a><a href='#L356'>356</a>
416
- <a name='L357'></a><a href='#L357'>357</a>
417
- <a name='L358'></a><a href='#L358'>358</a>
418
- <a name='L359'></a><a href='#L359'>359</a>
419
- <a name='L360'></a><a href='#L360'>360</a>
420
- <a name='L361'></a><a href='#L361'>361</a>
421
- <a name='L362'></a><a href='#L362'>362</a>
422
- <a name='L363'></a><a href='#L363'>363</a>
423
- <a name='L364'></a><a href='#L364'>364</a>
424
- <a name='L365'></a><a href='#L365'>365</a>
425
- <a name='L366'></a><a href='#L366'>366</a>
426
- <a name='L367'></a><a href='#L367'>367</a>
427
- <a name='L368'></a><a href='#L368'>368</a>
428
- <a name='L369'></a><a href='#L369'>369</a>
429
- <a name='L370'></a><a href='#L370'>370</a>
430
- <a name='L371'></a><a href='#L371'>371</a>
431
- <a name='L372'></a><a href='#L372'>372</a>
432
- <a name='L373'></a><a href='#L373'>373</a>
433
- <a name='L374'></a><a href='#L374'>374</a>
434
- <a name='L375'></a><a href='#L375'>375</a>
435
- <a name='L376'></a><a href='#L376'>376</a>
436
- <a name='L377'></a><a href='#L377'>377</a>
437
- <a name='L378'></a><a href='#L378'>378</a>
438
- <a name='L379'></a><a href='#L379'>379</a>
439
- <a name='L380'></a><a href='#L380'>380</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-yes">1x</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">1x</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-yes">1x</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-yes">1x</span>
457
- <span class="cline-any cline-yes">109x</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-yes">109x</span>
460
- <span class="cline-any cline-yes">117x</span>
461
- <span class="cline-any cline-yes">117x</span>
462
- <span class="cline-any cline-yes">109x</span>
463
- <span class="cline-any cline-yes">109x</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-yes">109x</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-yes">1x</span>
471
- <span class="cline-any cline-yes">116x</span>
472
- <span class="cline-any cline-yes">96x</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-yes">1x</span>
477
- <span class="cline-any cline-yes">2142x</span>
478
- <span class="cline-any cline-yes">9x</span>
479
- <span class="cline-any cline-yes">9x</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">9x</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-yes">9x</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">1x</span>
498
- <span class="cline-any cline-yes">96x</span>
499
- <span class="cline-any cline-yes">4x</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-yes">92x</span>
502
- <span class="cline-any cline-yes">3x</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-yes">89x</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-yes">1x</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-yes">92x</span>
516
- <span class="cline-any cline-yes">92x</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-yes">92x</span>
519
- <span class="cline-any cline-yes">92x</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-yes">92x</span>
525
- <span class="cline-any cline-yes">92x</span>
526
- <span class="cline-any cline-yes">92x</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-yes">92x</span>
530
- <span class="cline-any cline-yes">92x</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-yes">92x</span>
533
- <span class="cline-any cline-yes">92x</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-yes">92x</span>
536
- <span class="cline-any cline-yes">92x</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-yes">92x</span>
540
- <span class="cline-any cline-yes">92x</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-yes">92x</span>
544
- <span class="cline-any cline-yes">92x</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-yes">92x</span>
547
- <span class="cline-any cline-yes">92x</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-yes">92x</span>
551
- <span class="cline-any cline-yes">92x</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-yes">92x</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-yes">1x</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-yes">73x</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-yes">73x</span>
569
- <span class="cline-any cline-yes">73x</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-yes">73x</span>
573
- <span class="cline-any cline-yes">73x</span>
574
- <span class="cline-any cline-yes">73x</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-yes">73x</span>
578
- <span class="cline-any cline-yes">73x</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-yes">73x</span>
581
- <span class="cline-any cline-yes">73x</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-yes">73x</span>
584
- <span class="cline-any cline-yes">73x</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-yes">73x</span>
588
- <span class="cline-any cline-yes">73x</span>
589
- <span class="cline-any cline-yes">73x</span>
590
- <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-neutral">&nbsp;</span>
592
- <span class="cline-any cline-yes">73x</span>
593
- <span class="cline-any cline-yes">73x</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-yes">73x</span>
596
- <span class="cline-any cline-yes">73x</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-yes">73x</span>
600
- <span class="cline-any cline-yes">73x</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-yes">68x</span>
604
- <span class="cline-any cline-yes">2x</span>
605
- <span class="cline-any cline-yes">2x</span>
606
- <span class="cline-any cline-yes">2x</span>
607
- <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-yes">66x</span>
609
- <span class="cline-any cline-yes">51x</span>
610
- <span class="cline-any cline-yes">51x</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-yes">1x</span>
614
- <span class="cline-any cline-yes">1x</span>
615
- <span class="cline-any cline-yes">1x</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-yes">15x</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-yes">1x</span>
623
- <span class="cline-any cline-yes">78x</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-yes">78x</span>
626
- <span class="cline-any cline-yes">1x</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-yes">77x</span>
629
- <span class="cline-any cline-yes">66x</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-yes">78x</span>
632
- <span class="cline-any cline-yes">1x</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-yes">78x</span>
635
- <span class="cline-any cline-yes">1x</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-yes">78x</span>
638
- <span class="cline-any cline-yes">1x</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-yes">78x</span>
641
- <span class="cline-any cline-yes">1x</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-yes">78x</span>
644
- <span class="cline-any cline-yes">1x</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-yes">78x</span>
647
- <span class="cline-any cline-yes">1x</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-yes">78x</span>
650
- <span class="cline-any cline-yes">1x</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-yes">78x</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-yes">861x</span>
664
- <span class="cline-any cline-yes">35x</span>
665
- <span class="cline-any cline-yes">35x</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-yes">826x</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-yes">1x</span>
672
- <span class="cline-any cline-yes">1771x</span>
673
- <span class="cline-any cline-yes">127x</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-yes">127x</span>
691
- <span class="cline-any cline-yes">1x</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-yes">126x</span>
694
- <span class="cline-any cline-yes">3x</span>
695
- <span class="cline-any cline-yes">3x</span>
696
- <span class="cline-any cline-yes">3x</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-yes">3x</span>
700
- <span class="cline-any cline-neutral">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-yes">123x</span>
704
- <span class="cline-any cline-yes">9x</span>
705
- <span class="cline-any cline-yes">9x</span>
706
- <span class="cline-any cline-yes">8x</span>
707
- <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-yes">1x</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-yes">114x</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-yes">123x</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-yes">123x</span>
721
- <span class="cline-any cline-yes">24x</span>
722
- <span class="cline-any cline-yes">6x</span>
723
- <span class="cline-any cline-yes">5x</span>
724
- <span class="cline-any cline-neutral">&nbsp;</span>
725
- <span class="cline-any cline-neutral">&nbsp;</span>
726
- <span class="cline-any cline-yes">1x</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-yes">117x</span>
730
- <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-yes">123x</span>
734
- <span class="cline-any cline-yes">36x</span>
735
- <span class="cline-any cline-yes">6x</span>
736
- <span class="cline-any cline-yes">5x</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-yes">1x</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-yes">117x</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-yes">123x</span>
747
- <span class="cline-any cline-neutral">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-yes">123x</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-yes">123x</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-yes">123x</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-yes">123x</span>
759
- <span class="cline-any cline-yes">5x</span>
760
- <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-yes">118x</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-yes">123x</span>
767
- <span class="cline-any cline-yes">5x</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-yes">118x</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-yes">123x</span>
775
- <span class="cline-any cline-yes">18x</span>
776
- <span class="cline-any cline-yes">6x</span>
777
- <span class="cline-any cline-yes">5x</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-yes">1x</span>
781
- <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-yes">117x</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-yes">123x</span>
788
- <span class="cline-any cline-yes">18x</span>
789
- <span class="cline-any cline-yes">6x</span>
790
- <span class="cline-any cline-yes">5x</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-yes">1x</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-yes">117x</span>
797
- <span class="cline-any cline-neutral">&nbsp;</span>
798
- <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-yes">123x</span>
801
- <span class="cline-any cline-yes">123x</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-yes">123x</span>
805
- <span class="cline-any cline-yes">2x</span>
806
- <span class="cline-any cline-yes">1x</span>
807
- <span class="cline-any cline-yes">1x</span>
808
- <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-no">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-neutral">&nbsp;</span>
813
- <span class="cline-any cline-yes">122x</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-yes">123x</span>
817
- <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
819
- &nbsp;
820
- import {
821
- NodePyATVDeviceState,
822
- NodePyATVExecutableType,
823
- NodePyATVFindAndInstanceOptions,
824
- NodePyATVInstanceOptions,
825
- NodePyATVInternalState,
826
- NodePyATVMediaType, NodePyATVPowerState, NodePyATVRepeatState, NodePyATVShuffleState,
827
- NodePyATVState
828
- } from './types';
829
- &nbsp;
830
- import {ChildProcess, spawn, SpawnOptions} from 'child_process';
831
- import {FakeChildProcess} from './fake-spawn';
832
- &nbsp;
833
- const requestIds: string[] = [];
834
- &nbsp;
835
- export function addRequestId(): string {
836
- let id = '?';
837
- &nbsp;
838
- for (let i = 0; i &lt; 1000; i += 1) {
839
- id = Math.round(Math.random() * (i + 6) * 36).toString(36).toUpperCase();
840
- if (!requestIds.includes(id)) {
841
- requestIds.push(id);
842
- break;
843
- }
844
- }
845
- &nbsp;
846
- return id;
847
- }
848
- &nbsp;
849
- export function removeRequestId(id: string | undefined): void {
850
- if (id &amp;&amp; requestIds.includes(id)) {
851
- requestIds.splice(requestIds.indexOf(id), 1);
852
- }
853
- }
854
- &nbsp;
855
- export function debug(id: string, message: string, options: NodePyATVInstanceOptions): void {
856
- if (options.debug) {
857
- const log = typeof options.debug === 'function' ? options.debug : console.log;
858
- const enableColors = !process.env.NO_COLOR &amp;&amp; !options.noColors;
859
- &nbsp;
860
- const parts = [
861
- enableColors ? '\x1b[0m' : '', // Color Reset
862
- enableColors ? '\x1b[90m' : '', // Grey
863
- '[node-pyatv][',
864
- enableColors ? '\x1b[37m' : '', // Light Grey
865
- id,
866
- enableColors ? '\x1b[90m' : '', // Grey
867
- '] ',
868
- enableColors ? '\x1b[0m' : '', // Color Reset
869
- message
870
- ];
871
- &nbsp;
872
- log.apply(null, [parts.join('')]);
873
- }
874
- }
875
- &nbsp;
876
- export function getExecutable(executable: NodePyATVExecutableType, options: NodePyATVInstanceOptions): string {
877
- if (executable === NodePyATVExecutableType.atvremote &amp;&amp; typeof options.atvremotePath === 'string') {
878
- return options.atvremotePath;
879
- }
880
- else if (executable === NodePyATVExecutableType.atvscript &amp;&amp; typeof options.atvscriptPath === 'string') {
881
- return options.atvscriptPath;
882
- }
883
- else {
884
- return executable;
885
- }
886
- }
887
- &nbsp;
888
- export function execute(
889
- requestId: string,
890
- executableType: NodePyATVExecutableType,
891
- parameters: string[],
892
- options: NodePyATVInstanceOptions
893
- ): ChildProcess | FakeChildProcess {
894
- const executable = getExecutable(executableType, options);
895
- const mySpawn: ((command: string, args: Array&lt;string&gt;, options: SpawnOptions) =&gt; (ChildProcess | FakeChildProcess)) = typeof options.spawn === 'function' ? options.spawn : spawn;
896
- &nbsp;
897
- debug(requestId, `${executable} ${parameters.join(' ')}`, options);
898
- const child = mySpawn(executable, parameters, {
899
- env: process.env
900
- });
901
- &nbsp;
902
- /* eslint-disable @typescript-eslint/no-explicit-any*/
903
- const onStdOut = (data: any) =&gt; debug(requestId, `stdout: ${String(data).trim()}`, options);
904
- const onStdErr = (data: any) =&gt; debug(requestId, `stderr: ${String(data).trim()}`, options);
905
- const onError = (data: any) =&gt; debug(requestId, `error: ${String(data).trim()}`, options);
906
- /* eslint-enable @typescript-eslint/no-explicit-any*/
907
- &nbsp;
908
- const onClose = (code: number) =&gt; {
909
- debug(requestId, `${executable} exited with code: ${code}`, options);
910
- &nbsp;
911
- <span class="missing-if-branch" title="else path not taken" >E</span>if (child.stdout) {
912
- child.stdout.off('data', onStdOut);
913
- }
914
- <span class="missing-if-branch" title="else path not taken" >E</span>if (child.stderr) {
915
- child.stderr.off('data', onStdErr);
916
- }
917
- &nbsp;
918
- child.off('error', onError);
919
- child.off('close', onClose);
920
- };
921
- &nbsp;
922
- <span class="missing-if-branch" title="else path not taken" >E</span>if (child.stdout) {
923
- child.stdout.on('data', onStdOut);
924
- }
925
- <span class="missing-if-branch" title="else path not taken" >E</span>if (child.stderr) {
926
- child.stderr.on('data', onStdErr);
927
- }
928
- &nbsp;
929
- child.on('error', onError);
930
- child.on('close', onClose);
931
- &nbsp;
932
- return child;
933
- }
934
- &nbsp;
935
- export async function request(
936
- requestId: string,
937
- executableType: NodePyATVExecutableType,
938
- parameters: string[],
939
- options: NodePyATVInstanceOptions
940
- ): Promise&lt;string|Record&lt;string,unknown&gt;&gt; {
941
- const result = {
942
- stdout: '',
943
- stderr: '',
944
- code: 0
945
- };
946
- &nbsp;
947
- await new Promise((resolve, reject) =&gt; {
948
- const pyatv = execute(requestId, executableType, parameters, options);
949
- &nbsp;
950
- /* eslint-disable @typescript-eslint/no-explicit-any*/
951
- const onStdOut = (data: any) =&gt; result.stdout += String(data).trim();
952
- const onStdErr = (data: any) =&gt; result.stderr += String(data).trim();
953
- const onError = (data: any) =&gt; reject(data instanceof Error ? data : <span class="branch-1 cbranch-no" title="branch not covered" >new Error(String(data)))</span>;
954
- /* eslint-enable @typescript-eslint/no-explicit-any*/
955
- &nbsp;
956
- const onClose: (code: number) =&gt; void = (code: number) =&gt; {
957
- result.code = code;
958
- &nbsp;
959
- <span class="missing-if-branch" title="else path not taken" >E</span>if (pyatv.stdout) {
960
- pyatv.stdout.off('data', onStdOut);
961
- }
962
- <span class="missing-if-branch" title="else path not taken" >E</span>if (pyatv.stderr) {
963
- pyatv.stderr.off('data', onStdErr);
964
- }
965
- &nbsp;
966
- pyatv.off('error', onError);
967
- pyatv.off('close', onClose);
968
- resolve(undefined);
969
- };
970
- &nbsp;
971
- <span class="missing-if-branch" title="else path not taken" >E</span>if (pyatv.stdout) {
972
- pyatv.stdout.on('data', onStdOut);
973
- }
974
- <span class="missing-if-branch" title="else path not taken" >E</span>if (pyatv.stderr) {
975
- pyatv.stderr.on('data', onStdErr);
976
- }
977
- &nbsp;
978
- pyatv.on('error', onError);
979
- pyatv.on('close', onClose);
980
- });
981
- &nbsp;
982
- if (result.stderr.length &gt; 0) {
983
- const msg = `Unable to execute request ${requestId}: ${result.stderr}`;
984
- debug(requestId, msg, options);
985
- throw new Error(msg);
986
- }
987
- if (executableType === NodePyATVExecutableType.atvscript) {
988
- try {
989
- return JSON.parse(result.stdout);
990
- }
991
- catch (error) {
992
- const msg = `Unable to parse result ${requestId} json: ${error}`;
993
- debug(requestId, msg, options);
994
- throw new Error(msg);
995
- }
996
- }
997
- &nbsp;
998
- return result.stdout;
999
- }
1000
- &nbsp;
1001
- export function getParamters(options: NodePyATVFindAndInstanceOptions = {}): string[] {
1002
- const parameters: string[] = [];
1003
- &nbsp;
1004
- if (options.hosts) {
1005
- parameters.push('-s', options.hosts.join(','));
1006
- }
1007
- else if (options.host) {
1008
- parameters.push('-s', options.host);
1009
- }
1010
- if (options.id) {
1011
- parameters.push('-i', options.id);
1012
- }
1013
- if (options.protocol) {
1014
- parameters.push('--protocol', options.protocol);
1015
- }
1016
- if (options.dmapCredentials) {
1017
- parameters.push('--dmap-credentials', options.dmapCredentials);
1018
- }
1019
- if (options.mrpCredentials) {
1020
- parameters.push('--mrp-credentials', options.mrpCredentials);
1021
- }
1022
- if (options.airplayCredentials) {
1023
- parameters.push('--airplay-credentials', options.airplayCredentials);
1024
- }
1025
- if (options.companionCredentials) {
1026
- parameters.push('--companion-credentials', options.companionCredentials);
1027
- }
1028
- if (options.raopCredentials) {
1029
- parameters.push('--raop-credentials', options.raopCredentials);
1030
- }
1031
- &nbsp;
1032
- return parameters;
1033
- }
1034
- &nbsp;
1035
- function parseStateStringAttr(
1036
- input: NodePyATVInternalState,
1037
- output: NodePyATVState,
1038
- inputAttr: ('hash' | 'title' | 'album' | 'artist' | 'genre' | 'app' | 'app_id'),
1039
- outputAttr: ('hash' | 'title' | 'album' | 'artist' | 'genre' | 'app' | 'appId'),
1040
- d: (msg: string) =&gt; void
1041
- ): void {
1042
- if (typeof input[inputAttr] === 'string') {
1043
- output[outputAttr] = input[inputAttr] as string;
1044
- return;
1045
- }
1046
- &nbsp;
1047
- d(`No ${outputAttr} value found in input (${JSON.stringify(input)})`);
1048
- }
1049
- &nbsp;
1050
- export function parseState(input: NodePyATVInternalState, id: string, options: NodePyATVInstanceOptions): NodePyATVState {
1051
- const d = (msg: string) =&gt; debug(id, msg, options);
1052
- const result: NodePyATVState = {
1053
- dateTime: null,
1054
- hash: null,
1055
- mediaType: null,
1056
- deviceState: null,
1057
- title: null,
1058
- artist: null,
1059
- album: null,
1060
- genre: null,
1061
- totalTime: null,
1062
- position: null,
1063
- shuffle: null,
1064
- repeat: null,
1065
- app: null,
1066
- appId: null,
1067
- powerState: null
1068
- };
1069
- if (!input || typeof input !== 'object') {
1070
- return result;
1071
- }
1072
- if(input.exception) {
1073
- let errorStr = 'Got pyatv Error: ' + input.exception;
1074
- <span class="missing-if-branch" title="else path not taken" >E</span>if(input.stacktrace) {
1075
- errorStr += '\n\npyatv Stacktrace:\n' + input.stacktrace;
1076
- }
1077
- &nbsp;
1078
- throw new Error(errorStr);
1079
- }
1080
- &nbsp;
1081
- // datetime
1082
- if (typeof input.datetime === 'string') {
1083
- const date = new Date(input.datetime);
1084
- if (!isNaN(date.getTime())) {
1085
- result.dateTime = date;
1086
- }
1087
- else {
1088
- d(`Invalid datetime value ${input.datetime}, ignore attribute`);
1089
- }
1090
- }
1091
- else {
1092
- d(`No datetime value found in input (${JSON.stringify(input)})`);
1093
- }
1094
- &nbsp;
1095
- // hash
1096
- parseStateStringAttr(input, result, 'hash', 'hash', d);
1097
- &nbsp;
1098
- // mediaType
1099
- if(typeof input.media_type === 'string') {
1100
- const validValues = Object.keys(NodePyATVMediaType).map(o =&gt; String(o));
1101
- if (validValues.includes(input.media_type)) {
1102
- result.mediaType = NodePyATVMediaType[input.media_type as NodePyATVMediaType];
1103
- }
1104
- else {
1105
- d(`Unsupported mediaType value ${input.media_type}, ignore attribute`);
1106
- }
1107
- } else {
1108
- d(`No mediaType value found in input (${JSON.stringify(input)})`);
1109
- }
1110
- &nbsp;
1111
- // deviceState
1112
- if(typeof input.device_state === 'string') {
1113
- const validValues = Object.keys(NodePyATVDeviceState).map(o =&gt; String(o));
1114
- if (validValues.includes(input.device_state)) {
1115
- result.deviceState = NodePyATVDeviceState[input.device_state as NodePyATVDeviceState];
1116
- }
1117
- else {
1118
- d(`Unsupported deviceState value ${input.device_state}, ignore attribute`);
1119
- }
1120
- } else {
1121
- d(`No deviceState value found in input (${JSON.stringify(input)})`);
1122
- }
1123
- &nbsp;
1124
- // title
1125
- parseStateStringAttr(input, result, 'title', 'title', d);
1126
- &nbsp;
1127
- // artist
1128
- parseStateStringAttr(input, result, 'artist', 'artist', d);
1129
- &nbsp;
1130
- // album
1131
- parseStateStringAttr(input, result, 'album', 'album', d);
1132
- &nbsp;
1133
- // genre
1134
- parseStateStringAttr(input, result, 'genre', 'genre', d);
1135
- &nbsp;
1136
- // totalTime
1137
- if (typeof input.total_time === 'number') {
1138
- result.totalTime = input.total_time;
1139
- }
1140
- else {
1141
- d(`No totalTime value found in input (${JSON.stringify(input)})`);
1142
- }
1143
- &nbsp;
1144
- // position
1145
- if (typeof input.position === 'number') {
1146
- result.position = input.position;
1147
- }
1148
- else {
1149
- d(`No position value found in input (${JSON.stringify(input)})`);
1150
- }
1151
- &nbsp;
1152
- // shuffle
1153
- if(typeof input.shuffle === 'string') {
1154
- const validValues = Object.keys(NodePyATVShuffleState).map(o =&gt; String(o));
1155
- if (validValues.includes(input.shuffle)) {
1156
- result.shuffle = NodePyATVShuffleState[input.shuffle as NodePyATVShuffleState];
1157
- }
1158
- else {
1159
- d(`Unsupported shuffle value ${input.shuffle}, ignore attribute`);
1160
- }
1161
- } else {
1162
- d(`No shuffle value found in input (${JSON.stringify(input)})`);
1163
- }
1164
- &nbsp;
1165
- // repeat
1166
- if(typeof input.repeat === 'string') {
1167
- const validValues = Object.keys(NodePyATVRepeatState).map(o =&gt; String(o));
1168
- if (validValues.includes(input.repeat)) {
1169
- result.repeat = NodePyATVRepeatState[input.repeat as NodePyATVRepeatState];
1170
- }
1171
- else {
1172
- d(`Unsupported repeat value ${input.repeat}, ignore attribute`);
1173
- }
1174
- } else {
1175
- d(`No repeat value found in input (${JSON.stringify(input)})`);
1176
- }
1177
- &nbsp;
1178
- // app
1179
- parseStateStringAttr(input, result, 'app', 'app', d);
1180
- parseStateStringAttr(input, result, 'app_id', 'appId', d);
1181
- &nbsp;
1182
- // powerState
1183
- if(typeof input.power_state === 'string') {
1184
- const validValues = Object.keys(NodePyATVPowerState).map(o =&gt; String(o));
1185
- <span class="missing-if-branch" title="else path not taken" >E</span>if (validValues.includes(input.power_state)) {
1186
- result.powerState = NodePyATVPowerState[input.power_state as NodePyATVPowerState];
1187
- }
1188
- else {
1189
- <span class="cstat-no" title="statement not covered" > d(`Unsupported powerState value ${input.power_state}, ignore attribute`);</span>
1190
- }
1191
- } else {
1192
- d(`No powerState value found in input (${JSON.stringify(input)})`);
1193
- }
1194
- &nbsp;
1195
- return result;
1196
- }
1197
- &nbsp;</pre></td></tr></table></pre>
1198
-
1199
- <div class='push'></div><!-- for sticky footer -->
1200
- </div><!-- /wrapper -->
1201
- <div class='footer quiet pad2 space-top1 center small'>
1202
- Code coverage generated by
1203
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1204
- at Sun Jun 05 2022 21:34:40 GMT+0000 (Coordinated Universal Time)
1205
- </div>
1206
- </div>
1207
- <script src="prettify.js"></script>
1208
- <script>
1209
- window.onload = function () {
1210
- prettyPrint();
1211
- };
1212
- </script>
1213
- <script src="sorter.js"></script>
1214
- <script src="block-navigation.js"></script>
1215
- </body>
1216
- </html>
1217
-