@lcap/nasl 3.5.0-alpha.1 → 3.5.0-beta.2

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 (571) hide show
  1. package/out/bak/translator.js +119 -39
  2. package/out/bak/translator.js.map +1 -1
  3. package/out/breakpoint/generator/BreakpointNode.d.ts +3 -0
  4. package/out/breakpoint/generator/BreakpointNode.js +9 -0
  5. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  6. package/out/breakpoint/generator/CallbackNode.js +15 -0
  7. package/out/breakpoint/generator/CallbackNode.js.map +1 -1
  8. package/out/breakpoint/shared/constants.js +1 -0
  9. package/out/breakpoint/shared/constants.js.map +1 -1
  10. package/out/breakpoint/shared/utils.js +12 -6
  11. package/out/breakpoint/shared/utils.js.map +1 -1
  12. package/out/common/BaseNode.d.ts +1 -0
  13. package/out/common/BaseNode.js +23 -34
  14. package/out/common/BaseNode.js.map +1 -1
  15. package/out/concepts/App__.d.ts +51 -51
  16. package/out/concepts/App__.js +87 -92
  17. package/out/concepts/App__.js.map +1 -1
  18. package/out/concepts/BackendVariable__.js +10 -2
  19. package/out/concepts/BackendVariable__.js.map +1 -1
  20. package/out/concepts/BinaryExpression__.d.ts +2 -0
  21. package/out/concepts/BinaryExpression__.js +4 -0
  22. package/out/concepts/BinaryExpression__.js.map +1 -1
  23. package/out/concepts/BindAttribute__.js +16 -6
  24. package/out/concepts/BindAttribute__.js.map +1 -1
  25. package/out/concepts/BindDirective__.d.ts +1 -0
  26. package/out/concepts/BindDirective__.js +19 -4
  27. package/out/concepts/BindDirective__.js.map +1 -1
  28. package/out/concepts/BindEvent__.d.ts +3 -1
  29. package/out/concepts/BindEvent__.js +38 -13
  30. package/out/concepts/BindEvent__.js.map +1 -1
  31. package/out/concepts/BusinessComponent__.d.ts +637 -0
  32. package/out/concepts/BusinessComponent__.js +1892 -0
  33. package/out/concepts/BusinessComponent__.js.map +1 -0
  34. package/out/concepts/BusinessLogic__.d.ts +38 -0
  35. package/out/concepts/BusinessLogic__.js +358 -0
  36. package/out/concepts/BusinessLogic__.js.map +1 -0
  37. package/out/concepts/CallEvent__.d.ts +97 -0
  38. package/out/concepts/CallEvent__.js +263 -0
  39. package/out/concepts/CallEvent__.js.map +1 -0
  40. package/out/concepts/CallFunction__.d.ts +2 -0
  41. package/out/concepts/CallFunction__.js +14 -2
  42. package/out/concepts/CallFunction__.js.map +1 -1
  43. package/out/concepts/CallInterface__.d.ts +2 -0
  44. package/out/concepts/CallInterface__.js +5 -1
  45. package/out/concepts/CallInterface__.js.map +1 -1
  46. package/out/concepts/CallLogic__.d.ts +5 -2
  47. package/out/concepts/CallLogic__.js +43 -50
  48. package/out/concepts/CallLogic__.js.map +1 -1
  49. package/out/concepts/Constant__.js +7 -6
  50. package/out/concepts/Constant__.js.map +1 -1
  51. package/out/concepts/Destination__.js +2 -2
  52. package/out/concepts/Destination__.js.map +1 -1
  53. package/out/concepts/End__.js +2 -1
  54. package/out/concepts/End__.js.map +1 -1
  55. package/out/concepts/Event__.d.ts +10 -0
  56. package/out/concepts/Event__.js +49 -0
  57. package/out/concepts/Event__.js.map +1 -1
  58. package/out/concepts/FrontendType__.d.ts +308 -0
  59. package/out/concepts/FrontendType__.js +605 -0
  60. package/out/concepts/FrontendType__.js.map +1 -0
  61. package/out/concepts/Frontend__.d.ts +0 -88
  62. package/out/concepts/Frontend__.js +1 -143
  63. package/out/concepts/Frontend__.js.map +1 -1
  64. package/out/concepts/Identifier__.d.ts +5 -0
  65. package/out/concepts/Identifier__.js +19 -9
  66. package/out/concepts/Identifier__.js.map +1 -1
  67. package/out/concepts/LogicItem__.d.ts +1 -1
  68. package/out/concepts/LogicItem__.js.map +1 -1
  69. package/out/concepts/Logic__.d.ts +3 -1
  70. package/out/concepts/Logic__.js +16 -13
  71. package/out/concepts/Logic__.js.map +1 -1
  72. package/out/concepts/MemberExpression__.d.ts +1 -1
  73. package/out/concepts/MemberExpression__.js +3 -3
  74. package/out/concepts/MemberExpression__.js.map +1 -1
  75. package/out/concepts/NewComposite__.d.ts +2 -0
  76. package/out/concepts/NewComposite__.js +4 -0
  77. package/out/concepts/NewComposite__.js.map +1 -1
  78. package/out/concepts/NewList__.d.ts +2 -0
  79. package/out/concepts/NewList__.js +4 -0
  80. package/out/concepts/NewList__.js.map +1 -1
  81. package/out/concepts/NewMap__.d.ts +2 -0
  82. package/out/concepts/NewMap__.js +4 -0
  83. package/out/concepts/NewMap__.js.map +1 -1
  84. package/out/concepts/ParamWithGroup__.d.ts +39 -0
  85. package/out/concepts/ParamWithGroup__.js +85 -0
  86. package/out/concepts/ParamWithGroup__.js.map +1 -0
  87. package/out/concepts/Param__.js +11 -3
  88. package/out/concepts/Param__.js.map +1 -1
  89. package/out/concepts/Return__.js +17 -9
  90. package/out/concepts/Return__.js.map +1 -1
  91. package/out/concepts/TypeAnnotation__.js.map +1 -1
  92. package/out/concepts/Variable__.js +17 -8
  93. package/out/concepts/Variable__.js.map +1 -1
  94. package/out/concepts/ViewElement__.d.ts +17 -1
  95. package/out/concepts/ViewElement__.js +141 -15
  96. package/out/concepts/ViewElement__.js.map +1 -1
  97. package/out/concepts/View__.js +4 -4
  98. package/out/concepts/View__.js.map +1 -1
  99. package/out/concepts/index__.d.ts +5 -0
  100. package/out/concepts/index__.js +5 -0
  101. package/out/concepts/index__.js.map +1 -1
  102. package/out/concepts/utils/asserts.d.ts +258 -3
  103. package/out/concepts/utils/asserts.js +351 -13
  104. package/out/concepts/utils/asserts.js.map +1 -1
  105. package/out/concepts/utils/quick-info.d.ts +13 -0
  106. package/out/concepts/utils/quick-info.js +51 -0
  107. package/out/concepts/utils/quick-info.js.map +1 -0
  108. package/out/concepts/utils/types.d.ts +20 -3
  109. package/out/generator/genBundleFiles.js +25 -11
  110. package/out/generator/genBundleFiles.js.map +1 -1
  111. package/out/generator/genReleaseBody.js +12 -3
  112. package/out/generator/genReleaseBody.js.map +1 -1
  113. package/out/generator/permission.js +3 -3
  114. package/out/generator/permission.js.map +1 -1
  115. package/out/server/extendBaseNode.js +6 -4
  116. package/out/server/extendBaseNode.js.map +1 -1
  117. package/out/server/getLogics.js +62 -27
  118. package/out/server/getLogics.js.map +1 -1
  119. package/out/server/getMemberIdentifier.js +6 -1
  120. package/out/server/getMemberIdentifier.js.map +1 -1
  121. package/out/server/naslServer.js +26 -59
  122. package/out/server/naslServer.js.map +1 -1
  123. package/out/server/translator.js +6 -1
  124. package/out/server/translator.js.map +1 -1
  125. package/out/service/storage/init.js +1 -2
  126. package/out/service/storage/init.js.map +1 -1
  127. package/out/templator/genCreateBlock.js +6 -6
  128. package/out/templator/genCreateBlock.js.map +1 -1
  129. package/out/templator/genCurdEditMultipleKeyBlock.js +16 -16
  130. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  131. package/out/templator/genCurdMultipleKeyBlock.js +36 -36
  132. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  133. package/out/templator/genGetBlock.js +4 -4
  134. package/out/templator/genGetBlock.js.map +1 -1
  135. package/out/templator/genGridViewBlock.js +12 -12
  136. package/out/templator/genGridViewBlock.js.map +1 -1
  137. package/out/templator/genListViewBlock.js +4 -4
  138. package/out/templator/genListViewBlock.js.map +1 -1
  139. package/out/templator/genSelectBlock.js +3 -3
  140. package/out/templator/genSelectBlock.js.map +1 -1
  141. package/out/templator/genTableBlock.js +10 -10
  142. package/out/templator/genTableBlock.js.map +1 -1
  143. package/out/templator/genUpdateBlock.js +8 -8
  144. package/out/templator/genUpdateBlock.js.map +1 -1
  145. package/out/templator/utils.d.ts +2 -2
  146. package/out/templator/utils.js.map +1 -1
  147. package/out/translator/utils.d.ts +2 -2
  148. package/out/translator/utils.js +0 -18
  149. package/out/translator/utils.js.map +1 -1
  150. package/out/utils/i18nInfo.js +7 -2
  151. package/out/utils/i18nInfo.js.map +1 -1
  152. package/package.json +1 -1
  153. package/src/bak/translator.js +121 -43
  154. package/src/breakpoint/generator/BreakpointNode.ts +12 -0
  155. package/src/breakpoint/generator/CallbackNode.ts +17 -0
  156. package/src/breakpoint/shared/constants.ts +1 -0
  157. package/src/breakpoint/shared/utils.ts +13 -8
  158. package/src/common/BaseNode.ts +22 -34
  159. package/src/concepts/App__.ts +140 -146
  160. package/src/concepts/BackendVariable__.ts +10 -2
  161. package/src/concepts/BinaryExpression__.ts +5 -1
  162. package/src/concepts/BindAttribute__.ts +15 -6
  163. package/src/concepts/BindDirective__.ts +19 -4
  164. package/src/concepts/BindEvent__.ts +40 -12
  165. package/src/concepts/BusinessComponent__.ts +2659 -0
  166. package/src/concepts/BusinessLogic__.ts +376 -0
  167. package/src/concepts/CallEvent__.ts +334 -0
  168. package/src/concepts/CallFunction__.ts +15 -2
  169. package/src/concepts/CallInterface__.ts +6 -1
  170. package/src/concepts/CallLogic__.ts +50 -58
  171. package/src/concepts/Constant__.ts +5 -7
  172. package/src/concepts/Destination__.ts +2 -2
  173. package/src/concepts/End__.ts +1 -0
  174. package/src/concepts/Event__.ts +57 -0
  175. package/src/concepts/FrontendType__.ts +919 -0
  176. package/src/concepts/Frontend__.ts +3 -251
  177. package/src/concepts/Identifier__.ts +29 -13
  178. package/src/concepts/LogicItem__.ts +1 -0
  179. package/src/concepts/Logic__.ts +21 -14
  180. package/src/concepts/MemberExpression__.ts +3 -3
  181. package/src/concepts/NewComposite__.ts +5 -5
  182. package/src/concepts/NewList__.ts +6 -2
  183. package/src/concepts/NewMap__.ts +6 -3
  184. package/src/concepts/ParamWithGroup__.ts +101 -0
  185. package/src/concepts/Param__.ts +11 -3
  186. package/src/concepts/Return__.ts +15 -12
  187. package/src/concepts/TypeAnnotation__.ts +1 -1
  188. package/src/concepts/Variable__.ts +17 -9
  189. package/src/concepts/ViewElement__.ts +164 -31
  190. package/src/concepts/View__.ts +6 -4
  191. package/src/concepts/index__.ts +5 -0
  192. package/src/concepts/utils/asserts.ts +367 -4
  193. package/src/concepts/utils/quick-info.ts +64 -0
  194. package/src/concepts/utils/types.ts +28 -0
  195. package/src/generator/genBundleFiles.ts +33 -15
  196. package/src/generator/genReleaseBody.ts +14 -3
  197. package/src/generator/permission.ts +8 -6
  198. package/src/server/extendBaseNode.ts +22 -20
  199. package/src/server/getLogics.ts +79 -41
  200. package/src/server/getMemberIdentifier.ts +7 -1
  201. package/src/server/naslServer.ts +28 -57
  202. package/src/server/translator.ts +7 -1
  203. package/src/service/storage/init.ts +1 -2
  204. package/src/templator/genCreateBlock.ts +6 -6
  205. package/src/templator/genCurdEditMultipleKeyBlock.ts +16 -16
  206. package/src/templator/genCurdMultipleKeyBlock.ts +36 -36
  207. package/src/templator/genGetBlock.ts +4 -4
  208. package/src/templator/genGridViewBlock.ts +12 -12
  209. package/src/templator/genListViewBlock.ts +4 -4
  210. package/src/templator/genSelectBlock.ts +3 -3
  211. package/src/templator/genTableBlock.ts +10 -10
  212. package/src/templator/genUpdateBlock.ts +8 -8
  213. package/src/templator/utils.ts +2 -2
  214. package/src/translator/utils.ts +2 -22
  215. package/src/utils/i18nInfo.ts +7 -2
  216. package/test/concepts/binary-expression/__snapshots__/getQuickInfoOffset.spec.ts.snap +25 -0
  217. package/test/concepts/binary-expression/getQuickInfoOffset.spec.ts +19 -0
  218. package/test/concepts/call-function/__snapshots__/getQuickInfoOffset.spec.ts.snap +41 -0
  219. package/test/concepts/call-function/fixtures/from-string.json +68 -59
  220. package/test/concepts/call-function/fixtures/to-string-global-tz.json +67 -58
  221. package/test/concepts/call-function/fixtures/to-string-no-tz.json +57 -48
  222. package/test/concepts/call-function/fixtures/to-string-user-tz.json +69 -60
  223. package/test/concepts/call-function/fixtures/to-string-utc-tz.json +69 -60
  224. package/test/concepts/call-function/getQuickInfoOffset.spec.ts +19 -0
  225. package/test/concepts/call-interface/__snapshots__/getQuickInfoOffset.spec.ts.snap +86 -0
  226. package/test/concepts/call-interface/__snapshots__/toEmbeddedTS.spec.ts.snap +3 -3
  227. package/test/concepts/call-interface/fixtures/only-interface.json +81 -72
  228. package/test/concepts/call-interface/fixtures/with-body-complex-argument.json +223 -214
  229. package/test/concepts/call-interface/fixtures/with-body-no-argument.json +85 -76
  230. package/test/concepts/call-interface/fixtures/with-body-simple-argument.json +100 -91
  231. package/test/concepts/call-interface/fixtures/with-headers-no-argument.json +88 -79
  232. package/test/concepts/call-interface/fixtures/with-headers.json +90 -81
  233. package/test/concepts/call-interface/fixtures/with-query-no-argument.json +88 -79
  234. package/test/concepts/call-interface/fixtures/with-query.json +90 -81
  235. package/test/concepts/call-interface/getQuickInfoOffset.spec.ts +19 -0
  236. package/test/concepts/call-logic/__snapshots__/getQuickInfoOffset.spec.ts.snap +4 -2
  237. package/test/concepts/call-logic/fixtures/entries-get-with-arguments.json +104 -95
  238. package/test/concepts/call-logic/fixtures/entries-update-with-arguments.json +209 -200
  239. package/test/concepts/call-logic/fixtures/global-logic-argument-no-expression.json +97 -88
  240. package/test/concepts/call-logic/fixtures/global-logic-argument-some-expression.json +124 -115
  241. package/test/concepts/call-logic/fixtures/json-deserialize.json +120 -111
  242. package/test/concepts/call-logic/fixtures/json-serialize-with-string.json +124 -115
  243. package/test/concepts/call-logic/fixtures/json-serialize.json +124 -115
  244. package/test/concepts/call-logic/fixtures/view-buildin-logic-with-argument.json +91 -82
  245. package/test/concepts/call-logic/fixtures/view-component-logic-no-argument.json +88 -79
  246. package/test/concepts/call-logic/fixtures/view-component-with-validation.json +144 -135
  247. package/test/concepts/call-logic/getQuickInfoOffset.spec.ts +2 -7
  248. package/test/concepts/identifier/fixtures/view-variable.json +145 -136
  249. package/test/concepts/new-composite/__snapshots__/getQuickInfoOffset.spec.ts.snap +104 -0
  250. package/test/concepts/new-composite/__snapshots__/toEmbeddedTS.spec.ts.snap +97 -0
  251. package/test/concepts/new-composite/__snapshots__/toJS.spec.ts.snap +43 -0
  252. package/test/concepts/new-composite/constant.ts +5 -0
  253. package/test/concepts/new-composite/fixtures/nested-transform.json +241 -0
  254. package/test/concepts/new-composite/fixtures/nested.json +146 -0
  255. package/test/concepts/new-composite/fixtures/normal.json +63 -0
  256. package/test/concepts/new-composite/getQuickInfoOffset.spec.ts +19 -0
  257. package/test/concepts/new-composite/toEmbeddedTS.spec.ts +15 -0
  258. package/test/concepts/new-composite/toJS.spec.ts +14 -0
  259. package/test/concepts/new-list/__snapshots__/getQuickInfoOffset.spec.ts.snap +165 -0
  260. package/test/concepts/new-list/__snapshots__/toEmbeddedTS.spec.ts.snap +207 -0
  261. package/test/concepts/new-list/__snapshots__/toJS.spec.ts.snap +63 -0
  262. package/test/concepts/new-list/constant.ts +5 -0
  263. package/test/concepts/new-list/fixtures/nested-map.json +117 -0
  264. package/test/concepts/new-list/fixtures/nested-tranform.json +140 -0
  265. package/test/concepts/new-list/fixtures/nested.json +107 -0
  266. package/test/concepts/new-list/fixtures/normal.json +95 -0
  267. package/test/concepts/new-list/getQuickInfoOffset.spec.ts +19 -0
  268. package/test/concepts/new-list/toEmbeddedTS.spec.ts +15 -0
  269. package/test/concepts/new-list/toJS.spec.ts +14 -0
  270. package/test/concepts/new-map/__snapshots__/getQuickInfoOffset.spec.ts.snap +115 -0
  271. package/test/concepts/new-map/__snapshots__/toEmbeddedTS.spec.ts.snap +192 -0
  272. package/test/concepts/new-map/__snapshots__/toJS.spec.ts.snap +54 -0
  273. package/test/concepts/new-map/constant.ts +5 -0
  274. package/test/concepts/new-map/fixtures/nested-transform.json +169 -0
  275. package/test/concepts/new-map/fixtures/nested.json +141 -0
  276. package/test/concepts/new-map/fixtures/normal.json +101 -0
  277. package/test/concepts/new-map/getQuickInfoOffset.spec.ts +19 -0
  278. package/test/concepts/new-map/toEmbeddedTS.spec.ts +15 -0
  279. package/test/concepts/new-map/toJS.spec.ts +14 -0
  280. package/test/concepts/utils.ts +17 -0
  281. package/test/concepts/view-element/__snapshots__/toVue.spec.ts.snap +1 -1
  282. package/test/concepts/view-element/fixtures/default-login.json +221 -212
  283. package/test/concepts/view-element/fixtures/default-not-found.json +183 -174
  284. package/test/concepts/view-element/fixtures/with-role-auth.json +91 -82
  285. package/test/concepts/view-element/fixtures/with-table.json +1894 -1885
  286. package/test/concepts/view-element/toVue.spec.ts +1 -0
  287. package/.nyc_output/b920244d-8d01-4e76-be5a-95132217c5a1.json +0 -1
  288. package/.nyc_output/processinfo/b920244d-8d01-4e76-be5a-95132217c5a1.json +0 -1
  289. package/.nyc_output/processinfo/index.json +0 -1
  290. package/coverage/base.css +0 -224
  291. package/coverage/block-navigation.js +0 -87
  292. package/coverage/favicon.png +0 -0
  293. package/coverage/index.html +0 -461
  294. package/coverage/prettify.css +0 -1
  295. package/coverage/prettify.js +0 -2
  296. package/coverage/sort-arrow-sprite.png +0 -0
  297. package/coverage/sorter.js +0 -196
  298. package/coverage/src/automate/engine/index.html +0 -116
  299. package/coverage/src/automate/engine/utils.js.html +0 -1414
  300. package/coverage/src/bak/index.html +0 -116
  301. package/coverage/src/bak/translator.js.html +0 -631
  302. package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +0 -175
  303. package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +0 -169
  304. package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +0 -1246
  305. package/coverage/src/breakpoint/generator/CallbackNode.ts.html +0 -145
  306. package/coverage/src/breakpoint/generator/index.html +0 -176
  307. package/coverage/src/breakpoint/generator/index.ts.html +0 -508
  308. package/coverage/src/breakpoint/index.html +0 -116
  309. package/coverage/src/breakpoint/index.ts.html +0 -94
  310. package/coverage/src/breakpoint/shared/constants.ts.html +0 -436
  311. package/coverage/src/breakpoint/shared/index.html +0 -176
  312. package/coverage/src/breakpoint/shared/index.ts.html +0 -94
  313. package/coverage/src/breakpoint/shared/operations.ts.html +0 -160
  314. package/coverage/src/breakpoint/shared/socket.ts.html +0 -1297
  315. package/coverage/src/breakpoint/shared/utils.ts.html +0 -1087
  316. package/coverage/src/breakpoint/store/core.ts.html +0 -1600
  317. package/coverage/src/breakpoint/store/dock.ts.html +0 -733
  318. package/coverage/src/breakpoint/store/index.html +0 -146
  319. package/coverage/src/breakpoint/store/index.ts.html +0 -91
  320. package/coverage/src/common/BaseNode.ts.html +0 -4081
  321. package/coverage/src/common/Command.ts.html +0 -310
  322. package/coverage/src/common/EventEmitter.ts.html +0 -373
  323. package/coverage/src/common/Messager.ts.html +0 -820
  324. package/coverage/src/common/asyncFuncMap.ts.html +0 -127
  325. package/coverage/src/common/index.html +0 -191
  326. package/coverage/src/common/index.ts.html +0 -94
  327. package/coverage/src/concepts/Abort__.ts.html +0 -331
  328. package/coverage/src/concepts/Anchor__.ts.html +0 -667
  329. package/coverage/src/concepts/AnonymousFunction__.ts.html +0 -2092
  330. package/coverage/src/concepts/App__.ts.html +0 -13651
  331. package/coverage/src/concepts/Argument__.ts.html +0 -907
  332. package/coverage/src/concepts/Assignee__.ts.html +0 -2317
  333. package/coverage/src/concepts/AssignmentLine__.ts.html +0 -430
  334. package/coverage/src/concepts/Assignment__.ts.html +0 -1174
  335. package/coverage/src/concepts/Attribute__.ts.html +0 -919
  336. package/coverage/src/concepts/AuthInterface__.ts.html +0 -370
  337. package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +0 -2011
  338. package/coverage/src/concepts/AuthLogic__.ts.html +0 -793
  339. package/coverage/src/concepts/BackendVariable__.ts.html +0 -1690
  340. package/coverage/src/concepts/Backend__.ts.html +0 -1192
  341. package/coverage/src/concepts/BatchAssignment__.ts.html +0 -3376
  342. package/coverage/src/concepts/BinaryExpression__.ts.html +0 -1468
  343. package/coverage/src/concepts/BindAttribute__.ts.html +0 -3931
  344. package/coverage/src/concepts/BindDirective__.ts.html +0 -2002
  345. package/coverage/src/concepts/BindEvent__.ts.html +0 -3487
  346. package/coverage/src/concepts/BindStyle__.ts.html +0 -1645
  347. package/coverage/src/concepts/BooleanLiteral__.ts.html +0 -421
  348. package/coverage/src/concepts/CallAuthInterface__.ts.html +0 -1642
  349. package/coverage/src/concepts/CallConnector__.ts.html +0 -925
  350. package/coverage/src/concepts/CallFunction__.ts.html +0 -2164
  351. package/coverage/src/concepts/CallInterface__.ts.html +0 -2776
  352. package/coverage/src/concepts/CallLogic__.ts.html +0 -4693
  353. package/coverage/src/concepts/CallQueryComponent__.ts.html +0 -5419
  354. package/coverage/src/concepts/Comment__.ts.html +0 -397
  355. package/coverage/src/concepts/CompletionProperty__.ts.html +0 -946
  356. package/coverage/src/concepts/ConfigGroup__.ts.html +0 -1132
  357. package/coverage/src/concepts/ConfigPropertyValue__.ts.html +0 -427
  358. package/coverage/src/concepts/ConfigProperty__.ts.html +0 -1375
  359. package/coverage/src/concepts/Configuration__.ts.html +0 -1054
  360. package/coverage/src/concepts/Connection__.ts.html +0 -1387
  361. package/coverage/src/concepts/ConnectorTrigger__.ts.html +0 -598
  362. package/coverage/src/concepts/Connector__.ts.html +0 -4390
  363. package/coverage/src/concepts/Constant__.ts.html +0 -1123
  364. package/coverage/src/concepts/DataSource__.ts.html +0 -1798
  365. package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +0 -334
  366. package/coverage/src/concepts/DefaultValue__.ts.html +0 -946
  367. package/coverage/src/concepts/Destination__.ts.html +0 -2761
  368. package/coverage/src/concepts/End__.ts.html +0 -436
  369. package/coverage/src/concepts/EntityIndex__.ts.html +0 -799
  370. package/coverage/src/concepts/EntityProperty__.ts.html +0 -2866
  371. package/coverage/src/concepts/Entity__.ts.html +0 -3070
  372. package/coverage/src/concepts/EnumItem__.ts.html +0 -553
  373. package/coverage/src/concepts/Enum__.ts.html +0 -1258
  374. package/coverage/src/concepts/Event__.ts.html +0 -1111
  375. package/coverage/src/concepts/ExternalDestination__.ts.html +0 -1060
  376. package/coverage/src/concepts/ForEachStatement__.ts.html +0 -2023
  377. package/coverage/src/concepts/FrontendLibrary__.ts.html +0 -1762
  378. package/coverage/src/concepts/FrontendVariable__.ts.html +0 -292
  379. package/coverage/src/concepts/Frontend__.ts.html +0 -4078
  380. package/coverage/src/concepts/Function__.ts.html +0 -3718
  381. package/coverage/src/concepts/Identifier__.ts.html +0 -1060
  382. package/coverage/src/concepts/IfStatement__.ts.html +0 -1636
  383. package/coverage/src/concepts/Integration__.ts.html +0 -1273
  384. package/coverage/src/concepts/InterfaceParam__.ts.html +0 -1258
  385. package/coverage/src/concepts/Interface__.ts.html +0 -3463
  386. package/coverage/src/concepts/JSBlock__.ts.html +0 -424
  387. package/coverage/src/concepts/JavaLogic__.ts.html +0 -463
  388. package/coverage/src/concepts/LogicItem__.ts.html +0 -1174
  389. package/coverage/src/concepts/Logic__.ts.html +0 -7732
  390. package/coverage/src/concepts/MatchCase__.ts.html +0 -2974
  391. package/coverage/src/concepts/Match__.ts.html +0 -2494
  392. package/coverage/src/concepts/MemberExpression__.ts.html +0 -1744
  393. package/coverage/src/concepts/MicroApp__.ts.html +0 -439
  394. package/coverage/src/concepts/Module__.ts.html +0 -9385
  395. package/coverage/src/concepts/MsgTriggerEvent__.ts.html +0 -1072
  396. package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +0 -1045
  397. package/coverage/src/concepts/Namespace__.ts.html +0 -8221
  398. package/coverage/src/concepts/NewComposite__.ts.html +0 -4765
  399. package/coverage/src/concepts/NewList__.ts.html +0 -1702
  400. package/coverage/src/concepts/NewMap__.ts.html +0 -2470
  401. package/coverage/src/concepts/New__.ts.html +0 -289
  402. package/coverage/src/concepts/NullLiteral__.ts.html +0 -352
  403. package/coverage/src/concepts/NumericLiteral__.ts.html +0 -697
  404. package/coverage/src/concepts/OqlQueryComponent__.ts.html +0 -1237
  405. package/coverage/src/concepts/OverriddenLogic__.ts.html +0 -6970
  406. package/coverage/src/concepts/Param__.ts.html +0 -1798
  407. package/coverage/src/concepts/Point__.ts.html +0 -334
  408. package/coverage/src/concepts/ProcessComponent__.ts.html +0 -1717
  409. package/coverage/src/concepts/ProcessElement__.ts.html +0 -6187
  410. package/coverage/src/concepts/ProcessOutcome__.ts.html +0 -355
  411. package/coverage/src/concepts/ProcessOutcomes__.ts.html +0 -355
  412. package/coverage/src/concepts/Process__.ts.html +0 -5071
  413. package/coverage/src/concepts/QueryAggregateExpression__.ts.html +0 -589
  414. package/coverage/src/concepts/QueryFieldExpression__.ts.html +0 -586
  415. package/coverage/src/concepts/QueryFromExpression__.ts.html +0 -937
  416. package/coverage/src/concepts/QueryGroupByExpression__.ts.html +0 -580
  417. package/coverage/src/concepts/QueryJoinExpression__.ts.html +0 -1606
  418. package/coverage/src/concepts/QueryLimitExpression__.ts.html +0 -664
  419. package/coverage/src/concepts/QueryOrderByExpression__.ts.html +0 -706
  420. package/coverage/src/concepts/QuerySelectExpression__.ts.html +0 -1741
  421. package/coverage/src/concepts/Rect__.ts.html +0 -376
  422. package/coverage/src/concepts/Return__.ts.html +0 -1471
  423. package/coverage/src/concepts/Role__.ts.html +0 -604
  424. package/coverage/src/concepts/SelectMembers__.ts.html +0 -1279
  425. package/coverage/src/concepts/Slot__.ts.html +0 -649
  426. package/coverage/src/concepts/SqlQueryComponent__.ts.html +0 -1003
  427. package/coverage/src/concepts/Start__.ts.html +0 -307
  428. package/coverage/src/concepts/StringInterpolation__.ts.html +0 -1156
  429. package/coverage/src/concepts/StringLiteral__.ts.html +0 -508
  430. package/coverage/src/concepts/StructureProperty__.ts.html +0 -1300
  431. package/coverage/src/concepts/Structure__.ts.html +0 -2182
  432. package/coverage/src/concepts/SwitchCase__.ts.html +0 -1204
  433. package/coverage/src/concepts/SwitchStatement__.ts.html +0 -904
  434. package/coverage/src/concepts/Theme__.ts.html +0 -361
  435. package/coverage/src/concepts/Transactional__.ts.html +0 -631
  436. package/coverage/src/concepts/TriggerEvent__.ts.html +0 -1039
  437. package/coverage/src/concepts/TriggerLauncher__.ts.html +0 -778
  438. package/coverage/src/concepts/TypeAnnotation__.ts.html +0 -3832
  439. package/coverage/src/concepts/TypeParam__.ts.html +0 -322
  440. package/coverage/src/concepts/UnaryExpression__.ts.html +0 -730
  441. package/coverage/src/concepts/Unparsed__.ts.html +0 -397
  442. package/coverage/src/concepts/UseComponent__.ts.html +0 -334
  443. package/coverage/src/concepts/ValidationRule__.ts.html +0 -1876
  444. package/coverage/src/concepts/Variable__.ts.html +0 -1705
  445. package/coverage/src/concepts/ViewBlock__.ts.html +0 -355
  446. package/coverage/src/concepts/ViewComponent__.ts.html +0 -4327
  447. package/coverage/src/concepts/ViewElement__.ts.html +0 -8992
  448. package/coverage/src/concepts/View__.ts.html +0 -9019
  449. package/coverage/src/concepts/WhileStatement__.ts.html +0 -1105
  450. package/coverage/src/concepts/basics/stdlib/index.html +0 -356
  451. package/coverage/src/concepts/basics/stdlib/index.ts.html +0 -208
  452. package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +0 -565
  453. package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +0 -517
  454. package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +0 -226
  455. package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +0 -172
  456. package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +0 -214
  457. package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +0 -145
  458. package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +0 -589
  459. package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +0 -214
  460. package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +0 -229
  461. package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +0 -268
  462. package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +0 -1999
  463. package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +0 -3259
  464. package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +0 -6955
  465. package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +0 -1768
  466. package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +0 -163
  467. package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +0 -664
  468. package/coverage/src/concepts/basics/types/coreTypeList.ts.html +0 -121
  469. package/coverage/src/concepts/basics/types/index.html +0 -131
  470. package/coverage/src/concepts/basics/types/index.ts.html +0 -160
  471. package/coverage/src/concepts/index.html +0 -1976
  472. package/coverage/src/concepts/index.ts.html +0 -103
  473. package/coverage/src/concepts/index__.ts.html +0 -454
  474. package/coverage/src/config.ts.html +0 -325
  475. package/coverage/src/decorators/index.html +0 -131
  476. package/coverage/src/decorators/index.ts.html +0 -583
  477. package/coverage/src/decorators/promise.ts.html +0 -169
  478. package/coverage/src/eventBus.ts.html +0 -100
  479. package/coverage/src/generator/compileComponent.ts.html +0 -142
  480. package/coverage/src/generator/genBundleFiles.ts.html +0 -1828
  481. package/coverage/src/generator/genHash.ts.html +0 -124
  482. package/coverage/src/generator/genMetaData.ts.html +0 -1084
  483. package/coverage/src/generator/genReleaseBody.ts.html +0 -1282
  484. package/coverage/src/generator/icestark.ts.html +0 -220
  485. package/coverage/src/generator/index.html +0 -266
  486. package/coverage/src/generator/index.ts.html +0 -106
  487. package/coverage/src/generator/microApp.ts.html +0 -172
  488. package/coverage/src/generator/permission.ts.html +0 -1036
  489. package/coverage/src/generator/qiankun.ts.html +0 -232
  490. package/coverage/src/generator/styleReplacer.ts.html +0 -199
  491. package/coverage/src/index.html +0 -146
  492. package/coverage/src/index.ts.html +0 -124
  493. package/coverage/src/manager/diagnostic.ts.html +0 -442
  494. package/coverage/src/manager/index.html +0 -131
  495. package/coverage/src/manager/stepRecorder.ts.html +0 -457
  496. package/coverage/src/natural/genNaturalTS.ts.html +0 -355
  497. package/coverage/src/natural/index.html +0 -161
  498. package/coverage/src/natural/index.ts.html +0 -91
  499. package/coverage/src/natural/naslStdlibMap.ts.html +0 -157
  500. package/coverage/src/natural/transformTSCode.ts.html +0 -2707
  501. package/coverage/src/sentry/index.html +0 -116
  502. package/coverage/src/sentry/index.ts.html +0 -676
  503. package/coverage/src/server/createUiTs.ts.html +0 -919
  504. package/coverage/src/server/entity2LogicNamespace.ts.html +0 -1294
  505. package/coverage/src/server/event.js.html +0 -526
  506. package/coverage/src/server/extendBaseNode.ts.html +0 -1762
  507. package/coverage/src/server/formatTsUtils.ts.html +0 -2689
  508. package/coverage/src/server/getConnector.ts.html +0 -316
  509. package/coverage/src/server/getExtensionModules.ts.html +0 -178
  510. package/coverage/src/server/getFunctions.ts.html +0 -133
  511. package/coverage/src/server/getInterfaces.ts.html +0 -229
  512. package/coverage/src/server/getLogging.ts.html +0 -100
  513. package/coverage/src/server/getLogics.ts.html +0 -1363
  514. package/coverage/src/server/getMemberIdentifier.ts.html +0 -1606
  515. package/coverage/src/server/getProcessComponents.ts.html +0 -112
  516. package/coverage/src/server/getProcesses.ts.html +0 -2023
  517. package/coverage/src/server/getValidates.ts.html +0 -115
  518. package/coverage/src/server/index.html +0 -401
  519. package/coverage/src/server/index.ts.html +0 -229
  520. package/coverage/src/server/naslServer.ts.html +0 -14356
  521. package/coverage/src/server/naslStdlibMap.ts.html +0 -241
  522. package/coverage/src/server/process2LogicNamespace.ts.html +0 -454
  523. package/coverage/src/server/translator.ts.html +0 -2566
  524. package/coverage/src/service/creator/add.configs.js.html +0 -397
  525. package/coverage/src/service/creator/errHandles.js.html +0 -304
  526. package/coverage/src/service/creator/index.html +0 -146
  527. package/coverage/src/service/creator/index.js.html +0 -352
  528. package/coverage/src/service/datasource/api.js.html +0 -118
  529. package/coverage/src/service/datasource/index.html +0 -131
  530. package/coverage/src/service/datasource/index.js.html +0 -103
  531. package/coverage/src/service/logic/api.js.html +0 -109
  532. package/coverage/src/service/logic/index.html +0 -131
  533. package/coverage/src/service/logic/index.js.html +0 -103
  534. package/coverage/src/service/storage/api.js.html +0 -202
  535. package/coverage/src/service/storage/index.html +0 -206
  536. package/coverage/src/service/storage/index.ts.html +0 -103
  537. package/coverage/src/service/storage/init.ts.html +0 -3721
  538. package/coverage/src/service/storage/jsoner.ts.html +0 -502
  539. package/coverage/src/service/storage/map.ts.html +0 -256
  540. package/coverage/src/service/storage/service.ts.html +0 -331
  541. package/coverage/src/service/storage/storagePoint.ts.html +0 -304
  542. package/coverage/src/templator/genCallComponentLogic.ts.html +0 -163
  543. package/coverage/src/templator/genCreateBlock.ts.html +0 -1093
  544. package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +0 -1609
  545. package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +0 -2254
  546. package/coverage/src/templator/genEditTableBlock.ts.html +0 -1021
  547. package/coverage/src/templator/genEnumSelectBlock.ts.html +0 -178
  548. package/coverage/src/templator/genGetBlock.ts.html +0 -451
  549. package/coverage/src/templator/genGridViewBlock.ts.html +0 -1114
  550. package/coverage/src/templator/genListViewBlock.ts.html +0 -475
  551. package/coverage/src/templator/genQueryComponent.ts.html +0 -1207
  552. package/coverage/src/templator/genSelectBlock.ts.html +0 -1243
  553. package/coverage/src/templator/genTableBlock.ts.html +0 -973
  554. package/coverage/src/templator/genUpdateBlock.ts.html +0 -1192
  555. package/coverage/src/templator/index.html +0 -326
  556. package/coverage/src/templator/index.ts.html +0 -154
  557. package/coverage/src/templator/utils.ts.html +0 -1861
  558. package/coverage/src/translator/constant.ts.html +0 -106
  559. package/coverage/src/translator/index.html +0 -146
  560. package/coverage/src/translator/index.ts.html +0 -94
  561. package/coverage/src/translator/utils.ts.html +0 -436
  562. package/coverage/src/utils/cookie.ts.html +0 -265
  563. package/coverage/src/utils/env.ts.html +0 -91
  564. package/coverage/src/utils/index.html +0 -236
  565. package/coverage/src/utils/index.ts.html +0 -694
  566. package/coverage/src/utils/logger.ts.html +0 -145
  567. package/coverage/src/utils/sortTsString.ts.html +0 -187
  568. package/coverage/src/utils/string.ts.html +0 -400
  569. package/coverage/src/utils/time-slicing.ts.html +0 -418
  570. package/coverage/src/utils/traverse.ts.html +0 -568
  571. package/coverage/src/utils/window.ts.html +0 -112
@@ -1,2689 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/server/formatTsUtils.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/server</a> formatTsUtils.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">2.47% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>11/444</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/256</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/53</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">2.6% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>11/423</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a>
609
- <a name='L544'></a><a href='#L544'>544</a>
610
- <a name='L545'></a><a href='#L545'>545</a>
611
- <a name='L546'></a><a href='#L546'>546</a>
612
- <a name='L547'></a><a href='#L547'>547</a>
613
- <a name='L548'></a><a href='#L548'>548</a>
614
- <a name='L549'></a><a href='#L549'>549</a>
615
- <a name='L550'></a><a href='#L550'>550</a>
616
- <a name='L551'></a><a href='#L551'>551</a>
617
- <a name='L552'></a><a href='#L552'>552</a>
618
- <a name='L553'></a><a href='#L553'>553</a>
619
- <a name='L554'></a><a href='#L554'>554</a>
620
- <a name='L555'></a><a href='#L555'>555</a>
621
- <a name='L556'></a><a href='#L556'>556</a>
622
- <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a>
624
- <a name='L559'></a><a href='#L559'>559</a>
625
- <a name='L560'></a><a href='#L560'>560</a>
626
- <a name='L561'></a><a href='#L561'>561</a>
627
- <a name='L562'></a><a href='#L562'>562</a>
628
- <a name='L563'></a><a href='#L563'>563</a>
629
- <a name='L564'></a><a href='#L564'>564</a>
630
- <a name='L565'></a><a href='#L565'>565</a>
631
- <a name='L566'></a><a href='#L566'>566</a>
632
- <a name='L567'></a><a href='#L567'>567</a>
633
- <a name='L568'></a><a href='#L568'>568</a>
634
- <a name='L569'></a><a href='#L569'>569</a>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a>
642
- <a name='L577'></a><a href='#L577'>577</a>
643
- <a name='L578'></a><a href='#L578'>578</a>
644
- <a name='L579'></a><a href='#L579'>579</a>
645
- <a name='L580'></a><a href='#L580'>580</a>
646
- <a name='L581'></a><a href='#L581'>581</a>
647
- <a name='L582'></a><a href='#L582'>582</a>
648
- <a name='L583'></a><a href='#L583'>583</a>
649
- <a name='L584'></a><a href='#L584'>584</a>
650
- <a name='L585'></a><a href='#L585'>585</a>
651
- <a name='L586'></a><a href='#L586'>586</a>
652
- <a name='L587'></a><a href='#L587'>587</a>
653
- <a name='L588'></a><a href='#L588'>588</a>
654
- <a name='L589'></a><a href='#L589'>589</a>
655
- <a name='L590'></a><a href='#L590'>590</a>
656
- <a name='L591'></a><a href='#L591'>591</a>
657
- <a name='L592'></a><a href='#L592'>592</a>
658
- <a name='L593'></a><a href='#L593'>593</a>
659
- <a name='L594'></a><a href='#L594'>594</a>
660
- <a name='L595'></a><a href='#L595'>595</a>
661
- <a name='L596'></a><a href='#L596'>596</a>
662
- <a name='L597'></a><a href='#L597'>597</a>
663
- <a name='L598'></a><a href='#L598'>598</a>
664
- <a name='L599'></a><a href='#L599'>599</a>
665
- <a name='L600'></a><a href='#L600'>600</a>
666
- <a name='L601'></a><a href='#L601'>601</a>
667
- <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a>
669
- <a name='L604'></a><a href='#L604'>604</a>
670
- <a name='L605'></a><a href='#L605'>605</a>
671
- <a name='L606'></a><a href='#L606'>606</a>
672
- <a name='L607'></a><a href='#L607'>607</a>
673
- <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a>
718
- <a name='L653'></a><a href='#L653'>653</a>
719
- <a name='L654'></a><a href='#L654'>654</a>
720
- <a name='L655'></a><a href='#L655'>655</a>
721
- <a name='L656'></a><a href='#L656'>656</a>
722
- <a name='L657'></a><a href='#L657'>657</a>
723
- <a name='L658'></a><a href='#L658'>658</a>
724
- <a name='L659'></a><a href='#L659'>659</a>
725
- <a name='L660'></a><a href='#L660'>660</a>
726
- <a name='L661'></a><a href='#L661'>661</a>
727
- <a name='L662'></a><a href='#L662'>662</a>
728
- <a name='L663'></a><a href='#L663'>663</a>
729
- <a name='L664'></a><a href='#L664'>664</a>
730
- <a name='L665'></a><a href='#L665'>665</a>
731
- <a name='L666'></a><a href='#L666'>666</a>
732
- <a name='L667'></a><a href='#L667'>667</a>
733
- <a name='L668'></a><a href='#L668'>668</a>
734
- <a name='L669'></a><a href='#L669'>669</a>
735
- <a name='L670'></a><a href='#L670'>670</a>
736
- <a name='L671'></a><a href='#L671'>671</a>
737
- <a name='L672'></a><a href='#L672'>672</a>
738
- <a name='L673'></a><a href='#L673'>673</a>
739
- <a name='L674'></a><a href='#L674'>674</a>
740
- <a name='L675'></a><a href='#L675'>675</a>
741
- <a name='L676'></a><a href='#L676'>676</a>
742
- <a name='L677'></a><a href='#L677'>677</a>
743
- <a name='L678'></a><a href='#L678'>678</a>
744
- <a name='L679'></a><a href='#L679'>679</a>
745
- <a name='L680'></a><a href='#L680'>680</a>
746
- <a name='L681'></a><a href='#L681'>681</a>
747
- <a name='L682'></a><a href='#L682'>682</a>
748
- <a name='L683'></a><a href='#L683'>683</a>
749
- <a name='L684'></a><a href='#L684'>684</a>
750
- <a name='L685'></a><a href='#L685'>685</a>
751
- <a name='L686'></a><a href='#L686'>686</a>
752
- <a name='L687'></a><a href='#L687'>687</a>
753
- <a name='L688'></a><a href='#L688'>688</a>
754
- <a name='L689'></a><a href='#L689'>689</a>
755
- <a name='L690'></a><a href='#L690'>690</a>
756
- <a name='L691'></a><a href='#L691'>691</a>
757
- <a name='L692'></a><a href='#L692'>692</a>
758
- <a name='L693'></a><a href='#L693'>693</a>
759
- <a name='L694'></a><a href='#L694'>694</a>
760
- <a name='L695'></a><a href='#L695'>695</a>
761
- <a name='L696'></a><a href='#L696'>696</a>
762
- <a name='L697'></a><a href='#L697'>697</a>
763
- <a name='L698'></a><a href='#L698'>698</a>
764
- <a name='L699'></a><a href='#L699'>699</a>
765
- <a name='L700'></a><a href='#L700'>700</a>
766
- <a name='L701'></a><a href='#L701'>701</a>
767
- <a name='L702'></a><a href='#L702'>702</a>
768
- <a name='L703'></a><a href='#L703'>703</a>
769
- <a name='L704'></a><a href='#L704'>704</a>
770
- <a name='L705'></a><a href='#L705'>705</a>
771
- <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
935
- <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-neutral">&nbsp;</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-neutral">&nbsp;</span>
953
- <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-yes">1x</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-neutral">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-neutral">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-no">&nbsp;</span>
981
- <span class="cline-any cline-no">&nbsp;</span>
982
- <span class="cline-any cline-no">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-no">&nbsp;</span>
985
- <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-no">&nbsp;</span>
989
- <span class="cline-any cline-no">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-yes">1x</span>
998
- <span class="cline-any cline-no">&nbsp;</span>
999
- <span class="cline-any cline-no">&nbsp;</span>
1000
- <span class="cline-any cline-no">&nbsp;</span>
1001
- <span class="cline-any cline-no">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-no">&nbsp;</span>
1005
- <span class="cline-any cline-no">&nbsp;</span>
1006
- <span class="cline-any cline-no">&nbsp;</span>
1007
- <span class="cline-any cline-neutral">&nbsp;</span>
1008
- <span class="cline-any cline-no">&nbsp;</span>
1009
- <span class="cline-any cline-no">&nbsp;</span>
1010
- <span class="cline-any cline-no">&nbsp;</span>
1011
- <span class="cline-any cline-no">&nbsp;</span>
1012
- <span class="cline-any cline-neutral">&nbsp;</span>
1013
- <span class="cline-any cline-no">&nbsp;</span>
1014
- <span class="cline-any cline-no">&nbsp;</span>
1015
- <span class="cline-any cline-no">&nbsp;</span>
1016
- <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-neutral">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-no">&nbsp;</span>
1020
- <span class="cline-any cline-no">&nbsp;</span>
1021
- <span class="cline-any cline-no">&nbsp;</span>
1022
- <span class="cline-any cline-no">&nbsp;</span>
1023
- <span class="cline-any cline-no">&nbsp;</span>
1024
- <span class="cline-any cline-no">&nbsp;</span>
1025
- <span class="cline-any cline-no">&nbsp;</span>
1026
- <span class="cline-any cline-no">&nbsp;</span>
1027
- <span class="cline-any cline-no">&nbsp;</span>
1028
- <span class="cline-any cline-no">&nbsp;</span>
1029
- <span class="cline-any cline-no">&nbsp;</span>
1030
- <span class="cline-any cline-no">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-no">&nbsp;</span>
1034
- <span class="cline-any cline-no">&nbsp;</span>
1035
- <span class="cline-any cline-no">&nbsp;</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-no">&nbsp;</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-no">&nbsp;</span>
1042
- <span class="cline-any cline-no">&nbsp;</span>
1043
- <span class="cline-any cline-no">&nbsp;</span>
1044
- <span class="cline-any cline-no">&nbsp;</span>
1045
- <span class="cline-any cline-no">&nbsp;</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</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-no">&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-no">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-no">&nbsp;</span>
1058
- <span class="cline-any cline-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-yes">1x</span>
1067
- <span class="cline-any cline-no">&nbsp;</span>
1068
- <span class="cline-any cline-no">&nbsp;</span>
1069
- <span class="cline-any cline-no">&nbsp;</span>
1070
- <span class="cline-any cline-no">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-no">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-no">&nbsp;</span>
1075
- <span class="cline-any cline-no">&nbsp;</span>
1076
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1080
- <span class="cline-any cline-no">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-no">&nbsp;</span>
1084
- <span class="cline-any cline-no">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-no">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-no">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-no">&nbsp;</span>
1092
- <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1100
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1104
- <span class="cline-any cline-no">&nbsp;</span>
1105
- <span class="cline-any cline-no">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-no">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-no">&nbsp;</span>
1110
- <span class="cline-any cline-no">&nbsp;</span>
1111
- <span class="cline-any cline-no">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1117
- <span class="cline-any cline-no">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-no">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-no">&nbsp;</span>
1123
- <span class="cline-any cline-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-no">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-no">&nbsp;</span>
1130
- <span class="cline-any cline-no">&nbsp;</span>
1131
- <span class="cline-any cline-neutral">&nbsp;</span>
1132
- <span class="cline-any cline-no">&nbsp;</span>
1133
- <span class="cline-any cline-no">&nbsp;</span>
1134
- <span class="cline-any cline-no">&nbsp;</span>
1135
- <span class="cline-any cline-no">&nbsp;</span>
1136
- <span class="cline-any cline-no">&nbsp;</span>
1137
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-no">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&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-neutral">&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-no">&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-no">&nbsp;</span>
1161
- <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-yes">1x</span>
1163
- <span class="cline-any cline-no">&nbsp;</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
1165
- <span class="cline-any cline-no">&nbsp;</span>
1166
- <span class="cline-any cline-no">&nbsp;</span>
1167
- <span class="cline-any cline-no">&nbsp;</span>
1168
- <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1175
- <span class="cline-any cline-no">&nbsp;</span>
1176
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1180
- <span class="cline-any cline-no">&nbsp;</span>
1181
- <span class="cline-any cline-no">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-no">&nbsp;</span>
1184
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1188
- <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-yes">1x</span>
1190
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1195
- <span class="cline-any cline-no">&nbsp;</span>
1196
- <span class="cline-any cline-no">&nbsp;</span>
1197
- <span class="cline-any cline-no">&nbsp;</span>
1198
- <span class="cline-any cline-no">&nbsp;</span>
1199
- <span class="cline-any cline-no">&nbsp;</span>
1200
- <span class="cline-any cline-no">&nbsp;</span>
1201
- <span class="cline-any cline-no">&nbsp;</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-no">&nbsp;</span>
1204
- <span class="cline-any cline-neutral">&nbsp;</span>
1205
- <span class="cline-any cline-no">&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-yes">1x</span>
1215
- <span class="cline-any cline-no">&nbsp;</span>
1216
- <span class="cline-any cline-no">&nbsp;</span>
1217
- <span class="cline-any cline-neutral">&nbsp;</span>
1218
- <span class="cline-any cline-no">&nbsp;</span>
1219
- <span class="cline-any cline-no">&nbsp;</span>
1220
- <span class="cline-any cline-no">&nbsp;</span>
1221
- <span class="cline-any cline-no">&nbsp;</span>
1222
- <span class="cline-any cline-no">&nbsp;</span>
1223
- <span class="cline-any cline-no">&nbsp;</span>
1224
- <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-no">&nbsp;</span>
1226
- <span class="cline-any cline-no">&nbsp;</span>
1227
- <span class="cline-any cline-no">&nbsp;</span>
1228
- <span class="cline-any cline-no">&nbsp;</span>
1229
- <span class="cline-any cline-neutral">&nbsp;</span>
1230
- <span class="cline-any cline-neutral">&nbsp;</span>
1231
- <span class="cline-any cline-neutral">&nbsp;</span>
1232
- <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-no">&nbsp;</span>
1236
- <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1242
- <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-neutral">&nbsp;</span>
1244
- <span class="cline-any cline-neutral">&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-no">&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-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-no">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-no">&nbsp;</span>
1258
- <span class="cline-any cline-no">&nbsp;</span>
1259
- <span class="cline-any cline-no">&nbsp;</span>
1260
- <span class="cline-any cline-no">&nbsp;</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-neutral">&nbsp;</span>
1263
- <span class="cline-any cline-no">&nbsp;</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-no">&nbsp;</span>
1266
- <span class="cline-any cline-no">&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-no">&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-no">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-neutral">&nbsp;</span>
1277
- <span class="cline-any cline-no">&nbsp;</span>
1278
- <span class="cline-any cline-no">&nbsp;</span>
1279
- <span class="cline-any cline-no">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-no">&nbsp;</span>
1282
- <span class="cline-any cline-no">&nbsp;</span>
1283
- <span class="cline-any cline-no">&nbsp;</span>
1284
- <span class="cline-any cline-no">&nbsp;</span>
1285
- <span class="cline-any cline-no">&nbsp;</span>
1286
- <span class="cline-any cline-no">&nbsp;</span>
1287
- <span class="cline-any cline-no">&nbsp;</span>
1288
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1293
- <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-no">&nbsp;</span>
1295
- <span class="cline-any cline-no">&nbsp;</span>
1296
- <span class="cline-any cline-no">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1305
- <span class="cline-any cline-no">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-no">&nbsp;</span>
1308
- <span class="cline-any cline-no">&nbsp;</span>
1309
- <span class="cline-any cline-neutral">&nbsp;</span>
1310
- <span class="cline-any cline-neutral">&nbsp;</span>
1311
- <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-no">&nbsp;</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1318
- <span class="cline-any cline-no">&nbsp;</span>
1319
- <span class="cline-any cline-no">&nbsp;</span>
1320
- <span class="cline-any cline-no">&nbsp;</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-no">&nbsp;</span>
1323
- <span class="cline-any cline-no">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-no">&nbsp;</span>
1326
- <span class="cline-any cline-neutral">&nbsp;</span>
1327
- <span class="cline-any cline-neutral">&nbsp;</span>
1328
- <span class="cline-any cline-no">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-neutral">&nbsp;</span>
1353
- <span class="cline-any cline-no">&nbsp;</span>
1354
- <span class="cline-any cline-no">&nbsp;</span>
1355
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1363
- <span class="cline-any cline-no">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-neutral">&nbsp;</span>
1369
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1373
- <span class="cline-any cline-no">&nbsp;</span>
1374
- <span class="cline-any cline-no">&nbsp;</span>
1375
- <span class="cline-any cline-no">&nbsp;</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-no">&nbsp;</span>
1378
- <span class="cline-any cline-no">&nbsp;</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-no">&nbsp;</span>
1381
- <span class="cline-any cline-no">&nbsp;</span>
1382
- <span class="cline-any cline-neutral">&nbsp;</span>
1383
- <span class="cline-any cline-neutral">&nbsp;</span>
1384
- <span class="cline-any cline-neutral">&nbsp;</span>
1385
- <span class="cline-any cline-no">&nbsp;</span>
1386
- <span class="cline-any cline-neutral">&nbsp;</span>
1387
- <span class="cline-any cline-no">&nbsp;</span>
1388
- <span class="cline-any cline-no">&nbsp;</span>
1389
- <span class="cline-any cline-neutral">&nbsp;</span>
1390
- <span class="cline-any cline-no">&nbsp;</span>
1391
- <span class="cline-any cline-no">&nbsp;</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-no">&nbsp;</span>
1394
- <span class="cline-any cline-no">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-no">&nbsp;</span>
1397
- <span class="cline-any cline-no">&nbsp;</span>
1398
- <span class="cline-any cline-neutral">&nbsp;</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-no">&nbsp;</span>
1401
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1405
- <span class="cline-any cline-no">&nbsp;</span>
1406
- <span class="cline-any cline-neutral">&nbsp;</span>
1407
- <span class="cline-any cline-no">&nbsp;</span>
1408
- <span class="cline-any cline-no">&nbsp;</span>
1409
- <span class="cline-any cline-no">&nbsp;</span>
1410
- <span class="cline-any cline-no">&nbsp;</span>
1411
- <span class="cline-any cline-no">&nbsp;</span>
1412
- <span class="cline-any cline-no">&nbsp;</span>
1413
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1420
- <span class="cline-any cline-neutral">&nbsp;</span>
1421
- <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-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-neutral">&nbsp;</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1433
- <span class="cline-any cline-no">&nbsp;</span>
1434
- <span class="cline-any cline-no">&nbsp;</span>
1435
- <span class="cline-any cline-no">&nbsp;</span>
1436
- <span class="cline-any cline-no">&nbsp;</span>
1437
- <span class="cline-any cline-no">&nbsp;</span>
1438
- <span class="cline-any cline-neutral">&nbsp;</span>
1439
- <span class="cline-any cline-neutral">&nbsp;</span>
1440
- <span class="cline-any cline-no">&nbsp;</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-no">&nbsp;</span>
1443
- <span class="cline-any cline-no">&nbsp;</span>
1444
- <span class="cline-any cline-no">&nbsp;</span>
1445
- <span class="cline-any cline-no">&nbsp;</span>
1446
- <span class="cline-any cline-neutral">&nbsp;</span>
1447
- <span class="cline-any cline-no">&nbsp;</span>
1448
- <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-no">&nbsp;</span>
1450
- <span class="cline-any cline-no">&nbsp;</span>
1451
- <span class="cline-any cline-no">&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-no">&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-no">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-no">&nbsp;</span>
1464
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1470
- <span class="cline-any cline-neutral">&nbsp;</span>
1471
- <span class="cline-any cline-no">&nbsp;</span>
1472
- <span class="cline-any cline-no">&nbsp;</span>
1473
- <span class="cline-any cline-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-no">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-no">&nbsp;</span>
1483
- <span class="cline-any cline-no">&nbsp;</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-no">&nbsp;</span>
1486
- <span class="cline-any cline-no">&nbsp;</span>
1487
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1491
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1495
- <span class="cline-any cline-no">&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-no">&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-no">&nbsp;</span>
1506
- <span class="cline-any cline-no">&nbsp;</span>
1507
- <span class="cline-any cline-no">&nbsp;</span>
1508
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1515
- <span class="cline-any cline-no">&nbsp;</span>
1516
- <span class="cline-any cline-no">&nbsp;</span>
1517
- <span class="cline-any cline-no">&nbsp;</span>
1518
- <span class="cline-any cline-no">&nbsp;</span>
1519
- <span class="cline-any cline-neutral">&nbsp;</span>
1520
- <span class="cline-any cline-no">&nbsp;</span>
1521
- <span class="cline-any cline-neutral">&nbsp;</span>
1522
- <span class="cline-any cline-no">&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-yes">1x</span>
1526
- <span class="cline-any cline-no">&nbsp;</span>
1527
- <span class="cline-any cline-no">&nbsp;</span>
1528
- <span class="cline-any cline-no">&nbsp;</span>
1529
- <span class="cline-any cline-neutral">&nbsp;</span>
1530
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1534
- <span class="cline-any cline-no">&nbsp;</span>
1535
- <span class="cline-any cline-neutral">&nbsp;</span>
1536
- <span class="cline-any cline-neutral">&nbsp;</span>
1537
- <span class="cline-any cline-no">&nbsp;</span>
1538
- <span class="cline-any cline-no">&nbsp;</span>
1539
- <span class="cline-any cline-no">&nbsp;</span>
1540
- <span class="cline-any cline-no">&nbsp;</span>
1541
- <span class="cline-any cline-no">&nbsp;</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-no">&nbsp;</span>
1544
- <span class="cline-any cline-no">&nbsp;</span>
1545
- <span class="cline-any cline-no">&nbsp;</span>
1546
- <span class="cline-any cline-no">&nbsp;</span>
1547
- <span class="cline-any cline-no">&nbsp;</span>
1548
- <span class="cline-any cline-no">&nbsp;</span>
1549
- <span class="cline-any cline-no">&nbsp;</span>
1550
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1555
- <span class="cline-any cline-no">&nbsp;</span>
1556
- <span class="cline-any cline-neutral">&nbsp;</span>
1557
- <span class="cline-any cline-no">&nbsp;</span>
1558
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1562
- <span class="cline-any cline-neutral">&nbsp;</span>
1563
- <span class="cline-any cline-no">&nbsp;</span>
1564
- <span class="cline-any cline-no">&nbsp;</span>
1565
- <span class="cline-any cline-no">&nbsp;</span>
1566
- <span class="cline-any cline-no">&nbsp;</span>
1567
- <span class="cline-any cline-no">&nbsp;</span>
1568
- <span class="cline-any cline-neutral">&nbsp;</span>
1569
- <span class="cline-any cline-no">&nbsp;</span>
1570
- <span class="cline-any cline-no">&nbsp;</span>
1571
- <span class="cline-any cline-no">&nbsp;</span>
1572
- <span class="cline-any cline-neutral">&nbsp;</span>
1573
- <span class="cline-any cline-neutral">&nbsp;</span>
1574
- <span class="cline-any cline-neutral">&nbsp;</span>
1575
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1583
- <span class="cline-any cline-no">&nbsp;</span>
1584
- <span class="cline-any cline-no">&nbsp;</span>
1585
- <span class="cline-any cline-no">&nbsp;</span>
1586
- <span class="cline-any cline-no">&nbsp;</span>
1587
- <span class="cline-any cline-no">&nbsp;</span>
1588
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1593
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1597
- <span class="cline-any cline-no">&nbsp;</span>
1598
- <span class="cline-any cline-neutral">&nbsp;</span>
1599
- <span class="cline-any cline-no">&nbsp;</span>
1600
- <span class="cline-any cline-no">&nbsp;</span>
1601
- <span class="cline-any cline-neutral">&nbsp;</span>
1602
- <span class="cline-any cline-no">&nbsp;</span>
1603
- <span class="cline-any cline-neutral">&nbsp;</span>
1604
- <span class="cline-any cline-no">&nbsp;</span>
1605
- <span class="cline-any cline-neutral">&nbsp;</span>
1606
- <span class="cline-any cline-no">&nbsp;</span>
1607
- <span class="cline-any cline-neutral">&nbsp;</span>
1608
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1618
- <span class="cline-any cline-neutral">&nbsp;</span>
1619
- <span class="cline-any cline-no">&nbsp;</span>
1620
- <span class="cline-any cline-neutral">&nbsp;</span>
1621
- <span class="cline-any cline-neutral">&nbsp;</span>
1622
- <span class="cline-any cline-neutral">&nbsp;</span>
1623
- <span class="cline-any cline-neutral">&nbsp;</span>
1624
- <span class="cline-any cline-neutral">&nbsp;</span>
1625
- <span class="cline-any cline-no">&nbsp;</span>
1626
- <span class="cline-any cline-no">&nbsp;</span>
1627
- <span class="cline-any cline-no">&nbsp;</span>
1628
- <span class="cline-any cline-neutral">&nbsp;</span>
1629
- <span class="cline-any cline-no">&nbsp;</span>
1630
- <span class="cline-any cline-no">&nbsp;</span>
1631
- <span class="cline-any cline-no">&nbsp;</span>
1632
- <span class="cline-any cline-neutral">&nbsp;</span>
1633
- <span class="cline-any cline-no">&nbsp;</span>
1634
- <span class="cline-any cline-no">&nbsp;</span>
1635
- <span class="cline-any cline-neutral">&nbsp;</span>
1636
- <span class="cline-any cline-neutral">&nbsp;</span>
1637
- <span class="cline-any cline-neutral">&nbsp;</span>
1638
- <span class="cline-any cline-no">&nbsp;</span>
1639
- <span class="cline-any cline-neutral">&nbsp;</span>
1640
- <span class="cline-any cline-no">&nbsp;</span>
1641
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1648
- <span class="cline-any cline-no">&nbsp;</span>
1649
- <span class="cline-any cline-neutral">&nbsp;</span>
1650
- <span class="cline-any cline-no">&nbsp;</span>
1651
- <span class="cline-any cline-no">&nbsp;</span>
1652
- <span class="cline-any cline-no">&nbsp;</span>
1653
- <span class="cline-any cline-no">&nbsp;</span>
1654
- <span class="cline-any cline-no">&nbsp;</span>
1655
- <span class="cline-any cline-no">&nbsp;</span>
1656
- <span class="cline-any cline-neutral">&nbsp;</span>
1657
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1661
- <span class="cline-any cline-no">&nbsp;</span>
1662
- <span class="cline-any cline-no">&nbsp;</span>
1663
- <span class="cline-any cline-no">&nbsp;</span>
1664
- <span class="cline-any cline-neutral">&nbsp;</span>
1665
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1670
- <span class="cline-any cline-neutral">&nbsp;</span>
1671
- <span class="cline-any cline-no">&nbsp;</span>
1672
- <span class="cline-any cline-no">&nbsp;</span>
1673
- <span class="cline-any cline-neutral">&nbsp;</span>
1674
- <span class="cline-any cline-no">&nbsp;</span>
1675
- <span class="cline-any cline-no">&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-no">&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-neutral">&nbsp;</span>
1691
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1701
- <span class="cline-any cline-no">&nbsp;</span>
1702
- <span class="cline-any cline-no">&nbsp;</span>
1703
- <span class="cline-any cline-neutral">&nbsp;</span>
1704
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1709
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1716
- <span class="cline-any cline-neutral">&nbsp;</span>
1717
- <span class="cline-any cline-no">&nbsp;</span>
1718
- <span class="cline-any cline-no">&nbsp;</span>
1719
- <span class="cline-any cline-neutral">&nbsp;</span>
1720
- <span class="cline-any cline-yes">1x</span>
1721
- <span class="cline-any cline-no">&nbsp;</span>
1722
- <span class="cline-any cline-no">&nbsp;</span>
1723
- <span class="cline-any cline-no">&nbsp;</span>
1724
- <span class="cline-any cline-neutral">&nbsp;</span>
1725
- <span class="cline-any cline-neutral">&nbsp;</span>
1726
- <span class="cline-any cline-neutral">&nbsp;</span>
1727
- <span class="cline-any cline-neutral">&nbsp;</span>
1728
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1732
- <span class="cline-any cline-neutral">&nbsp;</span>
1733
- <span class="cline-any cline-no">&nbsp;</span>
1734
- <span class="cline-any cline-no">&nbsp;</span>
1735
- <span class="cline-any cline-neutral">&nbsp;</span>
1736
- <span class="cline-any cline-no">&nbsp;</span>
1737
- <span class="cline-any cline-no">&nbsp;</span>
1738
- <span class="cline-any cline-no">&nbsp;</span>
1739
- <span class="cline-any cline-neutral">&nbsp;</span>
1740
- <span class="cline-any cline-no">&nbsp;</span>
1741
- <span class="cline-any cline-neutral">&nbsp;</span>
1742
- <span class="cline-any cline-yes">1x</span>
1743
- <span class="cline-any cline-no">&nbsp;</span>
1744
- <span class="cline-any cline-no">&nbsp;</span>
1745
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1754
- <span class="cline-any cline-neutral">&nbsp;</span>
1755
- <span class="cline-any cline-no">&nbsp;</span>
1756
- <span class="cline-any cline-no">&nbsp;</span>
1757
- <span class="cline-any cline-neutral">&nbsp;</span>
1758
- <span class="cline-any cline-no">&nbsp;</span>
1759
- <span class="cline-any cline-no">&nbsp;</span>
1760
- <span class="cline-any cline-no">&nbsp;</span>
1761
- <span class="cline-any cline-neutral">&nbsp;</span>
1762
- <span class="cline-any cline-no">&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-yes">1x</span>
1766
- <span class="cline-any cline-no">&nbsp;</span>
1767
- <span class="cline-any cline-no">&nbsp;</span>
1768
- <span class="cline-any cline-neutral">&nbsp;</span>
1769
- <span class="cline-any cline-no">&nbsp;</span>
1770
- <span class="cline-any cline-no">&nbsp;</span>
1771
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1782
- <span class="cline-any cline-no">&nbsp;</span>
1783
- <span class="cline-any cline-neutral">&nbsp;</span>
1784
- <span class="cline-any cline-no">&nbsp;</span>
1785
- <span class="cline-any cline-neutral">&nbsp;</span>
1786
- <span class="cline-any cline-neutral">&nbsp;</span>
1787
- <span class="cline-any cline-neutral">&nbsp;</span>
1788
- <span class="cline-any cline-neutral">&nbsp;</span>
1789
- <span class="cline-any cline-neutral">&nbsp;</span>
1790
- <span class="cline-any cline-neutral">&nbsp;</span>
1791
- <span class="cline-any cline-neutral">&nbsp;</span>
1792
- <span class="cline-any cline-neutral">&nbsp;</span>
1793
- <span class="cline-any cline-neutral">&nbsp;</span>
1794
- <span class="cline-any cline-neutral">&nbsp;</span>
1795
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1800
- <span class="cline-any cline-no">&nbsp;</span>
1801
- <span class="cline-any cline-neutral">&nbsp;</span>
1802
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
1803
- BaseNode,
1804
- Identifier,
1805
- TypeAnnotation,
1806
- StructureProperty,
1807
- Structure,
1808
- EntityProperty,
1809
- Param,
1810
- MemberExpression,
1811
- CompletionProperty,
1812
- Variable,
1813
- Logic,
1814
- ConfigProperty,
1815
- App,
1816
- SyntaxNode,
1817
- BindAttribute,
1818
- Interface,
1819
- CallLogic,
1820
- BackendVariable,
1821
- AuthLogic,
1822
- AuthLogicForCallInterface,
1823
- } from '..';
1824
- import { getNaslNodeByNodeCallee } from '../automate/engine/utils';
1825
- &nbsp;
1826
- interface variableItem {
1827
- text: string;
1828
- completionDetail: any;
1829
- children?: variableItem[] | any;
1830
- name?: string;
1831
- value?: string;
1832
- expression: MemberExpression | Identifier;
1833
- }
1834
- /**
1835
- * 把ts返回的详细信息截取成一个类型字符串
1836
- * @param displayParts ts返回的key value
1837
- * // 0: {text: 'let', kind: 'keyword'}
1838
- // 1: {text: ' ', kind: 'space'}
1839
- // 2: {text: 'bindRoles', kind: 'text'}
1840
- // 3: {text: ':', kind: 'punctuation'}
1841
- // 4: {text: ' ', kind: 'space'}
1842
- // 5: {text: 'roles', kind: 'moduleName'}
1843
- // 6: {text: '.', kind: 'punctuation'}
1844
- // 7: {text: 'DEV_AdminRole', kind: 'enumName'}
1845
- * @returns type roles.DEV_AdminRole
1846
- */
1847
- function <span class="fstat-no" title="function not covered" >formatTs2TypeString(</span>displayParts: Array&lt;{ text: string; kind: string }&gt;) {
1848
- let str = <span class="cstat-no" title="statement not covered" >'';</span>
1849
- <span class="cstat-no" title="statement not covered" > displayParts?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
1850
- <span class="cstat-no" title="statement not covered" > str += item.text;</span>
1851
- });
1852
- <span class="cstat-no" title="statement not covered" > return str;</span>
1853
- }
1854
- &nbsp;
1855
- function <span class="fstat-no" title="function not covered" >isValidName(</span>str: string) {
1856
- const regex = <span class="cstat-no" title="statement not covered" >/^[a-zA-Z][a-zA-Z0-9_]*$/;</span>
1857
- <span class="cstat-no" title="statement not covered" > return regex.test(str);</span>
1858
- }
1859
- /**
1860
- * 解析 Completion 和 QuickInfo 的 displayString
1861
- * 生成 TypeAnnotation
1862
- * @param displayString
1863
- * @returns TypeAnnotation
1864
- */
1865
- export function <span class="fstat-no" title="function not covered" >type2TypeAnnotation(</span>oldType: Array&lt;any&gt; | {}): TypeAnnotation {
1866
- <span class="cstat-no" title="statement not covered" > if (!oldType) <span class="cstat-no" title="statement not covered" >return null;</span></span>
1867
- let type = <span class="cstat-no" title="statement not covered" >oldType;</span>
1868
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(oldType)) {</span>
1869
- <span class="cstat-no" title="statement not covered" > type = oldType[0];</span>
1870
- }
1871
- let typeAnnotation: TypeAnnotation;
1872
- <span class="cstat-no" title="statement not covered" > try {</span>
1873
- const { typeName, typeNamespace, typeArguments, typeKind, properties } = <span class="cstat-no" title="statement not covered" >type as any;</span>
1874
- <span class="cstat-no" title="statement not covered" > if (typeKind === 'anonymousStructure') {</span>
1875
- // 自定义类型
1876
- const newProperties: StructureProperty[] = <span class="cstat-no" title="statement not covered" >[];</span>
1877
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(properties) &amp;&amp; properties.length) {</span>
1878
- <span class="cstat-no" title="statement not covered" > properties.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
1879
- <span class="cstat-no" title="statement not covered" > if (!item?.name?.startsWith('__')) {</span>
1880
- // 如果没有获取到类型,就默认塞一个string
1881
- const itemType = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(item.typeInfo) || TypeAnnotation.createPrimitive('String');</span>
1882
- const structureProperty = <span class="cstat-no" title="statement not covered" >StructureProperty.from({ name: item.name, typeAnnotation: itemType }, typeAnnotation, 'properties');</span>
1883
- <span class="cstat-no" title="statement not covered" > newProperties.push(structureProperty);</span>
1884
- }
1885
- });
1886
- }
1887
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createTypeAnonymousStructure(newProperties);</span>
1888
- } else <span class="cstat-no" title="statement not covered" >if (!typeName || typeName === 'Promise' || typeName === 'nasl' || typeName === '___IDENTIFIER__') {</span>
1889
- <span class="cstat-no" title="statement not covered" > return null;</span>
1890
- } else <span class="cstat-no" title="statement not covered" >if (typeName === 'String' || typeName === 'Boolean') {</span>
1891
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(typeName);</span>
1892
- } else <span class="cstat-no" title="statement not covered" >if (typeName === 'Union') {</span>
1893
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive('Union');</span>
1894
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [];</span>
1895
- <span class="cstat-no" title="statement not covered" > typeArguments.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; {</span>
1896
- const typeItem = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(item);</span>
1897
- <span class="cstat-no" title="statement not covered" > if (typeItem) {</span>
1898
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArgumentsPush(typeItem);</span>
1899
- }
1900
- });
1901
- } else <span class="cstat-no" title="statement not covered" >if (typeNamespace &amp;&amp; typeNamespace.startsWith('nasl.core')) {</span>
1902
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(typeName);</span>
1903
- } else <span class="cstat-no" title="statement not covered" >if (typeNamespace &amp;&amp; typeArguments?.length) {</span>
1904
- // 泛型类型
1905
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createGeneric(typeName, {</span>
1906
- typeNamespace,
1907
- });
1908
- // 如果有泛型处理泛型
1909
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [];</span>
1910
- <span class="cstat-no" title="statement not covered" > typeArguments.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; {</span>
1911
- const typeItem = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(item);</span>
1912
- <span class="cstat-no" title="statement not covered" > if (typeItem) {</span>
1913
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArgumentsPush(typeItem);</span>
1914
- }
1915
- });
1916
- } else {
1917
- // 其余的引用类型
1918
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
1919
- typeNamespace,
1920
- });
1921
- }
1922
- } catch (err) {
1923
- <span class="cstat-no" title="statement not covered" > console.log(err, type);</span>
1924
- }
1925
- <span class="cstat-no" title="statement not covered" > return typeAnnotation;</span>
1926
- }
1927
- &nbsp;
1928
- /**
1929
- * 解析 Completion 和 QuickInfo 的 displayString
1930
- * 生成 TypeAnnotation
1931
- * @param displayString
1932
- * @returns TypeAnnotation
1933
- */
1934
- export function <span class="fstat-no" title="function not covered" >displayString2TypeAnnotation(</span>typeStr: string, parentPrefix?: string): TypeAnnotation {
1935
- let type = <span class="cstat-no" title="statement not covered" >'';</span>
1936
- <span class="cstat-no" title="statement not covered" > if (typeStr?.includes(': ')) {</span>
1937
- const lastIndexOf = <span class="cstat-no" title="statement not covered" >typeStr.lastIndexOf(': ');</span>
1938
- <span class="cstat-no" title="statement not covered" > type = typeStr.substring(lastIndexOf + 2, typeStr.length);</span>
1939
- } else {
1940
- <span class="cstat-no" title="statement not covered" > type = typeStr;</span>
1941
- }
1942
- <span class="cstat-no" title="statement not covered" > if (!type) <span class="cstat-no" title="statement not covered" >return;</span></span>
1943
- <span class="cstat-no" title="statement not covered" > type = type.replaceAll(' ', '');</span>
1944
- <span class="cstat-no" title="statement not covered" > if (type === 'Promise&lt;void&gt;') <span class="cstat-no" title="statement not covered" >return null;</span></span>
1945
- // 把后面结尾里带()的比如
1946
- // 'function nasl.core.add(left: nasl.core.Long, right: nasl.core.Long): nasl.core.Long (+12 overloads)'
1947
- <span class="cstat-no" title="statement not covered" > if (type.includes('(') &amp;&amp; type.includes(')')) {</span>
1948
- <span class="cstat-no" title="statement not covered" > type = type.replace(/\([^)]*\)/g, '');</span>
1949
- }
1950
- let typeAnnotation;
1951
- <span class="cstat-no" title="statement not covered" > try {</span>
1952
- <span class="cstat-no" title="statement not covered" > if (type.includes('&lt;') &amp;&amp; type.includes('&gt;')) {</span>
1953
- // 泛型的处理
1954
- <span class="cstat-no" title="statement not covered" > typeAnnotation = createGenericTypeAnnotation(type, parentPrefix);</span>
1955
- } else {
1956
- <span class="cstat-no" title="statement not covered" > typeAnnotation = createType2Annotation(type, parentPrefix);</span>
1957
- }
1958
- } catch (err) {
1959
- <span class="cstat-no" title="statement not covered" > console.log(err);</span>
1960
- }
1961
- <span class="cstat-no" title="statement not covered" > return typeAnnotation as TypeAnnotation;</span>
1962
- }
1963
- &nbsp;
1964
- function <span class="fstat-no" title="function not covered" >createGenericTypeAnnotation(</span>type: string, parentPrefix?: string) {
1965
- // 取出匹配的内容
1966
- &nbsp;
1967
- const childType = <span class="cstat-no" title="statement not covered" >type.substring(0, type.indexOf('&lt;'));</span>
1968
- const typeAnnotation = <span class="cstat-no" title="statement not covered" >createType2Annotation(childType);</span>
1969
- // 如果还有匹配到的多层泛型;
1970
- // 取出匹配到的内容
1971
- const types = <span class="cstat-no" title="statement not covered" >/&lt;([^()]+)&gt;/g.exec(type);</span>
1972
- <span class="cstat-no" title="statement not covered" > if (types === null) <span class="cstat-no" title="statement not covered" >return types;</span></span>
1973
- const newtext = <span class="cstat-no" title="statement not covered" >types[1];</span>
1974
- // 把匹配的值,的内容在,检索一遍,看是不是泛型套泛型
1975
- const newTypes = <span class="cstat-no" title="statement not covered" >/&lt;([^()]+)&gt;/g.exec(newtext);</span>
1976
- // 如果是的话就去递归
1977
- <span class="cstat-no" title="statement not covered" > if (newTypes) {</span>
1978
- const argTypeAnnotation = <span class="cstat-no" title="statement not covered" >createGenericTypeAnnotation(newtext, parentPrefix);</span>
1979
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [argTypeAnnotation as TypeAnnotation];</span>
1980
- } else {
1981
- const argTypeAnnotation = <span class="cstat-no" title="statement not covered" >createType2Annotation(newtext, parentPrefix);</span>
1982
- &nbsp;
1983
- // 如果不是就创造内部的真正类型
1984
- <span class="cstat-no" title="statement not covered" > if (newtext.includes(',')) {</span>
1985
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = newtext.split(',').map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >createType2Annotation(item))</span>;</span>
1986
- } else {
1987
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [argTypeAnnotation];</span>
1988
- }
1989
- }
1990
- <span class="cstat-no" title="statement not covered" > return typeAnnotation;</span>
1991
- }
1992
- function <span class="fstat-no" title="function not covered" >createType2Annotation(</span>type: string, parentPrefix?: string): TypeAnnotation {
1993
- let typeAnnotation;
1994
- // 没有泛型类型的
1995
- const types = <span class="cstat-no" title="statement not covered" >type.split('.');</span>
1996
- // 长度等于1就说明是
1997
- <span class="cstat-no" title="statement not covered" > if (types.length === 1) {</span>
1998
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(types[0]);</span>
1999
- } else {
2000
- const typeName = <span class="cstat-no" title="statement not covered" >types.pop();</span>
2001
- const typeNamespace = <span class="cstat-no" title="statement not covered" >types.join('.');</span>
2002
- <span class="cstat-no" title="statement not covered" > if (type.startsWith('nasl.core')) {</span>
2003
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(typeName);</span>
2004
- } else <span class="cstat-no" title="statement not covered" >if (type.startsWith('nasl.ui')) {</span>
2005
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
2006
- typeNamespace,
2007
- });
2008
- } else <span class="cstat-no" title="statement not covered" >if (type.startsWith('nasl.process')) {</span>
2009
- // nasl的引用类型
2010
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
2011
- typeNamespace,
2012
- });
2013
- } else <span class="cstat-no" title="statement not covered" >if (type.startsWith('nasl.collection')) {</span>
2014
- // nasl的泛型类型
2015
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createGeneric(typeName, {</span>
2016
- typeNamespace,
2017
- });
2018
- } else <span class="cstat-no" title="statement not covered" >if (type.startsWith('dataSources.') || type.startsWith('structures.') || type.startsWith('enums.')) {</span>
2019
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
2020
- typeNamespace: (parentPrefix || 'app.') + typeNamespace,
2021
- });
2022
- } else {
2023
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
2024
- typeNamespace,
2025
- });
2026
- }
2027
- }
2028
- <span class="cstat-no" title="statement not covered" > return typeAnnotation;</span>
2029
- }
2030
- export function <span class="fstat-no" title="function not covered" >getPlatformType(</span>type: string): string {
2031
- let tsType = <span class="cstat-no" title="statement not covered" >'';</span>
2032
- &nbsp;
2033
- <span class="cstat-no" title="statement not covered" > if (type?.includes(': ')) {</span>
2034
- const lastIndexOf = <span class="cstat-no" title="statement not covered" >type.lastIndexOf(': ');</span>
2035
- <span class="cstat-no" title="statement not covered" > tsType = type.substring(lastIndexOf + 2, type.length);</span>
2036
- } else {
2037
- <span class="cstat-no" title="statement not covered" > tsType = type;</span>
2038
- }
2039
- <span class="cstat-no" title="statement not covered" > tsType = tsType.replaceAll(' ', '');</span>
2040
- const namespacePrefix = <span class="cstat-no" title="statement not covered" >['app', 'extensions', 'apis', 'components', 'nasl'];</span>
2041
- <span class="cstat-no" title="statement not covered" > if (tsType === 'String') {</span>
2042
- <span class="cstat-no" title="statement not covered" > return 'nasl.core.String';</span>
2043
- } else <span class="cstat-no" title="statement not covered" >if (tsType === 'Boolean') {</span>
2044
- <span class="cstat-no" title="statement not covered" > return 'nasl.core.Boolean';</span>
2045
- }
2046
- &nbsp;
2047
- const strTypes = <span class="cstat-no" title="statement not covered" >tsType.split('.');</span>
2048
- <span class="cstat-no" title="statement not covered" > if (strTypes.length) {</span>
2049
- const first = <span class="cstat-no" title="statement not covered" >strTypes[0];</span>
2050
- // 如果不是这几个前缀就加一个namespace
2051
- <span class="cstat-no" title="statement not covered" > if (!namespacePrefix.includes(first)) {</span>
2052
- <span class="cstat-no" title="statement not covered" > return 'app.' + tsType;</span>
2053
- }
2054
- }
2055
- <span class="cstat-no" title="statement not covered" > return tsType;</span>
2056
- }
2057
- export function <span class="fstat-no" title="function not covered" >isNoChildType(</span>type: String) {
2058
- <span class="cstat-no" title="statement not covered" > return (type?.startsWith('nasl.core') &amp;&amp; !['String', 'Text', 'Email'].includes(type.split('.')[2])) || type?.startsWith('app.enums');</span>
2059
- }
2060
- function <span class="fstat-no" title="function not covered" >findNode(</span>typeKey: string, node: BaseNode) {
2061
- let newType: Structure | Logic;
2062
- <span class="cstat-no" title="statement not covered" > if (typeKey.startsWith('nasl.') &amp;&amp; typeKey.includes('&lt;')) {</span>
2063
- const findGenericsIndex = <span class="cstat-no" title="statement not covered" >typeKey.indexOf('&lt;');</span>
2064
- <span class="cstat-no" title="statement not covered" > typeKey = typeKey.substring(0, findGenericsIndex);</span>
2065
- const typeIndex = <span class="cstat-no" title="statement not covered" >typeKey.lastIndexOf('.');</span>
2066
- <span class="cstat-no" title="statement not covered" > newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));</span>
2067
- } else <span class="cstat-no" title="statement not covered" >if (typeKey.startsWith('nasl.')) {</span>
2068
- const typeIndex = <span class="cstat-no" title="statement not covered" >typeKey.lastIndexOf('.');</span>
2069
- <span class="cstat-no" title="statement not covered" > newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));</span>
2070
- } else {
2071
- <span class="cstat-no" title="statement not covered" > newType = (node as Identifier)?.app?.findNodeByCompleteName(typeKey);</span>
2072
- }
2073
- <span class="cstat-no" title="statement not covered" > return newType;</span>
2074
- }
2075
- &nbsp;
2076
- /**
2077
- * 获取下一级的节点进行递归
2078
- * @param typeKey 当前节点的类型,主要为了取出内部的 T中的实际类型
2079
- * @param item 当前节点的内容
2080
- * @param node 获取变量框的位置
2081
- */
2082
- export function <span class="fstat-no" title="function not covered" >nextFindTypeChild(</span>typeKey: string, item: any, node: SyntaxNode) {
2083
- const newType = <span class="cstat-no" title="statement not covered" >findNode(typeKey, node);</span>
2084
- <span class="cstat-no" title="statement not covered" > if ((newType as Structure)?.properties &amp;&amp; (newType as Structure).properties.length) {</span>
2085
- // 处理泛型的内容要取到值
2086
- const StructureJson = <span class="cstat-no" title="statement not covered" >newType.toJSON();</span>
2087
- const newStructure = <span class="cstat-no" title="statement not covered" >new Structure(StructureJson);</span>
2088
- <span class="cstat-no" title="statement not covered" > newStructure.properties.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: StructureProperty | EntityProperty) =&gt; {</span>
2089
- const itemType = <span class="cstat-no" title="statement not covered" >item?.typeAnnotation?.typeKey;</span>
2090
- <span class="cstat-no" title="statement not covered" > if (itemType === 'T' &amp;&amp; /&lt;([^()]+)&gt;/g.exec(typeKey)) {</span>
2091
- const newTypes = <span class="cstat-no" title="statement not covered" >/&lt;([^()]+)&gt;/g.exec(typeKey);</span>
2092
- // 找到当前原来的类型
2093
- const contentType = <span class="cstat-no" title="statement not covered" >getPlatformType(newTypes[1]);</span>
2094
- const typeNamespace = <span class="cstat-no" title="statement not covered" >contentType.substring(0, contentType.lastIndexOf('.'));</span>
2095
- const typeName = <span class="cstat-no" title="statement not covered" >contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);</span>
2096
- <span class="cstat-no" title="statement not covered" > item.typeAnnotation = new TypeAnnotation({</span>
2097
- typeKind: 'reference',
2098
- typeNamespace,
2099
- typeName,
2100
- });
2101
- }
2102
- });
2103
- <span class="cstat-no" title="statement not covered" > item.children = formatVariableData(newStructure.properties, node, item);</span>
2104
- }
2105
- }
2106
- &nbsp;
2107
- /**
2108
- * 获取scope下一级的展示
2109
- * @param type 返回的字符串如下展示
2110
- * `nasl.ui.Current&lt;{
2111
- __name: "AStructure_dc8bcbaf";
2112
- entity1: dataSources.defaultDS.entities.Entity1;
2113
- lCAPRolePerMapping: dataSources.defaultDS.entities.LCAPRolePerMapping;
2114
- }&gt;`
2115
- */
2116
- function <span class="fstat-no" title="function not covered" >getAStructureScopeType(</span>type: string, parent: any, node: SyntaxNode) {
2117
- let newType = <span class="cstat-no" title="statement not covered" >type</span>
2118
- .replaceAll(' ', '')
2119
- .replaceAll('\n', '')
2120
- .replace(/__name:"AStructure_\w{8}";/g, '');
2121
- &nbsp;
2122
- const parentItem: any = <span class="cstat-no" title="statement not covered" >parent;</span>
2123
- // 如果没有父节点就是Identifier
2124
- // value需要拼接生成
2125
- const identifier = <span class="cstat-no" title="statement not covered" >new Identifier({ name: parentItem.text });</span>
2126
- <span class="cstat-no" title="statement not covered" > parentItem.expression = identifier;</span>
2127
- <span class="cstat-no" title="statement not covered" > parentItem.value = parentItem.text;</span>
2128
- <span class="cstat-no" title="statement not covered" > parentItem.name = parentItem.text;</span>
2129
- &nbsp;
2130
- // 处理泛型的内容要取到值
2131
- const newNode = <span class="cstat-no" title="statement not covered" >findNode(newType, node);</span>
2132
- &nbsp;
2133
- const StructureJson = <span class="cstat-no" title="statement not covered" >newNode.toJSON();</span>
2134
- const newStructure = <span class="cstat-no" title="statement not covered" >new Structure(StructureJson);</span>
2135
- const children = <span class="cstat-no" title="statement not covered" >newStructure.properties;</span>
2136
- <span class="cstat-no" title="statement not covered" > if (children &amp;&amp; children.length) {</span>
2137
- const newChildren = <span class="cstat-no" title="statement not covered" >children.map(<span class="fstat-no" title="function not covered" >(s</span>tructureProperty) =&gt; {</span>
2138
- const structureItem: any = <span class="cstat-no" title="statement not covered" >structureProperty;</span>
2139
- // 如果没有父节点就是Identifier
2140
- <span class="cstat-no" title="statement not covered" > structureItem.value = `${parentItem.value}.${structureItem.name}`;</span>
2141
- const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2142
- object: parentItem.expression,
2143
- property: new Identifier({ name: structureItem.name }),
2144
- });
2145
- <span class="cstat-no" title="statement not covered" > structureItem.expression = memberExpression;</span>
2146
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(structureItem);</span>
2147
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
2148
- &nbsp;
2149
- <span class="cstat-no" title="statement not covered" > if (structureItem.name === 'item') {</span>
2150
- const context = <span class="cstat-no" title="statement not covered" >/\{([^()]+)\}/.exec(newType);</span>
2151
- <span class="cstat-no" title="statement not covered" > newType = context[1];</span>
2152
- let res: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
2153
- <span class="cstat-no" title="statement not covered" > newType.split(';').forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2154
- <span class="cstat-no" title="statement not covered" > if (item) {</span>
2155
- const itemArr = <span class="cstat-no" title="statement not covered" >item.split(':');</span>
2156
- const name = <span class="cstat-no" title="statement not covered" >itemArr[0];</span>
2157
- let typeKey = <span class="cstat-no" title="statement not covered" >itemArr[1];</span>
2158
- <span class="cstat-no" title="statement not covered" > if (typeKey &amp;&amp; typeKey.startsWith('dataSources')) {</span>
2159
- <span class="cstat-no" title="statement not covered" > typeKey = 'app.' + typeKey;</span>
2160
- }
2161
- // 如果ls传过来的名字是不合法的就隐藏
2162
- <span class="cstat-no" title="statement not covered" > if (!isValidName(name)) {</span>
2163
- <span class="cstat-no" title="statement not covered" > console.warn(item, '获取变量不展示');</span>
2164
- <span class="cstat-no" title="statement not covered" > return null;</span>
2165
- }
2166
- <span class="cstat-no" title="statement not covered" > res.push({</span>
2167
- name,
2168
- typeKey,
2169
- });
2170
- }
2171
- });
2172
- <span class="cstat-no" title="statement not covered" > res = res.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2173
- const newItem: any = <span class="cstat-no" title="statement not covered" >item;</span>
2174
- // 如果没有父节点就是Identifier
2175
- <span class="cstat-no" title="statement not covered" > newItem.value = `${structureItem.value}.${newItem.name}`;</span>
2176
- const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2177
- object: structureItem.expression,
2178
- property: new Identifier({ name: newItem.name }),
2179
- });
2180
- <span class="cstat-no" title="statement not covered" > newItem.expression = memberExpression;</span>
2181
- // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
2182
- <span class="cstat-no" title="statement not covered" > if (item.typeKey &amp;&amp; !isNoChildType(item.typeKey)) {</span>
2183
- <span class="cstat-no" title="statement not covered" > newItem.children = nextObjectTypeChild(item.typeKey, newItem, node);</span>
2184
- }
2185
- <span class="cstat-no" title="statement not covered" > newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);</span>
2186
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
2187
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
2188
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2189
- });
2190
- <span class="cstat-no" title="statement not covered" > completionProperty.children = res;</span>
2191
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2192
- } else {
2193
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2194
- }
2195
- });
2196
- <span class="cstat-no" title="statement not covered" > parentItem.children = newChildren;</span>
2197
- }
2198
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(parentItem);</span>
2199
- // 变量 param return 在这里添加图标
2200
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = getNodeiconFromLogic(completionProperty, node);</span>
2201
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2202
- }
2203
- /**
2204
- * 获取对象类型的下一级展示
2205
- * @param type 返回的字符串如下展示
2206
- * `{
2207
- __name: "AStructure_bf19c4d5";
2208
- list: nasl.collection.List&lt;{
2209
- __name: "AStructure_dc8bcbaf";
2210
- entity1: app.dataSources.defaultDS.entities.Entity1;
2211
- lCAPRolePerMapping: app.dataSources.defaultDS.entities.LCAPRolePerMapping;
2212
- }&gt;;
2213
- total: nasl.core.Long;
2214
- }`
2215
- */
2216
- function <span class="fstat-no" title="function not covered" >getAStructureObjectStringType(</span>type: string, parent: any, node: SyntaxNode) {
2217
- let newType = <span class="cstat-no" title="statement not covered" >type</span>
2218
- .replaceAll(' ', '')
2219
- .replaceAll('\n', '')
2220
- .replace(/__name:"AStructure_\w{8}";/g, '');
2221
- <span class="cstat-no" title="statement not covered" > newType = newType.substring(1, newType.length - 1);</span>
2222
- <span class="cstat-no" title="statement not covered" > if (/\{([^()]+)\}/.exec(newType)) {</span>
2223
- <span class="cstat-no" title="statement not covered" > newType = newType.replace(/\{([^()]+)\}/, '');</span>
2224
- }
2225
- let res: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
2226
- <span class="cstat-no" title="statement not covered" > newType.split(';').forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2227
- <span class="cstat-no" title="statement not covered" > if (item) {</span>
2228
- const itemArr = <span class="cstat-no" title="statement not covered" >item.split(':');</span>
2229
- const name = <span class="cstat-no" title="statement not covered" >itemArr[0];</span>
2230
- const typeKey = <span class="cstat-no" title="statement not covered" >itemArr[1];</span>
2231
- <span class="cstat-no" title="statement not covered" > res.push({</span>
2232
- name,
2233
- typeKey,
2234
- });
2235
- }
2236
- });
2237
- const parentItem: any = <span class="cstat-no" title="statement not covered" >parent;</span>
2238
- // 如果没有父节点就是Identifier
2239
- // value需要拼接生成
2240
- const identifier = <span class="cstat-no" title="statement not covered" >new Identifier({ name: parentItem.text });</span>
2241
- <span class="cstat-no" title="statement not covered" > parentItem.expression = identifier;</span>
2242
- <span class="cstat-no" title="statement not covered" > parentItem.value = parentItem.text;</span>
2243
- <span class="cstat-no" title="statement not covered" > parentItem.name = parentItem.text;</span>
2244
- &nbsp;
2245
- <span class="cstat-no" title="statement not covered" > res = res.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2246
- const newItem: any = <span class="cstat-no" title="statement not covered" >item;</span>
2247
- // 如果没有父节点就是Identifier
2248
- <span class="cstat-no" title="statement not covered" > newItem.value = `${parentItem.value}.${newItem.name}`;</span>
2249
- const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2250
- object: parentItem.expression,
2251
- property: new Identifier({ name: newItem.name }),
2252
- });
2253
- <span class="cstat-no" title="statement not covered" > newItem.expression = memberExpression;</span>
2254
- // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
2255
- <span class="cstat-no" title="statement not covered" > if (item.typeKey &amp;&amp; !isNoChildType(item.typeKey)) {</span>
2256
- <span class="cstat-no" title="statement not covered" > newItem.children = nextObjectTypeChild(getPlatformType(item.typeKey), newItem, node);</span>
2257
- }
2258
- <span class="cstat-no" title="statement not covered" > newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);</span>
2259
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
2260
- &nbsp;
2261
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
2262
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2263
- });
2264
- <span class="cstat-no" title="statement not covered" > parentItem.children = res;</span>
2265
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(parentItem);</span>
2266
- &nbsp;
2267
- // 变量 param return 在这里添加图标
2268
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = getNodeiconFromLogic(completionProperty, node);</span>
2269
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2270
- }
2271
- function <span class="fstat-no" title="function not covered" >nextObjectTypeChild(</span>typeKey: string, item: any, node: SyntaxNode) {
2272
- const newType = <span class="cstat-no" title="statement not covered" >findNode(typeKey, node);</span>
2273
- <span class="cstat-no" title="statement not covered" > if ((newType as Structure)?.properties &amp;&amp; (newType as Structure).properties.length) {</span>
2274
- // 处理泛型的内容要取到值
2275
- const StructureJson = <span class="cstat-no" title="statement not covered" >newType.toJSON();</span>
2276
- const newStructure = <span class="cstat-no" title="statement not covered" >new Structure(StructureJson);</span>
2277
- <span class="cstat-no" title="statement not covered" > newStructure.properties.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: StructureProperty | EntityProperty) =&gt; {</span>
2278
- const itemType = <span class="cstat-no" title="statement not covered" >item?.typeAnnotation?.typeKey;</span>
2279
- <span class="cstat-no" title="statement not covered" > if (itemType === 'T' &amp;&amp; /&lt;([^()]+)&gt;/g.exec(typeKey)) {</span>
2280
- const newTypes = <span class="cstat-no" title="statement not covered" >/&lt;([^()]+)&gt;/g.exec(typeKey);</span>
2281
- // 找到当前原来的类型
2282
- const contentType = <span class="cstat-no" title="statement not covered" >getPlatformType(newTypes[1]);</span>
2283
- const typeNamespace = <span class="cstat-no" title="statement not covered" >contentType.substring(0, contentType.lastIndexOf('.'));</span>
2284
- const typeName = <span class="cstat-no" title="statement not covered" >contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);</span>
2285
- <span class="cstat-no" title="statement not covered" > item.typeAnnotation = new TypeAnnotation({</span>
2286
- typeKind: 'reference',
2287
- typeNamespace,
2288
- typeName,
2289
- });
2290
- }
2291
- });
2292
- <span class="cstat-no" title="statement not covered" > return formatVariableData(newStructure.properties, node, item);</span>
2293
- }
2294
- }
2295
- &nbsp;
2296
- function <span class="fstat-no" title="function not covered" >getNodeTypeVariableData(</span>nodeType: any, item: any, node: SyntaxNode) {
2297
- <span class="cstat-no" title="statement not covered" > item.value = item.text;</span>
2298
- <span class="cstat-no" title="statement not covered" > item.name = item.text;</span>
2299
- const parentExpression = <span class="cstat-no" title="statement not covered" >new Identifier({ name: item.text });</span>
2300
- <span class="cstat-no" title="statement not covered" > item.expression = parentExpression;</span>
2301
- <span class="cstat-no" title="statement not covered" > if (nodeType) {</span>
2302
- const typeAnnotation = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(nodeType);</span>
2303
- const typeKeyMap = <span class="cstat-no" title="statement not covered" >new Map();</span>
2304
- const app = <span class="cstat-no" title="statement not covered" >node.rootNode as App;</span>
2305
- let structure: any = <span class="cstat-no" title="statement not covered" >{};</span>
2306
- &nbsp;
2307
- // 有类型在进行下一步运算
2308
- <span class="cstat-no" title="statement not covered" > if (typeAnnotation) {</span>
2309
- // 数据查询没有输出参数,特殊处理
2310
- <span class="cstat-no" title="statement not covered" > if (typeAnnotation.typeKind === 'anonymousStructure') {</span>
2311
- <span class="cstat-no" title="statement not covered" > structure = { properties: typeAnnotation.properties };</span>
2312
- } else <span class="cstat-no" title="statement not covered" >if (typeAnnotation.typeArguments) {</span>
2313
- <span class="cstat-no" title="statement not covered" > structure = { properties: app.getSelectRef(typeAnnotation, true) };</span>
2314
- } else {
2315
- <span class="cstat-no" title="statement not covered" > structure = app.findNodeByCompleteName(typeAnnotation.typeNamespace + '.' + typeAnnotation.typeName);</span>
2316
- }
2317
- <span class="cstat-no" title="statement not covered" > structure?.properties?.forEach(<span class="fstat-no" title="function not covered" >(s</span>tructureProperty: StructureProperty) =&gt; {</span>
2318
- const { name, typeAnnotation } = <span class="cstat-no" title="statement not covered" >structureProperty;</span>
2319
- const expression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2320
- object: parentExpression,
2321
- property: new Identifier({ name }),
2322
- });
2323
- const completionData = <span class="cstat-no" title="statement not covered" >new CompletionProperty({</span>
2324
- name,
2325
- value: name,
2326
- expression,
2327
- children: [],
2328
- });
2329
- <span class="cstat-no" title="statement not covered" > completionData.icon = 'refProperty';</span>
2330
- &nbsp;
2331
- <span class="cstat-no" title="statement not covered" > item.children.push(completionData);</span>
2332
- <span class="cstat-no" title="statement not covered" > recursionProperty(typeAnnotation, completionData, node, typeKeyMap);</span>
2333
- });
2334
- }
2335
- }
2336
- &nbsp;
2337
- const completionData = <span class="cstat-no" title="statement not covered" >new CompletionProperty(item);</span>
2338
- // 变量 param return 在这里添加图标
2339
- <span class="cstat-no" title="statement not covered" > completionData.icon = getNodeiconFromLogic(completionData, node);</span>
2340
- <span class="cstat-no" title="statement not covered" > return completionData;</span>
2341
- }
2342
- function <span class="fstat-no" title="function not covered" >recursionProperty(</span>
2343
- structureTypeAnnotation: TypeAnnotation,
2344
- parentCompletion: CompletionProperty,
2345
- node: BaseNode,
2346
- typeKeyMap: Map&lt;string, number&gt;
2347
- ) {
2348
- const app = <span class="cstat-no" title="statement not covered" >node.rootNode as App;</span>
2349
- let structure;
2350
- <span class="cstat-no" title="statement not covered" > if (structureTypeAnnotation.typeArguments) {</span>
2351
- <span class="cstat-no" title="statement not covered" > structure = { properties: app.getSelectRef(structureTypeAnnotation, true) };</span>
2352
- } else {
2353
- <span class="cstat-no" title="statement not covered" > if (structureTypeAnnotation.typeKind === 'anonymousStructure') {</span>
2354
- <span class="cstat-no" title="statement not covered" > structure = { properties: structureTypeAnnotation.properties };</span>
2355
- } else {
2356
- <span class="cstat-no" title="statement not covered" > structure = app.findNodeByCompleteName(structureTypeAnnotation.typeNamespace + '.' + structureTypeAnnotation.typeName);</span>
2357
- }
2358
- }
2359
- &nbsp;
2360
- <span class="cstat-no" title="statement not covered" > structure?.properties?.forEach(<span class="fstat-no" title="function not covered" >(s</span>tructureProperty: StructureProperty) =&gt; {</span>
2361
- const { name, typeAnnotation } = <span class="cstat-no" title="statement not covered" >structureProperty;</span>
2362
- const object = <span class="cstat-no" title="statement not covered" >BaseNode.from({ ...parentCompletion.expression.toJSON() }) as any;</span>
2363
- const expression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2364
- object,
2365
- property: new Identifier({ name }),
2366
- });
2367
- const completionData = <span class="cstat-no" title="statement not covered" >new CompletionProperty({</span>
2368
- name,
2369
- value: name,
2370
- expression,
2371
- children: [],
2372
- });
2373
- <span class="cstat-no" title="statement not covered" > completionData.icon = 'refProperty';</span>
2374
- <span class="cstat-no" title="statement not covered" > parentCompletion.children.push(completionData);</span>
2375
- <span class="cstat-no" title="statement not covered" > if (getNextFlag(typeAnnotation.typeKey, typeKeyMap)) {</span>
2376
- <span class="cstat-no" title="statement not covered" > recursionProperty(typeAnnotation, completionData, node, typeKeyMap);</span>
2377
- }
2378
- });
2379
- }
2380
- &nbsp;
2381
- function <span class="fstat-no" title="function not covered" >getNextFlag(</span>typeKey: string, typeKeyMap: Map&lt;string, number&gt;) {
2382
- <span class="cstat-no" title="statement not covered" > if (['nasl.core.String', 'nasl.collection.List', 'nasl.collection.Map'].includes(typeKey)) <span class="cstat-no" title="statement not covered" >return true;</span></span>
2383
- <span class="cstat-no" title="statement not covered" > if (typeKeyMap.get(typeKey) === 3) {</span>
2384
- <span class="cstat-no" title="statement not covered" > return false;</span>
2385
- } else <span class="cstat-no" title="statement not covered" >if (typeKeyMap.get(typeKey) &gt; 0) {</span>
2386
- <span class="cstat-no" title="statement not covered" > typeKeyMap.set(typeKey, typeKeyMap.get(typeKey) + 1);</span>
2387
- } else {
2388
- <span class="cstat-no" title="statement not covered" > typeKeyMap.set(typeKey, 1);</span>
2389
- }
2390
- <span class="cstat-no" title="statement not covered" > return true;</span>
2391
- }
2392
- // 格式化变量数据
2393
- export function <span class="fstat-no" title="function not covered" >formatVariableData(</span>data: unknown | variableItem[], node: SyntaxNode, parent?: any) {
2394
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(data)) {</span>
2395
- let result = <span class="cstat-no" title="statement not covered" >data.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2396
- <span class="cstat-no" title="statement not covered" > item.children = [];</span>
2397
- // 当前的类型如 app.entitys.entity1 nasl.core.String
2398
- let typeKey: string;
2399
- <span class="cstat-no" title="statement not covered" > if (item.completionDetail) {</span>
2400
- <span class="cstat-no" title="statement not covered" > if (item.completionDetail?.hasOwnProperty('nodeType') || item.completionDetail?.hasOwnProperty('newNodeType')) {</span>
2401
- const completionProperty = <span class="cstat-no" title="statement not covered" >getNodeTypeVariableData(item.completionDetail?.nodeType || item.completionDetail?.newNodeType, item, node);</span>
2402
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2403
- } else {
2404
- // 当前节点的完整类型,主要是在有T的内容使用 nasl.list&lt;Enum1&gt; 内部匹配内容给里面子集的T赋值类型
2405
- let currentType: string = <span class="cstat-no" title="statement not covered" >formatTs2TypeString(item.completionDetail.displayParts as Array&lt;{ text: string; kind: string }&gt;);</span>
2406
- <span class="cstat-no" title="statement not covered" > if (currentType) {</span>
2407
- <span class="cstat-no" title="statement not covered" > if (currentType?.includes(': ')) {</span>
2408
- const indexOf = <span class="cstat-no" title="statement not covered" >currentType.indexOf(': ');</span>
2409
- const newCurrentType = <span class="cstat-no" title="statement not covered" >currentType.substring(indexOf + 2, currentType.length);</span>
2410
- // 如果是对象形式的就单独处理
2411
- <span class="cstat-no" title="statement not covered" > if (newCurrentType.startsWith('{') &amp;&amp; newCurrentType.endsWith('}')) {</span>
2412
- const completionProperty = <span class="cstat-no" title="statement not covered" >getAStructureObjectStringType(newCurrentType, item, node);</span>
2413
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2414
- } else <span class="cstat-no" title="statement not covered" >if (newCurrentType.startsWith('nasl.ui.Current&lt;{')) {</span>
2415
- const completionProperty = <span class="cstat-no" title="statement not covered" >getAStructureScopeType(newCurrentType, item, node);</span>
2416
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2417
- } else <span class="cstat-no" title="statement not covered" >if (newCurrentType.startsWith('nasl.collection.List&lt;{') &amp;&amp; newCurrentType.endsWith('}&gt;')) {</span>
2418
- <span class="cstat-no" title="statement not covered" > currentType = 'nasl.collection.List&lt;nasl.core.Any&gt;';</span>
2419
- }
2420
- }
2421
- }
2422
- <span class="cstat-no" title="statement not covered" > typeKey = getPlatformType(currentType);</span>
2423
- <span class="cstat-no" title="statement not covered" > item.typeAnnotation = displayString2TypeAnnotation(typeKey);</span>
2424
- }
2425
- } else <span class="cstat-no" title="statement not covered" >if (item instanceof StructureProperty || item instanceof EntityProperty) {</span>
2426
- <span class="cstat-no" title="statement not covered" > typeKey = item?.typeAnnotation?.typeKey;</span>
2427
- }
2428
- // 如果没有父节点就是Identifier
2429
- <span class="cstat-no" title="statement not covered" > if (!parent) {</span>
2430
- // value需要拼接生成
2431
- <span class="cstat-no" title="statement not covered" > item.value = parent ? `${parent.value}.${item.text}` : item.text;</span>
2432
- <span class="cstat-no" title="statement not covered" > item.name = item.text;</span>
2433
- const identifier = <span class="cstat-no" title="statement not covered" >new Identifier({ name: item.name });</span>
2434
- <span class="cstat-no" title="statement not covered" > item.expression = identifier;</span>
2435
- <span class="cstat-no" title="statement not covered" > item.typeKey = typeKey;</span>
2436
- } else {
2437
- <span class="cstat-no" title="statement not covered" > item.value = `${parent.value}.${item.name}`;</span>
2438
- const object: any = <span class="cstat-no" title="statement not covered" >BaseNode.from(parent.expression.toJSON());</span>
2439
- const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2440
- object,
2441
- property: new Identifier({ name: item.name }),
2442
- });
2443
- <span class="cstat-no" title="statement not covered" > item.expression = memberExpression;</span>
2444
- <span class="cstat-no" title="statement not covered" > item.variableParent = parent;</span>
2445
- <span class="cstat-no" title="statement not covered" > item.typeKey = typeKey;</span>
2446
- // 标记实体属性是否是符合类型
2447
- <span class="cstat-no" title="statement not covered" > item.isComplexType = item.typeAnnotation?.isComplexType();</span>
2448
- }
2449
- // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
2450
- <span class="cstat-no" title="statement not covered" > if (typeKey &amp;&amp; !isNoChildType(typeKey)) {</span>
2451
- let currentParent = <span class="cstat-no" title="statement not covered" >item;</span>
2452
- let typeKeyIndex = <span class="cstat-no" title="statement not covered" >0;</span>
2453
- <span class="cstat-no" title="statement not covered" > while (currentParent.variableParent) {</span>
2454
- <span class="cstat-no" title="statement not covered" > currentParent = currentParent.variableParent;</span>
2455
- <span class="cstat-no" title="statement not covered" > if (currentParent.typeKey === typeKey) {</span>
2456
- <span class="cstat-no" title="statement not covered" > typeKeyIndex++;</span>
2457
- }
2458
- }
2459
- // 向上找到3次一样的就结束
2460
- <span class="cstat-no" title="statement not covered" > if (typeKeyIndex &lt; 3) {</span>
2461
- <span class="cstat-no" title="statement not covered" > nextFindTypeChild(typeKey, item, node);</span>
2462
- }
2463
- }
2464
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(item);</span>
2465
- <span class="cstat-no" title="statement not covered" > completionProperty.jsonName = item.jsonName;</span>
2466
- // 标记实体属性是否是符合类型
2467
- <span class="cstat-no" title="statement not covered" > if (typeof item.isComplexType === 'boolean') {</span>
2468
- <span class="cstat-no" title="statement not covered" > Object.assign(completionProperty, { isComplexType: item.isComplexType });</span>
2469
- }
2470
- <span class="cstat-no" title="statement not covered" > if (!parent) {</span>
2471
- // 变量 param return 在这里添加图标
2472
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = getNodeiconFromLogic(completionProperty, node);</span>
2473
- } else {
2474
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
2475
- }
2476
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2477
- });
2478
- &nbsp;
2479
- /**
2480
- * 排序result
2481
- * 如果没有父级就是第一集就排序一下当前result,用户体验优化
2482
- */
2483
- <span class="cstat-no" title="statement not covered" > if (!parent) {</span>
2484
- <span class="cstat-no" title="statement not covered" > result = sortFirstVariableData(result, node);</span>
2485
- }
2486
- &nbsp;
2487
- <span class="cstat-no" title="statement not covered" > return result.filter(Boolean);</span>
2488
- }
2489
- }
2490
- &nbsp;
2491
- // 从logic获取节点的icon
2492
- function <span class="fstat-no" title="function not covered" >getNodeiconFromLogic(</span>completionProperty: CompletionProperty, node: SyntaxNode): string {
2493
- const { name: propName } = <span class="cstat-no" title="statement not covered" >completionProperty;</span>
2494
- const { view } = <span class="cstat-no" title="statement not covered" >node as Param;</span>
2495
- const logic = (<span class="cstat-no" title="statement not covered" >node as Param).logic || (node as Param).OverriddenLogic || (node as Param).AuthLogic || (node as Param).AuthLogicForCallInterface;</span>
2496
- &nbsp;
2497
- <span class="cstat-no" title="statement not covered" > if (node.concept === 'Identifier' || node.concept === 'BindAttribute' || node.concept === 'MemberExpression') {</span>
2498
- const callLogic = <span class="cstat-no" title="statement not covered" >node.getAncestor&lt;CallLogic&gt;('CallLogic');</span>
2499
- const originLogic = <span class="cstat-no" title="statement not covered" >callLogic?.getCallNode() as Logic;</span>
2500
- &nbsp;
2501
- <span class="cstat-no" title="statement not covered" > if (originLogic?.params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2502
- <span class="cstat-no" title="statement not covered" > return 'param';</span>
2503
- }
2504
- }
2505
- &nbsp;
2506
- <span class="cstat-no" title="statement not covered" > if (view) {</span>
2507
- // 前端逻辑调用
2508
- const { params } = <span class="cstat-no" title="statement not covered" >view;</span>
2509
- &nbsp;
2510
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2511
- <span class="cstat-no" title="statement not covered" > return 'param';</span>
2512
- }
2513
- }
2514
- &nbsp;
2515
- <span class="cstat-no" title="statement not covered" > if (logic) {</span>
2516
- const { params, returns } = <span class="cstat-no" title="statement not covered" >logic;</span>
2517
- &nbsp;
2518
- <span class="cstat-no" title="statement not covered" > if (logic instanceof AuthLogicForCallInterface) {</span>
2519
- const { authParams } = <span class="cstat-no" title="statement not covered" >logic;</span>
2520
- <span class="cstat-no" title="statement not covered" > if (authParams.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'api-auth-params';</span></span>
2521
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'api-auth-params';</span></span>
2522
- } else <span class="cstat-no" title="statement not covered" >if (logic instanceof AuthLogic) {</span>
2523
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'api-auth-params';</span></span>
2524
- } else {
2525
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'param';</span></span>
2526
- }
2527
- &nbsp;
2528
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2529
- <span class="cstat-no" title="statement not covered" > return 'param';</span>
2530
- } else <span class="cstat-no" title="statement not covered" >if (returns.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2531
- <span class="cstat-no" title="statement not covered" > return 'return';</span>
2532
- } else {
2533
- <span class="cstat-no" title="statement not covered" > return 'variable';</span>
2534
- }
2535
- }
2536
- &nbsp;
2537
- const bindAttr = <span class="cstat-no" title="statement not covered" >node.getAncestor&lt;BindAttribute&gt;('BindAttribute');</span>
2538
- &nbsp;
2539
- <span class="cstat-no" title="statement not covered" > if (bindAttr) {</span>
2540
- const interfaceInstance = <span class="cstat-no" title="statement not covered" >bindAttr.getAncestor&lt;Interface&gt;('Interface');</span>
2541
- &nbsp;
2542
- <span class="cstat-no" title="statement not covered" > if (interfaceInstance?.params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2543
- <span class="cstat-no" title="statement not covered" > return 'param';</span>
2544
- }
2545
- }
2546
- &nbsp;
2547
- <span class="cstat-no" title="statement not covered" > return 'variable';</span>
2548
- }
2549
- &nbsp;
2550
- /**
2551
- * 把要返回去的数据做一下排序
2552
- * @param result 要返回数据
2553
- * @param node 当前内容的上下级
2554
- * @returns 返回排序后的数组
2555
- * 因为ts会按照 a-z的顺序进行排序
2556
- * 但是影响用户体验,需要先按照页面排序,其次按照logic进行排序
2557
- * 流程的韬哥自己解决了,所以先解决这两部分
2558
- */
2559
- function <span class="fstat-no" title="function not covered" >sortFirstVariableData(</span>result: CompletionProperty[], node: BaseNode) {
2560
- const newResult: CompletionProperty[] = <span class="cstat-no" title="statement not covered" >[];</span>
2561
- const logic = (<span class="cstat-no" title="statement not covered" >node as Param).logic;</span>
2562
- const view = (<span class="cstat-no" title="statement not covered" >node as Param).view;</span>
2563
- <span class="cstat-no" title="statement not covered" > if (view) {</span>
2564
- const { params, variables } = <span class="cstat-no" title="statement not covered" >view;</span>
2565
- const list = <span class="cstat-no" title="statement not covered" >[...params, ...variables];</span>
2566
- <span class="cstat-no" title="statement not covered" > list.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2567
- const findIndex = <span class="cstat-no" title="statement not covered" >result.findIndex(<span class="fstat-no" title="function not covered" >(f</span>indItem) =&gt; <span class="cstat-no" title="statement not covered" >findItem.name === item.name)</span>;</span>
2568
- <span class="cstat-no" title="statement not covered" > if (findIndex !== -1) {</span>
2569
- <span class="cstat-no" title="statement not covered" > newResult.push(result[findIndex]);</span>
2570
- <span class="cstat-no" title="statement not covered" > result.splice(findIndex, 1);</span>
2571
- }
2572
- });
2573
- }
2574
- <span class="cstat-no" title="statement not covered" > if (logic) {</span>
2575
- const { params, returns, variables } = <span class="cstat-no" title="statement not covered" >logic;</span>
2576
- const list = <span class="cstat-no" title="statement not covered" >[...params, ...returns, ...variables];</span>
2577
- <span class="cstat-no" title="statement not covered" > list.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2578
- const findIndex = <span class="cstat-no" title="statement not covered" >result.findIndex(<span class="fstat-no" title="function not covered" >(f</span>indItem) =&gt; <span class="cstat-no" title="statement not covered" >findItem.name === item.name)</span>;</span>
2579
- <span class="cstat-no" title="statement not covered" > if (findIndex !== -1) {</span>
2580
- <span class="cstat-no" title="statement not covered" > newResult.push(result[findIndex]);</span>
2581
- <span class="cstat-no" title="statement not covered" > result.splice(findIndex, 1);</span>
2582
- }
2583
- });
2584
- }
2585
- <span class="cstat-no" title="statement not covered" > newResult.push(...result);</span>
2586
- <span class="cstat-no" title="statement not covered" > return newResult;</span>
2587
- }
2588
- export function <span class="fstat-no" title="function not covered" >formatBackendVariables(</span>variables: Array&lt;BackendVariable&gt;) {
2589
- const result = <span class="cstat-no" title="statement not covered" >variables.map(<span class="fstat-no" title="function not covered" >(i</span>temNode) =&gt; {</span>
2590
- const namespace = <span class="cstat-no" title="statement not covered" >itemNode.getNamespace();</span>
2591
- const newItem: any = <span class="cstat-no" title="statement not covered" >{</span>
2592
- name: itemNode.name,
2593
- value: itemNode.name,
2594
- expression: new Identifier({
2595
- name: itemNode.name,
2596
- namespace,
2597
- }),
2598
- };
2599
- const noChildType = <span class="cstat-no" title="statement not covered" >isNoChildType(itemNode.typeAnnotation?.typeKey);</span>
2600
- &nbsp;
2601
- <span class="cstat-no" title="statement not covered" > if (!noChildType) {</span>
2602
- <span class="cstat-no" title="statement not covered" > nextFindTypeChild(itemNode?.typeAnnotation?.typeKey, newItem, itemNode);</span>
2603
- }
2604
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
2605
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'backendVariable';</span>
2606
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2607
- });
2608
- <span class="cstat-no" title="statement not covered" > return result;</span>
2609
- }
2610
- export function <span class="fstat-no" title="function not covered" >formatFrontEndVariables(</span>frontEndVariables: Array&lt;Variable&gt;) {
2611
- const result = <span class="cstat-no" title="statement not covered" >frontEndVariables.map(<span class="fstat-no" title="function not covered" >(i</span>temNode) =&gt; {</span>
2612
- const namespace = <span class="cstat-no" title="statement not covered" >itemNode.getNamespace();</span>
2613
- const newItem: any = <span class="cstat-no" title="statement not covered" >{</span>
2614
- name: itemNode.name,
2615
- value: itemNode.name,
2616
- expression: new Identifier({
2617
- name: itemNode.name,
2618
- namespace,
2619
- }),
2620
- };
2621
- const noChildType = <span class="cstat-no" title="statement not covered" >isNoChildType(itemNode.typeAnnotation?.typeKey);</span>
2622
- &nbsp;
2623
- <span class="cstat-no" title="statement not covered" > if (!noChildType) {</span>
2624
- <span class="cstat-no" title="statement not covered" > nextFindTypeChild(itemNode.typeAnnotation.typeKey, newItem, itemNode);</span>
2625
- }
2626
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
2627
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'frontendVariable';</span>
2628
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2629
- });
2630
- <span class="cstat-no" title="statement not covered" > return result;</span>
2631
- }
2632
- &nbsp;
2633
- export function <span class="fstat-no" title="function not covered" >formatConfigProperties(</span>configProperties: Array&lt;ConfigProperty&gt;, isView: Boolean) {
2634
- const result = <span class="cstat-no" title="statement not covered" >configProperties.reduce(<span class="fstat-no" title="function not covered" >(p</span>re: any, item) =&gt; {</span>
2635
- const { isPrivate = <span class="branch-0 cbranch-no" title="branch not covered" >false </span>} = <span class="cstat-no" title="statement not covered" >item;</span>
2636
- &nbsp;
2637
- <span class="cstat-no" title="statement not covered" > if (!isPrivate || !isView) {</span>
2638
- const namespace = <span class="cstat-no" title="statement not covered" >item.getNamespace();</span>
2639
- const newItem: any = <span class="cstat-no" title="statement not covered" >{</span>
2640
- name: item.name,
2641
- value: item.name,
2642
- expression: new Identifier({
2643
- name: item.name,
2644
- namespace,
2645
- }),
2646
- icon: 'configProperty',
2647
- calleewholeKey: item.calleewholeKey,
2648
- };
2649
- &nbsp;
2650
- <span class="cstat-no" title="statement not covered" > pre.push(newItem);</span>
2651
- }
2652
- <span class="cstat-no" title="statement not covered" > return pre;</span>
2653
- }, []);
2654
- // const result = configProperties.map((item) =&gt; {
2655
- // const namespace = item.getNamespace();
2656
- // const newItem: any = {
2657
- // name: item.name,
2658
- // value: item.name,
2659
- // expression: new Identifier({
2660
- // name: item.name,
2661
- // namespace,
2662
- // }),
2663
- // icon: 'configProperty',
2664
- // calleewholeKey: item.calleewholeKey,
2665
- // };
2666
- // return newItem;
2667
- // });
2668
- <span class="cstat-no" title="statement not covered" > return result;</span>
2669
- }
2670
- &nbsp;</pre></td></tr></table></pre>
2671
-
2672
- <div class='push'></div><!-- for sticky footer -->
2673
- </div><!-- /wrapper -->
2674
- <div class='footer quiet pad2 space-top1 center small'>
2675
- Code coverage generated by
2676
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2677
- at 2023-10-27T11:50:55.546Z
2678
- </div>
2679
- <script src="../../prettify.js"></script>
2680
- <script>
2681
- window.onload = function () {
2682
- prettyPrint();
2683
- };
2684
- </script>
2685
- <script src="../../sorter.js"></script>
2686
- <script src="../../block-navigation.js"></script>
2687
- </body>
2688
- </html>
2689
-