@epa-wg/custom-element-dist 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/.editorconfig +11 -0
  2. package/.gitignore +26 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/compiler.xml +6 -0
  5. package/.idea/custom-element-dist.iml +13 -0
  6. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  7. package/.idea/misc.xml +6 -0
  8. package/.idea/modules.xml +8 -0
  9. package/.idea/vcs.xml +6 -0
  10. package/.storybook/main.ts +21 -0
  11. package/.storybook/preview.ts +17 -0
  12. package/.vscode/settings.json +24 -0
  13. package/LICENSE +201 -0
  14. package/README.md +32 -0
  15. package/bin/build.sh +8 -0
  16. package/bin/clean.sh +5 -0
  17. package/bin/postinstall.sh +17 -0
  18. package/bin/start.sh +2 -0
  19. package/coverage/base.css +224 -0
  20. package/coverage/block-navigation.js +87 -0
  21. package/coverage/coverage-final.json +16 -0
  22. package/coverage/favicon.png +0 -0
  23. package/coverage/index.html +161 -0
  24. package/coverage/prettify.css +1 -0
  25. package/coverage/prettify.js +2 -0
  26. package/coverage/sort-arrow-sprite.png +0 -0
  27. package/coverage/sorter.js +196 -0
  28. package/coverage/src/coverage.svg +10 -0
  29. package/coverage/src/custom-element/coverage.svg +10 -0
  30. package/coverage/src/custom-element/custom-element.js/coverage.svg +10 -0
  31. package/coverage/src/custom-element/custom-element.js.html +2149 -0
  32. package/coverage/src/custom-element/http-request.js/coverage.svg +10 -0
  33. package/coverage/src/custom-element/http-request.js.html +352 -0
  34. package/coverage/src/custom-element/index.html +161 -0
  35. package/coverage/src/custom-element/local-storage.js/coverage.svg +10 -0
  36. package/coverage/src/custom-element/local-storage.js.html +346 -0
  37. package/coverage/src/custom-element/location-element.js/coverage.svg +10 -0
  38. package/coverage/src/custom-element/location-element.js.html +343 -0
  39. package/coverage/src/index.html +116 -0
  40. package/coverage/src/mocks/coverage.svg +10 -0
  41. package/coverage/src/mocks/handlers.ts/coverage.svg +10 -0
  42. package/coverage/src/mocks/handlers.ts.html +172 -0
  43. package/coverage/src/mocks/index.html +116 -0
  44. package/coverage/src/stories/attributes.stories.ts/coverage.svg +10 -0
  45. package/coverage/src/stories/attributes.stories.ts.html +481 -0
  46. package/coverage/src/stories/coverage.svg +10 -0
  47. package/coverage/src/stories/css.stories.ts/coverage.svg +10 -0
  48. package/coverage/src/stories/css.stories.ts.html +397 -0
  49. package/coverage/src/stories/dom-merge.stories.ts/coverage.svg +10 -0
  50. package/coverage/src/stories/dom-merge.stories.ts.html +424 -0
  51. package/coverage/src/stories/external-template.stories.ts/coverage.svg +10 -0
  52. package/coverage/src/stories/external-template.stories.ts.html +820 -0
  53. package/coverage/src/stories/http-request.stories.ts/coverage.svg +10 -0
  54. package/coverage/src/stories/http-request.stories.ts.html +817 -0
  55. package/coverage/src/stories/index.html +236 -0
  56. package/coverage/src/stories/local-storage.stories.ts/coverage.svg +10 -0
  57. package/coverage/src/stories/local-storage.stories.ts.html +1249 -0
  58. package/coverage/src/stories/location-element.stories.ts/coverage.svg +10 -0
  59. package/coverage/src/stories/location-element.stories.ts.html +484 -0
  60. package/coverage/src/stories/renderPlay.ts/coverage.svg +10 -0
  61. package/coverage/src/stories/renderPlay.ts.html +151 -0
  62. package/coverage/src/stories/slice-events.stories.ts/coverage.svg +10 -0
  63. package/coverage/src/stories/slice-events.stories.ts.html +436 -0
  64. package/coverage/src/sum.ts/coverage.svg +10 -0
  65. package/coverage/src/sum.ts.html +94 -0
  66. package/dist/confused.svg +37 -0
  67. package/dist/custom-element-B4v-KaIh.cjs +53 -0
  68. package/dist/custom-element-_g0GTup2.js +436 -0
  69. package/dist/custom-element-bundle.cjs +1 -0
  70. package/dist/custom-element-bundle.js +31 -0
  71. package/dist/embed-1.html +3 -0
  72. package/dist/html-template.html +126 -0
  73. package/dist/html-template.xhtml +45 -0
  74. package/dist/html-template.xml +45 -0
  75. package/dist/http-request-BOvP4KTl.js +56 -0
  76. package/dist/http-request-DPrY7mGh.cjs +1 -0
  77. package/dist/local-storage-Boafngui.cjs +1 -0
  78. package/dist/local-storage-BqDEu2kF.js +59 -0
  79. package/dist/location-element-2m0gWq_d.cjs +1 -0
  80. package/dist/location-element-nA_wsqBt.js +49 -0
  81. package/dist/mockServiceWorker.js +284 -0
  82. package/dist/tree.xsl +33 -0
  83. package/dist/vite.svg +1 -0
  84. package/index.html +17 -0
  85. package/package.json +97 -0
  86. package/public/confused.svg +37 -0
  87. package/public/embed-1.html +3 -0
  88. package/public/html-template.html +126 -0
  89. package/public/html-template.xhtml +45 -0
  90. package/public/html-template.xml +45 -0
  91. package/public/mockServiceWorker.js +284 -0
  92. package/public/tree.xsl +33 -0
  93. package/public/vite.svg +1 -0
  94. package/src/assets/lit.svg +1 -0
  95. package/src/custom-element/custom-element.d.ts +36 -0
  96. package/src/custom-element/custom-element.js +688 -0
  97. package/src/custom-element/demo/a.html +63 -0
  98. package/src/custom-element/demo/confused.svg +37 -0
  99. package/src/custom-element/demo/data-slices.html +184 -0
  100. package/src/custom-element/demo/dce-social-preview.png +0 -0
  101. package/src/custom-element/demo/demo.css +22 -0
  102. package/src/custom-element/demo/dom-merge.html +123 -0
  103. package/src/custom-element/demo/embed-1.html +3 -0
  104. package/src/custom-element/demo/external-template.html +179 -0
  105. package/src/custom-element/demo/hex-grid-dce.html +183 -0
  106. package/src/custom-element/demo/hex-grid-transform.png +0 -0
  107. package/src/custom-element/demo/hex-grid.html +66 -0
  108. package/src/custom-element/demo/html-template.html +126 -0
  109. package/src/custom-element/demo/html-template.xhtml +45 -0
  110. package/src/custom-element/demo/html-template.xml +45 -0
  111. package/src/custom-element/demo/http-request.html +143 -0
  112. package/src/custom-element/demo/local-storage.html +218 -0
  113. package/src/custom-element/demo/location-element.html +155 -0
  114. package/src/custom-element/demo/logo.png +0 -0
  115. package/src/custom-element/demo/parameters.html +70 -0
  116. package/src/custom-element/demo/s.xml +14 -0
  117. package/src/custom-element/demo/s.xslt +76 -0
  118. package/src/custom-element/demo/scoped-css.html +169 -0
  119. package/src/custom-element/demo/ss.html +57 -0
  120. package/src/custom-element/demo/table.xml +25 -0
  121. package/src/custom-element/demo/table.xsl +293 -0
  122. package/src/custom-element/demo/template.xsl +46 -0
  123. package/src/custom-element/demo/tree.xml +25 -0
  124. package/src/custom-element/demo/tree.xsl +33 -0
  125. package/src/custom-element/demo/wc-square.svg +1 -0
  126. package/src/custom-element/demo/xhtml-template.xhtml +45 -0
  127. package/src/custom-element/demo/z.html +62 -0
  128. package/src/custom-element/demo/z.xml +60 -0
  129. package/src/custom-element/http-request.js +89 -0
  130. package/src/custom-element/ide/IDE.md +31 -0
  131. package/src/custom-element/ide/customData-dce.json +112 -0
  132. package/src/custom-element/ide/customData-xsl.json +1018 -0
  133. package/src/custom-element/ide/web-types-dce.json +111 -0
  134. package/src/custom-element/ide/web-types-xsl.json +867 -0
  135. package/src/custom-element/index.html +168 -0
  136. package/src/custom-element/index.js +7 -0
  137. package/src/custom-element/local-storage.js +87 -0
  138. package/src/custom-element/location-element.js +87 -0
  139. package/src/custom-element.test.ts +10 -0
  140. package/src/index.css +38 -0
  141. package/src/mocks/handlers.ts +29 -0
  142. package/src/mocks/pokemons.mock.ts +13 -0
  143. package/src/stories/Configure.mdx +364 -0
  144. package/src/stories/assets/accessibility.png +0 -0
  145. package/src/stories/assets/accessibility.svg +5 -0
  146. package/src/stories/assets/addon-library.png +0 -0
  147. package/src/stories/assets/assets.png +0 -0
  148. package/src/stories/assets/avif-test-image.avif +0 -0
  149. package/src/stories/assets/context.png +0 -0
  150. package/src/stories/assets/discord.svg +15 -0
  151. package/src/stories/assets/docs.png +0 -0
  152. package/src/stories/assets/figma-plugin.png +0 -0
  153. package/src/stories/assets/github.svg +3 -0
  154. package/src/stories/assets/share.png +0 -0
  155. package/src/stories/assets/styling.png +0 -0
  156. package/src/stories/assets/testing.png +0 -0
  157. package/src/stories/assets/theming.png +0 -0
  158. package/src/stories/assets/tutorials.svg +12 -0
  159. package/src/stories/assets/youtube.svg +4 -0
  160. package/src/stories/attributes.stories.ts +132 -0
  161. package/src/stories/attributes.test.ts +14 -0
  162. package/src/stories/css.stories.ts +104 -0
  163. package/src/stories/css.test.ts +12 -0
  164. package/src/stories/dom-merge.stories.ts +113 -0
  165. package/src/stories/dom-merge.test.ts +12 -0
  166. package/src/stories/external-template.stories.ts +245 -0
  167. package/src/stories/external-template.test.ts +12 -0
  168. package/src/stories/http-request.stories.ts +244 -0
  169. package/src/stories/http-request.test.ts +29 -0
  170. package/src/stories/local-storage.stories.ts +388 -0
  171. package/src/stories/local-storage.test.ts +12 -0
  172. package/src/stories/location-element.stories.ts +133 -0
  173. package/src/stories/location-element.test.ts +14 -0
  174. package/src/stories/renderPlay.ts +22 -0
  175. package/src/stories/slice-events.stories.ts +117 -0
  176. package/src/stories/slice-events.test.ts +12 -0
  177. package/src/sum.test.ts +6 -0
  178. package/src/sum.ts +4 -0
  179. package/src/vite-env.d.ts +1 -0
  180. package/storybook-static/assets/Color-RQJUDNI5-C4yZhNbM.js +1 -0
  181. package/storybook-static/assets/Configure-C7d36rng.js +173 -0
  182. package/storybook-static/assets/DocsRenderer-K4EAMTCU-BLMupvSb.js +2 -0
  183. package/storybook-static/assets/WithTooltip-Y7J54OF7-BAQSPSFk.js +1 -0
  184. package/storybook-static/assets/accessibility-W_h2acOZ.png +0 -0
  185. package/storybook-static/assets/addon-library-BWUCAmyN.png +0 -0
  186. package/storybook-static/assets/attributes.stories-ZB0RTY1d.js +151 -0
  187. package/storybook-static/assets/context-C0qIqeS4.png +0 -0
  188. package/storybook-static/assets/css.stories-CLSX-Xxd.js +86 -0
  189. package/storybook-static/assets/custom-element-BLZZ00dz.js +53 -0
  190. package/storybook-static/assets/docs---vsFbMi.png +0 -0
  191. package/storybook-static/assets/dom-merge.stories-CgHZUABU.js +138 -0
  192. package/storybook-static/assets/entry-preview-CQqNFx4W.js +8 -0
  193. package/storybook-static/assets/entry-preview-docs-CWgqLfd3.js +2 -0
  194. package/storybook-static/assets/external-template.stories-DtSLMxvg.js +316 -0
  195. package/storybook-static/assets/figma-plugin-CH2hELiO.png +0 -0
  196. package/storybook-static/assets/formatter-B5HCVTEV-tKeEfJA9.js +58 -0
  197. package/storybook-static/assets/http-request.stories-CUzlXO89.js +300 -0
  198. package/storybook-static/assets/iframe-gCvlWuoC.js +2 -0
  199. package/storybook-static/assets/index-CBQwM6ST.js +508 -0
  200. package/storybook-static/assets/index-CDavW7r9.js +193 -0
  201. package/storybook-static/assets/index-CQA5dlr6.js +13 -0
  202. package/storybook-static/assets/index-Cc7K62zD.js +3 -0
  203. package/storybook-static/assets/index-DgaNIR0t.js +1 -0
  204. package/storybook-static/assets/index-Dkj0J1ds.js +1 -0
  205. package/storybook-static/assets/index-DnEJ_bKa.js +1 -0
  206. package/storybook-static/assets/index-DrFu-skq.js +6 -0
  207. package/storybook-static/assets/lit-element-B4_0akdT.js +19 -0
  208. package/storybook-static/assets/local-storage.stories-BkO6djDz.js +415 -0
  209. package/storybook-static/assets/location-element.stories-DCIOUd0D.js +108 -0
  210. package/storybook-static/assets/preview-B4GcaC1c.js +1 -0
  211. package/storybook-static/assets/preview-B63p-W8V.js +20 -0
  212. package/storybook-static/assets/preview-BAz7FMXc.js +396 -0
  213. package/storybook-static/assets/preview-BDY5ThwJ.js +1 -0
  214. package/storybook-static/assets/preview-C6t8KBFr.js +1 -0
  215. package/storybook-static/assets/preview-CYD85dwb.js +7 -0
  216. package/storybook-static/assets/preview-CkgAD_DE.js +2 -0
  217. package/storybook-static/assets/preview-D8LadFCz.js +48 -0
  218. package/storybook-static/assets/preview-DNpCpRPf.js +1 -0
  219. package/storybook-static/assets/preview-PxUn-cIn.js +1 -0
  220. package/storybook-static/assets/share-DGA-UcQf.png +0 -0
  221. package/storybook-static/assets/slice-events.stories-DXKjXI37.js +115 -0
  222. package/storybook-static/assets/styling-Bk6zjRzU.png +0 -0
  223. package/storybook-static/assets/syntaxhighlighter-JOJW2KGS-C04pIVD3.js +1 -0
  224. package/storybook-static/assets/testing-cbzR9l9r.png +0 -0
  225. package/storybook-static/assets/theming-D6WJLNoW.png +0 -0
  226. package/storybook-static/assets/tiny-invariant-BxWVcicq.js +1 -0
  227. package/storybook-static/confused.svg +37 -0
  228. package/storybook-static/embed-1.html +3 -0
  229. package/storybook-static/favicon.svg +7 -0
  230. package/storybook-static/html-template.html +126 -0
  231. package/storybook-static/html-template.xhtml +45 -0
  232. package/storybook-static/html-template.xml +45 -0
  233. package/storybook-static/iframe.html +492 -0
  234. package/storybook-static/index.html +163 -0
  235. package/storybook-static/index.json +1 -0
  236. package/storybook-static/mockServiceWorker.js +284 -0
  237. package/storybook-static/project.json +1 -0
  238. package/storybook-static/sb-addons/chromatic-com-storybook-9/manager-bundle.js +327 -0
  239. package/storybook-static/sb-addons/chromatic-com-storybook-9/manager-bundle.js.LEGAL.txt +40 -0
  240. package/storybook-static/sb-addons/essentials-actions-3/manager-bundle.js +3 -0
  241. package/storybook-static/sb-addons/essentials-actions-3/manager-bundle.js.LEGAL.txt +0 -0
  242. package/storybook-static/sb-addons/essentials-backgrounds-4/manager-bundle.js +12 -0
  243. package/storybook-static/sb-addons/essentials-backgrounds-4/manager-bundle.js.LEGAL.txt +0 -0
  244. package/storybook-static/sb-addons/essentials-controls-2/manager-bundle.js +60 -0
  245. package/storybook-static/sb-addons/essentials-controls-2/manager-bundle.js.LEGAL.txt +18 -0
  246. package/storybook-static/sb-addons/essentials-measure-7/manager-bundle.js +3 -0
  247. package/storybook-static/sb-addons/essentials-measure-7/manager-bundle.js.LEGAL.txt +0 -0
  248. package/storybook-static/sb-addons/essentials-outline-8/manager-bundle.js +3 -0
  249. package/storybook-static/sb-addons/essentials-outline-8/manager-bundle.js.LEGAL.txt +0 -0
  250. package/storybook-static/sb-addons/essentials-toolbars-6/manager-bundle.js +3 -0
  251. package/storybook-static/sb-addons/essentials-toolbars-6/manager-bundle.js.LEGAL.txt +0 -0
  252. package/storybook-static/sb-addons/essentials-viewport-5/manager-bundle.js +3 -0
  253. package/storybook-static/sb-addons/essentials-viewport-5/manager-bundle.js.LEGAL.txt +0 -0
  254. package/storybook-static/sb-addons/interactions-10/manager-bundle.js +33 -0
  255. package/storybook-static/sb-addons/interactions-10/manager-bundle.js.LEGAL.txt +0 -0
  256. package/storybook-static/sb-addons/links-1/manager-bundle.js +3 -0
  257. package/storybook-static/sb-addons/links-1/manager-bundle.js.LEGAL.txt +0 -0
  258. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +3 -0
  259. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js.LEGAL.txt +0 -0
  260. package/storybook-static/sb-common-assets/fonts.css +31 -0
  261. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  262. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  263. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  264. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  265. package/storybook-static/sb-manager/WithTooltip-Y7J54OF7-CEHQ77YF.js +1 -0
  266. package/storybook-static/sb-manager/chunk-E3WK6ZOZ.js +234 -0
  267. package/storybook-static/sb-manager/chunk-E6ABNH5R.js +183 -0
  268. package/storybook-static/sb-manager/chunk-FEE35O7J.js +9 -0
  269. package/storybook-static/sb-manager/chunk-S4VOIVUE.js +347 -0
  270. package/storybook-static/sb-manager/chunk-XCO5HRLK.js +6 -0
  271. package/storybook-static/sb-manager/chunk-XP3HGWTR.js +1 -0
  272. package/storybook-static/sb-manager/formatter-B5HCVTEV-7DCBOGO6.js +58 -0
  273. package/storybook-static/sb-manager/globals-module-info.js +1 -0
  274. package/storybook-static/sb-manager/globals-runtime.js +1 -0
  275. package/storybook-static/sb-manager/globals.js +1 -0
  276. package/storybook-static/sb-manager/index.js +1 -0
  277. package/storybook-static/sb-manager/runtime.js +1 -0
  278. package/storybook-static/sb-manager/syntaxhighlighter-JOJW2KGS-VF6EEVPI.js +1 -0
  279. package/storybook-static/sb-preview/globals.js +1 -0
  280. package/storybook-static/sb-preview/runtime.js +139 -0
  281. package/storybook-static/tree.xsl +33 -0
  282. package/storybook-static/vite.svg +1 -0
  283. package/tsconfig.json +25 -0
  284. package/vite.config.js +55 -0
@@ -0,0 +1,2149 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/custom-element/custom-element.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/custom-element</a> custom-element.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">93.95% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>466/496</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">84.67% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>221/261</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">89.65% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>104/116</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">96% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>409/426</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a>
581
+ <a name='L516'></a><a href='#L516'>516</a>
582
+ <a name='L517'></a><a href='#L517'>517</a>
583
+ <a name='L518'></a><a href='#L518'>518</a>
584
+ <a name='L519'></a><a href='#L519'>519</a>
585
+ <a name='L520'></a><a href='#L520'>520</a>
586
+ <a name='L521'></a><a href='#L521'>521</a>
587
+ <a name='L522'></a><a href='#L522'>522</a>
588
+ <a name='L523'></a><a href='#L523'>523</a>
589
+ <a name='L524'></a><a href='#L524'>524</a>
590
+ <a name='L525'></a><a href='#L525'>525</a>
591
+ <a name='L526'></a><a href='#L526'>526</a>
592
+ <a name='L527'></a><a href='#L527'>527</a>
593
+ <a name='L528'></a><a href='#L528'>528</a>
594
+ <a name='L529'></a><a href='#L529'>529</a>
595
+ <a name='L530'></a><a href='#L530'>530</a>
596
+ <a name='L531'></a><a href='#L531'>531</a>
597
+ <a name='L532'></a><a href='#L532'>532</a>
598
+ <a name='L533'></a><a href='#L533'>533</a>
599
+ <a name='L534'></a><a href='#L534'>534</a>
600
+ <a name='L535'></a><a href='#L535'>535</a>
601
+ <a name='L536'></a><a href='#L536'>536</a>
602
+ <a name='L537'></a><a href='#L537'>537</a>
603
+ <a name='L538'></a><a href='#L538'>538</a>
604
+ <a name='L539'></a><a href='#L539'>539</a>
605
+ <a name='L540'></a><a href='#L540'>540</a>
606
+ <a name='L541'></a><a href='#L541'>541</a>
607
+ <a name='L542'></a><a href='#L542'>542</a>
608
+ <a name='L543'></a><a href='#L543'>543</a>
609
+ <a name='L544'></a><a href='#L544'>544</a>
610
+ <a name='L545'></a><a href='#L545'>545</a>
611
+ <a name='L546'></a><a href='#L546'>546</a>
612
+ <a name='L547'></a><a href='#L547'>547</a>
613
+ <a name='L548'></a><a href='#L548'>548</a>
614
+ <a name='L549'></a><a href='#L549'>549</a>
615
+ <a name='L550'></a><a href='#L550'>550</a>
616
+ <a name='L551'></a><a href='#L551'>551</a>
617
+ <a name='L552'></a><a href='#L552'>552</a>
618
+ <a name='L553'></a><a href='#L553'>553</a>
619
+ <a name='L554'></a><a href='#L554'>554</a>
620
+ <a name='L555'></a><a href='#L555'>555</a>
621
+ <a name='L556'></a><a href='#L556'>556</a>
622
+ <a name='L557'></a><a href='#L557'>557</a>
623
+ <a name='L558'></a><a href='#L558'>558</a>
624
+ <a name='L559'></a><a href='#L559'>559</a>
625
+ <a name='L560'></a><a href='#L560'>560</a>
626
+ <a name='L561'></a><a href='#L561'>561</a>
627
+ <a name='L562'></a><a href='#L562'>562</a>
628
+ <a name='L563'></a><a href='#L563'>563</a>
629
+ <a name='L564'></a><a href='#L564'>564</a>
630
+ <a name='L565'></a><a href='#L565'>565</a>
631
+ <a name='L566'></a><a href='#L566'>566</a>
632
+ <a name='L567'></a><a href='#L567'>567</a>
633
+ <a name='L568'></a><a href='#L568'>568</a>
634
+ <a name='L569'></a><a href='#L569'>569</a>
635
+ <a name='L570'></a><a href='#L570'>570</a>
636
+ <a name='L571'></a><a href='#L571'>571</a>
637
+ <a name='L572'></a><a href='#L572'>572</a>
638
+ <a name='L573'></a><a href='#L573'>573</a>
639
+ <a name='L574'></a><a href='#L574'>574</a>
640
+ <a name='L575'></a><a href='#L575'>575</a>
641
+ <a name='L576'></a><a href='#L576'>576</a>
642
+ <a name='L577'></a><a href='#L577'>577</a>
643
+ <a name='L578'></a><a href='#L578'>578</a>
644
+ <a name='L579'></a><a href='#L579'>579</a>
645
+ <a name='L580'></a><a href='#L580'>580</a>
646
+ <a name='L581'></a><a href='#L581'>581</a>
647
+ <a name='L582'></a><a href='#L582'>582</a>
648
+ <a name='L583'></a><a href='#L583'>583</a>
649
+ <a name='L584'></a><a href='#L584'>584</a>
650
+ <a name='L585'></a><a href='#L585'>585</a>
651
+ <a name='L586'></a><a href='#L586'>586</a>
652
+ <a name='L587'></a><a href='#L587'>587</a>
653
+ <a name='L588'></a><a href='#L588'>588</a>
654
+ <a name='L589'></a><a href='#L589'>589</a>
655
+ <a name='L590'></a><a href='#L590'>590</a>
656
+ <a name='L591'></a><a href='#L591'>591</a>
657
+ <a name='L592'></a><a href='#L592'>592</a>
658
+ <a name='L593'></a><a href='#L593'>593</a>
659
+ <a name='L594'></a><a href='#L594'>594</a>
660
+ <a name='L595'></a><a href='#L595'>595</a>
661
+ <a name='L596'></a><a href='#L596'>596</a>
662
+ <a name='L597'></a><a href='#L597'>597</a>
663
+ <a name='L598'></a><a href='#L598'>598</a>
664
+ <a name='L599'></a><a href='#L599'>599</a>
665
+ <a name='L600'></a><a href='#L600'>600</a>
666
+ <a name='L601'></a><a href='#L601'>601</a>
667
+ <a name='L602'></a><a href='#L602'>602</a>
668
+ <a name='L603'></a><a href='#L603'>603</a>
669
+ <a name='L604'></a><a href='#L604'>604</a>
670
+ <a name='L605'></a><a href='#L605'>605</a>
671
+ <a name='L606'></a><a href='#L606'>606</a>
672
+ <a name='L607'></a><a href='#L607'>607</a>
673
+ <a name='L608'></a><a href='#L608'>608</a>
674
+ <a name='L609'></a><a href='#L609'>609</a>
675
+ <a name='L610'></a><a href='#L610'>610</a>
676
+ <a name='L611'></a><a href='#L611'>611</a>
677
+ <a name='L612'></a><a href='#L612'>612</a>
678
+ <a name='L613'></a><a href='#L613'>613</a>
679
+ <a name='L614'></a><a href='#L614'>614</a>
680
+ <a name='L615'></a><a href='#L615'>615</a>
681
+ <a name='L616'></a><a href='#L616'>616</a>
682
+ <a name='L617'></a><a href='#L617'>617</a>
683
+ <a name='L618'></a><a href='#L618'>618</a>
684
+ <a name='L619'></a><a href='#L619'>619</a>
685
+ <a name='L620'></a><a href='#L620'>620</a>
686
+ <a name='L621'></a><a href='#L621'>621</a>
687
+ <a name='L622'></a><a href='#L622'>622</a>
688
+ <a name='L623'></a><a href='#L623'>623</a>
689
+ <a name='L624'></a><a href='#L624'>624</a>
690
+ <a name='L625'></a><a href='#L625'>625</a>
691
+ <a name='L626'></a><a href='#L626'>626</a>
692
+ <a name='L627'></a><a href='#L627'>627</a>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a>
695
+ <a name='L630'></a><a href='#L630'>630</a>
696
+ <a name='L631'></a><a href='#L631'>631</a>
697
+ <a name='L632'></a><a href='#L632'>632</a>
698
+ <a name='L633'></a><a href='#L633'>633</a>
699
+ <a name='L634'></a><a href='#L634'>634</a>
700
+ <a name='L635'></a><a href='#L635'>635</a>
701
+ <a name='L636'></a><a href='#L636'>636</a>
702
+ <a name='L637'></a><a href='#L637'>637</a>
703
+ <a name='L638'></a><a href='#L638'>638</a>
704
+ <a name='L639'></a><a href='#L639'>639</a>
705
+ <a name='L640'></a><a href='#L640'>640</a>
706
+ <a name='L641'></a><a href='#L641'>641</a>
707
+ <a name='L642'></a><a href='#L642'>642</a>
708
+ <a name='L643'></a><a href='#L643'>643</a>
709
+ <a name='L644'></a><a href='#L644'>644</a>
710
+ <a name='L645'></a><a href='#L645'>645</a>
711
+ <a name='L646'></a><a href='#L646'>646</a>
712
+ <a name='L647'></a><a href='#L647'>647</a>
713
+ <a name='L648'></a><a href='#L648'>648</a>
714
+ <a name='L649'></a><a href='#L649'>649</a>
715
+ <a name='L650'></a><a href='#L650'>650</a>
716
+ <a name='L651'></a><a href='#L651'>651</a>
717
+ <a name='L652'></a><a href='#L652'>652</a>
718
+ <a name='L653'></a><a href='#L653'>653</a>
719
+ <a name='L654'></a><a href='#L654'>654</a>
720
+ <a name='L655'></a><a href='#L655'>655</a>
721
+ <a name='L656'></a><a href='#L656'>656</a>
722
+ <a name='L657'></a><a href='#L657'>657</a>
723
+ <a name='L658'></a><a href='#L658'>658</a>
724
+ <a name='L659'></a><a href='#L659'>659</a>
725
+ <a name='L660'></a><a href='#L660'>660</a>
726
+ <a name='L661'></a><a href='#L661'>661</a>
727
+ <a name='L662'></a><a href='#L662'>662</a>
728
+ <a name='L663'></a><a href='#L663'>663</a>
729
+ <a name='L664'></a><a href='#L664'>664</a>
730
+ <a name='L665'></a><a href='#L665'>665</a>
731
+ <a name='L666'></a><a href='#L666'>666</a>
732
+ <a name='L667'></a><a href='#L667'>667</a>
733
+ <a name='L668'></a><a href='#L668'>668</a>
734
+ <a name='L669'></a><a href='#L669'>669</a>
735
+ <a name='L670'></a><a href='#L670'>670</a>
736
+ <a name='L671'></a><a href='#L671'>671</a>
737
+ <a name='L672'></a><a href='#L672'>672</a>
738
+ <a name='L673'></a><a href='#L673'>673</a>
739
+ <a name='L674'></a><a href='#L674'>674</a>
740
+ <a name='L675'></a><a href='#L675'>675</a>
741
+ <a name='L676'></a><a href='#L676'>676</a>
742
+ <a name='L677'></a><a href='#L677'>677</a>
743
+ <a name='L678'></a><a href='#L678'>678</a>
744
+ <a name='L679'></a><a href='#L679'>679</a>
745
+ <a name='L680'></a><a href='#L680'>680</a>
746
+ <a name='L681'></a><a href='#L681'>681</a>
747
+ <a name='L682'></a><a href='#L682'>682</a>
748
+ <a name='L683'></a><a href='#L683'>683</a>
749
+ <a name='L684'></a><a href='#L684'>684</a>
750
+ <a name='L685'></a><a href='#L685'>685</a>
751
+ <a name='L686'></a><a href='#L686'>686</a>
752
+ <a name='L687'></a><a href='#L687'>687</a>
753
+ <a name='L688'></a><a href='#L688'>688</a>
754
+ <a name='L689'></a><a href='#L689'>689</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">9x</span>
755
+ <span class="cline-any cline-yes">9x</span>
756
+ <span class="cline-any cline-yes">9x</span>
757
+ <span class="cline-any cline-yes">9x</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-neutral">&nbsp;</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span>
761
+ <span class="cline-any cline-yes">12837x</span>
762
+ <span class="cline-any cline-yes">9331x</span>
763
+ <span class="cline-any cline-yes">135x</span>
764
+ <span class="cline-any cline-yes">4221x</span>
765
+ <span class="cline-any cline-yes">779x</span>
766
+ <span class="cline-any cline-yes">1747x</span>
767
+ <span class="cline-any cline-yes">28x</span>
768
+ <span class="cline-any cline-yes">20x</span>
769
+ <span class="cline-any cline-yes">9x</span>
770
+ <span class="cline-any cline-yes">35x</span>
771
+ <span class="cline-any cline-yes">35x</span>
772
+ <span class="cline-any cline-yes">9x</span>
773
+ <span class="cline-any cline-yes">12x</span>
774
+ <span class="cline-any cline-yes">12x</span>
775
+ <span class="cline-any cline-yes">33x</span>
776
+ <span class="cline-any cline-yes">12x</span>
777
+ <span class="cline-any cline-yes">3x</span>
778
+ <span class="cline-any cline-yes">12x</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-yes">146x</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-no">&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-yes">164x</span>
798
+ <span class="cline-any cline-yes">164x</span>
799
+ <span class="cline-any cline-yes">164x</span>
800
+ <span class="cline-any cline-yes">164x</span>
801
+ <span class="cline-any cline-neutral">&nbsp;</span>
802
+ <span class="cline-any cline-yes">164x</span>
803
+ <span class="cline-any cline-yes">442x</span>
804
+ <span class="cline-any cline-yes">164x</span>
805
+ <span class="cline-any cline-neutral">&nbsp;</span>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
807
+ <span class="cline-any cline-neutral">&nbsp;</span>
808
+ <span class="cline-any cline-neutral">&nbsp;</span>
809
+ <span class="cline-any cline-neutral">&nbsp;</span>
810
+ <span class="cline-any cline-yes">343x</span>
811
+ <span class="cline-any cline-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-yes">343x</span>
813
+ <span class="cline-any cline-yes">184x</span>
814
+ <span class="cline-any cline-yes">343x</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-yes">343x</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-yes">516x</span>
822
+ <span class="cline-any cline-yes">516x</span>
823
+ <span class="cline-any cline-yes">516x</span>
824
+ <span class="cline-any cline-yes">10x</span>
825
+ <span class="cline-any cline-yes">506x</span>
826
+ <span class="cline-any cline-yes">21x</span>
827
+ <span class="cline-any cline-neutral">&nbsp;</span>
828
+ <span class="cline-any cline-yes">485x</span>
829
+ <span class="cline-any cline-yes">16x</span>
830
+ <span class="cline-any cline-yes">41x</span>
831
+ <span class="cline-any cline-yes">16x</span>
832
+ <span class="cline-any cline-neutral">&nbsp;</span>
833
+ <span class="cline-any cline-yes">469x</span>
834
+ <span class="cline-any cline-yes">469x</span>
835
+ <span class="cline-any cline-yes">4221x</span>
836
+ <span class="cline-any cline-yes">1412x</span>
837
+ <span class="cline-any cline-neutral">&nbsp;</span>
838
+ <span class="cline-any cline-yes">2809x</span>
839
+ <span class="cline-any cline-yes">2537x</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-yes">272x</span>
842
+ <span class="cline-any cline-yes">469x</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-yes">2926x</span>
848
+ <span class="cline-any cline-yes">1471x</span>
849
+ <span class="cline-any cline-no">&nbsp;</span>
850
+ <span class="cline-any cline-yes">1471x</span>
851
+ <span class="cline-any cline-yes">1471x</span>
852
+ <span class="cline-any cline-yes">1471x</span>
853
+ <span class="cline-any cline-yes">1471x</span>
854
+ <span class="cline-any cline-yes">1471x</span>
855
+ <span class="cline-any cline-yes">1471x</span>
856
+ <span class="cline-any cline-yes">147x</span>
857
+ <span class="cline-any cline-yes">12x</span>
858
+ <span class="cline-any cline-yes">147x</span>
859
+ <span class="cline-any cline-yes">147x</span>
860
+ <span class="cline-any cline-yes">147x</span>
861
+ <span class="cline-any cline-yes">147x</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-yes">1471x</span>
864
+ <span class="cline-any cline-yes">1326x</span>
865
+ <span class="cline-any cline-yes">1471x</span>
866
+ <span class="cline-any cline-yes">1471x</span>
867
+ <span class="cline-any cline-yes">1485x</span>
868
+ <span class="cline-any cline-yes">1471x</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-yes">38x</span>
874
+ <span class="cline-any cline-yes">37x</span>
875
+ <span class="cline-any cline-yes">37x</span>
876
+ <span class="cline-any cline-yes">1626x</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-yes">38x</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-yes">38x</span>
884
+ <span class="cline-any cline-yes">3x</span>
885
+ <span class="cline-any cline-yes">35x</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-neutral">&nbsp;</span>
889
+ <span class="cline-any cline-neutral">&nbsp;</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-neutral">&nbsp;</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-neutral">&nbsp;</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-neutral">&nbsp;</span>
897
+ <span class="cline-any cline-neutral">&nbsp;</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
899
+ <span class="cline-any cline-yes">35x</span>
900
+ <span class="cline-any cline-yes">35x</span>
901
+ <span class="cline-any cline-neutral">&nbsp;</span>
902
+ <span class="cline-any cline-yes">35x</span>
903
+ <span class="cline-any cline-yes">35x</span>
904
+ <span class="cline-any cline-yes">1225x</span>
905
+ <span class="cline-any cline-yes">35x</span>
906
+ <span class="cline-any cline-yes">35x</span>
907
+ <span class="cline-any cline-yes">35x</span>
908
+ <span class="cline-any cline-yes">35x</span>
909
+ <span class="cline-any cline-yes">35x</span>
910
+ <span class="cline-any cline-yes">35x</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-yes">35x</span>
913
+ <span class="cline-any cline-yes">23x</span>
914
+ <span class="cline-any cline-yes">391x</span>
915
+ <span class="cline-any cline-yes">23x</span>
916
+ <span class="cline-any cline-neutral">&nbsp;</span>
917
+ <span class="cline-any cline-yes">12x</span>
918
+ <span class="cline-any cline-neutral">&nbsp;</span>
919
+ <span class="cline-any cline-yes">35x</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-neutral">&nbsp;</span>
923
+ <span class="cline-any cline-neutral">&nbsp;</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-neutral">&nbsp;</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
929
+ <span class="cline-any cline-neutral">&nbsp;</span>
930
+ <span class="cline-any cline-neutral">&nbsp;</span>
931
+ <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-neutral">&nbsp;</span>
933
+ <span class="cline-any cline-neutral">&nbsp;</span>
934
+ <span class="cline-any cline-neutral">&nbsp;</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-neutral">&nbsp;</span>
937
+ <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-neutral">&nbsp;</span>
939
+ <span class="cline-any cline-neutral">&nbsp;</span>
940
+ <span class="cline-any cline-neutral">&nbsp;</span>
941
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
945
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
955
+ <span class="cline-any cline-neutral">&nbsp;</span>
956
+ <span class="cline-any cline-neutral">&nbsp;</span>
957
+ <span class="cline-any cline-yes">35x</span>
958
+ <span class="cline-any cline-neutral">&nbsp;</span>
959
+ <span class="cline-any cline-yes">35x</span>
960
+ <span class="cline-any cline-yes">76x</span>
961
+ <span class="cline-any cline-yes">35x</span>
962
+ <span class="cline-any cline-yes">35x</span>
963
+ <span class="cline-any cline-no">&nbsp;</span>
964
+ <span class="cline-any cline-yes">35x</span>
965
+ <span class="cline-any cline-yes">35x</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
967
+ <span class="cline-any cline-yes">9x</span>
968
+ <span class="cline-any cline-yes">9x</span>
969
+ <span class="cline-any cline-yes">9x</span>
970
+ <span class="cline-any cline-yes">9x</span>
971
+ <span class="cline-any cline-yes">9x</span>
972
+ <span class="cline-any cline-yes">3x</span>
973
+ <span class="cline-any cline-yes">3x</span>
974
+ <span class="cline-any cline-yes">3x</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-yes">9x</span>
978
+ <span class="cline-any cline-yes">6x</span>
979
+ <span class="cline-any cline-yes">6x</span>
980
+ <span class="cline-any cline-yes">6x</span>
981
+ <span class="cline-any cline-yes">6x</span>
982
+ <span class="cline-any cline-yes">6x</span>
983
+ <span class="cline-any cline-yes">6x</span>
984
+ <span class="cline-any cline-yes">6x</span>
985
+ <span class="cline-any cline-neutral">&nbsp;</span>
986
+ <span class="cline-any cline-yes">3x</span>
987
+ <span class="cline-any cline-yes">9x</span>
988
+ <span class="cline-any cline-yes">9x</span>
989
+ <span class="cline-any cline-yes">9x</span>
990
+ <span class="cline-any cline-yes">9x</span>
991
+ <span class="cline-any cline-neutral">&nbsp;</span>
992
+ <span class="cline-any cline-yes">35x</span>
993
+ <span class="cline-any cline-yes">7x</span>
994
+ <span class="cline-any cline-yes">7x</span>
995
+ <span class="cline-any cline-yes">7x</span>
996
+ <span class="cline-any cline-neutral">&nbsp;</span>
997
+ <span class="cline-any cline-yes">35x</span>
998
+ <span class="cline-any cline-yes">35x</span>
999
+ <span class="cline-any cline-neutral">&nbsp;</span>
1000
+ <span class="cline-any cline-yes">35x</span>
1001
+ <span class="cline-any cline-yes">35x</span>
1002
+ <span class="cline-any cline-neutral">&nbsp;</span>
1003
+ <span class="cline-any cline-yes">35x</span>
1004
+ <span class="cline-any cline-yes">35x</span>
1005
+ <span class="cline-any cline-yes">4x</span>
1006
+ <span class="cline-any cline-yes">4x</span>
1007
+ <span class="cline-any cline-yes">4x</span>
1008
+ <span class="cline-any cline-yes">4x</span>
1009
+ <span class="cline-any cline-yes">4x</span>
1010
+ <span class="cline-any cline-yes">4x</span>
1011
+ <span class="cline-any cline-neutral">&nbsp;</span>
1012
+ <span class="cline-any cline-neutral">&nbsp;</span>
1013
+ <span class="cline-any cline-yes">35x</span>
1014
+ <span class="cline-any cline-neutral">&nbsp;</span>
1015
+ <span class="cline-any cline-yes">35x</span>
1016
+ <span class="cline-any cline-yes">35x</span>
1017
+ <span class="cline-any cline-yes">35x</span>
1018
+ <span class="cline-any cline-neutral">&nbsp;</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-neutral">&nbsp;</span>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
1022
+ <span class="cline-any cline-yes">13x</span>
1023
+ <span class="cline-any cline-yes">13x</span>
1024
+ <span class="cline-any cline-yes">13x</span>
1025
+ <span class="cline-any cline-yes">13x</span>
1026
+ <span class="cline-any cline-neutral">&nbsp;</span>
1027
+ <span class="cline-any cline-yes">13x</span>
1028
+ <span class="cline-any cline-yes">13x</span>
1029
+ <span class="cline-any cline-yes">13x</span>
1030
+ <span class="cline-any cline-yes">13x</span>
1031
+ <span class="cline-any cline-neutral">&nbsp;</span>
1032
+ <span class="cline-any cline-yes">13x</span>
1033
+ <span class="cline-any cline-neutral">&nbsp;</span>
1034
+ <span class="cline-any cline-yes">13x</span>
1035
+ <span class="cline-any cline-neutral">&nbsp;</span>
1036
+ <span class="cline-any cline-yes">13x</span>
1037
+ <span class="cline-any cline-neutral">&nbsp;</span>
1038
+ <span class="cline-any cline-neutral">&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-yes">7x</span>
1042
+ <span class="cline-any cline-yes">2x</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-yes">5x</span>
1045
+ <span class="cline-any cline-neutral">&nbsp;</span>
1046
+ <span class="cline-any cline-yes">3x</span>
1047
+ <span class="cline-any cline-neutral">&nbsp;</span>
1048
+ <span class="cline-any cline-yes">2x</span>
1049
+ <span class="cline-any cline-yes">2x</span>
1050
+ <span class="cline-any cline-yes">1x</span>
1051
+ <span class="cline-any cline-yes">1x</span>
1052
+ <span class="cline-any cline-neutral">&nbsp;</span>
1053
+ <span class="cline-any cline-neutral">&nbsp;</span>
1054
+ <span class="cline-any cline-yes">9x</span>
1055
+ <span class="cline-any cline-yes">160x</span>
1056
+ <span class="cline-any cline-yes">160x</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-no">&nbsp;</span>
1061
+ <span class="cline-any cline-neutral">&nbsp;</span>
1062
+ <span class="cline-any cline-yes">512x</span>
1063
+ <span class="cline-any cline-neutral">&nbsp;</span>
1064
+ <span class="cline-any cline-neutral">&nbsp;</span>
1065
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1074
+ <span class="cline-any cline-neutral">&nbsp;</span>
1075
+ <span class="cline-any cline-neutral">&nbsp;</span>
1076
+ <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-neutral">&nbsp;</span>
1079
+ <span class="cline-any cline-neutral">&nbsp;</span>
1080
+ <span class="cline-any cline-yes">160x</span>
1081
+ <span class="cline-any cline-neutral">&nbsp;</span>
1082
+ <span class="cline-any cline-yes">160x</span>
1083
+ <span class="cline-any cline-yes">160x</span>
1084
+ <span class="cline-any cline-yes">160x</span>
1085
+ <span class="cline-any cline-yes">283x</span>
1086
+ <span class="cline-any cline-yes">904x</span>
1087
+ <span class="cline-any cline-yes">257x</span>
1088
+ <span class="cline-any cline-yes">160x</span>
1089
+ <span class="cline-any cline-yes">160x</span>
1090
+ <span class="cline-any cline-yes">160x</span>
1091
+ <span class="cline-any cline-yes">14x</span>
1092
+ <span class="cline-any cline-yes">3x</span>
1093
+ <span class="cline-any cline-neutral">&nbsp;</span>
1094
+ <span class="cline-any cline-yes">11x</span>
1095
+ <span class="cline-any cline-yes">14x</span>
1096
+ <span class="cline-any cline-yes">14x</span>
1097
+ <span class="cline-any cline-yes">14x</span>
1098
+ <span class="cline-any cline-neutral">&nbsp;</span>
1099
+ <span class="cline-any cline-yes">146x</span>
1100
+ <span class="cline-any cline-yes">146x</span>
1101
+ <span class="cline-any cline-yes">146x</span>
1102
+ <span class="cline-any cline-yes">11x</span>
1103
+ <span class="cline-any cline-neutral">&nbsp;</span>
1104
+ <span class="cline-any cline-yes">135x</span>
1105
+ <span class="cline-any cline-yes">92x</span>
1106
+ <span class="cline-any cline-neutral">&nbsp;</span>
1107
+ <span class="cline-any cline-yes">43x</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-yes">1487x</span>
1114
+ <span class="cline-any cline-yes">1487x</span>
1115
+ <span class="cline-any cline-neutral">&nbsp;</span>
1116
+ <span class="cline-any cline-yes">9x</span>
1117
+ <span class="cline-any cline-yes">9x</span>
1118
+ <span class="cline-any cline-neutral">&nbsp;</span>
1119
+ <span class="cline-any cline-yes">38x</span>
1120
+ <span class="cline-any cline-yes">22x</span>
1121
+ <span class="cline-any cline-yes">16x</span>
1122
+ <span class="cline-any cline-yes">3x</span>
1123
+ <span class="cline-any cline-yes">3x</span>
1124
+ <span class="cline-any cline-yes">3x</span>
1125
+ <span class="cline-any cline-yes">3x</span>
1126
+ <span class="cline-any cline-yes">3x</span>
1127
+ <span class="cline-any cline-no">&nbsp;</span>
1128
+ <span class="cline-any cline-no">&nbsp;</span>
1129
+ <span class="cline-any cline-neutral">&nbsp;</span>
1130
+ <span class="cline-any cline-yes">13x</span>
1131
+ <span class="cline-any cline-neutral">&nbsp;</span>
1132
+ <span class="cline-any cline-yes">13x</span>
1133
+ <span class="cline-any cline-yes">13x</span>
1134
+ <span class="cline-any cline-yes">13x</span>
1135
+ <span class="cline-any cline-yes">5x</span>
1136
+ <span class="cline-any cline-yes">5x</span>
1137
+ <span class="cline-any cline-yes">4x</span>
1138
+ <span class="cline-any cline-yes">1x</span>
1139
+ <span class="cline-any cline-neutral">&nbsp;</span>
1140
+ <span class="cline-any cline-yes">8x</span>
1141
+ <span class="cline-any cline-no">&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-yes">1987x</span>
1145
+ <span class="cline-any cline-neutral">&nbsp;</span>
1146
+ <span class="cline-any cline-no">&nbsp;</span>
1147
+ <span class="cline-any cline-no">&nbsp;</span>
1148
+ <span class="cline-any cline-neutral">&nbsp;</span>
1149
+ <span class="cline-any cline-yes">1987x</span>
1150
+ <span class="cline-any cline-yes">5018x</span>
1151
+ <span class="cline-any cline-yes">5018x</span>
1152
+ <span class="cline-any cline-yes">46x</span>
1153
+ <span class="cline-any cline-neutral">&nbsp;</span>
1154
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">2455x</span>
1158
+ <span class="cline-any cline-yes">2455x</span>
1159
+ <span class="cline-any cline-neutral">&nbsp;</span>
1160
+ <span class="cline-any cline-yes">5613x</span>
1161
+ <span class="cline-any cline-yes">5613x</span>
1162
+ <span class="cline-any cline-yes">4810x</span>
1163
+ <span class="cline-any cline-yes">2047x</span>
1164
+ <span class="cline-any cline-yes">2047x</span>
1165
+ <span class="cline-any cline-yes">22x</span>
1166
+ <span class="cline-any cline-neutral">&nbsp;</span>
1167
+ <span class="cline-any cline-yes">2763x</span>
1168
+ <span class="cline-any cline-neutral">&nbsp;</span>
1169
+ <span class="cline-any cline-yes">803x</span>
1170
+ <span class="cline-any cline-yes">803x</span>
1171
+ <span class="cline-any cline-yes">222x</span>
1172
+ <span class="cline-any cline-neutral">&nbsp;</span>
1173
+ <span class="cline-any cline-yes">5613x</span>
1174
+ <span class="cline-any cline-neutral">&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-yes">1632x</span>
1179
+ <span class="cline-any cline-yes">8x</span>
1180
+ <span class="cline-any cline-yes">1624x</span>
1181
+ <span class="cline-any cline-yes">1624x</span>
1182
+ <span class="cline-any cline-yes">3678x</span>
1183
+ <span class="cline-any cline-yes">3678x</span>
1184
+ <span class="cline-any cline-yes">1682x</span>
1185
+ <span class="cline-any cline-yes">1682x</span>
1186
+ <span class="cline-any cline-neutral">&nbsp;</span>
1187
+ <span class="cline-any cline-yes">1996x</span>
1188
+ <span class="cline-any cline-neutral">&nbsp;</span>
1189
+ <span class="cline-any cline-yes">1624x</span>
1190
+ <span class="cline-any cline-yes">3826x</span>
1191
+ <span class="cline-any cline-yes">3826x</span>
1192
+ <span class="cline-any cline-yes">3826x</span>
1193
+ <span class="cline-any cline-yes">3666x</span>
1194
+ <span class="cline-any cline-yes">1679x</span>
1195
+ <span class="cline-any cline-yes">116x</span>
1196
+ <span class="cline-any cline-neutral">&nbsp;</span>
1197
+ <span class="cline-any cline-yes">1987x</span>
1198
+ <span class="cline-any cline-yes">1987x</span>
1199
+ <span class="cline-any cline-yes">1516x</span>
1200
+ <span class="cline-any cline-neutral">&nbsp;</span>
1201
+ <span class="cline-any cline-yes">3666x</span>
1202
+ <span class="cline-any cline-neutral">&nbsp;</span>
1203
+ <span class="cline-any cline-yes">160x</span>
1204
+ <span class="cline-any cline-neutral">&nbsp;</span>
1205
+ <span class="cline-any cline-yes">1624x</span>
1206
+ <span class="cline-any cline-yes">12x</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">1x</span>
1210
+ <span class="cline-any cline-yes">1x</span>
1211
+ <span class="cline-any cline-yes">1x</span>
1212
+ <span class="cline-any cline-neutral">&nbsp;</span>
1213
+ <span class="cline-any cline-yes">9x</span>
1214
+ <span class="cline-any cline-yes">7x</span>
1215
+ <span class="cline-any cline-yes">7x</span>
1216
+ <span class="cline-any cline-neutral">&nbsp;</span>
1217
+ <span class="cline-any cline-yes">9x</span>
1218
+ <span class="cline-any cline-yes">72x</span>
1219
+ <span class="cline-any cline-yes">30x</span>
1220
+ <span class="cline-any cline-yes">42x</span>
1221
+ <span class="cline-any cline-yes">42x</span>
1222
+ <span class="cline-any cline-yes">42x</span>
1223
+ <span class="cline-any cline-neutral">&nbsp;</span>
1224
+ <span class="cline-any cline-yes">42x</span>
1225
+ <span class="cline-any cline-neutral">&nbsp;</span>
1226
+ <span class="cline-any cline-neutral">&nbsp;</span>
1227
+ <span class="cline-any cline-yes">9x</span>
1228
+ <span class="cline-any cline-yes">23x</span>
1229
+ <span class="cline-any cline-neutral">&nbsp;</span>
1230
+ <span class="cline-any cline-yes">23x</span>
1231
+ <span class="cline-any cline-yes">23x</span>
1232
+ <span class="cline-any cline-yes">4x</span>
1233
+ <span class="cline-any cline-yes">10x</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-yes">9x</span>
1237
+ <span class="cline-any cline-yes">9x</span>
1238
+ <span class="cline-any cline-yes">9x</span>
1239
+ <span class="cline-any cline-yes">9x</span>
1240
+ <span class="cline-any cline-neutral">&nbsp;</span>
1241
+ <span class="cline-any cline-yes">9x</span>
1242
+ <span class="cline-any cline-yes">9x</span>
1243
+ <span class="cline-any cline-yes">51x</span>
1244
+ <span class="cline-any cline-yes">51x</span>
1245
+ <span class="cline-any cline-yes">65x</span>
1246
+ <span class="cline-any cline-yes">51x</span>
1247
+ <span class="cline-any cline-yes">77x</span>
1248
+ <span class="cline-any cline-yes">51x</span>
1249
+ <span class="cline-any cline-yes">29x</span>
1250
+ <span class="cline-any cline-neutral">&nbsp;</span>
1251
+ <span class="cline-any cline-yes">22x</span>
1252
+ <span class="cline-any cline-yes">22x</span>
1253
+ <span class="cline-any cline-yes">22x</span>
1254
+ <span class="cline-any cline-yes">482x</span>
1255
+ <span class="cline-any cline-yes">22x</span>
1256
+ <span class="cline-any cline-neutral">&nbsp;</span>
1257
+ <span class="cline-any cline-yes">22x</span>
1258
+ <span class="cline-any cline-neutral">&nbsp;</span>
1259
+ <span class="cline-any cline-neutral">&nbsp;</span>
1260
+ <span class="cline-any cline-neutral">&nbsp;</span>
1261
+ <span class="cline-any cline-neutral">&nbsp;</span>
1262
+ <span class="cline-any cline-neutral">&nbsp;</span>
1263
+ <span class="cline-any cline-neutral">&nbsp;</span>
1264
+ <span class="cline-any cline-yes">9x</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-yes">38x</span>
1268
+ <span class="cline-any cline-yes">38x</span>
1269
+ <span class="cline-any cline-yes">38x</span>
1270
+ <span class="cline-any cline-neutral">&nbsp;</span>
1271
+ <span class="cline-any cline-yes">38x</span>
1272
+ <span class="cline-any cline-yes">38x</span>
1273
+ <span class="cline-any cline-yes">10x</span>
1274
+ <span class="cline-any cline-yes">10x</span>
1275
+ <span class="cline-any cline-yes">10x</span>
1276
+ <span class="cline-any cline-yes">10x</span>
1277
+ <span class="cline-any cline-neutral">&nbsp;</span>
1278
+ <span class="cline-any cline-yes">38x</span>
1279
+ <span class="cline-any cline-yes">38x</span>
1280
+ <span class="cline-any cline-neutral">&nbsp;</span>
1281
+ <span class="cline-any cline-yes">38x</span>
1282
+ <span class="cline-any cline-neutral">&nbsp;</span>
1283
+ <span class="cline-any cline-yes">38x</span>
1284
+ <span class="cline-any cline-yes">38x</span>
1285
+ <span class="cline-any cline-yes">50x</span>
1286
+ <span class="cline-any cline-yes">38x</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-yes">154x</span>
1291
+ <span class="cline-any cline-yes">41x</span>
1292
+ <span class="cline-any cline-neutral">&nbsp;</span>
1293
+ <span class="cline-any cline-yes">41x</span>
1294
+ <span class="cline-any cline-yes">41x</span>
1295
+ <span class="cline-any cline-neutral">&nbsp;</span>
1296
+ <span class="cline-any cline-yes">19x</span>
1297
+ <span class="cline-any cline-yes">19x</span>
1298
+ <span class="cline-any cline-yes">19x</span>
1299
+ <span class="cline-any cline-neutral">&nbsp;</span>
1300
+ <span class="cline-any cline-yes">19x</span>
1301
+ <span class="cline-any cline-yes">319x</span>
1302
+ <span class="cline-any cline-yes">1x</span>
1303
+ <span class="cline-any cline-yes">1x</span>
1304
+ <span class="cline-any cline-yes">1x</span>
1305
+ <span class="cline-any cline-neutral">&nbsp;</span>
1306
+ <span class="cline-any cline-yes">318x</span>
1307
+ <span class="cline-any cline-yes">152x</span>
1308
+ <span class="cline-any cline-yes">166x</span>
1309
+ <span class="cline-any cline-yes">156x</span>
1310
+ <span class="cline-any cline-neutral">&nbsp;</span>
1311
+ <span class="cline-any cline-yes">41x</span>
1312
+ <span class="cline-any cline-yes">99x</span>
1313
+ <span class="cline-any cline-yes">99x</span>
1314
+ <span class="cline-any cline-yes">72x</span>
1315
+ <span class="cline-any cline-yes">99x</span>
1316
+ <span class="cline-any cline-neutral">&nbsp;</span>
1317
+ <span class="cline-any cline-yes">41x</span>
1318
+ <span class="cline-any cline-yes">41x</span>
1319
+ <span class="cline-any cline-yes">62x</span>
1320
+ <span class="cline-any cline-yes">41x</span>
1321
+ <span class="cline-any cline-yes">41x</span>
1322
+ <span class="cline-any cline-yes">41x</span>
1323
+ <span class="cline-any cline-yes">41x</span>
1324
+ <span class="cline-any cline-neutral">&nbsp;</span>
1325
+ <span class="cline-any cline-yes">41x</span>
1326
+ <span class="cline-any cline-yes">41x</span>
1327
+ <span class="cline-any cline-yes">105x</span>
1328
+ <span class="cline-any cline-neutral">&nbsp;</span>
1329
+ <span class="cline-any cline-yes">105x</span>
1330
+ <span class="cline-any cline-yes">196x</span>
1331
+ <span class="cline-any cline-yes">196x</span>
1332
+ <span class="cline-any cline-yes">36x</span>
1333
+ <span class="cline-any cline-yes">160x</span>
1334
+ <span class="cline-any cline-yes">160x</span>
1335
+ <span class="cline-any cline-neutral">&nbsp;</span>
1336
+ <span class="cline-any cline-yes">105x</span>
1337
+ <span class="cline-any cline-neutral">&nbsp;</span>
1338
+ <span class="cline-any cline-neutral">&nbsp;</span>
1339
+ <span class="cline-any cline-neutral">&nbsp;</span>
1340
+ <span class="cline-any cline-yes">41x</span>
1341
+ <span class="cline-any cline-yes">197x</span>
1342
+ <span class="cline-any cline-yes">197x</span>
1343
+ <span class="cline-any cline-yes">197x</span>
1344
+ <span class="cline-any cline-yes">197x</span>
1345
+ <span class="cline-any cline-yes">64x</span>
1346
+ <span class="cline-any cline-yes">64x</span>
1347
+ <span class="cline-any cline-yes">64x</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-yes">41x</span>
1351
+ <span class="cline-any cline-yes">116x</span>
1352
+ <span class="cline-any cline-yes">116x</span>
1353
+ <span class="cline-any cline-neutral">&nbsp;</span>
1354
+ <span class="cline-any cline-yes">116x</span>
1355
+ <span class="cline-any cline-yes">116x</span>
1356
+ <span class="cline-any cline-yes">116x</span>
1357
+ <span class="cline-any cline-no">&nbsp;</span>
1358
+ <span class="cline-any cline-yes">116x</span>
1359
+ <span class="cline-any cline-neutral">&nbsp;</span>
1360
+ <span class="cline-any cline-yes">116x</span>
1361
+ <span class="cline-any cline-yes">116x</span>
1362
+ <span class="cline-any cline-no">&nbsp;</span>
1363
+ <span class="cline-any cline-yes">116x</span>
1364
+ <span class="cline-any cline-yes">116x</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-yes">116x</span>
1368
+ <span class="cline-any cline-yes">18x</span>
1369
+ <span class="cline-any cline-yes">18x</span>
1370
+ <span class="cline-any cline-yes">7x</span>
1371
+ <span class="cline-any cline-yes">7x</span>
1372
+ <span class="cline-any cline-neutral">&nbsp;</span>
1373
+ <span class="cline-any cline-neutral">&nbsp;</span>
1374
+ <span class="cline-any cline-neutral">&nbsp;</span>
1375
+ <span class="cline-any cline-yes">116x</span>
1376
+ <span class="cline-any cline-yes">341x</span>
1377
+ <span class="cline-any cline-yes">50x</span>
1378
+ <span class="cline-any cline-yes">50x</span>
1379
+ <span class="cline-any cline-yes">50x</span>
1380
+ <span class="cline-any cline-neutral">&nbsp;</span>
1381
+ <span class="cline-any cline-yes">52x</span>
1382
+ <span class="cline-any cline-neutral">&nbsp;</span>
1383
+ <span class="cline-any cline-yes">179x</span>
1384
+ <span class="cline-any cline-yes">179x</span>
1385
+ <span class="cline-any cline-neutral">&nbsp;</span>
1386
+ <span class="cline-any cline-yes">50x</span>
1387
+ <span class="cline-any cline-yes">27x</span>
1388
+ <span class="cline-any cline-yes">18x</span>
1389
+ <span class="cline-any cline-neutral">&nbsp;</span>
1390
+ <span class="cline-any cline-yes">9x</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-yes">116x</span>
1395
+ <span class="cline-any cline-neutral">&nbsp;</span>
1396
+ <span class="cline-any cline-yes">41x</span>
1397
+ <span class="cline-any cline-yes">41x</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-yes">10x</span>
1401
+ <span class="cline-any cline-yes">10x</span>
1402
+ <span class="cline-any cline-yes">5x</span>
1403
+ <span class="cline-any cline-neutral">&nbsp;</span>
1404
+ <span class="cline-any cline-yes">5x</span>
1405
+ <span class="cline-any cline-yes">5x</span>
1406
+ <span class="cline-any cline-neutral">&nbsp;</span>
1407
+ <span class="cline-any cline-neutral">&nbsp;</span>
1408
+ <span class="cline-any cline-neutral">&nbsp;</span>
1409
+ <span class="cline-any cline-yes">14x</span>
1410
+ <span class="cline-any cline-yes">11x</span>
1411
+ <span class="cline-any cline-yes">3x</span>
1412
+ <span class="cline-any cline-yes">3x</span>
1413
+ <span class="cline-any cline-neutral">&nbsp;</span>
1414
+ <span class="cline-any cline-neutral">&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-yes">38x</span>
1418
+ <span class="cline-any cline-neutral">&nbsp;</span>
1419
+ <span class="cline-any cline-yes">38x</span>
1420
+ <span class="cline-any cline-yes">38x</span>
1421
+ <span class="cline-any cline-neutral">&nbsp;</span>
1422
+ <span class="cline-any cline-yes">38x</span>
1423
+ <span class="cline-any cline-yes">11x</span>
1424
+ <span class="cline-any cline-neutral">&nbsp;</span>
1425
+ <span class="cline-any cline-yes">27x</span>
1426
+ <span class="cline-any cline-yes">27x</span>
1427
+ <span class="cline-any cline-yes">27x</span>
1428
+ <span class="cline-any cline-yes">27x</span>
1429
+ <span class="cline-any cline-yes">43x</span>
1430
+ <span class="cline-any cline-yes">79x</span>
1431
+ <span class="cline-any cline-yes">27x</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-yes">61x</span>
1435
+ <span class="cline-any cline-no">&nbsp;</span>
1436
+ <span class="cline-any cline-neutral">&nbsp;</span>
1437
+ <span class="cline-any cline-no">&nbsp;</span>
1438
+ <span class="cline-any cline-neutral">&nbsp;</span>
1439
+ <span class="cline-any cline-neutral">&nbsp;</span>
1440
+ <span class="cline-any cline-yes">9x</span>
1441
+ <span class="cline-any cline-neutral">&nbsp;</span>
1442
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const XSL_NS_URL = 'http://www.w3.org/1999/XSL/Transform'
1443
+ , HTML_NS_URL = 'http://www.w3.org/1999/xhtml'
1444
+ , EXSL_NS_URL = 'http://exslt.org/common'
1445
+ , DCE_NS_URL ="urn:schemas-epa-wg:dce";
1446
+ &nbsp;
1447
+ // const log = x =&gt; console.debug( new XMLSerializer().serializeToString( x ) );
1448
+ &nbsp;
1449
+ const attr = (el, attr)=&gt; el.getAttribute?.(attr)
1450
+ , isText = e =&gt; e.nodeType === 3
1451
+ , isString = s =&gt; typeof s === 'string'
1452
+ , isNode = e =&gt; e &amp;&amp; typeof e.nodeType === 'number'
1453
+ , create = ( tag, t = '', d=document ) =&gt; ( e =&gt; ((t &amp;&amp; e.append(createText(d.ownerDocument||d, t))),e) )((d.ownerDocument || d ).createElement( tag ))
1454
+ , createText = ( d, t) =&gt; (d.ownerDocument || d ).createTextNode( t )
1455
+ , removeChildren = n =&gt; { while(n.firstChild) n.firstChild.remove(); return n; }
1456
+ , emptyNode = n =&gt; { n.getAttributeNames().map( a =&gt; n.removeAttribute(a) ); return removeChildren(n); }
1457
+ , createNS = <span class="fstat-no" title="function not covered" >( </span>ns, tag, t = <span class="branch-0 cbranch-no" title="branch not covered" >'' </span>) =&gt; <span class="cstat-no" title="statement not covered" >( <span class="fstat-no" title="function not covered" >e </span>=&gt; (<span class="cstat-no" title="statement not covered" >(e.innerText = t||''),e)</span> )(document.createElementNS( ns, tag ))</span>
1458
+ , xslNs = x =&gt; ( x?.setAttribute('xmlns:xsl', XSL_NS_URL ), x )
1459
+ , xslHtmlNs = x =&gt; ( x?.setAttribute('xmlns:xhtml', HTML_NS_URL ), xslNs(x) )
1460
+ , cloneAs = (p,tag) =&gt;
1461
+ { const px = p.ownerDocument.createElementNS(p.namespaceURI,tag);
1462
+ for( let a of p.attributes)
1463
+ px.setAttribute(a.name, a.value);
1464
+ while( p.firstChild )
1465
+ px.append(p.firstChild);
1466
+ return px;
1467
+ }
1468
+ &nbsp;
1469
+ function
1470
+ ASSERT(x)
1471
+ {
1472
+ // if(!x)
1473
+ // debugger
1474
+ }
1475
+ export function
1476
+ xml2dom( xmlString )
1477
+ {
1478
+ return new DOMParser().parseFromString( xmlString, "application/xml" )
1479
+ }
1480
+ export function
1481
+ <span class="fstat-no" title="function not covered" >xmlString(</span>doc){ <span class="cstat-no" title="statement not covered" >return new XMLSerializer().serializeToString( doc ) </span>}
1482
+ &nbsp;
1483
+ function
1484
+ injectData( root, sectionName, arr, cb )
1485
+ { const create = ( tag ) =&gt; root.ownerDocument.createElement( tag );
1486
+ const inject = ( tag, parent, s ) =&gt;
1487
+ { parent.append( s = create( tag ) );
1488
+ return s;
1489
+ };
1490
+ const l = inject( sectionName, root );
1491
+ [ ...arr ].forEach( e =&gt; l.append( cb( e ) ) );
1492
+ return l;
1493
+ }
1494
+ &nbsp;
1495
+ function
1496
+ assureSlot( e )
1497
+ {
1498
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( !e.slot )
1499
+ {
1500
+ if( !e.setAttribute )
1501
+ e = create( 'span', e.textContent.replaceAll( '\n', '' ) );
1502
+ e.setAttribute( 'slot', '' )
1503
+ }
1504
+ return e;
1505
+ }
1506
+ &nbsp;
1507
+ export function
1508
+ obj2node( o, tag, doc )
1509
+ { const t = typeof o;
1510
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( t === 'function'){<span class="cstat-no" title="statement not covered" >debugger}</span>
1511
+ if( t === 'string' )
1512
+ return create(tag,o,doc);
1513
+ if( t === 'number' )
1514
+ return create(tag,''+o,doc);
1515
+ &nbsp;
1516
+ if( o instanceof Array )
1517
+ { const ret = create('array');
1518
+ o.map( ae =&gt; ret.append( obj2node(ae,tag,doc)) );
1519
+ return ret
1520
+ }
1521
+ const ret = create(tag,'',doc);
1522
+ for( let k in o )
1523
+ if( isNode(o[k]) || typeof o[k] ==='function' || o[k] instanceof Window )
1524
+ continue
1525
+ else
1526
+ if( typeof o[k] !== "object" )
1527
+ ret.setAttribute(k, o[k] );
1528
+ else
1529
+ ret.append(obj2node(o[k], k, doc))
1530
+ return ret;
1531
+ }
1532
+ export function
1533
+ tagUid( node )
1534
+ { // {} to xsl:value-of
1535
+ forEach$(node,'*',d =&gt; [...d.childNodes].filter( e=&gt;e.nodeType === 3 ).forEach( e=&gt;
1536
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if( e.parentNode.localName === 'style' )
1537
+ <span class="cstat-no" title="statement not covered" > return;</span>
1538
+ const m = e.data.matchAll( /{([^}]*)}/g );
1539
+ <span class="missing-if-branch" title="else path not taken" >E</span>if(m)
1540
+ { let l = 0
1541
+ , txt = t =&gt; createText(e,t||<span class="branch-1 cbranch-no" title="branch not covered" >'')</span>
1542
+ , tt = [];
1543
+ [...m].forEach(t=&gt;
1544
+ { if( t.index &gt; l )
1545
+ tt.push( txt( t.input.substring( l, t.index ) ))
1546
+ const v = node.querySelector('value-of').cloneNode();
1547
+ v.setAttribute('select', t[1] );
1548
+ tt.push(v);
1549
+ l = t.index+t[0].length;
1550
+ })
1551
+ if( l &lt; e.data.length)
1552
+ tt.push( txt( e.data.substring(l,e.data.length) ));
1553
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( tt.length )
1554
+ { for( let t of tt )
1555
+ d.insertBefore(t,e);
1556
+ d.removeChild(e);
1557
+ }
1558
+ }
1559
+ }));
1560
+ &nbsp;
1561
+ if( 'all' in node ) {
1562
+ let i= 1;
1563
+ for( let e of node.all )
1564
+ e.setAttribute &amp;&amp; !e.tagName.startsWith('xsl:') &amp;&amp; e.setAttribute('data-dce-id', '' + i++)
1565
+ }
1566
+ return node
1567
+ }
1568
+ export function
1569
+ createXsltFromDom( templateNode, S = 'xsl:stylesheet' )
1570
+ {
1571
+ if( templateNode.tagName === S || templateNode.documentElement?.tagName === S )
1572
+ return tagUid(templateNode)
1573
+ const sanitizeXsl = xml2dom(`&lt;xsl:stylesheet version="1.0" xmlns:xsl="${ XSL_NS_URL }" xmlns:xhtml="${ HTML_NS_URL }" xmlns:exsl="${EXSL_NS_URL}" exclude-result-prefixes="exsl" &gt;
1574
+ &lt;xsl:output method="xml" /&gt;
1575
+ &lt;xsl:template match="/"&gt;&lt;dce-root xmlns="${ HTML_NS_URL }"&gt;&lt;xsl:apply-templates select="*"/&gt;&lt;/dce-root&gt;&lt;/xsl:template&gt;
1576
+ &lt;xsl:template match="*[name()='template']"&gt;&lt;xsl:apply-templates mode="sanitize" select="*|text()"/&gt;&lt;/xsl:template&gt;
1577
+ &lt;xsl:template match="*"&gt;&lt;xsl:apply-templates mode="sanitize" select="*|text()"/&gt;&lt;/xsl:template&gt;
1578
+ &lt;xsl:template match="*[name()='svg']|*[name()='math']"&gt;&lt;xsl:apply-templates mode="sanitize" select="."/&gt;&lt;/xsl:template&gt;
1579
+ &lt;xsl:template mode="sanitize" match="*[count(text())=1 and count(*)=0]"&gt;&lt;xsl:copy&gt;&lt;xsl:apply-templates mode="sanitize" select="@*"/&gt;&lt;xsl:value-of select="text()"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:copy&gt;&lt;/xsl:template&gt;
1580
+ &lt;xsl:template mode="sanitize" match="xhtml:*[count(text())=1 and count(*)=0]"&gt;&lt;xsl:element name="{local-name()}"&gt;&lt;xsl:apply-templates mode="sanitize" select="@*"/&gt;&lt;xsl:value-of select="text()"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:element&gt;&lt;/xsl:template&gt;
1581
+ &lt;xsl:template mode="sanitize" match="*|@*"&gt;&lt;xsl:copy&gt;&lt;xsl:apply-templates mode="sanitize" select="*|@*|text()"/&gt;&lt;/xsl:copy&gt;&lt;/xsl:template&gt;
1582
+ &lt;xsl:template mode="sanitize" match="text()[normalize-space(.) = '']"/&gt;
1583
+ &lt;xsl:template mode="sanitize" match="text()"&gt;&lt;dce-text&gt;&lt;xsl:copy/&gt;&lt;/dce-text&gt;&lt;/xsl:template&gt;
1584
+ &lt;xsl:template mode="sanitize" match="xsl:value-of|*[name()='slot']"&gt;&lt;dce-text&gt;&lt;xsl:copy&gt;&lt;xsl:apply-templates mode="sanitize" select="*|@*|text()"/&gt;&lt;/xsl:copy&gt;&lt;/dce-text&gt;&lt;/xsl:template&gt;
1585
+ &lt;xsl:template mode="sanitize" match="xhtml:*"&gt;&lt;xsl:element name="{local-name()}"&gt;&lt;xsl:apply-templates mode="sanitize" select="*|@*|text()"/&gt;&lt;/xsl:element&gt;&lt;/xsl:template&gt;
1586
+ &lt;/xsl:stylesheet&gt;`)
1587
+ const sanitizeProcessor = new XSLTProcessor()
1588
+ , tc = (n =&gt;
1589
+ {
1590
+ forEach$(n,'script', s=&gt; s.remove() );
1591
+ const xslRoot = n.content ?? n.firstElementChild?.content ?? n.body ?? n;
1592
+ xslTags.forEach( tag =&gt; forEach$( xslRoot, tag, el=&gt;toXsl(el,xslRoot) ) );
1593
+ const e = n.firstElementChild?.content || n.content
1594
+ , asXmlNode = r =&gt; {
1595
+ const d = xml2dom( '&lt;xhtml/&gt;' )
1596
+ , n = d.importNode(r, true);
1597
+ d.replaceChild(n,d.documentElement);
1598
+ return xslHtmlNs(n);
1599
+ };
1600
+ if( e )
1601
+ { const t = create('div');
1602
+ [ ...e.childNodes ].map( c =&gt; t.append(c.cloneNode(true)) )
1603
+ return asXmlNode(t)
1604
+ }
1605
+ return asXmlNode(n.documentElement || n.body || n)
1606
+ })(templateNode)
1607
+ , xslDom = xml2dom(
1608
+ `&lt;xsl:stylesheet version="1.0"
1609
+ xmlns:xsl="${ XSL_NS_URL }"
1610
+ xmlns:xhtml="${ HTML_NS_URL }"
1611
+ xmlns:dce="urn:schemas-epa-wg:dce"
1612
+ xmlns:exsl="http://exslt.org/common"
1613
+ exclude-result-prefixes="exsl"
1614
+ &gt;
1615
+ &lt;xsl:template match="ignore"&gt;
1616
+ &lt;xsl:choose&gt;
1617
+ &lt;xsl:when test="//attr"&gt;{//attr}&lt;/xsl:when&gt;
1618
+ &lt;xsl:otherwise&gt;{def}&lt;/xsl:otherwise&gt;
1619
+ &lt;/xsl:choose&gt;&lt;xsl:value-of select="."&gt;&lt;/xsl:value-of&gt;&lt;/xsl:template&gt;
1620
+ &lt;xsl:template mode="payload" match="attributes"&gt;&lt;/xsl:template&gt;
1621
+ &lt;xsl:template match="/"&gt;
1622
+ &lt;xsl:apply-templates mode="payload" select="/datadom/attributes"/&gt;
1623
+ &lt;/xsl:template&gt;
1624
+ &lt;xsl:template name="slot" &gt;
1625
+ &lt;xsl:param name="slotname" /&gt;
1626
+ &lt;xsl:param name="defaultvalue" /&gt;
1627
+ &lt;xsl:choose&gt;
1628
+ &lt;xsl:when test="//payload/*[@slot=$slotname]"&gt;
1629
+ &lt;xsl:copy-of select="//payload/*[@slot=$slotname]"/&gt;
1630
+ &lt;/xsl:when&gt;
1631
+ &lt;xsl:otherwise&gt;
1632
+ &lt;xsl:copy-of select="$defaultvalue"/&gt;
1633
+ &lt;/xsl:otherwise&gt;
1634
+ &lt;/xsl:choose&gt;
1635
+ &lt;/xsl:template&gt;
1636
+ &lt;xsl:variable name="js-injected-body"&gt;
1637
+ &lt;xsl:call-template name="slot" &gt;
1638
+ &lt;xsl:with-param name="slotname" select="''"/&gt;
1639
+ &lt;xsl:with-param name="defaultvalue"/&gt;
1640
+ &lt;/xsl:call-template&gt;
1641
+ &lt;/xsl:variable&gt;
1642
+ &lt;/xsl:stylesheet&gt;`
1643
+ );
1644
+ &nbsp;
1645
+ sanitizeProcessor.importStylesheet( sanitizeXsl );
1646
+ &nbsp;
1647
+ const fr = sanitizeProcessor.transformToFragment(tc, document)
1648
+ , $ = (e,css) =&gt; e.querySelector(css)
1649
+ , payload = $( xslDom, 'template[mode="payload"]');
1650
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( !fr )
1651
+ <span class="cstat-no" title="statement not covered" > return console.error("transformation error",{ xml:tc.outerHTML, xsl: xmlString( sanitizeXsl ) });</span>
1652
+ const params = [];
1653
+ [...fr.querySelectorAll('dce-root&gt;attribute')].forEach( a=&gt;
1654
+ {
1655
+ const p = cloneAs(a,'xsl:param')
1656
+ , name = attr(a,'name');
1657
+ payload.append(p);
1658
+ let select = attr(p,'select')?.split('??')
1659
+ if( !select)
1660
+ { select = ['//'+name, `'${p.textContent}'`];
1661
+ emptyNode(p);
1662
+ p.setAttribute('name',name);
1663
+ }
1664
+ let val;
1665
+ if( select?.length&gt;1 ){
1666
+ p.removeAttribute('select');
1667
+ const c = $( xslDom, 'template[match="ignore"]&gt;choose').cloneNode(true);
1668
+ emptyNode(c.firstElementChild).append( createText(c,'{'+select[0]+'}'));
1669
+ emptyNode(c.lastElementChild ).append( createText(c,'{'+select[1]+'}'));
1670
+ c.firstElementChild.setAttribute('test',select[0]);
1671
+ p.append(c);
1672
+ val = c.cloneNode(true);
1673
+ }else
1674
+ val=cloneAs(a,'xsl:value-of');
1675
+ val.removeAttribute('name');
1676
+ a.append(val);
1677
+ a.removeAttribute('select');
1678
+ params.push(p)
1679
+ });
1680
+ [...fr.querySelectorAll('[value]')].filter(el=&gt;el.getAttribute('value').match( /\{(.*)\?\?(.*)\}/g )).forEach(el=&gt;
1681
+ { const v = attr(el,'value');
1682
+ <span class="missing-if-branch" title="else path not taken" >E</span>if(v)
1683
+ el.setAttribute('value', evalCurly(v));
1684
+ });
1685
+ for( const c of fr.childNodes )
1686
+ payload.append(xslDom.importNode(c,true))
1687
+ &nbsp;
1688
+ const embeddedTemplates = [...payload.querySelectorAll('template')];
1689
+ embeddedTemplates.forEach(t=&gt;payload.ownerDocument.documentElement.append(t));
1690
+ &nbsp;
1691
+ const slotCall = $(xslDom,'call-template[name="slot"]')
1692
+ , slot2xsl = s =&gt;
1693
+ { const v = slotCall.cloneNode(true)
1694
+ , name = attr(s,'name') || '';
1695
+ name &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >v.firstElementChild.setAttribute('select',`'${ name }'`)</span>
1696
+ for( let c of s.childNodes)
1697
+ v.lastElementChild.append(c)
1698
+ return v
1699
+ }
1700
+ &nbsp;
1701
+ forEach$( payload,'slot', s =&gt; s.parentNode.replaceChild( slot2xsl(s), s ) )
1702
+ &nbsp;
1703
+ const ret = tagUid(xslDom)
1704
+ ret.params = params;
1705
+ return ret;
1706
+ }
1707
+ export async function
1708
+ xhrTemplate(src)
1709
+ {
1710
+ const dom = await new Promise((resolve,reject)=&gt;
1711
+ { const xhr = new XMLHttpRequest();
1712
+ xhr.open("GET", src);
1713
+ xhr.responseType = "document";
1714
+ // xhr.overrideMimeType("text/xml");
1715
+ xhr.onload = () =&gt;
1716
+ { <span class="missing-if-branch" title="else path not taken" >E</span>if( xhr.readyState === xhr.DONE &amp;&amp; xhr.status === 200 )
1717
+ resolve( xhr.responseXML || <span class="branch-1 cbranch-no" title="branch not covered" >create('div', xhr.responseText ) </span>)
1718
+ reject(xhr.statusText)
1719
+ };
1720
+ xhr.addEventListener("error", <span class="fstat-no" title="function not covered" >ev=</span>&gt;<span class="cstat-no" title="statement not covered" >reject(ev) </span>);
1721
+ &nbsp;
1722
+ xhr.send();
1723
+ })
1724
+ return dom
1725
+ }
1726
+ export function
1727
+ deepEqual(a, b, O=false)
1728
+ {
1729
+ if( a === b )
1730
+ return true;
1731
+ &nbsp;
1732
+ if( (typeof a !== "object" || a === null) || (typeof b !== "object" || b === null)
1733
+ || Object.keys(a).length !== Object.keys(b).length )
1734
+ return O;
1735
+ &nbsp;
1736
+ for( let k in a )
1737
+ if( !(k in b) || !deepEqual( a[k], b[k] ) )
1738
+ return O
1739
+ return true;
1740
+ }
1741
+ export const
1742
+ assureSlices = ( root, names) =&gt;
1743
+ names.split('|').map(n=&gt;n.trim()).map( xp =&gt;
1744
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if(xp.includes('/'))
1745
+ { const ret = <span class="cstat-no" title="statement not covered" >[],</span> r = <span class="cstat-no" title="statement not covered" >root.ownerDocument.evaluate( xp, root );</span>
1746
+ <span class="cstat-no" title="statement not covered" > for( let n; n = r.iterateNext(); )</span>
1747
+ <span class="cstat-no" title="statement not covered" > ret.push( n )</span>
1748
+ <span class="cstat-no" title="statement not covered" > return ret</span>
1749
+ }
1750
+ return [...root.childNodes].find(n=&gt;n.localName === xp) || <span class="branch-1 cbranch-no" title="branch not covered" >create(xp);</span>
1751
+ }).flat();
1752
+ &nbsp;
1753
+ /**
1754
+ *
1755
+ * @param x slice node
1756
+ * @param sliceNames slice name, xPath in /datadom/slice/
1757
+ * @param ev Event obj
1758
+ * @param dce
1759
+ */
1760
+ export function
1761
+ event2slice( x, sliceNames, ev, dce )
1762
+ {
1763
+ // evaluate slices[]
1764
+ // inject @attributes
1765
+ // inject event
1766
+ // evaluate slice-value
1767
+ // slice[i] = slice-value
1768
+ assureSlices(x,sliceNames).map( s =&gt;
1769
+ {
1770
+ const d = x.ownerDocument
1771
+ , el = ev.sliceEventSource
1772
+ , sel = ev.sliceElement
1773
+ , cleanSliceValue = ()=&gt;[...s.childNodes].filter(n=&gt;n.nodeType===3 || n.localName==='value').map(n=&gt;n.remove());
1774
+ el.getAttributeNames().map( a =&gt; s.setAttribute( a, attr(el,a) ) );
1775
+ [...s.childNodes].filter(n=&gt;n.localName==='event').map(n=&gt;n.remove());
1776
+ ev.type==='init' &amp;&amp; cleanSliceValue();
1777
+ s.append( obj2node( ev, 'event', d ) );
1778
+ if( sel.hasAttribute('slice-value') )
1779
+ { if( el.value === undefined)
1780
+ s.removeAttribute('value')
1781
+ else
1782
+ s.setAttribute('value', el.value );
1783
+ const v = xPath( attr( sel, 'slice-value'),s );
1784
+ cleanSliceValue();
1785
+ s.append( createText( d, v ) );
1786
+ }else
1787
+ { const v = el.value ?? attr( sel, 'value' ) ;
1788
+ cleanSliceValue();
1789
+ if( v === null || v === undefined )
1790
+ [...s.childNodes].filter(n=&gt;n.localName!=='event').map(<span class="fstat-no" title="function not covered" >n=</span>&gt;<span class="cstat-no" title="statement not covered" >n.remove())</span>;
1791
+ else
1792
+ if( isString(v) )
1793
+ s.append( createText( d, v) );
1794
+ else
1795
+ s.append( obj2node(v,'value',s.ownerDocument) )
1796
+ }
1797
+ })
1798
+ }
1799
+ &nbsp;
1800
+ function forEach$( el, css, cb){
1801
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( el.querySelectorAll )
1802
+ [...el.querySelectorAll(css)].forEach(cb)
1803
+ }
1804
+ const getByHashId = <span class="fstat-no" title="function not covered" >( </span>n, id )=&gt; <span class="cstat-no" title="statement not covered" >( <span class="fstat-no" title="function not covered" >p </span>=&gt; <span class="cstat-no" title="statement not covered" >n===p? null: (p &amp;&amp; ( p.querySelector(id) || getByHashId(p,id) ) ))</span>( n.getRootNode() )</span>
1805
+ const loadTemplateRoots = async ( src, dce )=&gt;
1806
+ {
1807
+ if( !src || !src.trim() )
1808
+ return [dce]
1809
+ if( src.startsWith('#') )
1810
+ return ( n =&gt;
1811
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if(!n) <span class="cstat-no" title="statement not covered" >return []</span>
1812
+ const a = n.querySelectorAll(src)
1813
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( a.length )
1814
+ return [...a]
1815
+ const r = <span class="cstat-no" title="statement not covered" >n.getRootNode();</span>
1816
+ <span class="cstat-no" title="statement not covered" > return r===n ? []: getByHashId(r)</span>
1817
+ })(dce.parentElement)
1818
+ try
1819
+ { // todo cache
1820
+ const dom = await xhrTemplate(src)
1821
+ const hash = new URL(src, location).hash
1822
+ if( hash )
1823
+ { const ret = dom.querySelectorAll(hash);
1824
+ if( ret.length )
1825
+ return [...ret]
1826
+ return [dce]
1827
+ }
1828
+ return [dom]
1829
+ }catch (error){ <span class="cstat-no" title="statement not covered" >return [dce]}</span>
1830
+ }
1831
+ export function mergeAttr( from, to )
1832
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if( isText(from) )
1833
+ {
1834
+ <span class="cstat-no" title="statement not covered" > if( !isText(to) ){ <span class="cstat-no" title="statement not covered" >debugger </span>}</span>
1835
+ <span class="cstat-no" title="statement not covered" > return</span>
1836
+ }
1837
+ for( let a of from.attributes)
1838
+ { a.namespaceURI? <span class="branch-0 cbranch-no" title="branch not covered" >to.setAttributeNS( a.namespaceURI, a.name, a.value ) </span>: to.setAttribute( a.name, a.value )
1839
+ if( a.name === 'value')
1840
+ to.value = a.value
1841
+ }
1842
+ }
1843
+ export function assureUnique(n, id=0)
1844
+ {
1845
+ const m = {}
1846
+ for( const e of n.childNodes )
1847
+ {
1848
+ const a = attr(e,'data-dce-id') || e.dceId || 0;
1849
+ if( !m[a] )
1850
+ { if( !a )
1851
+ { m[a] = e.dceId = ++id;
1852
+ if( e.setAttribute )
1853
+ e.setAttribute('data-dce-id', e.dceId )
1854
+ }else
1855
+ m[a] = 1;
1856
+ }else
1857
+ { const v = e.dceId = a + '-' + m[a]++;
1858
+ if( e.setAttribute )
1859
+ e.setAttribute('data-dce-id', v )
1860
+ }
1861
+ e.childNodes.length &amp;&amp; assureUnique(e)
1862
+ }
1863
+ }
1864
+ export function merge( parent, fromArr )
1865
+ {
1866
+ if(!fromArr.length)
1867
+ return removeChildren(parent);
1868
+ const id2old = {};
1869
+ for( let c of parent.childNodes)
1870
+ { ASSERT( !id2old[c.dceId] );
1871
+ if( isText(c) )
1872
+ { ASSERT( c.data.trim() );
1873
+ id2old[c.dceId || <span class="branch-1 cbranch-no" title="branch not covered" >0]</span> = c;
1874
+ } else
1875
+ id2old[attr(c, 'data-dce-id') || <span class="branch-1 cbranch-no" title="branch not covered" >0]</span> = c;
1876
+ }
1877
+ for( let e of [...fromArr] )
1878
+ { const k = attr(e, 'data-dce-id') || e.dceId;
1879
+ const o = id2old[ k ];
1880
+ if( o )
1881
+ { if( isText(e) )
1882
+ { if( o.nodeValue !== e.nodeValue )
1883
+ o.nodeValue = e.nodeValue;
1884
+ }else
1885
+ { mergeAttr(e,o)
1886
+ if( o.childNodes.length || e.childNodes.length )
1887
+ merge(o, e.childNodes)
1888
+ }
1889
+ delete id2old[ k ]
1890
+ }else
1891
+ parent.append( e )
1892
+ }
1893
+ for( let v of Object.values(id2old) )
1894
+ v.remove();
1895
+ }
1896
+ export function assureUID(n,attr)
1897
+ { <span class="missing-if-branch" title="else path not taken" >E</span>if( !n.hasAttribute(attr) )
1898
+ n.setAttribute(attr, crypto.randomUUID());
1899
+ return n.getAttribute(attr)
1900
+ }
1901
+ export const evalCurly = s =&gt;
1902
+ { const exp = [...s?.matchAll( /([^{}]*)(\{)([^}]+)}([^{}]*)/g ) ].map(l=&gt;`${l[1]}{${ xPathDefaults(l[3] )}}${l[4]}`);
1903
+ return exp.join('');
1904
+ }
1905
+ export const xPathDefaults = x=&gt;
1906
+ { if(!x.trim())
1907
+ return x;
1908
+ const xx = x.split('??')
1909
+ , a = xx.shift()
1910
+ , b = xPathDefaults(xx.join('??'));
1911
+ &nbsp;
1912
+ return xx.length ? `concat( ${a} , substring( ${b} , (1+string-length( ${b} )) * string-length( ${a} ) ) )`: x
1913
+ // return xx.length ? `${a}|(${xPathDefaults(xx.join('??'))})[not(${a})]`: a
1914
+ }
1915
+ export const xPath = (x,root)=&gt;
1916
+ { x = xPathDefaults(x);
1917
+ &nbsp;
1918
+ const it = root.ownerDocument.evaluate(x, root);
1919
+ switch( it.resultType )
1920
+ { case XPathResult.NUMBER_TYPE: return it.numberValue;
1921
+ case XPathResult.STRING_TYPE: return it.stringValue;
1922
+ }
1923
+ &nbsp;
1924
+ let ret = '';
1925
+ for( let n ;n=it.iterateNext(); )
1926
+ ret += n.textContent;
1927
+ return ret
1928
+ }
1929
+ export const xslTags = 'stylesheet,transform,import,include,strip-space,preserve-space,output,key,decimal-format,namespace-alias,template,value-of,copy-of,number,apply-templates,apply-imports,for-each,sort,if,choose,when,otherwise,attribute-set,call-template,with-param,variable,param,text,processing-instruction,element,attribute,comment,copy,message,fallback'.split(',');
1930
+ export const toXsl = (el, defParent) =&gt; {
1931
+ const x = create('xsl:'+el.localName);
1932
+ for( let a of el.attributes )
1933
+ x.setAttribute( a.name, a.value );
1934
+ while(el.firstChild)
1935
+ x.append(el.firstChild);
1936
+ if( el.parentElement )
1937
+ el.parentElement.replaceChild( x, el );
1938
+ else
1939
+ { const p = (el.parentElement || defParent)
1940
+ , arr = [...p.childNodes];
1941
+ arr.forEach((n, i) =&gt; {
1942
+ if (n === el)
1943
+ arr[i] = x;
1944
+ });
1945
+ p.replaceChildren(...arr);
1946
+ }
1947
+ };
1948
+ &nbsp;
1949
+ export class
1950
+ CustomElement extends HTMLElement
1951
+ {
1952
+ static observedAttributes = ['src','tag','hidden'];
1953
+ async connectedCallback()
1954
+ {
1955
+ const templateRoots = await loadTemplateRoots( attr( this, 'src' ), this )
1956
+ , tag = attr( this, 'tag' )
1957
+ , tagName = tag ? tag : 'dce-'+crypto.randomUUID();
1958
+ &nbsp;
1959
+ for( const t of templateRoots )
1960
+ forEach$(t.templateNode||t.content||t, 'style',s=&gt;{
1961
+ const slot = s.closest('slot');
1962
+ const sName = slot ? <span class="branch-0 cbranch-no" title="branch not covered" >`slot[name="${slot.name}"]`:</span>'';
1963
+ s.innerHTML = `${tagName} ${sName}{${s.innerHTML}}`;
1964
+ this.append(s);
1965
+ })
1966
+ const templateDocs = templateRoots.map( n =&gt; createXsltFromDom( n ) )
1967
+ , xp = templateDocs.map( (td, p) =&gt;{ p = new XSLTProcessor(); p.importStylesheet( td ); return p })
1968
+ &nbsp;
1969
+ Object.defineProperty( this, "xsltString", { get: <span class="fstat-no" title="function not covered" >()</span>=&gt;<span class="cstat-no" title="statement not covered" >templateDocs.map( <span class="fstat-no" title="function not covered" >td </span>=&gt; <span class="cstat-no" title="statement not covered" >xmlString(td) </span>).join('\n') </span>});
1970
+ &nbsp;
1971
+ const dce = this
1972
+ , sliceNodes = [...this.templateNode.querySelectorAll('[slice]')]
1973
+ , sliceNames = sliceNodes.map(e=&gt;attr(e,'slice')).filter(n=&gt;!n.includes('/')).filter((v, i, a)=&gt;a.indexOf(v) === i)
1974
+ , declaredAttributes = templateDocs.reduce( (ret,t) =&gt; { if( t.params ) ret.push( ...t.params ); return ret; }, [] );
1975
+ &nbsp;
1976
+ class DceElement extends HTMLElement
1977
+ {
1978
+ static get observedAttributes(){ return declaredAttributes.map( a=&gt;attr(a,'name')); }
1979
+ #inTransform = 0;
1980
+ connectedCallback()
1981
+ { let payload = this.childNodes;
1982
+ if( this.firstElementChild?.tagName === 'TEMPLATE' )
1983
+ {
1984
+ const t = this.firstElementChild;
1985
+ t.remove();
1986
+ payload = t.content.childNodes;
1987
+ &nbsp;
1988
+ for( const n of [...t.content.childNodes] )
1989
+ if( n.localName === 'style' ){
1990
+ const id = assureUID(this,'data-dce-style')
1991
+ n.innerHTML= `${tagName}[data-dce-style="${id}"]{${n.innerHTML}}`;
1992
+ t.insertAdjacentElement('beforebegin',n);
1993
+ }else
1994
+ if(n.nodeType===1)
1995
+ t.insertAdjacentElement('beforebegin',n);
1996
+ else if(n.nodeType===3)
1997
+ t.insertAdjacentText('beforebegin',n.data);
1998
+ }
1999
+ const x = xml2dom( '&lt;datadom/&gt;' ).documentElement;
2000
+ const createXmlNode = ( tag, t = <span class="branch-0 cbranch-no" title="branch not covered" >'' </span>) =&gt; ( e =&gt;
2001
+ { if( t )
2002
+ e.append( createText( x, t ))
2003
+ return e;
2004
+ })(x.ownerDocument.createElement( tag ))
2005
+ injectData( x, 'payload' , payload , assureSlot );
2006
+ this.innerHTML='';
2007
+ injectData( x, 'attributes' , this.attributes, e =&gt; createXmlNode( e.nodeName, e.value ) );
2008
+ injectData( x, 'dataset', Object.keys( this.dataset ), k =&gt; createXmlNode( k, this.dataset[ k ] ) );
2009
+ const sliceRoot = injectData( x, 'slice', sliceNames, k =&gt; createXmlNode( k, '' ) )
2010
+ , sliceXPath = x =&gt; xPath(x, sliceRoot);
2011
+ this.xml = x;
2012
+ &nbsp;
2013
+ const sliceEvents=[];
2014
+ const applySlices = ()=&gt;
2015
+ { const processed = {}
2016
+ &nbsp;
2017
+ for(let ev; ev = sliceEvents.pop(); )
2018
+ { const s = attr( ev.sliceElement, 'slice');
2019
+ if( processed[s] )
2020
+ continue;
2021
+ event2slice( sliceRoot, s, ev, this );
2022
+ processed[s] = ev;
2023
+ }
2024
+ Object.keys(processed).length !== 0 &amp;&amp; transform();
2025
+ }
2026
+ let timeoutID;
2027
+ &nbsp;
2028
+ this.onSlice = ev=&gt;
2029
+ { ev.stopPropagation?.();
2030
+ ev.sliceEventSource = ev.currentTarget || ev.target;
2031
+ sliceEvents.push(ev);
2032
+ if( !timeoutID )
2033
+ timeoutID = setTimeout(()=&gt;
2034
+ { applySlices();
2035
+ timeoutID =0;
2036
+ },10);
2037
+ };
2038
+ const transform = this.transform = ()=&gt;
2039
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if(this.#inTransform){ <span class="cstat-no" title="statement not covered" >debugger </span>}
2040
+ this.#inTransform = 1;
2041
+ &nbsp;
2042
+ const ff = xp.map( (p,i) =&gt;
2043
+ { const f = p.transformToFragment(x.ownerDocument, document)
2044
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( !f )
2045
+ <span class="cstat-no" title="statement not covered" > console.error( "XSLT transformation error. xsl:\n", xmlString(templateDocs[i]), '\nxml:\n', xmlString(x) );</span>
2046
+ return f
2047
+ });
2048
+ ff.map( f =&gt;
2049
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if( !f )
2050
+ <span class="cstat-no" title="statement not covered" > return;</span>
2051
+ assureUnique(f);
2052
+ merge( this, f.childNodes )
2053
+ })
2054
+ &nbsp;
2055
+ DceElement.observedAttributes.map( a =&gt;
2056
+ { let v = attr(this.firstElementChild,a);
2057
+ if( v !== attr(this,a) )
2058
+ { this.setAttribute( a, v );
2059
+ this.#applyAttribute( a, v );
2060
+ }
2061
+ })
2062
+ &nbsp;
2063
+ forEach$( this,'[slice]', el =&gt;
2064
+ { if( !el.dceInitialized )
2065
+ { el.dceInitialized = 1;
2066
+ const evs = attr(el,'slice-event');
2067
+ (evs || 'change')
2068
+ .split(' ')
2069
+ .forEach( t=&gt; (el.localName==='slice'? <span class="branch-0 cbranch-no" title="branch not covered" >el.parentElement </span>: el)
2070
+ .addEventListener( t, ev=&gt;
2071
+ { ev.sliceElement = el;
2072
+ this.onSlice(ev)
2073
+ } ));
2074
+ if( !evs || evs.includes('init') )
2075
+ { if( el.hasAttribute('slice-value') || el.hasAttribute('value') || el.value )
2076
+ this.onSlice({type:'init', target: el, sliceElement:el })
2077
+ else
2078
+ el.value = sliceXPath( attr(el,'slice') )
2079
+ }
2080
+ }
2081
+ });
2082
+ this.#inTransform = 0;
2083
+ };
2084
+ transform();
2085
+ applySlices();
2086
+ }
2087
+ #applyAttribute(name, newValue)
2088
+ { let a = this.xml.querySelector(`attributes&gt;${name}`);
2089
+ if( a )
2090
+ emptyNode(a).append( createText(a,newValue) );
2091
+ else
2092
+ { a = create( name, newValue, this.xml );
2093
+ this.xml.querySelector('attributes').append( a );
2094
+ }
2095
+ }
2096
+ attributeChangedCallback(name, oldValue, newValue)
2097
+ { if( !this.xml || this.#inTransform )
2098
+ return;
2099
+ this.#applyAttribute(name, newValue);
2100
+ this.transform(); // needs throttling
2101
+ }
2102
+ &nbsp;
2103
+ <span class="fstat-no" title="function not covered" > get </span>dce(){ <span class="cstat-no" title="statement not covered" >return dce </span>}
2104
+ }
2105
+ const registerTag = tag =&gt;
2106
+ {
2107
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( window.customElements.get(tag) !== DceElement )
2108
+ window.customElements.define( tag, DceElement);
2109
+ };
2110
+ if(tag)
2111
+ registerTag(tag);
2112
+ else
2113
+ { const t = tagName;
2114
+ this.setAttribute('tag', t );
2115
+ registerTag(t);
2116
+ const el = document.createElement(t);
2117
+ this.getAttributeNames().forEach(a=&gt;el.setAttribute(a,this.getAttribute(a)));
2118
+ el.append(...[...this.childNodes].filter( e =&gt; e.localName!=='style') );
2119
+ this.append(el);
2120
+ }
2121
+ }
2122
+ get templateNode(){ return this.firstElementChild?.tagName === 'TEMPLATE'? this.firstElementChild.content : this }
2123
+ <span class="fstat-no" title="function not covered" > get </span>dce(){ <span class="cstat-no" title="statement not covered" >return this </span>}
2124
+ &nbsp;
2125
+ <span class="fstat-no" title="function not covered" > get </span>xslt(){ <span class="cstat-no" title="statement not covered" >return xml2dom( this.xsltString ) </span>}
2126
+ }
2127
+ &nbsp;
2128
+ window.customElements.define( 'custom-element', CustomElement );
2129
+ export default CustomElement;
2130
+ &nbsp;</pre></td></tr></table></pre>
2131
+
2132
+ <div class='push'></div><!-- for sticky footer -->
2133
+ </div><!-- /wrapper -->
2134
+ <div class='footer quiet pad2 space-top1 center small'>
2135
+ Code coverage generated by
2136
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2137
+ at 2024-05-13T05:26:38.578Z
2138
+ </div>
2139
+ <script src="../../prettify.js"></script>
2140
+ <script>
2141
+ window.onload = function () {
2142
+ prettyPrint();
2143
+ };
2144
+ </script>
2145
+ <script src="../../sorter.js"></script>
2146
+ <script src="../../block-navigation.js"></script>
2147
+ </body>
2148
+ </html>
2149
+