@decaf-ts/for-angular 0.1.4 → 0.1.6

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 (374) hide show
  1. package/package.json +16 -89
  2. package/.editorconfig +0 -31
  3. package/.gitlab-ci.yml +0 -197
  4. package/.hintrc +0 -19
  5. package/.prettierrc +0 -49
  6. package/.snyk +0 -13
  7. package/LICENSE.md +0 -260
  8. package/angular.json +0 -274
  9. package/bs-config.json +0 -5
  10. package/cli-module.js.map +0 -1
  11. package/dist/for-angular/cli/cli-module.d.ts +0 -22
  12. package/dist/for-angular/cli/cli-module.d.ts.map +0 -1
  13. package/dist/for-angular/cli/cli-module.js +0 -131
  14. package/dist/for-angular/cli/cli-module.js.map +0 -1
  15. package/dist/lib/README.md +0 -117
  16. package/eslint.config.mjs +0 -101
  17. package/ionic.config.json +0 -14
  18. package/jest.config.ts +0 -52
  19. package/jest.setup.ts +0 -50
  20. package/karma.conf.js +0 -50
  21. package/ng-package.json +0 -16
  22. package/ngsw-config.json +0 -30
  23. package/playwright.config.ts +0 -80
  24. package/resources/favicon.png +0 -0
  25. package/resources/favicon.svg +0 -29
  26. package/resources/icon-background.png +0 -0
  27. package/resources/icon-foreground.png +0 -0
  28. package/resources/icon-only.png +0 -0
  29. package/resources/icon-only.svg +0 -29
  30. package/resources/splash-dark.png +0 -0
  31. package/resources/splash-dark2.png +0 -0
  32. package/resources/splash.png +0 -0
  33. package/resources/splash2.png +0 -0
  34. package/resources/touch-icon.svg +0 -29
  35. package/schematics/README.md +0 -28
  36. package/schematics/collection.json +0 -20
  37. package/schematics/package-lock.json +0 -1501
  38. package/schematics/package.json +0 -37
  39. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.__style__.template +0 -0
  40. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.html.template +0 -3
  41. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template +0 -40
  42. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template +0 -37
  43. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template +0 -14
  44. package/schematics/src/component/index.js +0 -146
  45. package/schematics/src/component/schema.js +0 -2
  46. package/schematics/src/component/schema.json +0 -101
  47. package/schematics/src/page/files/__name@dasherize__.page.html.template +0 -15
  48. package/schematics/src/page/files/__name@dasherize__.page.scss.template +0 -0
  49. package/schematics/src/page/files/__name@dasherize__.page.ts.template +0 -19
  50. package/schematics/src/page/index.js +0 -71
  51. package/schematics/src/page/schema.json +0 -87
  52. package/schematics/src/schematics/index.js +0 -11
  53. package/schematics/src/schematics/index_spec.js +0 -13
  54. package/schematics/src/util/ast-util.js +0 -517
  55. package/schematics/src/util/change.js +0 -96
  56. package/schematics/src/util/index.js +0 -14
  57. package/settings.json +0 -112
  58. package/tsconfig.app.json +0 -22
  59. package/tsconfig.cli.json +0 -82
  60. package/tsconfig.lib.json +0 -14
  61. package/tsconfig.lib.prod.json +0 -10
  62. package/tsconfig.spec.json +0 -22
  63. package/webpack.config.js +0 -10
  64. package/workdocs/1-Header.md +0 -5
  65. package/workdocs/2-Badges.md +0 -30
  66. package/workdocs/4-Description.md +0 -4
  67. package/workdocs/5-HowToUse.md +0 -27
  68. package/workdocs/6-Related.md +0 -7
  69. package/workdocs/7-Social.md +0 -5
  70. package/workdocs/99-Footer.md +0 -28
  71. package/workdocs/Readme.md +0 -12
  72. package/workdocs/assets/apple-touch-icon.png +0 -0
  73. package/workdocs/assets/decaf-logo.svg +0 -54
  74. package/workdocs/assets/favicon.png +0 -0
  75. package/workdocs/assets/slogans.json +0 -182
  76. package/workdocs/confluence/.markdown-confluence.template.json +0 -6
  77. package/workdocs/confluence/Angular Module.md +0 -5
  78. package/workdocs/drawings/diagram.drawio +0 -24
  79. package/workdocs/prompts/bulk.md +0 -122
  80. package/workdocs/prompts/code.md +0 -47
  81. package/workdocs/prompts/documentation.md +0 -146
  82. package/workdocs/prompts/uml.md +0 -11
  83. package/workdocs/readme-md.json +0 -6
  84. package/workdocs/reports/CHANGELOG.md +0 -12
  85. package/workdocs/reports/DEPENDENCIES.md +0 -213
  86. package/workdocs/reports/RELEASE_NOTES.md +0 -24
  87. package/workdocs/reports/coverage/.gitkeep +0 -0
  88. package/workdocs/reports/coverage/clover.xml +0 -4110
  89. package/workdocs/reports/coverage/coverage-final.json +0 -76
  90. package/workdocs/reports/coverage/lcov-report/base.css +0 -224
  91. package/workdocs/reports/coverage/lcov-report/block-navigation.js +0 -87
  92. package/workdocs/reports/coverage/lcov-report/favicon.png +0 -0
  93. package/workdocs/reports/coverage/lcov-report/index.html +0 -551
  94. package/workdocs/reports/coverage/lcov-report/prettify.css +0 -1
  95. package/workdocs/reports/coverage/lcov-report/prettify.js +0 -2
  96. package/workdocs/reports/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  97. package/workdocs/reports/coverage/lcov-report/sorter.js +0 -210
  98. package/workdocs/reports/coverage/lcov-report/src/app/models/CategoryModel.ts.html +0 -277
  99. package/workdocs/reports/coverage/lcov-report/src/app/models/DemoModel.ts.html +0 -427
  100. package/workdocs/reports/coverage/lcov-report/src/app/models/UserModel.ts.html +0 -226
  101. package/workdocs/reports/coverage/lcov-report/src/app/models/index.html +0 -146
  102. package/workdocs/reports/coverage/lcov-report/src/cli-module.ts.html +0 -502
  103. package/workdocs/reports/coverage/lcov-report/src/environments/environment.ts.html +0 -166
  104. package/workdocs/reports/coverage/lcov-report/src/environments/index.html +0 -116
  105. package/workdocs/reports/coverage/lcov-report/src/index.html +0 -191
  106. package/workdocs/reports/coverage/lcov-report/src/karma-test.ts.html +0 -121
  107. package/workdocs/reports/coverage/lcov-report/src/lib/components/card/card.component.ts.html +0 -625
  108. package/workdocs/reports/coverage/lcov-report/src/lib/components/card/index.html +0 -116
  109. package/workdocs/reports/coverage/lcov-report/src/lib/components/component-renderer/component-renderer.component.ts.html +0 -772
  110. package/workdocs/reports/coverage/lcov-report/src/lib/components/component-renderer/index.html +0 -116
  111. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-field/crud-field.component.ts.html +0 -2698
  112. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-field/index.html +0 -116
  113. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/constants.ts.html +0 -133
  114. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/crud-form.component.ts.html +0 -346
  115. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/index.html +0 -116
  116. package/workdocs/reports/coverage/lcov-report/src/lib/components/empty-state/empty-state.component.ts.html +0 -1264
  117. package/workdocs/reports/coverage/lcov-report/src/lib/components/empty-state/index.html +0 -116
  118. package/workdocs/reports/coverage/lcov-report/src/lib/components/fieldset/fieldset.component.ts.html +0 -2965
  119. package/workdocs/reports/coverage/lcov-report/src/lib/components/fieldset/index.html +0 -116
  120. package/workdocs/reports/coverage/lcov-report/src/lib/components/file-upload/file-upload.component.ts.html +0 -2263
  121. package/workdocs/reports/coverage/lcov-report/src/lib/components/file-upload/index.html +0 -116
  122. package/workdocs/reports/coverage/lcov-report/src/lib/components/filter/filter.component.ts.html +0 -2485
  123. package/workdocs/reports/coverage/lcov-report/src/lib/components/filter/index.html +0 -116
  124. package/workdocs/reports/coverage/lcov-report/src/lib/components/for-angular-components.module.ts.html +0 -259
  125. package/workdocs/reports/coverage/lcov-report/src/lib/components/icon/icon.component.ts.html +0 -358
  126. package/workdocs/reports/coverage/lcov-report/src/lib/components/icon/index.html +0 -116
  127. package/workdocs/reports/coverage/lcov-report/src/lib/components/index.html +0 -131
  128. package/workdocs/reports/coverage/lcov-report/src/lib/components/index.ts.html +0 -181
  129. package/workdocs/reports/coverage/lcov-report/src/lib/components/layout/index.html +0 -116
  130. package/workdocs/reports/coverage/lcov-report/src/lib/components/layout/layout.component.ts.html +0 -943
  131. package/workdocs/reports/coverage/lcov-report/src/lib/components/list/index.html +0 -116
  132. package/workdocs/reports/coverage/lcov-report/src/lib/components/list/list.component.ts.html +0 -4261
  133. package/workdocs/reports/coverage/lcov-report/src/lib/components/list-item/index.html +0 -116
  134. package/workdocs/reports/coverage/lcov-report/src/lib/components/list-item/list-item.component.ts.html +0 -1741
  135. package/workdocs/reports/coverage/lcov-report/src/lib/components/modal/index.html +0 -116
  136. package/workdocs/reports/coverage/lcov-report/src/lib/components/modal/modal.component.ts.html +0 -1984
  137. package/workdocs/reports/coverage/lcov-report/src/lib/components/model-renderer/index.html +0 -116
  138. package/workdocs/reports/coverage/lcov-report/src/lib/components/model-renderer/model-renderer.component.ts.html +0 -373
  139. package/workdocs/reports/coverage/lcov-report/src/lib/components/pagination/index.html +0 -116
  140. package/workdocs/reports/coverage/lcov-report/src/lib/components/pagination/pagination.component.ts.html +0 -1165
  141. package/workdocs/reports/coverage/lcov-report/src/lib/components/searchbar/index.html +0 -116
  142. package/workdocs/reports/coverage/lcov-report/src/lib/components/searchbar/searchbar.component.ts.html +0 -1774
  143. package/workdocs/reports/coverage/lcov-report/src/lib/components/stepped-form/index.html +0 -116
  144. package/workdocs/reports/coverage/lcov-report/src/lib/components/stepped-form/stepped-form.component.ts.html +0 -1219
  145. package/workdocs/reports/coverage/lcov-report/src/lib/components/table/index.html +0 -116
  146. package/workdocs/reports/coverage/lcov-report/src/lib/components/table/table.component.ts.html +0 -988
  147. package/workdocs/reports/coverage/lcov-report/src/lib/directives/NgxSvgDirective.ts.html +0 -163
  148. package/workdocs/reports/coverage/lcov-report/src/lib/directives/collapsable.directive.ts.html +0 -268
  149. package/workdocs/reports/coverage/lcov-report/src/lib/directives/index.html +0 -131
  150. package/workdocs/reports/coverage/lcov-report/src/lib/directives/index.ts.html +0 -91
  151. package/workdocs/reports/coverage/lcov-report/src/lib/engine/DynamicModule.ts.html +0 -133
  152. package/workdocs/reports/coverage/lcov-report/src/lib/engine/MediaService.ts.html +0 -142
  153. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxBaseComponent.ts.html +0 -2194
  154. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxComponentDirective.ts.html +0 -3430
  155. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxCrudFormField.ts.html +0 -721
  156. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafComponentDirective.ts.html +0 -1864
  157. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafFormFieldDirective.ts.html +0 -952
  158. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafFormService.ts.html +0 -3211
  159. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxEventHandler.ts.html +0 -307
  160. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormDirective.ts.html +0 -1366
  161. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormFieldDirective.ts.html +0 -1960
  162. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormService.ts.html +0 -3004
  163. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxModelPageDirective.ts.html +0 -1672
  164. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxPageDirective.ts.html +0 -748
  165. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxParentComponentDirective.ts.html +0 -775
  166. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRenderableComponentDirective.ts.html +0 -727
  167. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRenderingEngine.ts.html +0 -2005
  168. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRepositoryDirective.ts.html +0 -1561
  169. package/workdocs/reports/coverage/lcov-report/src/lib/engine/ValidatorFactory.ts.html +0 -817
  170. package/workdocs/reports/coverage/lcov-report/src/lib/engine/constants.ts.html +0 -1120
  171. package/workdocs/reports/coverage/lcov-report/src/lib/engine/decorators.ts.html +0 -376
  172. package/workdocs/reports/coverage/lcov-report/src/lib/engine/helpers.ts.html +0 -676
  173. package/workdocs/reports/coverage/lcov-report/src/lib/engine/index.html +0 -356
  174. package/workdocs/reports/coverage/lcov-report/src/lib/engine/index.ts.html +0 -160
  175. package/workdocs/reports/coverage/lcov-report/src/lib/engine/overrides.ts.html +0 -499
  176. package/workdocs/reports/coverage/lcov-report/src/lib/for-angular-common.module.ts.html +0 -298
  177. package/workdocs/reports/coverage/lcov-report/src/lib/helpers/index.html +0 -131
  178. package/workdocs/reports/coverage/lcov-report/src/lib/helpers/index.ts.html +0 -121
  179. package/workdocs/reports/coverage/lcov-report/src/lib/helpers/utils.ts.html +0 -1603
  180. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/FakeLoader.ts.html +0 -157
  181. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/Loader.ts.html +0 -826
  182. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/index.html +0 -146
  183. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/index.ts.html +0 -91
  184. package/workdocs/reports/coverage/lcov-report/src/lib/index.html +0 -131
  185. package/workdocs/reports/coverage/lcov-report/src/lib/public-apis.ts.html +0 -157
  186. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxFormService.ts.html +0 -3460
  187. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxMediaService.ts.html +0 -1420
  188. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxRouterService.ts.html +0 -1231
  189. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxTranslateService.ts.html +0 -214
  190. package/workdocs/reports/coverage/lcov-report/src/lib/services/index.html +0 -176
  191. package/workdocs/reports/coverage/lcov-report/src/lib/services/index.ts.html +0 -91
  192. package/workdocs/reports/coverage/lcov-report/src/lib/utils/DecafFakerRepository.ts.html +0 -571
  193. package/workdocs/reports/coverage/lcov-report/src/lib/utils/helpers.ts.html +0 -1663
  194. package/workdocs/reports/coverage/lcov-report/src/lib/utils/index.html +0 -146
  195. package/workdocs/reports/coverage/lcov-report/src/lib/utils/index.ts.html +0 -124
  196. package/workdocs/reports/coverage/lcov-report/src/main.ts.html +0 -100
  197. package/workdocs/reports/coverage/lcov-report/src/polyfills.ts.html +0 -271
  198. package/workdocs/reports/coverage/lcov-report/src/stories/Configure.stories.ts.html +0 -1156
  199. package/workdocs/reports/coverage/lcov-report/src/stories/button.component.ts.html +0 -229
  200. package/workdocs/reports/coverage/lcov-report/src/stories/button.stories.ts.html +0 -235
  201. package/workdocs/reports/coverage/lcov-report/src/stories/crud-field.stories.ts.html +0 -325
  202. package/workdocs/reports/coverage/lcov-report/src/stories/header.stories.ts.html +0 -181
  203. package/workdocs/reports/coverage/lcov-report/src/stories/index.html +0 -281
  204. package/workdocs/reports/coverage/lcov-report/src/stories/list.stories.ts.html +0 -289
  205. package/workdocs/reports/coverage/lcov-report/src/stories/login.page.stories.ts.html +0 -175
  206. package/workdocs/reports/coverage/lcov-report/src/stories/model-renderer.stories.ts.html +0 -259
  207. package/workdocs/reports/coverage/lcov-report/src/stories/page.component.ts.html +0 -331
  208. package/workdocs/reports/coverage/lcov-report/src/stories/page.stories.ts.html +0 -193
  209. package/workdocs/reports/coverage/lcov-report/src/stories/setup.ts.html +0 -127
  210. package/workdocs/reports/coverage/lcov-report/src/stories/utils.ts.html +0 -247
  211. package/workdocs/reports/coverage/lcov-report/src/tests/index.html +0 -116
  212. package/workdocs/reports/coverage/lcov-report/src/tests/karmaErrorParser.ts.html +0 -190
  213. package/workdocs/reports/coverage/lcov-report/src/typings.d.ts.html +0 -88
  214. package/workdocs/reports/coverage/lcov-report/src/zone-flags.ts.html +0 -103
  215. package/workdocs/reports/coverage/lcov.info +0 -7917
  216. package/workdocs/reports/data/.gitkeep +0 -1
  217. package/workdocs/reports/html/.gitkeep +0 -0
  218. package/workdocs/reports/html/jest-html-reporters-attach/test-report/index.js +0 -3
  219. package/workdocs/reports/html/jest-html-reporters-attach/test-report/result.js +0 -1
  220. package/workdocs/reports/html/test-report.html +0 -1
  221. package/workdocs/reports/images/.gitkeep +0 -1
  222. package/workdocs/reports/jest.coverage.config.ts +0 -43
  223. package/workdocs/reports/junit/junit-report.xml +0 -91
  224. package/workdocs/resources/.gitlock +0 -0
  225. package/workdocs/resources/diagram-Actor.png +0 -0
  226. package/workdocs/resources/diagram-banner.png +0 -0
  227. package/workdocs/resources/diagram.png +0 -0
  228. package/workdocs/tutorials/Contributing.md +0 -64
  229. package/workdocs/tutorials/Documentation.md +0 -340
  230. package/workdocs/tutorials/For Developers.md +0 -337
  231. package/workdocs/uml/diagram.puml +0 -11
  232. package/www/1049.10b030f0de36543b.js +0 -1
  233. package/www/1102.67cedfb3e29f0a05.js +0 -1
  234. package/www/1107.6454396befef800d.js +0 -1
  235. package/www/1459.cabc18e941afa5d7.js +0 -1
  236. package/www/1577.5221deebe3501e43.js +0 -1
  237. package/www/2075.b6dc4fbb89dd6afc.js +0 -1
  238. package/www/2348.c4cc27dadbec70ec.js +0 -1
  239. package/www/2375.318d0b24ab346271.js +0 -1
  240. package/www/2415.618d6968ffda319c.js +0 -1
  241. package/www/2460.1d97c6f48b898ee2.js +0 -1
  242. package/www/2560.2e7000dcf80b6b2c.js +0 -1
  243. package/www/2585.dffa5649fffafb44.js +0 -1
  244. package/www/2885.d99b86afd1ff7aa8.js +0 -1
  245. package/www/3162.bbc401f4a5f82460.js +0 -1
  246. package/www/323.f64c512be5c8d797.js +0 -1
  247. package/www/3238.a3e7e8004c6b6667.js +0 -1
  248. package/www/3506.8c03f5589b33a4a6.js +0 -1
  249. package/www/3511.56b7e49bb6c2c936.js +0 -1
  250. package/www/3519.84fbb67dc803f702.js +0 -1
  251. package/www/3675.7ebfdcf145052232.js +0 -1
  252. package/www/3814.765c1794e1be63de.js +0 -1
  253. package/www/3rdpartylicenses.txt +0 -1344
  254. package/www/4171.a974bdbf9c97e4e1.js +0 -1
  255. package/www/4183.41ef1def450a2cc0.js +0 -1
  256. package/www/4406.0b2dd3839b8c1417.js +0 -1
  257. package/www/441.e1031657c7e5f0ff.js +0 -1
  258. package/www/4463.6ad7b857e5f34009.js +0 -1
  259. package/www/4591.42f34534d38b9b31.js +0 -1
  260. package/www/4699.8df8ea9806163d4c.js +0 -1
  261. package/www/5100.ed6483c55a157d67.js +0 -1
  262. package/www/5193.15ea6938534eceb1.js +0 -1
  263. package/www/5197.6733853529768a45.js +0 -1
  264. package/www/5222.8439a641c2c4b1c1.js +0 -1
  265. package/www/5373.d7878f708309f038.js +0 -1
  266. package/www/5467.53f5cce977c2e28b.js +0 -1
  267. package/www/5712.b08cf436ee8145ce.js +0 -1
  268. package/www/5887.3d038f564e925abb.js +0 -1
  269. package/www/5949.37330f20e95dee79.js +0 -1
  270. package/www/6024.c10cc3d1b341c748.js +0 -1
  271. package/www/6433.360fcff952bde822.js +0 -1
  272. package/www/6499.60169da9869db697.js +0 -1
  273. package/www/6521.fab1f34bfe6b8200.js +0 -1
  274. package/www/6631.eaa711da6e0aeed9.js +0 -1
  275. package/www/6717.b4731255038304cd.js +0 -1
  276. package/www/6840.7317cd962ab23932.js +0 -1
  277. package/www/7030.d115d82ca7468a4e.js +0 -1
  278. package/www/7076.cce20ed5c79ff305.js +0 -1
  279. package/www/7179.c0545989ce869b3d.js +0 -1
  280. package/www/7240.69aeb484d78eb24d.js +0 -1
  281. package/www/7372.94c62459e34f7303.js +0 -1
  282. package/www/7402.983a5ecff61e9a5d.js +0 -1
  283. package/www/7428.527ac48035a2f915.js +0 -1
  284. package/www/7676.d7db23d350e4b096.js +0 -1
  285. package/www/770.80af87d5eb0075d3.js +0 -1
  286. package/www/7720.0701576cb9966779.js +0 -1
  287. package/www/7927.ee869d0dc478250a.js +0 -1
  288. package/www/8066.894688fbb2e5c832.js +0 -1
  289. package/www/8193.7f09ecd40b6d42c2.js +0 -1
  290. package/www/8255.158098a6302c91c2.js +0 -1
  291. package/www/8314.596c1ccf26b9c93a.js +0 -1
  292. package/www/8357.c5406b92e6933d7a.js +0 -1
  293. package/www/8477.a3ccc11c25a642d3.js +0 -1
  294. package/www/8487.93b6f7465ae1b7ac.js +0 -1
  295. package/www/8584.b77ad478a5a7ac2a.js +0 -1
  296. package/www/8805.a87413652185ff8f.js +0 -1
  297. package/www/8814.b489a78ae8e926c4.js +0 -1
  298. package/www/8970.234b3db1f97528fe.js +0 -1
  299. package/www/9013.c2e6ba17a915bdd6.js +0 -1
  300. package/www/9073.16c4e42482d55a3c.js +0 -1
  301. package/www/9344.7d2d24b194b794e2.js +0 -1
  302. package/www/9364.9a028036dd89e3e7.js +0 -1
  303. package/www/944.7e4317348c48d4f4.js +0 -1
  304. package/www/964.9a979e1c1aad0f5b.js +0 -1
  305. package/www/9657.8c3589a0aff521c0.js +0 -1
  306. package/www/9956.2d00a2153e9a7799.js +0 -1
  307. package/www/9977.068cd5561462bc99.js +0 -1
  308. package/www/assets/i18n/en.json +0 -210
  309. package/www/assets/i18n/ew/en.json +0 -346
  310. package/www/assets/i18n/pt.json +0 -186
  311. package/www/assets/icons/icon-128.webp +0 -0
  312. package/www/assets/icons/icon-192.webp +0 -0
  313. package/www/assets/icons/icon-256.webp +0 -0
  314. package/www/assets/icons/icon-48.webp +0 -0
  315. package/www/assets/icons/icon-512.webp +0 -0
  316. package/www/assets/icons/icon-72.webp +0 -0
  317. package/www/assets/icons/icon-96.webp +0 -0
  318. package/www/assets/images/angular-logo.svg +0 -45
  319. package/www/assets/images/apple-touch-icon.png +0 -0
  320. package/www/assets/images/decaf-logo-black.svg +0 -22
  321. package/www/assets/images/decaf-logo-contrast.svg +0 -54
  322. package/www/assets/images/decaf-logo-white.svg +0 -22
  323. package/www/assets/images/decaf-logo.svg +0 -54
  324. package/www/assets/images/ew/product.txt +0 -1
  325. package/www/assets/images/favicon-contrast.svg +0 -7
  326. package/www/assets/images/favicon.png +0 -0
  327. package/www/assets/images/favicon.svg +0 -29
  328. package/www/assets/images/icons/document.svg +0 -7
  329. package/www/assets/images/icons/edit.svg +0 -1
  330. package/www/assets/images/icons/logout.svg +0 -4
  331. package/www/assets/images/icons/menu-collapse.svg +0 -5
  332. package/www/assets/images/icons/menu.svg +0 -3
  333. package/www/assets/images/icons/moon-stars.svg +0 -5
  334. package/www/assets/images/icons/trash.svg +0 -1
  335. package/www/cli-module.ts +0 -139
  336. package/www/common.e50b5f8708aca9a5.js +0 -1
  337. package/www/index.html +0 -29
  338. package/www/main.6144bf417dec1977.js +0 -1
  339. package/www/polyfills.4c1e087fffe784e8.js +0 -1
  340. package/www/runtime.d8dcb0932f88fe3c.js +0 -1
  341. package/www/styles.5a3cd83eba16afc9.css +0 -4
  342. package/www/tabler-icons.bfabe54eef86ae62.woff +0 -0
  343. package/www/tabler-icons.d9f65ab9439b4ffc.ttf +0 -0
  344. package/www/tabler-icons.f17d2c3b34a5deaa.woff2 +0 -0
  345. /package/{dist/lib/assets → assets}/i18n/en.json +0 -0
  346. /package/{dist/lib/assets → assets}/i18n/ew/en.json +0 -0
  347. /package/{dist/lib/assets → assets}/i18n/pt.json +0 -0
  348. /package/{dist/lib/assets → assets}/icons/icon-128.webp +0 -0
  349. /package/{dist/lib/assets → assets}/icons/icon-192.webp +0 -0
  350. /package/{dist/lib/assets → assets}/icons/icon-256.webp +0 -0
  351. /package/{dist/lib/assets → assets}/icons/icon-48.webp +0 -0
  352. /package/{dist/lib/assets → assets}/icons/icon-512.webp +0 -0
  353. /package/{dist/lib/assets → assets}/icons/icon-72.webp +0 -0
  354. /package/{dist/lib/assets → assets}/icons/icon-96.webp +0 -0
  355. /package/{dist/lib/assets → assets}/images/angular-logo.svg +0 -0
  356. /package/{dist/lib/assets → assets}/images/apple-touch-icon.png +0 -0
  357. /package/{dist/lib/assets → assets}/images/decaf-logo-black.svg +0 -0
  358. /package/{dist/lib/assets → assets}/images/decaf-logo-contrast.svg +0 -0
  359. /package/{dist/lib/assets → assets}/images/decaf-logo-white.svg +0 -0
  360. /package/{dist/lib/assets → assets}/images/decaf-logo.svg +0 -0
  361. /package/{dist/lib/assets → assets}/images/ew/product.txt +0 -0
  362. /package/{dist/lib/assets → assets}/images/favicon-contrast.svg +0 -0
  363. /package/{dist/lib/assets → assets}/images/favicon.png +0 -0
  364. /package/{dist/lib/assets → assets}/images/favicon.svg +0 -0
  365. /package/{dist/lib/assets → assets}/images/icons/document.svg +0 -0
  366. /package/{dist/lib/assets → assets}/images/icons/edit.svg +0 -0
  367. /package/{dist/lib/assets → assets}/images/icons/logout.svg +0 -0
  368. /package/{dist/lib/assets → assets}/images/icons/menu-collapse.svg +0 -0
  369. /package/{dist/lib/assets → assets}/images/icons/menu.svg +0 -0
  370. /package/{dist/lib/assets → assets}/images/icons/moon-stars.svg +0 -0
  371. /package/{dist/lib/assets → assets}/images/icons/trash.svg +0 -0
  372. /package/{dist/lib/fesm2022 → fesm2022}/decaf-ts-for-angular.mjs +0 -0
  373. /package/{dist/lib/fesm2022 → fesm2022}/decaf-ts-for-angular.mjs.map +0 -0
  374. /package/{dist/lib/index.d.ts → index.d.ts} +0 -0
@@ -1,3004 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/lib/engine/NgxFormService.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/lib/engine</a> NgxFormService.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">6.91% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>15/217</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/147</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">10.81% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>4/37</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">7.04% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>15/213</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a>
609
- <a name='L544'></a><a href='#L544'>544</a>
610
- <a name='L545'></a><a href='#L545'>545</a>
611
- <a name='L546'></a><a href='#L546'>546</a>
612
- <a name='L547'></a><a href='#L547'>547</a>
613
- <a name='L548'></a><a href='#L548'>548</a>
614
- <a name='L549'></a><a href='#L549'>549</a>
615
- <a name='L550'></a><a href='#L550'>550</a>
616
- <a name='L551'></a><a href='#L551'>551</a>
617
- <a name='L552'></a><a href='#L552'>552</a>
618
- <a name='L553'></a><a href='#L553'>553</a>
619
- <a name='L554'></a><a href='#L554'>554</a>
620
- <a name='L555'></a><a href='#L555'>555</a>
621
- <a name='L556'></a><a href='#L556'>556</a>
622
- <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a>
624
- <a name='L559'></a><a href='#L559'>559</a>
625
- <a name='L560'></a><a href='#L560'>560</a>
626
- <a name='L561'></a><a href='#L561'>561</a>
627
- <a name='L562'></a><a href='#L562'>562</a>
628
- <a name='L563'></a><a href='#L563'>563</a>
629
- <a name='L564'></a><a href='#L564'>564</a>
630
- <a name='L565'></a><a href='#L565'>565</a>
631
- <a name='L566'></a><a href='#L566'>566</a>
632
- <a name='L567'></a><a href='#L567'>567</a>
633
- <a name='L568'></a><a href='#L568'>568</a>
634
- <a name='L569'></a><a href='#L569'>569</a>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a>
642
- <a name='L577'></a><a href='#L577'>577</a>
643
- <a name='L578'></a><a href='#L578'>578</a>
644
- <a name='L579'></a><a href='#L579'>579</a>
645
- <a name='L580'></a><a href='#L580'>580</a>
646
- <a name='L581'></a><a href='#L581'>581</a>
647
- <a name='L582'></a><a href='#L582'>582</a>
648
- <a name='L583'></a><a href='#L583'>583</a>
649
- <a name='L584'></a><a href='#L584'>584</a>
650
- <a name='L585'></a><a href='#L585'>585</a>
651
- <a name='L586'></a><a href='#L586'>586</a>
652
- <a name='L587'></a><a href='#L587'>587</a>
653
- <a name='L588'></a><a href='#L588'>588</a>
654
- <a name='L589'></a><a href='#L589'>589</a>
655
- <a name='L590'></a><a href='#L590'>590</a>
656
- <a name='L591'></a><a href='#L591'>591</a>
657
- <a name='L592'></a><a href='#L592'>592</a>
658
- <a name='L593'></a><a href='#L593'>593</a>
659
- <a name='L594'></a><a href='#L594'>594</a>
660
- <a name='L595'></a><a href='#L595'>595</a>
661
- <a name='L596'></a><a href='#L596'>596</a>
662
- <a name='L597'></a><a href='#L597'>597</a>
663
- <a name='L598'></a><a href='#L598'>598</a>
664
- <a name='L599'></a><a href='#L599'>599</a>
665
- <a name='L600'></a><a href='#L600'>600</a>
666
- <a name='L601'></a><a href='#L601'>601</a>
667
- <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a>
669
- <a name='L604'></a><a href='#L604'>604</a>
670
- <a name='L605'></a><a href='#L605'>605</a>
671
- <a name='L606'></a><a href='#L606'>606</a>
672
- <a name='L607'></a><a href='#L607'>607</a>
673
- <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a>
718
- <a name='L653'></a><a href='#L653'>653</a>
719
- <a name='L654'></a><a href='#L654'>654</a>
720
- <a name='L655'></a><a href='#L655'>655</a>
721
- <a name='L656'></a><a href='#L656'>656</a>
722
- <a name='L657'></a><a href='#L657'>657</a>
723
- <a name='L658'></a><a href='#L658'>658</a>
724
- <a name='L659'></a><a href='#L659'>659</a>
725
- <a name='L660'></a><a href='#L660'>660</a>
726
- <a name='L661'></a><a href='#L661'>661</a>
727
- <a name='L662'></a><a href='#L662'>662</a>
728
- <a name='L663'></a><a href='#L663'>663</a>
729
- <a name='L664'></a><a href='#L664'>664</a>
730
- <a name='L665'></a><a href='#L665'>665</a>
731
- <a name='L666'></a><a href='#L666'>666</a>
732
- <a name='L667'></a><a href='#L667'>667</a>
733
- <a name='L668'></a><a href='#L668'>668</a>
734
- <a name='L669'></a><a href='#L669'>669</a>
735
- <a name='L670'></a><a href='#L670'>670</a>
736
- <a name='L671'></a><a href='#L671'>671</a>
737
- <a name='L672'></a><a href='#L672'>672</a>
738
- <a name='L673'></a><a href='#L673'>673</a>
739
- <a name='L674'></a><a href='#L674'>674</a>
740
- <a name='L675'></a><a href='#L675'>675</a>
741
- <a name='L676'></a><a href='#L676'>676</a>
742
- <a name='L677'></a><a href='#L677'>677</a>
743
- <a name='L678'></a><a href='#L678'>678</a>
744
- <a name='L679'></a><a href='#L679'>679</a>
745
- <a name='L680'></a><a href='#L680'>680</a>
746
- <a name='L681'></a><a href='#L681'>681</a>
747
- <a name='L682'></a><a href='#L682'>682</a>
748
- <a name='L683'></a><a href='#L683'>683</a>
749
- <a name='L684'></a><a href='#L684'>684</a>
750
- <a name='L685'></a><a href='#L685'>685</a>
751
- <a name='L686'></a><a href='#L686'>686</a>
752
- <a name='L687'></a><a href='#L687'>687</a>
753
- <a name='L688'></a><a href='#L688'>688</a>
754
- <a name='L689'></a><a href='#L689'>689</a>
755
- <a name='L690'></a><a href='#L690'>690</a>
756
- <a name='L691'></a><a href='#L691'>691</a>
757
- <a name='L692'></a><a href='#L692'>692</a>
758
- <a name='L693'></a><a href='#L693'>693</a>
759
- <a name='L694'></a><a href='#L694'>694</a>
760
- <a name='L695'></a><a href='#L695'>695</a>
761
- <a name='L696'></a><a href='#L696'>696</a>
762
- <a name='L697'></a><a href='#L697'>697</a>
763
- <a name='L698'></a><a href='#L698'>698</a>
764
- <a name='L699'></a><a href='#L699'>699</a>
765
- <a name='L700'></a><a href='#L700'>700</a>
766
- <a name='L701'></a><a href='#L701'>701</a>
767
- <a name='L702'></a><a href='#L702'>702</a>
768
- <a name='L703'></a><a href='#L703'>703</a>
769
- <a name='L704'></a><a href='#L704'>704</a>
770
- <a name='L705'></a><a href='#L705'>705</a>
771
- <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a>
779
- <a name='L714'></a><a href='#L714'>714</a>
780
- <a name='L715'></a><a href='#L715'>715</a>
781
- <a name='L716'></a><a href='#L716'>716</a>
782
- <a name='L717'></a><a href='#L717'>717</a>
783
- <a name='L718'></a><a href='#L718'>718</a>
784
- <a name='L719'></a><a href='#L719'>719</a>
785
- <a name='L720'></a><a href='#L720'>720</a>
786
- <a name='L721'></a><a href='#L721'>721</a>
787
- <a name='L722'></a><a href='#L722'>722</a>
788
- <a name='L723'></a><a href='#L723'>723</a>
789
- <a name='L724'></a><a href='#L724'>724</a>
790
- <a name='L725'></a><a href='#L725'>725</a>
791
- <a name='L726'></a><a href='#L726'>726</a>
792
- <a name='L727'></a><a href='#L727'>727</a>
793
- <a name='L728'></a><a href='#L728'>728</a>
794
- <a name='L729'></a><a href='#L729'>729</a>
795
- <a name='L730'></a><a href='#L730'>730</a>
796
- <a name='L731'></a><a href='#L731'>731</a>
797
- <a name='L732'></a><a href='#L732'>732</a>
798
- <a name='L733'></a><a href='#L733'>733</a>
799
- <a name='L734'></a><a href='#L734'>734</a>
800
- <a name='L735'></a><a href='#L735'>735</a>
801
- <a name='L736'></a><a href='#L736'>736</a>
802
- <a name='L737'></a><a href='#L737'>737</a>
803
- <a name='L738'></a><a href='#L738'>738</a>
804
- <a name='L739'></a><a href='#L739'>739</a>
805
- <a name='L740'></a><a href='#L740'>740</a>
806
- <a name='L741'></a><a href='#L741'>741</a>
807
- <a name='L742'></a><a href='#L742'>742</a>
808
- <a name='L743'></a><a href='#L743'>743</a>
809
- <a name='L744'></a><a href='#L744'>744</a>
810
- <a name='L745'></a><a href='#L745'>745</a>
811
- <a name='L746'></a><a href='#L746'>746</a>
812
- <a name='L747'></a><a href='#L747'>747</a>
813
- <a name='L748'></a><a href='#L748'>748</a>
814
- <a name='L749'></a><a href='#L749'>749</a>
815
- <a name='L750'></a><a href='#L750'>750</a>
816
- <a name='L751'></a><a href='#L751'>751</a>
817
- <a name='L752'></a><a href='#L752'>752</a>
818
- <a name='L753'></a><a href='#L753'>753</a>
819
- <a name='L754'></a><a href='#L754'>754</a>
820
- <a name='L755'></a><a href='#L755'>755</a>
821
- <a name='L756'></a><a href='#L756'>756</a>
822
- <a name='L757'></a><a href='#L757'>757</a>
823
- <a name='L758'></a><a href='#L758'>758</a>
824
- <a name='L759'></a><a href='#L759'>759</a>
825
- <a name='L760'></a><a href='#L760'>760</a>
826
- <a name='L761'></a><a href='#L761'>761</a>
827
- <a name='L762'></a><a href='#L762'>762</a>
828
- <a name='L763'></a><a href='#L763'>763</a>
829
- <a name='L764'></a><a href='#L764'>764</a>
830
- <a name='L765'></a><a href='#L765'>765</a>
831
- <a name='L766'></a><a href='#L766'>766</a>
832
- <a name='L767'></a><a href='#L767'>767</a>
833
- <a name='L768'></a><a href='#L768'>768</a>
834
- <a name='L769'></a><a href='#L769'>769</a>
835
- <a name='L770'></a><a href='#L770'>770</a>
836
- <a name='L771'></a><a href='#L771'>771</a>
837
- <a name='L772'></a><a href='#L772'>772</a>
838
- <a name='L773'></a><a href='#L773'>773</a>
839
- <a name='L774'></a><a href='#L774'>774</a>
840
- <a name='L775'></a><a href='#L775'>775</a>
841
- <a name='L776'></a><a href='#L776'>776</a>
842
- <a name='L777'></a><a href='#L777'>777</a>
843
- <a name='L778'></a><a href='#L778'>778</a>
844
- <a name='L779'></a><a href='#L779'>779</a>
845
- <a name='L780'></a><a href='#L780'>780</a>
846
- <a name='L781'></a><a href='#L781'>781</a>
847
- <a name='L782'></a><a href='#L782'>782</a>
848
- <a name='L783'></a><a href='#L783'>783</a>
849
- <a name='L784'></a><a href='#L784'>784</a>
850
- <a name='L785'></a><a href='#L785'>785</a>
851
- <a name='L786'></a><a href='#L786'>786</a>
852
- <a name='L787'></a><a href='#L787'>787</a>
853
- <a name='L788'></a><a href='#L788'>788</a>
854
- <a name='L789'></a><a href='#L789'>789</a>
855
- <a name='L790'></a><a href='#L790'>790</a>
856
- <a name='L791'></a><a href='#L791'>791</a>
857
- <a name='L792'></a><a href='#L792'>792</a>
858
- <a name='L793'></a><a href='#L793'>793</a>
859
- <a name='L794'></a><a href='#L794'>794</a>
860
- <a name='L795'></a><a href='#L795'>795</a>
861
- <a name='L796'></a><a href='#L796'>796</a>
862
- <a name='L797'></a><a href='#L797'>797</a>
863
- <a name='L798'></a><a href='#L798'>798</a>
864
- <a name='L799'></a><a href='#L799'>799</a>
865
- <a name='L800'></a><a href='#L800'>800</a>
866
- <a name='L801'></a><a href='#L801'>801</a>
867
- <a name='L802'></a><a href='#L802'>802</a>
868
- <a name='L803'></a><a href='#L803'>803</a>
869
- <a name='L804'></a><a href='#L804'>804</a>
870
- <a name='L805'></a><a href='#L805'>805</a>
871
- <a name='L806'></a><a href='#L806'>806</a>
872
- <a name='L807'></a><a href='#L807'>807</a>
873
- <a name='L808'></a><a href='#L808'>808</a>
874
- <a name='L809'></a><a href='#L809'>809</a>
875
- <a name='L810'></a><a href='#L810'>810</a>
876
- <a name='L811'></a><a href='#L811'>811</a>
877
- <a name='L812'></a><a href='#L812'>812</a>
878
- <a name='L813'></a><a href='#L813'>813</a>
879
- <a name='L814'></a><a href='#L814'>814</a>
880
- <a name='L815'></a><a href='#L815'>815</a>
881
- <a name='L816'></a><a href='#L816'>816</a>
882
- <a name='L817'></a><a href='#L817'>817</a>
883
- <a name='L818'></a><a href='#L818'>818</a>
884
- <a name='L819'></a><a href='#L819'>819</a>
885
- <a name='L820'></a><a href='#L820'>820</a>
886
- <a name='L821'></a><a href='#L821'>821</a>
887
- <a name='L822'></a><a href='#L822'>822</a>
888
- <a name='L823'></a><a href='#L823'>823</a>
889
- <a name='L824'></a><a href='#L824'>824</a>
890
- <a name='L825'></a><a href='#L825'>825</a>
891
- <a name='L826'></a><a href='#L826'>826</a>
892
- <a name='L827'></a><a href='#L827'>827</a>
893
- <a name='L828'></a><a href='#L828'>828</a>
894
- <a name='L829'></a><a href='#L829'>829</a>
895
- <a name='L830'></a><a href='#L830'>830</a>
896
- <a name='L831'></a><a href='#L831'>831</a>
897
- <a name='L832'></a><a href='#L832'>832</a>
898
- <a name='L833'></a><a href='#L833'>833</a>
899
- <a name='L834'></a><a href='#L834'>834</a>
900
- <a name='L835'></a><a href='#L835'>835</a>
901
- <a name='L836'></a><a href='#L836'>836</a>
902
- <a name='L837'></a><a href='#L837'>837</a>
903
- <a name='L838'></a><a href='#L838'>838</a>
904
- <a name='L839'></a><a href='#L839'>839</a>
905
- <a name='L840'></a><a href='#L840'>840</a>
906
- <a name='L841'></a><a href='#L841'>841</a>
907
- <a name='L842'></a><a href='#L842'>842</a>
908
- <a name='L843'></a><a href='#L843'>843</a>
909
- <a name='L844'></a><a href='#L844'>844</a>
910
- <a name='L845'></a><a href='#L845'>845</a>
911
- <a name='L846'></a><a href='#L846'>846</a>
912
- <a name='L847'></a><a href='#L847'>847</a>
913
- <a name='L848'></a><a href='#L848'>848</a>
914
- <a name='L849'></a><a href='#L849'>849</a>
915
- <a name='L850'></a><a href='#L850'>850</a>
916
- <a name='L851'></a><a href='#L851'>851</a>
917
- <a name='L852'></a><a href='#L852'>852</a>
918
- <a name='L853'></a><a href='#L853'>853</a>
919
- <a name='L854'></a><a href='#L854'>854</a>
920
- <a name='L855'></a><a href='#L855'>855</a>
921
- <a name='L856'></a><a href='#L856'>856</a>
922
- <a name='L857'></a><a href='#L857'>857</a>
923
- <a name='L858'></a><a href='#L858'>858</a>
924
- <a name='L859'></a><a href='#L859'>859</a>
925
- <a name='L860'></a><a href='#L860'>860</a>
926
- <a name='L861'></a><a href='#L861'>861</a>
927
- <a name='L862'></a><a href='#L862'>862</a>
928
- <a name='L863'></a><a href='#L863'>863</a>
929
- <a name='L864'></a><a href='#L864'>864</a>
930
- <a name='L865'></a><a href='#L865'>865</a>
931
- <a name='L866'></a><a href='#L866'>866</a>
932
- <a name='L867'></a><a href='#L867'>867</a>
933
- <a name='L868'></a><a href='#L868'>868</a>
934
- <a name='L869'></a><a href='#L869'>869</a>
935
- <a name='L870'></a><a href='#L870'>870</a>
936
- <a name='L871'></a><a href='#L871'>871</a>
937
- <a name='L872'></a><a href='#L872'>872</a>
938
- <a name='L873'></a><a href='#L873'>873</a>
939
- <a name='L874'></a><a href='#L874'>874</a>
940
- <a name='L875'></a><a href='#L875'>875</a>
941
- <a name='L876'></a><a href='#L876'>876</a>
942
- <a name='L877'></a><a href='#L877'>877</a>
943
- <a name='L878'></a><a href='#L878'>878</a>
944
- <a name='L879'></a><a href='#L879'>879</a>
945
- <a name='L880'></a><a href='#L880'>880</a>
946
- <a name='L881'></a><a href='#L881'>881</a>
947
- <a name='L882'></a><a href='#L882'>882</a>
948
- <a name='L883'></a><a href='#L883'>883</a>
949
- <a name='L884'></a><a href='#L884'>884</a>
950
- <a name='L885'></a><a href='#L885'>885</a>
951
- <a name='L886'></a><a href='#L886'>886</a>
952
- <a name='L887'></a><a href='#L887'>887</a>
953
- <a name='L888'></a><a href='#L888'>888</a>
954
- <a name='L889'></a><a href='#L889'>889</a>
955
- <a name='L890'></a><a href='#L890'>890</a>
956
- <a name='L891'></a><a href='#L891'>891</a>
957
- <a name='L892'></a><a href='#L892'>892</a>
958
- <a name='L893'></a><a href='#L893'>893</a>
959
- <a name='L894'></a><a href='#L894'>894</a>
960
- <a name='L895'></a><a href='#L895'>895</a>
961
- <a name='L896'></a><a href='#L896'>896</a>
962
- <a name='L897'></a><a href='#L897'>897</a>
963
- <a name='L898'></a><a href='#L898'>898</a>
964
- <a name='L899'></a><a href='#L899'>899</a>
965
- <a name='L900'></a><a href='#L900'>900</a>
966
- <a name='L901'></a><a href='#L901'>901</a>
967
- <a name='L902'></a><a href='#L902'>902</a>
968
- <a name='L903'></a><a href='#L903'>903</a>
969
- <a name='L904'></a><a href='#L904'>904</a>
970
- <a name='L905'></a><a href='#L905'>905</a>
971
- <a name='L906'></a><a href='#L906'>906</a>
972
- <a name='L907'></a><a href='#L907'>907</a>
973
- <a name='L908'></a><a href='#L908'>908</a>
974
- <a name='L909'></a><a href='#L909'>909</a>
975
- <a name='L910'></a><a href='#L910'>910</a>
976
- <a name='L911'></a><a href='#L911'>911</a>
977
- <a name='L912'></a><a href='#L912'>912</a>
978
- <a name='L913'></a><a href='#L913'>913</a>
979
- <a name='L914'></a><a href='#L914'>914</a>
980
- <a name='L915'></a><a href='#L915'>915</a>
981
- <a name='L916'></a><a href='#L916'>916</a>
982
- <a name='L917'></a><a href='#L917'>917</a>
983
- <a name='L918'></a><a href='#L918'>918</a>
984
- <a name='L919'></a><a href='#L919'>919</a>
985
- <a name='L920'></a><a href='#L920'>920</a>
986
- <a name='L921'></a><a href='#L921'>921</a>
987
- <a name='L922'></a><a href='#L922'>922</a>
988
- <a name='L923'></a><a href='#L923'>923</a>
989
- <a name='L924'></a><a href='#L924'>924</a>
990
- <a name='L925'></a><a href='#L925'>925</a>
991
- <a name='L926'></a><a href='#L926'>926</a>
992
- <a name='L927'></a><a href='#L927'>927</a>
993
- <a name='L928'></a><a href='#L928'>928</a>
994
- <a name='L929'></a><a href='#L929'>929</a>
995
- <a name='L930'></a><a href='#L930'>930</a>
996
- <a name='L931'></a><a href='#L931'>931</a>
997
- <a name='L932'></a><a href='#L932'>932</a>
998
- <a name='L933'></a><a href='#L933'>933</a>
999
- <a name='L934'></a><a href='#L934'>934</a>
1000
- <a name='L935'></a><a href='#L935'>935</a>
1001
- <a name='L936'></a><a href='#L936'>936</a>
1002
- <a name='L937'></a><a href='#L937'>937</a>
1003
- <a name='L938'></a><a href='#L938'>938</a>
1004
- <a name='L939'></a><a href='#L939'>939</a>
1005
- <a name='L940'></a><a href='#L940'>940</a>
1006
- <a name='L941'></a><a href='#L941'>941</a>
1007
- <a name='L942'></a><a href='#L942'>942</a>
1008
- <a name='L943'></a><a href='#L943'>943</a>
1009
- <a name='L944'></a><a href='#L944'>944</a>
1010
- <a name='L945'></a><a href='#L945'>945</a>
1011
- <a name='L946'></a><a href='#L946'>946</a>
1012
- <a name='L947'></a><a href='#L947'>947</a>
1013
- <a name='L948'></a><a href='#L948'>948</a>
1014
- <a name='L949'></a><a href='#L949'>949</a>
1015
- <a name='L950'></a><a href='#L950'>950</a>
1016
- <a name='L951'></a><a href='#L951'>951</a>
1017
- <a name='L952'></a><a href='#L952'>952</a>
1018
- <a name='L953'></a><a href='#L953'>953</a>
1019
- <a name='L954'></a><a href='#L954'>954</a>
1020
- <a name='L955'></a><a href='#L955'>955</a>
1021
- <a name='L956'></a><a href='#L956'>956</a>
1022
- <a name='L957'></a><a href='#L957'>957</a>
1023
- <a name='L958'></a><a href='#L958'>958</a>
1024
- <a name='L959'></a><a href='#L959'>959</a>
1025
- <a name='L960'></a><a href='#L960'>960</a>
1026
- <a name='L961'></a><a href='#L961'>961</a>
1027
- <a name='L962'></a><a href='#L962'>962</a>
1028
- <a name='L963'></a><a href='#L963'>963</a>
1029
- <a name='L964'></a><a href='#L964'>964</a>
1030
- <a name='L965'></a><a href='#L965'>965</a>
1031
- <a name='L966'></a><a href='#L966'>966</a>
1032
- <a name='L967'></a><a href='#L967'>967</a>
1033
- <a name='L968'></a><a href='#L968'>968</a>
1034
- <a name='L969'></a><a href='#L969'>969</a>
1035
- <a name='L970'></a><a href='#L970'>970</a>
1036
- <a name='L971'></a><a href='#L971'>971</a>
1037
- <a name='L972'></a><a href='#L972'>972</a>
1038
- <a name='L973'></a><a href='#L973'>973</a>
1039
- <a name='L974'></a><a href='#L974'>974</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">11x</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-neutral">&nbsp;</span>
1042
- <span class="cline-any cline-yes">11x</span>
1043
- <span class="cline-any cline-yes">11x</span>
1044
- <span class="cline-any cline-yes">11x</span>
1045
- <span class="cline-any cline-yes">11x</span>
1046
- <span class="cline-any cline-yes">11x</span>
1047
- <span class="cline-any cline-yes">11x</span>
1048
- <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-neutral">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-neutral">&nbsp;</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-yes">11x</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-neutral">&nbsp;</span>
1092
- <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-neutral">&nbsp;</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-yes">11x</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-neutral">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-yes">11x</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-neutral">&nbsp;</span>
1125
- <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-neutral">&nbsp;</span>
1132
- <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-no">&nbsp;</span>
1150
- <span class="cline-any cline-no">&nbsp;</span>
1151
- <span class="cline-any cline-no">&nbsp;</span>
1152
- <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
1158
- <span class="cline-any cline-neutral">&nbsp;</span>
1159
- <span class="cline-any cline-neutral">&nbsp;</span>
1160
- <span class="cline-any cline-neutral">&nbsp;</span>
1161
- <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-neutral">&nbsp;</span>
1163
- <span class="cline-any cline-neutral">&nbsp;</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
1165
- <span class="cline-any cline-neutral">&nbsp;</span>
1166
- <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-neutral">&nbsp;</span>
1170
- <span class="cline-any cline-neutral">&nbsp;</span>
1171
- <span class="cline-any cline-no">&nbsp;</span>
1172
- <span class="cline-any cline-no">&nbsp;</span>
1173
- <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
1179
- <span class="cline-any cline-neutral">&nbsp;</span>
1180
- <span class="cline-any cline-neutral">&nbsp;</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-neutral">&nbsp;</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-no">&nbsp;</span>
1190
- <span class="cline-any cline-neutral">&nbsp;</span>
1191
- <span class="cline-any cline-neutral">&nbsp;</span>
1192
- <span class="cline-any cline-neutral">&nbsp;</span>
1193
- <span class="cline-any cline-neutral">&nbsp;</span>
1194
- <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-neutral">&nbsp;</span>
1196
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-neutral">&nbsp;</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-neutral">&nbsp;</span>
1204
- <span class="cline-any cline-neutral">&nbsp;</span>
1205
- <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-neutral">&nbsp;</span>
1207
- <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-neutral">&nbsp;</span>
1209
- <span class="cline-any cline-neutral">&nbsp;</span>
1210
- <span class="cline-any cline-neutral">&nbsp;</span>
1211
- <span class="cline-any cline-neutral">&nbsp;</span>
1212
- <span class="cline-any cline-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-neutral">&nbsp;</span>
1215
- <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-neutral">&nbsp;</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-neutral">&nbsp;</span>
1220
- <span class="cline-any cline-neutral">&nbsp;</span>
1221
- <span class="cline-any cline-neutral">&nbsp;</span>
1222
- <span class="cline-any cline-neutral">&nbsp;</span>
1223
- <span class="cline-any cline-neutral">&nbsp;</span>
1224
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
1228
- <span class="cline-any cline-neutral">&nbsp;</span>
1229
- <span class="cline-any cline-no">&nbsp;</span>
1230
- <span class="cline-any cline-no">&nbsp;</span>
1231
- <span class="cline-any cline-no">&nbsp;</span>
1232
- <span class="cline-any cline-no">&nbsp;</span>
1233
- <span class="cline-any cline-no">&nbsp;</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-neutral">&nbsp;</span>
1236
- <span class="cline-any cline-no">&nbsp;</span>
1237
- <span class="cline-any cline-no">&nbsp;</span>
1238
- <span class="cline-any cline-no">&nbsp;</span>
1239
- <span class="cline-any cline-neutral">&nbsp;</span>
1240
- <span class="cline-any cline-neutral">&nbsp;</span>
1241
- <span class="cline-any cline-no">&nbsp;</span>
1242
- <span class="cline-any cline-no">&nbsp;</span>
1243
- <span class="cline-any cline-no">&nbsp;</span>
1244
- <span class="cline-any cline-no">&nbsp;</span>
1245
- <span class="cline-any cline-neutral">&nbsp;</span>
1246
- <span class="cline-any cline-neutral">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-neutral">&nbsp;</span>
1249
- <span class="cline-any cline-neutral">&nbsp;</span>
1250
- <span class="cline-any cline-neutral">&nbsp;</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-no">&nbsp;</span>
1253
- <span class="cline-any cline-no">&nbsp;</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-no">&nbsp;</span>
1257
- <span class="cline-any cline-no">&nbsp;</span>
1258
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1262
- <span class="cline-any cline-no">&nbsp;</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-no">&nbsp;</span>
1265
- <span class="cline-any cline-neutral">&nbsp;</span>
1266
- <span class="cline-any cline-neutral">&nbsp;</span>
1267
- <span class="cline-any cline-no">&nbsp;</span>
1268
- <span class="cline-any cline-no">&nbsp;</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-no">&nbsp;</span>
1271
- <span class="cline-any cline-neutral">&nbsp;</span>
1272
- <span class="cline-any cline-no">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-neutral">&nbsp;</span>
1277
- <span class="cline-any cline-neutral">&nbsp;</span>
1278
- <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-neutral">&nbsp;</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-neutral">&nbsp;</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-neutral">&nbsp;</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-no">&nbsp;</span>
1290
- <span class="cline-any cline-no">&nbsp;</span>
1291
- <span class="cline-any cline-no">&nbsp;</span>
1292
- <span class="cline-any cline-no">&nbsp;</span>
1293
- <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-neutral">&nbsp;</span>
1299
- <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-neutral">&nbsp;</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-neutral">&nbsp;</span>
1304
- <span class="cline-any cline-neutral">&nbsp;</span>
1305
- <span class="cline-any cline-neutral">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-neutral">&nbsp;</span>
1310
- <span class="cline-any cline-no">&nbsp;</span>
1311
- <span class="cline-any cline-no">&nbsp;</span>
1312
- <span class="cline-any cline-no">&nbsp;</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-no">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-neutral">&nbsp;</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-neutral">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-neutral">&nbsp;</span>
1326
- <span class="cline-any cline-neutral">&nbsp;</span>
1327
- <span class="cline-any cline-neutral">&nbsp;</span>
1328
- <span class="cline-any cline-neutral">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
- <span class="cline-any cline-neutral">&nbsp;</span>
1332
- <span class="cline-any cline-no">&nbsp;</span>
1333
- <span class="cline-any cline-no">&nbsp;</span>
1334
- <span class="cline-any cline-no">&nbsp;</span>
1335
- <span class="cline-any cline-no">&nbsp;</span>
1336
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-neutral">&nbsp;</span>
1343
- <span class="cline-any cline-neutral">&nbsp;</span>
1344
- <span class="cline-any cline-neutral">&nbsp;</span>
1345
- <span class="cline-any cline-neutral">&nbsp;</span>
1346
- <span class="cline-any cline-neutral">&nbsp;</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-neutral">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-no">&nbsp;</span>
1353
- <span class="cline-any cline-no">&nbsp;</span>
1354
- <span class="cline-any cline-no">&nbsp;</span>
1355
- <span class="cline-any cline-neutral">&nbsp;</span>
1356
- <span class="cline-any cline-neutral">&nbsp;</span>
1357
- <span class="cline-any cline-no">&nbsp;</span>
1358
- <span class="cline-any cline-no">&nbsp;</span>
1359
- <span class="cline-any cline-no">&nbsp;</span>
1360
- <span class="cline-any cline-no">&nbsp;</span>
1361
- <span class="cline-any cline-no">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-no">&nbsp;</span>
1364
- <span class="cline-any cline-no">&nbsp;</span>
1365
- <span class="cline-any cline-no">&nbsp;</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-neutral">&nbsp;</span>
1369
- <span class="cline-any cline-neutral">&nbsp;</span>
1370
- <span class="cline-any cline-neutral">&nbsp;</span>
1371
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-neutral">&nbsp;</span>
1378
- <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-neutral">&nbsp;</span>
1381
- <span class="cline-any cline-no">&nbsp;</span>
1382
- <span class="cline-any cline-no">&nbsp;</span>
1383
- <span class="cline-any cline-no">&nbsp;</span>
1384
- <span class="cline-any cline-no">&nbsp;</span>
1385
- <span class="cline-any cline-no">&nbsp;</span>
1386
- <span class="cline-any cline-no">&nbsp;</span>
1387
- <span class="cline-any cline-no">&nbsp;</span>
1388
- <span class="cline-any cline-neutral">&nbsp;</span>
1389
- <span class="cline-any cline-neutral">&nbsp;</span>
1390
- <span class="cline-any cline-neutral">&nbsp;</span>
1391
- <span class="cline-any cline-neutral">&nbsp;</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-neutral">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-neutral">&nbsp;</span>
1398
- <span class="cline-any cline-neutral">&nbsp;</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-neutral">&nbsp;</span>
1401
- <span class="cline-any cline-neutral">&nbsp;</span>
1402
- <span class="cline-any cline-neutral">&nbsp;</span>
1403
- <span class="cline-any cline-neutral">&nbsp;</span>
1404
- <span class="cline-any cline-neutral">&nbsp;</span>
1405
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
1410
- <span class="cline-any cline-neutral">&nbsp;</span>
1411
- <span class="cline-any cline-neutral">&nbsp;</span>
1412
- <span class="cline-any cline-no">&nbsp;</span>
1413
- <span class="cline-any cline-no">&nbsp;</span>
1414
- <span class="cline-any cline-no">&nbsp;</span>
1415
- <span class="cline-any cline-no">&nbsp;</span>
1416
- <span class="cline-any cline-no">&nbsp;</span>
1417
- <span class="cline-any cline-no">&nbsp;</span>
1418
- <span class="cline-any cline-neutral">&nbsp;</span>
1419
- <span class="cline-any cline-no">&nbsp;</span>
1420
- <span class="cline-any cline-no">&nbsp;</span>
1421
- <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-neutral">&nbsp;</span>
1423
- <span class="cline-any cline-neutral">&nbsp;</span>
1424
- <span class="cline-any cline-no">&nbsp;</span>
1425
- <span class="cline-any cline-no">&nbsp;</span>
1426
- <span class="cline-any cline-no">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-no">&nbsp;</span>
1429
- <span class="cline-any cline-no">&nbsp;</span>
1430
- <span class="cline-any cline-no">&nbsp;</span>
1431
- <span class="cline-any cline-no">&nbsp;</span>
1432
- <span class="cline-any cline-neutral">&nbsp;</span>
1433
- <span class="cline-any cline-no">&nbsp;</span>
1434
- <span class="cline-any cline-neutral">&nbsp;</span>
1435
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1439
- <span class="cline-any cline-no">&nbsp;</span>
1440
- <span class="cline-any cline-no">&nbsp;</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-neutral">&nbsp;</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1444
- <span class="cline-any cline-neutral">&nbsp;</span>
1445
- <span class="cline-any cline-neutral">&nbsp;</span>
1446
- <span class="cline-any cline-neutral">&nbsp;</span>
1447
- <span class="cline-any cline-neutral">&nbsp;</span>
1448
- <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-neutral">&nbsp;</span>
1450
- <span class="cline-any cline-neutral">&nbsp;</span>
1451
- <span class="cline-any cline-neutral">&nbsp;</span>
1452
- <span class="cline-any cline-neutral">&nbsp;</span>
1453
- <span class="cline-any cline-neutral">&nbsp;</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-neutral">&nbsp;</span>
1456
- <span class="cline-any cline-neutral">&nbsp;</span>
1457
- <span class="cline-any cline-neutral">&nbsp;</span>
1458
- <span class="cline-any cline-neutral">&nbsp;</span>
1459
- <span class="cline-any cline-neutral">&nbsp;</span>
1460
- <span class="cline-any cline-neutral">&nbsp;</span>
1461
- <span class="cline-any cline-neutral">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-neutral">&nbsp;</span>
1464
- <span class="cline-any cline-neutral">&nbsp;</span>
1465
- <span class="cline-any cline-neutral">&nbsp;</span>
1466
- <span class="cline-any cline-neutral">&nbsp;</span>
1467
- <span class="cline-any cline-neutral">&nbsp;</span>
1468
- <span class="cline-any cline-neutral">&nbsp;</span>
1469
- <span class="cline-any cline-neutral">&nbsp;</span>
1470
- <span class="cline-any cline-neutral">&nbsp;</span>
1471
- <span class="cline-any cline-neutral">&nbsp;</span>
1472
- <span class="cline-any cline-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-neutral">&nbsp;</span>
1475
- <span class="cline-any cline-neutral">&nbsp;</span>
1476
- <span class="cline-any cline-neutral">&nbsp;</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-neutral">&nbsp;</span>
1479
- <span class="cline-any cline-neutral">&nbsp;</span>
1480
- <span class="cline-any cline-neutral">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-no">&nbsp;</span>
1484
- <span class="cline-any cline-no">&nbsp;</span>
1485
- <span class="cline-any cline-no">&nbsp;</span>
1486
- <span class="cline-any cline-neutral">&nbsp;</span>
1487
- <span class="cline-any cline-no">&nbsp;</span>
1488
- <span class="cline-any cline-no">&nbsp;</span>
1489
- <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-no">&nbsp;</span>
1491
- <span class="cline-any cline-no">&nbsp;</span>
1492
- <span class="cline-any cline-no">&nbsp;</span>
1493
- <span class="cline-any cline-no">&nbsp;</span>
1494
- <span class="cline-any cline-neutral">&nbsp;</span>
1495
- <span class="cline-any cline-neutral">&nbsp;</span>
1496
- <span class="cline-any cline-neutral">&nbsp;</span>
1497
- <span class="cline-any cline-neutral">&nbsp;</span>
1498
- <span class="cline-any cline-neutral">&nbsp;</span>
1499
- <span class="cline-any cline-neutral">&nbsp;</span>
1500
- <span class="cline-any cline-neutral">&nbsp;</span>
1501
- <span class="cline-any cline-neutral">&nbsp;</span>
1502
- <span class="cline-any cline-neutral">&nbsp;</span>
1503
- <span class="cline-any cline-neutral">&nbsp;</span>
1504
- <span class="cline-any cline-neutral">&nbsp;</span>
1505
- <span class="cline-any cline-neutral">&nbsp;</span>
1506
- <span class="cline-any cline-neutral">&nbsp;</span>
1507
- <span class="cline-any cline-neutral">&nbsp;</span>
1508
- <span class="cline-any cline-neutral">&nbsp;</span>
1509
- <span class="cline-any cline-neutral">&nbsp;</span>
1510
- <span class="cline-any cline-neutral">&nbsp;</span>
1511
- <span class="cline-any cline-neutral">&nbsp;</span>
1512
- <span class="cline-any cline-neutral">&nbsp;</span>
1513
- <span class="cline-any cline-neutral">&nbsp;</span>
1514
- <span class="cline-any cline-neutral">&nbsp;</span>
1515
- <span class="cline-any cline-neutral">&nbsp;</span>
1516
- <span class="cline-any cline-neutral">&nbsp;</span>
1517
- <span class="cline-any cline-neutral">&nbsp;</span>
1518
- <span class="cline-any cline-neutral">&nbsp;</span>
1519
- <span class="cline-any cline-neutral">&nbsp;</span>
1520
- <span class="cline-any cline-neutral">&nbsp;</span>
1521
- <span class="cline-any cline-neutral">&nbsp;</span>
1522
- <span class="cline-any cline-neutral">&nbsp;</span>
1523
- <span class="cline-any cline-neutral">&nbsp;</span>
1524
- <span class="cline-any cline-neutral">&nbsp;</span>
1525
- <span class="cline-any cline-neutral">&nbsp;</span>
1526
- <span class="cline-any cline-neutral">&nbsp;</span>
1527
- <span class="cline-any cline-neutral">&nbsp;</span>
1528
- <span class="cline-any cline-neutral">&nbsp;</span>
1529
- <span class="cline-any cline-no">&nbsp;</span>
1530
- <span class="cline-any cline-no">&nbsp;</span>
1531
- <span class="cline-any cline-no">&nbsp;</span>
1532
- <span class="cline-any cline-no">&nbsp;</span>
1533
- <span class="cline-any cline-neutral">&nbsp;</span>
1534
- <span class="cline-any cline-no">&nbsp;</span>
1535
- <span class="cline-any cline-no">&nbsp;</span>
1536
- <span class="cline-any cline-no">&nbsp;</span>
1537
- <span class="cline-any cline-neutral">&nbsp;</span>
1538
- <span class="cline-any cline-neutral">&nbsp;</span>
1539
- <span class="cline-any cline-neutral">&nbsp;</span>
1540
- <span class="cline-any cline-neutral">&nbsp;</span>
1541
- <span class="cline-any cline-neutral">&nbsp;</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-neutral">&nbsp;</span>
1544
- <span class="cline-any cline-neutral">&nbsp;</span>
1545
- <span class="cline-any cline-neutral">&nbsp;</span>
1546
- <span class="cline-any cline-neutral">&nbsp;</span>
1547
- <span class="cline-any cline-neutral">&nbsp;</span>
1548
- <span class="cline-any cline-neutral">&nbsp;</span>
1549
- <span class="cline-any cline-neutral">&nbsp;</span>
1550
- <span class="cline-any cline-neutral">&nbsp;</span>
1551
- <span class="cline-any cline-neutral">&nbsp;</span>
1552
- <span class="cline-any cline-neutral">&nbsp;</span>
1553
- <span class="cline-any cline-neutral">&nbsp;</span>
1554
- <span class="cline-any cline-neutral">&nbsp;</span>
1555
- <span class="cline-any cline-neutral">&nbsp;</span>
1556
- <span class="cline-any cline-neutral">&nbsp;</span>
1557
- <span class="cline-any cline-neutral">&nbsp;</span>
1558
- <span class="cline-any cline-neutral">&nbsp;</span>
1559
- <span class="cline-any cline-neutral">&nbsp;</span>
1560
- <span class="cline-any cline-neutral">&nbsp;</span>
1561
- <span class="cline-any cline-neutral">&nbsp;</span>
1562
- <span class="cline-any cline-neutral">&nbsp;</span>
1563
- <span class="cline-any cline-neutral">&nbsp;</span>
1564
- <span class="cline-any cline-neutral">&nbsp;</span>
1565
- <span class="cline-any cline-neutral">&nbsp;</span>
1566
- <span class="cline-any cline-neutral">&nbsp;</span>
1567
- <span class="cline-any cline-neutral">&nbsp;</span>
1568
- <span class="cline-any cline-neutral">&nbsp;</span>
1569
- <span class="cline-any cline-neutral">&nbsp;</span>
1570
- <span class="cline-any cline-neutral">&nbsp;</span>
1571
- <span class="cline-any cline-no">&nbsp;</span>
1572
- <span class="cline-any cline-no">&nbsp;</span>
1573
- <span class="cline-any cline-no">&nbsp;</span>
1574
- <span class="cline-any cline-neutral">&nbsp;</span>
1575
- <span class="cline-any cline-neutral">&nbsp;</span>
1576
- <span class="cline-any cline-no">&nbsp;</span>
1577
- <span class="cline-any cline-no">&nbsp;</span>
1578
- <span class="cline-any cline-neutral">&nbsp;</span>
1579
- <span class="cline-any cline-no">&nbsp;</span>
1580
- <span class="cline-any cline-neutral">&nbsp;</span>
1581
- <span class="cline-any cline-neutral">&nbsp;</span>
1582
- <span class="cline-any cline-neutral">&nbsp;</span>
1583
- <span class="cline-any cline-neutral">&nbsp;</span>
1584
- <span class="cline-any cline-neutral">&nbsp;</span>
1585
- <span class="cline-any cline-neutral">&nbsp;</span>
1586
- <span class="cline-any cline-neutral">&nbsp;</span>
1587
- <span class="cline-any cline-neutral">&nbsp;</span>
1588
- <span class="cline-any cline-neutral">&nbsp;</span>
1589
- <span class="cline-any cline-neutral">&nbsp;</span>
1590
- <span class="cline-any cline-neutral">&nbsp;</span>
1591
- <span class="cline-any cline-neutral">&nbsp;</span>
1592
- <span class="cline-any cline-neutral">&nbsp;</span>
1593
- <span class="cline-any cline-neutral">&nbsp;</span>
1594
- <span class="cline-any cline-neutral">&nbsp;</span>
1595
- <span class="cline-any cline-neutral">&nbsp;</span>
1596
- <span class="cline-any cline-neutral">&nbsp;</span>
1597
- <span class="cline-any cline-neutral">&nbsp;</span>
1598
- <span class="cline-any cline-neutral">&nbsp;</span>
1599
- <span class="cline-any cline-neutral">&nbsp;</span>
1600
- <span class="cline-any cline-neutral">&nbsp;</span>
1601
- <span class="cline-any cline-neutral">&nbsp;</span>
1602
- <span class="cline-any cline-neutral">&nbsp;</span>
1603
- <span class="cline-any cline-neutral">&nbsp;</span>
1604
- <span class="cline-any cline-neutral">&nbsp;</span>
1605
- <span class="cline-any cline-neutral">&nbsp;</span>
1606
- <span class="cline-any cline-neutral">&nbsp;</span>
1607
- <span class="cline-any cline-neutral">&nbsp;</span>
1608
- <span class="cline-any cline-neutral">&nbsp;</span>
1609
- <span class="cline-any cline-neutral">&nbsp;</span>
1610
- <span class="cline-any cline-neutral">&nbsp;</span>
1611
- <span class="cline-any cline-neutral">&nbsp;</span>
1612
- <span class="cline-any cline-neutral">&nbsp;</span>
1613
- <span class="cline-any cline-neutral">&nbsp;</span>
1614
- <span class="cline-any cline-neutral">&nbsp;</span>
1615
- <span class="cline-any cline-no">&nbsp;</span>
1616
- <span class="cline-any cline-no">&nbsp;</span>
1617
- <span class="cline-any cline-no">&nbsp;</span>
1618
- <span class="cline-any cline-no">&nbsp;</span>
1619
- <span class="cline-any cline-no">&nbsp;</span>
1620
- <span class="cline-any cline-no">&nbsp;</span>
1621
- <span class="cline-any cline-neutral">&nbsp;</span>
1622
- <span class="cline-any cline-no">&nbsp;</span>
1623
- <span class="cline-any cline-no">&nbsp;</span>
1624
- <span class="cline-any cline-no">&nbsp;</span>
1625
- <span class="cline-any cline-neutral">&nbsp;</span>
1626
- <span class="cline-any cline-no">&nbsp;</span>
1627
- <span class="cline-any cline-neutral">&nbsp;</span>
1628
- <span class="cline-any cline-neutral">&nbsp;</span>
1629
- <span class="cline-any cline-neutral">&nbsp;</span>
1630
- <span class="cline-any cline-no">&nbsp;</span>
1631
- <span class="cline-any cline-neutral">&nbsp;</span>
1632
- <span class="cline-any cline-neutral">&nbsp;</span>
1633
- <span class="cline-any cline-neutral">&nbsp;</span>
1634
- <span class="cline-any cline-no">&nbsp;</span>
1635
- <span class="cline-any cline-no">&nbsp;</span>
1636
- <span class="cline-any cline-no">&nbsp;</span>
1637
- <span class="cline-any cline-no">&nbsp;</span>
1638
- <span class="cline-any cline-neutral">&nbsp;</span>
1639
- <span class="cline-any cline-no">&nbsp;</span>
1640
- <span class="cline-any cline-neutral">&nbsp;</span>
1641
- <span class="cline-any cline-no">&nbsp;</span>
1642
- <span class="cline-any cline-no">&nbsp;</span>
1643
- <span class="cline-any cline-no">&nbsp;</span>
1644
- <span class="cline-any cline-neutral">&nbsp;</span>
1645
- <span class="cline-any cline-neutral">&nbsp;</span>
1646
- <span class="cline-any cline-neutral">&nbsp;</span>
1647
- <span class="cline-any cline-neutral">&nbsp;</span>
1648
- <span class="cline-any cline-neutral">&nbsp;</span>
1649
- <span class="cline-any cline-neutral">&nbsp;</span>
1650
- <span class="cline-any cline-neutral">&nbsp;</span>
1651
- <span class="cline-any cline-neutral">&nbsp;</span>
1652
- <span class="cline-any cline-neutral">&nbsp;</span>
1653
- <span class="cline-any cline-neutral">&nbsp;</span>
1654
- <span class="cline-any cline-neutral">&nbsp;</span>
1655
- <span class="cline-any cline-neutral">&nbsp;</span>
1656
- <span class="cline-any cline-neutral">&nbsp;</span>
1657
- <span class="cline-any cline-neutral">&nbsp;</span>
1658
- <span class="cline-any cline-neutral">&nbsp;</span>
1659
- <span class="cline-any cline-neutral">&nbsp;</span>
1660
- <span class="cline-any cline-neutral">&nbsp;</span>
1661
- <span class="cline-any cline-neutral">&nbsp;</span>
1662
- <span class="cline-any cline-neutral">&nbsp;</span>
1663
- <span class="cline-any cline-neutral">&nbsp;</span>
1664
- <span class="cline-any cline-neutral">&nbsp;</span>
1665
- <span class="cline-any cline-neutral">&nbsp;</span>
1666
- <span class="cline-any cline-neutral">&nbsp;</span>
1667
- <span class="cline-any cline-neutral">&nbsp;</span>
1668
- <span class="cline-any cline-neutral">&nbsp;</span>
1669
- <span class="cline-any cline-neutral">&nbsp;</span>
1670
- <span class="cline-any cline-neutral">&nbsp;</span>
1671
- <span class="cline-any cline-neutral">&nbsp;</span>
1672
- <span class="cline-any cline-neutral">&nbsp;</span>
1673
- <span class="cline-any cline-neutral">&nbsp;</span>
1674
- <span class="cline-any cline-neutral">&nbsp;</span>
1675
- <span class="cline-any cline-neutral">&nbsp;</span>
1676
- <span class="cline-any cline-neutral">&nbsp;</span>
1677
- <span class="cline-any cline-neutral">&nbsp;</span>
1678
- <span class="cline-any cline-neutral">&nbsp;</span>
1679
- <span class="cline-any cline-neutral">&nbsp;</span>
1680
- <span class="cline-any cline-neutral">&nbsp;</span>
1681
- <span class="cline-any cline-neutral">&nbsp;</span>
1682
- <span class="cline-any cline-neutral">&nbsp;</span>
1683
- <span class="cline-any cline-neutral">&nbsp;</span>
1684
- <span class="cline-any cline-neutral">&nbsp;</span>
1685
- <span class="cline-any cline-neutral">&nbsp;</span>
1686
- <span class="cline-any cline-neutral">&nbsp;</span>
1687
- <span class="cline-any cline-neutral">&nbsp;</span>
1688
- <span class="cline-any cline-neutral">&nbsp;</span>
1689
- <span class="cline-any cline-neutral">&nbsp;</span>
1690
- <span class="cline-any cline-no">&nbsp;</span>
1691
- <span class="cline-any cline-no">&nbsp;</span>
1692
- <span class="cline-any cline-no">&nbsp;</span>
1693
- <span class="cline-any cline-no">&nbsp;</span>
1694
- <span class="cline-any cline-no">&nbsp;</span>
1695
- <span class="cline-any cline-no">&nbsp;</span>
1696
- <span class="cline-any cline-no">&nbsp;</span>
1697
- <span class="cline-any cline-no">&nbsp;</span>
1698
- <span class="cline-any cline-no">&nbsp;</span>
1699
- <span class="cline-any cline-no">&nbsp;</span>
1700
- <span class="cline-any cline-neutral">&nbsp;</span>
1701
- <span class="cline-any cline-no">&nbsp;</span>
1702
- <span class="cline-any cline-neutral">&nbsp;</span>
1703
- <span class="cline-any cline-neutral">&nbsp;</span>
1704
- <span class="cline-any cline-no">&nbsp;</span>
1705
- <span class="cline-any cline-neutral">&nbsp;</span>
1706
- <span class="cline-any cline-no">&nbsp;</span>
1707
- <span class="cline-any cline-no">&nbsp;</span>
1708
- <span class="cline-any cline-neutral">&nbsp;</span>
1709
- <span class="cline-any cline-neutral">&nbsp;</span>
1710
- <span class="cline-any cline-no">&nbsp;</span>
1711
- <span class="cline-any cline-no">&nbsp;</span>
1712
- <span class="cline-any cline-no">&nbsp;</span>
1713
- <span class="cline-any cline-no">&nbsp;</span>
1714
- <span class="cline-any cline-neutral">&nbsp;</span>
1715
- <span class="cline-any cline-no">&nbsp;</span>
1716
- <span class="cline-any cline-no">&nbsp;</span>
1717
- <span class="cline-any cline-neutral">&nbsp;</span>
1718
- <span class="cline-any cline-neutral">&nbsp;</span>
1719
- <span class="cline-any cline-no">&nbsp;</span>
1720
- <span class="cline-any cline-no">&nbsp;</span>
1721
- <span class="cline-any cline-neutral">&nbsp;</span>
1722
- <span class="cline-any cline-no">&nbsp;</span>
1723
- <span class="cline-any cline-neutral">&nbsp;</span>
1724
- <span class="cline-any cline-neutral">&nbsp;</span>
1725
- <span class="cline-any cline-no">&nbsp;</span>
1726
- <span class="cline-any cline-neutral">&nbsp;</span>
1727
- <span class="cline-any cline-no">&nbsp;</span>
1728
- <span class="cline-any cline-no">&nbsp;</span>
1729
- <span class="cline-any cline-neutral">&nbsp;</span>
1730
- <span class="cline-any cline-neutral">&nbsp;</span>
1731
- <span class="cline-any cline-neutral">&nbsp;</span>
1732
- <span class="cline-any cline-neutral">&nbsp;</span>
1733
- <span class="cline-any cline-neutral">&nbsp;</span>
1734
- <span class="cline-any cline-neutral">&nbsp;</span>
1735
- <span class="cline-any cline-neutral">&nbsp;</span>
1736
- <span class="cline-any cline-neutral">&nbsp;</span>
1737
- <span class="cline-any cline-neutral">&nbsp;</span>
1738
- <span class="cline-any cline-neutral">&nbsp;</span>
1739
- <span class="cline-any cline-neutral">&nbsp;</span>
1740
- <span class="cline-any cline-neutral">&nbsp;</span>
1741
- <span class="cline-any cline-neutral">&nbsp;</span>
1742
- <span class="cline-any cline-neutral">&nbsp;</span>
1743
- <span class="cline-any cline-neutral">&nbsp;</span>
1744
- <span class="cline-any cline-neutral">&nbsp;</span>
1745
- <span class="cline-any cline-neutral">&nbsp;</span>
1746
- <span class="cline-any cline-neutral">&nbsp;</span>
1747
- <span class="cline-any cline-neutral">&nbsp;</span>
1748
- <span class="cline-any cline-neutral">&nbsp;</span>
1749
- <span class="cline-any cline-neutral">&nbsp;</span>
1750
- <span class="cline-any cline-neutral">&nbsp;</span>
1751
- <span class="cline-any cline-neutral">&nbsp;</span>
1752
- <span class="cline-any cline-neutral">&nbsp;</span>
1753
- <span class="cline-any cline-neutral">&nbsp;</span>
1754
- <span class="cline-any cline-neutral">&nbsp;</span>
1755
- <span class="cline-any cline-neutral">&nbsp;</span>
1756
- <span class="cline-any cline-neutral">&nbsp;</span>
1757
- <span class="cline-any cline-neutral">&nbsp;</span>
1758
- <span class="cline-any cline-neutral">&nbsp;</span>
1759
- <span class="cline-any cline-neutral">&nbsp;</span>
1760
- <span class="cline-any cline-neutral">&nbsp;</span>
1761
- <span class="cline-any cline-neutral">&nbsp;</span>
1762
- <span class="cline-any cline-neutral">&nbsp;</span>
1763
- <span class="cline-any cline-neutral">&nbsp;</span>
1764
- <span class="cline-any cline-neutral">&nbsp;</span>
1765
- <span class="cline-any cline-neutral">&nbsp;</span>
1766
- <span class="cline-any cline-neutral">&nbsp;</span>
1767
- <span class="cline-any cline-neutral">&nbsp;</span>
1768
- <span class="cline-any cline-neutral">&nbsp;</span>
1769
- <span class="cline-any cline-neutral">&nbsp;</span>
1770
- <span class="cline-any cline-neutral">&nbsp;</span>
1771
- <span class="cline-any cline-neutral">&nbsp;</span>
1772
- <span class="cline-any cline-neutral">&nbsp;</span>
1773
- <span class="cline-any cline-neutral">&nbsp;</span>
1774
- <span class="cline-any cline-neutral">&nbsp;</span>
1775
- <span class="cline-any cline-neutral">&nbsp;</span>
1776
- <span class="cline-any cline-neutral">&nbsp;</span>
1777
- <span class="cline-any cline-neutral">&nbsp;</span>
1778
- <span class="cline-any cline-neutral">&nbsp;</span>
1779
- <span class="cline-any cline-neutral">&nbsp;</span>
1780
- <span class="cline-any cline-neutral">&nbsp;</span>
1781
- <span class="cline-any cline-no">&nbsp;</span>
1782
- <span class="cline-any cline-no">&nbsp;</span>
1783
- <span class="cline-any cline-no">&nbsp;</span>
1784
- <span class="cline-any cline-neutral">&nbsp;</span>
1785
- <span class="cline-any cline-no">&nbsp;</span>
1786
- <span class="cline-any cline-no">&nbsp;</span>
1787
- <span class="cline-any cline-no">&nbsp;</span>
1788
- <span class="cline-any cline-neutral">&nbsp;</span>
1789
- <span class="cline-any cline-no">&nbsp;</span>
1790
- <span class="cline-any cline-no">&nbsp;</span>
1791
- <span class="cline-any cline-no">&nbsp;</span>
1792
- <span class="cline-any cline-neutral">&nbsp;</span>
1793
- <span class="cline-any cline-no">&nbsp;</span>
1794
- <span class="cline-any cline-no">&nbsp;</span>
1795
- <span class="cline-any cline-no">&nbsp;</span>
1796
- <span class="cline-any cline-neutral">&nbsp;</span>
1797
- <span class="cline-any cline-neutral">&nbsp;</span>
1798
- <span class="cline-any cline-neutral">&nbsp;</span>
1799
- <span class="cline-any cline-no">&nbsp;</span>
1800
- <span class="cline-any cline-no">&nbsp;</span>
1801
- <span class="cline-any cline-no">&nbsp;</span>
1802
- <span class="cline-any cline-no">&nbsp;</span>
1803
- <span class="cline-any cline-no">&nbsp;</span>
1804
- <span class="cline-any cline-no">&nbsp;</span>
1805
- <span class="cline-any cline-neutral">&nbsp;</span>
1806
- <span class="cline-any cline-no">&nbsp;</span>
1807
- <span class="cline-any cline-no">&nbsp;</span>
1808
- <span class="cline-any cline-no">&nbsp;</span>
1809
- <span class="cline-any cline-no">&nbsp;</span>
1810
- <span class="cline-any cline-neutral">&nbsp;</span>
1811
- <span class="cline-any cline-no">&nbsp;</span>
1812
- <span class="cline-any cline-neutral">&nbsp;</span>
1813
- <span class="cline-any cline-neutral">&nbsp;</span>
1814
- <span class="cline-any cline-neutral">&nbsp;</span>
1815
- <span class="cline-any cline-no">&nbsp;</span>
1816
- <span class="cline-any cline-no">&nbsp;</span>
1817
- <span class="cline-any cline-neutral">&nbsp;</span>
1818
- <span class="cline-any cline-neutral">&nbsp;</span>
1819
- <span class="cline-any cline-neutral">&nbsp;</span>
1820
- <span class="cline-any cline-neutral">&nbsp;</span>
1821
- <span class="cline-any cline-neutral">&nbsp;</span>
1822
- <span class="cline-any cline-neutral">&nbsp;</span>
1823
- <span class="cline-any cline-neutral">&nbsp;</span>
1824
- <span class="cline-any cline-neutral">&nbsp;</span>
1825
- <span class="cline-any cline-neutral">&nbsp;</span>
1826
- <span class="cline-any cline-neutral">&nbsp;</span>
1827
- <span class="cline-any cline-neutral">&nbsp;</span>
1828
- <span class="cline-any cline-no">&nbsp;</span>
1829
- <span class="cline-any cline-neutral">&nbsp;</span>
1830
- <span class="cline-any cline-neutral">&nbsp;</span>
1831
- <span class="cline-any cline-neutral">&nbsp;</span>
1832
- <span class="cline-any cline-neutral">&nbsp;</span>
1833
- <span class="cline-any cline-neutral">&nbsp;</span>
1834
- <span class="cline-any cline-neutral">&nbsp;</span>
1835
- <span class="cline-any cline-neutral">&nbsp;</span>
1836
- <span class="cline-any cline-neutral">&nbsp;</span>
1837
- <span class="cline-any cline-neutral">&nbsp;</span>
1838
- <span class="cline-any cline-yes">8x</span>
1839
- <span class="cline-any cline-yes">8x</span>
1840
- <span class="cline-any cline-yes">223x</span>
1841
- <span class="cline-any cline-neutral">&nbsp;</span>
1842
- <span class="cline-any cline-yes">15x</span>
1843
- <span class="cline-any cline-neutral">&nbsp;</span>
1844
- <span class="cline-any cline-neutral">&nbsp;</span>
1845
- <span class="cline-any cline-neutral">&nbsp;</span>
1846
- <span class="cline-any cline-neutral">&nbsp;</span>
1847
- <span class="cline-any cline-neutral">&nbsp;</span>
1848
- <span class="cline-any cline-neutral">&nbsp;</span>
1849
- <span class="cline-any cline-neutral">&nbsp;</span>
1850
- <span class="cline-any cline-neutral">&nbsp;</span>
1851
- <span class="cline-any cline-neutral">&nbsp;</span>
1852
- <span class="cline-any cline-neutral">&nbsp;</span>
1853
- <span class="cline-any cline-neutral">&nbsp;</span>
1854
- <span class="cline-any cline-neutral">&nbsp;</span>
1855
- <span class="cline-any cline-neutral">&nbsp;</span>
1856
- <span class="cline-any cline-neutral">&nbsp;</span>
1857
- <span class="cline-any cline-neutral">&nbsp;</span>
1858
- <span class="cline-any cline-neutral">&nbsp;</span>
1859
- <span class="cline-any cline-neutral">&nbsp;</span>
1860
- <span class="cline-any cline-neutral">&nbsp;</span>
1861
- <span class="cline-any cline-neutral">&nbsp;</span>
1862
- <span class="cline-any cline-neutral">&nbsp;</span>
1863
- <span class="cline-any cline-neutral">&nbsp;</span>
1864
- <span class="cline-any cline-neutral">&nbsp;</span>
1865
- <span class="cline-any cline-neutral">&nbsp;</span>
1866
- <span class="cline-any cline-neutral">&nbsp;</span>
1867
- <span class="cline-any cline-neutral">&nbsp;</span>
1868
- <span class="cline-any cline-neutral">&nbsp;</span>
1869
- <span class="cline-any cline-neutral">&nbsp;</span>
1870
- <span class="cline-any cline-neutral">&nbsp;</span>
1871
- <span class="cline-any cline-neutral">&nbsp;</span>
1872
- <span class="cline-any cline-neutral">&nbsp;</span>
1873
- <span class="cline-any cline-neutral">&nbsp;</span>
1874
- <span class="cline-any cline-neutral">&nbsp;</span>
1875
- <span class="cline-any cline-neutral">&nbsp;</span>
1876
- <span class="cline-any cline-neutral">&nbsp;</span>
1877
- <span class="cline-any cline-neutral">&nbsp;</span>
1878
- <span class="cline-any cline-neutral">&nbsp;</span>
1879
- <span class="cline-any cline-neutral">&nbsp;</span>
1880
- <span class="cline-any cline-neutral">&nbsp;</span>
1881
- <span class="cline-any cline-neutral">&nbsp;</span>
1882
- <span class="cline-any cline-no">&nbsp;</span>
1883
- <span class="cline-any cline-no">&nbsp;</span>
1884
- <span class="cline-any cline-no">&nbsp;</span>
1885
- <span class="cline-any cline-neutral">&nbsp;</span>
1886
- <span class="cline-any cline-neutral">&nbsp;</span>
1887
- <span class="cline-any cline-neutral">&nbsp;</span>
1888
- <span class="cline-any cline-neutral">&nbsp;</span>
1889
- <span class="cline-any cline-neutral">&nbsp;</span>
1890
- <span class="cline-any cline-neutral">&nbsp;</span>
1891
- <span class="cline-any cline-neutral">&nbsp;</span>
1892
- <span class="cline-any cline-neutral">&nbsp;</span>
1893
- <span class="cline-any cline-neutral">&nbsp;</span>
1894
- <span class="cline-any cline-neutral">&nbsp;</span>
1895
- <span class="cline-any cline-neutral">&nbsp;</span>
1896
- <span class="cline-any cline-neutral">&nbsp;</span>
1897
- <span class="cline-any cline-neutral">&nbsp;</span>
1898
- <span class="cline-any cline-neutral">&nbsp;</span>
1899
- <span class="cline-any cline-neutral">&nbsp;</span>
1900
- <span class="cline-any cline-neutral">&nbsp;</span>
1901
- <span class="cline-any cline-neutral">&nbsp;</span>
1902
- <span class="cline-any cline-neutral">&nbsp;</span>
1903
- <span class="cline-any cline-neutral">&nbsp;</span>
1904
- <span class="cline-any cline-neutral">&nbsp;</span>
1905
- <span class="cline-any cline-neutral">&nbsp;</span>
1906
- <span class="cline-any cline-neutral">&nbsp;</span>
1907
- <span class="cline-any cline-neutral">&nbsp;</span>
1908
- <span class="cline-any cline-neutral">&nbsp;</span>
1909
- <span class="cline-any cline-neutral">&nbsp;</span>
1910
- <span class="cline-any cline-neutral">&nbsp;</span>
1911
- <span class="cline-any cline-neutral">&nbsp;</span>
1912
- <span class="cline-any cline-neutral">&nbsp;</span>
1913
- <span class="cline-any cline-neutral">&nbsp;</span>
1914
- <span class="cline-any cline-no">&nbsp;</span>
1915
- <span class="cline-any cline-neutral">&nbsp;</span>
1916
- <span class="cline-any cline-neutral">&nbsp;</span>
1917
- <span class="cline-any cline-neutral">&nbsp;</span>
1918
- <span class="cline-any cline-neutral">&nbsp;</span>
1919
- <span class="cline-any cline-neutral">&nbsp;</span>
1920
- <span class="cline-any cline-neutral">&nbsp;</span>
1921
- <span class="cline-any cline-neutral">&nbsp;</span>
1922
- <span class="cline-any cline-neutral">&nbsp;</span>
1923
- <span class="cline-any cline-neutral">&nbsp;</span>
1924
- <span class="cline-any cline-neutral">&nbsp;</span>
1925
- <span class="cline-any cline-neutral">&nbsp;</span>
1926
- <span class="cline-any cline-neutral">&nbsp;</span>
1927
- <span class="cline-any cline-neutral">&nbsp;</span>
1928
- <span class="cline-any cline-neutral">&nbsp;</span>
1929
- <span class="cline-any cline-neutral">&nbsp;</span>
1930
- <span class="cline-any cline-neutral">&nbsp;</span>
1931
- <span class="cline-any cline-neutral">&nbsp;</span>
1932
- <span class="cline-any cline-neutral">&nbsp;</span>
1933
- <span class="cline-any cline-neutral">&nbsp;</span>
1934
- <span class="cline-any cline-neutral">&nbsp;</span>
1935
- <span class="cline-any cline-neutral">&nbsp;</span>
1936
- <span class="cline-any cline-neutral">&nbsp;</span>
1937
- <span class="cline-any cline-neutral">&nbsp;</span>
1938
- <span class="cline-any cline-neutral">&nbsp;</span>
1939
- <span class="cline-any cline-neutral">&nbsp;</span>
1940
- <span class="cline-any cline-neutral">&nbsp;</span>
1941
- <span class="cline-any cline-neutral">&nbsp;</span>
1942
- <span class="cline-any cline-neutral">&nbsp;</span>
1943
- <span class="cline-any cline-neutral">&nbsp;</span>
1944
- <span class="cline-any cline-neutral">&nbsp;</span>
1945
- <span class="cline-any cline-neutral">&nbsp;</span>
1946
- <span class="cline-any cline-neutral">&nbsp;</span>
1947
- <span class="cline-any cline-neutral">&nbsp;</span>
1948
- <span class="cline-any cline-neutral">&nbsp;</span>
1949
- <span class="cline-any cline-neutral">&nbsp;</span>
1950
- <span class="cline-any cline-no">&nbsp;</span>
1951
- <span class="cline-any cline-no">&nbsp;</span>
1952
- <span class="cline-any cline-no">&nbsp;</span>
1953
- <span class="cline-any cline-neutral">&nbsp;</span>
1954
- <span class="cline-any cline-no">&nbsp;</span>
1955
- <span class="cline-any cline-neutral">&nbsp;</span>
1956
- <span class="cline-any cline-no">&nbsp;</span>
1957
- <span class="cline-any cline-neutral">&nbsp;</span>
1958
- <span class="cline-any cline-neutral">&nbsp;</span>
1959
- <span class="cline-any cline-neutral">&nbsp;</span>
1960
- <span class="cline-any cline-neutral">&nbsp;</span>
1961
- <span class="cline-any cline-neutral">&nbsp;</span>
1962
- <span class="cline-any cline-neutral">&nbsp;</span>
1963
- <span class="cline-any cline-neutral">&nbsp;</span>
1964
- <span class="cline-any cline-neutral">&nbsp;</span>
1965
- <span class="cline-any cline-neutral">&nbsp;</span>
1966
- <span class="cline-any cline-neutral">&nbsp;</span>
1967
- <span class="cline-any cline-neutral">&nbsp;</span>
1968
- <span class="cline-any cline-neutral">&nbsp;</span>
1969
- <span class="cline-any cline-neutral">&nbsp;</span>
1970
- <span class="cline-any cline-neutral">&nbsp;</span>
1971
- <span class="cline-any cline-neutral">&nbsp;</span>
1972
- <span class="cline-any cline-neutral">&nbsp;</span>
1973
- <span class="cline-any cline-neutral">&nbsp;</span>
1974
- <span class="cline-any cline-neutral">&nbsp;</span>
1975
- <span class="cline-any cline-no">&nbsp;</span>
1976
- <span class="cline-any cline-neutral">&nbsp;</span>
1977
- <span class="cline-any cline-neutral">&nbsp;</span>
1978
- <span class="cline-any cline-neutral">&nbsp;</span>
1979
- <span class="cline-any cline-neutral">&nbsp;</span>
1980
- <span class="cline-any cline-neutral">&nbsp;</span>
1981
- <span class="cline-any cline-neutral">&nbsp;</span>
1982
- <span class="cline-any cline-neutral">&nbsp;</span>
1983
- <span class="cline-any cline-neutral">&nbsp;</span>
1984
- <span class="cline-any cline-neutral">&nbsp;</span>
1985
- <span class="cline-any cline-yes">1x</span>
1986
- <span class="cline-any cline-neutral">&nbsp;</span>
1987
- <span class="cline-any cline-neutral">&nbsp;</span>
1988
- <span class="cline-any cline-neutral">&nbsp;</span>
1989
- <span class="cline-any cline-neutral">&nbsp;</span>
1990
- <span class="cline-any cline-neutral">&nbsp;</span>
1991
- <span class="cline-any cline-neutral">&nbsp;</span>
1992
- <span class="cline-any cline-neutral">&nbsp;</span>
1993
- <span class="cline-any cline-neutral">&nbsp;</span>
1994
- <span class="cline-any cline-no">&nbsp;</span>
1995
- <span class="cline-any cline-no">&nbsp;</span>
1996
- <span class="cline-any cline-no">&nbsp;</span>
1997
- <span class="cline-any cline-no">&nbsp;</span>
1998
- <span class="cline-any cline-no">&nbsp;</span>
1999
- <span class="cline-any cline-no">&nbsp;</span>
2000
- <span class="cline-any cline-no">&nbsp;</span>
2001
- <span class="cline-any cline-no">&nbsp;</span>
2002
- <span class="cline-any cline-no">&nbsp;</span>
2003
- <span class="cline-any cline-neutral">&nbsp;</span>
2004
- <span class="cline-any cline-no">&nbsp;</span>
2005
- <span class="cline-any cline-no">&nbsp;</span>
2006
- <span class="cline-any cline-no">&nbsp;</span>
2007
- <span class="cline-any cline-no">&nbsp;</span>
2008
- <span class="cline-any cline-neutral">&nbsp;</span>
2009
- <span class="cline-any cline-neutral">&nbsp;</span>
2010
- <span class="cline-any cline-neutral">&nbsp;</span>
2011
- <span class="cline-any cline-neutral">&nbsp;</span>
2012
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { escapeHtml, FieldProperties, HTML5CheckTypes, HTML5InputTypes, parseToNumber, UIModelMetadata } from '@decaf-ts/ui-decorators';
2013
- import { FieldUpdateMode, FormParent, FormParentGroup, KeyValue } from './types';
2014
- import { IComponentConfig, IComponentInput } from './interfaces';
2015
- import { AbstractControl, FormArray, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';
2016
- import { isValidDate, ModelKeys, parseDate, Primitives, Validation } from '@decaf-ts/decorator-validation';
2017
- import { ValidatorFactory } from './ValidatorFactory';
2018
- import { cleanSpaces } from '../helpers';
2019
- import { OperationKeys } from '@decaf-ts/db-decorators';
2020
- import { AngularEngineKeys, BaseComponentProps } from '../engine/constants';
2021
- &nbsp;
2022
- &nbsp;
2023
- /**
2024
- * @description Service for managing Angular forms and form controls.
2025
- * @summary The NgxFormService provides utility methods for creating, managing, and validating Angular forms and form controls. It includes functionality for registering forms, adding controls, validating fields, and handling form data.
2026
- *
2027
- * @class
2028
- * @param {WeakMap&lt;AbstractControl, FieldProperties&gt;} controls - A WeakMap to store control properties.
2029
- * @param {Map&lt;string, FormGroup&gt;} formRegistry - A Map to store registered forms.
2030
- *
2031
- * @example
2032
- * // Creating a form from components
2033
- * const components = [
2034
- * { inputs: { name: 'username', type: 'text', required: true } },
2035
- * { inputs: { name: 'password', type: 'password', minLength: 8 } }
2036
- * ];
2037
- * const form = NgxFormService.createFormFromComponents('loginForm', components, true);
2038
- *
2039
- * // Validating fields
2040
- * NgxFormService.validateFields(form);
2041
- *
2042
- * // Getting form data
2043
- * const formData = NgxFormService.getFormData(form);
2044
- *
2045
- * @mermaid
2046
- * sequenceDiagram
2047
- * participant C as Component
2048
- * participant NFS as NgxFormService
2049
- * participant AF as Angular Forms
2050
- * C-&gt;&gt;NFS: createFormFromComponents()
2051
- * NFS-&gt;&gt;AF: new FormGroup()
2052
- * NFS-&gt;&gt;NFS: addFormControl()
2053
- * NFS-&gt;&gt;AF: addControl()
2054
- * NFS--&gt;&gt;C: Return FormGroup
2055
- * C-&gt;&gt;NFS: validateFields()
2056
- * NFS-&gt;&gt;AF: markAsTouched(), markAsDirty(), updateValueAndValidity()
2057
- * C-&gt;&gt;NFS: getFormData()
2058
- * NFS-&gt;&gt;AF: Get control values
2059
- * NFS--&gt;&gt;C: Return form data
2060
- */
2061
- export class NgxFormService {
2062
- /**
2063
- * @description WeakMap that stores control properties for form controls.
2064
- * @summary A WeakMap that associates AbstractControl instances with their corresponding FieldProperties.
2065
- * This allows the service to track metadata for form controls without creating memory leaks.
2066
- *
2067
- * @type {WeakMap&lt;AbstractControl, FieldProperties&gt;}
2068
- * @private
2069
- * @static
2070
- * @memberOf NgxFormService
2071
- */
2072
- private static controls: WeakMap&lt;AbstractControl, FieldProperties&gt; = new WeakMap&lt;AbstractControl, FieldProperties&gt;();
2073
- &nbsp;
2074
- /**
2075
- * @description Registry of form groups indexed by their unique identifiers.
2076
- * @summary A Map that stores FormGroup instances with their unique string identifiers.
2077
- * This allows global access to registered forms throughout the application.
2078
- *
2079
- * @type {Map&lt;string, FormGroup&gt;}
2080
- * @private
2081
- * @static
2082
- * @memberOf NgxFormService
2083
- */
2084
- private static formRegistry: Map&lt;string, FormParent&gt; = new Map&lt;string, FormParent&gt;();
2085
- &nbsp;
2086
- /**
2087
- * @description Creates a new form group or form array with the specified identifier.
2088
- * @summary Generates a FormGroup or FormArray based on the provided properties. If pages are specified
2089
- * and greater than 1, creates a FormArray; otherwise creates a FormGroup. The form can optionally
2090
- * be registered in the global form registry for later access throughout the application.
2091
- *
2092
- * @param {string} id - Unique identifier for the form
2093
- * @param {Partial&lt;IComponentInput&gt;} [props={}] - Configuration properties for the form
2094
- * @param {boolean} [registry=true] - Whether to register the form in the global registry
2095
- * @return {FormGroup | FormArray} The created form instance
2096
- *
2097
- * @mermaid
2098
- * sequenceDiagram
2099
- * participant C as Component
2100
- * participant NFS as NgxFormService
2101
- * participant FR as Form Registry
2102
- * participant AF as Angular Forms
2103
- *
2104
- * C-&gt;&gt;NFS: createForm(id, props, registry)
2105
- * NFS-&gt;&gt;FR: Check if form exists
2106
- * alt Form doesn't exist
2107
- * alt props.pages &gt; 1
2108
- * NFS-&gt;&gt;AF: new FormArray([])
2109
- * else
2110
- * NFS-&gt;&gt;AF: new FormGroup({})
2111
- * end
2112
- * alt registry is true
2113
- * NFS-&gt;&gt;FR: addRegistry(id, form)
2114
- * end
2115
- * end
2116
- * NFS--&gt;&gt;C: Return FormGroup | FormArray
2117
- *
2118
- * @static
2119
- * @memberOf NgxFormService
2120
- */
2121
- <span class="fstat-no" title="function not covered" > static </span>createForm(id: string, props: Partial&lt;IComponentInput&gt; = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> registry: boolean = <span class="branch-0 cbranch-no" title="branch not covered" >true)</span>: FormGroup | FormArray {
2122
- const form = <span class="cstat-no" title="statement not covered" >this.formRegistry.get(id) ?? (props?.pages &amp;&amp; props?.pages &gt; 1 ? new FormArray([]) : new FormGroup({}));</span>
2123
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.formRegistry.has(id) &amp;&amp; registry)</span>
2124
- <span class="cstat-no" title="statement not covered" > this.addRegistry(id, form as FormArray | FormGroup);</span>
2125
- <span class="cstat-no" title="statement not covered" > return form as FormArray | FormGroup;</span>
2126
- }
2127
- &nbsp;
2128
- &nbsp;
2129
- /**
2130
- * @description Adds a form to the registry.
2131
- * @summary Registers a FormGroup or FormArray with a unique identifier for global access throughout
2132
- * the application. This allows forms to be retrieved and managed centrally. Throws an error if
2133
- * the identifier is already in use to prevent conflicts.
2134
- *
2135
- * @param {string} formId - The unique identifier for the form
2136
- * @param {FormParent} formGroup - The FormGroup or FormArray to be registered
2137
- * @return {void}
2138
- * @throws {Error} If a FormGroup with the given id is already registered
2139
- *
2140
- * @static
2141
- * @memberOf NgxFormService
2142
- */
2143
- <span class="fstat-no" title="function not covered" > static </span>addRegistry(formId: string, formGroup: FormParent): void {
2144
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.formRegistry.has(formId))</span>
2145
- <span class="cstat-no" title="statement not covered" > throw new Error(`A FormGroup with id '${formId}' is already registered.`);</span>
2146
- <span class="cstat-no" title="statement not covered" > this.formRegistry.set(formId, formGroup);</span>
2147
- }
2148
- &nbsp;
2149
- /**
2150
- * @description Removes a form from the registry.
2151
- * @summary Deletes a FormGroup or FormArray from the registry using its unique identifier.
2152
- * This cleans up the registry and allows the identifier to be reused. The form itself
2153
- * is not destroyed, only removed from the central registry.
2154
- *
2155
- * @param {string} formId - The unique identifier of the form to be removed
2156
- * @return {void}
2157
- *
2158
- * @static
2159
- * @memberOf NgxFormService
2160
- */
2161
- <span class="fstat-no" title="function not covered" > static </span>removeRegistry(formId: string): void {
2162
- <span class="cstat-no" title="statement not covered" > this.formRegistry.delete(formId);</span>
2163
- }
2164
- &nbsp;
2165
- /**
2166
- * @description Resolves the parent group and control name from a path.
2167
- * @summary Traverses the form group structure to find the parent group and control name for a given path.
2168
- * Handles complex nested structures including arrays and sub-groups. Creates missing intermediate
2169
- * groups as needed and properly configures FormArray controls for multiple value scenarios.
2170
- *
2171
- * @param {FormGroup} formGroup - The root FormGroup to traverse
2172
- * @param {string} path - The dot-separated path to the control (e.g., 'user.address.street')
2173
- * @param {IComponentInput} componentProps - Properties defining the component configuration
2174
- * @param {KeyValue} parentProps - Properties from the parent component for context
2175
- * @return {FormParentGroup} A tuple containing the parent FormGroup and the control name
2176
- *
2177
- * @private
2178
- * @mermaid
2179
- * sequenceDiagram
2180
- * participant NFS as NgxFormService
2181
- * participant FG as FormGroup
2182
- * participant FA as FormArray
2183
- *
2184
- * NFS-&gt;&gt;NFS: Split path into parts
2185
- * loop For each path part
2186
- * alt Control doesn't exist
2187
- * alt isMultiple and part is childOf
2188
- * NFS-&gt;&gt;FA: new FormArray([new FormGroup({})])
2189
- * else
2190
- * NFS-&gt;&gt;FG: new FormGroup({})
2191
- * end
2192
- * NFS-&gt;&gt;FG: addControl(part, newControl)
2193
- * end
2194
- * NFS-&gt;&gt;NFS: Navigate to next level
2195
- * end
2196
- * NFS--&gt;&gt;NFS: Return [parentGroup, controlName]
2197
- *
2198
- * @static
2199
- * @memberOf NgxFormService
2200
- */
2201
- private <span class="fstat-no" title="function not covered" >static </span>resolveParentGroup(formGroup: FormGroup, path: string, componentProps: IComponentInput, parentProps: KeyValue): FormParentGroup {
2202
- const isMultiple = <span class="cstat-no" title="statement not covered" >parentProps?.['multiple'] || parentProps?.['type'] === 'Array' || false;</span>
2203
- const parts = <span class="cstat-no" title="statement not covered" >path.split('.');</span>
2204
- const controlName = <span class="cstat-no" title="statement not covered" >parts.pop() as string;</span>
2205
- const {childOf} = <span class="cstat-no" title="statement not covered" >componentProps</span>
2206
- let currentGroup = <span class="cstat-no" title="statement not covered" >formGroup;</span>
2207
- &nbsp;
2208
- function <span class="fstat-no" title="function not covered" >setArrayComponentProps(</span>formGroupArray: FormArray) {
2209
- const props = (<span class="cstat-no" title="statement not covered" >formGroupArray as KeyValue)[AngularEngineKeys.FORM_GROUP_COMPONENT_PROPS] || {};</span>
2210
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(!props[ModelKeys.MODEL][controlName])</span>
2211
- <span class="cstat-no" title="statement not covered" > props[ModelKeys.MODEL] = Object.assign({}, props[ModelKeys.MODEL], {[controlName]: {...componentProps}});</span>
2212
- }
2213
- &nbsp;
2214
- <span class="cstat-no" title="statement not covered" > for (const part of parts) {</span>
2215
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!currentGroup.get(part)) {</span>
2216
- const partFormGroup = <span class="cstat-no" title="statement not covered" >(isMultiple &amp;&amp; part === childOf) ? new FormArray([new FormGroup({})]) : new FormGroup({});</span>
2217
- (<span class="cstat-no" title="statement not covered" >partFormGroup as KeyValue)[AngularEngineKeys.FORM_GROUP_COMPONENT_PROPS] = {</span>
2218
- childOf: childOf || '',
2219
- isMultiple: isMultiple,
2220
- name: part,
2221
- pk: componentProps?.['pk'] || parentProps?.['pk'] || '',
2222
- [ModelKeys.MODEL]: {},
2223
- } as Partial&lt;FieldProperties&gt; &amp; {model: KeyValue};
2224
- &nbsp;
2225
- <span class="cstat-no" title="statement not covered" > if(currentGroup instanceof FormArray) {</span>
2226
- (<span class="cstat-no" title="statement not covered" >currentGroup as FormArray).push(partFormGroup);</span>
2227
- } else {
2228
- &nbsp;
2229
- <span class="cstat-no" title="statement not covered" > for(const control of Object.values(partFormGroup.controls)) {</span>
2230
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(control instanceof FormControl)</span>
2231
- <span class="cstat-no" title="statement not covered" > this.register(control as AbstractControl, componentProps);</span>
2232
- }
2233
- &nbsp;
2234
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(partFormGroup instanceof AbstractControl)</span>
2235
- <span class="cstat-no" title="statement not covered" > this.register(partFormGroup as AbstractControl, componentProps);</span>
2236
- &nbsp;
2237
- <span class="cstat-no" title="statement not covered" > currentGroup.addControl(part, partFormGroup);</span>
2238
- }
2239
- }
2240
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(childOf &amp;&amp; currentGroup instanceof FormArray)</span>
2241
- <span class="cstat-no" title="statement not covered" > setArrayComponentProps(currentGroup);</span>
2242
- &nbsp;
2243
- <span class="cstat-no" title="statement not covered" > currentGroup = currentGroup.get(part) as FormGroup;</span>
2244
- }
2245
- <span class="cstat-no" title="statement not covered" > return [currentGroup, controlName];</span>
2246
- }
2247
- &nbsp;
2248
- /**
2249
- * @description Retrieves component properties from a FormGroup or FormArray.
2250
- * @summary Extracts component properties stored in the form group metadata. If a FormGroup is provided
2251
- * and groupArrayName is specified, it will look for the FormArray within the form structure.
2252
- *
2253
- * @param {FormGroup | FormArray} formGroup - The form group or form array to extract properties from
2254
- * @param {string} [key] - Optional key to retrieve a specific property
2255
- * @param {string} [groupArrayName] - Optional name of the group array if formGroup is not a FormArray
2256
- * @return {Partial&lt;FieldProperties&gt;} The component properties or a specific property if key is provided
2257
- *
2258
- * @static
2259
- * @memberOf NgxFormService
2260
- */
2261
- <span class="fstat-no" title="function not covered" > static </span>getComponentPropsFromGroupArray(formGroup: FormGroup | FormArray, key?: string, groupArrayName?: string | undefined): Partial&lt;FieldProperties&gt; {
2262
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(!(formGroup instanceof FormArray) &amp;&amp; typeof groupArrayName === Primitives.STRING)</span>
2263
- <span class="cstat-no" title="statement not covered" > formGroup = formGroup.root.get(groupArrayName as string) as FormArray || {};</span>
2264
- const props = (<span class="cstat-no" title="statement not covered" >formGroup as KeyValue)?.[AngularEngineKeys.FORM_GROUP_COMPONENT_PROPS] || {};</span>
2265
- <span class="cstat-no" title="statement not covered" > return (!key ? props : props?.[key]) || {};</span>
2266
- }
2267
- &nbsp;
2268
- /**
2269
- * @description Adds a new group to a parent FormArray.
2270
- * @summary Creates and adds a new FormGroup to the specified parent FormArray based on the
2271
- * component properties stored in the parent's metadata. This is used for dynamic form arrays
2272
- * where new groups need to be added at runtime.
2273
- *
2274
- * @param {FormGroup} formGroup - The root form group containing the parent FormArray
2275
- * @param {string} parentName - The name of the parent FormArray to add the group to
2276
- * @param {number} [index=1] - The index position where the new group should be added
2277
- * @return {FormGroup} The newly created and added FormGroup
2278
- *
2279
- * @static
2280
- * @memberOf NgxFormService
2281
- */
2282
- <span class="fstat-no" title="function not covered" > static </span>addGroupToParent(formGroup: FormGroup, parentName: string, index: number = <span class="branch-0 cbranch-no" title="branch not covered" >1)</span>: FormGroup {
2283
- const componentProps = <span class="cstat-no" title="statement not covered" >this.getComponentPropsFromGroupArray(formGroup, ModelKeys.MODEL, parentName);</span>
2284
- <span class="cstat-no" title="statement not covered" > Object.entries(componentProps as KeyValue).forEach(<span class="fstat-no" title="function not covered" >([</span>, value]) =&gt; {</span>
2285
- <span class="cstat-no" title="statement not covered" > return this.addFormControl(formGroup, value, {multiple: true}, index);</span>
2286
- });
2287
- &nbsp;
2288
- <span class="cstat-no" title="statement not covered" > return this.getGroupFromParent(formGroup, parentName, index);</span>
2289
- }
2290
- &nbsp;
2291
- /**
2292
- * @description Retrieves a FormGroup from a parent FormArray at the specified index.
2293
- * @summary Gets a FormGroup from the specified parent FormArray. If the group doesn't exist
2294
- * at the given index, it will create a new one using addGroupToParent.
2295
- *
2296
- * @param {FormGroup} formGroup - The root form group containing the parent FormArray
2297
- * @param {string} parentName - The name of the parent FormArray to retrieve the group from
2298
- * @param {number} [index=1] - The index of the group to retrieve
2299
- * @return {FormGroup} The FormGroup at the specified index
2300
- *
2301
- * @static
2302
- * @memberOf NgxFormService
2303
- */
2304
- <span class="fstat-no" title="function not covered" > static </span>getGroupFromParent(formGroup: FormGroup, parentName: string, index: number = <span class="branch-0 cbranch-no" title="branch not covered" >1)</span>: FormGroup {
2305
- const childGroup = (<span class="cstat-no" title="statement not covered" >(formGroup.get(parentName) || formGroup) as FormArray).at(index);</span>
2306
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(childGroup instanceof FormGroup)</span>
2307
- <span class="cstat-no" title="statement not covered" > return childGroup;</span>
2308
- <span class="cstat-no" title="statement not covered" > return this.addGroupToParent(formGroup, parentName, index);</span>
2309
- }
2310
- &nbsp;
2311
- /**
2312
- * @description Checks if a value is unique within a FormArray group.
2313
- * @summary Validates that the primary key value in a FormGroup is unique among all groups
2314
- * in the parent FormArray. The uniqueness check behavior differs based on the operation type.
2315
- *
2316
- * @param {FormGroup} formGroup - The FormGroup to check for uniqueness
2317
- * @param {number} index - The index of the current group within the FormArray
2318
- * @param {OperationKeys} [operation=OperationKeys.CREATE] - The type of operation being performed
2319
- * @return {boolean} True if the value is unique, false otherwise
2320
- *
2321
- * @static
2322
- * @memberOf NgxFormService
2323
- */
2324
- <span class="fstat-no" title="function not covered" > static </span>isUniqueOnGroup(formGroup: FormGroup, index: number, operation: OperationKeys = <span class="branch-0 cbranch-no" title="branch not covered" >OperationKeys.CREATE)</span>: boolean {
2325
- const formGroupArray = <span class="cstat-no" title="statement not covered" >formGroup.parent as FormArray;</span>
2326
- const pk = <span class="cstat-no" title="statement not covered" >this.getComponentPropsFromGroupArray(formGroupArray, BaseComponentProps.PK as string) as string;</span>
2327
- const controlName = <span class="cstat-no" title="statement not covered" >Object.keys(formGroup.controls)[0];</span>
2328
- &nbsp;
2329
- // only check for unique if is the pk control
2330
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(controlName !== pk)</span>
2331
- <span class="cstat-no" title="statement not covered" > return true;</span>
2332
- const controlValue = <span class="cstat-no" title="statement not covered" >cleanSpaces(`${formGroup.get(pk)?.value}`, true);</span>
2333
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(operation === OperationKeys.CREATE)</span>
2334
- <span class="cstat-no" title="statement not covered" > return !formGroupArray.controls.some(<span class="fstat-no" title="function not covered" >(g</span>roup, i) =&gt; <span class="cstat-no" title="statement not covered" >i !== index &amp;&amp; cleanSpaces(`${group.get(pk)?.value}`, true) === controlValue)</span>;</span>
2335
- &nbsp;
2336
- <span class="cstat-no" title="statement not covered" > return !formGroupArray.controls.some(<span class="fstat-no" title="function not covered" >(g</span>roup, i) =&gt; {</span>
2337
- const value = <span class="cstat-no" title="statement not covered" >cleanSpaces(`${group.get(pk)?.value}`, true);</span>
2338
- <span class="cstat-no" title="statement not covered" > return i !== index &amp;&amp; controlValue === value;</span>
2339
- });
2340
- }
2341
- &nbsp;
2342
- /**
2343
- * @description Enables all controls within a FormGroup or FormArray.
2344
- * @summary Recursively enables all form controls within the provided FormGroup or FormArray.
2345
- * This is useful for making all controls interactive after they have been disabled.
2346
- *
2347
- * @param {FormArray | FormGroup} formGroup - The FormGroup or FormArray to enable all controls for
2348
- * @return {void}
2349
- *
2350
- * @static
2351
- * @memberOf NgxFormService
2352
- */
2353
- <span class="fstat-no" title="function not covered" > static </span>enableAllGroupControls(formGroup: FormArray | FormGroup): void {
2354
- <span class="cstat-no" title="statement not covered" > Object.keys(formGroup.controls).forEach(<span class="fstat-no" title="function not covered" >key </span>=&gt; {</span>
2355
- const control = <span class="cstat-no" title="statement not covered" >formGroup.get(key);</span>
2356
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (control instanceof FormArray) {</span>
2357
- <span class="cstat-no" title="statement not covered" > control.controls.forEach(<span class="fstat-no" title="function not covered" >child </span>=&gt; {</span>
2358
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (child instanceof FormGroup) {</span>
2359
- <span class="cstat-no" title="statement not covered" > child.enable({ emitEvent: false });</span>
2360
- <span class="cstat-no" title="statement not covered" > child.updateValueAndValidity({ emitEvent: true });</span>
2361
- }
2362
- });
2363
- }
2364
- });
2365
- }
2366
- &nbsp;
2367
- /**
2368
- * @description Adds a form control to a form group based on component properties.
2369
- * @summary Creates and configures a FormControl within the specified FormGroup using the provided
2370
- * component properties. Handles nested paths, multiple controls (FormArrays), and control registration.
2371
- * This method supports complex form structures with nested groups and arrays.
2372
- *
2373
- * @param {FormGroup} formGroup - The form group to add the control to
2374
- * @param {IComponentInput} componentProps - The component properties defining the control configuration
2375
- * @param {KeyValue} [parentProps={}] - Properties from the parent component for context
2376
- * @param {number} [index=0] - The index for multiple controls in FormArrays
2377
- * @return {void}
2378
- *
2379
- * @private
2380
- * @static
2381
- * @memberOf NgxFormService
2382
- */
2383
- private <span class="fstat-no" title="function not covered" >static </span>addFormControl(formGroup: FormParent, componentProps: IComponentInput, parentProps: KeyValue = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> index: number = <span class="branch-0 cbranch-no" title="branch not covered" >0)</span>: void {
2384
- &nbsp;
2385
- const isMultiple = <span class="cstat-no" title="statement not covered" >parentProps?.['multiple'] || parentProps?.['type'] === 'Array' || false;</span>
2386
- const { name, childOf, } = <span class="cstat-no" title="statement not covered" >componentProps;</span>
2387
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(isMultiple)</span>
2388
- <span class="cstat-no" title="statement not covered" > componentProps['pk'] = componentProps['pk'] || parentProps?.['pk'] || '';</span>
2389
- const fullPath = <span class="cstat-no" title="statement not covered" >childOf ? isMultiple ? `${childOf}.${index}.${name}` : `${childOf}.${name}` : name;</span>
2390
- const [parentGroup, controlName] = <span class="cstat-no" title="statement not covered" >this.resolveParentGroup(formGroup as FormGroup, fullPath, componentProps, parentProps);</span>
2391
- &nbsp;
2392
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!parentGroup.get(controlName)) {</span>
2393
- const control = <span class="cstat-no" title="statement not covered" >NgxFormService.fromProps(</span>
2394
- componentProps,
2395
- componentProps.updateMode || 'change',
2396
- );
2397
- <span class="cstat-no" title="statement not covered" > NgxFormService.register(control, componentProps);</span>
2398
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (parentGroup instanceof FormGroup) {</span>
2399
- <span class="cstat-no" title="statement not covered" > parentGroup.addControl(controlName, control);</span>
2400
- }
2401
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(parentGroup instanceof FormArray) {</span>
2402
- const root = <span class="cstat-no" title="statement not covered" >parentGroup.controls[(componentProps as KeyValue)?.['page'] - 1] as FormGroup;</span>
2403
- <span class="cstat-no" title="statement not covered" > if(root) {</span>
2404
- <span class="cstat-no" title="statement not covered" > root.addControl(controlName, control);</span>
2405
- } else {
2406
- <span class="cstat-no" title="statement not covered" > parentGroup.push({[controlName]: control});</span>
2407
- }
2408
- }
2409
- }
2410
- const root = <span class="cstat-no" title="statement not covered" >parentGroup instanceof FormArray ? parentGroup.controls[(componentProps as KeyValue)?.['page'] - 1] : parentGroup;</span>
2411
- <span class="cstat-no" title="statement not covered" > componentProps['formGroup'] = root as FormGroup;</span>
2412
- <span class="cstat-no" title="statement not covered" > componentProps['formControl'] = parentGroup.get(controlName) as FormControl;</span>
2413
- <span class="cstat-no" title="statement not covered" > componentProps['multiple'] = isMultiple</span>
2414
- }
2415
- &nbsp;
2416
- /**
2417
- * @description Retrieves a control from a registered form.
2418
- * @summary Finds and returns an AbstractControl from a registered form using the form id and optional path.
2419
- * This method provides centralized access to form controls across the application by leveraging
2420
- * the form registry system.
2421
- *
2422
- * @param {string} formId - The unique identifier of the form in the registry
2423
- * @param {string} [path] - The optional dot-separated path to a specific control within the form
2424
- * @return {AbstractControl} The requested AbstractControl (FormGroup, FormArray, or FormControl)
2425
- * @throws {Error} If the form is not found in the registry or the control is not found in the form
2426
- *
2427
- * @mermaid
2428
- * sequenceDiagram
2429
- * participant C as Component
2430
- * participant NFS as NgxFormService
2431
- * participant FR as Form Registry
2432
- *
2433
- * C-&gt;&gt;NFS: getControlFromForm(formId, path?)
2434
- * NFS-&gt;&gt;FR: Get form by formId
2435
- * alt Form not found
2436
- * FR--&gt;&gt;NFS: null
2437
- * NFS--&gt;&gt;C: Throw Error
2438
- * else Form found
2439
- * FR--&gt;&gt;NFS: Return form
2440
- * alt path provided
2441
- * NFS-&gt;&gt;NFS: form.get(path)
2442
- * alt Control not found
2443
- * NFS--&gt;&gt;C: Throw Error
2444
- * else
2445
- * NFS--&gt;&gt;C: Return control
2446
- * end
2447
- * else
2448
- * NFS--&gt;&gt;C: Return form
2449
- * end
2450
- * end
2451
- *
2452
- * @static
2453
- * @memberOf NgxFormService
2454
- */
2455
- <span class="fstat-no" title="function not covered" > static </span>getControlFromForm(formId: string, path?: string): AbstractControl {
2456
- const form = <span class="cstat-no" title="statement not covered" >this.formRegistry.get(formId);</span>
2457
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!form)</span>
2458
- <span class="cstat-no" title="statement not covered" > throw new Error(`Form with id '${formId}' not found in the registry.`);</span>
2459
- &nbsp;
2460
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!path)</span>
2461
- <span class="cstat-no" title="statement not covered" > return form;</span>
2462
- &nbsp;
2463
- const control = <span class="cstat-no" title="statement not covered" >form.get(path);</span>
2464
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!control)</span>
2465
- <span class="cstat-no" title="statement not covered" > throw new Error(`Control with path '${path}' not found in form '${formId}'.`);</span>
2466
- <span class="cstat-no" title="statement not covered" > return control;</span>
2467
- }
2468
- &nbsp;
2469
- &nbsp;
2470
- /**
2471
- * @description Creates a form from UI model metadata children.
2472
- * @summary Generates a FormGroup from an array of UIModelMetadata objects, extracting component
2473
- * properties and creating appropriate form controls. This method is specifically designed to work
2474
- * with the UI decorator system and provides automatic form generation from metadata.
2475
- *
2476
- * @param {string} id - Unique identifier for the form
2477
- * @param {boolean} [registry=false] - Whether to register the created form in the global registry
2478
- * @param {UIModelMetadata[]} [children] - Array of UI model metadata objects to create controls from
2479
- * @return {FormGroup} The created FormGroup with controls for each child metadata
2480
- *
2481
- * @mermaid
2482
- * sequenceDiagram
2483
- * participant C as Component
2484
- * participant NFS as NgxFormService
2485
- * participant AF as Angular Forms
2486
- *
2487
- * C-&gt;&gt;NFS: createFormFromChildren(id, registry, children)
2488
- * NFS-&gt;&gt;AF: new FormGroup({})
2489
- * loop For each child metadata
2490
- * NFS-&gt;&gt;NFS: addFormControl(form, child.props)
2491
- * NFS-&gt;&gt;AF: Create and add FormControl
2492
- * end
2493
- * alt registry is true
2494
- * NFS-&gt;&gt;NFS: addRegistry(id, form)
2495
- * end
2496
- * NFS--&gt;&gt;C: Return FormGroup
2497
- *
2498
- * @static
2499
- * @memberOf NgxFormService
2500
- */
2501
- <span class="fstat-no" title="function not covered" > static </span>createFormFromChildren(id: string, registry: boolean = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span> children?: UIModelMetadata[],): FormGroup {
2502
- const form = <span class="cstat-no" title="statement not covered" >new FormGroup({});</span>
2503
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(children?.length)</span>
2504
- <span class="cstat-no" title="statement not covered" > children.forEach(<span class="fstat-no" title="function not covered" >child </span>=&gt; {</span>
2505
- <span class="cstat-no" title="statement not covered" > this.addFormControl(form, child.props as IComponentInput);</span>
2506
- });
2507
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (registry)</span>
2508
- <span class="cstat-no" title="statement not covered" > this.addRegistry(id, form);</span>
2509
- <span class="cstat-no" title="statement not covered" > return form;</span>
2510
- }
2511
- &nbsp;
2512
- /**
2513
- * @description Creates a form from component configurations.
2514
- * @summary Generates a FormGroup based on an array of component configurations and optionally registers it.
2515
- * This method processes component input configurations to create appropriate form controls with
2516
- * validation and initial values.
2517
- *
2518
- * @param {string} id - The unique identifier for the form
2519
- * @param {IComponentConfig[]} components - An array of component configurations defining the form structure
2520
- * @param {boolean} [registry=false] - Whether to register the created form in the global registry
2521
- * @return {FormGroup} The created FormGroup with controls for each component configuration
2522
- *
2523
- * @mermaid
2524
- * sequenceDiagram
2525
- * participant C as Component
2526
- * participant NFS as NgxFormService
2527
- * participant AF as Angular Forms
2528
- *
2529
- * C-&gt;&gt;NFS: createFormFromComponents(id, components, registry)
2530
- * NFS-&gt;&gt;AF: new FormGroup({})
2531
- * loop For each component config
2532
- * NFS-&gt;&gt;NFS: addFormControl(form, component.inputs)
2533
- * NFS-&gt;&gt;AF: Create and add FormControl
2534
- * end
2535
- * alt registry is true
2536
- * NFS-&gt;&gt;NFS: addRegistry(id, form)
2537
- * end
2538
- * NFS--&gt;&gt;C: Return FormGroup
2539
- *
2540
- * @static
2541
- * @memberOf NgxFormService
2542
- */
2543
- <span class="fstat-no" title="function not covered" > static </span>createFormFromComponents(id: string, components: IComponentConfig[], registry: boolean = <span class="branch-0 cbranch-no" title="branch not covered" >false)</span>: FormGroup {
2544
- const form = <span class="cstat-no" title="statement not covered" >new FormGroup({});</span>
2545
- <span class="cstat-no" title="statement not covered" > components.forEach(<span class="fstat-no" title="function not covered" >component </span>=&gt; {</span>
2546
- <span class="cstat-no" title="statement not covered" > this.addFormControl(form, component.inputs);</span>
2547
- });
2548
- &nbsp;
2549
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (registry)</span>
2550
- <span class="cstat-no" title="statement not covered" > this.addRegistry(id, form);</span>
2551
- &nbsp;
2552
- <span class="cstat-no" title="statement not covered" > return form;</span>
2553
- }
2554
- &nbsp;
2555
- /**
2556
- * @description Adds a control to a form based on component properties.
2557
- * @summary Creates and adds a form control to a form (existing or new) based on the provided component properties.
2558
- * Handles multi-page forms by managing FormArray structures and proper indexing. This method supports
2559
- * complex form scenarios including nested controls and page-based form organization.
2560
- *
2561
- * @param {string} id - The unique identifier of the form
2562
- * @param {FieldProperties} componentProperties - The properties of the component to create the control from
2563
- * @param {FieldProperties} [parentProps] - Optional parent properties for context and configuration
2564
- * @return {AbstractControl} The form or created control
2565
- *
2566
- * @mermaid
2567
- * sequenceDiagram
2568
- * participant C as Component
2569
- * participant NFS as NgxFormService
2570
- * participant F as Form
2571
- *
2572
- * C-&gt;&gt;NFS: addControlFromProps(id, componentProps, parentProps?)
2573
- * NFS-&gt;&gt;NFS: createForm(id, parentProps, true)
2574
- * alt Multi-page form (parentProps.pages &gt; 1)
2575
- * NFS-&gt;&gt;NFS: Calculate page index
2576
- * NFS-&gt;&gt;F: Get or create FormGroup at index
2577
- * NFS-&gt;&gt;NFS: Set form to page FormGroup
2578
- * end
2579
- * alt componentProperties has path
2580
- * NFS-&gt;&gt;NFS: addFormControl(form, componentProperties, parentProps)
2581
- * end
2582
- * NFS--&gt;&gt;C: Return form/control
2583
- *
2584
- * @static
2585
- * @memberOf NgxFormService
2586
- */
2587
- <span class="fstat-no" title="function not covered" > static </span>addControlFromProps(id: string, componentProperties: FieldProperties, parentProps?: FieldProperties): AbstractControl {
2588
- let form = <span class="cstat-no" title="statement not covered" >this.createForm(id, parentProps, true);</span>
2589
- const formLength = (<span class="cstat-no" title="statement not covered" >form as FormArray).length;</span>
2590
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(parentProps?.pages &amp;&amp; parentProps?.pages &gt; 1) {</span>
2591
- let index = <span class="cstat-no" title="statement not covered" >componentProperties.page || parentProps.page;</span>
2592
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(!(typeof index === 'number') || index === 0)</span>
2593
- <span class="cstat-no" title="statement not covered" > throw Error(`Property 'page' is required and greather than 0 on ${componentProperties.name}`);</span>
2594
- &nbsp;
2595
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(index &gt; formLength) {</span>
2596
- <span class="cstat-no" title="statement not covered" > if((form as KeyValue)?.['lastIndex'] &amp;&amp; index === (form as KeyValue)['lastIndex']['page']) {</span>
2597
- <span class="cstat-no" title="statement not covered" > index = (form as KeyValue)['lastIndex']['index'];</span>
2598
- } else {
2599
- (<span class="cstat-no" title="statement not covered" >form as KeyValue)['lastIndex'] = {</span>
2600
- page: index,
2601
- index: formLength + 1
2602
- };
2603
- <span class="cstat-no" title="statement not covered" > index = formLength + 1;</span>
2604
- }
2605
- }
2606
- &nbsp;
2607
- let group = (<span class="cstat-no" title="statement not covered" >form as FormArray).controls[(index as number) - 1];</span>
2608
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(!group) {</span>
2609
- <span class="cstat-no" title="statement not covered" > group = new FormGroup({});</span>
2610
- (<span class="cstat-no" title="statement not covered" >form as FormArray).insert(index as number, group);</span>
2611
- }
2612
- <span class="cstat-no" title="statement not covered" > form = group as FormGroup;</span>
2613
- }
2614
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(componentProperties.path)</span>
2615
- <span class="cstat-no" title="statement not covered" > this.addFormControl(form, componentProperties, parentProps);</span>
2616
- <span class="cstat-no" title="statement not covered" > return form;</span>
2617
- }
2618
- &nbsp;
2619
- /**
2620
- * @description Retrieves form data from a FormGroup.
2621
- * @summary Extracts and processes the data from a FormGroup, handling different input types and nested form groups.
2622
- * Performs type conversion for various HTML5 input types, validates nested controls, and manages
2623
- * multiple control scenarios. Automatically enables all group controls after data extraction.
2624
- *
2625
- * @param {FormGroup} formGroup - The FormGroup to extract data from
2626
- * @return {Record&lt;string, unknown&gt;} An object containing the processed form data with proper type conversions
2627
- *
2628
- * @mermaid
2629
- * sequenceDiagram
2630
- * participant C as Component
2631
- * participant NFS as NgxFormService
2632
- * participant FG as FormGroup
2633
- * participant FC as FormControl
2634
- *
2635
- * C-&gt;&gt;NFS: getFormData(formGroup)
2636
- * loop For each control in formGroup
2637
- * alt Control is not FormControl
2638
- * NFS-&gt;&gt;NFS: Recursive getFormData(control)
2639
- * alt parentProps.multiple and !isValid
2640
- * NFS-&gt;&gt;NFS: reset(control)
2641
- * end
2642
- * else Control is FormControl
2643
- * NFS-&gt;&gt;FC: Get control value
2644
- * NFS-&gt;&gt;NFS: Apply type conversion based on props.type
2645
- * alt HTML5CheckTypes
2646
- * NFS-&gt;&gt;NFS: Keep boolean value
2647
- * else NUMBER type
2648
- * NFS-&gt;&gt;NFS: parseToNumber(value)
2649
- * else DATE/DATETIME types
2650
- * NFS-&gt;&gt;NFS: new Date(value)
2651
- * else Other types
2652
- * NFS-&gt;&gt;NFS: escapeHtml(value)
2653
- * end
2654
- * end
2655
- * end
2656
- * NFS-&gt;&gt;NFS: enableAllGroupControls(formGroup)
2657
- * NFS--&gt;&gt;C: Return processed data object
2658
- *
2659
- * @static
2660
- * @memberOf NgxFormService
2661
- */
2662
- <span class="fstat-no" title="function not covered" > static </span>getFormData(formGroup: FormGroup): Record&lt;string, unknown&gt; {
2663
- const data: Record&lt;string, unknown&gt; = <span class="cstat-no" title="statement not covered" >{};</span>
2664
- <span class="cstat-no" title="statement not covered" > for (const key in formGroup.controls) {</span>
2665
- const control = <span class="cstat-no" title="statement not covered" >formGroup.controls[key];</span>
2666
- const parentProps = <span class="cstat-no" title="statement not covered" >NgxFormService.getPropsFromControl(formGroup as FormGroup | FormArray);</span>
2667
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!(control instanceof FormControl)) {</span>
2668
- const value = <span class="cstat-no" title="statement not covered" >NgxFormService.getFormData(control as FormGroup);</span>
2669
- const isValid = <span class="cstat-no" title="statement not covered" >control.valid;</span>
2670
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if(parentProps.multiple) {</span>
2671
- <span class="cstat-no" title="statement not covered" > if(isValid) {</span>
2672
- <span class="cstat-no" title="statement not covered" > data[key] = value;</span>
2673
- } else {
2674
- <span class="cstat-no" title="statement not covered" > this.reset(control as FormControl);</span>
2675
- }
2676
- &nbsp;
2677
- <span class="cstat-no" title="statement not covered" > continue;</span>
2678
- }
2679
- <span class="cstat-no" title="statement not covered" > data[key] = value;</span>
2680
- <span class="cstat-no" title="statement not covered" > continue;</span>
2681
- }
2682
- &nbsp;
2683
- const props = <span class="cstat-no" title="statement not covered" >NgxFormService.getPropsFromControl(control as FormControl | FormArray);</span>
2684
- let value = <span class="cstat-no" title="statement not covered" >control.value;</span>
2685
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!HTML5CheckTypes.includes(props['type'])) {</span>
2686
- <span class="cstat-no" title="statement not covered" > switch (props['type']) {</span>
2687
- case HTML5InputTypes.NUMBER:
2688
- <span class="cstat-no" title="statement not covered" > value = parseToNumber(value);</span>
2689
- <span class="cstat-no" title="statement not covered" > break;</span>
2690
- case HTML5InputTypes.DATE:
2691
- case HTML5InputTypes.DATETIME_LOCAL:
2692
- <span class="cstat-no" title="statement not covered" > value = new Date(value);</span>
2693
- <span class="cstat-no" title="statement not covered" > break;</span>
2694
- default:
2695
- <span class="cstat-no" title="statement not covered" > value = escapeHtml(value);</span>
2696
- }
2697
- }
2698
- <span class="cstat-no" title="statement not covered" > data[key] = value;</span>
2699
- }
2700
- <span class="cstat-no" title="statement not covered" > NgxFormService.enableAllGroupControls(formGroup as FormGroup);</span>
2701
- <span class="cstat-no" title="statement not covered" > return data;</span>
2702
- }
2703
- &nbsp;
2704
- /**
2705
- * @description Validates fields in a form control or form group.
2706
- * @summary Recursively validates all fields in a form control or form group, marking them as touched and dirty.
2707
- * Performs comprehensive validation including uniqueness checks for primary keys in FormArray scenarios.
2708
- * This method ensures all validation rules are applied and form state is properly updated.
2709
- *
2710
- * @param {AbstractControl} control - The control or form group to validate
2711
- * @param {string} [pk] - Optional primary key field name for uniqueness validation
2712
- * @param {string} [path] - The path to the control within the form for error reporting
2713
- * @return {boolean} True if all fields are valid, false otherwise
2714
- * @throws {Error} If no control is found at the specified path or if the control type is unknown
2715
- *
2716
- * @mermaid
2717
- * sequenceDiagram
2718
- * participant C as Component
2719
- * participant NFS as NgxFormService
2720
- * participant FC as FormControl
2721
- * participant FG as FormGroup
2722
- * participant FA as FormArray
2723
- *
2724
- * C-&gt;&gt;NFS: validateFields(control, pk?, path?)
2725
- * alt Control is FormControl
2726
- * NFS-&gt;&gt;FC: markAsTouched()
2727
- * NFS-&gt;&gt;FC: markAsDirty()
2728
- * NFS-&gt;&gt;FC: updateValueAndValidity()
2729
- * alt Is in FormArray group
2730
- * NFS-&gt;&gt;NFS: Check uniqueness in group
2731
- * alt Not unique
2732
- * NFS-&gt;&gt;FC: setErrors({notUnique: true})
2733
- * end
2734
- * end
2735
- * NFS--&gt;&gt;C: Return control.valid
2736
- * else Control is FormGroup
2737
- * loop For each child control
2738
- * NFS-&gt;&gt;NFS: Recursive validateFields(child)
2739
- * end
2740
- * NFS--&gt;&gt;C: Return allValid
2741
- * else Control is FormArray
2742
- * loop For each array control
2743
- * NFS-&gt;&gt;NFS: Recursive validateFields(child)
2744
- * end
2745
- * NFS--&gt;&gt;C: Return allValid
2746
- * else Unknown control type
2747
- * NFS--&gt;&gt;C: Throw Error
2748
- * end
2749
- *
2750
- * @static
2751
- * @memberOf NgxFormService
2752
- */
2753
- <span class="fstat-no" title="function not covered" > static </span>validateFields(control: AbstractControl, pk?: string, path?: string): boolean {
2754
- <span class="cstat-no" title="statement not covered" > control = path ? control.get(path) as AbstractControl : control;</span>
2755
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!control)</span>
2756
- <span class="cstat-no" title="statement not covered" > throw new Error(`No control found at path: ${path || 'root'}.`);</span>
2757
- &nbsp;
2758
- const isAllowed = <span class="cstat-no" title="statement not covered" >[FormArray, FormGroup, FormControl].some(<span class="fstat-no" title="function not covered" >type </span>=&gt; <span class="cstat-no" title="statement not covered" >control instanceof type)</span>;</span>
2759
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isAllowed)</span>
2760
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unknown control type at: ${path || 'root'}`);</span>
2761
- &nbsp;
2762
- <span class="cstat-no" title="statement not covered" > control.markAsTouched();</span>
2763
- <span class="cstat-no" title="statement not covered" > control.markAsDirty();</span>
2764
- <span class="cstat-no" title="statement not covered" > control.updateValueAndValidity({ emitEvent: true });</span>
2765
- &nbsp;
2766
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (control instanceof FormGroup) {</span>
2767
- <span class="cstat-no" title="statement not covered" > Object.values(control.controls).forEach(<span class="fstat-no" title="function not covered" >childControl </span>=&gt; {</span>
2768
- <span class="cstat-no" title="statement not covered" > this.validateFields(childControl);</span>
2769
- });
2770
- }
2771
- &nbsp;
2772
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (control instanceof FormArray) {</span>
2773
- const totalGroups = <span class="cstat-no" title="statement not covered" >control.length;</span>
2774
- const hasValid = <span class="cstat-no" title="statement not covered" >control.controls.some(<span class="fstat-no" title="function not covered" >control </span>=&gt; <span class="cstat-no" title="statement not covered" >control.valid)</span>;</span>
2775
- <span class="cstat-no" title="statement not covered" > if(totalGroups &gt; 1 &amp;&amp; hasValid) {</span>
2776
- <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >control.length - 1;</span> i &gt;= 0; i--) {</span>
2777
- const childControl = <span class="cstat-no" title="statement not covered" >control.at(i);</span>
2778
- // disable no valid groups on array
2779
- <span class="cstat-no" title="statement not covered" > if (!childControl.valid) {</span>
2780
- (<span class="cstat-no" title="statement not covered" >childControl.parent as FormGroup).setErrors(null);</span>
2781
- (<span class="cstat-no" title="statement not covered" >childControl.parent as FormGroup).updateValueAndValidity({ emitEvent: true });</span>
2782
- <span class="cstat-no" title="statement not covered" > childControl.disable();</span>
2783
- } else {
2784
- <span class="cstat-no" title="statement not covered" > this.validateFields(childControl);</span>
2785
- }
2786
- }
2787
- } else {
2788
- <span class="cstat-no" title="statement not covered" > Object.values(control.controls).forEach(<span class="fstat-no" title="function not covered" >childControl </span>=&gt; {</span>
2789
- <span class="cstat-no" title="statement not covered" > this.validateFields(childControl);</span>
2790
- });
2791
- }
2792
- }
2793
- &nbsp;
2794
- // function getControlName(control: AbstractControl): string | null {
2795
- // const group = control.parent as FormGroup;
2796
- // if (!group)
2797
- // return null;
2798
- // return Object.keys(group.controls).find(name =&gt; control === group.get(name)) || null;
2799
- // }
2800
- &nbsp;
2801
- <span class="cstat-no" title="statement not covered" > return control.valid;</span>
2802
- }
2803
- &nbsp;
2804
- /**
2805
- * @description Generates validators from component properties.
2806
- * @summary Creates an array of ValidatorFn based on the supported validation keys in the component properties.
2807
- * @param {FieldProperties} props - The component properties.
2808
- * @return {ValidatorFn[]} An array of validator functions.
2809
- */
2810
- private static validatorsFromProps(props: FieldProperties): ValidatorFn[] {
2811
- const supportedValidationKeys = Validation.keys();
2812
- return Object.keys(props)
2813
- .filter((k: string) =&gt; supportedValidationKeys.includes(k))
2814
- .map((k: string) =&gt; {
2815
- return ValidatorFactory.spawn(props, k);
2816
- });
2817
- }
2818
- &nbsp;
2819
- /**
2820
- * @description Creates a FormControl from component properties.
2821
- * @summary Generates a FormControl with validators and initial configuration based on the provided
2822
- * component properties. Handles different input types, sets initial values, and configures
2823
- * validation rules and update modes.
2824
- *
2825
- * @param {FieldProperties} props - The component properties defining the control configuration
2826
- * @param {FieldUpdateMode} [updateMode='change'] - The update mode for the control ('change', 'blur', 'submit')
2827
- * @return {FormControl} The created FormControl with proper configuration and validators
2828
- *
2829
- * @mermaid
2830
- * sequenceDiagram
2831
- * participant C as Component
2832
- * participant NFS as NgxFormService
2833
- * participant VF as ValidatorFactory
2834
- * participant AF as Angular Forms
2835
- *
2836
- * C-&gt;&gt;NFS: fromProps(props, updateMode?)
2837
- * NFS-&gt;&gt;NFS: validatorsFromProps(props)
2838
- * NFS-&gt;&gt;VF: Create validators from props
2839
- * VF--&gt;&gt;NFS: Return validator array
2840
- * NFS-&gt;&gt;NFS: Compose validators
2841
- * alt props.value exists and not checkbox
2842
- * alt props.type is DATE
2843
- * NFS-&gt;&gt;NFS: Validate date format
2844
- * end
2845
- * NFS-&gt;&gt;NFS: Set initial value
2846
- * end
2847
- * NFS-&gt;&gt;AF: new FormControl(config)
2848
- * AF--&gt;&gt;NFS: Return FormControl
2849
- * NFS--&gt;&gt;C: Return configured FormControl
2850
- *
2851
- * @static
2852
- * @memberOf NgxFormService
2853
- */
2854
- <span class="fstat-no" title="function not covered" > static </span>fromProps(props: FieldProperties, updateMode: FieldUpdateMode = <span class="branch-0 cbranch-no" title="branch not covered" >'change')</span>: FormControl {
2855
- const validators = <span class="cstat-no" title="statement not covered" >this.validatorsFromProps(props);</span>
2856
- const composed = <span class="cstat-no" title="statement not covered" >validators.length ? Validators.compose(validators) : null;</span>
2857
- <span class="cstat-no" title="statement not covered" > return new FormControl(</span>
2858
- {
2859
- value:
2860
- props.value &amp;&amp; props.type !== HTML5InputTypes.CHECKBOX
2861
- ? props.type === HTML5InputTypes.DATE
2862
- ? !isValidDate(parseDate(props.format as string, props.value as string))
2863
- ? undefined : props.value :
2864
- (props.value as unknown) : undefined,
2865
- disabled: props.disabled,
2866
- },
2867
- {
2868
- validators: composed,
2869
- updateOn: updateMode,
2870
- },
2871
- );
2872
- }
2873
- &nbsp;
2874
- /**
2875
- * @description Retrieves properties from a FormControl, FormArray, or FormGroup.
2876
- * @summary Gets the FieldProperties associated with a form control from the internal WeakMap.
2877
- * This method provides access to the original component properties that were used to create
2878
- * the control, enabling validation, rendering, and behavior configuration.
2879
- *
2880
- * @param {FormControl | FormArray | FormGroup} control - The form control to get properties for
2881
- * @return {FieldProperties} The properties associated with the control, or empty object if not found
2882
- *
2883
- * @static
2884
- * @memberOf NgxFormService
2885
- */
2886
- <span class="fstat-no" title="function not covered" > static </span>getPropsFromControl(control: FormControl | FormArray | FormGroup): FieldProperties {
2887
- <span class="cstat-no" title="statement not covered" > return this.controls.get(control) || {} as FieldProperties;</span>
2888
- }
2889
- &nbsp;
2890
- /**
2891
- * @description Finds a parent element with a specific tag in the DOM tree.
2892
- * @summary Traverses up the DOM tree to find the nearest parent element with the specified tag name.
2893
- * This is useful for finding container elements or specific parent components in the DOM hierarchy.
2894
- * The search is case-insensitive for tag name matching.
2895
- *
2896
- * @param {HTMLElement} el - The starting element to traverse from
2897
- * @param {string} tag - The tag name to search for (case-insensitive)
2898
- * @return {HTMLElement} The found parent element with the specified tag
2899
- * @throws {Error} If no parent with the specified tag is found in the DOM tree
2900
- *
2901
- * @mermaid
2902
- * sequenceDiagram
2903
- * participant C as Component
2904
- * participant NFS as NgxFormService
2905
- * participant DOM as DOM Tree
2906
- *
2907
- * C-&gt;&gt;NFS: getParentEl(element, tagName)
2908
- * loop Traverse up DOM tree
2909
- * NFS-&gt;&gt;DOM: Get parentElement
2910
- * DOM--&gt;&gt;NFS: Return parent or null
2911
- * alt Parent exists and tag matches
2912
- * NFS--&gt;&gt;C: Return parent element
2913
- * else Parent is null
2914
- * NFS--&gt;&gt;C: Throw Error
2915
- * end
2916
- * end
2917
- *
2918
- * @static
2919
- * @memberOf NgxFormService
2920
- */
2921
- <span class="fstat-no" title="function not covered" > static </span>getParentEl(el: HTMLElement, tag: string): HTMLElement {
2922
- let parent: HTMLElement | null;
2923
- <span class="cstat-no" title="statement not covered" > while ((parent = el.parentElement) !== null) {</span>
2924
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (parent.tagName.toLowerCase() === tag.toLowerCase()) {</span>
2925
- <span class="cstat-no" title="statement not covered" > return parent;</span>
2926
- }
2927
- <span class="cstat-no" title="statement not covered" > el = parent;</span>
2928
- }
2929
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
2930
- `No parent with the tag ${tag} was found for provided element`,
2931
- );
2932
- }
2933
- &nbsp;
2934
- /**
2935
- * @description Registers a control with its properties in the internal WeakMap.
2936
- * @summary Associates a form control with its component properties for later retrieval.
2937
- * This enables the service to maintain metadata about controls without creating memory leaks,
2938
- * as WeakMap automatically cleans up references when controls are garbage collected.
2939
- *
2940
- * @param {AbstractControl} control - The control to register (FormControl, FormGroup, or FormArray)
2941
- * @param {FieldProperties} props - The properties to associate with the control
2942
- * @return {void}
2943
- *
2944
- * @static
2945
- * @memberOf NgxFormService
2946
- */
2947
- <span class="fstat-no" title="function not covered" > static </span>register(control: AbstractControl, props: FieldProperties): void {
2948
- <span class="cstat-no" title="statement not covered" > this.controls.set(control, props);</span>
2949
- }
2950
- &nbsp;
2951
- /**
2952
- * @description Unregisters a control.
2953
- * @summary Removes a control and its associated properties from the internal WeakMap.
2954
- * @param {AbstractControl} control - The control to unregister.
2955
- * @return {boolean} True if the control was successfully unregistered, false otherwise.
2956
- */
2957
- static unregister(control: AbstractControl): boolean {
2958
- return this.controls.delete(control);
2959
- }
2960
- &nbsp;
2961
- /**
2962
- * @description Resets a form group.
2963
- * @summary Recursively resets all controls in a form group, clearing values, errors, and marking them as pristine and untouched.
2964
- * @param {FormGroup} formGroup - The form group to reset.
2965
- */
2966
- <span class="fstat-no" title="function not covered" > static </span>reset(formGroup: FormGroup | FormControl): void {
2967
- <span class="cstat-no" title="statement not covered" > if(formGroup instanceof FormControl) {</span>
2968
- const control = <span class="cstat-no" title="statement not covered" >formGroup as FormControl;</span>
2969
- const { type } = <span class="cstat-no" title="statement not covered" >NgxFormService.getPropsFromControl(control);</span>
2970
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!HTML5CheckTypes.includes(type))</span>
2971
- <span class="cstat-no" title="statement not covered" > control.setValue("");</span>
2972
- <span class="cstat-no" title="statement not covered" > control.markAsPristine();</span>
2973
- <span class="cstat-no" title="statement not covered" > control.markAsUntouched();</span>
2974
- <span class="cstat-no" title="statement not covered" > control.setErrors(null);</span>
2975
- <span class="cstat-no" title="statement not covered" > control.updateValueAndValidity();</span>
2976
- } else {
2977
- <span class="cstat-no" title="statement not covered" > for (const key in formGroup.controls) {</span>
2978
- const control = <span class="cstat-no" title="statement not covered" >formGroup.controls[key];</span>
2979
- <span class="cstat-no" title="statement not covered" > NgxFormService.reset(control as FormControl);</span>
2980
- <span class="cstat-no" title="statement not covered" > continue;</span>
2981
- }
2982
- }
2983
- }
2984
- }
2985
- &nbsp;</pre></td></tr></table></pre>
2986
-
2987
- <div class='push'></div><!-- for sticky footer -->
2988
- </div><!-- /wrapper -->
2989
- <div class='footer quiet pad2 space-top1 center small'>
2990
- Code coverage generated by
2991
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2992
- at 2025-10-08T15:33:01.484Z
2993
- </div>
2994
- <script src="../../../prettify.js"></script>
2995
- <script>
2996
- window.onload = function () {
2997
- prettyPrint();
2998
- };
2999
- </script>
3000
- <script src="../../../sorter.js"></script>
3001
- <script src="../../../block-navigation.js"></script>
3002
- </body>
3003
- </html>
3004
-