@demos-europe/demosplan-ui 0.4.12 → 0.4.13
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/.yarn/install-state.gz +0 -0
- package/CHANGELOG.md +10 -0
- package/babel.config.js +9 -9
- package/dist/demosplan-ui.umd.js +1 -1
- package/eslint.config.js +104 -0
- package/jest/shallowMountWithGlobalMocks.js +8 -6
- package/jest.config.js +4 -4
- package/package.json +12 -5
- package/scripts/buildTokens.js +1 -1
- package/scripts/utils/transformTokens.js +2 -2
- package/src/components/DpAccordion/DpAccordion.vue +4 -4
- package/src/components/DpAnonymizeText/DpAnonymizeText.vue +4 -4
- package/src/components/DpBulkEditHeader/DpBulkEditHeader.stories.tsx +1 -1
- package/src/components/DpButton/DpButton.vue +51 -43
- package/src/components/DpButtonIcon/DpButtonIcon.vue +5 -5
- package/src/components/DpButtonRow/DpButtonRow.vue +5 -5
- package/src/components/DpCheckbox/DpCheckbox.vue +2 -2
- package/src/components/DpCheckboxGroup/DpCheckboxGroup.vue +4 -4
- package/src/components/DpColumnSelector/DpColumnSelector.vue +1 -1
- package/src/components/DpContextualHelp/DpContextualHelp.vue +4 -4
- package/src/components/DpDataTable/DpDataTable.vue +53 -49
- package/src/components/DpDataTable/DpResizableColumn.vue +1 -1
- package/src/components/DpDataTable/DpTableHeader.vue +6 -4
- package/src/components/DpDataTable/DpTableRow.vue +1 -1
- package/src/components/DpDataTableExtended/DpDataTableExtended.vue +8 -8
- package/src/components/DpDataTableExtended/DpSelectPageItemCount.vue +2 -2
- package/src/components/DpDatetimePicker/DpDatetimePicker.vue +6 -6
- package/src/components/DpDetails/DpDetails.vue +1 -1
- package/src/components/DpDraggable/DpDraggable.vue +10 -12
- package/src/components/DpEditor/DpEditor.vue +45 -45
- package/src/components/DpEditor/DpResizableImage.vue +6 -6
- package/src/components/DpEditor/DpUploadModal.vue +11 -12
- package/src/components/DpEditor/MentionList.vue +5 -3
- package/src/components/DpEditor/libs/editorObscure.js +2 -2
- package/src/components/DpFlyout/DpFlyout.vue +5 -5
- package/src/components/DpIcon/util/iconConfig.ts +28 -28
- package/src/components/DpInlineNotification/DpInlineNotification.vue +2 -2
- package/src/components/DpLabel/DpLabel.vue +5 -3
- package/src/components/DpModal/DpModal.vue +5 -5
- package/src/components/DpMultiselect/DpMultiselect.vue +23 -25
- package/src/components/DpMultistepNav/DpMultistepNav.vue +2 -2
- package/src/components/DpPager/DpPager.vue +12 -12
- package/src/components/DpResettableInput/DpResettableInput.vue +3 -3
- package/src/components/DpSearchField/DpSearchField.vue +7 -2
- package/src/components/DpSelect/DpSelect.vue +3 -3
- package/src/components/DpSkeletonBox/DpSkeletonBox.vue +1 -1
- package/src/components/DpSlidebar/DpSlidebar.vue +2 -2
- package/src/components/DpSplitButton/DpSplitButton.vue +2 -2
- package/src/components/DpStickyElement/DpStickyElement.vue +1 -1
- package/src/components/DpTabs/DpTabs.vue +1 -1
- package/src/components/DpTextArea/DpTextArea.vue +4 -4
- package/src/components/DpTimePicker/DpTimePicker.vue +14 -14
- package/src/components/DpToggle/DpToggle.vue +1 -1
- package/src/components/DpTooltip/DpTooltip.vue +4 -2
- package/src/components/DpTooltip/utils/tooltip.js +4 -4
- package/src/components/DpTooltipIcon/DpTooltipIcon.vue +2 -2
- package/src/components/DpTransitionExpand/DpTransitionExpand.vue +1 -1
- package/src/components/DpTreeList/DpTreeList.vue +4 -4
- package/src/components/DpTreeList/DpTreeListCheckbox.vue +1 -1
- package/src/components/DpTreeList/DpTreeListNode.vue +12 -12
- package/src/components/DpUploadFiles/DpUpload.vue +2 -2
- package/src/components/DpUploadFiles/DpUploadFiles.vue +10 -10
- package/src/components/DpUploadFiles/DpUploadedFile.vue +6 -6
- package/src/components/DpUploadFiles/DpUploadedFileList.vue +4 -4
- package/src/components/DpVideoPlayer/DpVideoPlayer.vue +7 -7
- package/src/directives/CleanHtml/CleanHtml.js +1 -1
- package/src/directives/Tooltip/Tooltip.js +1 -1
- package/src/lib/ActionMenu.js +48 -48
- package/src/lib/DpApi.js +2 -2
- package/src/lib/FileInfo.js +15 -15
- package/src/lib/validation/utils/assignHandlerForTrigger.js +8 -8
- package/src/lib/validation/utils/assignHandlersForInputs.js +51 -51
- package/src/lib/validation/utils/assignObserver.js +29 -29
- package/src/lib/validation/utils/helpers.js +4 -4
- package/src/lib/validation/utils/validateForm.js +15 -15
- package/src/lib/validation/utils/validateInputField.js +11 -11
- package/src/utils/index.js +2 -2
- package/tokens/dist/js/boxShadow.js +1 -1
- package/tokens/dist/js/breakpoints.js +1 -1
- package/tokens/dist/js/color.brand.js +1 -1
- package/tokens/dist/js/color.data.js +1 -1
- package/tokens/dist/js/color.palette.js +1 -1
- package/tokens/dist/js/color.ui.js +1 -1
- package/tokens/dist/js/fontSize.js +1 -1
- package/tokens/dist/js/rounded.js +1 -1
- package/tokens/dist/js/space.js +1 -1
- package/tokens/dist/js/zIndex.js +1 -1
- package/tokens/dist/scss/_boxShadow.scss +1 -1
- package/tokens/dist/scss/_breakpoints.scss +1 -1
- package/tokens/dist/scss/_color.brand.scss +1 -1
- package/tokens/dist/scss/_color.data.scss +1 -1
- package/tokens/dist/scss/_color.palette.scss +1 -1
- package/tokens/dist/scss/_color.ui.scss +1 -1
- package/tokens/dist/scss/_fontSize.scss +1 -1
- package/tokens/dist/scss/_rounded.scss +1 -1
- package/tokens/dist/scss/_space.scss +1 -1
- package/tokens/dist/scss/_zIndex.scss +1 -1
- package/types/icons.ts +26 -26
- package/coverage/clover.xml +0 -6
- package/coverage/coverage-final.json +0 -1
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/components/DpContextualHelp/DpContextualHelp.vue.html +0 -271
- package/coverage/lcov-report/components/DpContextualHelp/index.html +0 -116
- package/coverage/lcov-report/components/DpDataTableExtended/DataTableSearch.js.html +0 -190
- package/coverage/lcov-report/components/DpDataTableExtended/index.html +0 -116
- package/coverage/lcov-report/components/DpEditor/libs/handleWordPaste.js.html +0 -1138
- package/coverage/lcov-report/components/DpEditor/libs/index.html +0 -116
- package/coverage/lcov-report/components/DpIcon/DpIcon.vue.html +0 -256
- package/coverage/lcov-report/components/DpIcon/index.html +0 -131
- package/coverage/lcov-report/components/DpIcon/index.ts.html +0 -91
- package/coverage/lcov-report/components/DpIcon/util/iconVariables.js.html +0 -682
- package/coverage/lcov-report/components/DpIcon/util/index.html +0 -116
- package/coverage/lcov-report/components/DpTooltip/utils/index.html +0 -116
- package/coverage/lcov-report/components/DpTooltip/utils/tooltip.js.html +0 -490
- package/coverage/lcov-report/components/shared/index.html +0 -116
- package/coverage/lcov-report/components/shared/translations.js.html +0 -490
- package/coverage/lcov-report/directives/CleanHtml/CleanHtml.js.html +0 -265
- package/coverage/lcov-report/directives/CleanHtml/index.html +0 -116
- package/coverage/lcov-report/directives/Tooltip/Tooltip.js.html +0 -349
- package/coverage/lcov-report/directives/Tooltip/index.html +0 -116
- package/coverage/lcov-report/directives/index.html +0 -116
- package/coverage/lcov-report/directives/index.js.html +0 -109
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -101
- package/coverage/lcov-report/jest/index.html +0 -116
- package/coverage/lcov-report/jest/shallowMountWithGlobalMocks.js.html +0 -208
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/components/DpCheckbox/DpCheckbox.vue.html +0 -424
- package/coverage/lcov-report/src/components/DpCheckbox/index.html +0 -116
- package/coverage/lcov-report/src/components/DpContextualHelp/DpContextualHelp.vue.html +0 -361
- package/coverage/lcov-report/src/components/DpContextualHelp/index.html +0 -131
- package/coverage/lcov-report/src/components/DpContextualHelp/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpDataTableExtended/DataTableSearch.js.html +0 -190
- package/coverage/lcov-report/src/components/DpDataTableExtended/index.html +0 -116
- package/coverage/lcov-report/src/components/DpDraggable/DpDraggable.vue.html +0 -499
- package/coverage/lcov-report/src/components/DpDraggable/index.html +0 -131
- package/coverage/lcov-report/src/components/DpDraggable/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpEditor/libs/handleWordPaste.js.html +0 -1153
- package/coverage/lcov-report/src/components/DpEditor/libs/index.html +0 -116
- package/coverage/lcov-report/src/components/DpIcon/DpIcon.vue.html +0 -256
- package/coverage/lcov-report/src/components/DpIcon/index.html +0 -131
- package/coverage/lcov-report/src/components/DpIcon/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpIcon/util/iconVariables.js.html +0 -706
- package/coverage/lcov-report/src/components/DpIcon/util/index.html +0 -116
- package/coverage/lcov-report/src/components/DpInput/DpInput.vue.html +0 -937
- package/coverage/lcov-report/src/components/DpInput/index.html +0 -131
- package/coverage/lcov-report/src/components/DpInput/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpLabel/DpLabel.vue.html +0 -409
- package/coverage/lcov-report/src/components/DpLabel/index.html +0 -131
- package/coverage/lcov-report/src/components/DpLabel/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpModal/DpModal.vue.html +0 -739
- package/coverage/lcov-report/src/components/DpModal/index.html +0 -131
- package/coverage/lcov-report/src/components/DpModal/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpNotification/DpNotification.vue.html +0 -343
- package/coverage/lcov-report/src/components/DpNotification/index.html +0 -131
- package/coverage/lcov-report/src/components/DpNotification/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpObscure/DpObscure.vue.html +0 -148
- package/coverage/lcov-report/src/components/DpObscure/index.html +0 -131
- package/coverage/lcov-report/src/components/DpObscure/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpSelect/DpSelect.vue.html +0 -559
- package/coverage/lcov-report/src/components/DpSelect/index.html +0 -131
- package/coverage/lcov-report/src/components/DpSelect/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpTooltip/utils/index.html +0 -116
- package/coverage/lcov-report/src/components/DpTooltip/utils/tooltip.js.html +0 -490
- package/coverage/lcov-report/src/components/DpTreeList/DpTreeList.vue.html +0 -1099
- package/coverage/lcov-report/src/components/DpTreeList/DpTreeListCheckbox.vue.html +0 -301
- package/coverage/lcov-report/src/components/DpTreeList/DpTreeListNode.vue.html +0 -1144
- package/coverage/lcov-report/src/components/DpTreeList/DpTreeListToggle.vue.html +0 -382
- package/coverage/lcov-report/src/components/DpTreeList/index.html +0 -161
- package/coverage/lcov-report/src/components/DpTreeList/utils/constants.js.html +0 -100
- package/coverage/lcov-report/src/components/DpTreeList/utils/index.html +0 -116
- package/coverage/lcov-report/src/components/DpUploadFiles/DpUpload.vue.html +0 -979
- package/coverage/lcov-report/src/components/DpUploadFiles/DpUploadFiles.vue.html +0 -970
- package/coverage/lcov-report/src/components/DpUploadFiles/DpUploadedFile.vue.html +0 -340
- package/coverage/lcov-report/src/components/DpUploadFiles/DpUploadedFileList.vue.html +0 -202
- package/coverage/lcov-report/src/components/DpUploadFiles/index.html +0 -176
- package/coverage/lcov-report/src/components/DpUploadFiles/index.ts.html +0 -91
- package/coverage/lcov-report/src/components/DpUploadFiles/utils/UppyTranslations.js.html +0 -151
- package/coverage/lcov-report/src/components/DpUploadFiles/utils/index.html +0 -116
- package/coverage/lcov-report/src/components/shared/index.html +0 -116
- package/coverage/lcov-report/src/components/shared/translations.js.html +0 -508
- package/coverage/lcov-report/src/directives/CleanHtml/CleanHtml.js.html +0 -265
- package/coverage/lcov-report/src/directives/CleanHtml/index.html +0 -116
- package/coverage/lcov-report/src/directives/Tooltip/Tooltip.js.html +0 -349
- package/coverage/lcov-report/src/directives/Tooltip/index.html +0 -116
- package/coverage/lcov-report/src/directives/index.html +0 -116
- package/coverage/lcov-report/src/directives/index.js.html +0 -109
- package/coverage/lcov-report/src/lib/ActionMenu.js.html +0 -610
- package/coverage/lcov-report/src/lib/Detabinator.js.html +0 -304
- package/coverage/lcov-report/src/lib/DpApi.js.html +0 -748
- package/coverage/lcov-report/src/lib/DpConfirm.js.html +0 -118
- package/coverage/lcov-report/src/lib/DpGetCssVariable.js.html +0 -103
- package/coverage/lcov-report/src/lib/FileInfo.js.html +0 -574
- package/coverage/lcov-report/src/lib/HighlightHashLink.js.html +0 -160
- package/coverage/lcov-report/src/lib/MatchMedia.js.html +0 -220
- package/coverage/lcov-report/src/lib/SideNav.js.html +0 -712
- package/coverage/lcov-report/src/lib/Sticky.js.html +0 -223
- package/coverage/lcov-report/src/lib/TableWrapper.js.html +0 -214
- package/coverage/lcov-report/src/lib/index.html +0 -281
- package/coverage/lcov-report/src/lib/index.js.html +0 -190
- package/coverage/lcov-report/src/lib/validation/utils/assignHandlersForInputs.js.html +0 -400
- package/coverage/lcov-report/src/lib/validation/utils/helpers.js.html +0 -523
- package/coverage/lcov-report/src/lib/validation/utils/index.html +0 -236
- package/coverage/lcov-report/src/lib/validation/utils/validateDatepicker.js.html +0 -160
- package/coverage/lcov-report/src/lib/validation/utils/validateEmail.js.html +0 -136
- package/coverage/lcov-report/src/lib/validation/utils/validateFieldset.js.html +0 -163
- package/coverage/lcov-report/src/lib/validation/utils/validateForm.js.html +0 -205
- package/coverage/lcov-report/src/lib/validation/utils/validateInputField.js.html +0 -403
- package/coverage/lcov-report/src/lib/validation/utils/validateMultiselect.js.html +0 -121
- package/coverage/lcov-report/src/lib/validation/utils/validateTiptap.js.html +0 -160
- package/coverage/lcov-report/src/mixins/dpSelectAllMixin.js.html +0 -232
- package/coverage/lcov-report/src/mixins/dpValidateMixin.js.html +0 -460
- package/coverage/lcov-report/src/mixins/index.html +0 -176
- package/coverage/lcov-report/src/mixins/index.js.html +0 -124
- package/coverage/lcov-report/src/mixins/prefixClassMixin/index.html +0 -116
- package/coverage/lcov-report/src/mixins/prefixClassMixin/prefixClassMixin.js.html +0 -121
- package/coverage/lcov-report/src/mixins/sessionStorageMixin.js.html +0 -160
- package/coverage/lcov-report/src/mixins/tableSelectAllItems.js.html +0 -427
- package/coverage/lcov-report/src/shared/index.html +0 -116
- package/coverage/lcov-report/src/shared/index.js.html +0 -103
- package/coverage/lcov-report/src/shared/props/index.html +0 -116
- package/coverage/lcov-report/src/shared/props/props.js.html +0 -310
- package/coverage/lcov-report/src/utils/date.js.html +0 -208
- package/coverage/lcov-report/src/utils/debounce.js.html +0 -163
- package/coverage/lcov-report/src/utils/deepMerge.js.html +0 -175
- package/coverage/lcov-report/src/utils/formatBytes.js.html +0 -133
- package/coverage/lcov-report/src/utils/formatString.js.html +0 -109
- package/coverage/lcov-report/src/utils/fullscreen.js.html +0 -253
- package/coverage/lcov-report/src/utils/getAnimationEventName.js.html +0 -157
- package/coverage/lcov-report/src/utils/getScrollTop.js.html +0 -109
- package/coverage/lcov-report/src/utils/hasOwnProp.js.html +0 -142
- package/coverage/lcov-report/src/utils/hasPermission.js.html +0 -214
- package/coverage/lcov-report/src/utils/index.html +0 -341
- package/coverage/lcov-report/src/utils/index.js.html +0 -217
- package/coverage/lcov-report/src/utils/lengthHint/index.html +0 -116
- package/coverage/lcov-report/src/utils/lengthHint/lengthHint.js.html +0 -268
- package/coverage/lcov-report/src/utils/prefixClass.js.html +0 -199
- package/coverage/lcov-report/src/utils/resistFingerprintingDuckTest.js.html +0 -232
- package/coverage/lcov-report/src/utils/sortAlphabetically.js.html +0 -193
- package/coverage/lcov-report/src/utils/throttle.js.html +0 -145
- package/coverage/lcov-report/src/utils/uniqueArrayByObjectKey.js.html +0 -151
- package/coverage/lcov-report/utils/date.js.html +0 -208
- package/coverage/lcov-report/utils/debounce.js.html +0 -163
- package/coverage/lcov-report/utils/deepMerge.js.html +0 -175
- package/coverage/lcov-report/utils/formatBytes.js.html +0 -133
- package/coverage/lcov-report/utils/fullscreen.js.html +0 -253
- package/coverage/lcov-report/utils/getAnimationEventName.js.html +0 -157
- package/coverage/lcov-report/utils/getScrollTop.js.html +0 -109
- package/coverage/lcov-report/utils/hasOwnProp.js.html +0 -142
- package/coverage/lcov-report/utils/hasPermission.js.html +0 -214
- package/coverage/lcov-report/utils/index.html +0 -326
- package/coverage/lcov-report/utils/index.js.html +0 -211
- package/coverage/lcov-report/utils/lengthHint/index.html +0 -116
- package/coverage/lcov-report/utils/lengthHint/lengthHint.js.html +0 -268
- package/coverage/lcov-report/utils/prefixClass.js.html +0 -199
- package/coverage/lcov-report/utils/resistFingerprintingDuckTest.js.html +0 -232
- package/coverage/lcov-report/utils/sortAlphabetically.js.html +0 -193
- package/coverage/lcov-report/utils/throttle.js.html +0 -145
- package/coverage/lcov-report/utils/uniqueArrayByObjectKey.js.html +0 -151
- package/coverage/lcov.info +0 -0
- package/style/style.css +0 -1002
|
@@ -1,1153 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/components/DpEditor/libs/handleWordPaste.js</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../../../index.html">All files</a> / <a href="index.html">src/components/DpEditor/libs</a> handleWordPaste.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">6.79% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>7/103</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">7.27% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>4/55</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">15.78% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>3/19</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">7% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>7/100</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
424
|
-
<span class="cline-any cline-neutral"> </span>
|
|
425
|
-
<span class="cline-any cline-neutral"> </span>
|
|
426
|
-
<span class="cline-any cline-neutral"> </span>
|
|
427
|
-
<span class="cline-any cline-neutral"> </span>
|
|
428
|
-
<span class="cline-any cline-neutral"> </span>
|
|
429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
433
|
-
<span class="cline-any cline-neutral"> </span>
|
|
434
|
-
<span class="cline-any cline-neutral"> </span>
|
|
435
|
-
<span class="cline-any cline-neutral"> </span>
|
|
436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
437
|
-
<span class="cline-any cline-neutral"> </span>
|
|
438
|
-
<span class="cline-any cline-neutral"> </span>
|
|
439
|
-
<span class="cline-any cline-neutral"> </span>
|
|
440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
441
|
-
<span class="cline-any cline-neutral"> </span>
|
|
442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
443
|
-
<span class="cline-any cline-yes">3x</span>
|
|
444
|
-
<span class="cline-any cline-neutral"> </span>
|
|
445
|
-
<span class="cline-any cline-neutral"> </span>
|
|
446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
452
|
-
<span class="cline-any cline-neutral"> </span>
|
|
453
|
-
<span class="cline-any cline-neutral"> </span>
|
|
454
|
-
<span class="cline-any cline-yes">3x</span>
|
|
455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
457
|
-
<span class="cline-any cline-neutral"> </span>
|
|
458
|
-
<span class="cline-any cline-neutral"> </span>
|
|
459
|
-
<span class="cline-any cline-neutral"> </span>
|
|
460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
461
|
-
<span class="cline-any cline-neutral"> </span>
|
|
462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
468
|
-
<span class="cline-any cline-neutral"> </span>
|
|
469
|
-
<span class="cline-any cline-no"> </span>
|
|
470
|
-
<span class="cline-any cline-no"> </span>
|
|
471
|
-
<span class="cline-any cline-no"> </span>
|
|
472
|
-
<span class="cline-any cline-no"> </span>
|
|
473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-no"> </span>
|
|
475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
479
|
-
<span class="cline-any cline-neutral"> </span>
|
|
480
|
-
<span class="cline-any cline-neutral"> </span>
|
|
481
|
-
<span class="cline-any cline-neutral"> </span>
|
|
482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
483
|
-
<span class="cline-any cline-neutral"> </span>
|
|
484
|
-
<span class="cline-any cline-neutral"> </span>
|
|
485
|
-
<span class="cline-any cline-neutral"> </span>
|
|
486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-no"> </span>
|
|
492
|
-
<span class="cline-any cline-no"> </span>
|
|
493
|
-
<span class="cline-any cline-no"> </span>
|
|
494
|
-
<span class="cline-any cline-neutral"> </span>
|
|
495
|
-
<span class="cline-any cline-neutral"> </span>
|
|
496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-neutral"> </span>
|
|
498
|
-
<span class="cline-any cline-no"> </span>
|
|
499
|
-
<span class="cline-any cline-no"> </span>
|
|
500
|
-
<span class="cline-any cline-no"> </span>
|
|
501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
502
|
-
<span class="cline-any cline-no"> </span>
|
|
503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-neutral"> </span>
|
|
508
|
-
<span class="cline-any cline-neutral"> </span>
|
|
509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
511
|
-
<span class="cline-any cline-neutral"> </span>
|
|
512
|
-
<span class="cline-any cline-neutral"> </span>
|
|
513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
517
|
-
<span class="cline-any cline-neutral"> </span>
|
|
518
|
-
<span class="cline-any cline-no"> </span>
|
|
519
|
-
<span class="cline-any cline-no"> </span>
|
|
520
|
-
<span class="cline-any cline-no"> </span>
|
|
521
|
-
<span class="cline-any cline-no"> </span>
|
|
522
|
-
<span class="cline-any cline-no"> </span>
|
|
523
|
-
<span class="cline-any cline-neutral"> </span>
|
|
524
|
-
<span class="cline-any cline-neutral"> </span>
|
|
525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
526
|
-
<span class="cline-any cline-neutral"> </span>
|
|
527
|
-
<span class="cline-any cline-neutral"> </span>
|
|
528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
529
|
-
<span class="cline-any cline-no"> </span>
|
|
530
|
-
<span class="cline-any cline-neutral"> </span>
|
|
531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
533
|
-
<span class="cline-any cline-neutral"> </span>
|
|
534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
536
|
-
<span class="cline-any cline-no"> </span>
|
|
537
|
-
<span class="cline-any cline-no"> </span>
|
|
538
|
-
<span class="cline-any cline-no"> </span>
|
|
539
|
-
<span class="cline-any cline-no"> </span>
|
|
540
|
-
<span class="cline-any cline-no"> </span>
|
|
541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
543
|
-
<span class="cline-any cline-no"> </span>
|
|
544
|
-
<span class="cline-any cline-no"> </span>
|
|
545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-no"> </span>
|
|
548
|
-
<span class="cline-any cline-no"> </span>
|
|
549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-no"> </span>
|
|
553
|
-
<span class="cline-any cline-no"> </span>
|
|
554
|
-
<span class="cline-any cline-no"> </span>
|
|
555
|
-
<span class="cline-any cline-no"> </span>
|
|
556
|
-
<span class="cline-any cline-neutral"> </span>
|
|
557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-no"> </span>
|
|
559
|
-
<span class="cline-any cline-no"> </span>
|
|
560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
562
|
-
<span class="cline-any cline-no"> </span>
|
|
563
|
-
<span class="cline-any cline-no"> </span>
|
|
564
|
-
<span class="cline-any cline-neutral"> </span>
|
|
565
|
-
<span class="cline-any cline-neutral"> </span>
|
|
566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-neutral"> </span>
|
|
572
|
-
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
574
|
-
<span class="cline-any cline-no"> </span>
|
|
575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-no"> </span>
|
|
578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
582
|
-
<span class="cline-any cline-no"> </span>
|
|
583
|
-
<span class="cline-any cline-neutral"> </span>
|
|
584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-neutral"> </span>
|
|
587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
590
|
-
<span class="cline-any cline-neutral"> </span>
|
|
591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
595
|
-
<span class="cline-any cline-no"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-no"> </span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-no"> </span>
|
|
602
|
-
<span class="cline-any cline-no"> </span>
|
|
603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
604
|
-
<span class="cline-any cline-no"> </span>
|
|
605
|
-
<span class="cline-any cline-no"> </span>
|
|
606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-no"> </span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
611
|
-
<span class="cline-any cline-no"> </span>
|
|
612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-no"> </span>
|
|
618
|
-
<span class="cline-any cline-no"> </span>
|
|
619
|
-
<span class="cline-any cline-neutral"> </span>
|
|
620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
621
|
-
<span class="cline-any cline-no"> </span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-no"> </span>
|
|
637
|
-
<span class="cline-any cline-no"> </span>
|
|
638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-no"> </span>
|
|
640
|
-
<span class="cline-any cline-no"> </span>
|
|
641
|
-
<span class="cline-any cline-no"> </span>
|
|
642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
643
|
-
<span class="cline-any cline-no"> </span>
|
|
644
|
-
<span class="cline-any cline-no"> </span>
|
|
645
|
-
<span class="cline-any cline-no"> </span>
|
|
646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
647
|
-
<span class="cline-any cline-no"> </span>
|
|
648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
649
|
-
<span class="cline-any cline-no"> </span>
|
|
650
|
-
<span class="cline-any cline-no"> </span>
|
|
651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
652
|
-
<span class="cline-any cline-no"> </span>
|
|
653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-no"> </span>
|
|
656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
657
|
-
<span class="cline-any cline-no"> </span>
|
|
658
|
-
<span class="cline-any cline-no"> </span>
|
|
659
|
-
<span class="cline-any cline-no"> </span>
|
|
660
|
-
<span class="cline-any cline-no"> </span>
|
|
661
|
-
<span class="cline-any cline-no"> </span>
|
|
662
|
-
<span class="cline-any cline-neutral"> </span>
|
|
663
|
-
<span class="cline-any cline-neutral"> </span>
|
|
664
|
-
<span class="cline-any cline-no"> </span>
|
|
665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
666
|
-
<span class="cline-any cline-no"> </span>
|
|
667
|
-
<span class="cline-any cline-no"> </span>
|
|
668
|
-
<span class="cline-any cline-no"> </span>
|
|
669
|
-
<span class="cline-any cline-neutral"> </span>
|
|
670
|
-
<span class="cline-any cline-neutral"> </span>
|
|
671
|
-
<span class="cline-any cline-neutral"> </span>
|
|
672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
673
|
-
<span class="cline-any cline-no"> </span>
|
|
674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-no"> </span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-neutral"> </span>
|
|
687
|
-
<span class="cline-any cline-no"> </span>
|
|
688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
689
|
-
<span class="cline-any cline-neutral"> </span>
|
|
690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-neutral"> </span>
|
|
700
|
-
<span class="cline-any cline-no"> </span>
|
|
701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
703
|
-
<span class="cline-any cline-no"> </span>
|
|
704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-neutral"> </span>
|
|
708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-yes">3x</span>
|
|
716
|
-
<span class="cline-any cline-yes">3x</span>
|
|
717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-yes">3x</span>
|
|
719
|
-
<span class="cline-any cline-no"> </span>
|
|
720
|
-
<span class="cline-any cline-yes">3x</span>
|
|
721
|
-
<span class="cline-any cline-yes">3x</span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-no"> </span>
|
|
727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
729
|
-
<span class="cline-any cline-no"> </span>
|
|
730
|
-
<span class="cline-any cline-no"> </span>
|
|
731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-neutral"> </span>
|
|
733
|
-
<span class="cline-any cline-no"> </span>
|
|
734
|
-
<span class="cline-any cline-no"> </span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-no"> </span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-neutral"> </span>
|
|
740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-no"> </span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-no"> </span>
|
|
745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
747
|
-
<span class="cline-any cline-no"> </span>
|
|
748
|
-
<span class="cline-any cline-no"> </span>
|
|
749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
750
|
-
<span class="cline-any cline-no"> </span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-no"> </span>
|
|
755
|
-
<span class="cline-any cline-neutral"> </span>
|
|
756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-no"> </span>
|
|
758
|
-
<span class="cline-any cline-no"> </span>
|
|
759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
760
|
-
<span class="cline-any cline-no"> </span>
|
|
761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-no"> </span>
|
|
767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
768
|
-
<span class="cline-any cline-neutral"> </span>
|
|
769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
770
|
-
<span class="cline-any cline-neutral"> </span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-neutral"> </span>
|
|
773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-neutral"> </span>
|
|
777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { v4 as uuid } from 'uuid'
|
|
779
|
-
|
|
780
|
-
/**
|
|
781
|
-
* This parser should manage to detect if an clipbaord content comes from microsoft word (mso) or office365 (o365)
|
|
782
|
-
* And them clean and transform the data into something, that tiptap can display nested (un)orderen lists
|
|
783
|
-
*
|
|
784
|
-
* Because Microsoft is quite special the way they store data in their XML, its likely that this functions
|
|
785
|
-
* have to be adjusted to optimize special cases and not tested versions.
|
|
786
|
-
*
|
|
787
|
-
* The main method "handleWordContent" is designed to increase and in the future may handle images or tables as well
|
|
788
|
-
*
|
|
789
|
-
*/
|
|
790
|
-
|
|
791
|
-
/**
|
|
792
|
-
* Try to determin if the snippet from the clipboard comes from MS Office
|
|
793
|
-
*
|
|
794
|
-
* @param snippet{string}
|
|
795
|
-
*
|
|
796
|
-
* @return {boolean}
|
|
797
|
-
*/
|
|
798
|
-
function checkIfMso (snippet) {
|
|
799
|
-
return (/class="?Mso|style="[^"]*\bmso-|style='[^']*\bmso-|w:WordDocument|office:wo/i).test(snippet)
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
/**
|
|
803
|
-
* Try to determine if the snippet from the clipboard comes from Office365.
|
|
804
|
-
*
|
|
805
|
-
* @param snippet{string}
|
|
806
|
-
*
|
|
807
|
-
* @return {boolean}
|
|
808
|
-
*/
|
|
809
|
-
function checkIfOffice365 (snippet) {
|
|
810
|
-
return (/class="OutlineElement/).test(snippet)
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
/**
|
|
814
|
-
* Transforms a list item from office365 to a readable internal exchange Object
|
|
815
|
-
*
|
|
816
|
-
* Office365 stores the information for lists on the li items with a bunch of "data" and "data-aria" attributes
|
|
817
|
-
* instead of nesting them.
|
|
818
|
-
* To make the data handleable, we axtract that infos to a "Plain old Javascript Object"
|
|
819
|
-
*
|
|
820
|
-
* @param li{Element}
|
|
821
|
-
*
|
|
822
|
-
* @returns {Object<listId, indent, type, content>}
|
|
823
|
-
*/
|
|
824
|
-
function <span class="fstat-no" title="function not covered" >createItemFrom365List </span>(li) {
|
|
825
|
-
const indent = <span class="cstat-no" title="statement not covered" >parseInt(li.getAttribute('data-aria-level')) </span>// Current level of indentation
|
|
826
|
-
const listId = <span class="cstat-no" title="statement not covered" >parseInt(li.getAttribute('data-listid')) </span>// List ID
|
|
827
|
-
const type = <span class="cstat-no" title="statement not covered" >li.parentElement.nodeName </span>// Can be 'ul' or 'ol'
|
|
828
|
-
const content = <span class="cstat-no" title="statement not covered" >li.innerHTML.replace(/&nbsp;/gmi, ' ')</span>
|
|
829
|
-
|
|
830
|
-
<span class="cstat-no" title="statement not covered" > return { listId, indent, type, content }</span>
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
/**
|
|
834
|
-
* Transforms a list item from Mso to a readable and manageable object
|
|
835
|
-
*
|
|
836
|
-
* Microsoft Office stores all items in a kind of plain structure, List items too.
|
|
837
|
-
* The information, if an item is a list item is defined by the class name "[class^=MsoList]".
|
|
838
|
-
* Level and List-Id is put in the style attribute.
|
|
839
|
-
* To determin if its an ordered list, we have to check the leading listStyleType.
|
|
840
|
-
*
|
|
841
|
-
* @param li{Element}
|
|
842
|
-
*
|
|
843
|
-
* @returns {Object<listId, indent, type, content, listStyleType>}
|
|
844
|
-
*/
|
|
845
|
-
function <span class="fstat-no" title="function not covered" >createItemFromMsoList </span>(li) {
|
|
846
|
-
// "listInfo" is expected to be something like "mso-list: l1 level1 lfo1"
|
|
847
|
-
const listInfo = <span class="cstat-no" title="statement not covered" >li.getAttribute('style').match(/mso-list:([^'";]*)/i)[0] </span>// Find ListInfo
|
|
848
|
-
const indent = <span class="cstat-no" title="statement not covered" >parseInt(listInfo.match(/level\d+/i)[0].slice(5)) </span>// Strip "level" // current level of indentation
|
|
849
|
-
const listId = <span class="cstat-no" title="statement not covered" >listInfo.match(/lfo\d+/i)[0] || '' </span>// List ID
|
|
850
|
-
/*
|
|
851
|
-
* To define if its an OL or UL, we first have to create the whole List.
|
|
852
|
-
* Defining the type will be managed in `redefineMsoOrderedLists()` later in the transformation process
|
|
853
|
-
*/
|
|
854
|
-
const type = <span class="cstat-no" title="statement not covered" >'ul'</span>
|
|
855
|
-
const listStyleType = <span class="cstat-no" title="statement not covered" >li.querySelector('[data-val-supportLists]')?.getAttribute('data-val-supportLists') || ''</span>
|
|
856
|
-
const content = <span class="cstat-no" title="statement not covered" >li.innerHTML</span>
|
|
857
|
-
|
|
858
|
-
<span class="cstat-no" title="statement not covered" > return { listId, indent, type, content, listStyleType }</span>
|
|
859
|
-
}
|
|
860
|
-
|
|
861
|
-
/**
|
|
862
|
-
* Because Ms Word doesn't stores the information about the list type in such a way, that we can easily access it,
|
|
863
|
-
* we have to handle it manually.
|
|
864
|
-
* The approach is to take the structured list and step through each "sublist" (nested list).
|
|
865
|
-
* Within each list we compare the "listStyleTypes" of two elements to find out if they have the same style or not.
|
|
866
|
-
* If so, the list have to be unordered.
|
|
867
|
-
* For lists with just one element an additional check is implemented.
|
|
868
|
-
*
|
|
869
|
-
* @param listItemObjects
|
|
870
|
-
*
|
|
871
|
-
* @return {Object<listItemObjects>}
|
|
872
|
-
*/
|
|
873
|
-
function <span class="fstat-no" title="function not covered" >redefineMsoOrderedLists </span>(listItemObjects) {
|
|
874
|
-
<span class="cstat-no" title="statement not covered" > Object.values(listItemObjects).forEach(<span class="fstat-no" title="function not covered" >li</span>st => {</span>
|
|
875
|
-
let sublistId = <span class="cstat-no" title="statement not covered" >uuid()</span>
|
|
876
|
-
const sublistIdsAtPosition = <span class="cstat-no" title="statement not covered" >[sublistId]</span>
|
|
877
|
-
const sublistIds = <span class="cstat-no" title="statement not covered" >[sublistId]</span>
|
|
878
|
-
let pos = <span class="cstat-no" title="statement not covered" >0</span>
|
|
879
|
-
|
|
880
|
-
/*
|
|
881
|
-
* Group sublists by uuid.
|
|
882
|
-
* Due to the nesting, we can't know all siblings by just checking the previous, next items
|
|
883
|
-
* To make them groupable, lets add a sublistId to each element.
|
|
884
|
-
*/
|
|
885
|
-
<span class="cstat-no" title="statement not covered" > listItemObjects[list[0].listId].forEach(<span class="fstat-no" title="function not covered" >(l</span>i, i) => {</span>
|
|
886
|
-
/*
|
|
887
|
-
* If we "dive" into the next nesting level, we need a new uuid.
|
|
888
|
-
* But if we already have been in this level, but in another sublist,
|
|
889
|
-
* We have to keep the ID from the previous list.
|
|
890
|
-
* Therefore we have to store the IDs in two different ways.
|
|
891
|
-
*/
|
|
892
|
-
<span class="cstat-no" title="statement not covered" > if (i > 0 && list[i - 1].indent < list[i].indent) {</span>
|
|
893
|
-
<span class="cstat-no" title="statement not covered" > sublistId = uuid()</span>
|
|
894
|
-
<span class="cstat-no" title="statement not covered" > pos++</span>
|
|
895
|
-
<span class="cstat-no" title="statement not covered" > sublistIdsAtPosition[pos] = sublistId</span>
|
|
896
|
-
<span class="cstat-no" title="statement not covered" > sublistIds.push(sublistId)</span>
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
<span class="cstat-no" title="statement not covered" > if (i > 0 && list[i - 1].indent > list[i].indent) {</span>
|
|
900
|
-
<span class="cstat-no" title="statement not covered" > pos--</span>
|
|
901
|
-
}
|
|
902
|
-
|
|
903
|
-
<span class="cstat-no" title="statement not covered" > li.sublistId = sublistIdsAtPosition[pos]</span>
|
|
904
|
-
<span class="cstat-no" title="statement not covered" > li.idx = i</span>
|
|
905
|
-
})
|
|
906
|
-
|
|
907
|
-
// Check for each sublist (again) if its (un-)ordered
|
|
908
|
-
<span class="cstat-no" title="statement not covered" > sublistIds.forEach(<span class="fstat-no" title="function not covered" >su</span>blistId => {</span>
|
|
909
|
-
const sublist = <span class="cstat-no" title="statement not covered" >list.filter(<span class="fstat-no" title="function not covered" >el</span> => <span class="cstat-no" title="statement not covered" >el.sublistId === sublistId)</span></span>
|
|
910
|
-
<span class="cstat-no" title="statement not covered" > if (sublist.length > 1) {</span>
|
|
911
|
-
const mappedItems = <span class="cstat-no" title="statement not covered" >sublist</span>
|
|
912
|
-
.map(<span class="fstat-no" title="function not covered" >el</span> => {
|
|
913
|
-
// We assume, that if two items in one List have the same listStyleType, it is an unordered list
|
|
914
|
-
const type = <span class="cstat-no" title="statement not covered" >sublist[0].listStyleType === sublist[1].listStyleType ? 'ul' : 'ol'</span>
|
|
915
|
-
<span class="cstat-no" title="statement not covered" > return { ...el, type: type }</span>
|
|
916
|
-
})
|
|
917
|
-
|
|
918
|
-
<span class="cstat-no" title="statement not covered" > mappedItems.forEach(<span class="fstat-no" title="function not covered" >li</span> => {</span>
|
|
919
|
-
<span class="cstat-no" title="statement not covered" > listItemObjects[list[0].listId][li.idx] = li</span>
|
|
920
|
-
})
|
|
921
|
-
}
|
|
922
|
-
|
|
923
|
-
/*
|
|
924
|
-
* If we have just one list item we assume that a number or letter indicates an ordred list
|
|
925
|
-
* Only if listStyleType is an "o". Than we assume that its more likely that its an
|
|
926
|
-
* unordered list, than an ordered one because mso uses the "o" a outlined bullit.
|
|
927
|
-
*
|
|
928
|
-
* since the default is 'ul', we just have to change it to 'ol' if neccesary
|
|
929
|
-
*/
|
|
930
|
-
<span class="cstat-no" title="statement not covered" > if (sublist.length === 1 &&</span>
|
|
931
|
-
(/(\d+|\w+)/i).test(sublist[0].listStyleType) &&
|
|
932
|
-
sublist[0].listStyleType !== 'o') {
|
|
933
|
-
<span class="cstat-no" title="statement not covered" > listItemObjects[list[0].listId][sublist[0].idx].type = 'ol'</span>
|
|
934
|
-
}
|
|
935
|
-
})
|
|
936
|
-
})
|
|
937
|
-
|
|
938
|
-
<span class="cstat-no" title="statement not covered" > return listItemObjects</span>
|
|
939
|
-
}
|
|
940
|
-
|
|
941
|
-
/**
|
|
942
|
-
* Create objects that hold the information about the list items
|
|
943
|
-
* to be used for creating a nested list from that data.
|
|
944
|
-
*
|
|
945
|
-
* @param parsedDom{DOMTokenList}
|
|
946
|
-
* @param isMso{Boolean}
|
|
947
|
-
*
|
|
948
|
-
* @return {Object}
|
|
949
|
-
*/
|
|
950
|
-
function <span class="fstat-no" title="function not covered" >createLists </span>(parsedDom, isMso) {
|
|
951
|
-
let listItemObjects = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
952
|
-
|
|
953
|
-
const listItems = <span class="cstat-no" title="statement not covered" >isMso</span>
|
|
954
|
-
? parsedDom.querySelectorAll('[class^=MsoList]')
|
|
955
|
-
: parsedDom.querySelectorAll('li')
|
|
956
|
-
|
|
957
|
-
<span class="cstat-no" title="statement not covered" > listItems.forEach(<span class="fstat-no" title="function not covered" >li</span> => {</span>
|
|
958
|
-
const item = <span class="cstat-no" title="statement not covered" >isMso ? createItemFromMsoList(li) : createItemFrom365List(li)</span>
|
|
959
|
-
|
|
960
|
-
<span class="cstat-no" title="statement not covered" > if (Object.keys(listItemObjects).includes(item.listId.toString()) === false) {</span>
|
|
961
|
-
<span class="cstat-no" title="statement not covered" > listItemObjects[item.listId] = []</span>
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
// Set data-attribute as Hook to find it back later on
|
|
965
|
-
<span class="cstat-no" title="statement not covered" > li.setAttribute('data-list-indicator', item.listId)</span>
|
|
966
|
-
|
|
967
|
-
<span class="cstat-no" title="statement not covered" > listItemObjects[item.listId].push(item)</span>
|
|
968
|
-
})
|
|
969
|
-
|
|
970
|
-
/*
|
|
971
|
-
* Dirty part to determine if (mso) lists are ordered or not
|
|
972
|
-
*/
|
|
973
|
-
<span class="cstat-no" title="statement not covered" > if (isMso) {</span>
|
|
974
|
-
<span class="cstat-no" title="statement not covered" > listItemObjects = redefineMsoOrderedLists(listItemObjects)</span>
|
|
975
|
-
}
|
|
976
|
-
|
|
977
|
-
<span class="cstat-no" title="statement not covered" > return listItemObjects</span>
|
|
978
|
-
}
|
|
979
|
-
|
|
980
|
-
/**
|
|
981
|
-
* Takes the flat list of list item objects and creates a HTML-String for that list
|
|
982
|
-
*
|
|
983
|
-
* @param list{Array<Object{indent, type, content, ?listStyleType}>}
|
|
984
|
-
*
|
|
985
|
-
* @return {string}
|
|
986
|
-
*/
|
|
987
|
-
function <span class="fstat-no" title="function not covered" >buildListAsHtmlString </span>(list) {
|
|
988
|
-
/*
|
|
989
|
-
* `nesting` holds the type of lists for nested lists
|
|
990
|
-
* It starts with the first indentation level and may be filled if there are lists in lists
|
|
991
|
-
*/
|
|
992
|
-
const nesting = <span class="cstat-no" title="statement not covered" >[list[0].type]</span>
|
|
993
|
-
let htmlList = <span class="cstat-no" title="statement not covered" >`<${list[0].type}>`</span>
|
|
994
|
-
|
|
995
|
-
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < list.length; i++) {</span>
|
|
996
|
-
const item = <span class="cstat-no" title="statement not covered" >list[i]</span>
|
|
997
|
-
<span class="cstat-no" title="statement not covered" > htmlList += `<li>${item.content}`</span>
|
|
998
|
-
|
|
999
|
-
const hasChildren = <span class="cstat-no" title="statement not covered" >i + 1 < list.length && list[i + 1].indent > item.indent</span>
|
|
1000
|
-
const isLastChild = <span class="cstat-no" title="statement not covered" >i + 1 < list.length && list[i + 1].indent < item.indent</span>
|
|
1001
|
-
const isLastElement = <span class="cstat-no" title="statement not covered" >i + 1 === list.length</span>
|
|
1002
|
-
|
|
1003
|
-
<span class="cstat-no" title="statement not covered" > if (hasChildren) {</span>
|
|
1004
|
-
// If the next Element is a child-Element the closing Tag follows when closing the Child List
|
|
1005
|
-
<span class="cstat-no" title="statement not covered" > htmlList += `<${list[i + 1].type}>`</span>
|
|
1006
|
-
<span class="cstat-no" title="statement not covered" > nesting.unshift(list[i + 1].type)</span>
|
|
1007
|
-
} else {
|
|
1008
|
-
<span class="cstat-no" title="statement not covered" > htmlList += '</li>'</span>
|
|
1009
|
-
}
|
|
1010
|
-
|
|
1011
|
-
<span class="cstat-no" title="statement not covered" > if (isLastChild) {</span>
|
|
1012
|
-
// Close the List and the Parent, for following elements that are intended above
|
|
1013
|
-
let c = <span class="cstat-no" title="statement not covered" >0</span>
|
|
1014
|
-
<span class="cstat-no" title="statement not covered" > while (list[i + 1].indent + c < item.indent) {</span>
|
|
1015
|
-
<span class="cstat-no" title="statement not covered" > htmlList += `</${nesting[0]}></li>`</span>
|
|
1016
|
-
<span class="cstat-no" title="statement not covered" > nesting.shift()</span>
|
|
1017
|
-
<span class="cstat-no" title="statement not covered" > c++</span>
|
|
1018
|
-
}
|
|
1019
|
-
}
|
|
1020
|
-
<span class="cstat-no" title="statement not covered" > if (isLastElement) {</span>
|
|
1021
|
-
// Close all open Tags if its the last Element
|
|
1022
|
-
<span class="cstat-no" title="statement not covered" > for (let h = <span class="cstat-no" title="statement not covered" >item.indent;</span> h > 1; h--) {</span>
|
|
1023
|
-
<span class="cstat-no" title="statement not covered" > htmlList += `</${nesting[0]}></li>`</span>
|
|
1024
|
-
<span class="cstat-no" title="statement not covered" > nesting.shift()</span>
|
|
1025
|
-
}
|
|
1026
|
-
}
|
|
1027
|
-
}
|
|
1028
|
-
|
|
1029
|
-
<span class="cstat-no" title="statement not covered" > htmlList += `</${list[0].type}>`</span>
|
|
1030
|
-
|
|
1031
|
-
<span class="cstat-no" title="statement not covered" > return htmlList</span>
|
|
1032
|
-
}
|
|
1033
|
-
|
|
1034
|
-
/**
|
|
1035
|
-
* Remove code which would make the DomParser fail
|
|
1036
|
-
* and store the "bullet" tht it can be checked later on.
|
|
1037
|
-
*
|
|
1038
|
-
* @param slice{string}
|
|
1039
|
-
*
|
|
1040
|
-
* @return {string}
|
|
1041
|
-
*/
|
|
1042
|
-
function <span class="fstat-no" title="function not covered" >prepareDataBeforeParsingMso </span>(slice) {
|
|
1043
|
-
<span class="cstat-no" title="statement not covered" > return slice</span>
|
|
1044
|
-
// Strip line breaks
|
|
1045
|
-
.replace(/(&nbsp;|\r|\n|\\r|\\n)/gmi, ' ')
|
|
1046
|
-
// Strip head
|
|
1047
|
-
.replace(/<head>(.|\n|\r|\\r|\\n)*?<\/head>/mi, '')
|
|
1048
|
-
// Strip html wrapper and remove conentless and non html like elements "<o:p>"
|
|
1049
|
-
.replace(/<(\/)?(html|o:p)[^>]*>/gmi, '')
|
|
1050
|
-
/*
|
|
1051
|
-
* Remove Microsoft IF comments and replace it with empty spans holding the data, that it can be processed later on
|
|
1052
|
-
* to determine if that one listStyleType may be part of an ordered or unordered list.
|
|
1053
|
-
*/
|
|
1054
|
-
.replace(/<!\[if !(\w+)]>(<span[^>]*>)?(.*?)<!\[endif]>/gmi, <span class="fstat-no" title="function not covered" >(m</span>atch, p1, _p2, p3) => {
|
|
1055
|
-
// Try to remove spacing spans
|
|
1056
|
-
const listStyleType = <span class="cstat-no" title="statement not covered" >p3</span>
|
|
1057
|
-
.replace(/(<span[^>]*>|<\/span>|&nbsp;|\s|\\r|\\n|\r|\n|")/gmi, '')
|
|
1058
|
-
|
|
1059
|
-
<span class="cstat-no" title="statement not covered" > return `<span data-val-${p1}="${listStyleType}" />`</span>
|
|
1060
|
-
})
|
|
1061
|
-
}
|
|
1062
|
-
|
|
1063
|
-
/**
|
|
1064
|
-
* Parses Clippboard content from Word to fix List ordering.
|
|
1065
|
-
*
|
|
1066
|
-
* @param slice{String}
|
|
1067
|
-
*
|
|
1068
|
-
* @return {string}
|
|
1069
|
-
*/
|
|
1070
|
-
function handleWordPaste (slice, allowPasteFromWord) {
|
|
1071
|
-
const isMso = checkIfMso(slice)
|
|
1072
|
-
const isOffice365 = checkIfOffice365(slice)
|
|
1073
|
-
|
|
1074
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!isMso && !isOffice365) {
|
|
1075
|
-
<span class="cstat-no" title="statement not covered" > return { slice, showMessage: false }</span>
|
|
1076
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>if (!allowPasteFromWord) {
|
|
1077
|
-
return { slice, showMessage: true }
|
|
1078
|
-
}
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
// Strip meta though its not closed and would break the parser
|
|
1082
|
-
<span class="cstat-no" title="statement not covered" > slice = slice.replace(/<meta[^>]*>/mi, '')</span>
|
|
1083
|
-
|
|
1084
|
-
// If its Mso-Content: Before the parser can be applied, some noise has to be reduced
|
|
1085
|
-
<span class="cstat-no" title="statement not covered" > if (isMso) {</span>
|
|
1086
|
-
<span class="cstat-no" title="statement not covered" > slice = prepareDataBeforeParsingMso(slice)</span>
|
|
1087
|
-
}
|
|
1088
|
-
// For a better handling all the Stuff gets converted to html
|
|
1089
|
-
const parser = <span class="cstat-no" title="statement not covered" >new DOMParser()</span>
|
|
1090
|
-
const parsedDom = <span class="cstat-no" title="statement not covered" >parser.parseFromString(slice, 'text/html')</span>
|
|
1091
|
-
|
|
1092
|
-
const listItemObjects = <span class="cstat-no" title="statement not covered" >createLists(parsedDom, isMso)</span>
|
|
1093
|
-
|
|
1094
|
-
/**
|
|
1095
|
-
* After collecting the list, we go to each list and add a well formatted list before the found one.
|
|
1096
|
-
* Until that we need the old list as dom hook to paste the new one, afterwards it is removed.
|
|
1097
|
-
*/
|
|
1098
|
-
<span class="cstat-no" title="statement not covered" > Object.keys(listItemObjects).forEach(<span class="fstat-no" title="function not covered" >li</span>stId => {</span>
|
|
1099
|
-
// Get the first Element of current List
|
|
1100
|
-
const context = <span class="cstat-no" title="statement not covered" >parsedDom.querySelector('[data-list-indicator="' + listId + '"]')</span>
|
|
1101
|
-
|
|
1102
|
-
// Instert new List before the original one
|
|
1103
|
-
<span class="cstat-no" title="statement not covered" > if (context.parentElement.nodeName.toLowerCase() === 'ul' || context.parentElement.nodeName.toLowerCase() === 'ol') {</span>
|
|
1104
|
-
<span class="cstat-no" title="statement not covered" > context.parentElement.before(buildListAsHtmlString(listItemObjects[listId]))</span>
|
|
1105
|
-
} else {
|
|
1106
|
-
<span class="cstat-no" title="statement not covered" > context.before(buildListAsHtmlString(listItemObjects[listId]))</span>
|
|
1107
|
-
}
|
|
1108
|
-
|
|
1109
|
-
// Remove old Elements
|
|
1110
|
-
<span class="cstat-no" title="statement not covered" > parsedDom</span>
|
|
1111
|
-
.querySelectorAll('[data-list-indicator="' + listId + '"]')
|
|
1112
|
-
.forEach(<span class="fstat-no" title="function not covered" >el</span> => {
|
|
1113
|
-
<span class="cstat-no" title="statement not covered" > if (el.parentElement.nodeName.toLowerCase() === 'ul' || el.parentElement.nodeName.toLowerCase() === 'ol') {</span>
|
|
1114
|
-
<span class="cstat-no" title="statement not covered" > el.parentElement.remove()</span>
|
|
1115
|
-
} else {
|
|
1116
|
-
<span class="cstat-no" title="statement not covered" > el.remove()</span>
|
|
1117
|
-
}
|
|
1118
|
-
})
|
|
1119
|
-
})
|
|
1120
|
-
|
|
1121
|
-
// Clear List item collection for the next run.
|
|
1122
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1123
|
-
slice: parsedDom.documentElement.outerHTML
|
|
1124
|
-
.replace(/&gt;/gmi, '>')
|
|
1125
|
-
.replace(/&lt;/gmi, '<')
|
|
1126
|
-
// Remove empty list wrapper
|
|
1127
|
-
.replace(/<div[^>]*?class="ListContainerWrapper[^>]*?><ul[^>]*?><\/ul><\/div>/gm, '')
|
|
1128
|
-
.replace(/<ul[^>]*?><\/ul>/gm, ''),
|
|
1129
|
-
showMessage: false
|
|
1130
|
-
}
|
|
1131
|
-
}
|
|
1132
|
-
|
|
1133
|
-
export { handleWordPaste }
|
|
1134
|
-
</pre></td></tr></table></pre>
|
|
1135
|
-
|
|
1136
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1137
|
-
</div><!-- /wrapper -->
|
|
1138
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1139
|
-
Code coverage generated by
|
|
1140
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1141
|
-
at 2024-12-02T14:13:18.182Z
|
|
1142
|
-
</div>
|
|
1143
|
-
<script src="../../../../prettify.js"></script>
|
|
1144
|
-
<script>
|
|
1145
|
-
window.onload = function () {
|
|
1146
|
-
prettyPrint();
|
|
1147
|
-
};
|
|
1148
|
-
</script>
|
|
1149
|
-
<script src="../../../../sorter.js"></script>
|
|
1150
|
-
<script src="../../../../block-navigation.js"></script>
|
|
1151
|
-
</body>
|
|
1152
|
-
</html>
|
|
1153
|
-
|