@chat21/chat21-web-widget 5.0.46-rc.3 → 5.0.46

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 (161) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/assets/twp/index-dev.html +16 -0
  3. package/dist/environments/real_data/widget-config-docker.json +1 -0
  4. package/dist/environments/real_data/widget-config-firebase.json +2 -2
  5. package/dist/environments/real_data/widget-config-native-mqtt.json +1 -0
  6. package/dist/main.js +1 -1
  7. package/dist/vendor.js +1 -1
  8. package/e2e/protractor.conf.js +32 -0
  9. package/package.json +1 -1
  10. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.scss +13 -8
  11. package/src/app/utils/globals.ts +46 -26
  12. package/src/assets/twp/index-dev.html +16 -0
  13. package/src/environments/real_data/widget-config-docker.json +1 -0
  14. package/src/environments/real_data/widget-config-firebase.json +2 -2
  15. package/src/environments/real_data/widget-config-native-mqtt.json +1 -0
  16. package/coverage/widget/base.css +0 -224
  17. package/coverage/widget/block-navigation.js +0 -87
  18. package/coverage/widget/favicon.png +0 -0
  19. package/coverage/widget/index.html +0 -881
  20. package/coverage/widget/lcov.info +0 -10516
  21. package/coverage/widget/polyfills.ts.html +0 -277
  22. package/coverage/widget/prettify.css +0 -1
  23. package/coverage/widget/prettify.js +0 -2
  24. package/coverage/widget/sort-arrow-sprite.png +0 -0
  25. package/coverage/widget/sorter.js +0 -196
  26. package/coverage/widget/src/app/app.component.ts.html +0 -6328
  27. package/coverage/widget/src/app/component/conversation-detail/conversation/conversation.component.ts.html +0 -3871
  28. package/coverage/widget/src/app/component/conversation-detail/conversation/index.html +0 -116
  29. package/coverage/widget/src/app/component/conversation-detail/conversation-content/conversation-content.component.ts.html +0 -925
  30. package/coverage/widget/src/app/component/conversation-detail/conversation-content/index.html +0 -116
  31. package/coverage/widget/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts.html +0 -1816
  32. package/coverage/widget/src/app/component/conversation-detail/conversation-footer/index.html +0 -116
  33. package/coverage/widget/src/app/component/conversation-detail/conversation-header/conversation-header.component.ts.html +0 -811
  34. package/coverage/widget/src/app/component/conversation-detail/conversation-header/index.html +0 -116
  35. package/coverage/widget/src/app/component/conversation-detail/conversation-internal-frame/conversation-internal-frame.component.ts.html +0 -397
  36. package/coverage/widget/src/app/component/conversation-detail/conversation-internal-frame/index.html +0 -116
  37. package/coverage/widget/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.ts.html +0 -991
  38. package/coverage/widget/src/app/component/conversation-detail/conversation-preview/index.html +0 -116
  39. package/coverage/widget/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.ts.html +0 -586
  40. package/coverage/widget/src/app/component/eyeeye-catcher-card/index.html +0 -116
  41. package/coverage/widget/src/app/component/form/form-builder/form-builder.component.ts.html +0 -664
  42. package/coverage/widget/src/app/component/form/form-builder/index.html +0 -116
  43. package/coverage/widget/src/app/component/form/inputs/form-checkbox/form-checkbox.component.ts.html +0 -208
  44. package/coverage/widget/src/app/component/form/inputs/form-checkbox/index.html +0 -116
  45. package/coverage/widget/src/app/component/form/inputs/form-label/form-label.component.ts.html +0 -157
  46. package/coverage/widget/src/app/component/form/inputs/form-label/index.html +0 -116
  47. package/coverage/widget/src/app/component/form/inputs/form-radio-button/form-radio-button.component.ts.html +0 -130
  48. package/coverage/widget/src/app/component/form/inputs/form-radio-button/index.html +0 -116
  49. package/coverage/widget/src/app/component/form/inputs/form-select/form-select.component.ts.html +0 -130
  50. package/coverage/widget/src/app/component/form/inputs/form-select/index.html +0 -116
  51. package/coverage/widget/src/app/component/form/inputs/form-text/form-text.component.ts.html +0 -301
  52. package/coverage/widget/src/app/component/form/inputs/form-text/index.html +0 -116
  53. package/coverage/widget/src/app/component/form/inputs/form-textarea/form-textarea.component.ts.html +0 -358
  54. package/coverage/widget/src/app/component/form/inputs/form-textarea/index.html +0 -116
  55. package/coverage/widget/src/app/component/form/prechat-form/index.html +0 -116
  56. package/coverage/widget/src/app/component/form/prechat-form/prechat-form.component.ts.html +0 -565
  57. package/coverage/widget/src/app/component/home/home.component.ts.html +0 -559
  58. package/coverage/widget/src/app/component/home/index.html +0 -116
  59. package/coverage/widget/src/app/component/home-conversations/home-conversations.component.ts.html +0 -985
  60. package/coverage/widget/src/app/component/home-conversations/index.html +0 -116
  61. package/coverage/widget/src/app/component/last-message/index.html +0 -116
  62. package/coverage/widget/src/app/component/last-message/last-message.component.ts.html +0 -484
  63. package/coverage/widget/src/app/component/launcher-button/index.html +0 -116
  64. package/coverage/widget/src/app/component/launcher-button/launcher-button.component.ts.html +0 -307
  65. package/coverage/widget/src/app/component/list-all-conversations/index.html +0 -116
  66. package/coverage/widget/src/app/component/list-all-conversations/list-all-conversations.component.ts.html +0 -676
  67. package/coverage/widget/src/app/component/list-conversations/index.html +0 -116
  68. package/coverage/widget/src/app/component/list-conversations/list-conversations.component.ts.html +0 -475
  69. package/coverage/widget/src/app/component/menu-options/index.html +0 -116
  70. package/coverage/widget/src/app/component/menu-options/menu-options.component.ts.html +0 -226
  71. package/coverage/widget/src/app/component/message/avatar/avatar.component.ts.html +0 -271
  72. package/coverage/widget/src/app/component/message/avatar/index.html +0 -116
  73. package/coverage/widget/src/app/component/message/bubble-message/bubble-message.component.ts.html +0 -655
  74. package/coverage/widget/src/app/component/message/bubble-message/index.html +0 -116
  75. package/coverage/widget/src/app/component/message/buttons/action-button/action-button.component.ts.html +0 -274
  76. package/coverage/widget/src/app/component/message/buttons/action-button/index.html +0 -116
  77. package/coverage/widget/src/app/component/message/buttons/link-button/index.html +0 -116
  78. package/coverage/widget/src/app/component/message/buttons/link-button/link-button.component.ts.html +0 -232
  79. package/coverage/widget/src/app/component/message/buttons/text-button/index.html +0 -116
  80. package/coverage/widget/src/app/component/message/buttons/text-button/text-button.component.ts.html +0 -235
  81. package/coverage/widget/src/app/component/message/frame/frame.component.ts.html +0 -199
  82. package/coverage/widget/src/app/component/message/frame/index.html +0 -116
  83. package/coverage/widget/src/app/component/message/html/html.component.ts.html +0 -184
  84. package/coverage/widget/src/app/component/message/html/index.html +0 -116
  85. package/coverage/widget/src/app/component/message/image/image.component.ts.html +0 -394
  86. package/coverage/widget/src/app/component/message/image/index.html +0 -116
  87. package/coverage/widget/src/app/component/message/info-message/index.html +0 -116
  88. package/coverage/widget/src/app/component/message/info-message/info-message.component.ts.html +0 -211
  89. package/coverage/widget/src/app/component/message/like-unlike/index.html +0 -116
  90. package/coverage/widget/src/app/component/message/like-unlike/like-unlike.component.ts.html +0 -151
  91. package/coverage/widget/src/app/component/message/return-receipt/index.html +0 -116
  92. package/coverage/widget/src/app/component/message/return-receipt/return-receipt.component.ts.html +0 -157
  93. package/coverage/widget/src/app/component/message/text/index.html +0 -116
  94. package/coverage/widget/src/app/component/message/text/text.component.ts.html +0 -190
  95. package/coverage/widget/src/app/component/message-attachment/index.html +0 -116
  96. package/coverage/widget/src/app/component/message-attachment/message-attachment.component.ts.html +0 -343
  97. package/coverage/widget/src/app/component/selection-department/index.html +0 -116
  98. package/coverage/widget/src/app/component/selection-department/selection-department.component.ts.html +0 -676
  99. package/coverage/widget/src/app/component/send-button/index.html +0 -116
  100. package/coverage/widget/src/app/component/send-button/send-button.component.ts.html +0 -154
  101. package/coverage/widget/src/app/component/star-rating-widget/index.html +0 -116
  102. package/coverage/widget/src/app/component/star-rating-widget/star-rating-widget.component.ts.html +0 -451
  103. package/coverage/widget/src/app/directives/html-entities-encode.pipe.ts.html +0 -136
  104. package/coverage/widget/src/app/directives/index.html +0 -146
  105. package/coverage/widget/src/app/directives/marked.pipe.ts.html +0 -166
  106. package/coverage/widget/src/app/directives/safe-html.pipe.ts.html +0 -136
  107. package/coverage/widget/src/app/index.html +0 -116
  108. package/coverage/widget/src/app/providers/app-config.service.ts.html +0 -247
  109. package/coverage/widget/src/app/providers/global-settings.service.ts.html +0 -5698
  110. package/coverage/widget/src/app/providers/index.html +0 -206
  111. package/coverage/widget/src/app/providers/settings-saver.service.ts.html +0 -253
  112. package/coverage/widget/src/app/providers/star-rating-widget.service.ts.html +0 -385
  113. package/coverage/widget/src/app/providers/storage.service.ts.html +0 -745
  114. package/coverage/widget/src/app/providers/translator.service.ts.html +0 -1498
  115. package/coverage/widget/src/app/providers/waiting.service.ts.html +0 -178
  116. package/coverage/widget/src/app/utils/constants.ts.html +0 -304
  117. package/coverage/widget/src/app/utils/globals.ts.html +0 -1939
  118. package/coverage/widget/src/app/utils/index.html +0 -146
  119. package/coverage/widget/src/app/utils/utils.ts.html +0 -1240
  120. package/coverage/widget/src/chat21-core/models/conversation.ts.html +0 -160
  121. package/coverage/widget/src/chat21-core/models/index.html +0 -146
  122. package/coverage/widget/src/chat21-core/models/upload.ts.html +0 -118
  123. package/coverage/widget/src/chat21-core/models/user.ts.html +0 -133
  124. package/coverage/widget/src/chat21-core/providers/abstract/app-storage.service.ts.html +0 -142
  125. package/coverage/widget/src/chat21-core/providers/abstract/archivedconversations-handler.service.ts.html +0 -184
  126. package/coverage/widget/src/chat21-core/providers/abstract/conversation-handler-builder.service.ts.html +0 -121
  127. package/coverage/widget/src/chat21-core/providers/abstract/conversation-handler.service.ts.html +0 -235
  128. package/coverage/widget/src/chat21-core/providers/abstract/conversations-handler.service.ts.html +0 -208
  129. package/coverage/widget/src/chat21-core/providers/abstract/groups-handler.service.ts.html +0 -160
  130. package/coverage/widget/src/chat21-core/providers/abstract/image-repo.service.ts.html +0 -169
  131. package/coverage/widget/src/chat21-core/providers/abstract/index.html +0 -296
  132. package/coverage/widget/src/chat21-core/providers/abstract/logger.service.ts.html +0 -136
  133. package/coverage/widget/src/chat21-core/providers/abstract/messagingAuth.service.ts.html +0 -238
  134. package/coverage/widget/src/chat21-core/providers/abstract/notifications.service.ts.html +0 -172
  135. package/coverage/widget/src/chat21-core/providers/abstract/presence.service.ts.html +0 -190
  136. package/coverage/widget/src/chat21-core/providers/abstract/typing.service.ts.html +0 -187
  137. package/coverage/widget/src/chat21-core/providers/abstract/upload.service.ts.html +0 -178
  138. package/coverage/widget/src/chat21-core/providers/chat-manager.ts.html +0 -895
  139. package/coverage/widget/src/chat21-core/providers/custom-translate.service.ts.html +0 -223
  140. package/coverage/widget/src/chat21-core/providers/index.html +0 -131
  141. package/coverage/widget/src/chat21-core/providers/logger/customLogger.ts.html +0 -265
  142. package/coverage/widget/src/chat21-core/providers/logger/index.html +0 -131
  143. package/coverage/widget/src/chat21-core/providers/logger/loggerInstance.ts.html +0 -142
  144. package/coverage/widget/src/chat21-core/providers/tiledesk/index.html +0 -131
  145. package/coverage/widget/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts.html +0 -655
  146. package/coverage/widget/src/chat21-core/providers/tiledesk/tiledesk-requests.service.ts.html +0 -241
  147. package/coverage/widget/src/chat21-core/utils/constants.ts.html +0 -409
  148. package/coverage/widget/src/chat21-core/utils/index.html +0 -176
  149. package/coverage/widget/src/chat21-core/utils/triggerHandler.ts.html +0 -1069
  150. package/coverage/widget/src/chat21-core/utils/user-typing/index.html +0 -116
  151. package/coverage/widget/src/chat21-core/utils/user-typing/user-typing.component.ts.html +0 -184
  152. package/coverage/widget/src/chat21-core/utils/utils-message.ts.html +0 -637
  153. package/coverage/widget/src/chat21-core/utils/utils-user.ts.html +0 -229
  154. package/coverage/widget/src/chat21-core/utils/utils.ts.html +0 -2221
  155. package/coverage/widget/src/environments/environment.ts.html +0 -205
  156. package/coverage/widget/src/environments/index.html +0 -116
  157. package/coverage/widget/src/index.html +0 -131
  158. package/coverage/widget/src/models/index.html +0 -116
  159. package/coverage/widget/src/models/project.ts.html +0 -319
  160. package/coverage/widget/src/polyfills.ts.html +0 -277
  161. package/coverage/widget/src/test.ts.html +0 -142
@@ -1,2221 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/chat21-core/utils/utils.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> / <a href="index.html">src/chat21-core/utils</a> utils.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">4.89% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>13/266</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">5.88% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>8/136</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">5.45% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>3/55</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">5% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>13/260</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 low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a>
609
- <a name='L544'></a><a href='#L544'>544</a>
610
- <a name='L545'></a><a href='#L545'>545</a>
611
- <a name='L546'></a><a href='#L546'>546</a>
612
- <a name='L547'></a><a href='#L547'>547</a>
613
- <a name='L548'></a><a href='#L548'>548</a>
614
- <a name='L549'></a><a href='#L549'>549</a>
615
- <a name='L550'></a><a href='#L550'>550</a>
616
- <a name='L551'></a><a href='#L551'>551</a>
617
- <a name='L552'></a><a href='#L552'>552</a>
618
- <a name='L553'></a><a href='#L553'>553</a>
619
- <a name='L554'></a><a href='#L554'>554</a>
620
- <a name='L555'></a><a href='#L555'>555</a>
621
- <a name='L556'></a><a href='#L556'>556</a>
622
- <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a>
624
- <a name='L559'></a><a href='#L559'>559</a>
625
- <a name='L560'></a><a href='#L560'>560</a>
626
- <a name='L561'></a><a href='#L561'>561</a>
627
- <a name='L562'></a><a href='#L562'>562</a>
628
- <a name='L563'></a><a href='#L563'>563</a>
629
- <a name='L564'></a><a href='#L564'>564</a>
630
- <a name='L565'></a><a href='#L565'>565</a>
631
- <a name='L566'></a><a href='#L566'>566</a>
632
- <a name='L567'></a><a href='#L567'>567</a>
633
- <a name='L568'></a><a href='#L568'>568</a>
634
- <a name='L569'></a><a href='#L569'>569</a>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a>
642
- <a name='L577'></a><a href='#L577'>577</a>
643
- <a name='L578'></a><a href='#L578'>578</a>
644
- <a name='L579'></a><a href='#L579'>579</a>
645
- <a name='L580'></a><a href='#L580'>580</a>
646
- <a name='L581'></a><a href='#L581'>581</a>
647
- <a name='L582'></a><a href='#L582'>582</a>
648
- <a name='L583'></a><a href='#L583'>583</a>
649
- <a name='L584'></a><a href='#L584'>584</a>
650
- <a name='L585'></a><a href='#L585'>585</a>
651
- <a name='L586'></a><a href='#L586'>586</a>
652
- <a name='L587'></a><a href='#L587'>587</a>
653
- <a name='L588'></a><a href='#L588'>588</a>
654
- <a name='L589'></a><a href='#L589'>589</a>
655
- <a name='L590'></a><a href='#L590'>590</a>
656
- <a name='L591'></a><a href='#L591'>591</a>
657
- <a name='L592'></a><a href='#L592'>592</a>
658
- <a name='L593'></a><a href='#L593'>593</a>
659
- <a name='L594'></a><a href='#L594'>594</a>
660
- <a name='L595'></a><a href='#L595'>595</a>
661
- <a name='L596'></a><a href='#L596'>596</a>
662
- <a name='L597'></a><a href='#L597'>597</a>
663
- <a name='L598'></a><a href='#L598'>598</a>
664
- <a name='L599'></a><a href='#L599'>599</a>
665
- <a name='L600'></a><a href='#L600'>600</a>
666
- <a name='L601'></a><a href='#L601'>601</a>
667
- <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a>
669
- <a name='L604'></a><a href='#L604'>604</a>
670
- <a name='L605'></a><a href='#L605'>605</a>
671
- <a name='L606'></a><a href='#L606'>606</a>
672
- <a name='L607'></a><a href='#L607'>607</a>
673
- <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a>
718
- <a name='L653'></a><a href='#L653'>653</a>
719
- <a name='L654'></a><a href='#L654'>654</a>
720
- <a name='L655'></a><a href='#L655'>655</a>
721
- <a name='L656'></a><a href='#L656'>656</a>
722
- <a name='L657'></a><a href='#L657'>657</a>
723
- <a name='L658'></a><a href='#L658'>658</a>
724
- <a name='L659'></a><a href='#L659'>659</a>
725
- <a name='L660'></a><a href='#L660'>660</a>
726
- <a name='L661'></a><a href='#L661'>661</a>
727
- <a name='L662'></a><a href='#L662'>662</a>
728
- <a name='L663'></a><a href='#L663'>663</a>
729
- <a name='L664'></a><a href='#L664'>664</a>
730
- <a name='L665'></a><a href='#L665'>665</a>
731
- <a name='L666'></a><a href='#L666'>666</a>
732
- <a name='L667'></a><a href='#L667'>667</a>
733
- <a name='L668'></a><a href='#L668'>668</a>
734
- <a name='L669'></a><a href='#L669'>669</a>
735
- <a name='L670'></a><a href='#L670'>670</a>
736
- <a name='L671'></a><a href='#L671'>671</a>
737
- <a name='L672'></a><a href='#L672'>672</a>
738
- <a name='L673'></a><a href='#L673'>673</a>
739
- <a name='L674'></a><a href='#L674'>674</a>
740
- <a name='L675'></a><a href='#L675'>675</a>
741
- <a name='L676'></a><a href='#L676'>676</a>
742
- <a name='L677'></a><a href='#L677'>677</a>
743
- <a name='L678'></a><a href='#L678'>678</a>
744
- <a name='L679'></a><a href='#L679'>679</a>
745
- <a name='L680'></a><a href='#L680'>680</a>
746
- <a name='L681'></a><a href='#L681'>681</a>
747
- <a name='L682'></a><a href='#L682'>682</a>
748
- <a name='L683'></a><a href='#L683'>683</a>
749
- <a name='L684'></a><a href='#L684'>684</a>
750
- <a name='L685'></a><a href='#L685'>685</a>
751
- <a name='L686'></a><a href='#L686'>686</a>
752
- <a name='L687'></a><a href='#L687'>687</a>
753
- <a name='L688'></a><a href='#L688'>688</a>
754
- <a name='L689'></a><a href='#L689'>689</a>
755
- <a name='L690'></a><a href='#L690'>690</a>
756
- <a name='L691'></a><a href='#L691'>691</a>
757
- <a name='L692'></a><a href='#L692'>692</a>
758
- <a name='L693'></a><a href='#L693'>693</a>
759
- <a name='L694'></a><a href='#L694'>694</a>
760
- <a name='L695'></a><a href='#L695'>695</a>
761
- <a name='L696'></a><a href='#L696'>696</a>
762
- <a name='L697'></a><a href='#L697'>697</a>
763
- <a name='L698'></a><a href='#L698'>698</a>
764
- <a name='L699'></a><a href='#L699'>699</a>
765
- <a name='L700'></a><a href='#L700'>700</a>
766
- <a name='L701'></a><a href='#L701'>701</a>
767
- <a name='L702'></a><a href='#L702'>702</a>
768
- <a name='L703'></a><a href='#L703'>703</a>
769
- <a name='L704'></a><a href='#L704'>704</a>
770
- <a name='L705'></a><a href='#L705'>705</a>
771
- <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-no">&nbsp;</span>
807
- <span class="cline-any cline-no">&nbsp;</span>
808
- <span class="cline-any cline-no">&nbsp;</span>
809
- <span class="cline-any cline-no">&nbsp;</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-no">&nbsp;</span>
812
- <span class="cline-any cline-no">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
817
- <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-no">&nbsp;</span>
823
- <span class="cline-any cline-no">&nbsp;</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-neutral">&nbsp;</span>
826
- <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-no">&nbsp;</span>
832
- <span class="cline-any cline-no">&nbsp;</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-neutral">&nbsp;</span>
836
- <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-neutral">&nbsp;</span>
838
- <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-no">&nbsp;</span>
840
- <span class="cline-any cline-no">&nbsp;</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-neutral">&nbsp;</span>
844
- <span class="cline-any cline-neutral">&nbsp;</span>
845
- <span class="cline-any cline-neutral">&nbsp;</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-no">&nbsp;</span>
849
- <span class="cline-any cline-no">&nbsp;</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-neutral">&nbsp;</span>
852
- <span class="cline-any cline-neutral">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-neutral">&nbsp;</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-neutral">&nbsp;</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-neutral">&nbsp;</span>
864
- <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-neutral">&nbsp;</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-neutral">&nbsp;</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-neutral">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-neutral">&nbsp;</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-no">&nbsp;</span>
885
- <span class="cline-any cline-no">&nbsp;</span>
886
- <span class="cline-any cline-no">&nbsp;</span>
887
- <span class="cline-any cline-no">&nbsp;</span>
888
- <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-no">&nbsp;</span>
890
- <span class="cline-any cline-no">&nbsp;</span>
891
- <span class="cline-any cline-no">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-no">&nbsp;</span>
894
- <span class="cline-any cline-no">&nbsp;</span>
895
- <span class="cline-any cline-no">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-no">&nbsp;</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-no">&nbsp;</span>
900
- <span class="cline-any cline-neutral">&nbsp;</span>
901
- <span class="cline-any cline-no">&nbsp;</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-no">&nbsp;</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-neutral">&nbsp;</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-no">&nbsp;</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-neutral">&nbsp;</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-no">&nbsp;</span>
923
- <span class="cline-any cline-no">&nbsp;</span>
924
- <span class="cline-any cline-no">&nbsp;</span>
925
- <span class="cline-any cline-no">&nbsp;</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-no">&nbsp;</span>
928
- <span class="cline-any cline-no">&nbsp;</span>
929
- <span class="cline-any cline-no">&nbsp;</span>
930
- <span class="cline-any cline-no">&nbsp;</span>
931
- <span class="cline-any cline-no">&nbsp;</span>
932
- <span class="cline-any cline-no">&nbsp;</span>
933
- <span class="cline-any cline-no">&nbsp;</span>
934
- <span class="cline-any cline-no">&nbsp;</span>
935
- <span class="cline-any cline-no">&nbsp;</span>
936
- <span class="cline-any cline-no">&nbsp;</span>
937
- <span class="cline-any cline-no">&nbsp;</span>
938
- <span class="cline-any cline-no">&nbsp;</span>
939
- <span class="cline-any cline-no">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-no">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-no">&nbsp;</span>
945
- <span class="cline-any cline-no">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-neutral">&nbsp;</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-neutral">&nbsp;</span>
953
- <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-no">&nbsp;</span>
955
- <span class="cline-any cline-no">&nbsp;</span>
956
- <span class="cline-any cline-no">&nbsp;</span>
957
- <span class="cline-any cline-no">&nbsp;</span>
958
- <span class="cline-any cline-no">&nbsp;</span>
959
- <span class="cline-any cline-no">&nbsp;</span>
960
- <span class="cline-any cline-no">&nbsp;</span>
961
- <span class="cline-any cline-no">&nbsp;</span>
962
- <span class="cline-any cline-no">&nbsp;</span>
963
- <span class="cline-any cline-no">&nbsp;</span>
964
- <span class="cline-any cline-no">&nbsp;</span>
965
- <span class="cline-any cline-no">&nbsp;</span>
966
- <span class="cline-any cline-no">&nbsp;</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-no">&nbsp;</span>
969
- <span class="cline-any cline-no">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-no">&nbsp;</span>
972
- <span class="cline-any cline-no">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-no">&nbsp;</span>
982
- <span class="cline-any cline-no">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-neutral">&nbsp;</span>
985
- <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-no">&nbsp;</span>
987
- <span class="cline-any cline-no">&nbsp;</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-no">&nbsp;</span>
990
- <span class="cline-any cline-no">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-no">&nbsp;</span>
996
- <span class="cline-any cline-no">&nbsp;</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-no">&nbsp;</span>
999
- <span class="cline-any cline-no">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-neutral">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-no">&nbsp;</span>
1005
- <span class="cline-any cline-no">&nbsp;</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-neutral">&nbsp;</span>
1008
- <span class="cline-any cline-no">&nbsp;</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-no">&nbsp;</span>
1011
- <span class="cline-any cline-neutral">&nbsp;</span>
1012
- <span class="cline-any cline-no">&nbsp;</span>
1013
- <span class="cline-any cline-neutral">&nbsp;</span>
1014
- <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-no">&nbsp;</span>
1018
- <span class="cline-any cline-no">&nbsp;</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-no">&nbsp;</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-neutral">&nbsp;</span>
1023
- <span class="cline-any cline-neutral">&nbsp;</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-neutral">&nbsp;</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-no">&nbsp;</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-neutral">&nbsp;</span>
1042
- <span class="cline-any cline-neutral">&nbsp;</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-neutral">&nbsp;</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-no">&nbsp;</span>
1047
- <span class="cline-any cline-no">&nbsp;</span>
1048
- <span class="cline-any cline-no">&nbsp;</span>
1049
- <span class="cline-any cline-no">&nbsp;</span>
1050
- <span class="cline-any cline-neutral">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-no">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-no">&nbsp;</span>
1058
- <span class="cline-any cline-no">&nbsp;</span>
1059
- <span class="cline-any cline-no">&nbsp;</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-no">&nbsp;</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-no">&nbsp;</span>
1064
- <span class="cline-any cline-neutral">&nbsp;</span>
1065
- <span class="cline-any cline-no">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-neutral">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-neutral">&nbsp;</span>
1073
- <span class="cline-any cline-no">&nbsp;</span>
1074
- <span class="cline-any cline-no">&nbsp;</span>
1075
- <span class="cline-any cline-neutral">&nbsp;</span>
1076
- <span class="cline-any cline-no">&nbsp;</span>
1077
- <span class="cline-any cline-no">&nbsp;</span>
1078
- <span class="cline-any cline-no">&nbsp;</span>
1079
- <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-no">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-no">&nbsp;</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-no">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-no">&nbsp;</span>
1092
- <span class="cline-any cline-no">&nbsp;</span>
1093
- <span class="cline-any cline-no">&nbsp;</span>
1094
- <span class="cline-any cline-no">&nbsp;</span>
1095
- <span class="cline-any cline-no">&nbsp;</span>
1096
- <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-no">&nbsp;</span>
1100
- <span class="cline-any cline-no">&nbsp;</span>
1101
- <span class="cline-any cline-no">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-no">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-no">&nbsp;</span>
1123
- <span class="cline-any cline-no">&nbsp;</span>
1124
- <span class="cline-any cline-no">&nbsp;</span>
1125
- <span class="cline-any cline-no">&nbsp;</span>
1126
- <span class="cline-any cline-no">&nbsp;</span>
1127
- <span class="cline-any cline-no">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-no">&nbsp;</span>
1132
- <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-yes">1x</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-no">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-neutral">&nbsp;</span>
1151
- <span class="cline-any cline-neutral">&nbsp;</span>
1152
- <span class="cline-any cline-yes">1x</span>
1153
- <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-yes">1x</span>
1155
- <span class="cline-any cline-neutral">&nbsp;</span>
1156
- <span class="cline-any cline-neutral">&nbsp;</span>
1157
- <span class="cline-any cline-neutral">&nbsp;</span>
1158
- <span class="cline-any cline-neutral">&nbsp;</span>
1159
- <span class="cline-any cline-no">&nbsp;</span>
1160
- <span class="cline-any cline-no">&nbsp;</span>
1161
- <span class="cline-any cline-no">&nbsp;</span>
1162
- <span class="cline-any cline-neutral">&nbsp;</span>
1163
- <span class="cline-any cline-no">&nbsp;</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
1165
- <span class="cline-any cline-neutral">&nbsp;</span>
1166
- <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-no">&nbsp;</span>
1169
- <span class="cline-any cline-no">&nbsp;</span>
1170
- <span class="cline-any cline-no">&nbsp;</span>
1171
- <span class="cline-any cline-no">&nbsp;</span>
1172
- <span class="cline-any cline-no">&nbsp;</span>
1173
- <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-no">&nbsp;</span>
1175
- <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-neutral">&nbsp;</span>
1177
- <span class="cline-any cline-neutral">&nbsp;</span>
1178
- <span class="cline-any cline-no">&nbsp;</span>
1179
- <span class="cline-any cline-no">&nbsp;</span>
1180
- <span class="cline-any cline-neutral">&nbsp;</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-yes">31x</span>
1184
- <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-yes">31x</span>
1186
- <span class="cline-any cline-yes">20x</span>
1187
- <span class="cline-any cline-yes">20x</span>
1188
- <span class="cline-any cline-yes">20x</span>
1189
- <span class="cline-any cline-yes">20x</span>
1190
- <span class="cline-any cline-yes">20x</span>
1191
- <span class="cline-any cline-yes">11x</span>
1192
- <span class="cline-any cline-no">&nbsp;</span>
1193
- <span class="cline-any cline-no">&nbsp;</span>
1194
- <span class="cline-any cline-no">&nbsp;</span>
1195
- <span class="cline-any cline-no">&nbsp;</span>
1196
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-no">&nbsp;</span>
1198
- <span class="cline-any cline-yes">11x</span>
1199
- <span class="cline-any cline-no">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-no">&nbsp;</span>
1202
- <span class="cline-any cline-no">&nbsp;</span>
1203
- <span class="cline-any cline-no">&nbsp;</span>
1204
- <span class="cline-any cline-neutral">&nbsp;</span>
1205
- <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-no">&nbsp;</span>
1207
- <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-neutral">&nbsp;</span>
1209
- <span class="cline-any cline-yes">31x</span>
1210
- <span class="cline-any cline-neutral">&nbsp;</span>
1211
- <span class="cline-any cline-neutral">&nbsp;</span>
1212
- <span class="cline-any cline-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-neutral">&nbsp;</span>
1215
- <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-neutral">&nbsp;</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-neutral">&nbsp;</span>
1220
- <span class="cline-any cline-neutral">&nbsp;</span>
1221
- <span class="cline-any cline-no">&nbsp;</span>
1222
- <span class="cline-any cline-no">&nbsp;</span>
1223
- <span class="cline-any cline-no">&nbsp;</span>
1224
- <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-no">&nbsp;</span>
1226
- <span class="cline-any cline-no">&nbsp;</span>
1227
- <span class="cline-any cline-no">&nbsp;</span>
1228
- <span class="cline-any cline-no">&nbsp;</span>
1229
- <span class="cline-any cline-no">&nbsp;</span>
1230
- <span class="cline-any cline-neutral">&nbsp;</span>
1231
- <span class="cline-any cline-no">&nbsp;</span>
1232
- <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-neutral">&nbsp;</span>
1236
- <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-no">&nbsp;</span>
1239
- <span class="cline-any cline-no">&nbsp;</span>
1240
- <span class="cline-any cline-no">&nbsp;</span>
1241
- <span class="cline-any cline-no">&nbsp;</span>
1242
- <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-no">&nbsp;</span>
1244
- <span class="cline-any cline-no">&nbsp;</span>
1245
- <span class="cline-any cline-no">&nbsp;</span>
1246
- <span class="cline-any cline-no">&nbsp;</span>
1247
- <span class="cline-any cline-no">&nbsp;</span>
1248
- <span class="cline-any cline-no">&nbsp;</span>
1249
- <span class="cline-any cline-no">&nbsp;</span>
1250
- <span class="cline-any cline-neutral">&nbsp;</span>
1251
- <span class="cline-any cline-no">&nbsp;</span>
1252
- <span class="cline-any cline-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-neutral">&nbsp;</span>
1258
- <span class="cline-any cline-neutral">&nbsp;</span>
1259
- <span class="cline-any cline-neutral">&nbsp;</span>
1260
- <span class="cline-any cline-no">&nbsp;</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-neutral">&nbsp;</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-no">&nbsp;</span>
1265
- <span class="cline-any cline-neutral">&nbsp;</span>
1266
- <span class="cline-any cline-neutral">&nbsp;</span>
1267
- <span class="cline-any cline-no">&nbsp;</span>
1268
- <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-neutral">&nbsp;</span>
1271
- <span class="cline-any cline-no">&nbsp;</span>
1272
- <span class="cline-any cline-no">&nbsp;</span>
1273
- <span class="cline-any cline-no">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-neutral">&nbsp;</span>
1277
- <span class="cline-any cline-neutral">&nbsp;</span>
1278
- <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-neutral">&nbsp;</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-neutral">&nbsp;</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-neutral">&nbsp;</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
- <span class="cline-any cline-neutral">&nbsp;</span>
1291
- <span class="cline-any cline-neutral">&nbsp;</span>
1292
- <span class="cline-any cline-neutral">&nbsp;</span>
1293
- <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-neutral">&nbsp;</span>
1299
- <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-neutral">&nbsp;</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-neutral">&nbsp;</span>
1304
- <span class="cline-any cline-neutral">&nbsp;</span>
1305
- <span class="cline-any cline-neutral">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-neutral">&nbsp;</span>
1310
- <span class="cline-any cline-neutral">&nbsp;</span>
1311
- <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-neutral">&nbsp;</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-neutral">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-neutral">&nbsp;</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-neutral">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-no">&nbsp;</span>
1326
- <span class="cline-any cline-no">&nbsp;</span>
1327
- <span class="cline-any cline-no">&nbsp;</span>
1328
- <span class="cline-any cline-neutral">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
- <span class="cline-any cline-neutral">&nbsp;</span>
1332
- <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-neutral">&nbsp;</span>
1334
- <span class="cline-any cline-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-no">&nbsp;</span>
1336
- <span class="cline-any cline-no">&nbsp;</span>
1337
- <span class="cline-any cline-no">&nbsp;</span>
1338
- <span class="cline-any cline-no">&nbsp;</span>
1339
- <span class="cline-any cline-no">&nbsp;</span>
1340
- <span class="cline-any cline-no">&nbsp;</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-no">&nbsp;</span>
1343
- <span class="cline-any cline-neutral">&nbsp;</span>
1344
- <span class="cline-any cline-neutral">&nbsp;</span>
1345
- <span class="cline-any cline-neutral">&nbsp;</span>
1346
- <span class="cline-any cline-neutral">&nbsp;</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-neutral">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-neutral">&nbsp;</span>
1353
- <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-neutral">&nbsp;</span>
1355
- <span class="cline-any cline-neutral">&nbsp;</span>
1356
- <span class="cline-any cline-neutral">&nbsp;</span>
1357
- <span class="cline-any cline-neutral">&nbsp;</span>
1358
- <span class="cline-any cline-no">&nbsp;</span>
1359
- <span class="cline-any cline-no">&nbsp;</span>
1360
- <span class="cline-any cline-neutral">&nbsp;</span>
1361
- <span class="cline-any cline-neutral">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-no">&nbsp;</span>
1369
- <span class="cline-any cline-no">&nbsp;</span>
1370
- <span class="cline-any cline-no">&nbsp;</span>
1371
- <span class="cline-any cline-no">&nbsp;</span>
1372
- <span class="cline-any cline-neutral">&nbsp;</span>
1373
- <span class="cline-any cline-no">&nbsp;</span>
1374
- <span class="cline-any cline-no">&nbsp;</span>
1375
- <span class="cline-any cline-neutral">&nbsp;</span>
1376
- <span class="cline-any cline-no">&nbsp;</span>
1377
- <span class="cline-any cline-no">&nbsp;</span>
1378
- <span class="cline-any cline-no">&nbsp;</span>
1379
- <span class="cline-any cline-no">&nbsp;</span>
1380
- <span class="cline-any cline-neutral">&nbsp;</span>
1381
- <span class="cline-any cline-neutral">&nbsp;</span>
1382
- <span class="cline-any cline-neutral">&nbsp;</span>
1383
- <span class="cline-any cline-neutral">&nbsp;</span>
1384
- <span class="cline-any cline-no">&nbsp;</span>
1385
- <span class="cline-any cline-no">&nbsp;</span>
1386
- <span class="cline-any cline-neutral">&nbsp;</span>
1387
- <span class="cline-any cline-no">&nbsp;</span>
1388
- <span class="cline-any cline-neutral">&nbsp;</span>
1389
- <span class="cline-any cline-no">&nbsp;</span>
1390
- <span class="cline-any cline-no">&nbsp;</span>
1391
- <span class="cline-any cline-neutral">&nbsp;</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-no">&nbsp;</span>
1395
- <span class="cline-any cline-no">&nbsp;</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-no">&nbsp;</span>
1398
- <span class="cline-any cline-neutral">&nbsp;</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-neutral">&nbsp;</span>
1401
- <span class="cline-any cline-no">&nbsp;</span>
1402
- <span class="cline-any cline-no">&nbsp;</span>
1403
- <span class="cline-any cline-neutral">&nbsp;</span>
1404
- <span class="cline-any cline-no">&nbsp;</span>
1405
- <span class="cline-any cline-no">&nbsp;</span>
1406
- <span class="cline-any cline-neutral">&nbsp;</span>
1407
- <span class="cline-any cline-no">&nbsp;</span>
1408
- <span class="cline-any cline-neutral">&nbsp;</span>
1409
- <span class="cline-any cline-neutral">&nbsp;</span>
1410
- <span class="cline-any cline-neutral">&nbsp;</span>
1411
- <span class="cline-any cline-no">&nbsp;</span>
1412
- <span class="cline-any cline-no">&nbsp;</span>
1413
- <span class="cline-any cline-no">&nbsp;</span>
1414
- <span class="cline-any cline-no">&nbsp;</span>
1415
- <span class="cline-any cline-no">&nbsp;</span>
1416
- <span class="cline-any cline-neutral">&nbsp;</span>
1417
- <span class="cline-any cline-neutral">&nbsp;</span>
1418
- <span class="cline-any cline-no">&nbsp;</span>
1419
- <span class="cline-any cline-neutral">&nbsp;</span>
1420
- <span class="cline-any cline-neutral">&nbsp;</span>
1421
- <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-no">&nbsp;</span>
1423
- <span class="cline-any cline-no">&nbsp;</span>
1424
- <span class="cline-any cline-no">&nbsp;</span>
1425
- <span class="cline-any cline-no">&nbsp;</span>
1426
- <span class="cline-any cline-no">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-no">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-neutral">&nbsp;</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-neutral">&nbsp;</span>
1433
- <span class="cline-any cline-neutral">&nbsp;</span>
1434
- <span class="cline-any cline-neutral">&nbsp;</span>
1435
- <span class="cline-any cline-no">&nbsp;</span>
1436
- <span class="cline-any cline-no">&nbsp;</span>
1437
- <span class="cline-any cline-neutral">&nbsp;</span>
1438
- <span class="cline-any cline-no">&nbsp;</span>
1439
- <span class="cline-any cline-no">&nbsp;</span>
1440
- <span class="cline-any cline-neutral">&nbsp;</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-no">&nbsp;</span>
1443
- <span class="cline-any cline-no">&nbsp;</span>
1444
- <span class="cline-any cline-neutral">&nbsp;</span>
1445
- <span class="cline-any cline-no">&nbsp;</span>
1446
- <span class="cline-any cline-no">&nbsp;</span>
1447
- <span class="cline-any cline-neutral">&nbsp;</span>
1448
- <span class="cline-any cline-no">&nbsp;</span>
1449
- <span class="cline-any cline-no">&nbsp;</span>
1450
- <span class="cline-any cline-no">&nbsp;</span>
1451
- <span class="cline-any cline-neutral">&nbsp;</span>
1452
- <span class="cline-any cline-no">&nbsp;</span>
1453
- <span class="cline-any cline-neutral">&nbsp;</span>
1454
- <span class="cline-any cline-no">&nbsp;</span>
1455
- <span class="cline-any cline-neutral">&nbsp;</span>
1456
- <span class="cline-any cline-neutral">&nbsp;</span>
1457
- <span class="cline-any cline-no">&nbsp;</span>
1458
- <span class="cline-any cline-no">&nbsp;</span>
1459
- <span class="cline-any cline-no">&nbsp;</span>
1460
- <span class="cline-any cline-neutral">&nbsp;</span>
1461
- <span class="cline-any cline-no">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-neutral">&nbsp;</span>
1464
- <span class="cline-any cline-neutral">&nbsp;</span>
1465
- <span class="cline-any cline-no">&nbsp;</span>
1466
- <span class="cline-any cline-no">&nbsp;</span>
1467
- <span class="cline-any cline-no">&nbsp;</span>
1468
- <span class="cline-any cline-neutral">&nbsp;</span>
1469
- <span class="cline-any cline-neutral">&nbsp;</span>
1470
- <span class="cline-any cline-neutral">&nbsp;</span>
1471
- <span class="cline-any cline-no">&nbsp;</span>
1472
- <span class="cline-any cline-no">&nbsp;</span>
1473
- <span class="cline-any cline-no">&nbsp;</span>
1474
- <span class="cline-any cline-no">&nbsp;</span>
1475
- <span class="cline-any cline-no">&nbsp;</span>
1476
- <span class="cline-any cline-no">&nbsp;</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-no">&nbsp;</span>
1479
- <span class="cline-any cline-neutral">&nbsp;</span>
1480
- <span class="cline-any cline-no">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-neutral">&nbsp;</span>
1484
- <span class="cline-any cline-no">&nbsp;</span>
1485
- <span class="cline-any cline-no">&nbsp;</span>
1486
- <span class="cline-any cline-neutral">&nbsp;</span>
1487
- <span class="cline-any cline-neutral">&nbsp;</span>
1488
- <span class="cline-any cline-neutral">&nbsp;</span>
1489
- <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import * as moment from 'moment';
1491
- import 'moment/locale/it.js';
1492
- &nbsp;
1493
- // firebase
1494
- import * as firebase from 'firebase/app';
1495
- import 'firebase/storage';
1496
- &nbsp;
1497
- import { environment } from '../../environments/environment';
1498
- // tslint:disable-next-line:max-line-length
1499
- import {
1500
- MAX_WIDTH_IMAGES,
1501
- STORAGE_PREFIX,
1502
- TYPE_DIRECT,
1503
- TYPE_SUPPORT_GROUP
1504
- } from './constants';
1505
- &nbsp;
1506
- import {
1507
- avatarPlaceholder,
1508
- getColorBck,
1509
- getImageUrlThumbFromFirebasestorage
1510
- } from './utils-user';
1511
- import { time } from 'console';
1512
- import { ConversationModel } from '../models/conversation';
1513
- /**
1514
- * Shortest description for phone and tablet
1515
- * Nota: eseguendo un test su desktop in realtà lo switch avviene a 921px 767px
1516
- */
1517
- export function <span class="fstat-no" title="function not covered" >windowsMatchMedia(</span>) {
1518
- const mq = <span class="cstat-no" title="statement not covered" >window.matchMedia('(max-width: 767px)');</span>
1519
- <span class="cstat-no" title="statement not covered" > if (mq.matches) {</span>
1520
- <span class="cstat-no" title="statement not covered" > console.log('window width is less than 767px ');</span>
1521
- <span class="cstat-no" title="statement not covered" > return false;</span>
1522
- } else {
1523
- <span class="cstat-no" title="statement not covered" > console.log('window width is at least 767px');</span>
1524
- <span class="cstat-no" title="statement not covered" > return true;</span>
1525
- }
1526
- }
1527
- &nbsp;
1528
- /**
1529
- * chiamata da ChatConversationsHandler
1530
- * restituisce url '/conversations'
1531
- * @param tenant
1532
- */
1533
- export function <span class="fstat-no" title="function not covered" >conversationsPathForUserId(</span>tenant, userId) {
1534
- const urlNodeConversations = <span class="cstat-no" title="statement not covered" >'/apps/' + tenant + '/users/' + userId + '/conversations';</span>
1535
- <span class="cstat-no" title="statement not covered" > return urlNodeConversations;</span>
1536
- }
1537
- /**
1538
- * chiamata da ArchivedConversationsHandler
1539
- * restituisce url '/archived_conversations'
1540
- * @param tenant
1541
- */
1542
- export function <span class="fstat-no" title="function not covered" >archivedConversationsPathForUserId(</span>tenant, userId) {
1543
- const urlNodeConversations = <span class="cstat-no" title="statement not covered" >'/apps/' + tenant + '/users/' + userId + '/archived_conversations';</span>
1544
- <span class="cstat-no" title="statement not covered" > return urlNodeConversations;</span>
1545
- }
1546
- /**
1547
- * chiamata da ChatConversationHandler
1548
- * restituisce url '/messages'
1549
- */
1550
- export function <span class="fstat-no" title="function not covered" >conversationMessagesRef(</span>tenant, userId) {
1551
- const urlNode = <span class="cstat-no" title="statement not covered" >'/apps/' + tenant + '/users/' + userId + '/messages/';</span>
1552
- <span class="cstat-no" title="statement not covered" > return urlNode;</span>
1553
- }
1554
- &nbsp;
1555
- /**
1556
- * chiamata da ChatContactsSynchronizer
1557
- * restituisce url '/contacts'
1558
- */
1559
- export function <span class="fstat-no" title="function not covered" >contactsRef(</span>tenant) {
1560
- const urlNodeContacts = <span class="cstat-no" title="statement not covered" >'/apps/' + tenant + '/contacts/';</span>
1561
- <span class="cstat-no" title="statement not covered" > return urlNodeContacts;</span>
1562
- }
1563
- /**
1564
- * calcolo il tempo trascorso tra due date
1565
- * e lo formatto come segue:
1566
- * gg/mm/aaaa;
1567
- * oggi;
1568
- * ieri;
1569
- * giorno della settimana (lunedì, martedì, ecc)
1570
- */
1571
- // export function setHeaderDate_old(timestamp): string {
1572
- // const date = new Date(timestamp);
1573
- // const now: Date = new Date();
1574
- // let labelDays = '';
1575
- // if (now.getFullYear() !== date.getFullYear()) {
1576
- // labelDays = date.getDay() + '/' + date.getMonth() + '/' + date.getFullYear();
1577
- // } else if (now.getMonth() !== date.getMonth()) {
1578
- // labelDays = date.getDay() + '/' + date.getMonth() + '/' + date.getFullYear();
1579
- // } else if (now.getDay() === date.getDay()) {
1580
- // labelDays = LABEL_TODAY;
1581
- // } else if (now.getDay() - date.getDay() === 1) {
1582
- // labelDays = LABEL_TOMORROW;
1583
- // } else {
1584
- // labelDays = convertDayToString(translate, date.getDay());
1585
- // }
1586
- // // se le date sono diverse o la data di riferimento non è impostata
1587
- // // ritorna la data calcolata
1588
- // // altrimenti torna null
1589
- // return labelDays;
1590
- // }
1591
- &nbsp;
1592
- export function <span class="fstat-no" title="function not covered" >setHeaderDate(</span>translate, timestamp): string {
1593
- // const LABEL_TODAY = translate.get('LABEL_TODAY');
1594
- // const LABEL_TOMORROW = translate.get('LABEL_TOMORROW');
1595
- &nbsp;
1596
- const date = <span class="cstat-no" title="statement not covered" >new Date(timestamp);</span>
1597
- const now: Date = <span class="cstat-no" title="statement not covered" >new Date();</span>
1598
- let labelDays = <span class="cstat-no" title="statement not covered" >'';</span>
1599
- <span class="cstat-no" title="statement not covered" > if (now.getFullYear() !== date.getFullYear()) {</span>
1600
- // quest'anno: data esatta
1601
- const month = <span class="cstat-no" title="statement not covered" >date.getMonth() + 1;</span>
1602
- <span class="cstat-no" title="statement not covered" > labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();</span>
1603
- } else <span class="cstat-no" title="statement not covered" >if (now.getMonth() !== date.getMonth()) {</span>
1604
- // questo mese: data esatta
1605
- const month = <span class="cstat-no" title="statement not covered" >date.getMonth() + 1;</span>
1606
- <span class="cstat-no" title="statement not covered" > labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();</span>
1607
- } else <span class="cstat-no" title="statement not covered" >if (now.getDay() === date.getDay()) {</span>
1608
- // oggi: oggi
1609
- <span class="cstat-no" title="statement not covered" > labelDays = moment().calendar(timestamp).split(' ')[0].toLocaleLowerCase();</span>
1610
- // labelDays = LABEL_TODAY;
1611
- } else <span class="cstat-no" title="statement not covered" >if (now.getDay() - date.getDay() === 1) {</span>
1612
- // ieri: ieri
1613
- <span class="cstat-no" title="statement not covered" > labelDays = moment().calendar(timestamp).split(' ')[0].toLocaleLowerCase();</span>
1614
- // labelDays = LABEL_TOMORROW;
1615
- } else {
1616
- // questa settimana: giorno
1617
- <span class="cstat-no" title="statement not covered" > labelDays = convertDayToString(translate, date.getDay());</span>
1618
- }
1619
- // se le date sono diverse o la data di riferimento non è impostata
1620
- // ritorna la data calcolata
1621
- // altrimenti torna null
1622
- <span class="cstat-no" title="statement not covered" > return labelDays;</span>
1623
- }
1624
- &nbsp;
1625
- &nbsp;
1626
- &nbsp;
1627
- /**
1628
- * calcolo il tempo trascorso tra la data passata e adesso
1629
- * utilizzata per calcolare data ultimo accesso utente
1630
- * @param timestamp
1631
- */
1632
- export function <span class="fstat-no" title="function not covered" >setLastDate(</span>translate, timestamp): string {
1633
- &nbsp;
1634
- const LABEL_TODAY = <span class="cstat-no" title="statement not covered" >translate.get('LABEL_TODAY');</span>
1635
- const LABEL_TOMORROW = <span class="cstat-no" title="statement not covered" >translate.get('LABEL_TOMORROW');</span>
1636
- const LABEL_TO = <span class="cstat-no" title="statement not covered" >translate.get('LABEL_TO');</span>
1637
- const LABEL_LAST_ACCESS = <span class="cstat-no" title="statement not covered" >translate.get('LABEL_LAST_ACCESS');</span>
1638
- &nbsp;
1639
- var date = <span class="cstat-no" title="statement not covered" >new Date(timestamp);</span>
1640
- let now: Date = <span class="cstat-no" title="statement not covered" >new Date();</span>
1641
- var labelDays = <span class="cstat-no" title="statement not covered" >'';</span>
1642
- <span class="cstat-no" title="statement not covered" > if (now.getFullYear() !== date.getFullYear()) {</span>
1643
- const month = <span class="cstat-no" title="statement not covered" >date.getMonth() + 1;</span>
1644
- <span class="cstat-no" title="statement not covered" > labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();</span>
1645
- } else <span class="cstat-no" title="statement not covered" >if (now.getMonth() !== date.getMonth()) {</span>
1646
- const month = <span class="cstat-no" title="statement not covered" >date.getMonth() + 1;</span>
1647
- <span class="cstat-no" title="statement not covered" > labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();</span>
1648
- } else <span class="cstat-no" title="statement not covered" >if (now.getDay() === date.getDay()) {</span>
1649
- <span class="cstat-no" title="statement not covered" > labelDays = LABEL_TODAY;</span>
1650
- } else <span class="cstat-no" title="statement not covered" >if (now.getDay() - date.getDay() === 1) {</span>
1651
- <span class="cstat-no" title="statement not covered" > labelDays = LABEL_TOMORROW;</span>
1652
- } else {
1653
- <span class="cstat-no" title="statement not covered" > labelDays = convertDayToString(translate, date.getDay());</span>
1654
- }
1655
- // aggiungo orario
1656
- const orario = <span class="cstat-no" title="statement not covered" >date.getHours() + ':' + (date.getMinutes() &lt; 10 ? '0' : '') + date.getMinutes();</span>
1657
- <span class="cstat-no" title="statement not covered" > return LABEL_LAST_ACCESS + ' ' + labelDays + ' ' + LABEL_TO + ' ' + orario;</span>
1658
- }
1659
- &nbsp;
1660
- /**
1661
- *
1662
- * @param Map
1663
- * @param timestamp
1664
- */
1665
- export function <span class="fstat-no" title="function not covered" >setLastDateWithLabels(</span>translationMap: Map&lt;string, string&gt;, timestamp: string): string {
1666
- const date = <span class="cstat-no" title="statement not covered" >new Date(timestamp);</span>
1667
- const now: Date = <span class="cstat-no" title="statement not covered" >new Date();</span>
1668
- let labelDays = <span class="cstat-no" title="statement not covered" >'';</span>
1669
- <span class="cstat-no" title="statement not covered" > if (now.getFullYear() !== date.getFullYear()) {</span>
1670
- const month = <span class="cstat-no" title="statement not covered" >date.getMonth() + 1;</span>
1671
- <span class="cstat-no" title="statement not covered" > labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();</span>
1672
- } else <span class="cstat-no" title="statement not covered" >if (now.getMonth() !== date.getMonth()) {</span>
1673
- const month = <span class="cstat-no" title="statement not covered" >date.getMonth() + 1;</span>
1674
- <span class="cstat-no" title="statement not covered" > labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();</span>
1675
- } else <span class="cstat-no" title="statement not covered" >if (now.getDay() === date.getDay()) {</span>
1676
- <span class="cstat-no" title="statement not covered" > labelDays = translationMap.get('LABEL_TODAY');</span>
1677
- } else <span class="cstat-no" title="statement not covered" >if (now.getDay() - date.getDay() === 1) {</span>
1678
- <span class="cstat-no" title="statement not covered" > labelDays = translationMap.get('LABEL_TOMORROW');</span>
1679
- } else {
1680
- const days = <span class="cstat-no" title="statement not covered" >translationMap.get('ARRAY_DAYS');</span>
1681
- <span class="cstat-no" title="statement not covered" > labelDays = days[date.getDay()];</span>
1682
- }
1683
- const orario = <span class="cstat-no" title="statement not covered" >date.getHours() + ':' + (date.getMinutes() &lt; 10 ? '0' : '') + date.getMinutes();</span>
1684
- <span class="cstat-no" title="statement not covered" > return translationMap.get('LABEL_LAST_ACCESS') + ' ' + labelDays + ' ' + translationMap.get('LABEL_TO') + ' ' + orario;</span>
1685
- }
1686
- &nbsp;
1687
- /**
1688
- *
1689
- * @param translate
1690
- * @param day
1691
- */
1692
- export function <span class="fstat-no" title="function not covered" >convertDayToString(</span>translate, day) {
1693
- const ARRAY_DAYS = <span class="cstat-no" title="statement not covered" >translate.get('ARRAY_DAYS');</span>
1694
- <span class="cstat-no" title="statement not covered" > return ARRAY_DAYS[day];</span>
1695
- }
1696
- &nbsp;
1697
- export function <span class="fstat-no" title="function not covered" >supports_html5_storage(</span>) {
1698
- <span class="cstat-no" title="statement not covered" > try {</span>
1699
- <span class="cstat-no" title="statement not covered" > return 'localStorage' in window &amp;&amp; window['localStorage'] !== null;</span>
1700
- } catch (e) {
1701
- <span class="cstat-no" title="statement not covered" > console.log('supports_html5_storage &gt; Error :' + e);</span>
1702
- <span class="cstat-no" title="statement not covered" > return false;</span>
1703
- }
1704
- }
1705
- &nbsp;
1706
- export function <span class="fstat-no" title="function not covered" >supports_html5_session(</span>) {
1707
- <span class="cstat-no" title="statement not covered" > try {</span>
1708
- <span class="cstat-no" title="statement not covered" > return 'sessionStorage' in window &amp;&amp; window['sessionStorage'] !== null;</span>
1709
- } catch (e) {
1710
- <span class="cstat-no" title="statement not covered" > console.log('supports_html5_session &gt; Error :' + e);</span>
1711
- <span class="cstat-no" title="statement not covered" > return false;</span>
1712
- }
1713
- }
1714
- &nbsp;
1715
- export function <span class="fstat-no" title="function not covered" >setStoragePrefix(</span>): string{
1716
- let prefix = <span class="cstat-no" title="statement not covered" >STORAGE_PREFIX;</span>
1717
- <span class="cstat-no" title="statement not covered" > try {</span>
1718
- // const sv = 'sv' + environment.shemaVersion + '_';
1719
- // prefix = prefix + sv;
1720
- <span class="cstat-no" title="statement not covered" > prefix = environment.storage_prefix + '_';</span>
1721
- } catch (e) {
1722
- <span class="cstat-no" title="statement not covered" > this.g.wdLog(['&gt; Error :' + e]);</span>
1723
- }
1724
- <span class="cstat-no" title="statement not covered" > return prefix + this.g.projectid + '_';</span>
1725
- }
1726
- &nbsp;
1727
- &nbsp;
1728
- export function <span class="fstat-no" title="function not covered" >convertMessage(</span>messageText) {
1729
- <span class="cstat-no" title="statement not covered" > if (messageText) {</span>
1730
- <span class="cstat-no" title="statement not covered" > messageText = convert(messageText);</span>
1731
- }
1732
- <span class="cstat-no" title="statement not covered" > return messageText;</span>
1733
- }
1734
- &nbsp;
1735
- // function convert(str) {
1736
- // str = str.replace(/&gt;/g, '&amp;gt;');
1737
- // str = str.replace(/&lt;/g, '&amp;lt;');
1738
- // str = str.replace(/"/g, '&amp;quot;');
1739
- // str = str.replace(/'/g, '&amp;#039;');
1740
- // return str;
1741
- // }
1742
- &nbsp;
1743
- &nbsp;
1744
- /**
1745
- * restituiso indice item nell'array con uid == key
1746
- * @param items
1747
- * @param key
1748
- */
1749
- export function <span class="fstat-no" title="function not covered" >searchIndexInArrayForUid(</span>items, key) {
1750
- <span class="cstat-no" title="statement not covered" > return items.findIndex(<span class="fstat-no" title="function not covered" >i </span>=&gt; <span class="cstat-no" title="statement not covered" >i.uid === key);</span></span>
1751
- }
1752
- &nbsp;
1753
- /**
1754
- * trasforma url contenuti nel testo passato in tag &lt;a&gt;
1755
- */
1756
- export function <span class="fstat-no" title="function not covered" >urlify(</span>text) {
1757
- // tslint:disable-next-line:max-line-length
1758
- const urlRegex = <span class="cstat-no" title="statement not covered" >/((?:(http|https|Http|Https|rtsp|Rtsp):\/\/(?:(?:[a-zA-Z0-9\$\-\_\.\+\!\*\'\(\)\,\;\?\&amp;\=]|(?:\%[a-fA-F0-9]{2})){1,64}(?:\:(?:[a-zA-Z0-9\$\-\_\.\+\!\*\'\(\)\,\;\?\&amp;\=]|(?:\%[a-fA-F0-9]{2})){1,25})?\@)?)?((?:(?:[a-zA-Z0-9][a-zA-Z0-9\-]{0,64}\.)+(?:(?:aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|(?:jobs|j[emop])|k[eghimnrwyz]|l[abcikrstuvy]|(?:mil|mobi|museum|m[acdghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om)|(?:pro|p[aefghklmnrstwy])|qa|r[eouw]|s[abcdeghijklmnortuvyz]|(?:tel|travel|t[cdfghjklmnoprtvwz])|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw]))|(?:(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])))(?:\:\d{1,5})?)(\/(?:(?:[a-zA-Z0-9\;\/\?\:\@\&amp;\=\#\~\-\.\+\!\*\'\(\)\,\_])|(?:\%[a-fA-F0-9]{2}))*)?(?:\b|$)/gi;</span>
1759
- <span class="cstat-no" title="statement not covered" > return text.replace(urlRegex, <span class="fstat-no" title="function not covered" >function (u</span>rl) {</span>
1760
- <span class="cstat-no" title="statement not covered" > if (!url.match(/^[a-zA-Z]+:\/\//)) {</span>
1761
- <span class="cstat-no" title="statement not covered" > url = 'http://' + url;</span>
1762
- }
1763
- // url = convertUrlToTag(url);
1764
- <span class="cstat-no" title="statement not covered" > return '&lt;a class="c21-link" href="' + url + '" target="_blank"&gt;' + url + '&lt;/a&gt;';</span>
1765
- });
1766
- }
1767
- &nbsp;
1768
- function <span class="fstat-no" title="function not covered" >convertUrlToTag(</span>url) {
1769
- let popup = <span class="cstat-no" title="statement not covered" >false;</span>
1770
- const TEMP = <span class="cstat-no" title="statement not covered" >url.split('popup=')[1];</span>
1771
- <span class="cstat-no" title="statement not covered" > if (TEMP) { <span class="cstat-no" title="statement not covered" >popup = TEMP.split('&amp;')[0]; </span>}</span>
1772
- // tslint:disable-next-line:no-unused-expression
1773
- <span class="cstat-no" title="statement not covered" > (TEMP === 'true') ? popup = true : popup = false;</span>
1774
- // tslint:disable-next-line:curly
1775
- <span class="cstat-no" title="statement not covered" > if (popup !== true) <span class="cstat-no" title="statement not covered" >return '&lt;a class="c21-link" href="' + url + '" target="_blank"&gt;' + url + '&lt;/a&gt;';</span></span>
1776
- // tslint:disable-next-line:curly
1777
- else <span class="cstat-no" title="statement not covered" >return '&lt;p (click)="openPopup2()"&gt;.&lt;/p&gt;';</span>
1778
- &nbsp;
1779
- //// '&lt;a href="#" onclick="windowContext.open("www.google.it", "_system");" &gt;' + url + '&lt;/a&gt;';
1780
- //// &lt;a href="#" onclick="openPopup(' + url + ')"&gt;' + url + '&lt;/a&gt;';
1781
- }
1782
- &nbsp;
1783
- &nbsp;
1784
- export function <span class="fstat-no" title="function not covered" >isPopupUrl(</span>url) {
1785
- <span class="cstat-no" title="statement not covered" > try {</span>
1786
- const TEMP = <span class="cstat-no" title="statement not covered" >url.split('popup=')[1];</span>
1787
- // può essere seguito da &amp; oppure "
1788
- <span class="cstat-no" title="statement not covered" > if (TEMP) {</span>
1789
- <span class="cstat-no" title="statement not covered" > if (TEMP.startsWith('true')) {</span>
1790
- <span class="cstat-no" title="statement not covered" > return true;</span>
1791
- } else {
1792
- <span class="cstat-no" title="statement not covered" > return false;</span>
1793
- }
1794
- } else {
1795
- <span class="cstat-no" title="statement not covered" > return false;</span>
1796
- }
1797
- } catch (e) {
1798
- <span class="cstat-no" title="statement not covered" > return false;</span>
1799
- }
1800
- }
1801
- &nbsp;
1802
- export function <span class="fstat-no" title="function not covered" >popupUrl(</span>windowContext, html, title) {
1803
- const url = <span class="cstat-no" title="statement not covered" >stripTags(html);</span>
1804
- const w = <span class="cstat-no" title="statement not covered" >600;</span>
1805
- const h = <span class="cstat-no" title="statement not covered" >600;</span> // screen.height - 40;
1806
- const left = <span class="cstat-no" title="statement not covered" >(screen.width / 2) - (w / 2);</span>
1807
- const top = <span class="cstat-no" title="statement not covered" >(screen.height / 2) - (h / 2);</span>
1808
- &nbsp;
1809
- // tslint:disable-next-line:whitespace
1810
- // tslint:disable-next-line:max-line-length
1811
- const newWindow = <span class="cstat-no" title="statement not covered" >windowContext.open(url, '_blank', 'fullscreen=1, titlebar=0, toolbar=no, location=0, status=0, menubar=0, scrollbars=0, resizable=0, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);</span>
1812
- <span class="cstat-no" title="statement not covered" > if (windowContext.focus) {</span>
1813
- <span class="cstat-no" title="statement not covered" > newWindow.focus();</span>
1814
- }
1815
- }
1816
- &nbsp;
1817
- &nbsp;
1818
- export function <span class="fstat-no" title="function not covered" >encodeHTML(</span>str) {
1819
- <span class="cstat-no" title="statement not covered" > return convert(str);</span>
1820
- // return str.replace(/[\u00A0-\u9999&lt;&gt;&amp;](?!#)/gim, function(i) {
1821
- // return '&amp;#' + i.charCodeAt(0) + ';';
1822
- // });
1823
- }
1824
- &nbsp;
1825
- export function <span class="fstat-no" title="function not covered" >decodeHTML(</span>str) {
1826
- &nbsp;
1827
- // return str.replace(/&amp;#([0-9]{1,3});/gi, function(match, num) {
1828
- // // tslint:disable-next-line:radix
1829
- // return String.fromCharCode( parseInt(num) );
1830
- // });
1831
- }
1832
- &nbsp;
1833
- function <span class="fstat-no" title="function not covered" >convert(</span>str) {
1834
- <span class="cstat-no" title="statement not covered" > str = str.replace(/&amp;/g, '&amp;amp;');</span>
1835
- <span class="cstat-no" title="statement not covered" > str = str.replace(/&gt;/g, '&amp;gt;');</span>
1836
- <span class="cstat-no" title="statement not covered" > str = str.replace(/&lt;/g, '&amp;lt;');</span>
1837
- <span class="cstat-no" title="statement not covered" > str = str.replace(/"/g, '&amp;quot;');</span>
1838
- <span class="cstat-no" title="statement not covered" > str = str.replace(/'/g, '&amp;#039;');</span>
1839
- <span class="cstat-no" title="statement not covered" > return str;</span>
1840
- }
1841
- &nbsp;
1842
- export function <span class="fstat-no" title="function not covered" >stripTags(</span>html) {
1843
- <span class="cstat-no" title="statement not covered" > return (html.replace(/&lt;.*?&gt;/g, '')).trim();</span>
1844
- }
1845
- &nbsp;
1846
- export function htmlEntities(str) {
1847
- return String(str)
1848
- .replace(/&amp;/g, '&amp;amp;')
1849
- .replace(/&lt;/g, '&amp;lt;')
1850
- .replace(/&gt;/g, '&amp;gt;')
1851
- .replace(/"/g, '&amp;quot;')
1852
- // .replace(/\n/g, '&lt;br&gt;')
1853
- }
1854
- &nbsp;
1855
- export function <span class="fstat-no" title="function not covered" >htmlEntitiesDecode(</span>str) {
1856
- <span class="cstat-no" title="statement not covered" > return String(str)</span>
1857
- .replace(/&amp;lt;/g, '&lt;')
1858
- .replace(/&amp;gt;/g, '&gt;')
1859
- // .replace(/\n/g, '&lt;br&gt;')
1860
- }
1861
- &nbsp;
1862
- export function replaceEndOfLine(text) {
1863
- // const newText = text.replace(/\n/g, '&lt;br&gt;')
1864
- const newText = text.replace(/[\n\r]/g, '&lt;br&gt;');
1865
- // const newText = text.replace(/&lt;br\s*[\/]?&gt;/gi, '\n')
1866
- return newText;
1867
- }
1868
- &nbsp;
1869
- export function <span class="fstat-no" title="function not covered" >isEmoji(</span>str: string) {
1870
- // tslint:disable-next-line:max-line-length
1871
- const ranges = <span class="cstat-no" title="statement not covered" >['(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32-\ude3a]|[\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])'];</span>
1872
- <span class="cstat-no" title="statement not covered" > if (str.match(ranges.join('|'))) {</span>
1873
- <span class="cstat-no" title="statement not covered" > return true;</span>
1874
- } else {
1875
- <span class="cstat-no" title="statement not covered" > return false;</span>
1876
- }
1877
- }
1878
- &nbsp;
1879
- export function <span class="fstat-no" title="function not covered" >setColorFromString(</span>str: string) {
1880
- const arrayBckColor = <span class="cstat-no" title="statement not covered" >['#fba76f', '#80d066', '#73cdd0', '#ecd074', '#6fb1e4', '#f98bae'];</span>
1881
- let num = <span class="cstat-no" title="statement not covered" >0;</span>
1882
- <span class="cstat-no" title="statement not covered" > if (str) {</span>
1883
- const code = <span class="cstat-no" title="statement not covered" >str.charCodeAt((str.length - 1));</span>
1884
- <span class="cstat-no" title="statement not covered" > num = Math.round(code % arrayBckColor.length);</span>
1885
- }
1886
- <span class="cstat-no" title="statement not covered" > return arrayBckColor[num];</span>
1887
- }
1888
- &nbsp;
1889
- export function <span class="fstat-no" title="function not covered" >detectIfIsMobile(</span>windowContext) {
1890
- const isMobile = <span class="cstat-no" title="statement not covered" >/Android|iPhone/i.test(windowContext.navigator.userAgent);</span>
1891
- <span class="cstat-no" title="statement not covered" > return isMobile;</span>
1892
- }
1893
- &nbsp;
1894
- export function convertColorToRGBA(color, opacity) {
1895
- let result = color;
1896
- // console.log('convertColorToRGBA' + color, opacity);
1897
- if (color &amp;&amp; color.indexOf('#') &gt; -1 ) {
1898
- color = color.replace('#', '');
1899
- const r = parseInt(color.substring(0, 2), 16);
1900
- const g = parseInt(color.substring(2, 4), 16);
1901
- const b = parseInt(color.substring(4, 6), 16);
1902
- result = 'rgba(' + r + ',' + g + ',' + b + ',' + opacity / 100 + ')';
1903
- } else <span class="missing-if-branch" title="if path not taken" >I</span>if (color &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >color.indexOf('rgba') &gt; -1 </span>) {
1904
- const rgb = <span class="cstat-no" title="statement not covered" >color.split(',');</span>
1905
- const r = <span class="cstat-no" title="statement not covered" >rgb[0].substring(5);</span>
1906
- const g = <span class="cstat-no" title="statement not covered" >rgb[1];</span>
1907
- const b = <span class="cstat-no" title="statement not covered" >rgb[2];</span>
1908
- // const b = rgb[2].substring(1, rgb[2].length - 1);
1909
- <span class="cstat-no" title="statement not covered" > result = 'rgba(' + r + ',' + g + ',' + b + ',' + opacity / 100 + ')';</span>
1910
- } else <span class="missing-if-branch" title="if path not taken" >I</span>if (color &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >color.indexOf('rgb(') &gt; -1 </span>) {
1911
- const rgb = <span class="cstat-no" title="statement not covered" >color.split(',');</span>
1912
- // console.log(rgb);
1913
- const r = <span class="cstat-no" title="statement not covered" >rgb[0].substring(4);</span>
1914
- const g = <span class="cstat-no" title="statement not covered" >rgb[1];</span>
1915
- const b = <span class="cstat-no" title="statement not covered" >rgb[2].substring(0, rgb[2].length - 1);</span>
1916
- // console.log(b);
1917
- // console.log(rgb[2].length);
1918
- <span class="cstat-no" title="statement not covered" > result = 'rgba(' + r + ',' + g + ',' + b + ',' + opacity / 100 + ')';</span>
1919
- }
1920
- // console.log('convertColorToRGBA' + color + result);
1921
- return result;
1922
- }
1923
- &nbsp;
1924
- &nbsp;
1925
- // export function setLanguage(windowContext, translatorService) {
1926
- // if (translatorService.getBrowserLanguage(windowContext)) {
1927
- // return translatorService.getBrowserLanguage(windowContext);
1928
- // }
1929
- // return translatorService.getDefaultLanguage(windowContext);
1930
- // }
1931
- &nbsp;
1932
- export function <span class="fstat-no" title="function not covered" >getParameterByName(</span>windowContext: any, name: String) {
1933
- const url = <span class="cstat-no" title="statement not covered" >windowContext.location.href;</span>
1934
- <span class="cstat-no" title="statement not covered" > name = name.replace(/[\[\]]/g, '\\$&amp;');</span>
1935
- const regex = <span class="cstat-no" title="statement not covered" >new RegExp('[?&amp;]' + name + '(=([^&amp;#]*)|&amp;|#|$)'),</span> results = <span class="cstat-no" title="statement not covered" >regex.exec(url);</span>
1936
- // console.log('results----&gt; ', results);
1937
- <span class="cstat-no" title="statement not covered" > if (!results) { <span class="cstat-no" title="statement not covered" >return null; </span>}</span>
1938
- <span class="cstat-no" title="statement not covered" > if (!results[2]) {</span>
1939
- <span class="cstat-no" title="statement not covered" > return 'true';</span>
1940
- } else <span class="cstat-no" title="statement not covered" >if (results[2] === 'false' || results[2] === '0') {</span>
1941
- <span class="cstat-no" title="statement not covered" > return 'false';</span>
1942
- }
1943
- <span class="cstat-no" title="statement not covered" > return decodeURIComponent(results[2].replace(/\+/g, ' '));</span>
1944
- }
1945
- &nbsp;
1946
- &nbsp;
1947
- /**
1948
- * function for dynamic sorting
1949
- */
1950
- export function <span class="fstat-no" title="function not covered" >compareValues(</span>key, <span class="cstat-no" title="statement not covered" >order = 'asc') {</span>
1951
- <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >function (a</span>, b) {</span>
1952
- <span class="cstat-no" title="statement not covered" > if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {</span>
1953
- <span class="cstat-no" title="statement not covered" > return 0;</span>
1954
- }
1955
- const varA = <span class="cstat-no" title="statement not covered" >(typeof a[key] === 'string') ? a[key].toUpperCase() : a[key];</span>
1956
- const varB = <span class="cstat-no" title="statement not covered" >(typeof b[key] === 'string') ? b[key].toUpperCase() : b[key];</span>
1957
- let comparison = <span class="cstat-no" title="statement not covered" >0;</span>
1958
- <span class="cstat-no" title="statement not covered" > if (varA &gt; varB) {</span>
1959
- <span class="cstat-no" title="statement not covered" > comparison = 1;</span>
1960
- } else <span class="cstat-no" title="statement not covered" >if (varA &lt; varB) {</span>
1961
- <span class="cstat-no" title="statement not covered" > comparison = -1;</span>
1962
- }
1963
- <span class="cstat-no" title="statement not covered" > return (</span>
1964
- (order === 'desc') ? (comparison * -1) : comparison
1965
- );
1966
- };
1967
- }
1968
- &nbsp;
1969
- /** */
1970
- export function <span class="fstat-no" title="function not covered" >getNowTimestamp(</span>) {
1971
- //console.log("timestamp:", moment().valueOf());
1972
- <span class="cstat-no" title="statement not covered" > return moment().valueOf();</span>
1973
- }
1974
- &nbsp;
1975
- export function <span class="fstat-no" title="function not covered" >getFormatData(</span>timestamp): string {
1976
- var dateString = <span class="cstat-no" title="statement not covered" >moment.unix(timestamp / 1000).format('L');</span>
1977
- // const date = new Date(timestamp);
1978
- // const labelDays = date.getDay()+"/"+date.getMonth()+"/"+date.getFullYear();
1979
- <span class="cstat-no" title="statement not covered" > return dateString;</span>
1980
- }
1981
- &nbsp;
1982
- export function <span class="fstat-no" title="function not covered" >getTimeLastMessage(</span>timestamp: string) {
1983
- const timestampNumber = <span class="cstat-no" title="statement not covered" >parseInt(timestamp, null) / 1000;</span>
1984
- const time = <span class="cstat-no" title="statement not covered" >getFromNow(timestampNumber);</span>
1985
- <span class="cstat-no" title="statement not covered" > return time;</span>
1986
- }
1987
- &nbsp;
1988
- // export function getFromNow(windowContext, timestamp) {
1989
- // let browserLang = windowContext.navigator.language;
1990
- // if (this.g.lang &amp;&amp; this.g.lang !== '') {
1991
- // browserLang = this.g.lang;
1992
- // }
1993
- // moment.locale(browserLang);
1994
- // // console.log('getFromNow - browserLang: ', browserLang);
1995
- // const date_as_string = moment.unix(timestamp).fromNow();
1996
- // return date_as_string;
1997
- // }
1998
- &nbsp;
1999
- export function <span class="fstat-no" title="function not covered" >getFromNow(</span>timestamp): string {
2000
- // var fullDate = new Date(this.news.date.$date)
2001
- // console.log('FULL DATE: ', fullDate);
2002
- // var month = '' + (fullDate.getMonth() + 1)
2003
- // var day = '' + fullDate.getDate()
2004
- // var year = fullDate.getFullYear()
2005
- // var hour = '' + fullDate.getHours()
2006
- // var min = fullDate.getMinutes()
2007
- // var sec = fullDate.getSeconds()
2008
- // if (month.length &lt; 2) month = '0' + month;
2009
- // if (day.length &lt; 2) day = '0' + day;
2010
- // if (hour.length &lt; 2) hour = '0' + hour;
2011
- // console.log('Giorno ', day)
2012
- // console.log('Mese ', month)
2013
- // console.log('Anno ', year)
2014
- // console.log('Ora ', hour)
2015
- // console.log('Min ', min)
2016
- // console.log('Sec', sec)
2017
- &nbsp;
2018
- // this.dateFromNow = moment(year + month + day, "YYYYMMDD").fromNow()
2019
- // let date_as_string = moment(year + month + day, "YYYYMMDD").fromNow()
2020
- &nbsp;
2021
- // let date_as_string = moment(year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec).fromNow()
2022
- // let date_as_string = moment("2017-07-03 08:33:37").fromNow()
2023
- //var day = new Date(2017, 8, 16);
2024
- //let date_as_string = moment(day);
2025
- &nbsp;
2026
- // var dateString = moment.unix(timestamp).format("MM/DD/YYYY");
2027
- // console.log(moment(dateString).fromNow(), dateString);
2028
- // var date = "Thu Aug 19 2017 19:58:03 GMT+0000 (GMT)";
2029
- // console.log(moment(date).fromNow()); // 1 hour ago
2030
- // console.log(moment.unix(1483228800).fromNow());
2031
- // console.log(moment.unix(1501545600).fromNow());
2032
- //console.log("timestamp: ",timestamp, " - 1483228800 - ", moment.unix(1483228800).fromNow());
2033
- // console.log();
2034
- &nbsp;
2035
- //console.log("window.navigator.language: ", window.navigator.language);
2036
- &nbsp;
2037
- <span class="cstat-no" title="statement not covered" > moment.locale(window.navigator.language);</span>
2038
- let date_as_string = <span class="cstat-no" title="statement not covered" >moment.unix(timestamp).fromNow();</span>
2039
- <span class="cstat-no" title="statement not covered" > return date_as_string;</span>
2040
- }
2041
- &nbsp;
2042
- &nbsp;
2043
- export function <span class="fstat-no" title="function not covered" >getDateDifference(</span>startTimestampDate, endTimestampDate){
2044
- // var startTime = moment.unix(startTimestampDate);
2045
- // var endTime = moment.unix(endTimestampDate);
2046
- &nbsp;
2047
- const startTime = <span class="cstat-no" title="statement not covered" >moment(startTimestampDate);</span>
2048
- const endTime = <span class="cstat-no" title="statement not covered" >moment(endTimestampDate);</span>
2049
- const duration = <span class="cstat-no" title="statement not covered" >moment.duration(endTime.diff(startTime));</span>
2050
- const days = <span class="cstat-no" title="statement not covered" >duration.asDays()</span>
2051
- const hours = <span class="cstat-no" title="statement not covered" >duration.asHours();</span>
2052
- const minutes = <span class="cstat-no" title="statement not covered" >duration.asMinutes();</span>
2053
- &nbsp;
2054
- <span class="cstat-no" title="statement not covered" > return {days, hours, minutes}</span>
2055
- }
2056
- &nbsp;
2057
- &nbsp;
2058
- // export function getUrlImgProfile(uid: string) {
2059
- // const baseLocation = this.g.baseLocation;
2060
- // if (!uid || uid === 'system' ) {
2061
- // return baseLocation + IMG_PROFILE_BOT;
2062
- // } else if ( uid === 'error') {
2063
- // return baseLocation + IMG_PROFILE_DEFAULT;
2064
- // } else {
2065
- // return getImageUrlThumb(uid);
2066
- // }
2067
- // }
2068
- &nbsp;
2069
- export function <span class="fstat-no" title="function not covered" >getImageUrlThumb(</span>FIREBASESTORAGE_BASE_URL_IMAGE: string, uid: string) {
2070
- let imageurl = <span class="cstat-no" title="statement not covered" >FIREBASESTORAGE_BASE_URL_IMAGE + environment['firebaseConfig'].storageBucket + '/o/profiles%2F' + uid + '%2Fthumb_photo.jpg?alt=media';</span>
2071
- <span class="cstat-no" title="statement not covered" > return imageurl;</span>
2072
- }
2073
- &nbsp;
2074
- &nbsp;
2075
- /**
2076
- *
2077
- * @param string
2078
- */
2079
- export function <span class="fstat-no" title="function not covered" >stringToBoolean(</span>string: any): any {
2080
- let val = <span class="cstat-no" title="statement not covered" >string;</span>
2081
- <span class="cstat-no" title="statement not covered" > if (typeof string !== 'string') {</span>
2082
- <span class="cstat-no" title="statement not covered" > val = JSON.stringify(string);</span>
2083
- <span class="cstat-no" title="statement not covered" > return val;</span>
2084
- }
2085
- <span class="cstat-no" title="statement not covered" > if (!string) {</span>
2086
- <span class="cstat-no" title="statement not covered" > return;</span>
2087
- }
2088
- <span class="cstat-no" title="statement not covered" > switch (val.toLowerCase().trim()) {</span>
2089
- case 'true': case 'yes': case '1': <span class="cstat-no" title="statement not covered" >return true;</span>
2090
- case 'false': case 'no': case '0': case null: <span class="cstat-no" title="statement not covered" >return false;</span>
2091
- default: <span class="cstat-no" title="statement not covered" >return val;</span>
2092
- }
2093
- }
2094
- &nbsp;
2095
- export function <span class="fstat-no" title="function not covered" >getUnique(</span>arr, comp) {
2096
- const unique = <span class="cstat-no" title="statement not covered" >arr</span>
2097
- .map(<span class="fstat-no" title="function not covered" >e </span>=&gt; <span class="cstat-no" title="statement not covered" >e[comp])</span>
2098
- // store the keys of the unique objects
2099
- .map(<span class="fstat-no" title="function not covered" >(e</span>, i, final) =&gt; <span class="cstat-no" title="statement not covered" >final.indexOf(e) === i &amp;&amp; i)</span>
2100
- // eliminate the dead keys &amp; store unique objects
2101
- .filter(<span class="fstat-no" title="function not covered" >e </span>=&gt; <span class="cstat-no" title="statement not covered" >arr[e]).</span>map(<span class="fstat-no" title="function not covered" >e </span>=&gt; <span class="cstat-no" title="statement not covered" >arr[e]);</span>
2102
- <span class="cstat-no" title="statement not covered" > return unique;</span>
2103
- }
2104
- &nbsp;
2105
- export function <span class="fstat-no" title="function not covered" >isGroup(</span>conv: ConversationModel) {
2106
- <span class="cstat-no" title="statement not covered" > if (conv &amp;&amp; conv.recipient &amp;&amp; (conv.recipient.startsWith('group-') || conv.recipient.startsWith('support-group'))) {</span>
2107
- <span class="cstat-no" title="statement not covered" > return true</span>
2108
- };
2109
- <span class="cstat-no" title="statement not covered" > return false</span>
2110
- }
2111
- &nbsp;
2112
- export function <span class="fstat-no" title="function not covered" >isJsonString(</span>str) {
2113
- <span class="cstat-no" title="statement not covered" > try {</span>
2114
- <span class="cstat-no" title="statement not covered" > JSON.parse(str);</span>
2115
- } catch (e) {
2116
- <span class="cstat-no" title="statement not covered" > console.log('ERROR to parse JSON object. Pass a valid Json object: ', e)</span>
2117
- <span class="cstat-no" title="statement not covered" > return false;</span>
2118
- }
2119
- <span class="cstat-no" title="statement not covered" > return true;</span>
2120
- }
2121
- &nbsp;
2122
- export function <span class="fstat-no" title="function not covered" >isJsonArray(</span>array){
2123
- var status= <span class="cstat-no" title="statement not covered" >true</span>
2124
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(array)) {</span>
2125
- <span class="cstat-no" title="statement not covered" > array.forEach(<span class="fstat-no" title="function not covered" >function(i</span>tem){</span>
2126
- <span class="cstat-no" title="statement not covered" > if(typeof item !== 'object')</span>
2127
- <span class="cstat-no" title="statement not covered" > return status =false</span>
2128
- })
2129
- }
2130
- <span class="cstat-no" title="statement not covered" > return status</span>
2131
- }
2132
- &nbsp;
2133
- export function <span class="fstat-no" title="function not covered" >validateRegex(</span>regex){
2134
- let validRegex = <span class="cstat-no" title="statement not covered" >regex</span>
2135
- <span class="cstat-no" title="statement not covered" > if(regex.substring(0,1) !== '/')</span>
2136
- <span class="cstat-no" title="statement not covered" > validRegex = '/' + regex</span>
2137
- <span class="cstat-no" title="statement not covered" > if(regex.substring(regex.length -1, regex.length) !== '/'){</span>
2138
- <span class="cstat-no" title="statement not covered" > validRegex = validRegex + '/'</span>
2139
- }
2140
- <span class="cstat-no" title="statement not covered" > return validRegex</span>
2141
- }
2142
- &nbsp;
2143
- &nbsp;
2144
- // https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color
2145
- export function <span class="fstat-no" title="function not covered" >invertColor(</span>hex: string, bw: boolean) {
2146
- let r,g,b;
2147
- <span class="cstat-no" title="statement not covered" > if(hex.includes('rgb')){</span>
2148
- <span class="cstat-no" title="statement not covered" > hex = rgbToHex(hex)</span>
2149
- }
2150
- <span class="cstat-no" title="statement not covered" > if (hex.indexOf('#') === 0) {</span>
2151
- <span class="cstat-no" title="statement not covered" > hex = hex.slice(1);</span>
2152
- }
2153
- // convert 3-digit hex to 6-digits.
2154
- <span class="cstat-no" title="statement not covered" > if (hex.length === 3) {</span>
2155
- <span class="cstat-no" title="statement not covered" > hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];</span>
2156
- }
2157
- <span class="cstat-no" title="statement not covered" > if (hex.length !== 6) {</span>
2158
- <span class="cstat-no" title="statement not covered" > throw new Error('Invalid HEX color.');</span>
2159
- }
2160
- <span class="cstat-no" title="statement not covered" > r = parseInt(hex.slice(0, 2), 16);</span>
2161
- <span class="cstat-no" title="statement not covered" > g = parseInt(hex.slice(2, 4), 16);</span>
2162
- <span class="cstat-no" title="statement not covered" > b = parseInt(hex.slice(4, 6), 16);</span>
2163
- &nbsp;
2164
- <span class="cstat-no" title="statement not covered" > if (bw) {</span>
2165
- // https://stackoverflow.com/a/3943023/112731
2166
- <span class="cstat-no" title="statement not covered" > return (r * 0.299 + g * 0.587 + b * 0.114) &gt; 186 ? '#000000' : '#FFFFFF';</span>
2167
- }
2168
- // invert color components
2169
- <span class="cstat-no" title="statement not covered" > r = (255 - r).toString(16);</span>
2170
- <span class="cstat-no" title="statement not covered" > g = (255 - g).toString(16);</span>
2171
- <span class="cstat-no" title="statement not covered" > b = (255 - b).toString(16);</span>
2172
- // pad each with zeros and return
2173
- <span class="cstat-no" title="statement not covered" > return "#" + padZero(r,2) + padZero(g,2) + padZero(b,2);</span>
2174
- }
2175
- &nbsp;
2176
- function <span class="fstat-no" title="function not covered" >padZero(</span>str, len) {
2177
- <span class="cstat-no" title="statement not covered" > len = len || 2;</span>
2178
- var zeros = <span class="cstat-no" title="statement not covered" >new Array(len).join('0');</span>
2179
- <span class="cstat-no" title="statement not covered" > return (zeros + str).slice(-len);</span>
2180
- }
2181
- &nbsp;
2182
- function <span class="fstat-no" title="function not covered" >rgbToHex(</span>rgb) {
2183
- var rgbRegex = <span class="cstat-no" title="statement not covered" >/^rgb\(\s*(-?\d+)(%?)\s*,\s*(-?\d+)(%?)\s*,\s*(-?\d+)(%?)\s*\)$/;</span>
2184
- var result, r, g, b, hex = <span class="cstat-no" title="statement not covered" >"";</span>
2185
- <span class="cstat-no" title="statement not covered" > if ( (result = rgbRegex.exec(rgb)) ) {</span>
2186
- <span class="cstat-no" title="statement not covered" > r = componentFromStr(result[1], result[2]);</span>
2187
- <span class="cstat-no" title="statement not covered" > g = componentFromStr(result[3], result[4]);</span>
2188
- <span class="cstat-no" title="statement not covered" > b = componentFromStr(result[5], result[6]);</span>
2189
- &nbsp;
2190
- <span class="cstat-no" title="statement not covered" > hex = "#" + (0x1000000 + (r &lt;&lt; 16) + (g &lt;&lt; 8) + b).toString(16).slice(1);</span>
2191
- }
2192
- <span class="cstat-no" title="statement not covered" > return hex;</span>
2193
- }
2194
- &nbsp;
2195
- function <span class="fstat-no" title="function not covered" >componentFromStr(</span>numStr, percent) {
2196
- var num = <span class="cstat-no" title="statement not covered" >Math.max(0, parseInt(numStr, 10));</span>
2197
- <span class="cstat-no" title="statement not covered" > return percent ?</span>
2198
- Math.floor(255 * Math.min(100, num) / 100) : Math.min(255, num);
2199
- }
2200
- &nbsp;
2201
- &nbsp;
2202
- &nbsp;</pre></td></tr></table></pre>
2203
-
2204
- <div class='push'></div><!-- for sticky footer -->
2205
- </div><!-- /wrapper -->
2206
- <div class='footer quiet pad2 space-top1 center small'>
2207
- Code coverage generated by
2208
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2209
- at Tue Nov 29 2022 09:13:07 GMT+0100 (Ora standard dell’Europa centrale)
2210
- </div>
2211
- <script src="../../../prettify.js"></script>
2212
- <script>
2213
- window.onload = function () {
2214
- prettyPrint();
2215
- };
2216
- </script>
2217
- <script src="../../../sorter.js"></script>
2218
- <script src="../../../block-navigation.js"></script>
2219
- </body>
2220
- </html>
2221
-