@lcap/nasl 3.3.0-beta.2 → 3.3.2-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.
- package/.nyc_output/d58d92d8-c0d6-479b-9f82-1f4da8e73ff3.json +1 -0
- package/.nyc_output/processinfo/d58d92d8-c0d6-479b-9f82-1f4da8e73ff3.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +461 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/coverage/src/automate/engine/index.html +116 -0
- package/coverage/src/automate/engine/utils.js.html +1414 -0
- package/coverage/src/bak/index.html +116 -0
- package/coverage/src/bak/translator.js.html +622 -0
- package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +175 -0
- package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +169 -0
- package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +1246 -0
- package/coverage/src/breakpoint/generator/CallbackNode.ts.html +145 -0
- package/coverage/src/breakpoint/generator/index.html +176 -0
- package/coverage/src/breakpoint/generator/index.ts.html +508 -0
- package/coverage/src/breakpoint/index.html +116 -0
- package/coverage/src/breakpoint/index.ts.html +94 -0
- package/coverage/src/breakpoint/shared/constants.ts.html +436 -0
- package/coverage/src/breakpoint/shared/index.html +176 -0
- package/coverage/src/breakpoint/shared/index.ts.html +94 -0
- package/coverage/src/breakpoint/shared/operations.ts.html +160 -0
- package/coverage/src/breakpoint/shared/socket.ts.html +1297 -0
- package/coverage/src/breakpoint/shared/utils.ts.html +1087 -0
- package/coverage/src/breakpoint/store/core.ts.html +1600 -0
- package/coverage/src/breakpoint/store/dock.ts.html +733 -0
- package/coverage/src/breakpoint/store/index.html +146 -0
- package/coverage/src/breakpoint/store/index.ts.html +91 -0
- package/coverage/src/common/BaseNode.ts.html +3874 -0
- package/coverage/src/common/Command.ts.html +310 -0
- package/coverage/src/common/EventEmitter.ts.html +370 -0
- package/coverage/src/common/Messager.ts.html +820 -0
- package/coverage/src/common/asyncFuncMap.ts.html +127 -0
- package/coverage/src/common/index.html +191 -0
- package/coverage/src/common/index.ts.html +94 -0
- package/coverage/src/concepts/Abort__.ts.html +328 -0
- package/coverage/src/concepts/Anchor__.ts.html +646 -0
- package/coverage/src/concepts/AnonymousFunction__.ts.html +2029 -0
- package/coverage/src/concepts/App__.ts.html +13252 -0
- package/coverage/src/concepts/Argument__.ts.html +964 -0
- package/coverage/src/concepts/Assignee__.ts.html +2236 -0
- package/coverage/src/concepts/AssignmentLine__.ts.html +409 -0
- package/coverage/src/concepts/Assignment__.ts.html +1123 -0
- package/coverage/src/concepts/Attribute__.ts.html +733 -0
- package/coverage/src/concepts/AuthInterface__.ts.html +367 -0
- package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +1984 -0
- package/coverage/src/concepts/AuthLogic__.ts.html +781 -0
- package/coverage/src/concepts/BackendVariable__.ts.html +1483 -0
- package/coverage/src/concepts/Backend__.ts.html +1165 -0
- package/coverage/src/concepts/BatchAssignment__.ts.html +3301 -0
- package/coverage/src/concepts/BinaryExpression__.ts.html +1441 -0
- package/coverage/src/concepts/BindAttribute__.ts.html +3835 -0
- package/coverage/src/concepts/BindDirective__.ts.html +1921 -0
- package/coverage/src/concepts/BindEvent__.ts.html +3406 -0
- package/coverage/src/concepts/BindStyle__.ts.html +1612 -0
- package/coverage/src/concepts/BooleanLiteral__.ts.html +418 -0
- package/coverage/src/concepts/CallAuthInterface__.ts.html +1615 -0
- package/coverage/src/concepts/CallConnector__.ts.html +922 -0
- package/coverage/src/concepts/CallFunction__.ts.html +2122 -0
- package/coverage/src/concepts/CallInterface__.ts.html +2719 -0
- package/coverage/src/concepts/CallLogic__.ts.html +4807 -0
- package/coverage/src/concepts/CallQueryComponent__.ts.html +5308 -0
- package/coverage/src/concepts/Comment__.ts.html +394 -0
- package/coverage/src/concepts/CompletionProperty__.ts.html +925 -0
- package/coverage/src/concepts/ConfigGroup__.ts.html +1105 -0
- package/coverage/src/concepts/ConfigPropertyValue__.ts.html +424 -0
- package/coverage/src/concepts/ConfigProperty__.ts.html +1348 -0
- package/coverage/src/concepts/Configuration__.ts.html +1027 -0
- package/coverage/src/concepts/Connection__.ts.html +1360 -0
- package/coverage/src/concepts/ConnectorTrigger__.ts.html +595 -0
- package/coverage/src/concepts/Connector__.ts.html +4255 -0
- package/coverage/src/concepts/Constant__.ts.html +913 -0
- package/coverage/src/concepts/DataSource__.ts.html +1771 -0
- package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +331 -0
- package/coverage/src/concepts/Destination__.ts.html +2731 -0
- package/coverage/src/concepts/End__.ts.html +433 -0
- package/coverage/src/concepts/EntityIndex__.ts.html +787 -0
- package/coverage/src/concepts/EntityProperty__.ts.html +2668 -0
- package/coverage/src/concepts/Entity__.ts.html +2950 -0
- package/coverage/src/concepts/EnumItem__.ts.html +550 -0
- package/coverage/src/concepts/Enum__.ts.html +1231 -0
- package/coverage/src/concepts/Event__.ts.html +1084 -0
- package/coverage/src/concepts/ExternalDestination__.ts.html +1033 -0
- package/coverage/src/concepts/ForEachStatement__.ts.html +1957 -0
- package/coverage/src/concepts/FrontendLibrary__.ts.html +1711 -0
- package/coverage/src/concepts/FrontendVariable__.ts.html +292 -0
- package/coverage/src/concepts/Frontend__.ts.html +3961 -0
- package/coverage/src/concepts/Function__.ts.html +3598 -0
- package/coverage/src/concepts/Identifier__.ts.html +1057 -0
- package/coverage/src/concepts/IfStatement__.ts.html +1594 -0
- package/coverage/src/concepts/Integration__.ts.html +1228 -0
- package/coverage/src/concepts/InterfaceParam__.ts.html +1087 -0
- package/coverage/src/concepts/Interface__.ts.html +3394 -0
- package/coverage/src/concepts/JSBlock__.ts.html +421 -0
- package/coverage/src/concepts/JavaLogic__.ts.html +460 -0
- package/coverage/src/concepts/LogicItem__.ts.html +1171 -0
- package/coverage/src/concepts/Logic__.ts.html +7408 -0
- package/coverage/src/concepts/MatchCase__.ts.html +2929 -0
- package/coverage/src/concepts/Match__.ts.html +2455 -0
- package/coverage/src/concepts/MemberExpression__.ts.html +1726 -0
- package/coverage/src/concepts/MicroApp__.ts.html +436 -0
- package/coverage/src/concepts/Module__.ts.html +9220 -0
- package/coverage/src/concepts/MsgTriggerEvent__.ts.html +1045 -0
- package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +1018 -0
- package/coverage/src/concepts/Namespace__.ts.html +7942 -0
- package/coverage/src/concepts/NewComposite__.ts.html +4729 -0
- package/coverage/src/concepts/NewList__.ts.html +1618 -0
- package/coverage/src/concepts/NewMap__.ts.html +2326 -0
- package/coverage/src/concepts/New__.ts.html +289 -0
- package/coverage/src/concepts/NullLiteral__.ts.html +349 -0
- package/coverage/src/concepts/NumericLiteral__.ts.html +676 -0
- package/coverage/src/concepts/OqlQueryComponent__.ts.html +1141 -0
- package/coverage/src/concepts/OverriddenLogic__.ts.html +6817 -0
- package/coverage/src/concepts/Param__.ts.html +1726 -0
- package/coverage/src/concepts/Point__.ts.html +331 -0
- package/coverage/src/concepts/ProcessComponent__.ts.html +1666 -0
- package/coverage/src/concepts/ProcessElement__.ts.html +5884 -0
- package/coverage/src/concepts/ProcessOutcome__.ts.html +352 -0
- package/coverage/src/concepts/ProcessOutcomes__.ts.html +343 -0
- package/coverage/src/concepts/Process__.ts.html +4768 -0
- package/coverage/src/concepts/QueryAggregateExpression__.ts.html +568 -0
- package/coverage/src/concepts/QueryFieldExpression__.ts.html +583 -0
- package/coverage/src/concepts/QueryFromExpression__.ts.html +910 -0
- package/coverage/src/concepts/QueryGroupByExpression__.ts.html +559 -0
- package/coverage/src/concepts/QueryJoinExpression__.ts.html +1567 -0
- package/coverage/src/concepts/QueryLimitExpression__.ts.html +637 -0
- package/coverage/src/concepts/QueryOrderByExpression__.ts.html +679 -0
- package/coverage/src/concepts/QuerySelectExpression__.ts.html +1714 -0
- package/coverage/src/concepts/Rect__.ts.html +373 -0
- package/coverage/src/concepts/Return__.ts.html +1312 -0
- package/coverage/src/concepts/Role__.ts.html +601 -0
- package/coverage/src/concepts/SelectMembers__.ts.html +1246 -0
- package/coverage/src/concepts/Slot__.ts.html +628 -0
- package/coverage/src/concepts/SqlQueryComponent__.ts.html +982 -0
- package/coverage/src/concepts/Start__.ts.html +304 -0
- package/coverage/src/concepts/StringInterpolation__.ts.html +1129 -0
- package/coverage/src/concepts/StringLiteral__.ts.html +505 -0
- package/coverage/src/concepts/StructureProperty__.ts.html +1132 -0
- package/coverage/src/concepts/Structure__.ts.html +2092 -0
- package/coverage/src/concepts/SwitchCase__.ts.html +1174 -0
- package/coverage/src/concepts/SwitchStatement__.ts.html +877 -0
- package/coverage/src/concepts/Theme__.ts.html +358 -0
- package/coverage/src/concepts/Transactional__.ts.html +628 -0
- package/coverage/src/concepts/TriggerEvent__.ts.html +1012 -0
- package/coverage/src/concepts/TriggerLauncher__.ts.html +775 -0
- package/coverage/src/concepts/TypeAnnotation__.ts.html +3718 -0
- package/coverage/src/concepts/TypeParam__.ts.html +319 -0
- package/coverage/src/concepts/UnaryExpression__.ts.html +697 -0
- package/coverage/src/concepts/Unparsed__.ts.html +394 -0
- package/coverage/src/concepts/UseComponent__.ts.html +331 -0
- package/coverage/src/concepts/ValidationRule__.ts.html +1840 -0
- package/coverage/src/concepts/Variable__.ts.html +1489 -0
- package/coverage/src/concepts/ViewBlock__.ts.html +352 -0
- package/coverage/src/concepts/ViewComponent__.ts.html +4180 -0
- package/coverage/src/concepts/ViewElement__.ts.html +8803 -0
- package/coverage/src/concepts/View__.ts.html +8620 -0
- package/coverage/src/concepts/WhileStatement__.ts.html +1063 -0
- package/coverage/src/concepts/basics/stdlib/index.html +356 -0
- package/coverage/src/concepts/basics/stdlib/index.ts.html +208 -0
- package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +565 -0
- package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +517 -0
- package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +226 -0
- package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +172 -0
- package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +214 -0
- package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +145 -0
- package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +589 -0
- package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +214 -0
- package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +229 -0
- package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +268 -0
- package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +1999 -0
- package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +3259 -0
- package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +6844 -0
- package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +1768 -0
- package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +163 -0
- package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +664 -0
- package/coverage/src/concepts/basics/types/coreTypeList.ts.html +121 -0
- package/coverage/src/concepts/basics/types/index.html +131 -0
- package/coverage/src/concepts/basics/types/index.ts.html +160 -0
- package/coverage/src/concepts/index.html +1961 -0
- package/coverage/src/concepts/index.ts.html +103 -0
- package/coverage/src/concepts/index__.ts.html +451 -0
- package/coverage/src/config.ts.html +325 -0
- package/coverage/src/decorators/index.html +131 -0
- package/coverage/src/decorators/index.ts.html +574 -0
- package/coverage/src/decorators/promise.ts.html +169 -0
- package/coverage/src/eventBus.ts.html +100 -0
- package/coverage/src/generator/compileComponent.ts.html +142 -0
- package/coverage/src/generator/genBundleFiles.ts.html +1828 -0
- package/coverage/src/generator/genHash.ts.html +124 -0
- package/coverage/src/generator/genMetaData.ts.html +1042 -0
- package/coverage/src/generator/genReleaseBody.ts.html +1282 -0
- package/coverage/src/generator/icestark.ts.html +220 -0
- package/coverage/src/generator/index.html +266 -0
- package/coverage/src/generator/index.ts.html +106 -0
- package/coverage/src/generator/microApp.ts.html +172 -0
- package/coverage/src/generator/permission.ts.html +1036 -0
- package/coverage/src/generator/qiankun.ts.html +232 -0
- package/coverage/src/generator/styleReplacer.ts.html +199 -0
- package/coverage/src/index.html +146 -0
- package/coverage/src/index.ts.html +121 -0
- package/coverage/src/manager/diagnostic.ts.html +442 -0
- package/coverage/src/manager/index.html +131 -0
- package/coverage/src/manager/stepRecorder.ts.html +457 -0
- package/coverage/src/natural/genNaturalTS.ts.html +355 -0
- package/coverage/src/natural/index.html +161 -0
- package/coverage/src/natural/index.ts.html +91 -0
- package/coverage/src/natural/naslStdlibMap.ts.html +157 -0
- package/coverage/src/natural/transformTSCode.ts.html +2647 -0
- package/coverage/src/sentry/index.html +116 -0
- package/coverage/src/sentry/index.ts.html +676 -0
- package/coverage/src/server/createUiTs.ts.html +910 -0
- package/coverage/src/server/entity2LogicNamespace.ts.html +1294 -0
- package/coverage/src/server/event.js.html +526 -0
- package/coverage/src/server/extendBaseNode.ts.html +1762 -0
- package/coverage/src/server/formatTsUtils.ts.html +2689 -0
- package/coverage/src/server/getConnector.ts.html +316 -0
- package/coverage/src/server/getExtensionModules.ts.html +178 -0
- package/coverage/src/server/getFunctions.ts.html +133 -0
- package/coverage/src/server/getInterfaces.ts.html +229 -0
- package/coverage/src/server/getLogging.ts.html +100 -0
- package/coverage/src/server/getLogics.ts.html +1363 -0
- package/coverage/src/server/getMemberIdentifier.ts.html +1561 -0
- package/coverage/src/server/getProcessComponents.ts.html +112 -0
- package/coverage/src/server/getProcesses.ts.html +2023 -0
- package/coverage/src/server/getValidates.ts.html +115 -0
- package/coverage/src/server/index.html +401 -0
- package/coverage/src/server/index.ts.html +229 -0
- package/coverage/src/server/naslServer.ts.html +14401 -0
- package/coverage/src/server/naslStdlibMap.ts.html +241 -0
- package/coverage/src/server/process2LogicNamespace.ts.html +454 -0
- package/coverage/src/server/translator.ts.html +2566 -0
- package/coverage/src/service/creator/add.configs.js.html +379 -0
- package/coverage/src/service/creator/errHandles.js.html +322 -0
- package/coverage/src/service/creator/index.html +146 -0
- package/coverage/src/service/creator/index.js.html +352 -0
- package/coverage/src/service/datasource/api.js.html +118 -0
- package/coverage/src/service/datasource/index.html +131 -0
- package/coverage/src/service/datasource/index.js.html +103 -0
- package/coverage/src/service/logic/api.js.html +109 -0
- package/coverage/src/service/logic/index.html +131 -0
- package/coverage/src/service/logic/index.js.html +103 -0
- package/coverage/src/service/storage/api.js.html +202 -0
- package/coverage/src/service/storage/index.html +206 -0
- package/coverage/src/service/storage/index.ts.html +103 -0
- package/coverage/src/service/storage/init.ts.html +2761 -0
- package/coverage/src/service/storage/jsoner.ts.html +502 -0
- package/coverage/src/service/storage/map.ts.html +256 -0
- package/coverage/src/service/storage/service.ts.html +331 -0
- package/coverage/src/service/storage/storagePoint.ts.html +304 -0
- package/coverage/src/templator/genCallComponentLogic.ts.html +163 -0
- package/coverage/src/templator/genCreateBlock.ts.html +1093 -0
- package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +1609 -0
- package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +2254 -0
- package/coverage/src/templator/genEditTableBlock.ts.html +955 -0
- package/coverage/src/templator/genEnumSelectBlock.ts.html +178 -0
- package/coverage/src/templator/genGetBlock.ts.html +451 -0
- package/coverage/src/templator/genGridViewBlock.ts.html +1114 -0
- package/coverage/src/templator/genListViewBlock.ts.html +475 -0
- package/coverage/src/templator/genQueryComponent.ts.html +1207 -0
- package/coverage/src/templator/genSelectBlock.ts.html +1243 -0
- package/coverage/src/templator/genTableBlock.ts.html +910 -0
- package/coverage/src/templator/genUpdateBlock.ts.html +1192 -0
- package/coverage/src/templator/index.html +326 -0
- package/coverage/src/templator/index.ts.html +154 -0
- package/coverage/src/templator/utils.ts.html +1861 -0
- package/coverage/src/translator/constant.ts.html +106 -0
- package/coverage/src/translator/index.html +146 -0
- package/coverage/src/translator/index.ts.html +94 -0
- package/coverage/src/translator/utils.ts.html +436 -0
- package/coverage/src/utils/cookie.ts.html +265 -0
- package/coverage/src/utils/env.ts.html +91 -0
- package/coverage/src/utils/index.html +236 -0
- package/coverage/src/utils/index.ts.html +655 -0
- package/coverage/src/utils/logger.ts.html +145 -0
- package/coverage/src/utils/sortTsString.ts.html +187 -0
- package/coverage/src/utils/string.ts.html +400 -0
- package/coverage/src/utils/time-slicing.ts.html +418 -0
- package/coverage/src/utils/traverse.ts.html +568 -0
- package/coverage/src/utils/window.ts.html +112 -0
- package/out/bak/translator.js +16 -18
- package/out/bak/translator.js.map +1 -1
- package/out/breakpoint/generator/BreakpointNode.js +1 -0
- package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
- package/out/breakpoint/shared/constants.d.ts +2 -0
- package/out/breakpoint/shared/constants.js +3 -1
- package/out/breakpoint/shared/constants.js.map +1 -1
- package/out/breakpoint/shared/socket.d.ts +1 -0
- package/out/breakpoint/shared/socket.js +35 -17
- package/out/breakpoint/shared/socket.js.map +1 -1
- package/out/breakpoint/shared/utils.js +33 -1
- package/out/breakpoint/shared/utils.js.map +1 -1
- package/out/breakpoint/store/core.d.ts +2 -0
- package/out/breakpoint/store/core.js +5 -3
- package/out/breakpoint/store/core.js.map +1 -1
- package/out/breakpoint/store/dock.js +33 -0
- package/out/breakpoint/store/dock.js.map +1 -1
- package/out/concepts/AuthLogicForCallInterface__.js +2 -1
- package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
- package/out/concepts/BinaryExpression__.js +5 -5
- package/out/concepts/BinaryExpression__.js.map +1 -1
- package/out/concepts/BindAttribute__.js +3 -3
- package/out/concepts/BindAttribute__.js.map +1 -1
- package/out/concepts/CallConnector__.d.ts +2 -0
- package/out/concepts/CallConnector__.js +17 -1
- package/out/concepts/CallConnector__.js.map +1 -1
- package/out/concepts/CallFunction__.js +31 -24
- package/out/concepts/CallFunction__.js.map +1 -1
- package/out/concepts/CallLogic__.js +53 -46
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/Connection__.js +1 -1
- package/out/concepts/Connection__.js.map +1 -1
- package/out/concepts/ForEachStatement__.d.ts +1 -20
- package/out/concepts/ForEachStatement__.js +16 -14
- package/out/concepts/ForEachStatement__.js.map +1 -1
- package/out/concepts/IfStatement__.js +24 -25
- package/out/concepts/IfStatement__.js.map +1 -1
- package/out/concepts/Logic__.js +8 -20
- package/out/concepts/Logic__.js.map +1 -1
- package/out/concepts/MatchCase__.js +12 -7
- package/out/concepts/MatchCase__.js.map +1 -1
- package/out/concepts/MemberExpression__.js +11 -14
- package/out/concepts/MemberExpression__.js.map +1 -1
- package/out/concepts/NewComposite__.d.ts +1 -1
- package/out/concepts/NewComposite__.js +11 -83
- package/out/concepts/NewComposite__.js.map +1 -1
- package/out/concepts/NewList__.js +11 -9
- package/out/concepts/NewList__.js.map +1 -1
- package/out/concepts/NewMap__.d.ts +1 -1
- package/out/concepts/NewMap__.js +12 -4
- package/out/concepts/NewMap__.js.map +1 -1
- package/out/concepts/New__.js +3 -1
- package/out/concepts/New__.js.map +1 -1
- package/out/concepts/StringInterpolation__.js +2 -2
- package/out/concepts/StringInterpolation__.js.map +1 -1
- package/out/concepts/SwitchCase__.js +8 -4
- package/out/concepts/SwitchCase__.js.map +1 -1
- package/out/concepts/ViewElement__.d.ts +4 -2
- package/out/concepts/ViewElement__.js +7 -21
- package/out/concepts/ViewElement__.js.map +1 -1
- package/out/concepts/WhileStatement__.js +6 -4
- package/out/concepts/WhileStatement__.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.browser.js +19 -3
- package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.util.d.ts +2 -0
- package/out/concepts/basics/stdlib/nasl.util.js +36 -11
- package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
- package/out/concepts/basics/stdlib/timeZone.d.ts +5 -0
- package/out/concepts/basics/stdlib/timeZone.js +196 -0
- package/out/concepts/basics/stdlib/timeZone.js.map +1 -0
- package/out/generator/genBundleFiles.js +12 -4
- package/out/generator/genBundleFiles.js.map +1 -1
- package/out/generator/genReleaseBody.js +1 -1
- package/out/generator/genReleaseBody.js.map +1 -1
- package/out/natural/genNaturalTS.d.ts +2 -2
- package/out/natural/genNaturalTS.js +5 -5
- package/out/natural/genNaturalTS.js.map +1 -1
- package/out/natural/transformTSCode.js +18 -3
- package/out/natural/transformTSCode.js.map +1 -1
- package/out/server/createUiTs.js +3 -0
- package/out/server/createUiTs.js.map +1 -1
- package/out/server/getLogics.js +3 -1
- package/out/server/getLogics.js.map +1 -1
- package/out/server/getMemberIdentifier.js +15 -0
- package/out/server/getMemberIdentifier.js.map +1 -1
- package/out/server/naslServer.js +35 -9
- package/out/server/naslServer.js.map +1 -1
- package/out/service/creator/errHandles.js +10 -19
- package/out/service/creator/errHandles.js.map +1 -1
- package/out/service/storage/init.js +7 -2
- package/out/service/storage/init.js.map +1 -1
- package/out/service/storage/jsoner.js +1 -3
- package/out/service/storage/jsoner.js.map +1 -1
- package/out/templator/genEditTableBlock.js +24 -2
- package/out/templator/genEditTableBlock.js.map +1 -1
- package/out/templator/genTableBlock.js +22 -1
- package/out/templator/genTableBlock.js.map +1 -1
- package/out/translator/types.d.ts +1 -0
- package/out/translator/utils.js +13 -0
- package/out/translator/utils.js.map +1 -1
- package/package.json +2 -2
- package/sandbox/stdlib/nasl.browser.ts +2 -0
- package/sandbox/stdlib/nasl.ui.definition.ts +2220 -2218
- package/sandbox/stdlib/nasl.util.ts +20 -10
- package/sandbox-natural/stdlib/nasl.core.ts +6 -3
- package/sandbox-natural/stdlib/nasl.oql.ts +6 -0
- package/sandbox-natural/stdlib/nasl.util.ts +1 -1
- package/src/bak/translator.js +16 -17
- package/src/breakpoint/generator/BreakpointNode.ts +1 -0
- package/src/breakpoint/shared/constants.ts +2 -0
- package/src/breakpoint/shared/socket.ts +41 -17
- package/src/breakpoint/shared/utils.ts +43 -1
- package/src/breakpoint/store/core.ts +2 -2
- package/src/breakpoint/store/dock.ts +50 -0
- package/src/breakpoint/types/index.d.ts +1 -0
- package/src/concepts/AuthLogicForCallInterface__.ts +2 -1
- package/src/concepts/BinaryExpression__.ts +6 -6
- package/src/concepts/BindAttribute__.ts +5 -4
- package/src/concepts/CallConnector__.ts +19 -1
- package/src/concepts/CallFunction__.ts +40 -22
- package/src/concepts/CallLogic__.ts +39 -32
- package/src/concepts/Connection__.ts +1 -1
- package/src/concepts/ForEachStatement__.ts +17 -15
- package/src/concepts/IfStatement__.ts +30 -30
- package/src/concepts/Logic__.ts +13 -27
- package/src/concepts/MatchCase__.ts +15 -7
- package/src/concepts/MemberExpression__.ts +11 -14
- package/src/concepts/NewComposite__.ts +15 -83
- package/src/concepts/NewList__.ts +11 -9
- package/src/concepts/NewMap__.ts +12 -4
- package/src/concepts/New__.ts +1 -0
- package/src/concepts/StringInterpolation__.ts +2 -2
- package/src/concepts/SwitchCase__.ts +9 -5
- package/src/concepts/ViewElement__.ts +8 -22
- package/src/concepts/WhileStatement__.ts +7 -5
- package/src/concepts/basics/stdlib/nasl.browser.ts +19 -3
- package/src/concepts/basics/stdlib/nasl.util.ts +38 -19
- package/src/concepts/basics/stdlib/timeZone.ts +193 -0
- package/src/generator/genBundleFiles.ts +12 -4
- package/src/generator/genReleaseBody.ts +1 -1
- package/src/natural/genNaturalTS.ts +5 -5
- package/src/natural/transformTSCode.ts +18 -4
- package/src/server/createUiTs.ts +3 -0
- package/src/server/getLogics.ts +3 -1
- package/src/server/getMemberIdentifier.ts +15 -0
- package/src/server/naslServer.ts +126 -83
- package/src/service/creator/errHandles.js +10 -16
- package/src/service/storage/init.ts +10 -3
- package/src/service/storage/jsoner.ts +2 -2
- package/src/templator/genEditTableBlock.ts +24 -2
- package/src/templator/genTableBlock.ts +22 -1
- package/src/translator/types.ts +1 -0
- package/src/translator/utils.ts +15 -0
- package/test/concepts/call-logic/__snapshots__/toJS.spec.ts.snap +20 -20
- package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +1 -1
- package/test/concepts/member-expression/__snapshots__/toEmbeddedTS.spec.ts.snap +1 -1
- package/test/concepts/view-element/__snapshots__/toVue.spec.ts.snap +10 -10
|
@@ -0,0 +1,2647 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/natural/transformTSCode.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/natural</a> transformTSCode.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">2.27% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>9/396</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/311</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/81</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">2.41% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>9/373</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
921
|
+
<span class="cline-any cline-neutral"> </span>
|
|
922
|
+
<span class="cline-any cline-yes">1x</span>
|
|
923
|
+
<span class="cline-any cline-neutral"> </span>
|
|
924
|
+
<span class="cline-any cline-yes">1x</span>
|
|
925
|
+
<span class="cline-any cline-yes">1x</span>
|
|
926
|
+
<span class="cline-any cline-neutral"> </span>
|
|
927
|
+
<span class="cline-any cline-neutral"> </span>
|
|
928
|
+
<span class="cline-any cline-yes">1x</span>
|
|
929
|
+
<span class="cline-any cline-neutral"> </span>
|
|
930
|
+
<span class="cline-any cline-yes">1x</span>
|
|
931
|
+
<span class="cline-any cline-no"> </span>
|
|
932
|
+
<span class="cline-any cline-no"> </span>
|
|
933
|
+
<span class="cline-any cline-neutral"> </span>
|
|
934
|
+
<span class="cline-any cline-neutral"> </span>
|
|
935
|
+
<span class="cline-any cline-neutral"> </span>
|
|
936
|
+
<span class="cline-any cline-neutral"> </span>
|
|
937
|
+
<span class="cline-any cline-no"> </span>
|
|
938
|
+
<span class="cline-any cline-neutral"> </span>
|
|
939
|
+
<span class="cline-any cline-no"> </span>
|
|
940
|
+
<span class="cline-any cline-neutral"> </span>
|
|
941
|
+
<span class="cline-any cline-neutral"> </span>
|
|
942
|
+
<span class="cline-any cline-neutral"> </span>
|
|
943
|
+
<span class="cline-any cline-neutral"> </span>
|
|
944
|
+
<span class="cline-any cline-no"> </span>
|
|
945
|
+
<span class="cline-any cline-no"> </span>
|
|
946
|
+
<span class="cline-any cline-no"> </span>
|
|
947
|
+
<span class="cline-any cline-neutral"> </span>
|
|
948
|
+
<span class="cline-any cline-neutral"> </span>
|
|
949
|
+
<span class="cline-any cline-no"> </span>
|
|
950
|
+
<span class="cline-any cline-no"> </span>
|
|
951
|
+
<span class="cline-any cline-no"> </span>
|
|
952
|
+
<span class="cline-any cline-neutral"> </span>
|
|
953
|
+
<span class="cline-any cline-no"> </span>
|
|
954
|
+
<span class="cline-any cline-no"> </span>
|
|
955
|
+
<span class="cline-any cline-neutral"> </span>
|
|
956
|
+
<span class="cline-any cline-no"> </span>
|
|
957
|
+
<span class="cline-any cline-neutral"> </span>
|
|
958
|
+
<span class="cline-any cline-no"> </span>
|
|
959
|
+
<span class="cline-any cline-neutral"> </span>
|
|
960
|
+
<span class="cline-any cline-neutral"> </span>
|
|
961
|
+
<span class="cline-any cline-neutral"> </span>
|
|
962
|
+
<span class="cline-any cline-no"> </span>
|
|
963
|
+
<span class="cline-any cline-no"> </span>
|
|
964
|
+
<span class="cline-any cline-neutral"> </span>
|
|
965
|
+
<span class="cline-any cline-no"> </span>
|
|
966
|
+
<span class="cline-any cline-neutral"> </span>
|
|
967
|
+
<span class="cline-any cline-neutral"> </span>
|
|
968
|
+
<span class="cline-any cline-neutral"> </span>
|
|
969
|
+
<span class="cline-any cline-neutral"> </span>
|
|
970
|
+
<span class="cline-any cline-neutral"> </span>
|
|
971
|
+
<span class="cline-any cline-neutral"> </span>
|
|
972
|
+
<span class="cline-any cline-neutral"> </span>
|
|
973
|
+
<span class="cline-any cline-neutral"> </span>
|
|
974
|
+
<span class="cline-any cline-no"> </span>
|
|
975
|
+
<span class="cline-any cline-no"> </span>
|
|
976
|
+
<span class="cline-any cline-no"> </span>
|
|
977
|
+
<span class="cline-any cline-no"> </span>
|
|
978
|
+
<span class="cline-any cline-no"> </span>
|
|
979
|
+
<span class="cline-any cline-neutral"> </span>
|
|
980
|
+
<span class="cline-any cline-neutral"> </span>
|
|
981
|
+
<span class="cline-any cline-neutral"> </span>
|
|
982
|
+
<span class="cline-any cline-neutral"> </span>
|
|
983
|
+
<span class="cline-any cline-neutral"> </span>
|
|
984
|
+
<span class="cline-any cline-yes">1x</span>
|
|
985
|
+
<span class="cline-any cline-no"> </span>
|
|
986
|
+
<span class="cline-any cline-no"> </span>
|
|
987
|
+
<span class="cline-any cline-neutral"> </span>
|
|
988
|
+
<span class="cline-any cline-neutral"> </span>
|
|
989
|
+
<span class="cline-any cline-no"> </span>
|
|
990
|
+
<span class="cline-any cline-no"> </span>
|
|
991
|
+
<span class="cline-any cline-no"> </span>
|
|
992
|
+
<span class="cline-any cline-no"> </span>
|
|
993
|
+
<span class="cline-any cline-no"> </span>
|
|
994
|
+
<span class="cline-any cline-neutral"> </span>
|
|
995
|
+
<span class="cline-any cline-neutral"> </span>
|
|
996
|
+
<span class="cline-any cline-neutral"> </span>
|
|
997
|
+
<span class="cline-any cline-no"> </span>
|
|
998
|
+
<span class="cline-any cline-no"> </span>
|
|
999
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
+
<span class="cline-any cline-no"> </span>
|
|
1001
|
+
<span class="cline-any cline-no"> </span>
|
|
1002
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1003
|
+
<span class="cline-any cline-no"> </span>
|
|
1004
|
+
<span class="cline-any cline-no"> </span>
|
|
1005
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
+
<span class="cline-any cline-no"> </span>
|
|
1009
|
+
<span class="cline-any cline-no"> </span>
|
|
1010
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1011
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
+
<span class="cline-any cline-no"> </span>
|
|
1014
|
+
<span class="cline-any cline-no"> </span>
|
|
1015
|
+
<span class="cline-any cline-no"> </span>
|
|
1016
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
+
<span class="cline-any cline-no"> </span>
|
|
1018
|
+
<span class="cline-any cline-no"> </span>
|
|
1019
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1020
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1022
|
+
<span class="cline-any cline-no"> </span>
|
|
1023
|
+
<span class="cline-any cline-no"> </span>
|
|
1024
|
+
<span class="cline-any cline-no"> </span>
|
|
1025
|
+
<span class="cline-any cline-no"> </span>
|
|
1026
|
+
<span class="cline-any cline-no"> </span>
|
|
1027
|
+
<span class="cline-any cline-no"> </span>
|
|
1028
|
+
<span class="cline-any cline-no"> </span>
|
|
1029
|
+
<span class="cline-any cline-no"> </span>
|
|
1030
|
+
<span class="cline-any cline-no"> </span>
|
|
1031
|
+
<span class="cline-any cline-no"> </span>
|
|
1032
|
+
<span class="cline-any cline-no"> </span>
|
|
1033
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
+
<span class="cline-any cline-no"> </span>
|
|
1035
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
+
<span class="cline-any cline-no"> </span>
|
|
1037
|
+
<span class="cline-any cline-no"> </span>
|
|
1038
|
+
<span class="cline-any cline-no"> </span>
|
|
1039
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1043
|
+
<span class="cline-any cline-no"> </span>
|
|
1044
|
+
<span class="cline-any cline-no"> </span>
|
|
1045
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1046
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1050
|
+
<span class="cline-any cline-no"> </span>
|
|
1051
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
+
<span class="cline-any cline-no"> </span>
|
|
1053
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
+
<span class="cline-any cline-no"> </span>
|
|
1055
|
+
<span class="cline-any cline-no"> </span>
|
|
1056
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1057
|
+
<span class="cline-any cline-no"> </span>
|
|
1058
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1059
|
+
<span class="cline-any cline-no"> </span>
|
|
1060
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1064
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1065
|
+
<span class="cline-any cline-no"> </span>
|
|
1066
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1067
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1071
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
+
<span class="cline-any cline-no"> </span>
|
|
1073
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1074
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1075
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1077
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1079
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
+
<span class="cline-any cline-no"> </span>
|
|
1081
|
+
<span class="cline-any cline-no"> </span>
|
|
1082
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1083
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1084
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1085
|
+
<span class="cline-any cline-no"> </span>
|
|
1086
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1087
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1088
|
+
<span class="cline-any cline-no"> </span>
|
|
1089
|
+
<span class="cline-any cline-no"> </span>
|
|
1090
|
+
<span class="cline-any cline-no"> </span>
|
|
1091
|
+
<span class="cline-any cline-no"> </span>
|
|
1092
|
+
<span class="cline-any cline-no"> </span>
|
|
1093
|
+
<span class="cline-any cline-no"> </span>
|
|
1094
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1095
|
+
<span class="cline-any cline-no"> </span>
|
|
1096
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1097
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1098
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1100
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1102
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1103
|
+
<span class="cline-any cline-no"> </span>
|
|
1104
|
+
<span class="cline-any cline-no"> </span>
|
|
1105
|
+
<span class="cline-any cline-no"> </span>
|
|
1106
|
+
<span class="cline-any cline-no"> </span>
|
|
1107
|
+
<span class="cline-any cline-no"> </span>
|
|
1108
|
+
<span class="cline-any cline-no"> </span>
|
|
1109
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1110
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1111
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1112
|
+
<span class="cline-any cline-no"> </span>
|
|
1113
|
+
<span class="cline-any cline-no"> </span>
|
|
1114
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1115
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1116
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1117
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1118
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1119
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1120
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1121
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1122
|
+
<span class="cline-any cline-no"> </span>
|
|
1123
|
+
<span class="cline-any cline-no"> </span>
|
|
1124
|
+
<span class="cline-any cline-no"> </span>
|
|
1125
|
+
<span class="cline-any cline-no"> </span>
|
|
1126
|
+
<span class="cline-any cline-no"> </span>
|
|
1127
|
+
<span class="cline-any cline-no"> </span>
|
|
1128
|
+
<span class="cline-any cline-no"> </span>
|
|
1129
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1130
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1131
|
+
<span class="cline-any cline-no"> </span>
|
|
1132
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1133
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1134
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1135
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1136
|
+
<span class="cline-any cline-no"> </span>
|
|
1137
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1138
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1139
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1140
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1141
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1142
|
+
<span class="cline-any cline-no"> </span>
|
|
1143
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1145
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1146
|
+
<span class="cline-any cline-no"> </span>
|
|
1147
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1148
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1150
|
+
<span class="cline-any cline-no"> </span>
|
|
1151
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1152
|
+
<span class="cline-any cline-no"> </span>
|
|
1153
|
+
<span class="cline-any cline-no"> </span>
|
|
1154
|
+
<span class="cline-any cline-no"> </span>
|
|
1155
|
+
<span class="cline-any cline-no"> </span>
|
|
1156
|
+
<span class="cline-any cline-no"> </span>
|
|
1157
|
+
<span class="cline-any cline-no"> </span>
|
|
1158
|
+
<span class="cline-any cline-no"> </span>
|
|
1159
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1161
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1162
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1163
|
+
<span class="cline-any cline-no"> </span>
|
|
1164
|
+
<span class="cline-any cline-no"> </span>
|
|
1165
|
+
<span class="cline-any cline-no"> </span>
|
|
1166
|
+
<span class="cline-any cline-no"> </span>
|
|
1167
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1168
|
+
<span class="cline-any cline-no"> </span>
|
|
1169
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1170
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1171
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1172
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1173
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
+
<span class="cline-any cline-no"> </span>
|
|
1175
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1177
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1178
|
+
<span class="cline-any cline-no"> </span>
|
|
1179
|
+
<span class="cline-any cline-no"> </span>
|
|
1180
|
+
<span class="cline-any cline-no"> </span>
|
|
1181
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1182
|
+
<span class="cline-any cline-no"> </span>
|
|
1183
|
+
<span class="cline-any cline-no"> </span>
|
|
1184
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1185
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1186
|
+
<span class="cline-any cline-no"> </span>
|
|
1187
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1189
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1190
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1191
|
+
<span class="cline-any cline-no"> </span>
|
|
1192
|
+
<span class="cline-any cline-no"> </span>
|
|
1193
|
+
<span class="cline-any cline-no"> </span>
|
|
1194
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1195
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1196
|
+
<span class="cline-any cline-no"> </span>
|
|
1197
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1198
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1199
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1200
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1201
|
+
<span class="cline-any cline-no"> </span>
|
|
1202
|
+
<span class="cline-any cline-no"> </span>
|
|
1203
|
+
<span class="cline-any cline-no"> </span>
|
|
1204
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1205
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1206
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1207
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1208
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1209
|
+
<span class="cline-any cline-no"> </span>
|
|
1210
|
+
<span class="cline-any cline-no"> </span>
|
|
1211
|
+
<span class="cline-any cline-no"> </span>
|
|
1212
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1213
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1215
|
+
<span class="cline-any cline-no"> </span>
|
|
1216
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1217
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1218
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1219
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1220
|
+
<span class="cline-any cline-no"> </span>
|
|
1221
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1222
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1223
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1224
|
+
<span class="cline-any cline-no"> </span>
|
|
1225
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1226
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1227
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1229
|
+
<span class="cline-any cline-no"> </span>
|
|
1230
|
+
<span class="cline-any cline-no"> </span>
|
|
1231
|
+
<span class="cline-any cline-no"> </span>
|
|
1232
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1233
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1234
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1235
|
+
<span class="cline-any cline-no"> </span>
|
|
1236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1237
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1238
|
+
<span class="cline-any cline-no"> </span>
|
|
1239
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1240
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1241
|
+
<span class="cline-any cline-no"> </span>
|
|
1242
|
+
<span class="cline-any cline-no"> </span>
|
|
1243
|
+
<span class="cline-any cline-no"> </span>
|
|
1244
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
+
<span class="cline-any cline-no"> </span>
|
|
1246
|
+
<span class="cline-any cline-no"> </span>
|
|
1247
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1248
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1249
|
+
<span class="cline-any cline-no"> </span>
|
|
1250
|
+
<span class="cline-any cline-no"> </span>
|
|
1251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1252
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1253
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1254
|
+
<span class="cline-any cline-no"> </span>
|
|
1255
|
+
<span class="cline-any cline-no"> </span>
|
|
1256
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1257
|
+
<span class="cline-any cline-no"> </span>
|
|
1258
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1259
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1260
|
+
<span class="cline-any cline-no"> </span>
|
|
1261
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1264
|
+
<span class="cline-any cline-no"> </span>
|
|
1265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1267
|
+
<span class="cline-any cline-no"> </span>
|
|
1268
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1269
|
+
<span class="cline-any cline-no"> </span>
|
|
1270
|
+
<span class="cline-any cline-no"> </span>
|
|
1271
|
+
<span class="cline-any cline-no"> </span>
|
|
1272
|
+
<span class="cline-any cline-no"> </span>
|
|
1273
|
+
<span class="cline-any cline-no"> </span>
|
|
1274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1275
|
+
<span class="cline-any cline-no"> </span>
|
|
1276
|
+
<span class="cline-any cline-no"> </span>
|
|
1277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1278
|
+
<span class="cline-any cline-no"> </span>
|
|
1279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1283
|
+
<span class="cline-any cline-no"> </span>
|
|
1284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1285
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1292
|
+
<span class="cline-any cline-no"> </span>
|
|
1293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1296
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1297
|
+
<span class="cline-any cline-no"> </span>
|
|
1298
|
+
<span class="cline-any cline-no"> </span>
|
|
1299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1301
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1303
|
+
<span class="cline-any cline-no"> </span>
|
|
1304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1308
|
+
<span class="cline-any cline-no"> </span>
|
|
1309
|
+
<span class="cline-any cline-no"> </span>
|
|
1310
|
+
<span class="cline-any cline-no"> </span>
|
|
1311
|
+
<span class="cline-any cline-no"> </span>
|
|
1312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1317
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1318
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1319
|
+
<span class="cline-any cline-no"> </span>
|
|
1320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1321
|
+
<span class="cline-any cline-no"> </span>
|
|
1322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
+
<span class="cline-any cline-no"> </span>
|
|
1324
|
+
<span class="cline-any cline-no"> </span>
|
|
1325
|
+
<span class="cline-any cline-no"> </span>
|
|
1326
|
+
<span class="cline-any cline-no"> </span>
|
|
1327
|
+
<span class="cline-any cline-no"> </span>
|
|
1328
|
+
<span class="cline-any cline-no"> </span>
|
|
1329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1336
|
+
<span class="cline-any cline-no"> </span>
|
|
1337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
+
<span class="cline-any cline-no"> </span>
|
|
1339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1340
|
+
<span class="cline-any cline-no"> </span>
|
|
1341
|
+
<span class="cline-any cline-no"> </span>
|
|
1342
|
+
<span class="cline-any cline-no"> </span>
|
|
1343
|
+
<span class="cline-any cline-no"> </span>
|
|
1344
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
+
<span class="cline-any cline-no"> </span>
|
|
1348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1351
|
+
<span class="cline-any cline-no"> </span>
|
|
1352
|
+
<span class="cline-any cline-no"> </span>
|
|
1353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1355
|
+
<span class="cline-any cline-no"> </span>
|
|
1356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1359
|
+
<span class="cline-any cline-no"> </span>
|
|
1360
|
+
<span class="cline-any cline-no"> </span>
|
|
1361
|
+
<span class="cline-any cline-no"> </span>
|
|
1362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1364
|
+
<span class="cline-any cline-no"> </span>
|
|
1365
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1368
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1369
|
+
<span class="cline-any cline-no"> </span>
|
|
1370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1371
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1372
|
+
<span class="cline-any cline-no"> </span>
|
|
1373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1375
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1376
|
+
<span class="cline-any cline-no"> </span>
|
|
1377
|
+
<span class="cline-any cline-no"> </span>
|
|
1378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
+
<span class="cline-any cline-no"> </span>
|
|
1381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1386
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1387
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1391
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1396
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1397
|
+
<span class="cline-any cline-no"> </span>
|
|
1398
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1399
|
+
<span class="cline-any cline-no"> </span>
|
|
1400
|
+
<span class="cline-any cline-no"> </span>
|
|
1401
|
+
<span class="cline-any cline-no"> </span>
|
|
1402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1403
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1404
|
+
<span class="cline-any cline-no"> </span>
|
|
1405
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1406
|
+
<span class="cline-any cline-no"> </span>
|
|
1407
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1408
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1409
|
+
<span class="cline-any cline-no"> </span>
|
|
1410
|
+
<span class="cline-any cline-no"> </span>
|
|
1411
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1412
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1413
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1414
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1415
|
+
<span class="cline-any cline-no"> </span>
|
|
1416
|
+
<span class="cline-any cline-no"> </span>
|
|
1417
|
+
<span class="cline-any cline-no"> </span>
|
|
1418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1419
|
+
<span class="cline-any cline-no"> </span>
|
|
1420
|
+
<span class="cline-any cline-no"> </span>
|
|
1421
|
+
<span class="cline-any cline-no"> </span>
|
|
1422
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1423
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1424
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1429
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1430
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1432
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1433
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1434
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1435
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1436
|
+
<span class="cline-any cline-no"> </span>
|
|
1437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1438
|
+
<span class="cline-any cline-no"> </span>
|
|
1439
|
+
<span class="cline-any cline-no"> </span>
|
|
1440
|
+
<span class="cline-any cline-no"> </span>
|
|
1441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1442
|
+
<span class="cline-any cline-no"> </span>
|
|
1443
|
+
<span class="cline-any cline-no"> </span>
|
|
1444
|
+
<span class="cline-any cline-no"> </span>
|
|
1445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
+
<span class="cline-any cline-no"> </span>
|
|
1448
|
+
<span class="cline-any cline-no"> </span>
|
|
1449
|
+
<span class="cline-any cline-no"> </span>
|
|
1450
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1451
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1452
|
+
<span class="cline-any cline-no"> </span>
|
|
1453
|
+
<span class="cline-any cline-no"> </span>
|
|
1454
|
+
<span class="cline-any cline-no"> </span>
|
|
1455
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1456
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1457
|
+
<span class="cline-any cline-no"> </span>
|
|
1458
|
+
<span class="cline-any cline-no"> </span>
|
|
1459
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
+
<span class="cline-any cline-no"> </span>
|
|
1461
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1462
|
+
<span class="cline-any cline-no"> </span>
|
|
1463
|
+
<span class="cline-any cline-no"> </span>
|
|
1464
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1465
|
+
<span class="cline-any cline-no"> </span>
|
|
1466
|
+
<span class="cline-any cline-no"> </span>
|
|
1467
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1468
|
+
<span class="cline-any cline-no"> </span>
|
|
1469
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1470
|
+
<span class="cline-any cline-no"> </span>
|
|
1471
|
+
<span class="cline-any cline-no"> </span>
|
|
1472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1473
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1474
|
+
<span class="cline-any cline-no"> </span>
|
|
1475
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1476
|
+
<span class="cline-any cline-no"> </span>
|
|
1477
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1479
|
+
<span class="cline-any cline-no"> </span>
|
|
1480
|
+
<span class="cline-any cline-no"> </span>
|
|
1481
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1483
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1485
|
+
<span class="cline-any cline-no"> </span>
|
|
1486
|
+
<span class="cline-any cline-no"> </span>
|
|
1487
|
+
<span class="cline-any cline-no"> </span>
|
|
1488
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1489
|
+
<span class="cline-any cline-no"> </span>
|
|
1490
|
+
<span class="cline-any cline-no"> </span>
|
|
1491
|
+
<span class="cline-any cline-no"> </span>
|
|
1492
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1493
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1494
|
+
<span class="cline-any cline-no"> </span>
|
|
1495
|
+
<span class="cline-any cline-no"> </span>
|
|
1496
|
+
<span class="cline-any cline-no"> </span>
|
|
1497
|
+
<span class="cline-any cline-no"> </span>
|
|
1498
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1503
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1504
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1506
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1507
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1508
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1510
|
+
<span class="cline-any cline-no"> </span>
|
|
1511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1514
|
+
<span class="cline-any cline-no"> </span>
|
|
1515
|
+
<span class="cline-any cline-no"> </span>
|
|
1516
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1517
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1518
|
+
<span class="cline-any cline-no"> </span>
|
|
1519
|
+
<span class="cline-any cline-no"> </span>
|
|
1520
|
+
<span class="cline-any cline-no"> </span>
|
|
1521
|
+
<span class="cline-any cline-no"> </span>
|
|
1522
|
+
<span class="cline-any cline-no"> </span>
|
|
1523
|
+
<span class="cline-any cline-no"> </span>
|
|
1524
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1525
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1526
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1527
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1528
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1529
|
+
<span class="cline-any cline-no"> </span>
|
|
1530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1531
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1532
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1533
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1534
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1535
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1536
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1537
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1538
|
+
<span class="cline-any cline-no"> </span>
|
|
1539
|
+
<span class="cline-any cline-no"> </span>
|
|
1540
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1541
|
+
<span class="cline-any cline-no"> </span>
|
|
1542
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1543
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1544
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1545
|
+
<span class="cline-any cline-no"> </span>
|
|
1546
|
+
<span class="cline-any cline-no"> </span>
|
|
1547
|
+
<span class="cline-any cline-no"> </span>
|
|
1548
|
+
<span class="cline-any cline-no"> </span>
|
|
1549
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1550
|
+
<span class="cline-any cline-no"> </span>
|
|
1551
|
+
<span class="cline-any cline-no"> </span>
|
|
1552
|
+
<span class="cline-any cline-no"> </span>
|
|
1553
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1554
|
+
<span class="cline-any cline-no"> </span>
|
|
1555
|
+
<span class="cline-any cline-no"> </span>
|
|
1556
|
+
<span class="cline-any cline-no"> </span>
|
|
1557
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1558
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1559
|
+
<span class="cline-any cline-no"> </span>
|
|
1560
|
+
<span class="cline-any cline-no"> </span>
|
|
1561
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1562
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1563
|
+
<span class="cline-any cline-no"> </span>
|
|
1564
|
+
<span class="cline-any cline-no"> </span>
|
|
1565
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1566
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1567
|
+
<span class="cline-any cline-no"> </span>
|
|
1568
|
+
<span class="cline-any cline-no"> </span>
|
|
1569
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1570
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1571
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1572
|
+
<span class="cline-any cline-no"> </span>
|
|
1573
|
+
<span class="cline-any cline-no"> </span>
|
|
1574
|
+
<span class="cline-any cline-no"> </span>
|
|
1575
|
+
<span class="cline-any cline-no"> </span>
|
|
1576
|
+
<span class="cline-any cline-no"> </span>
|
|
1577
|
+
<span class="cline-any cline-no"> </span>
|
|
1578
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1579
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1580
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1581
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1582
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1583
|
+
<span class="cline-any cline-no"> </span>
|
|
1584
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1585
|
+
<span class="cline-any cline-no"> </span>
|
|
1586
|
+
<span class="cline-any cline-no"> </span>
|
|
1587
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1588
|
+
<span class="cline-any cline-no"> </span>
|
|
1589
|
+
<span class="cline-any cline-no"> </span>
|
|
1590
|
+
<span class="cline-any cline-no"> </span>
|
|
1591
|
+
<span class="cline-any cline-no"> </span>
|
|
1592
|
+
<span class="cline-any cline-no"> </span>
|
|
1593
|
+
<span class="cline-any cline-no"> </span>
|
|
1594
|
+
<span class="cline-any cline-no"> </span>
|
|
1595
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1596
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1597
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1598
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1599
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1600
|
+
<span class="cline-any cline-no"> </span>
|
|
1601
|
+
<span class="cline-any cline-no"> </span>
|
|
1602
|
+
<span class="cline-any cline-no"> </span>
|
|
1603
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1604
|
+
<span class="cline-any cline-no"> </span>
|
|
1605
|
+
<span class="cline-any cline-no"> </span>
|
|
1606
|
+
<span class="cline-any cline-no"> </span>
|
|
1607
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1608
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1609
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1610
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1611
|
+
<span class="cline-any cline-no"> </span>
|
|
1612
|
+
<span class="cline-any cline-no"> </span>
|
|
1613
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1614
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1615
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1616
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1617
|
+
<span class="cline-any cline-no"> </span>
|
|
1618
|
+
<span class="cline-any cline-no"> </span>
|
|
1619
|
+
<span class="cline-any cline-no"> </span>
|
|
1620
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1621
|
+
<span class="cline-any cline-no"> </span>
|
|
1622
|
+
<span class="cline-any cline-no"> </span>
|
|
1623
|
+
<span class="cline-any cline-no"> </span>
|
|
1624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1625
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1626
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1627
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1628
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1629
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1630
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1631
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1632
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1633
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1634
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1635
|
+
<span class="cline-any cline-no"> </span>
|
|
1636
|
+
<span class="cline-any cline-no"> </span>
|
|
1637
|
+
<span class="cline-any cline-no"> </span>
|
|
1638
|
+
<span class="cline-any cline-no"> </span>
|
|
1639
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1640
|
+
<span class="cline-any cline-no"> </span>
|
|
1641
|
+
<span class="cline-any cline-no"> </span>
|
|
1642
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1643
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1644
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1645
|
+
<span class="cline-any cline-no"> </span>
|
|
1646
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1647
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1648
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1649
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1650
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1651
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1652
|
+
<span class="cline-any cline-no"> </span>
|
|
1653
|
+
<span class="cline-any cline-no"> </span>
|
|
1654
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1655
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1656
|
+
<span class="cline-any cline-no"> </span>
|
|
1657
|
+
<span class="cline-any cline-no"> </span>
|
|
1658
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1659
|
+
<span class="cline-any cline-no"> </span>
|
|
1660
|
+
<span class="cline-any cline-no"> </span>
|
|
1661
|
+
<span class="cline-any cline-no"> </span>
|
|
1662
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1663
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1664
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1665
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1666
|
+
<span class="cline-any cline-no"> </span>
|
|
1667
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1668
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1669
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1670
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1671
|
+
<span class="cline-any cline-no"> </span>
|
|
1672
|
+
<span class="cline-any cline-no"> </span>
|
|
1673
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1674
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1675
|
+
<span class="cline-any cline-no"> </span>
|
|
1676
|
+
<span class="cline-any cline-no"> </span>
|
|
1677
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1678
|
+
<span class="cline-any cline-no"> </span>
|
|
1679
|
+
<span class="cline-any cline-no"> </span>
|
|
1680
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1681
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1682
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1683
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1684
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1685
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1686
|
+
<span class="cline-any cline-no"> </span>
|
|
1687
|
+
<span class="cline-any cline-no"> </span>
|
|
1688
|
+
<span class="cline-any cline-no"> </span>
|
|
1689
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1690
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1691
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1692
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1693
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1694
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1695
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1696
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1697
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1698
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1699
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1700
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1701
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1702
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1703
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1704
|
+
<span class="cline-any cline-no"> </span>
|
|
1705
|
+
<span class="cline-any cline-no"> </span>
|
|
1706
|
+
<span class="cline-any cline-no"> </span>
|
|
1707
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1708
|
+
<span class="cline-any cline-no"> </span>
|
|
1709
|
+
<span class="cline-any cline-no"> </span>
|
|
1710
|
+
<span class="cline-any cline-no"> </span>
|
|
1711
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1712
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1713
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1714
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1715
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1716
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1717
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1718
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1719
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1720
|
+
<span class="cline-any cline-no"> </span>
|
|
1721
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1722
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1723
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1724
|
+
<span class="cline-any cline-no"> </span>
|
|
1725
|
+
<span class="cline-any cline-no"> </span>
|
|
1726
|
+
<span class="cline-any cline-no"> </span>
|
|
1727
|
+
<span class="cline-any cline-no"> </span>
|
|
1728
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1729
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1730
|
+
<span class="cline-any cline-no"> </span>
|
|
1731
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1732
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1733
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1734
|
+
<span class="cline-any cline-no"> </span>
|
|
1735
|
+
<span class="cline-any cline-no"> </span>
|
|
1736
|
+
<span class="cline-any cline-no"> </span>
|
|
1737
|
+
<span class="cline-any cline-no"> </span>
|
|
1738
|
+
<span class="cline-any cline-no"> </span>
|
|
1739
|
+
<span class="cline-any cline-no"> </span>
|
|
1740
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1741
|
+
<span class="cline-any cline-no"> </span>
|
|
1742
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1743
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1744
|
+
<span class="cline-any cline-no"> </span>
|
|
1745
|
+
<span class="cline-any cline-no"> </span>
|
|
1746
|
+
<span class="cline-any cline-no"> </span>
|
|
1747
|
+
<span class="cline-any cline-no"> </span>
|
|
1748
|
+
<span class="cline-any cline-no"> </span>
|
|
1749
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1750
|
+
<span class="cline-any cline-no"> </span>
|
|
1751
|
+
<span class="cline-any cline-no"> </span>
|
|
1752
|
+
<span class="cline-any cline-no"> </span>
|
|
1753
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1754
|
+
<span class="cline-any cline-no"> </span>
|
|
1755
|
+
<span class="cline-any cline-no"> </span>
|
|
1756
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1757
|
+
<span class="cline-any cline-no"> </span>
|
|
1758
|
+
<span class="cline-any cline-no"> </span>
|
|
1759
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1760
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1761
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1762
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1763
|
+
<span class="cline-any cline-no"> </span>
|
|
1764
|
+
<span class="cline-any cline-no"> </span>
|
|
1765
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1766
|
+
<span class="cline-any cline-no"> </span>
|
|
1767
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
+
<span class="cline-any cline-no"> </span>
|
|
1769
|
+
<span class="cline-any cline-no"> </span>
|
|
1770
|
+
<span class="cline-any cline-no"> </span>
|
|
1771
|
+
<span class="cline-any cline-no"> </span>
|
|
1772
|
+
<span class="cline-any cline-no"> </span>
|
|
1773
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1774
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/* eslint-disable global-require */
|
|
1775
|
+
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
1776
|
+
import * as babel from '@babel/core';
|
|
1777
|
+
import * as babelTypes from '@babel/types';
|
|
1778
|
+
import generate from '@babel/generator';
|
|
1779
|
+
import * as naslTypes from '../concepts';
|
|
1780
|
+
import { traverse } from '../utils';
|
|
1781
|
+
|
|
1782
|
+
const debug = false;
|
|
1783
|
+
|
|
1784
|
+
export function <span class="fstat-no" title="function not covered" >tryParseTS(</span>tsCode: string) {
|
|
1785
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1786
|
+
const root = <span class="cstat-no" title="statement not covered" >babel.parseSync(tsCode, {</span>
|
|
1787
|
+
filename: 'result.ts',
|
|
1788
|
+
presets: [require('@babel/preset-typescript')],
|
|
1789
|
+
}) as babelTypes.File;
|
|
1790
|
+
// console.log((root as any).program.body[0].body.body.map((item) => item.trailingComments));
|
|
1791
|
+
<span class="cstat-no" title="statement not covered" > return root;</span>
|
|
1792
|
+
} catch (e) {
|
|
1793
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
1794
|
+
}
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1797
|
+
function <span class="fstat-no" title="function not covered" >flatMemberExpression(</span>node: babelTypes.Node): Array<babelTypes.Node> {
|
|
1798
|
+
<span class="cstat-no" title="statement not covered" > if (node.type === 'MemberExpression')</span>
|
|
1799
|
+
<span class="cstat-no" title="statement not covered" > return [...flatMemberExpression(node.object), node.property];</span>
|
|
1800
|
+
<span class="cstat-no" title="statement not covered" > return [node];</span>
|
|
1801
|
+
}
|
|
1802
|
+
function <span class="fstat-no" title="function not covered" >flatMatchPatternsExpression(</span>node: any): Array<babelTypes.Node> {
|
|
1803
|
+
<span class="cstat-no" title="statement not covered" > if (node.concept === 'BinaryExpression') {</span>
|
|
1804
|
+
<span class="cstat-no" title="statement not covered" > if (node.operator === '||') {</span>
|
|
1805
|
+
<span class="cstat-no" title="statement not covered" > return [...flatMatchPatternsExpression(node.left), ...flatMatchPatternsExpression(node.right)];</span>
|
|
1806
|
+
}
|
|
1807
|
+
<span class="cstat-no" title="statement not covered" > if (node.operator === '==') {</span>
|
|
1808
|
+
<span class="cstat-no" title="statement not covered" > return [node.right];</span>
|
|
1809
|
+
}
|
|
1810
|
+
<span class="cstat-no" title="statement not covered" > return [node];</span>
|
|
1811
|
+
}
|
|
1812
|
+
<span class="cstat-no" title="statement not covered" > return [node];</span>
|
|
1813
|
+
}
|
|
1814
|
+
|
|
1815
|
+
function <span class="fstat-no" title="function not covered" >flatIfStatement(</span>node: any): Array<babelTypes.Node> {
|
|
1816
|
+
<span class="cstat-no" title="statement not covered" > if (node.alternate.type === 'IfStatement') {</span>
|
|
1817
|
+
<span class="cstat-no" title="statement not covered" > return [...flatIfStatement(node.alternate), node];</span>
|
|
1818
|
+
}
|
|
1819
|
+
<span class="cstat-no" title="statement not covered" > return [node];</span>
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
/**
|
|
1823
|
+
* 这个函数是修复 AI 翻译出错的情况,与正常的 transform 做个区分
|
|
1824
|
+
* @param node
|
|
1825
|
+
* @returns
|
|
1826
|
+
*/
|
|
1827
|
+
function <span class="fstat-no" title="function not covered" >fixLogicNode(</span>node: babelTypes.Node): void {
|
|
1828
|
+
<span class="cstat-no" title="statement not covered" > if (node?.type === 'CallExpression') {</span>
|
|
1829
|
+
const calleeName = <span class="cstat-no" title="statement not covered" >generate(node.callee as any).code;</span>
|
|
1830
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName === 'nasl.util.ForEach') {</span>
|
|
1831
|
+
const callee = <span class="cstat-no" title="statement not covered" >flatMemberExpression(node.callee);</span>
|
|
1832
|
+
<span class="cstat-no" title="statement not covered" > node.callee = callee[2] as babelTypes.Identifier;</span>
|
|
1833
|
+
}
|
|
1834
|
+
}
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
export function <span class="fstat-no" title="function not covered" >transformTSCode(</span>tsCode: string, contextLogicName: string, type?: string) {
|
|
1839
|
+
const logic = <span class="cstat-no" title="statement not covered" >new naslTypes.Logic();</span>
|
|
1840
|
+
<span class="cstat-no" title="statement not covered" > logic.body = [];</span>
|
|
1841
|
+
|
|
1842
|
+
function <span class="fstat-no" title="function not covered" >transformTypeAnnotation(</span>node: babelTypes.TSType): naslTypes.TypeAnnotation {
|
|
1843
|
+
<span class="cstat-no" title="statement not covered" > if (node.type === 'TSTypeReference') {</span>
|
|
1844
|
+
const typeName = (<span class="cstat-no" title="statement not covered" >node.typeName as babelTypes.Identifier).name;</span>
|
|
1845
|
+
const primitiveType = <span class="cstat-no" title="statement not covered" >naslTypes.primitiveTypeList.find(<span class="fstat-no" title="function not covered" >(t</span>a) => <span class="cstat-no" title="statement not covered" >ta.typeName === typeName)</span>;</span>
|
|
1846
|
+
<span class="cstat-no" title="statement not covered" > if ((node as any)?.typeNamespace) {</span>
|
|
1847
|
+
<span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createReference(typeName, {</span>
|
|
1848
|
+
typeNamespace: (node as any).typeNamespace,
|
|
1849
|
+
});
|
|
1850
|
+
}
|
|
1851
|
+
<span class="cstat-no" title="statement not covered" > if (typeName === 'Integer') {</span>
|
|
1852
|
+
<span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive('Long');</span>
|
|
1853
|
+
}
|
|
1854
|
+
<span class="cstat-no" title="statement not covered" > if (primitiveType) {</span>
|
|
1855
|
+
<span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive(typeName);</span>
|
|
1856
|
+
}
|
|
1857
|
+
<span class="cstat-no" title="statement not covered" > if (['List', 'Map', 'Current'].includes(typeName) && node.typeParameters) {</span>
|
|
1858
|
+
<span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createGeneric(typeName, {</span>
|
|
1859
|
+
typeArguments: node.typeParameters.params.map(transformTypeAnnotation),
|
|
1860
|
+
});
|
|
1861
|
+
}
|
|
1862
|
+
<span class="cstat-no" title="statement not covered" > if (!node.typeParameters) {</span>
|
|
1863
|
+
<span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createReference(typeName, {</span>
|
|
1864
|
+
typeNamespace: 'app.dataSources.defaultDS',
|
|
1865
|
+
});
|
|
1866
|
+
}
|
|
1867
|
+
<span class="cstat-no" title="statement not covered" > console.error(node);</span>
|
|
1868
|
+
<span class="cstat-no" title="statement not covered" > if (debug) {</span>
|
|
1869
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
|
|
1870
|
+
}
|
|
1871
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSTypeLiteral') {</span>
|
|
1872
|
+
<span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createTypeAnonymousStructure(node.members.map(<span class="fstat-no" title="function not covered" >(m</span>ember: babelTypes.TSPropertySignature) => <span class="cstat-no" title="statement not covered" >new naslTypes.StructureProperty({</span></span>
|
|
1873
|
+
name: (member.key as babelTypes.Identifier).name,
|
|
1874
|
+
typeAnnotation: transformTypeAnnotation(member.typeAnnotation.typeAnnotation),
|
|
1875
|
+
})));
|
|
1876
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSBooleanKeyword') {</span>
|
|
1877
|
+
<span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive('Boolean');</span>
|
|
1878
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSStringKeyword') {</span>
|
|
1879
|
+
<span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive('String');</span>
|
|
1880
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSNumberKeyword') {</span>
|
|
1881
|
+
<span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive('Double');</span>
|
|
1882
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSUnionType') {</span>
|
|
1883
|
+
const union = <span class="cstat-no" title="statement not covered" >naslTypes.TypeAnnotation.createPrimitive('Union');</span>
|
|
1884
|
+
<span class="cstat-no" title="statement not covered" > union.typeArguments = [];</span>
|
|
1885
|
+
<span class="cstat-no" title="statement not covered" > node.types.forEach(<span class="fstat-no" title="function not covered" >(c</span>urType) => {</span>
|
|
1886
|
+
<span class="cstat-no" title="statement not covered" > union.typeArguments.push(transformTypeAnnotation(curType));</span>
|
|
1887
|
+
});
|
|
1888
|
+
<span class="cstat-no" title="statement not covered" > return union;</span>
|
|
1889
|
+
} else {
|
|
1890
|
+
<span class="cstat-no" title="statement not covered" > console.error(node);</span>
|
|
1891
|
+
<span class="cstat-no" title="statement not covered" > if (debug) {</span>
|
|
1892
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
|
|
1893
|
+
}
|
|
1894
|
+
}
|
|
1895
|
+
}
|
|
1896
|
+
function <span class="fstat-no" title="function not covered" >transformParam(</span>node: babelTypes.Identifier): naslTypes.Param {
|
|
1897
|
+
const typeAnnotation = (<span class="cstat-no" title="statement not covered" >node.typeAnnotation as babelTypes.TSTypeAnnotation)?.typeAnnotation;</span>
|
|
1898
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.Param({</span>
|
|
1899
|
+
name: node.name,
|
|
1900
|
+
typeAnnotation: typeAnnotation ? transformTypeAnnotation(typeAnnotation) : null,
|
|
1901
|
+
});
|
|
1902
|
+
}
|
|
1903
|
+
function <span class="fstat-no" title="function not covered" >pushElseIf(</span>ifNode: babelTypes.IfStatement, switchStatement: naslTypes.SwitchStatement) {
|
|
1904
|
+
<span class="cstat-no" title="statement not covered" > switchStatement.cases.push(new naslTypes.SwitchCase({</span>
|
|
1905
|
+
test: transformLogicNode(ifNode.test),
|
|
1906
|
+
consequent: !ifNode.consequent ? [] : (ifNode.consequent as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >!!item)</span>,
|
|
1907
|
+
}));
|
|
1908
|
+
<span class="cstat-no" title="statement not covered" > if (ifNode.alternate && ifNode.alternate.type === 'IfStatement') {</span>
|
|
1909
|
+
<span class="cstat-no" title="statement not covered" > pushElseIf(ifNode.alternate, switchStatement);</span>
|
|
1910
|
+
} else {
|
|
1911
|
+
<span class="cstat-no" title="statement not covered" > switchStatement.cases.push(new naslTypes.SwitchCase({</span>
|
|
1912
|
+
test: undefined,
|
|
1913
|
+
consequent: !ifNode?.alternate ? [] : (ifNode?.alternate as babelTypes.BlockStatement)?.body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >!!item)</span>,
|
|
1914
|
+
}));
|
|
1915
|
+
}
|
|
1916
|
+
}
|
|
1917
|
+
|
|
1918
|
+
function <span class="fstat-no" title="function not covered" >handleBinaryExpression(</span>calleeName: String, argument: any) {
|
|
1919
|
+
const map: Record<'plus' | 'minus' | 'multiply' | 'divide' | 'remainder', '+' | '-' | '*' | '/' | '%'> = <span class="cstat-no" title="statement not covered" >{</span>
|
|
1920
|
+
plus: '+',
|
|
1921
|
+
minus: '-',
|
|
1922
|
+
multiply: '*',
|
|
1923
|
+
divide: '/',
|
|
1924
|
+
remainder: '%',
|
|
1925
|
+
};
|
|
1926
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.BinaryExpression({</span>
|
|
1927
|
+
operator: map?.[calleeName as keyof typeof map],
|
|
1928
|
+
left: transformLogicNode(argument?.[0]),
|
|
1929
|
+
right: transformLogicNode(argument?.[1]),
|
|
1930
|
+
});
|
|
1931
|
+
}
|
|
1932
|
+
|
|
1933
|
+
function <span class="fstat-no" title="function not covered" >handleNewExpression(</span>calleeName: String, node: any) {
|
|
1934
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName === 'NewList') {</span>
|
|
1935
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.NewList({</span>
|
|
1936
|
+
typeAnnotation: naslTypes.TypeAnnotation.createGeneric('List', {
|
|
1937
|
+
typeArguments: node?.typeParameters?.params.map(transformTypeAnnotation),
|
|
1938
|
+
}),
|
|
1939
|
+
items: node?.arguments?.[0]?.elements?.map(<span class="fstat-no" title="function not covered" >(a</span>rg: any) => <span class="cstat-no" title="statement not covered" >transformLogicNode(arg))</span>,
|
|
1940
|
+
});
|
|
1941
|
+
}
|
|
1942
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName === 'NewMap') {</span>
|
|
1943
|
+
const keys: any = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1944
|
+
const values: any = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1945
|
+
<span class="cstat-no" title="statement not covered" > node?.arguments?.[0]?.properties.forEach(<span class="fstat-no" title="function not covered" >(a</span>rg: any) => {</span>
|
|
1946
|
+
<span class="cstat-no" title="statement not covered" > keys.push(transformLogicNode(arg.key));</span>
|
|
1947
|
+
<span class="cstat-no" title="statement not covered" > values.push(transformLogicNode(arg.value));</span>
|
|
1948
|
+
});
|
|
1949
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.NewMap({</span>
|
|
1950
|
+
typeAnnotation: naslTypes.TypeAnnotation.createGeneric('Map', {
|
|
1951
|
+
typeArguments: node?.typeParameters?.params.map(transformTypeAnnotation),
|
|
1952
|
+
}),
|
|
1953
|
+
keys,
|
|
1954
|
+
values,
|
|
1955
|
+
});
|
|
1956
|
+
}
|
|
1957
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName === 'NewEntity') {</span>
|
|
1958
|
+
const properties: any = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1959
|
+
const rights: any = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1960
|
+
<span class="cstat-no" title="statement not covered" > node?.arguments?.[0]?.properties.forEach(<span class="fstat-no" title="function not covered" >(a</span>rg: any) => {</span>
|
|
1961
|
+
<span class="cstat-no" title="statement not covered" > properties.push(transformLogicNode(arg.key));</span>
|
|
1962
|
+
<span class="cstat-no" title="statement not covered" > rights.push(new naslTypes.SelectMembers({</span>
|
|
1963
|
+
expression: transformLogicNode(arg.value)
|
|
1964
|
+
}));
|
|
1965
|
+
});
|
|
1966
|
+
const typeName = <span class="cstat-no" title="statement not covered" >node?.typeParameters?.params?.[0]?.typeName?.name;</span>
|
|
1967
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.NewComposite({</span>
|
|
1968
|
+
typeAnnotation: naslTypes.TypeAnnotation.createReference(typeName, {
|
|
1969
|
+
typeNamespace: 'app.dataSources.defaultDS.entities',
|
|
1970
|
+
typeName
|
|
1971
|
+
}),
|
|
1972
|
+
properties,
|
|
1973
|
+
rights,
|
|
1974
|
+
});
|
|
1975
|
+
}
|
|
1976
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName === 'NewAnonymityStructure') {</span>
|
|
1977
|
+
const properties: any = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1978
|
+
const rights: any = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1979
|
+
const structureProperties: any = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1980
|
+
<span class="cstat-no" title="statement not covered" > node?.arguments?.[0]?.properties?.forEach(<span class="fstat-no" title="function not covered" >(a</span>rg: any) => {</span>
|
|
1981
|
+
<span class="cstat-no" title="statement not covered" > properties.push(transformLogicNode(arg.key));</span>
|
|
1982
|
+
<span class="cstat-no" title="statement not covered" > rights.push(new naslTypes.SelectMembers({</span>
|
|
1983
|
+
expression: transformLogicNode(arg.value)
|
|
1984
|
+
}));
|
|
1985
|
+
<span class="cstat-no" title="statement not covered" > structureProperties.push(new naslTypes.StructureProperty({</span>
|
|
1986
|
+
name: arg?.key?.name,
|
|
1987
|
+
typeAnnotation: null
|
|
1988
|
+
}));
|
|
1989
|
+
});
|
|
1990
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.NewComposite({</span>
|
|
1991
|
+
typeAnnotation: naslTypes.TypeAnnotation.createTypeAnonymousStructure(structureProperties),
|
|
1992
|
+
properties,
|
|
1993
|
+
rights,
|
|
1994
|
+
});
|
|
1995
|
+
}
|
|
1996
|
+
<span class="cstat-no" title="statement not covered" > return node;</span>
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1999
|
+
function <span class="fstat-no" title="function not covered" >isPageLogic(</span>logicName: string) {
|
|
2000
|
+
<span class="cstat-no" title="statement not covered" > return logicName.includes('on_') || logicName.includes('viewLogic_')</span>
|
|
2001
|
+
}
|
|
2002
|
+
|
|
2003
|
+
function <span class="fstat-no" title="function not covered" >transformLogicNode(</span>node: babelTypes.Node, typeAnnotation?: naslTypes.TypeAnnotation): naslTypes.LogicItem {
|
|
2004
|
+
<span class="cstat-no" title="statement not covered" > fixLogicNode(node);</span>
|
|
2005
|
+
// console.log('lemon ~~~ node--1:', node);
|
|
2006
|
+
<span class="cstat-no" title="statement not covered" > if (node.type === 'VariableDeclaration') { // 拆成局部变量和赋值</span>
|
|
2007
|
+
const declList = <span class="cstat-no" title="statement not covered" >node?.declarations || [];</span>
|
|
2008
|
+
<span class="cstat-no" title="statement not covered" > declList?.forEach(<span class="fstat-no" title="function not covered" >(d</span>ecl) => {</span>
|
|
2009
|
+
const variableName = (<span class="cstat-no" title="statement not covered" >decl.id as babelTypes.Identifier).name;</span>
|
|
2010
|
+
<span class="cstat-no" title="statement not covered" > if (!logic.variables.find(<span class="fstat-no" title="function not covered" >(v</span>ariable) => <span class="cstat-no" title="statement not covered" >variable.name === variableName)</span>) {</span>
|
|
2011
|
+
const varTypeAnnotation = ((<span class="cstat-no" title="statement not covered" >decl.id as babelTypes.Identifier).typeAnnotation as babelTypes.TSTypeAnnotation)?.typeAnnotation;</span>
|
|
2012
|
+
<span class="cstat-no" title="statement not covered" > logic.variables.push(new naslTypes.Variable({</span>
|
|
2013
|
+
name: variableName,
|
|
2014
|
+
typeAnnotation: varTypeAnnotation && transformTypeAnnotation(varTypeAnnotation),
|
|
2015
|
+
}));
|
|
2016
|
+
}
|
|
2017
|
+
<span class="cstat-no" title="statement not covered" > if (decl.init) {</span>
|
|
2018
|
+
<span class="cstat-no" title="statement not covered" > if (decl.init.type !== 'ArrayExpression' && decl.init.type !== 'ObjectExpression') {</span>
|
|
2019
|
+
<span class="cstat-no" title="statement not covered" > if (type === 'expression') {</span>
|
|
2020
|
+
<span class="cstat-no" title="statement not covered" > return transformLogicNode(decl.init);</span>
|
|
2021
|
+
}
|
|
2022
|
+
const item = <span class="cstat-no" title="statement not covered" >new naslTypes.Assignment({</span>
|
|
2023
|
+
left: new naslTypes.Identifier({
|
|
2024
|
+
name: variableName,
|
|
2025
|
+
}),
|
|
2026
|
+
right: transformLogicNode(decl.init),
|
|
2027
|
+
});
|
|
2028
|
+
<span class="cstat-no" title="statement not covered" > item && logic.body.push(item);</span>
|
|
2029
|
+
}
|
|
2030
|
+
}
|
|
2031
|
+
});
|
|
2032
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'CallExpression') {</span>
|
|
2033
|
+
const callee = <span class="cstat-no" title="statement not covered" >flatMemberExpression(node.callee);</span>
|
|
2034
|
+
const calleeName = <span class="cstat-no" title="statement not covered" >generate(node.callee as any).code;</span>
|
|
2035
|
+
// console.log('lemon ~~~ node--2', node, callee, calleeName);
|
|
2036
|
+
<span class="cstat-no" title="statement not covered" > if (/^\$refs\./.test(calleeName)) {</span>
|
|
2037
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2038
|
+
calleeNamespace: `elements.${(callee[1] as babelTypes.Identifier).name}.logics`,
|
|
2039
|
+
calleeName: (callee[2] as babelTypes.Identifier).name,
|
|
2040
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2041
|
+
expression: transformLogicNode(arg),
|
|
2042
|
+
})) as naslTypes.Argument[],
|
|
2043
|
+
});
|
|
2044
|
+
}
|
|
2045
|
+
<span class="cstat-no" title="statement not covered" > if (callee.length === 2 && callee[0].type === 'Identifier' && callee[0].name.endsWith('Entity')) {</span>
|
|
2046
|
+
const entityName = <span class="cstat-no" title="statement not covered" >callee[0].name.replace(/Entity$/, '');</span>
|
|
2047
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2048
|
+
calleeNamespace: `app.dataSources.defaultDS.entities.${entityName}.logics`,
|
|
2049
|
+
calleeName: (callee[1] as babelTypes.Identifier).name,
|
|
2050
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2051
|
+
expression: transformLogicNode(arg),
|
|
2052
|
+
})) as naslTypes.Argument[],
|
|
2053
|
+
});
|
|
2054
|
+
}
|
|
2055
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName === 'nasl.oql.query') {</span>
|
|
2056
|
+
<span class="cstat-no" title="statement not covered" > if (!isPageLogic(contextLogicName)) {</span>
|
|
2057
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.OqlQueryComponent({</span>
|
|
2058
|
+
dataSource: 'app.dataSources.defaultDS',
|
|
2059
|
+
code: generate(node.arguments[0] as any).code.trim().slice(1, -1),
|
|
2060
|
+
});
|
|
2061
|
+
}
|
|
2062
|
+
}
|
|
2063
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName === 'nasl.util.consoleLog' || calleeName === 'console.log') {</span>
|
|
2064
|
+
<span class="cstat-no" title="statement not covered" > if (!isPageLogic(contextLogicName)) {</span>
|
|
2065
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2066
|
+
calleeNamespace: 'nasl.util',
|
|
2067
|
+
calleeName: 'consoleLog',
|
|
2068
|
+
shortcut: true,
|
|
2069
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2070
|
+
expression: transformLogicNode(arg),
|
|
2071
|
+
})) as naslTypes.Argument[],
|
|
2072
|
+
});
|
|
2073
|
+
}
|
|
2074
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2075
|
+
calleeNamespace: 'nasl.logging',
|
|
2076
|
+
calleeName: 'INFO',
|
|
2077
|
+
shortcut: true,
|
|
2078
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2079
|
+
expression: transformLogicNode(arg),
|
|
2080
|
+
})) as naslTypes.Argument[],
|
|
2081
|
+
});
|
|
2082
|
+
}
|
|
2083
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName === 'nasl.util.jsonSerialize' || calleeName === 'nasl.util.jsonDeserialize') {</span>
|
|
2084
|
+
const curCalleeName = (<span class="cstat-no" title="statement not covered" >node.callee as any).property.name;</span>
|
|
2085
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2086
|
+
calleeNamespace: 'nasl.util',
|
|
2087
|
+
calleeName: curCalleeName,
|
|
2088
|
+
shortcut: true,
|
|
2089
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2090
|
+
expression: transformLogicNode(arg),
|
|
2091
|
+
})) as naslTypes.Argument[],
|
|
2092
|
+
typeArguments: node?.typeParameters?.params.map(<span class="fstat-no" title="function not covered" >(c</span>urType: any) => <span class="cstat-no" title="statement not covered" >transformTypeAnnotation({ ...curType }))</span>,
|
|
2093
|
+
});
|
|
2094
|
+
};
|
|
2095
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName.startsWith('nasl.util.')) {</span>
|
|
2096
|
+
const curCalleeName = <span class="cstat-no" title="statement not covered" >callee.length === 3 ? (callee[callee.length - 1] as babelTypes.Identifier).name : (callee[0] as any).callee.property.name;</span>
|
|
2097
|
+
const argument = <span class="cstat-no" title="statement not covered" >callee.length === 3 ? node.arguments : (callee[0] as any).arguments as any;</span>
|
|
2098
|
+
|
|
2099
|
+
<span class="cstat-no" title="statement not covered" > if (['plus', 'minus', 'multiply', 'divide', 'remainder'].includes(curCalleeName)) {</span>
|
|
2100
|
+
<span class="cstat-no" title="statement not covered" > return handleBinaryExpression(curCalleeName, argument);</span>
|
|
2101
|
+
};
|
|
2102
|
+
|
|
2103
|
+
<span class="cstat-no" title="statement not covered" > if (['NewList', 'NewMap', 'NewEntity', 'NewAnonymityStructure'].includes(curCalleeName)) {</span>
|
|
2104
|
+
<span class="cstat-no" title="statement not covered" > return handleNewExpression(curCalleeName, node);</span>
|
|
2105
|
+
}
|
|
2106
|
+
|
|
2107
|
+
let typeNamespace: string;
|
|
2108
|
+
<span class="cstat-no" title="statement not covered" > if (argument?.[argument.length - 1]?.type === 'ObjectExpression') {</span>
|
|
2109
|
+
<span class="cstat-no" title="statement not covered" > typeNamespace = argument.splice(-1)[0].properties[0].value.value;</span>
|
|
2110
|
+
}
|
|
2111
|
+
const nodeElement = <span class="cstat-no" title="statement not covered" >new naslTypes.CallFunction({</span>
|
|
2112
|
+
calleeNamespace: 'nasl.util',
|
|
2113
|
+
calleeName: curCalleeName,
|
|
2114
|
+
arguments: argument.map(<span class="fstat-no" title="function not covered" >(a</span>rg: any, index: number) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2115
|
+
expression: transformLogicNode(arg),
|
|
2116
|
+
keyword: `str${index + 1}`,
|
|
2117
|
+
})) as naslTypes.Argument[],
|
|
2118
|
+
typeArguments: node?.typeParameters?.params.map(<span class="fstat-no" title="function not covered" >(c</span>urType: any) => <span class="cstat-no" title="statement not covered" >transformTypeAnnotation({ ...curType, typeNamespace }))</span>,
|
|
2119
|
+
});
|
|
2120
|
+
// console.log('lemon ~ callFunction ~ 3:', nodeElement);
|
|
2121
|
+
<span class="cstat-no" title="statement not covered" > return nodeElement;</span>
|
|
2122
|
+
}
|
|
2123
|
+
<span class="cstat-no" title="statement not covered" > if (callee.length === 3 && calleeName.startsWith('nasl.ui.')) {</span>
|
|
2124
|
+
<span class="cstat-no" title="statement not covered" > if ((callee[2] as babelTypes.Identifier).name === 'destination') {</span>
|
|
2125
|
+
const namespace = (<span class="cstat-no" title="statement not covered" >node.arguments[0] as babelTypes.StringLiteral).value;</span>
|
|
2126
|
+
const nsArr = <span class="cstat-no" title="statement not covered" >namespace.split('.').map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.replace(/_view$/, ''))</span>;</span>
|
|
2127
|
+
const viewName = <span class="cstat-no" title="statement not covered" >nsArr.pop();</span>
|
|
2128
|
+
|
|
2129
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.Destination({</span>
|
|
2130
|
+
viewNamespace: `app.frontends.pc.views${nsArr.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >`.${item}.views`)</span>.join('')}`, // viewNamespace
|
|
2131
|
+
viewName, // viewName
|
|
2132
|
+
arguments: node.arguments.slice(1).map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2133
|
+
expression: transformLogicNode(arg),
|
|
2134
|
+
})) as naslTypes.Argument[],
|
|
2135
|
+
});
|
|
2136
|
+
}
|
|
2137
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2138
|
+
calleeNamespace: 'nasl.ui',
|
|
2139
|
+
calleeName: (callee[2] as babelTypes.Identifier).name,
|
|
2140
|
+
shortcut: true,
|
|
2141
|
+
/**
|
|
2142
|
+
* 这个函数是修复 AI 翻译出错的情况,与正常的 transform 做个区分
|
|
2143
|
+
* @param node
|
|
2144
|
+
* @returns
|
|
2145
|
+
*/
|
|
2146
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2147
|
+
expression: transformLogicNode(arg),
|
|
2148
|
+
})) as naslTypes.Argument[],
|
|
2149
|
+
});
|
|
2150
|
+
}
|
|
2151
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName.endsWith('.map')) {</span>
|
|
2152
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallFunction({</span>
|
|
2153
|
+
calleeNamespace: 'nasl.util',
|
|
2154
|
+
calleeName: 'ListTransform',
|
|
2155
|
+
arguments: [new naslTypes.Argument({
|
|
2156
|
+
expression: transformLogicNode((node.callee as babelTypes.MemberExpression).object),
|
|
2157
|
+
}), ...node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg: any) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2158
|
+
expression: transformLogicNode(arg),
|
|
2159
|
+
}))],
|
|
2160
|
+
});
|
|
2161
|
+
}
|
|
2162
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName === 'ForEach') {</span>
|
|
2163
|
+
const newCallee = <span class="cstat-no" title="statement not covered" >node.arguments;</span>
|
|
2164
|
+
const arrowFunction = <span class="cstat-no" title="statement not covered" >node.arguments[3] as babelTypes.ArrowFunctionExpression;</span>
|
|
2165
|
+
const nodeElement = <span class="cstat-no" title="statement not covered" >new naslTypes.ForEachStatement({</span>
|
|
2166
|
+
each: transformLogicNode(newCallee[0]),
|
|
2167
|
+
start: transformLogicNode(newCallee[1]),
|
|
2168
|
+
end: transformLogicNode(newCallee[2]),
|
|
2169
|
+
item: transformParam(arrowFunction.params[0] as babelTypes.Identifier),
|
|
2170
|
+
index: arrowFunction.params[1] ? transformParam(arrowFunction.params[1] as babelTypes.Identifier) : new naslTypes.Param({
|
|
2171
|
+
name: 'index', typeAnnotation: naslTypes.TypeAnnotation.createPrimitive('Long'),
|
|
2172
|
+
}),
|
|
2173
|
+
body: (arrowFunction.body as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >!!item)</span>,
|
|
2174
|
+
});
|
|
2175
|
+
<span class="cstat-no" title="statement not covered" > return nodeElement;</span>
|
|
2176
|
+
}
|
|
2177
|
+
<span class="cstat-no" title="statement not covered" > if (callee.length === 2) {</span>
|
|
2178
|
+
const curCalleeName = (<span class="cstat-no" title="statement not covered" >node.callee as any).property.name;</span>
|
|
2179
|
+
<span class="cstat-no" title="statement not covered" > if (curCalleeName === 'forEach') {</span>
|
|
2180
|
+
const newCallee = (<span class="cstat-no" title="statement not covered" >node.callee as any).object;</span>
|
|
2181
|
+
const arrowFunction = <span class="cstat-no" title="statement not covered" >node.arguments[0] as babelTypes.ArrowFunctionExpression;</span>
|
|
2182
|
+
const nodeElement = <span class="cstat-no" title="statement not covered" >new naslTypes.ForEachStatement({</span>
|
|
2183
|
+
each: transformLogicNode(newCallee.callee.object),
|
|
2184
|
+
start: transformLogicNode(newCallee?.arguments?.[0]),
|
|
2185
|
+
end: transformLogicNode(newCallee?.arguments?.[1]),
|
|
2186
|
+
item: transformParam(arrowFunction.params[0] as babelTypes.Identifier),
|
|
2187
|
+
index: arrowFunction.params[1] ? transformParam(arrowFunction.params[1] as babelTypes.Identifier) : new naslTypes.Param({
|
|
2188
|
+
name: 'index', typeAnnotation: naslTypes.TypeAnnotation.createPrimitive('Long'),
|
|
2189
|
+
}),
|
|
2190
|
+
body: (arrowFunction.body as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >!!item)</span>,
|
|
2191
|
+
});
|
|
2192
|
+
<span class="cstat-no" title="statement not covered" > return nodeElement;</span>
|
|
2193
|
+
}
|
|
2194
|
+
} else <span class="cstat-no" title="statement not covered" >if (['plus', 'minus', 'multiply', 'divide', 'remainder'].includes(calleeName)) {</span>
|
|
2195
|
+
<span class="cstat-no" title="statement not covered" > return handleBinaryExpression(calleeName, node?.arguments);</span>
|
|
2196
|
+
} else <span class="cstat-no" title="statement not covered" >if (calleeName === 'alert') {</span>
|
|
2197
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2198
|
+
calleeNamespace: 'nasl.ui',
|
|
2199
|
+
calleeName: 'showMessage',
|
|
2200
|
+
shortcut: true,
|
|
2201
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2202
|
+
expression: transformLogicNode(arg),
|
|
2203
|
+
})) as naslTypes.Argument[],
|
|
2204
|
+
});
|
|
2205
|
+
} else <span class="cstat-no" title="statement not covered" >if (/^app.dataSources|app.logics|load/.test(calleeName)) {</span>
|
|
2206
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2207
|
+
calleeNamespace: generate((node.callee as any).object).code,
|
|
2208
|
+
calleeName: (callee[callee.length - 1] as babelTypes.Identifier).name,
|
|
2209
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2210
|
+
expression: transformLogicNode(arg),
|
|
2211
|
+
})) as naslTypes.Argument[],
|
|
2212
|
+
});
|
|
2213
|
+
} else <span class="cstat-no" title="statement not covered" >if (callee.length === 1) {</span>
|
|
2214
|
+
<span class="cstat-no" title="statement not covered" > if (calleeName.startsWith('viewLogic_')) {</span>
|
|
2215
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2216
|
+
calleeNamespace: '',
|
|
2217
|
+
calleeName: calleeName.slice('viewLogic_'.length),
|
|
2218
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2219
|
+
expression: transformLogicNode(arg),
|
|
2220
|
+
})) as naslTypes.Argument[],
|
|
2221
|
+
});
|
|
2222
|
+
}
|
|
2223
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
|
|
2224
|
+
calleeNamespace: `app.logics`,
|
|
2225
|
+
calleeName,
|
|
2226
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2227
|
+
expression: transformLogicNode(arg),
|
|
2228
|
+
})) as naslTypes.Argument[],
|
|
2229
|
+
});
|
|
2230
|
+
} else <span class="cstat-no" title="statement not covered" >if (/interfaces/.test(calleeName)) {</span>
|
|
2231
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallInterface({</span>
|
|
2232
|
+
calleeNamespace: generate((node.callee as any).object).code,
|
|
2233
|
+
calleeName: (callee[callee.length - 1] as babelTypes.Identifier).name,
|
|
2234
|
+
arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg: any) => <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
|
|
2235
|
+
keyword: arg.properties[0].key.name,
|
|
2236
|
+
expression: transformLogicNode(arg.properties[0].value),
|
|
2237
|
+
})) as naslTypes.Argument[],
|
|
2238
|
+
});
|
|
2239
|
+
}
|
|
2240
|
+
// else if (/destination/.test(calleeName)) {
|
|
2241
|
+
// const newCallee = flatMemberExpression((node.callee as any).object);
|
|
2242
|
+
// return new naslTypes.Destination({
|
|
2243
|
+
// viewNamespace: generate((node.callee as any).object.object).code,
|
|
2244
|
+
// viewName: (newCallee[newCallee.length - 1] as babelTypes.Identifier).name,
|
|
2245
|
+
// target: (node.arguments[0] as any).properties[1].value.value,
|
|
2246
|
+
// anchor: new naslTypes.Anchor({
|
|
2247
|
+
// expression: transformLogicNode((node.arguments[0] as any).properties[0].value),
|
|
2248
|
+
// }),
|
|
2249
|
+
// });
|
|
2250
|
+
// }
|
|
2251
|
+
else <span class="cstat-no" title="statement not covered" >if (node.callee.type === 'ArrowFunctionExpression') {</span>
|
|
2252
|
+
// NOTE: 适用于 if else
|
|
2253
|
+
const newCallee = (<span class="cstat-no" title="statement not covered" >node.callee.body as any).body;</span>
|
|
2254
|
+
<span class="cstat-no" title="statement not covered" > if (newCallee[newCallee.length - 1].argument?.callee?.name === '__MatchExpressionFuntion') {</span>
|
|
2255
|
+
const match = <span class="cstat-no" title="statement not covered" >new naslTypes.Match({</span>
|
|
2256
|
+
expression: transformLogicNode(newCallee[0]),
|
|
2257
|
+
isExpression: type === 'expression',
|
|
2258
|
+
cases: flatIfStatement(newCallee[1].body.body[0]).map(<span class="fstat-no" title="function not covered" >(_</span>case: any) => <span class="cstat-no" title="statement not covered" >new naslTypes.MatchCase({</span>
|
|
2259
|
+
patterns: !_case.test ? [] : flatMatchPatternsExpression(transformLogicNode(_case.test)) as any,
|
|
2260
|
+
body: _case.consequent.body.filter(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => <span class="cstat-no" title="statement not covered" >item.type !== 'BreakStatement')</span>.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => <span class="cstat-no" title="statement not covered" >!!item)</span>,
|
|
2261
|
+
})),
|
|
2262
|
+
});
|
|
2263
|
+
<span class="cstat-no" title="statement not covered" > if (!match.cases.length || match.cases[match.cases.length - 1].patterns.length) {</span>
|
|
2264
|
+
<span class="cstat-no" title="statement not covered" > match.cases.push(new naslTypes.MatchCase({</span>
|
|
2265
|
+
patterns: [],
|
|
2266
|
+
body: [],
|
|
2267
|
+
}));
|
|
2268
|
+
}
|
|
2269
|
+
<span class="cstat-no" title="statement not covered" > match.cases.forEach(<span class="fstat-no" title="function not covered" >(c</span>ase_: any) => {</span>
|
|
2270
|
+
<span class="cstat-no" title="statement not covered" > if (case_.body.length && (case_.body[0].concept === 'BooleanLiteral' || case_.body[0].concept === 'StringLiteral')) {</span>
|
|
2271
|
+
<span class="cstat-no" title="statement not covered" > case_.isMatchedTypeEnumable = true;</span>
|
|
2272
|
+
}
|
|
2273
|
+
<span class="cstat-no" title="statement not covered" > if (case_.patterns.length && case_.patterns[0].concept === 'MemberExpression') {</span>
|
|
2274
|
+
<span class="cstat-no" title="statement not covered" > case_.isMatchedTypeEnumable = true;</span>
|
|
2275
|
+
<span class="cstat-no" title="statement not covered" > case_.patterns[0] = new naslTypes.MemberExpression({</span>
|
|
2276
|
+
object: {
|
|
2277
|
+
concept: 'Identifier',
|
|
2278
|
+
name: case_.patterns[0].object.property.name,
|
|
2279
|
+
folded: false,
|
|
2280
|
+
namespace: 'app.enums'
|
|
2281
|
+
} as any,
|
|
2282
|
+
property: {
|
|
2283
|
+
concept: 'Identifier',
|
|
2284
|
+
name: case_.patterns[0].property.value,
|
|
2285
|
+
folded: false,
|
|
2286
|
+
} as any,
|
|
2287
|
+
});
|
|
2288
|
+
}
|
|
2289
|
+
});
|
|
2290
|
+
<span class="cstat-no" title="statement not covered" > return match;</span>
|
|
2291
|
+
}
|
|
2292
|
+
<span class="cstat-no" title="statement not covered" > if (newCallee[newCallee.length - 1].argument?.callee?.name === '__SwitchExpressionFuntion') {</span>
|
|
2293
|
+
const switchStatement = <span class="cstat-no" title="statement not covered" >transformLogicNode(newCallee[0].body.body[0]);</span>
|
|
2294
|
+
<span class="cstat-no" title="statement not covered" > return switchStatement;</span>
|
|
2295
|
+
}
|
|
2296
|
+
<span class="cstat-no" title="statement not covered" > console.error(node);</span>
|
|
2297
|
+
<span class="cstat-no" title="statement not covered" > if (debug) {</span>
|
|
2298
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled ArrowFunctionExpression node ${node.type}`);</span>
|
|
2299
|
+
}
|
|
2300
|
+
} else {
|
|
2301
|
+
<span class="cstat-no" title="statement not covered" > console.error(node);</span>
|
|
2302
|
+
<span class="cstat-no" title="statement not covered" > if (debug) {</span>
|
|
2303
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${callee.map(<span class="fstat-no" title="function not covered" >(i</span>tem: babelTypes.Identifier) => <span class="cstat-no" title="statement not covered" >item.name)</span>.join('.')} ${node.type}`);</span>
|
|
2304
|
+
}
|
|
2305
|
+
}
|
|
2306
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'IfStatement') {</span>
|
|
2307
|
+
<span class="cstat-no" title="statement not covered" > if (node.alternate && node.alternate.type === 'IfStatement') {</span>
|
|
2308
|
+
const switchStatement = <span class="cstat-no" title="statement not covered" >new naslTypes.SwitchStatement({</span>
|
|
2309
|
+
cases: [],
|
|
2310
|
+
});
|
|
2311
|
+
<span class="cstat-no" title="statement not covered" > pushElseIf(node, switchStatement);</span>
|
|
2312
|
+
<span class="cstat-no" title="statement not covered" > return switchStatement;</span>
|
|
2313
|
+
}
|
|
2314
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.IfStatement({</span>
|
|
2315
|
+
test: transformLogicNode(node.test),
|
|
2316
|
+
consequent: !node.consequent ? [] : (node.consequent as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >!!item)</span>,
|
|
2317
|
+
alternate: !node.alternate ? [] : (node.alternate as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >!!item)</span>,
|
|
2318
|
+
});
|
|
2319
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'WhileStatement') {</span>
|
|
2320
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.WhileStatement({</span>
|
|
2321
|
+
test: transformLogicNode(node.test),
|
|
2322
|
+
body: (node.body as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >!!item)</span>,
|
|
2323
|
+
});
|
|
2324
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'SwitchStatement') {</span>
|
|
2325
|
+
const match = <span class="cstat-no" title="statement not covered" >new naslTypes.Match({</span>
|
|
2326
|
+
expression: transformLogicNode(node.discriminant),
|
|
2327
|
+
isExpression: type === 'expression',
|
|
2328
|
+
cases: node.cases.map(<span class="fstat-no" title="function not covered" >(_</span>case) => <span class="cstat-no" title="statement not covered" >new naslTypes.MatchCase({</span>
|
|
2329
|
+
patterns: !_case.test ? [] : [transformLogicNode(_case.test)],
|
|
2330
|
+
body: _case.consequent.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.type !== 'BreakStatement')</span>.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >!!item)</span>,
|
|
2331
|
+
})),
|
|
2332
|
+
});
|
|
2333
|
+
<span class="cstat-no" title="statement not covered" > if (!match.cases.length || match.cases[match.cases.length - 1].patterns.length) {</span>
|
|
2334
|
+
<span class="cstat-no" title="statement not covered" > match.cases.push(new naslTypes.MatchCase({</span>
|
|
2335
|
+
patterns: [],
|
|
2336
|
+
body: [],
|
|
2337
|
+
}));
|
|
2338
|
+
}
|
|
2339
|
+
<span class="cstat-no" title="statement not covered" > match.cases.forEach(<span class="fstat-no" title="function not covered" >(c</span>ase_: any) => {</span>
|
|
2340
|
+
<span class="cstat-no" title="statement not covered" > if (case_.body.length && (case_.body[0].concept === 'BooleanLiteral' || case_.body[0].concept === 'StringLiteral')) {</span>
|
|
2341
|
+
<span class="cstat-no" title="statement not covered" > case_.isMatchedTypeEnumable = true;</span>
|
|
2342
|
+
}
|
|
2343
|
+
<span class="cstat-no" title="statement not covered" > if (case_.patterns.length && case_.patterns[0].concept === 'MemberExpression') {</span>
|
|
2344
|
+
<span class="cstat-no" title="statement not covered" > case_.isMatchedTypeEnumable = true;</span>
|
|
2345
|
+
<span class="cstat-no" title="statement not covered" > case_.patterns[0].object.namespace = 'app.enums';</span>
|
|
2346
|
+
}
|
|
2347
|
+
});
|
|
2348
|
+
<span class="cstat-no" title="statement not covered" > return match;</span>
|
|
2349
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'MemberExpression') {</span>
|
|
2350
|
+
<span class="cstat-no" title="statement not covered" > if (node.property.type === 'NumericLiteral') {</span>
|
|
2351
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.CallFunction({</span>
|
|
2352
|
+
calleeNamespace: 'nasl.util',
|
|
2353
|
+
calleeName: 'Get',
|
|
2354
|
+
arguments: [
|
|
2355
|
+
new naslTypes.Argument({
|
|
2356
|
+
expression: transformLogicNode(node.object),
|
|
2357
|
+
}),
|
|
2358
|
+
new naslTypes.Argument({
|
|
2359
|
+
expression: transformLogicNode(node.property),
|
|
2360
|
+
}),
|
|
2361
|
+
],
|
|
2362
|
+
});
|
|
2363
|
+
}
|
|
2364
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.MemberExpression({</span>
|
|
2365
|
+
object: transformLogicNode(node.object),
|
|
2366
|
+
property: transformLogicNode(node.property),
|
|
2367
|
+
});
|
|
2368
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'Identifier') {</span>
|
|
2369
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.Identifier({</span>
|
|
2370
|
+
name: node.name,
|
|
2371
|
+
});
|
|
2372
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'ExpressionStatement') {</span>
|
|
2373
|
+
<span class="cstat-no" title="statement not covered" > return transformLogicNode(node.expression);</span>
|
|
2374
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'AssignmentExpression') {</span>
|
|
2375
|
+
<span class="cstat-no" title="statement not covered" > if (node.operator === '+=' || node.operator === '-=') {</span>
|
|
2376
|
+
<span class="cstat-no" title="statement not covered" > if (type === 'expression') {</span>
|
|
2377
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.BinaryExpression({</span>
|
|
2378
|
+
operator: node.operator[0] as '+' | '-',
|
|
2379
|
+
left: transformLogicNode(node.left),
|
|
2380
|
+
right: transformLogicNode(node.right),
|
|
2381
|
+
});
|
|
2382
|
+
}
|
|
2383
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.Assignment({</span>
|
|
2384
|
+
left: transformLogicNode(node.left),
|
|
2385
|
+
right: new naslTypes.BinaryExpression({
|
|
2386
|
+
operator: node.operator[0] as '+' | '-',
|
|
2387
|
+
left: transformLogicNode(node.left),
|
|
2388
|
+
right: transformLogicNode(node.right),
|
|
2389
|
+
}),
|
|
2390
|
+
});
|
|
2391
|
+
}
|
|
2392
|
+
<span class="cstat-no" title="statement not covered" > if (type === 'expression') {</span>
|
|
2393
|
+
<span class="cstat-no" title="statement not covered" > return transformLogicNode(node.right);</span>
|
|
2394
|
+
}
|
|
2395
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.Assignment({</span>
|
|
2396
|
+
left: transformLogicNode(node.left),
|
|
2397
|
+
right: transformLogicNode(node.right),
|
|
2398
|
+
});
|
|
2399
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'NewExpression') {</span>
|
|
2400
|
+
const calleeName = <span class="cstat-no" title="statement not covered" >generate(node.callee as any).code;</span>
|
|
2401
|
+
<span class="cstat-no" title="statement not covered" > if (['Boolean', 'Integer', 'Double', 'Decimal', 'Long'].includes(calleeName)) {</span>
|
|
2402
|
+
<span class="cstat-no" title="statement not covered" > return transformLogicNode(node.arguments[0], naslTypes.TypeAnnotation.createPrimitive(calleeName));</span>
|
|
2403
|
+
}
|
|
2404
|
+
<span class="cstat-no" title="statement not covered" > console.error(node);</span>
|
|
2405
|
+
<span class="cstat-no" title="statement not covered" > if (debug) {</span>
|
|
2406
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
|
|
2407
|
+
}
|
|
2408
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'ArrowFunctionExpression') {</span>
|
|
2409
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.AnonymousFunction({</span>
|
|
2410
|
+
params: node.params.map(<span class="fstat-no" title="function not covered" >(p</span>aram: babelTypes.Identifier) => <span class="cstat-no" title="statement not covered" >transformParam(param))</span>,
|
|
2411
|
+
body: transformLogicNode(node.body),
|
|
2412
|
+
}) as any as naslTypes.LogicItem;
|
|
2413
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'BooleanLiteral') {</span>
|
|
2414
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.BooleanLiteral({</span>
|
|
2415
|
+
value: String(node.value),
|
|
2416
|
+
});
|
|
2417
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'StringLiteral') {</span>
|
|
2418
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.StringLiteral({</span>
|
|
2419
|
+
value: node.value,
|
|
2420
|
+
});
|
|
2421
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'NumericLiteral') {</span>
|
|
2422
|
+
const literal = <span class="cstat-no" title="statement not covered" >new naslTypes.NumericLiteral({</span>
|
|
2423
|
+
value: String(node.value),
|
|
2424
|
+
typeAnnotation: typeAnnotation || naslTypes.TypeAnnotation.createPrimitive('Integer'),
|
|
2425
|
+
});
|
|
2426
|
+
<span class="cstat-no" title="statement not covered" > literal.typeAnnotation.typeName = literal.changeType(String(node.value));</span>
|
|
2427
|
+
<span class="cstat-no" title="statement not covered" > return literal;</span>
|
|
2428
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'NullLiteral') {</span>
|
|
2429
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.NullLiteral();</span>
|
|
2430
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'TemplateLiteral') {</span>
|
|
2431
|
+
const expressions = <span class="cstat-no" title="statement not covered" >[...node.expressions as babelTypes.Expression[], ...node.quasis.map(<span class="fstat-no" title="function not covered" >(e</span>lement) => (<span class="cstat-no" title="statement not covered" >{</span></span>
|
|
2432
|
+
type: 'StringLiteral',
|
|
2433
|
+
value: element.value.raw,
|
|
2434
|
+
start: element.start,
|
|
2435
|
+
end: element.end,
|
|
2436
|
+
})) as babelTypes.StringLiteral[]];
|
|
2437
|
+
<span class="cstat-no" title="statement not covered" > expressions.sort(<span class="fstat-no" title="function not covered" >(a</span>, b) => <span class="cstat-no" title="statement not covered" >a.start - b.start)</span>;</span>
|
|
2438
|
+
|
|
2439
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.StringInterpolation({</span>
|
|
2440
|
+
expressions: expressions.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>,
|
|
2441
|
+
});
|
|
2442
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'BinaryExpression' || node.type === 'LogicalExpression') {</span>
|
|
2443
|
+
<span class="cstat-no" title="statement not covered" > if (node.operator === '===')</span>
|
|
2444
|
+
<span class="cstat-no" title="statement not covered" > node.operator = '==';</span>
|
|
2445
|
+
<span class="cstat-no" title="statement not covered" > if (node.operator === '!==')</span>
|
|
2446
|
+
<span class="cstat-no" title="statement not covered" > node.operator = '!=';</span>
|
|
2447
|
+
<span class="cstat-no" title="statement not covered" > if (['+', '-', '*', '/', '%', '==', '!=', '>', '<', '>=', '<=', '&&', '||', 'startwith', 'endwith', 'like', 'in'].includes(node.operator)) {</span>
|
|
2448
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.BinaryExpression({</span>
|
|
2449
|
+
operator: node.operator as any,
|
|
2450
|
+
left: transformLogicNode(node.left),
|
|
2451
|
+
right: transformLogicNode(node.right),
|
|
2452
|
+
});
|
|
2453
|
+
}
|
|
2454
|
+
<span class="cstat-no" title="statement not covered" > console.error(node);</span>
|
|
2455
|
+
<span class="cstat-no" title="statement not covered" > if (debug) {</span>
|
|
2456
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
|
|
2457
|
+
}
|
|
2458
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'UnaryExpression') {</span>
|
|
2459
|
+
<span class="cstat-no" title="statement not covered" > if (['!'].includes(node.operator)) {</span>
|
|
2460
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.UnaryExpression({</span>
|
|
2461
|
+
operator: node.operator as any,
|
|
2462
|
+
argument: transformLogicNode(node.argument),
|
|
2463
|
+
});
|
|
2464
|
+
}
|
|
2465
|
+
<span class="cstat-no" title="statement not covered" > if (['-'].includes(node.operator) && node.argument.type === 'NumericLiteral') {</span>
|
|
2466
|
+
<span class="cstat-no" title="statement not covered" > return transformLogicNode({</span>
|
|
2467
|
+
type: 'NumericLiteral',
|
|
2468
|
+
value: -node.argument.value,
|
|
2469
|
+
} as babelTypes.NumericLiteral);
|
|
2470
|
+
}
|
|
2471
|
+
<span class="cstat-no" title="statement not covered" > console.error(node);</span>
|
|
2472
|
+
<span class="cstat-no" title="statement not covered" > if (debug) {</span>
|
|
2473
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
|
|
2474
|
+
}
|
|
2475
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'UpdateExpression') {</span>
|
|
2476
|
+
<span class="cstat-no" title="statement not covered" > if (node.operator === '++' || node.operator === '--') {</span>
|
|
2477
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.Assignment({</span>
|
|
2478
|
+
left: transformLogicNode(node.argument),
|
|
2479
|
+
right: new naslTypes.BinaryExpression({
|
|
2480
|
+
operator: node.operator[0] as '+' | '-',
|
|
2481
|
+
left: transformLogicNode(node.argument),
|
|
2482
|
+
right: new naslTypes.NumericLiteral({
|
|
2483
|
+
value: '1',
|
|
2484
|
+
typeAnnotation: naslTypes.TypeAnnotation.createPrimitive('Integer'),
|
|
2485
|
+
}),
|
|
2486
|
+
}),
|
|
2487
|
+
});
|
|
2488
|
+
}
|
|
2489
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'ReturnStatement') {</span>
|
|
2490
|
+
<span class="cstat-no" title="statement not covered" > if (node.argument) {</span>
|
|
2491
|
+
<span class="cstat-no" title="statement not covered" > if (type === 'expression') {</span>
|
|
2492
|
+
<span class="cstat-no" title="statement not covered" > return transformLogicNode(node.argument);</span>
|
|
2493
|
+
}
|
|
2494
|
+
<span class="cstat-no" title="statement not covered" > if (!logic.returns.length) {</span>
|
|
2495
|
+
<span class="cstat-no" title="statement not covered" > logic.returns.push(new naslTypes.Return({</span>
|
|
2496
|
+
name: 'result',
|
|
2497
|
+
}));
|
|
2498
|
+
}
|
|
2499
|
+
<span class="cstat-no" title="statement not covered" > return new naslTypes.Assignment({</span>
|
|
2500
|
+
left: new naslTypes.Identifier({
|
|
2501
|
+
name: logic.returns[0].name,
|
|
2502
|
+
}),
|
|
2503
|
+
right: transformLogicNode(node.argument),
|
|
2504
|
+
});
|
|
2505
|
+
}
|
|
2506
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'EmptyStatement') {</span>
|
|
2507
|
+
<span class="cstat-no" title="statement not covered" > return node.leadingComments && new naslTypes.Comment({</span>
|
|
2508
|
+
value: String(node.leadingComments[0].value),
|
|
2509
|
+
});
|
|
2510
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.type === 'BlockStatement') {</span>
|
|
2511
|
+
<span class="cstat-no" title="statement not covered" > return transformLogicNode(node?.body?.[0]);</span>
|
|
2512
|
+
} else {
|
|
2513
|
+
<span class="cstat-no" title="statement not covered" > console.error(node);</span>
|
|
2514
|
+
<span class="cstat-no" title="statement not covered" > if (debug) {</span>
|
|
2515
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
|
|
2516
|
+
}
|
|
2517
|
+
}
|
|
2518
|
+
}
|
|
2519
|
+
|
|
2520
|
+
const root = <span class="cstat-no" title="statement not covered" >babel.parseSync(tsCode, {</span>
|
|
2521
|
+
filename: 'result.ts',
|
|
2522
|
+
presets: [require('@babel/preset-typescript')],
|
|
2523
|
+
}) as babelTypes.File;
|
|
2524
|
+
|
|
2525
|
+
let parameters: babelTypes.Identifier[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
2526
|
+
let statements: babelTypes.Statement[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
2527
|
+
|
|
2528
|
+
let func: babelTypes.FunctionDeclaration;
|
|
2529
|
+
<span class="cstat-no" title="statement not covered" > if (root.program.body[0].type === 'ExportNamedDeclaration') {</span>
|
|
2530
|
+
<span class="cstat-no" title="statement not covered" > func = root.program.body[0].declaration as babelTypes.FunctionDeclaration;</span>
|
|
2531
|
+
}
|
|
2532
|
+
<span class="cstat-no" title="statement not covered" > parameters = func.params as babelTypes.Identifier[];</span>
|
|
2533
|
+
<span class="cstat-no" title="statement not covered" > statements = func.body.body;</span>
|
|
2534
|
+
// traverse<babelTypes.Node>((current) => {
|
|
2535
|
+
// if (current.node.type === 'FunctionDeclaration' && (current.node.id.name === contextLogicName || type === 'expression')) {
|
|
2536
|
+
// return true;
|
|
2537
|
+
// }
|
|
2538
|
+
// }, { node: root.program }, { mode: 'anyObject' });
|
|
2539
|
+
|
|
2540
|
+
const currentPositionComment = <span class="cstat-no" title="statement not covered" >root.comments.find(<span class="fstat-no" title="function not covered" >(c</span>omment) => <span class="cstat-no" title="statement not covered" >comment.type === 'CommentLine' && comment.value === ' 当前位置')</span>;</span>
|
|
2541
|
+
<span class="cstat-no" title="statement not covered" > if (currentPositionComment) {</span>
|
|
2542
|
+
<span class="cstat-no" title="statement not covered" > statements = statements.filter(<span class="fstat-no" title="function not covered" >(s</span>tat) => <span class="cstat-no" title="statement not covered" >stat.start > currentPositionComment.start)</span>;</span>
|
|
2543
|
+
}
|
|
2544
|
+
|
|
2545
|
+
// traverse<babelTypes.Node>((current) => {
|
|
2546
|
+
// if (!current.node.type)
|
|
2547
|
+
// console.log(current.key, current.node);
|
|
2548
|
+
// // console.log(current.node.type);
|
|
2549
|
+
// }, { node: {
|
|
2550
|
+
// type: 'BlockStatement',
|
|
2551
|
+
// body: statements,
|
|
2552
|
+
// } as babelTypes.BlockStatement }, {
|
|
2553
|
+
// mode: 'anyObject',
|
|
2554
|
+
// depthFirst: true,
|
|
2555
|
+
// excludedKeySet: new Set(['loc']),
|
|
2556
|
+
// });
|
|
2557
|
+
|
|
2558
|
+
<span class="cstat-no" title="statement not covered" > parameters.forEach(<span class="fstat-no" title="function not covered" >(n</span>ode) => {</span>
|
|
2559
|
+
const param = <span class="cstat-no" title="statement not covered" >transformParam(node);</span>
|
|
2560
|
+
<span class="cstat-no" title="statement not covered" > param && logic.params.push(param);</span>
|
|
2561
|
+
});
|
|
2562
|
+
<span class="cstat-no" title="statement not covered" > statements.forEach(<span class="fstat-no" title="function not covered" >(n</span>ode) => {</span>
|
|
2563
|
+
const item = <span class="cstat-no" title="statement not covered" >transformLogicNode(node);</span>
|
|
2564
|
+
<span class="cstat-no" title="statement not covered" > item && logic.body.push(item);</span>
|
|
2565
|
+
});
|
|
2566
|
+
|
|
2567
|
+
// console.log(JSON.stringify(logic));
|
|
2568
|
+
// try {
|
|
2569
|
+
// console.log(logic.toNaturalTS());
|
|
2570
|
+
// } catch (e) {
|
|
2571
|
+
// console.error(e);
|
|
2572
|
+
// }
|
|
2573
|
+
|
|
2574
|
+
<span class="cstat-no" title="statement not covered" > return logic;</span>
|
|
2575
|
+
}
|
|
2576
|
+
|
|
2577
|
+
export function <span class="fstat-no" title="function not covered" >tryTransformTSCode(</span>tsCode: string, contextLogicName: string, type?: string): naslTypes.Logic {
|
|
2578
|
+
<span class="cstat-no" title="statement not covered" > if (tsCode.includes('```')) {</span>
|
|
2579
|
+
const cap = <span class="cstat-no" title="statement not covered" >tsCode.match(/```.*\n([\s\S]+?)```/);</span>
|
|
2580
|
+
<span class="cstat-no" title="statement not covered" > if (cap)</span>
|
|
2581
|
+
<span class="cstat-no" title="statement not covered" > tsCode = cap[1].trim();</span>
|
|
2582
|
+
}
|
|
2583
|
+
|
|
2584
|
+
<span class="cstat-no" title="statement not covered" > return transformTSCode(tsCode, contextLogicName, type);</span>
|
|
2585
|
+
}
|
|
2586
|
+
|
|
2587
|
+
export function <span class="fstat-no" title="function not covered" >transformTSCodeEx(</span>answer: any, activeLogic: any, context: any) {
|
|
2588
|
+
let logicName = <span class="cstat-no" title="statement not covered" >activeLogic.name;</span>
|
|
2589
|
+
const { app, nasl } = <span class="cstat-no" title="statement not covered" >context;</span>
|
|
2590
|
+
<span class="cstat-no" title="statement not covered" > if (activeLogic.parentNode instanceof nasl.BindEvent && activeLogic.parentNode.parentNode instanceof nasl.View) {</span>
|
|
2591
|
+
<span class="cstat-no" title="statement not covered" > logicName = `viewLogic_${activeLogic.name}`;</span>
|
|
2592
|
+
} else <span class="cstat-no" title="statement not covered" >if (activeLogic.parentNode instanceof nasl.BindEvent && activeLogic.parentNode.parentNode instanceof nasl.ViewElement) {</span>
|
|
2593
|
+
<span class="cstat-no" title="statement not covered" > logicName = `on_${(activeLogic.parentNode).element.name}_${activeLogic.name}`;</span>
|
|
2594
|
+
} else {
|
|
2595
|
+
<span class="cstat-no" title="statement not covered" > logicName = activeLogic.name;</span>
|
|
2596
|
+
}
|
|
2597
|
+
|
|
2598
|
+
const logic = <span class="cstat-no" title="statement not covered" >tryTransformTSCode(answer, logicName);</span>
|
|
2599
|
+
<span class="cstat-no" title="statement not covered" > app.emit('collect:start', { actionMsg: '自然语言生成代码' });</span>
|
|
2600
|
+
<span class="cstat-no" title="statement not covered" > logic.params.forEach(<span class="fstat-no" title="function not covered" >(p</span>aram: any) => {</span>
|
|
2601
|
+
<span class="cstat-no" title="statement not covered" > if (!activeLogic.params.find(<span class="fstat-no" title="function not covered" >(_</span>: any) => <span class="cstat-no" title="statement not covered" >_.name === param.name)</span>)</span>
|
|
2602
|
+
<span class="cstat-no" title="statement not covered" > activeLogic.addParam(param.toJSON());</span>
|
|
2603
|
+
});
|
|
2604
|
+
<span class="cstat-no" title="statement not covered" > logic.variables.forEach(<span class="fstat-no" title="function not covered" >(v</span>ariable: any) => {</span>
|
|
2605
|
+
<span class="cstat-no" title="statement not covered" > if (!activeLogic.variables.find(<span class="fstat-no" title="function not covered" >(_</span>: any) => <span class="cstat-no" title="statement not covered" >_.name === variable.name)</span>)</span>
|
|
2606
|
+
<span class="cstat-no" title="statement not covered" > activeLogic.addVariable(variable.toJSON());</span>
|
|
2607
|
+
});
|
|
2608
|
+
<span class="cstat-no" title="statement not covered" > if (logic.returns.length && !activeLogic.returns.length) {</span>
|
|
2609
|
+
<span class="cstat-no" title="statement not covered" > activeLogic.addReturn(logic.returns[0].toJSON());</span>
|
|
2610
|
+
}
|
|
2611
|
+
<span class="cstat-no" title="statement not covered" > logic.body.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => <span class="cstat-no" title="statement not covered" >activeLogic.insertItemInBodyAt(item.toJSON(), activeLogic.body.length - 1))</span>;</span>
|
|
2612
|
+
<span class="cstat-no" title="statement not covered" > app.emit('collect:end');</span>
|
|
2613
|
+
}
|
|
2614
|
+
|
|
2615
|
+
export function <span class="fstat-no" title="function not covered" >transformTSCodeToExpression(</span>answer: any, context: any) {
|
|
2616
|
+
let logic;
|
|
2617
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2618
|
+
<span class="cstat-no" title="statement not covered" > logic = tryTransformTSCode(answer, '', 'expression');</span>
|
|
2619
|
+
} catch (error) {
|
|
2620
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(error);</span>
|
|
2621
|
+
}
|
|
2622
|
+
const { app } = <span class="cstat-no" title="statement not covered" >context;</span>
|
|
2623
|
+
<span class="cstat-no" title="statement not covered" > app.emit('collect:start', { actionMsg: '自然语言生成代码' });</span>
|
|
2624
|
+
const { body } = <span class="cstat-no" title="statement not covered" >logic;</span>
|
|
2625
|
+
<span class="cstat-no" title="statement not covered" > app.emit('collect:end');</span>
|
|
2626
|
+
<span class="cstat-no" title="statement not covered" > return body;</span>
|
|
2627
|
+
}
|
|
2628
|
+
</pre></td></tr></table></pre>
|
|
2629
|
+
|
|
2630
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
2631
|
+
</div><!-- /wrapper -->
|
|
2632
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
2633
|
+
Code coverage generated by
|
|
2634
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2635
|
+
at 2023-10-18T11:36:07.885Z
|
|
2636
|
+
</div>
|
|
2637
|
+
<script src="../../prettify.js"></script>
|
|
2638
|
+
<script>
|
|
2639
|
+
window.onload = function () {
|
|
2640
|
+
prettyPrint();
|
|
2641
|
+
};
|
|
2642
|
+
</script>
|
|
2643
|
+
<script src="../../sorter.js"></script>
|
|
2644
|
+
<script src="../../block-navigation.js"></script>
|
|
2645
|
+
</body>
|
|
2646
|
+
</html>
|
|
2647
|
+
|