@bizdoc/core 1.8.8 → 1.8.9
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/LICENSE.md +1 -0
- package/karma.conf.js +44 -0
- package/ng-package.json +38 -0
- package/package.json +81 -71
- package/src/lib/admin/admin-dismiss.service.ts +24 -0
- package/src/lib/admin/admin-menu.component.html +18 -0
- package/src/lib/admin/admin-menu.component.ts +20 -0
- package/src/lib/admin/core/ace.input.ts +133 -0
- package/src/lib/admin/core/color-picker.input.scss +17 -0
- package/src/lib/admin/core/color-picker.input.ts +175 -0
- package/src/lib/admin/core/search.input.ts +32 -0
- package/src/lib/admin/diff/_configuration-diff-theme.scss +72 -0
- package/src/lib/admin/diff/configuration-diff.component.html +24 -0
- package/src/lib/admin/diff/configuration-diff.component.scss +16 -0
- package/src/lib/admin/diff/configuration-diff.component.ts +549 -0
- package/src/lib/admin/document-trace/Timeline.ts +41 -0
- package/src/lib/admin/document-trace/_timeline-theme.scss +70 -0
- package/src/lib/admin/document-trace/document-trace.component.html +55 -0
- package/src/lib/admin/document-trace/document-trace.component.scss +10 -0
- package/src/lib/admin/document-trace/document-trace.component.ts +463 -0
- package/src/lib/admin/document-trace/reassign.dialog.html +24 -0
- package/src/lib/admin/document-trace/reassign.dialog.ts +34 -0
- package/src/lib/admin/document-trace/trace-element.component.html +57 -0
- package/src/lib/admin/document-trace/trace-element.component.scss +21 -0
- package/src/lib/admin/document-trace/trace-element.component.ts +116 -0
- package/src/lib/admin/form/form.resolve.service.ts +13 -0
- package/src/lib/admin/form/form.service.ts +23 -0
- package/src/lib/admin/form/workflow/node-ref.ts +8 -0
- package/src/lib/admin/form/workflow/node.component.html +36 -0
- package/src/lib/admin/form/workflow/node.component.scss +4 -0
- package/src/lib/admin/form/workflow/node.component.ts +128 -0
- package/src/lib/admin/form/workflow/role-node.component.html +36 -0
- package/src/lib/admin/form/workflow/role-node.component.ts +65 -0
- package/src/lib/admin/form/workflow/tools.component.exp.ts +13 -0
- package/src/lib/admin/form/workflow/tools.component.html +1 -0
- package/src/lib/admin/form/workflow/workflow.component.html +73 -0
- package/src/lib/admin/form/workflow/workflow.component.scss +52 -0
- package/src/lib/admin/form/workflow/workflow.component.ts +390 -0
- package/src/lib/admin/indices/manage-cube-index.component.html +35 -0
- package/src/lib/admin/indices/manage-cube-index.component.scss +16 -0
- package/src/lib/admin/indices/manage-cube-index.component.ts +155 -0
- package/src/lib/admin/patterns/patterns.component.html +70 -0
- package/src/lib/admin/patterns/patterns.component.ts +166 -0
- package/src/lib/admin/permissions/permissions.component.html +21 -0
- package/src/lib/admin/permissions/permissions.component.scss +7 -0
- package/src/lib/admin/permissions/permissions.component.ts +89 -0
- package/src/lib/admin/positions/positions-popup.component.html +23 -0
- package/src/lib/admin/positions/positions-popup.component.ts +67 -0
- package/src/lib/admin/positions/positions.component.html +142 -0
- package/src/lib/admin/positions/positions.component.scss +14 -0
- package/src/lib/admin/positions/positions.component.ts +285 -0
- package/src/lib/admin/profiler/profiler.component.html +109 -0
- package/src/lib/admin/profiler/profiler.component.scss +22 -0
- package/src/lib/admin/profiler/profiler.component.ts +268 -0
- package/src/lib/admin/utility-ref.ts +44 -0
- package/src/lib/admin/utility-wrapper.component.ts +52 -0
- package/src/lib/admin/utility.pane.component.ts +49 -0
- package/src/lib/app.component.ts +86 -0
- package/src/lib/bizdoc.module.ts +81 -0
- package/src/lib/browse/_browse-theme.scss +86 -0
- package/src/lib/browse/browse-items.component.html +163 -0
- package/src/lib/browse/browse-items.component.scss +52 -0
- package/src/lib/browse/browse-items.component.ts +419 -0
- package/src/lib/browse/browse.mobile.component.html +33 -0
- package/src/lib/browse/browse.mobile.component.ts +89 -0
- package/src/lib/browse/browse.pane.component.html +43 -0
- package/src/lib/browse/browse.pane.component.scss +4 -0
- package/src/lib/browse/browse.pane.component.ts +133 -0
- package/src/lib/browse/expanded-item/expanded-item.component.html +37 -0
- package/src/lib/browse/expanded-item/expanded-item.component.scss +35 -0
- package/src/lib/browse/expanded-item/expanded-item.component.ts +287 -0
- package/src/lib/browse/filter/filter.component.html +50 -0
- package/src/lib/browse/filter/filter.component.scss +10 -0
- package/src/lib/browse/filter/filter.component.ts +143 -0
- package/src/lib/browse/folders-menu.component.html +20 -0
- package/src/lib/browse/folders-menu.component.scss +15 -0
- package/src/lib/browse/folders-menu.component.ts +42 -0
- package/src/lib/chart.module.ts +33 -0
- package/src/lib/chat/_chat-theme.scss +162 -0
- package/src/lib/chat/chat-info.ts +73 -0
- package/src/lib/chat/chat-pool.component.exp.ts +117 -0
- package/src/lib/chat/chat-pool.component.html +13 -0
- package/src/lib/chat/chat-pool.component.scss +10 -0
- package/src/lib/chat/chat.mobile.component.html +6 -0
- package/src/lib/chat/chat.mobile.component.scss +8 -0
- package/src/lib/chat/chat.mobile.component.ts +18 -0
- package/src/lib/chat/chat.service.ts +128 -0
- package/src/lib/chat/contacts.component.html +37 -0
- package/src/lib/chat/contacts.component.scss +49 -0
- package/src/lib/chat/contacts.component.ts +88 -0
- package/src/lib/chat/contacts.pane.component.ts +25 -0
- package/src/lib/chat/conversation.component.html +28 -0
- package/src/lib/chat/conversation.component.scss +6 -0
- package/src/lib/chat/conversation.component.ts +186 -0
- package/src/lib/chat/conversation.pane.component.ts +45 -0
- package/src/lib/circular-gauge.module.ts +11 -0
- package/src/lib/compose/_compose-theme.scss +38 -0
- package/src/lib/compose/action/action-picker.component.html +25 -0
- package/src/lib/compose/action/action-picker.component.scss +4 -0
- package/src/lib/compose/action/action-picker.component.ts +95 -0
- package/src/lib/compose/action/action-ref.ts +19 -0
- package/src/lib/compose/action/action.dialog.html +17 -0
- package/src/lib/compose/action/action.dialog.scss +1 -0
- package/src/lib/compose/action/action.dialog.ts +58 -0
- package/src/lib/compose/action/action.pane.dialog.html +12 -0
- package/src/lib/compose/action/action.pane.dialog.ts +64 -0
- package/src/lib/compose/action/assign-action.component.html +17 -0
- package/src/lib/compose/action/assign-action.component.ts +43 -0
- package/src/lib/compose/action/return-action.component.html +13 -0
- package/src/lib/compose/action/return-action.component.ts +31 -0
- package/src/lib/compose/attachments/attachments.component.html +23 -0
- package/src/lib/compose/attachments/attachments.component.scss +21 -0
- package/src/lib/compose/attachments/attachments.component.ts +103 -0
- package/src/lib/compose/attachments/preview/attachment-preview.component.html +15 -0
- package/src/lib/compose/attachments/preview/attachment-preview.component.scss +36 -0
- package/src/lib/compose/attachments/preview/attachment-preview.component.ts +143 -0
- package/src/lib/compose/attachments/progress-button.directive.ts +18 -0
- package/src/lib/compose/can-deactivate-changes.service.ts +22 -0
- package/src/lib/compose/comments/_comments-theme.scss +82 -0
- package/src/lib/compose/comments/comment.component.html +36 -0
- package/src/lib/compose/comments/comment.component.ts +160 -0
- package/src/lib/compose/comments/comments.component.html +27 -0
- package/src/lib/compose/comments/comments.component.scss +33 -0
- package/src/lib/compose/comments/comments.component.ts +220 -0
- package/src/lib/compose/comments/comments.pane.component.ts +41 -0
- package/src/lib/compose/comments/edit-comment.component.html +3 -0
- package/src/lib/compose/comments/edit-comment.component.ts +35 -0
- package/src/lib/compose/comments/edits.component.html +7 -0
- package/src/lib/compose/comments/edits.component.ts +33 -0
- package/src/lib/compose/comments/quick-comment.component.exp.ts +60 -0
- package/src/lib/compose/comments/quick-comment.component.html +5 -0
- package/src/lib/compose/comments/quick-comment.component.scss +11 -0
- package/src/lib/compose/comments/votes.component.html +7 -0
- package/src/lib/compose/comments/votes.component.ts +38 -0
- package/src/lib/compose/compose-resolve.service.ts +42 -0
- package/src/lib/compose/compose.mobile.component.html +48 -0
- package/src/lib/compose/compose.mobile.component.scss +11 -0
- package/src/lib/compose/compose.mobile.component.ts +84 -0
- package/src/lib/compose/compose.pane.component.html +48 -0
- package/src/lib/compose/compose.pane.component.scss +26 -0
- package/src/lib/compose/compose.pane.component.ts +181 -0
- package/src/lib/compose/copy/copy.dialog.html +21 -0
- package/src/lib/compose/copy/copy.dialog.ts +40 -0
- package/src/lib/compose/dismiss.service.ts +26 -0
- package/src/lib/compose/document-resolver.service.ts +13 -0
- package/src/lib/compose/document.component.html +5 -0
- package/src/lib/compose/document.component.ts +44 -0
- package/src/lib/compose/document.mobile.component.ts +20 -0
- package/src/lib/compose/document.pane.component.ts +22 -0
- package/src/lib/compose/events/events.component.html +6 -0
- package/src/lib/compose/events/events.component.ts +21 -0
- package/src/lib/compose/form-ref.ts +53 -0
- package/src/lib/compose/form-selector/form-selector.sheet.html +10 -0
- package/src/lib/compose/form-selector/form-selector.sheet.ts +74 -0
- package/src/lib/compose/form.component.html +12 -0
- package/src/lib/compose/form.component.ts +401 -0
- package/src/lib/compose/maps/maps.component.html +3 -0
- package/src/lib/compose/maps/maps.component.ts +22 -0
- package/src/lib/compose/new-menu.component.html +29 -0
- package/src/lib/compose/new-menu.component.scss +11 -0
- package/src/lib/compose/new-menu.component.ts +106 -0
- package/src/lib/compose/privilage.directive.ts +43 -0
- package/src/lib/compose/recipient-resolver.service.ts +15 -0
- package/src/lib/compose/save-changes.dialog.html +13 -0
- package/src/lib/compose/save-changes.dialog.ts +10 -0
- package/src/lib/compose/state.component.ts +29 -0
- package/src/lib/compose/tag/tags.component.html +22 -0
- package/src/lib/compose/tag/tags.component.scss +1 -0
- package/src/lib/compose/tag/tags.component.ts +83 -0
- package/src/lib/compose/trace/flow.component.html +3 -0
- package/src/lib/compose/trace/flow.component.scss +7 -0
- package/src/lib/compose/trace/flow.component.ts +669 -0
- package/src/lib/compose/trace/people.component.ts +32 -0
- package/src/lib/compose/trace/trace.base.ts +66 -0
- package/src/lib/compose/trace/trace.component.html +43 -0
- package/src/lib/compose/trace/trace.component.scss +16 -0
- package/src/lib/compose/trace/trace.component.ts +289 -0
- package/src/lib/compose/trace/trace.pane.component.html +3 -0
- package/src/lib/compose/trace/trace.pane.component.scss +5 -0
- package/src/lib/compose/trace/trace.pane.component.ts +43 -0
- package/src/lib/compose/version-compare/_compare-theme.scss +147 -0
- package/src/lib/compose/version-compare/version-compare.component.ts +51 -0
- package/src/lib/compose/version-compare/version-compare.directive.ts +292 -0
- package/src/lib/compose/version-compare/version.pane.component.html +19 -0
- package/src/lib/compose/version-compare/version.pane.component.scss +8 -0
- package/src/lib/compose/version-compare/version.pane.component.ts +48 -0
- package/src/lib/core/NgComponentOutlet.ts +31 -0
- package/src/lib/core/account.service.ts +28 -0
- package/src/lib/core/animated-icon/animated-icon.directive.html +3 -0
- package/src/lib/core/animated-icon/animated-icon.directive.scss +12 -0
- package/src/lib/core/animated-icon/animated-icon.directive.ts +41 -0
- package/src/lib/core/animations.ts +196 -0
- package/src/lib/core/authentication.ts +7 -0
- package/src/lib/core/avatar/_avatar-theme.scss +60 -0
- package/src/lib/core/avatar/avatar.component.html +6 -0
- package/src/lib/core/avatar/avatar.component.ts +108 -0
- package/src/lib/core/base.ts +44 -0
- package/src/lib/core/can-activate.service.exp.ts +31 -0
- package/src/lib/core/colors.ts +322 -0
- package/src/lib/core/component-factory-resolver.ts +59 -0
- package/src/lib/core/configuration.ts +95 -0
- package/src/lib/core/controls/_daterange-theme.scss +16 -0
- package/src/lib/core/controls/address.input.ts +158 -0
- package/src/lib/core/controls/auto-complete.input.ts +218 -0
- package/src/lib/core/controls/combination-picker-body.html +34 -0
- package/src/lib/core/controls/combination-picker-body.scss +40 -0
- package/src/lib/core/controls/combination-picker-body.ts +191 -0
- package/src/lib/core/controls/combination-picker.html +6 -0
- package/src/lib/core/controls/combination-picker.scss +9 -0
- package/src/lib/core/controls/combination-picker.ts +243 -0
- package/src/lib/core/controls/combination-pool.html +10 -0
- package/src/lib/core/controls/combination-pool.scss +35 -0
- package/src/lib/core/controls/combination-pool.ts +96 -0
- package/src/lib/core/controls/select.input.ts +205 -0
- package/src/lib/core/controls/time-picker.html +4 -0
- package/src/lib/core/controls/time-picker.ts +199 -0
- package/src/lib/core/controls/timespan.input.ts +175 -0
- package/src/lib/core/datasource.service.ts +67 -0
- package/src/lib/core/decorators.ts +56 -0
- package/src/lib/core/firebase.service.ts +55 -0
- package/src/lib/core/functions.ts +229 -0
- package/src/lib/core/guide/_guide-theme.scss +197 -0
- package/src/lib/core/guide/guide.component.html +20 -0
- package/src/lib/core/guide/guide.component.ts +210 -0
- package/src/lib/core/guide/guide.service.ts +98 -0
- package/src/lib/core/http.interceptor.ts +80 -0
- package/src/lib/core/hub.service.ts +194 -0
- package/src/lib/core/identity/identity.component.html +2 -0
- package/src/lib/core/identity/identity.component.ts +57 -0
- package/src/lib/core/info/attachment-info.service.ts +49 -0
- package/src/lib/core/info/document-info.service.ts +14 -0
- package/src/lib/core/info/location-info.component.scss +13 -0
- package/src/lib/core/info/location-info.component.ts +64 -0
- package/src/lib/core/info/map-info.ts +33 -0
- package/src/lib/core/layout/autocomplete.field.ts +41 -0
- package/src/lib/core/layout/checkbox.field.ts +21 -0
- package/src/lib/core/layout/date-range.field.ts +32 -0
- package/src/lib/core/layout/date.field.ts +26 -0
- package/src/lib/core/layout/expression.field.ts +26 -0
- package/src/lib/core/layout/html.field.ts +28 -0
- package/src/lib/core/layout/input.base.ts +12 -0
- package/src/lib/core/layout/input.field.ts +43 -0
- package/src/lib/core/layout/layout.component.scss +9 -0
- package/src/lib/core/layout/layout.component.ts +173 -0
- package/src/lib/core/layout/numeric.field.ts +24 -0
- package/src/lib/core/layout/select.field.ts +52 -0
- package/src/lib/core/layout/switch.field.ts +21 -0
- package/src/lib/core/layout/textarea.field.ts +21 -0
- package/src/lib/core/layout/timespan.field.ts +25 -0
- package/src/lib/core/lottie-animation.ts +37 -0
- package/src/lib/core/mailbox.service.ts +296 -0
- package/src/lib/core/models.ts +667 -0
- package/src/lib/core/none.component.scss +26 -0
- package/src/lib/core/none.component.ts +28 -0
- package/src/lib/core/pipes/action.pipe.ts +18 -0
- package/src/lib/core/pipes/daterange.pipe.ts +45 -0
- package/src/lib/core/pipes/duration.pipe.ts +39 -0
- package/src/lib/core/pipes/form.pipe.ts +19 -0
- package/src/lib/core/pipes/join.pipe.ts +10 -0
- package/src/lib/core/pipes/role.pipe.ts +19 -0
- package/src/lib/core/pipes/sanitize-html.pipe.ts +10 -0
- package/src/lib/core/pipes/sort.pipe.ts +34 -0
- package/src/lib/core/pipes/state.pipe.ts +19 -0
- package/src/lib/core/pipes/translate.pipe.ts +14 -0
- package/src/lib/core/pipes/type-value.pipe.ts +37 -0
- package/src/lib/core/pipes/user-name.pipe.ts +14 -0
- package/src/lib/core/popup/_popup-theme.scss +226 -0
- package/src/lib/core/popup/popup-ref.ts +19 -0
- package/src/lib/core/popup/popup.component.html +6 -0
- package/src/lib/core/popup/popup.component.ts +40 -0
- package/src/lib/core/popup/popup.service.ts +164 -0
- package/src/lib/core/popup/tooltip.directive.ts +47 -0
- package/src/lib/core/prompt/ask/ask.dialog.html +6 -0
- package/src/lib/core/prompt/ask/ask.dialog.ts +35 -0
- package/src/lib/core/prompt/mask/mask.component.html +1 -0
- package/src/lib/core/prompt/mask/mask.component.scss +14 -0
- package/src/lib/core/prompt/mask/mask.component.ts +15 -0
- package/src/lib/core/prompt.service.ts +81 -0
- package/src/lib/core/router.ts +29 -0
- package/src/lib/core/session.service.ts +247 -0
- package/src/lib/core/slots/_slots-theme.scss +142 -0
- package/src/lib/core/slots/extended-tab.component.exp.ts +35 -0
- package/src/lib/core/slots/extended-tab.component.html +0 -0
- package/src/lib/core/slots/intro.pane.component.exp.ts +23 -0
- package/src/lib/core/slots/intro.pane.component.html +22 -0
- package/src/lib/core/slots/intro.pane.component.scss +8 -0
- package/src/lib/core/slots/pane-ref.ts +156 -0
- package/src/lib/core/slots/router.directive.ts +55 -0
- package/src/lib/core/slots/router.service.ts +67 -0
- package/src/lib/core/slots/slot.component.exp.ts +49 -0
- package/src/lib/core/slots/slot.component.html +15 -0
- package/src/lib/core/slots/slot.component.scss +18 -0
- package/src/lib/core/slots/slots.component.html +65 -0
- package/src/lib/core/slots/slots.component.scss +160 -0
- package/src/lib/core/slots/slots.component.ts +1138 -0
- package/src/lib/core/tagging/documents.component.html +11 -0
- package/src/lib/core/tagging/documents.component.ts +19 -0
- package/src/lib/core/tagging/edit-input.component.html +42 -0
- package/src/lib/core/tagging/edit-input.component.scss +21 -0
- package/src/lib/core/tagging/edit-input.component.ts +211 -0
- package/src/lib/core/tagging/emoji.component.ts +23 -0
- package/src/lib/core/tagging/tagging-item.directive.ts +34 -0
- package/src/lib/core/tagging/tagging.component-base.ts +29 -0
- package/src/lib/core/tagging/tagging.component.scss +22 -0
- package/src/lib/core/tagging/tagging.directive.ts +128 -0
- package/src/lib/core/tagging/tagging.pipe.ts +76 -0
- package/src/lib/core/tagging/users.component.html +13 -0
- package/src/lib/core/tagging/users.component.ts +28 -0
- package/src/lib/core/translate.service.ts +1203 -0
- package/src/lib/core/window-title.service.ts +54 -0
- package/src/lib/cube/accum/accum.component.html +16 -0
- package/src/lib/cube/accum/accum.component.ts +186 -0
- package/src/lib/cube/chart/chart.component.html +32 -0
- package/src/lib/cube/chart/chart.component.ts +252 -0
- package/src/lib/cube/cube-info.service.ts +129 -0
- package/src/lib/cube/cube-menu.component.html +13 -0
- package/src/lib/cube/cube-menu.component.ts +18 -0
- package/src/lib/cube/cube-view.component.ts +174 -0
- package/src/lib/cube/cube.service.ts +415 -0
- package/src/lib/cube/declarations.ts +23 -0
- package/src/lib/cube/explore/document-item.component.ts +28 -0
- package/src/lib/cube/explore/explore-item.component.scss +4 -0
- package/src/lib/cube/explore/explore-item.component.ts +23 -0
- package/src/lib/cube/explore/explore-items.component.html +27 -0
- package/src/lib/cube/explore/explore-items.component.scss +24 -0
- package/src/lib/cube/explore/explore-items.component.ts +142 -0
- package/src/lib/cube/explore/explore.pane.component.html +11 -0
- package/src/lib/cube/explore/explore.pane.component.ts +69 -0
- package/src/lib/cube/explore/item-resolver.service.ts +24 -0
- package/src/lib/cube/explore/item.pane.component.html +3 -0
- package/src/lib/cube/explore/item.pane.component.ts +23 -0
- package/src/lib/cube/filter/filter-tags.component.exp.ts +59 -0
- package/src/lib/cube/filter/filter-tags.component.html +8 -0
- package/src/lib/cube/filter/filter-tags.component.scss +0 -0
- package/src/lib/cube/filter/filter-tags.component.spec.ts +25 -0
- package/src/lib/cube/filter/filter.component.html +25 -0
- package/src/lib/cube/filter/filter.component.scss +8 -0
- package/src/lib/cube/filter/filter.component.ts +102 -0
- package/src/lib/cube/grid/grid.component.html +30 -0
- package/src/lib/cube/grid/grid.component.scss +4 -0
- package/src/lib/cube/grid/grid.component.ts +220 -0
- package/src/lib/cube/grid/spreadsheet.component.ts +268 -0
- package/src/lib/cube/matrix/_matrix.theme.scss +77 -0
- package/src/lib/cube/matrix/matrix.base.ts +156 -0
- package/src/lib/cube/matrix/matrix.component.html +27 -0
- package/src/lib/cube/matrix/matrix.component.scss +3 -0
- package/src/lib/cube/matrix/matrix.component.ts +52 -0
- package/src/lib/cube/matrix/matrix.mobile.component.html +26 -0
- package/src/lib/cube/matrix/matrix.mobile.component.ts +57 -0
- package/src/lib/cube/matrix/matrix.pane.component.html +26 -0
- package/src/lib/cube/matrix/matrix.pane.component.scss +7 -0
- package/src/lib/cube/matrix/matrix.pane.component.ts +63 -0
- package/src/lib/cube/matrix/table.component.html +64 -0
- package/src/lib/cube/matrix/table.component.scss +22 -0
- package/src/lib/cube/matrix/table.component.ts +337 -0
- package/src/lib/cube/pivot/pivot.component.html +14 -0
- package/src/lib/cube/pivot/pivot.component.ts +409 -0
- package/src/lib/cube/view-base.ts +81 -0
- package/src/lib/cube/view.mobile.component.html +38 -0
- package/src/lib/cube/view.mobile.component.scss +9 -0
- package/src/lib/cube/view.mobile.component.ts +112 -0
- package/src/lib/cube/view.pane.component.html +25 -0
- package/src/lib/cube/view.pane.component.scss +12 -0
- package/src/lib/cube/view.pane.component.ts +75 -0
- package/src/lib/dashboard/_table.widget.scss +19 -0
- package/src/lib/dashboard/actions/actions.widget.html +6 -0
- package/src/lib/dashboard/actions/actions.widget.ts +118 -0
- package/src/lib/dashboard/cube/accum-cube.widget.html +15 -0
- package/src/lib/dashboard/cube/accum-cube.widget.ts +154 -0
- package/src/lib/dashboard/cube/cube-analysis.base.ts +116 -0
- package/src/lib/dashboard/cube/cube-analysis.widget.ts +42 -0
- package/src/lib/dashboard/cube/cube-chart.widget.html +7 -0
- package/src/lib/dashboard/cube/cube-chart.widget.ts +146 -0
- package/src/lib/dashboard/cube/documents.widget.html +19 -0
- package/src/lib/dashboard/cube/documents.widget.ts +59 -0
- package/src/lib/dashboard/cube/filter/filter.component.html +3 -0
- package/src/lib/dashboard/cube/filter/filter.component.ts +49 -0
- package/src/lib/dashboard/cube/gauge.component.exp.ts +18 -0
- package/src/lib/dashboard/dashboard.component.html +18 -0
- package/src/lib/dashboard/dashboard.component.scss +36 -0
- package/src/lib/dashboard/dashboard.component.ts +45 -0
- package/src/lib/dashboard/dashboard.pane.component.ts +19 -0
- package/src/lib/dashboard/recents/recents.widget.html +27 -0
- package/src/lib/dashboard/recents/recents.widget.scss +9 -0
- package/src/lib/dashboard/recents/recents.widget.ts +74 -0
- package/src/lib/dashboard/score/activity.widget.html +9 -0
- package/src/lib/dashboard/score/activity.widget.ts +167 -0
- package/src/lib/dashboard/score/compare-departments.widget.html +8 -0
- package/src/lib/dashboard/score/compare-departments.widget.ts +204 -0
- package/src/lib/dashboard/score/peers-performance.widget.html +23 -0
- package/src/lib/dashboard/score/peers-performance.widget.ts +254 -0
- package/src/lib/dashboard/score/pending-results.widget.html +29 -0
- package/src/lib/dashboard/score/pending-results.widget.ts +57 -0
- package/src/lib/dashboard/score/personal-score.widget.html +18 -0
- package/src/lib/dashboard/score/personal-score.widget.ts +225 -0
- package/src/lib/dashboard/widget-item.component.ts +90 -0
- package/src/lib/dashboard/widget-ref.ts +20 -0
- package/src/lib/desktop.module.ts +93 -0
- package/src/lib/diagram.module.ts +20 -0
- package/src/lib/grid.module.ts +16 -0
- package/src/lib/home/_home-theme.scss +155 -0
- package/src/lib/home/about/about.dialog.html +19 -0
- package/src/lib/home/about/about.dialog.ts +18 -0
- package/src/lib/home/home-base.component.ts +88 -0
- package/src/lib/home/home.desktop.component.html +87 -0
- package/src/lib/home/home.desktop.component.scss +66 -0
- package/src/lib/home/home.desktop.component.ts +181 -0
- package/src/lib/home/home.mobile.component.html +79 -0
- package/src/lib/home/home.mobile.component.scss +49 -0
- package/src/lib/home/home.mobile.component.ts +105 -0
- package/src/lib/home/notifications/notifications.component.html +18 -0
- package/src/lib/home/notifications/notifications.component.scss +36 -0
- package/src/lib/home/notifications/notifications.component.ts +55 -0
- package/src/lib/home/options/options.component.html +39 -0
- package/src/lib/home/options/options.component.scss +16 -0
- package/src/lib/home/options/options.component.ts +92 -0
- package/src/lib/home/outofoffice/outofoffice.component.html +5 -0
- package/src/lib/home/outofoffice/outofoffice.component.scss +10 -0
- package/src/lib/home/outofoffice/outofoffice.component.ts +33 -0
- package/src/lib/home/progress-bar.directive.exp.ts +24 -0
- package/src/lib/home/search.service.ts +71 -0
- package/src/lib/home/sign/sign.component.html +15 -0
- package/src/lib/home/sign/sign.component.ts +42 -0
- package/src/lib/home/submenu.directive.exp.ts +43 -0
- package/src/lib/home/tools.component.html +27 -0
- package/src/lib/home/tools.component.scss +15 -0
- package/src/lib/home/tools.component.ts +72 -0
- package/src/lib/home/welcome/welcome.dialog.exp.ts +35 -0
- package/src/lib/home/welcome/welcome.dialog.html +14 -0
- package/src/lib/impersonate/impersonate.component.html +17 -0
- package/src/lib/impersonate/impersonate.component.scss +3 -0
- package/src/lib/impersonate/impersonate.component.spec.ts +24 -0
- package/src/lib/impersonate/impersonate.component.ts +60 -0
- package/src/lib/linear-gauge.module.ts +11 -0
- package/src/lib/material.module.ts +99 -0
- package/src/lib/mobile.module.ts +41 -0
- package/src/lib/notifications/commented.notification.html +14 -0
- package/src/lib/notifications/commented.notification.ts +51 -0
- package/src/lib/notifications/cube-anomaly.notification.ts +50 -0
- package/src/lib/notifications/escalated.notification.ts +37 -0
- package/src/lib/notifications/filter.component.html +6 -0
- package/src/lib/notifications/filter.component.ts +16 -0
- package/src/lib/notifications/liked.notification.ts +49 -0
- package/src/lib/notifications/long-running-task.notification.ts +23 -0
- package/src/lib/notifications/notification-base.ts +38 -0
- package/src/lib/notifications/notifications-table.component.html +54 -0
- package/src/lib/notifications/notifications-table.component.scss +14 -0
- package/src/lib/notifications/notifications-table.component.ts +94 -0
- package/src/lib/notifications/notifications.component-base.ts +45 -0
- package/src/lib/notifications/notifications.mobile.component.ts +13 -0
- package/src/lib/notifications/notifications.pane.component.ts +16 -0
- package/src/lib/notifications/notifications.service.ts +66 -0
- package/src/lib/notifications/nudge.notification.ts +33 -0
- package/src/lib/notifications/state-changed.notification.ts +27 -0
- package/src/lib/notifications/tagged.notification.ts +46 -0
- package/src/lib/notifications/text.notification.ts +13 -0
- package/src/lib/notifications/upcoming-event.notification.ts +25 -0
- package/src/lib/options/options.component.html +149 -0
- package/src/lib/options/options.component.scss +19 -0
- package/src/lib/options/options.component.ts +244 -0
- package/src/lib/options/options.service.ts +30 -0
- package/src/lib/pivot.module.ts +18 -0
- package/src/lib/reports/arguments-component.ts +73 -0
- package/src/lib/reports/cube/grid-documents.component.html +25 -0
- package/src/lib/reports/cube/grid-documents.component.ts +85 -0
- package/src/lib/reports/cube/table-documents.component.css +18 -0
- package/src/lib/reports/cube/table-documents.component.html +30 -0
- package/src/lib/reports/cube/table-documents.component.ts +65 -0
- package/src/lib/reports/cube/usage-args.component.html +3 -0
- package/src/lib/reports/cube/usage-args.component.ts +57 -0
- package/src/lib/reports/cube/usage-base.ts +121 -0
- package/src/lib/reports/cube/usage-browse.component.exp.ts +93 -0
- package/src/lib/reports/cube/usage-browse.component.html +27 -0
- package/src/lib/reports/cube/usage-browse.component.scss +24 -0
- package/src/lib/reports/cube/usage-chart.component.html +11 -0
- package/src/lib/reports/cube/usage-chart.component.ts +304 -0
- package/src/lib/reports/cube/usage-pivot.component.html +19 -0
- package/src/lib/reports/cube/usage-pivot.component.ts +252 -0
- package/src/lib/reports/report-ref.ts +42 -0
- package/src/lib/reports/report-viewer.component.html +2 -0
- package/src/lib/reports/report-viewer.component.scss +12 -0
- package/src/lib/reports/report-viewer.component.ts +129 -0
- package/src/lib/reports/report.mobile.component.html +16 -0
- package/src/lib/reports/report.mobile.component.scss +7 -0
- package/src/lib/reports/report.mobile.component.ts +107 -0
- package/src/lib/reports/report.pane.component.html +8 -0
- package/src/lib/reports/report.pane.component.scss +9 -0
- package/src/lib/reports/report.pane.component.ts +78 -0
- package/src/lib/reports/reports-menu.component.html +9 -0
- package/src/lib/reports/reports-menu.component.ts +20 -0
- package/src/lib/reports/substitution/substitution.component.html +26 -0
- package/src/lib/reports/substitution/substitution.component.ts +34 -0
- package/src/lib/reports/table/table-view.component.html +8 -0
- package/src/lib/reports/table/table-view.component.scss +0 -0
- package/src/lib/reports/table/table-view.component.ts +33 -0
- package/src/lib/reports/tasks/tasks.component.html +21 -0
- package/src/lib/reports/tasks/tasks.component.ts +114 -0
- package/src/lib/reports/timeline/timeline.component.exp.ts +225 -0
- package/src/lib/reports/timeline/timeline.component.html +9 -0
- package/src/lib/routes.desktop.ts +191 -0
- package/src/lib/routes.mobile.ts +69 -0
- package/src/lib/schedule.module.ts +12 -0
- package/src/lib/scheduler/schedule.component.html +36 -0
- package/src/lib/scheduler/schedule.component.scss +13 -0
- package/src/lib/scheduler/schedule.component.ts +158 -0
- package/src/lib/scheduler/scheduler.mobile.component.ts +30 -0
- package/src/lib/scheduler/scheduler.pane.component.ts +49 -0
- package/src/lib/shared.module.ts +355 -0
- package/src/lib/spreadsheet.module.ts +17 -0
- package/src/lib/system.module.ts +77 -0
- package/src/lib/views/_views.theme.scss +11 -0
- package/src/lib/views/cube/_sum.theme.scss +59 -0
- package/src/lib/views/cube/chart.component.html +18 -0
- package/src/lib/views/cube/chart.component.ts +86 -0
- package/src/lib/views/cube/cube-base.ts +126 -0
- package/src/lib/views/cube/explore.component.html +33 -0
- package/src/lib/views/cube/explore.component.ts +77 -0
- package/src/lib/views/cube/matrix.component.html +42 -0
- package/src/lib/views/cube/matrix.component.ts +116 -0
- package/src/lib/views/cube/parallel.component.html +17 -0
- package/src/lib/views/cube/parallel.component.scss +13 -0
- package/src/lib/views/cube/parallel.component.ts +209 -0
- package/src/lib/views/cube/pivot.component.html +5 -0
- package/src/lib/views/cube/pivot.component.ts +60 -0
- package/src/lib/views/cube/sum.component.html +86 -0
- package/src/lib/views/cube/sum.component.scss +94 -0
- package/src/lib/views/cube/sum.component.ts +433 -0
- package/src/lib/views/cube/view.component.html +34 -0
- package/src/lib/views/cube/view.component.scss +12 -0
- package/src/lib/views/cube/view.component.ts +102 -0
- package/src/lib/views/document-view-ref.ts +34 -0
- package/src/lib/views/timeline/timeline.component.exp.ts +333 -0
- package/src/lib/views/timeline/timeline.component.html +6 -0
- package/src/lib/views/timeline/timeline.component.scss +6 -0
- package/src/lib/views/view-item.component.ts +67 -0
- package/src/lib/views/views.component.html +4 -0
- package/src/lib/views/views.component.scss +35 -0
- package/src/lib/views/views.component.ts +23 -0
- package/src/lib/views/views.mobile.component.ts +21 -0
- package/src/lib/views/views.pane.component.ts +31 -0
- package/src/polyfills.ts +81 -0
- package/src/public-api.ts +137 -0
- package/src/styles/_app.scss +315 -0
- package/src/styles/_emoji-mart.scss +504 -0
- package/src/styles/_syncfusion-base-definitions.scss +64 -0
- package/src/styles/_syncfusion-dark-definitions.scss +23 -0
- package/src/styles/_syncfusion-icons.scss +57 -0
- package/src/styles/_syncfusion-light-definitions.scss +23 -0
- package/src/styles/_syncfusion.scss +22 -0
- package/src/styles/brown.css +25532 -0
- package/src/styles/brown.css.map +1 -0
- package/src/styles/brown.min.css +83 -0
- package/src/styles/brown.scss +14 -0
- package/src/styles/build.ps1 +21 -0
- package/src/styles/dark.css +25582 -0
- package/src/styles/dark.css.map +1 -0
- package/src/styles/dark.min.css +78 -0
- package/src/styles/dark.scss +26 -0
- package/src/styles/default.css +30068 -0
- package/src/styles/default.css.map +1 -0
- package/src/styles/default.min.css +90 -0
- package/src/styles/default.scss +30 -0
- package/src/styles/diagram-icons.eot +0 -0
- package/src/styles/diagram-icons.ttf +0 -0
- package/src/styles/green.css +25532 -0
- package/src/styles/green.css.map +1 -0
- package/src/styles/green.min.css +83 -0
- package/src/styles/green.scss +14 -0
- package/src/styles/indigo.css +25532 -0
- package/src/styles/indigo.css.map +1 -0
- package/src/styles/indigo.min.css +83 -0
- package/src/styles/indigo.scss +15 -0
- package/src/test.ts +26 -0
- package/tsconfig.lib.json +25 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +18 -0
- package/bizdoc-core.d.ts +0 -5
- package/bundles/bizdoc-core.umd.js +0 -29840
- package/bundles/bizdoc-core.umd.js.map +0 -1
- package/esm2015/bizdoc-core.js +0 -5
- package/esm2015/lib/admin/admin-dismiss.service.js +0 -22
- package/esm2015/lib/admin/admin-menu.component.js +0 -30
- package/esm2015/lib/admin/core/ace.input.js +0 -147
- package/esm2015/lib/admin/core/color-picker.input.js +0 -214
- package/esm2015/lib/admin/core/search.input.js +0 -43
- package/esm2015/lib/admin/diff/configuration-diff.component.js +0 -559
- package/esm2015/lib/admin/document-trace/Timeline.js +0 -2
- package/esm2015/lib/admin/document-trace/document-trace.component.js +0 -464
- package/esm2015/lib/admin/document-trace/reassign.dialog.js +0 -42
- package/esm2015/lib/admin/document-trace/trace-element.component.js +0 -113
- package/esm2015/lib/admin/form/form.resolve.service.js +0 -17
- package/esm2015/lib/admin/form/form.service.js +0 -26
- package/esm2015/lib/admin/form/workflow/node-ref.js +0 -8
- package/esm2015/lib/admin/form/workflow/node.component.js +0 -130
- package/esm2015/lib/admin/form/workflow/role-node.component.js +0 -91
- package/esm2015/lib/admin/form/workflow/workflow.component.js +0 -403
- package/esm2015/lib/admin/indices/manage-cube-index.component.js +0 -164
- package/esm2015/lib/admin/patterns/patterns.component.js +0 -181
- package/esm2015/lib/admin/permissions/permissions.component.js +0 -100
- package/esm2015/lib/admin/positions/positions-popup.component.js +0 -77
- package/esm2015/lib/admin/positions/positions.component.js +0 -285
- package/esm2015/lib/admin/profiler/profiler.component.js +0 -263
- package/esm2015/lib/admin/utility-ref.js +0 -38
- package/esm2015/lib/admin/utility-wrapper.component.js +0 -51
- package/esm2015/lib/admin/utility.pane.component.js +0 -51
- package/esm2015/lib/app.component.js +0 -89
- package/esm2015/lib/bizdoc.module.js +0 -109
- package/esm2015/lib/browse/browse-items.component.js +0 -448
- package/esm2015/lib/browse/browse.mobile.component.js +0 -103
- package/esm2015/lib/browse/browse.pane.component.js +0 -148
- package/esm2015/lib/browse/expanded-item/expanded-item.component.js +0 -281
- package/esm2015/lib/browse/filter/filter.component.js +0 -152
- package/esm2015/lib/browse/folders-menu.component.js +0 -56
- package/esm2015/lib/chart.module.js +0 -35
- package/esm2015/lib/chat/chat-info.js +0 -67
- package/esm2015/lib/chat/chat.mobile.component.js +0 -30
- package/esm2015/lib/chat/chat.service.js +0 -122
- package/esm2015/lib/chat/contacts.component.js +0 -106
- package/esm2015/lib/chat/contacts.pane.component.js +0 -29
- package/esm2015/lib/chat/conversation.component.js +0 -195
- package/esm2015/lib/chat/conversation.pane.component.js +0 -43
- package/esm2015/lib/circular-gauge.module.js +0 -17
- package/esm2015/lib/compose/action/action-picker.component.js +0 -115
- package/esm2015/lib/compose/action/action-ref.js +0 -19
- package/esm2015/lib/compose/action/action.dialog.js +0 -64
- package/esm2015/lib/compose/action/action.pane.dialog.js +0 -64
- package/esm2015/lib/compose/action/assign-action.component.js +0 -58
- package/esm2015/lib/compose/action/return-action.component.js +0 -48
- package/esm2015/lib/compose/attachments/attachments.component.js +0 -125
- package/esm2015/lib/compose/attachments/preview/attachment-preview.component.js +0 -164
- package/esm2015/lib/compose/attachments/progress-button.directive.js +0 -25
- package/esm2015/lib/compose/can-deactivate-changes.service.js +0 -27
- package/esm2015/lib/compose/comments/Comments.pane.component.js +0 -49
- package/esm2015/lib/compose/comments/comment.component.js +0 -189
- package/esm2015/lib/compose/comments/comments.component.js +0 -232
- package/esm2015/lib/compose/comments/edit-comment.component.js +0 -35
- package/esm2015/lib/compose/comments/edits.component.js +0 -34
- package/esm2015/lib/compose/comments/quick-comment.component.exp.js +0 -67
- package/esm2015/lib/compose/comments/votes.component.js +0 -45
- package/esm2015/lib/compose/compose-resolve.service.js +0 -55
- package/esm2015/lib/compose/compose.mobile.component.js +0 -100
- package/esm2015/lib/compose/compose.pane.component.js +0 -201
- package/esm2015/lib/compose/copy/copy.dialog.js +0 -49
- package/esm2015/lib/compose/dismiss.service.js +0 -25
- package/esm2015/lib/compose/document-resolver.service.js +0 -17
- package/esm2015/lib/compose/document.component.js +0 -50
- package/esm2015/lib/compose/document.mobile.component.js +0 -22
- package/esm2015/lib/compose/document.pane.component.js +0 -26
- package/esm2015/lib/compose/events/events.component.js +0 -33
- package/esm2015/lib/compose/form-ref.js +0 -47
- package/esm2015/lib/compose/form-selector/form-selector.sheet.js +0 -85
- package/esm2015/lib/compose/form.component.js +0 -412
- package/esm2015/lib/compose/new-menu.component.js +0 -109
- package/esm2015/lib/compose/privilage.directive.js +0 -64
- package/esm2015/lib/compose/recipient-resolver.service.js +0 -18
- package/esm2015/lib/compose/save-changes.dialog.js +0 -18
- package/esm2015/lib/compose/state.component.js +0 -37
- package/esm2015/lib/compose/tag/tags.component.js +0 -94
- package/esm2015/lib/compose/trace/flow.component.js +0 -605
- package/esm2015/lib/compose/trace/people.component.js +0 -34
- package/esm2015/lib/compose/trace/trace.base.js +0 -70
- package/esm2015/lib/compose/trace/trace.component.js +0 -259
- package/esm2015/lib/compose/trace/trace.pane.component.js +0 -52
- package/esm2015/lib/compose/version-compare/version-compare.component.js +0 -55
- package/esm2015/lib/compose/version-compare/version-compare.directive.js +0 -344
- package/esm2015/lib/compose/version-compare/version.pane.component.js +0 -56
- package/esm2015/lib/core/NgComponentOutlet.js +0 -38
- package/esm2015/lib/core/account.service.js +0 -34
- package/esm2015/lib/core/animated-icon/animated-icon.directive.js +0 -17
- package/esm2015/lib/core/animations.js +0 -150
- package/esm2015/lib/core/authentication.js +0 -3
- package/esm2015/lib/core/avatar/avatar.component.js +0 -106
- package/esm2015/lib/core/base.js +0 -2
- package/esm2015/lib/core/colors.js +0 -322
- package/esm2015/lib/core/component-factory-resolver.js +0 -57
- package/esm2015/lib/core/configuration.js +0 -16
- package/esm2015/lib/core/controls/address.input.js +0 -189
- package/esm2015/lib/core/controls/auto-complete.input.js +0 -256
- package/esm2015/lib/core/controls/combination-picker-body.js +0 -172
- package/esm2015/lib/core/controls/combination-picker.js +0 -283
- package/esm2015/lib/core/controls/combination-pool.js +0 -113
- package/esm2015/lib/core/controls/select.input.js +0 -235
- package/esm2015/lib/core/controls/time-picker.js +0 -201
- package/esm2015/lib/core/controls/timespan.input.js +0 -207
- package/esm2015/lib/core/datasource.service.js +0 -63
- package/esm2015/lib/core/decorators.js +0 -46
- package/esm2015/lib/core/firebase.service.js +0 -53
- package/esm2015/lib/core/functions.js +0 -190
- package/esm2015/lib/core/guide/guide.component.js +0 -222
- package/esm2015/lib/core/guide/guide.service.js +0 -107
- package/esm2015/lib/core/http.interceptor.js +0 -79
- package/esm2015/lib/core/hub.service.js +0 -110
- package/esm2015/lib/core/identity/identity.component.js +0 -70
- package/esm2015/lib/core/info/attachment-info.service.js +0 -53
- package/esm2015/lib/core/info/document-info.service.js +0 -21
- package/esm2015/lib/core/info/location-info.component.js +0 -66
- package/esm2015/lib/core/info/map-info.js +0 -40
- package/esm2015/lib/core/layout/autocomplete.field.js +0 -60
- package/esm2015/lib/core/layout/checkbox.field.js +0 -41
- package/esm2015/lib/core/layout/date-range.field.js +0 -53
- package/esm2015/lib/core/layout/date.field.js +0 -52
- package/esm2015/lib/core/layout/expression.field.js +0 -51
- package/esm2015/lib/core/layout/html.field.js +0 -48
- package/esm2015/lib/core/layout/input.base.js +0 -11
- package/esm2015/lib/core/layout/input.field.js +0 -64
- package/esm2015/lib/core/layout/layout.component.js +0 -186
- package/esm2015/lib/core/layout/numeric.field.js +0 -47
- package/esm2015/lib/core/layout/select.field.js +0 -82
- package/esm2015/lib/core/layout/switch.field.js +0 -41
- package/esm2015/lib/core/layout/textarea.field.js +0 -42
- package/esm2015/lib/core/layout/timespan.field.js +0 -50
- package/esm2015/lib/core/lottie-animation.js +0 -46
- package/esm2015/lib/core/mailbox.service.js +0 -265
- package/esm2015/lib/core/models.js +0 -38
- package/esm2015/lib/core/none.component.js +0 -45
- package/esm2015/lib/core/pipes/action.pipe.js +0 -25
- package/esm2015/lib/core/pipes/daterange.pipe.js +0 -62
- package/esm2015/lib/core/pipes/duration.pipe.js +0 -47
- package/esm2015/lib/core/pipes/form.pipe.js +0 -25
- package/esm2015/lib/core/pipes/join.pipe.js +0 -18
- package/esm2015/lib/core/pipes/role.pipe.js +0 -25
- package/esm2015/lib/core/pipes/sanitize-html.pipe.js +0 -18
- package/esm2015/lib/core/pipes/sort.pipe.js +0 -48
- package/esm2015/lib/core/pipes/state.pipe.js +0 -25
- package/esm2015/lib/core/pipes/translate.pipe.js +0 -23
- package/esm2015/lib/core/pipes/type-value.pipe.js +0 -42
- package/esm2015/lib/core/pipes/user-name.pipe.js +0 -21
- package/esm2015/lib/core/popup/popup-ref.js +0 -20
- package/esm2015/lib/core/popup/popup.component.js +0 -40
- package/esm2015/lib/core/popup/popup.service.js +0 -155
- package/esm2015/lib/core/popup/tooltip.directive.js +0 -71
- package/esm2015/lib/core/prompt/ask/ask.dialog.js +0 -32
- package/esm2015/lib/core/prompt/mask/mask.component.js +0 -25
- package/esm2015/lib/core/prompt.service.js +0 -84
- package/esm2015/lib/core/router.js +0 -35
- package/esm2015/lib/core/session.service.js +0 -233
- package/esm2015/lib/core/slots/pane-ref.js +0 -117
- package/esm2015/lib/core/slots/router.directive.js +0 -70
- package/esm2015/lib/core/slots/router.service.js +0 -42
- package/esm2015/lib/core/slots/slots.component.js +0 -1047
- package/esm2015/lib/core/tagging/documents.component.js +0 -28
- package/esm2015/lib/core/tagging/edit-input.component.js +0 -236
- package/esm2015/lib/core/tagging/emoji.component.js +0 -35
- package/esm2015/lib/core/tagging/tagging-item.directive.js +0 -39
- package/esm2015/lib/core/tagging/tagging.component-base.js +0 -29
- package/esm2015/lib/core/tagging/tagging.directive.js +0 -136
- package/esm2015/lib/core/tagging/tagging.pipe.js +0 -72
- package/esm2015/lib/core/tagging/users.component.js +0 -35
- package/esm2015/lib/core/translate.service.js +0 -1213
- package/esm2015/lib/core/window-title.service.js +0 -53
- package/esm2015/lib/cube/accum/accum.component.js +0 -190
- package/esm2015/lib/cube/chart/chart.component.js +0 -261
- package/esm2015/lib/cube/cube-info.service.js +0 -100
- package/esm2015/lib/cube/cube-menu.component.js +0 -31
- package/esm2015/lib/cube/cube-view.component.js +0 -173
- package/esm2015/lib/cube/cube.service.js +0 -343
- package/esm2015/lib/cube/declarations.js +0 -2
- package/esm2015/lib/cube/explore/document-item.component.js +0 -38
- package/esm2015/lib/cube/explore/explore-item.component.js +0 -31
- package/esm2015/lib/cube/explore/explore-items.component.js +0 -160
- package/esm2015/lib/cube/explore/explore.pane.component.js +0 -75
- package/esm2015/lib/cube/explore/item-resolver.service.js +0 -32
- package/esm2015/lib/cube/explore/item.pane.component.js +0 -26
- package/esm2015/lib/cube/filter/filter-tags.component.exp.js +0 -68
- package/esm2015/lib/cube/filter/filter.component.js +0 -122
- package/esm2015/lib/cube/grid/grid.component.js +0 -219
- package/esm2015/lib/cube/grid/spreadsheet.component.js +0 -255
- package/esm2015/lib/cube/matrix/matrix.base.js +0 -130
- package/esm2015/lib/cube/matrix/matrix.component.js +0 -69
- package/esm2015/lib/cube/matrix/matrix.mobile.component.js +0 -63
- package/esm2015/lib/cube/matrix/matrix.pane.component.js +0 -71
- package/esm2015/lib/cube/matrix/table.component.js +0 -313
- package/esm2015/lib/cube/pivot/pivot.component.js +0 -407
- package/esm2015/lib/cube/view-base.js +0 -76
- package/esm2015/lib/cube/view.mobile.component.js +0 -127
- package/esm2015/lib/cube/view.pane.component.js +0 -86
- package/esm2015/lib/dashboard/actions/actions.widget.js +0 -126
- package/esm2015/lib/dashboard/cube/accum-cube.widget.js +0 -146
- package/esm2015/lib/dashboard/cube/cube-analysis.base.js +0 -90
- package/esm2015/lib/dashboard/cube/cube-analysis.widget.js +0 -51
- package/esm2015/lib/dashboard/cube/cube-chart.widget.js +0 -144
- package/esm2015/lib/dashboard/cube/documents.widget.js +0 -68
- package/esm2015/lib/dashboard/cube/filter/filter.component.js +0 -57
- package/esm2015/lib/dashboard/dashboard.component.js +0 -52
- package/esm2015/lib/dashboard/dashboard.pane.component.js +0 -24
- package/esm2015/lib/dashboard/recents/recents.widget.js +0 -86
- package/esm2015/lib/dashboard/score/activity.widget.js +0 -165
- package/esm2015/lib/dashboard/score/compare-departments.widget.js +0 -198
- package/esm2015/lib/dashboard/score/peers-performance.widget.js +0 -253
- package/esm2015/lib/dashboard/score/pending-results.widget.js +0 -69
- package/esm2015/lib/dashboard/score/personal-score.widget.js +0 -219
- package/esm2015/lib/dashboard/widget-item.component.js +0 -89
- package/esm2015/lib/dashboard/widget-ref.js +0 -18
- package/esm2015/lib/desktop.module.js +0 -142
- package/esm2015/lib/diagram.module.js +0 -34
- package/esm2015/lib/grid.module.js +0 -23
- package/esm2015/lib/home/about/about.dialog.js +0 -29
- package/esm2015/lib/home/home-base.component.js +0 -86
- package/esm2015/lib/home/home.desktop.component.js +0 -201
- package/esm2015/lib/home/home.mobile.component.js +0 -120
- package/esm2015/lib/home/notifications/notifications.component.js +0 -70
- package/esm2015/lib/home/options/options.component.js +0 -98
- package/esm2015/lib/home/outofoffice/outofoffice.component.js +0 -42
- package/esm2015/lib/home/search.service.js +0 -63
- package/esm2015/lib/home/sign/sign.component.js +0 -56
- package/esm2015/lib/home/tools.component.js +0 -87
- package/esm2015/lib/impersonate/impersonate.component.js +0 -69
- package/esm2015/lib/linear-gauge.module.js +0 -17
- package/esm2015/lib/material.module.js +0 -182
- package/esm2015/lib/mobile.module.js +0 -63
- package/esm2015/lib/notifications/commented.notification.js +0 -53
- package/esm2015/lib/notifications/cube-anomaly.notification.js +0 -58
- package/esm2015/lib/notifications/escalated.notification.js +0 -33
- package/esm2015/lib/notifications/filter.component.js +0 -28
- package/esm2015/lib/notifications/liked.notification.js +0 -50
- package/esm2015/lib/notifications/long-running-task.notification.js +0 -31
- package/esm2015/lib/notifications/notification-base.js +0 -40
- package/esm2015/lib/notifications/notifications-table.component.js +0 -110
- package/esm2015/lib/notifications/notifications.component-base.js +0 -47
- package/esm2015/lib/notifications/notifications.mobile.component.js +0 -20
- package/esm2015/lib/notifications/notifications.pane.component.js +0 -23
- package/esm2015/lib/notifications/notifications.service.js +0 -71
- package/esm2015/lib/notifications/nudge.notification.js +0 -31
- package/esm2015/lib/notifications/state-changed.notification.js +0 -30
- package/esm2015/lib/notifications/tagged.notification.js +0 -43
- package/esm2015/lib/notifications/text.notification.js +0 -20
- package/esm2015/lib/notifications/upcoming-event.notification.js +0 -36
- package/esm2015/lib/options/options.component.js +0 -231
- package/esm2015/lib/options/options.service.js +0 -38
- package/esm2015/lib/pivot.module.js +0 -24
- package/esm2015/lib/reports/arguments-component.js +0 -83
- package/esm2015/lib/reports/cube/grid-documents.component.js +0 -82
- package/esm2015/lib/reports/cube/table-documents.component.js +0 -68
- package/esm2015/lib/reports/cube/usage-args.component.js +0 -65
- package/esm2015/lib/reports/cube/usage-base.js +0 -82
- package/esm2015/lib/reports/cube/usage-chart.component.js +0 -294
- package/esm2015/lib/reports/cube/usage-pivot.component.js +0 -243
- package/esm2015/lib/reports/report-ref.js +0 -31
- package/esm2015/lib/reports/report-viewer.component.js +0 -132
- package/esm2015/lib/reports/report.mobile.component.js +0 -124
- package/esm2015/lib/reports/report.pane.component.js +0 -93
- package/esm2015/lib/reports/reports-menu.component.js +0 -30
- package/esm2015/lib/reports/substitution/substitution.component.js +0 -43
- package/esm2015/lib/reports/table/table-view.component.js +0 -46
- package/esm2015/lib/reports/tasks/tasks.component.js +0 -97
- package/esm2015/lib/routes.desktop.js +0 -192
- package/esm2015/lib/routes.mobile.js +0 -69
- package/esm2015/lib/schedule.module.js +0 -21
- package/esm2015/lib/scheduler/schedule.component.js +0 -173
- package/esm2015/lib/scheduler/scheduler.mobile.component.js +0 -37
- package/esm2015/lib/scheduler/scheduler.pane.component.js +0 -53
- package/esm2015/lib/shared.module.js +0 -497
- package/esm2015/lib/spreadsheet.module.js +0 -28
- package/esm2015/lib/system.module.js +0 -114
- package/esm2015/lib/views/cube/chart.component.js +0 -77
- package/esm2015/lib/views/cube/cube-base.js +0 -101
- package/esm2015/lib/views/cube/explore.component.js +0 -82
- package/esm2015/lib/views/cube/matrix.component.js +0 -102
- package/esm2015/lib/views/cube/parallel.component.js +0 -196
- package/esm2015/lib/views/cube/pivot.component.js +0 -53
- package/esm2015/lib/views/cube/sum.component.js +0 -430
- package/esm2015/lib/views/cube/view.component.js +0 -103
- package/esm2015/lib/views/document-view-ref.js +0 -27
- package/esm2015/lib/views/timeline/timeline.component.exp.js +0 -319
- package/esm2015/lib/views/view-item.component.js +0 -70
- package/esm2015/lib/views/views.component.js +0 -29
- package/esm2015/lib/views/views.mobile.component.js +0 -24
- package/esm2015/lib/views/views.pane.component.js +0 -31
- package/esm2015/public-api.js +0 -132
- package/fesm2015/bizdoc-core.js +0 -27478
- package/fesm2015/bizdoc-core.js.map +0 -1
- package/lib/admin/admin-dismiss.service.d.ts +0 -14
- package/lib/admin/admin-menu.component.d.ts +0 -12
- package/lib/admin/core/ace.input.d.ts +0 -52
- package/lib/admin/core/color-picker.input.d.ts +0 -64
- package/lib/admin/core/search.input.d.ts +0 -13
- package/lib/admin/diff/configuration-diff.component.d.ts +0 -115
- package/lib/admin/document-trace/Timeline.d.ts +0 -37
- package/lib/admin/document-trace/document-trace.component.d.ts +0 -83
- package/lib/admin/document-trace/reassign.dialog.d.ts +0 -22
- package/lib/admin/document-trace/trace-element.component.d.ts +0 -38
- package/lib/admin/form/form.resolve.service.d.ts +0 -12
- package/lib/admin/form/form.service.d.ts +0 -13
- package/lib/admin/form/workflow/node-ref.d.ts +0 -7
- package/lib/admin/form/workflow/node.component.d.ts +0 -37
- package/lib/admin/form/workflow/role-node.component.d.ts +0 -22
- package/lib/admin/form/workflow/workflow.component.d.ts +0 -73
- package/lib/admin/indices/manage-cube-index.component.d.ts +0 -54
- package/lib/admin/patterns/patterns.component.d.ts +0 -79
- package/lib/admin/permissions/permissions.component.d.ts +0 -45
- package/lib/admin/positions/positions-popup.component.d.ts +0 -39
- package/lib/admin/positions/positions.component.d.ts +0 -105
- package/lib/admin/profiler/profiler.component.d.ts +0 -108
- package/lib/admin/utility-ref.d.ts +0 -19
- package/lib/admin/utility-wrapper.component.d.ts +0 -28
- package/lib/admin/utility.pane.component.d.ts +0 -24
- package/lib/app.component.d.ts +0 -22
- package/lib/bizdoc.module.d.ts +0 -19
- package/lib/browse/browse-items.component.d.ts +0 -102
- package/lib/browse/browse.mobile.component.d.ts +0 -38
- package/lib/browse/browse.pane.component.d.ts +0 -47
- package/lib/browse/expanded-item/expanded-item.component.d.ts +0 -66
- package/lib/browse/filter/filter.component.d.ts +0 -69
- package/lib/browse/folders-menu.component.d.ts +0 -22
- package/lib/chart.module.d.ts +0 -7
- package/lib/chat/chat-info.d.ts +0 -36
- package/lib/chat/chat.mobile.component.d.ts +0 -10
- package/lib/chat/chat.service.d.ts +0 -38
- package/lib/chat/contacts.component.d.ts +0 -38
- package/lib/chat/contacts.pane.component.d.ts +0 -12
- package/lib/chat/conversation.component.d.ts +0 -56
- package/lib/chat/conversation.pane.component.d.ts +0 -15
- package/lib/circular-gauge.module.d.ts +0 -7
- package/lib/compose/action/action-picker.component.d.ts +0 -25
- package/lib/compose/action/action-ref.d.ts +0 -10
- package/lib/compose/action/action.dialog.d.ts +0 -29
- package/lib/compose/action/action.pane.dialog.d.ts +0 -26
- package/lib/compose/action/assign-action.component.d.ts +0 -22
- package/lib/compose/action/return-action.component.d.ts +0 -15
- package/lib/compose/attachments/attachments.component.d.ts +0 -35
- package/lib/compose/attachments/preview/attachment-preview.component.d.ts +0 -48
- package/lib/compose/attachments/progress-button.directive.d.ts +0 -12
- package/lib/compose/can-deactivate-changes.service.d.ts +0 -12
- package/lib/compose/comments/Comments.pane.component.d.ts +0 -18
- package/lib/compose/comments/comment.component.d.ts +0 -51
- package/lib/compose/comments/comments.component.d.ts +0 -66
- package/lib/compose/comments/edit-comment.component.d.ts +0 -25
- package/lib/compose/comments/edits.component.d.ts +0 -26
- package/lib/compose/comments/quick-comment.component.exp.d.ts +0 -28
- package/lib/compose/comments/votes.component.d.ts +0 -22
- package/lib/compose/compose-resolve.service.d.ts +0 -27
- package/lib/compose/compose.mobile.component.d.ts +0 -40
- package/lib/compose/compose.pane.component.d.ts +0 -54
- package/lib/compose/copy/copy.dialog.d.ts +0 -23
- package/lib/compose/dismiss.service.d.ts +0 -12
- package/lib/compose/document-resolver.service.d.ts +0 -12
- package/lib/compose/document.component.d.ts +0 -20
- package/lib/compose/document.mobile.component.d.ts +0 -10
- package/lib/compose/document.pane.component.d.ts +0 -12
- package/lib/compose/events/events.component.d.ts +0 -13
- package/lib/compose/form-ref.d.ts +0 -32
- package/lib/compose/form-selector/form-selector.sheet.d.ts +0 -28
- package/lib/compose/form.component.d.ts +0 -92
- package/lib/compose/new-menu.component.d.ts +0 -36
- package/lib/compose/privilage.directive.d.ts +0 -26
- package/lib/compose/recipient-resolver.service.d.ts +0 -12
- package/lib/compose/save-changes.dialog.d.ts +0 -7
- package/lib/compose/state.component.d.ts +0 -12
- package/lib/compose/tag/tags.component.d.ts +0 -36
- package/lib/compose/trace/flow.component.d.ts +0 -64
- package/lib/compose/trace/people.component.d.ts +0 -18
- package/lib/compose/trace/trace.base.d.ts +0 -25
- package/lib/compose/trace/trace.component.d.ts +0 -73
- package/lib/compose/trace/trace.pane.component.d.ts +0 -20
- package/lib/compose/version-compare/version-compare.component.d.ts +0 -26
- package/lib/compose/version-compare/version-compare.directive.d.ts +0 -89
- package/lib/compose/version-compare/version.pane.component.d.ts +0 -21
- package/lib/core/NgComponentOutlet.d.ts +0 -15
- package/lib/core/account.service.d.ts +0 -18
- package/lib/core/animated-icon/animated-icon.directive.d.ts +0 -7
- package/lib/core/animations.d.ts +0 -25
- package/lib/core/authentication.d.ts +0 -6
- package/lib/core/avatar/avatar.component.d.ts +0 -34
- package/lib/core/base.d.ts +0 -27
- package/lib/core/colors.d.ts +0 -6
- package/lib/core/component-factory-resolver.d.ts +0 -12
- package/lib/core/configuration.d.ts +0 -90
- package/lib/core/controls/address.input.d.ts +0 -62
- package/lib/core/controls/auto-complete.input.d.ts +0 -86
- package/lib/core/controls/combination-picker-body.d.ts +0 -114
- package/lib/core/controls/combination-picker.d.ts +0 -82
- package/lib/core/controls/combination-pool.d.ts +0 -42
- package/lib/core/controls/select.input.d.ts +0 -82
- package/lib/core/controls/time-picker.d.ts +0 -52
- package/lib/core/controls/timespan.input.d.ts +0 -55
- package/lib/core/datasource.service.d.ts +0 -43
- package/lib/core/decorators.d.ts +0 -17
- package/lib/core/firebase.service.d.ts +0 -17
- package/lib/core/functions.d.ts +0 -42
- package/lib/core/guide/guide.component.d.ts +0 -31
- package/lib/core/guide/guide.service.d.ts +0 -32
- package/lib/core/http.interceptor.d.ts +0 -21
- package/lib/core/hub.service.d.ts +0 -128
- package/lib/core/identity/identity.component.d.ts +0 -29
- package/lib/core/info/attachment-info.service.d.ts +0 -18
- package/lib/core/info/document-info.service.d.ts +0 -13
- package/lib/core/info/location-info.component.d.ts +0 -28
- package/lib/core/info/map-info.d.ts +0 -15
- package/lib/core/layout/autocomplete.field.d.ts +0 -21
- package/lib/core/layout/checkbox.field.d.ts +0 -11
- package/lib/core/layout/date-range.field.d.ts +0 -13
- package/lib/core/layout/date.field.d.ts +0 -11
- package/lib/core/layout/expression.field.d.ts +0 -12
- package/lib/core/layout/html.field.d.ts +0 -12
- package/lib/core/layout/input.base.d.ts +0 -10
- package/lib/core/layout/input.field.d.ts +0 -14
- package/lib/core/layout/layout.component.d.ts +0 -34
- package/lib/core/layout/numeric.field.d.ts +0 -11
- package/lib/core/layout/select.field.d.ts +0 -22
- package/lib/core/layout/switch.field.d.ts +0 -11
- package/lib/core/layout/textarea.field.d.ts +0 -11
- package/lib/core/layout/timespan.field.d.ts +0 -11
- package/lib/core/lottie-animation.d.ts +0 -14
- package/lib/core/mailbox.service.d.ts +0 -121
- package/lib/core/models.d.ts +0 -635
- package/lib/core/none.component.d.ts +0 -9
- package/lib/core/pipes/action.pipe.d.ts +0 -10
- package/lib/core/pipes/daterange.pipe.d.ts +0 -15
- package/lib/core/pipes/duration.pipe.d.ts +0 -11
- package/lib/core/pipes/form.pipe.d.ts +0 -10
- package/lib/core/pipes/join.pipe.d.ts +0 -10
- package/lib/core/pipes/role.pipe.d.ts +0 -10
- package/lib/core/pipes/sanitize-html.pipe.d.ts +0 -10
- package/lib/core/pipes/sort.pipe.d.ts +0 -12
- package/lib/core/pipes/state.pipe.d.ts +0 -10
- package/lib/core/pipes/translate.pipe.d.ts +0 -10
- package/lib/core/pipes/type-value.pipe.d.ts +0 -15
- package/lib/core/pipes/user-name.pipe.d.ts +0 -11
- package/lib/core/popup/popup-ref.d.ts +0 -14
- package/lib/core/popup/popup.component.d.ts +0 -22
- package/lib/core/popup/popup.service.d.ts +0 -26
- package/lib/core/popup/tooltip.directive.d.ts +0 -27
- package/lib/core/prompt/ask/ask.dialog.d.ts +0 -22
- package/lib/core/prompt/mask/mask.component.d.ts +0 -10
- package/lib/core/prompt.service.d.ts +0 -36
- package/lib/core/router.d.ts +0 -20
- package/lib/core/session.service.d.ts +0 -83
- package/lib/core/slots/pane-ref.d.ts +0 -109
- package/lib/core/slots/router.directive.d.ts +0 -25
- package/lib/core/slots/router.service.d.ts +0 -39
- package/lib/core/slots/slots.component.d.ts +0 -182
- package/lib/core/tagging/documents.component.d.ts +0 -11
- package/lib/core/tagging/edit-input.component.d.ts +0 -65
- package/lib/core/tagging/emoji.component.d.ts +0 -18
- package/lib/core/tagging/tagging-item.directive.d.ts +0 -15
- package/lib/core/tagging/tagging.component-base.d.ts +0 -19
- package/lib/core/tagging/tagging.directive.d.ts +0 -34
- package/lib/core/tagging/tagging.pipe.d.ts +0 -24
- package/lib/core/tagging/users.component.d.ts +0 -15
- package/lib/core/translate.service.d.ts +0 -82
- package/lib/core/window-title.service.d.ts +0 -21
- package/lib/cube/accum/accum.component.d.ts +0 -57
- package/lib/cube/chart/chart.component.d.ts +0 -68
- package/lib/cube/cube-info.service.d.ts +0 -71
- package/lib/cube/cube-menu.component.d.ts +0 -12
- package/lib/cube/cube-view.component.d.ts +0 -30
- package/lib/cube/cube.service.d.ts +0 -244
- package/lib/cube/declarations.d.ts +0 -22
- package/lib/cube/explore/document-item.component.d.ts +0 -16
- package/lib/cube/explore/explore-item.component.d.ts +0 -14
- package/lib/cube/explore/explore-items.component.d.ts +0 -54
- package/lib/cube/explore/explore.pane.component.d.ts +0 -28
- package/lib/cube/explore/item-resolver.service.d.ts +0 -20
- package/lib/cube/explore/item.pane.component.d.ts +0 -13
- package/lib/cube/filter/filter-tags.component.exp.d.ts +0 -27
- package/lib/cube/filter/filter.component.d.ts +0 -43
- package/lib/cube/grid/grid.component.d.ts +0 -58
- package/lib/cube/grid/spreadsheet.component.d.ts +0 -53
- package/lib/cube/matrix/matrix.base.d.ts +0 -75
- package/lib/cube/matrix/matrix.component.d.ts +0 -23
- package/lib/cube/matrix/matrix.mobile.component.d.ts +0 -21
- package/lib/cube/matrix/matrix.pane.component.d.ts +0 -20
- package/lib/cube/matrix/table.component.d.ts +0 -84
- package/lib/cube/pivot/pivot.component.d.ts +0 -98
- package/lib/cube/view-base.d.ts +0 -39
- package/lib/cube/view.mobile.component.d.ts +0 -45
- package/lib/cube/view.pane.component.d.ts +0 -27
- package/lib/dashboard/actions/actions.widget.d.ts +0 -39
- package/lib/dashboard/cube/accum-cube.widget.d.ts +0 -33
- package/lib/dashboard/cube/cube-analysis.base.d.ts +0 -62
- package/lib/dashboard/cube/cube-analysis.widget.d.ts +0 -17
- package/lib/dashboard/cube/cube-chart.widget.d.ts +0 -32
- package/lib/dashboard/cube/documents.widget.d.ts +0 -30
- package/lib/dashboard/cube/filter/filter.component.d.ts +0 -22
- package/lib/dashboard/dashboard.component.d.ts +0 -20
- package/lib/dashboard/dashboard.pane.component.d.ts +0 -8
- package/lib/dashboard/recents/recents.widget.d.ts +0 -34
- package/lib/dashboard/score/activity.widget.d.ts +0 -50
- package/lib/dashboard/score/compare-departments.widget.d.ts +0 -51
- package/lib/dashboard/score/peers-performance.widget.d.ts +0 -65
- package/lib/dashboard/score/pending-results.widget.d.ts +0 -28
- package/lib/dashboard/score/personal-score.widget.d.ts +0 -57
- package/lib/dashboard/widget-item.component.d.ts +0 -31
- package/lib/dashboard/widget-ref.d.ts +0 -11
- package/lib/desktop.module.d.ts +0 -43
- package/lib/diagram.module.d.ts +0 -8
- package/lib/grid.module.d.ts +0 -7
- package/lib/home/about/about.dialog.d.ts +0 -13
- package/lib/home/home-base.component.d.ts +0 -32
- package/lib/home/home.desktop.component.d.ts +0 -55
- package/lib/home/home.mobile.component.d.ts +0 -38
- package/lib/home/notifications/notifications.component.d.ts +0 -28
- package/lib/home/options/options.component.d.ts +0 -44
- package/lib/home/outofoffice/outofoffice.component.d.ts +0 -19
- package/lib/home/search.service.d.ts +0 -21
- package/lib/home/sign/sign.component.d.ts +0 -17
- package/lib/home/tools.component.d.ts +0 -36
- package/lib/impersonate/impersonate.component.d.ts +0 -27
- package/lib/linear-gauge.module.d.ts +0 -7
- package/lib/material.module.d.ts +0 -45
- package/lib/mobile.module.d.ts +0 -26
- package/lib/notifications/commented.notification.d.ts +0 -26
- package/lib/notifications/cube-anomaly.notification.d.ts +0 -28
- package/lib/notifications/escalated.notification.d.ts +0 -26
- package/lib/notifications/filter.component.d.ts +0 -9
- package/lib/notifications/liked.notification.d.ts +0 -25
- package/lib/notifications/long-running-task.notification.d.ts +0 -21
- package/lib/notifications/notification-base.d.ts +0 -20
- package/lib/notifications/notifications-table.component.d.ts +0 -32
- package/lib/notifications/notifications.component-base.d.ts +0 -8
- package/lib/notifications/notifications.mobile.component.d.ts +0 -8
- package/lib/notifications/notifications.pane.component.d.ts +0 -8
- package/lib/notifications/notifications.service.d.ts +0 -24
- package/lib/notifications/nudge.notification.d.ts +0 -22
- package/lib/notifications/state-changed.notification.d.ts +0 -22
- package/lib/notifications/tagged.notification.d.ts +0 -26
- package/lib/notifications/text.notification.d.ts +0 -13
- package/lib/notifications/upcoming-event.notification.d.ts +0 -19
- package/lib/options/options.component.d.ts +0 -67
- package/lib/options/options.service.d.ts +0 -14
- package/lib/pivot.module.d.ts +0 -7
- package/lib/reports/arguments-component.d.ts +0 -27
- package/lib/reports/cube/grid-documents.component.d.ts +0 -45
- package/lib/reports/cube/table-documents.component.d.ts +0 -44
- package/lib/reports/cube/usage-args.component.d.ts +0 -22
- package/lib/reports/cube/usage-base.d.ts +0 -76
- package/lib/reports/cube/usage-chart.component.d.ts +0 -66
- package/lib/reports/cube/usage-pivot.component.d.ts +0 -66
- package/lib/reports/report-ref.d.ts +0 -27
- package/lib/reports/report-viewer.component.d.ts +0 -46
- package/lib/reports/report.mobile.component.d.ts +0 -45
- package/lib/reports/report.pane.component.d.ts +0 -34
- package/lib/reports/reports-menu.component.d.ts +0 -12
- package/lib/reports/substitution/substitution.component.d.ts +0 -23
- package/lib/reports/table/table-view.component.d.ts +0 -19
- package/lib/reports/tasks/tasks.component.d.ts +0 -68
- package/lib/routes.desktop.d.ts +0 -2
- package/lib/routes.mobile.d.ts +0 -2
- package/lib/schedule.module.d.ts +0 -7
- package/lib/scheduler/schedule.component.d.ts +0 -43
- package/lib/scheduler/scheduler.mobile.component.d.ts +0 -14
- package/lib/scheduler/scheduler.pane.component.d.ts +0 -20
- package/lib/shared.module.d.ts +0 -178
- package/lib/spreadsheet.module.d.ts +0 -8
- package/lib/system.module.d.ts +0 -33
- package/lib/views/cube/chart.component.d.ts +0 -38
- package/lib/views/cube/cube-base.d.ts +0 -45
- package/lib/views/cube/explore.component.d.ts +0 -40
- package/lib/views/cube/matrix.component.d.ts +0 -61
- package/lib/views/cube/parallel.component.d.ts +0 -58
- package/lib/views/cube/pivot.component.d.ts +0 -32
- package/lib/views/cube/sum.component.d.ts +0 -77
- package/lib/views/cube/view.component.d.ts +0 -40
- package/lib/views/document-view-ref.d.ts +0 -18
- package/lib/views/timeline/timeline.component.exp.d.ts +0 -66
- package/lib/views/view-item.component.d.ts +0 -28
- package/lib/views/views.component.d.ts +0 -14
- package/lib/views/views.mobile.component.d.ts +0 -14
- package/lib/views/views.pane.component.d.ts +0 -12
- package/public-api.d.ts +0 -134
@@ -1,448 +0,0 @@
|
|
1
|
-
import { EventEmitter, Component, ViewChild, Output, Input } from '@angular/core';
|
2
|
-
import { MatTableDataSource } from '@angular/material/table';
|
3
|
-
import { MatMenuTrigger } from '@angular/material/menu';
|
4
|
-
import { MatSort } from '@angular/material/sort';
|
5
|
-
import { SelectionModel } from '@angular/cdk/collections';
|
6
|
-
import { MatPaginator } from '@angular/material/paginator';
|
7
|
-
import { forkJoin, of, Subject, debounceTime } from 'rxjs';
|
8
|
-
import { takeUntil, tap, shareReplay, finalize, map, first } from 'rxjs/operators';
|
9
|
-
import { DRAFT } from '../core/models';
|
10
|
-
import { isMobile, queryParams } from '../core/functions';
|
11
|
-
import { expandListItemAnimation, itemAnimation, listAnimation, listItemUpdatedAnimation } from '../core/animations';
|
12
|
-
import * as i0 from "@angular/core";
|
13
|
-
import * as i1 from "../core/mailbox.service";
|
14
|
-
import * as i2 from "../cube/cube.service";
|
15
|
-
import * as i3 from "../core/session.service";
|
16
|
-
import * as i4 from "../core/prompt.service";
|
17
|
-
import * as i5 from "../core/translate.service";
|
18
|
-
import * as i6 from "../core/hub.service";
|
19
|
-
import * as i7 from "../core/none.component";
|
20
|
-
import * as i8 from "@angular/material/progress-bar";
|
21
|
-
import * as i9 from "@angular/material/table";
|
22
|
-
import * as i10 from "@angular/material/checkbox";
|
23
|
-
import * as i11 from "@angular/material/button";
|
24
|
-
import * as i12 from "@angular/material/icon";
|
25
|
-
import * as i13 from "@angular/material/sort";
|
26
|
-
import * as i14 from "../core/identity/identity.component";
|
27
|
-
import * as i15 from "./expanded-item/expanded-item.component";
|
28
|
-
import * as i16 from "@angular/material/paginator";
|
29
|
-
import * as i17 from "@angular/material/menu";
|
30
|
-
import * as i18 from "@angular/material/divider";
|
31
|
-
import * as i19 from "@angular/common";
|
32
|
-
import * as i20 from "@angular/cdk/drag-drop";
|
33
|
-
import * as i21 from "@angular/flex-layout/extended";
|
34
|
-
import * as i22 from "@angular/material/tooltip";
|
35
|
-
import * as i23 from "../compose/state.component";
|
36
|
-
import * as i24 from "@angular/material/core";
|
37
|
-
import * as i25 from "../core/pipes/translate.pipe";
|
38
|
-
import * as i26 from "ngx-moment";
|
39
|
-
export const TAKE = 200, SIZE = 20, HEADER_COLUMN_NAMES = ['number', 'subject', 'value', 'owner', 'sender', 'received', 'replied', 'stateId', 'issued'];
|
40
|
-
/** browse items component*/
|
41
|
-
export class BrowseItemsComponent {
|
42
|
-
/** browse ctor */
|
43
|
-
constructor(_mailbox, _cube, _session, _sb, _translate, _cd, _messaging) {
|
44
|
-
this._mailbox = _mailbox;
|
45
|
-
this._cube = _cube;
|
46
|
-
this._session = _session;
|
47
|
-
this._sb = _sb;
|
48
|
-
this._translate = _translate;
|
49
|
-
this._cd = _cd;
|
50
|
-
this._messaging = _messaging;
|
51
|
-
this.onopen = new EventEmitter();
|
52
|
-
this.onview = new EventEmitter();
|
53
|
-
this.folderId = null;
|
54
|
-
this.filterType = null;
|
55
|
-
this.contextMenuPosition = { x: '0px', y: '0px' };
|
56
|
-
this.sharedActions = [];
|
57
|
-
this.dragDisabled = true;
|
58
|
-
this.PAGE_SIZE = SIZE;
|
59
|
-
this.DRAFT = DRAFT;
|
60
|
-
this.currencyFormat = this._cube.digitsInfo;
|
61
|
-
this.isMobile = isMobile();
|
62
|
-
this.selection = new SelectionModel(true, []);
|
63
|
-
this._pendingItems = {};
|
64
|
-
this._destroy = new Subject();
|
65
|
-
this._loading$ = new Subject();
|
66
|
-
}
|
67
|
-
ngOnInit() {
|
68
|
-
this.selection.changed.pipe(takeUntil(this._destroy)).subscribe(() => this._sharedActions());
|
69
|
-
this._mailbox.changed.pipe(takeUntil(this._destroy)).subscribe(m => {
|
70
|
-
if (!this.dataSource)
|
71
|
-
return;
|
72
|
-
const item = this.dataSource.data.find(c => c.id === m.id);
|
73
|
-
if (item) {
|
74
|
-
const extra = item;
|
75
|
-
if (!extra.working) {
|
76
|
-
if (m.folderId && m.folderId !== this.folderId)
|
77
|
-
this._remove(item);
|
78
|
-
else {
|
79
|
-
this._assign(item, m);
|
80
|
-
this._cd.markForCheck();
|
81
|
-
}
|
82
|
-
}
|
83
|
-
}
|
84
|
-
else
|
85
|
-
m.model &&
|
86
|
-
this._add(m);
|
87
|
-
});
|
88
|
-
this._mailbox.deleted.pipe(takeUntil(this._destroy)).subscribe(id => {
|
89
|
-
if (!this.dataSource)
|
90
|
-
return;
|
91
|
-
const item = this.dataSource.data.find(c => c.id === id);
|
92
|
-
item &&
|
93
|
-
this._remove(item);
|
94
|
-
});
|
95
|
-
this._messaging.new$.pipe(takeUntil(this._destroy)).subscribe(m => {
|
96
|
-
if (!this.dataSource)
|
97
|
-
return;
|
98
|
-
const item = this.dataSource.data.find(c => c.id === m.model.id);
|
99
|
-
if (!item && this.folderId === m.model.folderId) {
|
100
|
-
this._pendingItems[m.model.id] = of(m.model);
|
101
|
-
this._add(m.model);
|
102
|
-
}
|
103
|
-
});
|
104
|
-
this._messaging.update$.pipe(takeUntil(this._destroy)).subscribe(m => {
|
105
|
-
if (!this.dataSource)
|
106
|
-
return;
|
107
|
-
const item = this.dataSource.data.find(c => c.id === m.model.id);
|
108
|
-
if (item) {
|
109
|
-
if (item.folderId === m.model.folderId) {
|
110
|
-
this._assign(item, m.model);
|
111
|
-
this._pendingItems[m.model.id] = of(item);
|
112
|
-
this.updatedElement = item;
|
113
|
-
}
|
114
|
-
else
|
115
|
-
this._remove(item);
|
116
|
-
}
|
117
|
-
});
|
118
|
-
this._messaging.delete$.pipe(takeUntil(this._destroy)).subscribe(m => {
|
119
|
-
const item = this.dataSource.data.find(c => c.id === m.id);
|
120
|
-
item && this._remove(item);
|
121
|
-
});
|
122
|
-
this._messaging.comment$.pipe(takeUntil(this._destroy)).subscribe(c => {
|
123
|
-
const item = this.dataSource.data.find(i => i.id === c.id);
|
124
|
-
if (item && item.comments)
|
125
|
-
item.comments.push(c.model);
|
126
|
-
});
|
127
|
-
this._messaging.vote$.pipe(takeUntil(this._destroy)).subscribe(v => {
|
128
|
-
const item = this.dataSource.data.find(c => c.id === v.id);
|
129
|
-
if (item && item.comments) {
|
130
|
-
const comment = item.comments.find(c => c.id === v.commentId);
|
131
|
-
comment.votes = v.votes;
|
132
|
-
}
|
133
|
-
});
|
134
|
-
this._session.loaded.pipe(takeUntil(this._destroy)).
|
135
|
-
subscribe(() => this.refresh());
|
136
|
-
this._loading$.pipe(takeUntil(this._destroy), debounceTime(100)).
|
137
|
-
subscribe(e => this.loading = e);
|
138
|
-
}
|
139
|
-
ngOnChanges(changes) {
|
140
|
-
this.displayedColumns = this._columns();
|
141
|
-
this.refresh();
|
142
|
-
}
|
143
|
-
_assign(model1, model2) {
|
144
|
-
Object.assign(model1, model2, {
|
145
|
-
model: Object.deepAssign(model1.model, model1.model)
|
146
|
-
});
|
147
|
-
}
|
148
|
-
get folder() { return this.folderId ? this._session.profile.folders.find(f => f.name === this.folderId) : null; }
|
149
|
-
//drop(evt: CdkDragDrop<string, string>) {
|
150
|
-
// (evt.previousContainer.id === 'tags') &&
|
151
|
-
// this.tag(evt.currentIndex, evt.item.data);
|
152
|
-
//}
|
153
|
-
dragStarted(event) {
|
154
|
-
}
|
155
|
-
onContextMenu(event, item) {
|
156
|
-
event.preventDefault();
|
157
|
-
this.contextMenuPosition.x = event.clientX + 'px';
|
158
|
-
this.contextMenuPosition.y = event.clientY + 'px';
|
159
|
-
this.contextMenu.menuData = { item };
|
160
|
-
//this.contextMenu.menu.focusFirstItem('mouse');
|
161
|
-
this.contextMenu.openMenu();
|
162
|
-
}
|
163
|
-
toggleRead(item) {
|
164
|
-
this.contextMenu.closeMenu();
|
165
|
-
this._mailbox.read(item.id, !item.read).
|
166
|
-
subscribe(() => item.read = !item.read);
|
167
|
-
}
|
168
|
-
select(id) {
|
169
|
-
if (this.dataSource) {
|
170
|
-
if (this.selectedElement && this.selectedElement.id === id)
|
171
|
-
return;
|
172
|
-
this.selectedElement = this.dataSource.data.find(i => i.id === id);
|
173
|
-
}
|
174
|
-
}
|
175
|
-
tag(currentIndex, tag) {
|
176
|
-
const data = this.dataSource.sortData(this.dataSource.data, this.sort), mail = data[this.dataSource.paginator.pageIndex * this.dataSource.paginator.pageSize + currentIndex];
|
177
|
-
this._retrieve(mail).subscribe(item => {
|
178
|
-
if (item.tags && item.tags.indexOf(tag) > -1)
|
179
|
-
return;
|
180
|
-
this._mailbox.tags(mail.id, item.tags).subscribe(() => {
|
181
|
-
if (!item.tags)
|
182
|
-
item.tags = [tag];
|
183
|
-
else
|
184
|
-
item.tags.push(tag);
|
185
|
-
});
|
186
|
-
});
|
187
|
-
}
|
188
|
-
open(item, evt) {
|
189
|
-
this.contextMenu.closeMenu();
|
190
|
-
evt.stopPropagation();
|
191
|
-
this._retrieve(item).subscribe(() => this.onopen.next(item), () => this._sb.error());
|
192
|
-
}
|
193
|
-
view(item, evt) {
|
194
|
-
this.contextMenu.closeMenu();
|
195
|
-
evt.stopPropagation();
|
196
|
-
this._retrieve(item).subscribe(() => this.onview.next(item), () => this._sb.error());
|
197
|
-
}
|
198
|
-
refresh() {
|
199
|
-
this._pendingItems = {};
|
200
|
-
this._loading$.next(true);
|
201
|
-
return this._mailbox.findAll(Object.assign(Object.assign({}, this.filters), { folderId: this.folderId, type: this.filterType }), { take: TAKE }).
|
202
|
-
pipe(finalize(() => this._loading$.next(false))).
|
203
|
-
subscribe(r => {
|
204
|
-
this.selection.clear();
|
205
|
-
this.dataSource = new MatTableDataSource(r);
|
206
|
-
this.sort.active = this.sorting;
|
207
|
-
this.sort.start = this.direction;
|
208
|
-
this.dataSource.sort = this.sort;
|
209
|
-
this.dataSource.paginator = this.paginator;
|
210
|
-
this.paginator.pageIndex > 0 && this.paginator.firstPage();
|
211
|
-
}, () => this._sb.error());
|
212
|
-
}
|
213
|
-
_group(data) {
|
214
|
-
const groups = {};
|
215
|
-
data.forEach(i => {
|
216
|
-
if (!groups[i.documentId])
|
217
|
-
groups[i.documentId] = [i];
|
218
|
-
else
|
219
|
-
groups[i.documentId].push(i);
|
220
|
-
});
|
221
|
-
}
|
222
|
-
isGroup(_, item) {
|
223
|
-
}
|
224
|
-
sortData() {
|
225
|
-
this.sorting = this.sort.active;
|
226
|
-
this.direction = this.sort.direction;
|
227
|
-
}
|
228
|
-
isAllDraft() {
|
229
|
-
return this.selection.selected.length && this.selection.selected.every(m => m.draft);
|
230
|
-
}
|
231
|
-
isAllSelected() {
|
232
|
-
const numSelected = this.selection.selected.length;
|
233
|
-
const numRows = this.dataSource.data.length;
|
234
|
-
return numSelected === numRows;
|
235
|
-
}
|
236
|
-
masterToggle() {
|
237
|
-
this.isAllSelected() ?
|
238
|
-
this.selection.clear() :
|
239
|
-
this.selection.select(...this.dataSource.data);
|
240
|
-
}
|
241
|
-
flag(item, evt) {
|
242
|
-
const extra = item;
|
243
|
-
extra.working = true;
|
244
|
-
this._mailbox.flag(item.id, !item.flag).subscribe(() => {
|
245
|
-
item.flag = !item.flag;
|
246
|
-
extra.working = false;
|
247
|
-
}, () => extra.working = false);
|
248
|
-
evt.stopPropagation();
|
249
|
-
}
|
250
|
-
get sorting() {
|
251
|
-
return localStorage.getItem('sorting');
|
252
|
-
}
|
253
|
-
set sorting(value) {
|
254
|
-
localStorage.setItem('sorting', value);
|
255
|
-
}
|
256
|
-
get direction() {
|
257
|
-
return localStorage.getItem('direction') || 'desc';
|
258
|
-
}
|
259
|
-
set direction(value) {
|
260
|
-
localStorage.setItem('direction', value);
|
261
|
-
}
|
262
|
-
submitAll() {
|
263
|
-
this._forEach(i => this._mailbox.submit(i.id, i.version, i.formId).pipe(tap(() => this.dataSource.data.remove(i))), 'SubmitErr').
|
264
|
-
subscribe(is => is.length > 1 ? this._sb.toast('SubmittedMany', is.length) :
|
265
|
-
this._sb.toast('Submitted', is[0].number));
|
266
|
-
}
|
267
|
-
discardAll() {
|
268
|
-
this._sb.ask('DiscardAsk', 'Discard', {
|
269
|
-
color: 'warn',
|
270
|
-
ok: 'Discard'
|
271
|
-
}).subscribe(ok => ok &&
|
272
|
-
this._forEach(i => this._mailbox.delete(i.id).pipe(tap(() => this.dataSource.data.remove(i))), 'Err').subscribe());
|
273
|
-
}
|
274
|
-
toggleExpanded(item, event) {
|
275
|
-
if (this.expandedElement != item) {
|
276
|
-
this._retrieve(item).subscribe(() => {
|
277
|
-
//playAudio('navigation_hover-tap');
|
278
|
-
this.expandedElement = item;
|
279
|
-
}, () => this._sb.error());
|
280
|
-
}
|
281
|
-
else
|
282
|
-
this.expandedElement = null;
|
283
|
-
this.contextMenu.closeMenu();
|
284
|
-
event.stopPropagation();
|
285
|
-
}
|
286
|
-
/**
|
287
|
-
* get full mesage body either from cache or network
|
288
|
-
* @param item
|
289
|
-
*/
|
290
|
-
_retrieve(item) {
|
291
|
-
if (this._pendingItems[item.id])
|
292
|
-
return this._pendingItems[item.id];
|
293
|
-
else {
|
294
|
-
item.loading = true;
|
295
|
-
this._loading$.next(true);
|
296
|
-
return this._pendingItems[item.id] =
|
297
|
-
this._mailbox.get(item.id, item.read).pipe(first(), map(m => Object.assign(item, m)), finalize(() => {
|
298
|
-
item.loading = false;
|
299
|
-
this._loading$.next(false);
|
300
|
-
}), shareReplay());
|
301
|
-
}
|
302
|
-
}
|
303
|
-
_sharedActions() {
|
304
|
-
if (this.selection.hasValue() && !this.isAllDraft()) {
|
305
|
-
this.sharedActions = [];
|
306
|
-
forkJoin(this.selection.selected.map(i => this._retrieve(i))).subscribe((m) => {
|
307
|
-
const actions = m[0].actions;
|
308
|
-
if (!actions)
|
309
|
-
return [];
|
310
|
-
for (let i = 1; i < m.length; i++) {
|
311
|
-
const item = m[i];
|
312
|
-
for (let j = 0; j < actions.length; j++) {
|
313
|
-
if (item.actions.indexOf(actions[j]) === -1)
|
314
|
-
actions.splice(j, 1);
|
315
|
-
}
|
316
|
-
}
|
317
|
-
this.sharedActions = this._session.profile.actions.filter(a => actions.indexOf(a.name) > -1 && (this.selection.selected.length === 1 || a.multiple !== false));
|
318
|
-
}, undefined);
|
319
|
-
}
|
320
|
-
else
|
321
|
-
this.sharedActions = [];
|
322
|
-
}
|
323
|
-
/**
|
324
|
-
* execute function per item in collection
|
325
|
-
* @param fn
|
326
|
-
* @param error
|
327
|
-
*/
|
328
|
-
_forEach(fn, error) {
|
329
|
-
const items = this.selection.selected.slice();
|
330
|
-
const errors = new Subject();
|
331
|
-
errors.pipe().subscribe(m => this._sb.errorString(m));
|
332
|
-
const promises = items.map(m => fn(m).pipe(tap(() => {
|
333
|
-
}, (e) => {
|
334
|
-
let message;
|
335
|
-
switch (e.status) {
|
336
|
-
case 404:
|
337
|
-
message = this._translate.get('Err');
|
338
|
-
break;
|
339
|
-
case 406:
|
340
|
-
message = e.error;
|
341
|
-
break;
|
342
|
-
case 409:
|
343
|
-
message = this._translate.get('VersionErr', m.number);
|
344
|
-
Object.assign(m, e.error);
|
345
|
-
break;
|
346
|
-
default:
|
347
|
-
message = this._translate.get(error);
|
348
|
-
}
|
349
|
-
errors.next(message);
|
350
|
-
}), finalize(() => m.working = false)));
|
351
|
-
return forkJoin(promises).pipe(tap(() => {
|
352
|
-
errors.unsubscribe();
|
353
|
-
this.selection.clear();
|
354
|
-
this.dataSource.filter = '';
|
355
|
-
}), map(() => items));
|
356
|
-
}
|
357
|
-
_add(m) {
|
358
|
-
this.dataSource.data.splice(0, 0, m);
|
359
|
-
this.dataSource.filter = '';
|
360
|
-
}
|
361
|
-
_remove(item) {
|
362
|
-
this.selection.deselect(item);
|
363
|
-
this.dataSource.data.remove(item);
|
364
|
-
this.dataSource.filter = '';
|
365
|
-
this._cd.markForCheck();
|
366
|
-
}
|
367
|
-
_columns() {
|
368
|
-
const columns = ['select'];
|
369
|
-
if (this.folder && this.folder.columns) {
|
370
|
-
const customColumns = [];
|
371
|
-
this.folder.columns.forEach(c => {
|
372
|
-
if (HEADER_COLUMN_NAMES.indexOf(c.name) > -1)
|
373
|
-
columns.push(c.name);
|
374
|
-
else {
|
375
|
-
columns.push(`model.${c.name}`);
|
376
|
-
customColumns.push(c);
|
377
|
-
}
|
378
|
-
});
|
379
|
-
this.customColumns = customColumns;
|
380
|
-
}
|
381
|
-
else {
|
382
|
-
columns.push('number');
|
383
|
-
if (!this.isMobile) {
|
384
|
-
columns.push('subject');
|
385
|
-
}
|
386
|
-
columns.push('value');
|
387
|
-
}
|
388
|
-
columns.push('options');
|
389
|
-
return columns;
|
390
|
-
}
|
391
|
-
sendAll(action, args) {
|
392
|
-
const params = queryParams(args);
|
393
|
-
this._forEach(i => this._mailbox.send(i.id, i.version, i.formId, null, action, params).pipe(tap(() => (i.folderId !== this.folderId) && this.dataSource.data.remove(i))), 'SendErr').
|
394
|
-
subscribe(is => is.length > 1 ? this._sb.toast('SentMany', is.length.toString(), this._actionAdjective(action, true)) :
|
395
|
-
this._sb.toast('Sent', is[0].number, this._actionAdjective(action)));
|
396
|
-
}
|
397
|
-
_actionAdjective(name, plural) {
|
398
|
-
const action = this._session.profile.actions.find(a => a.name === name);
|
399
|
-
return ((plural ? (action.adjectivePlural || action.adjective) : action.adjective) || action.title).toLowerCase();
|
400
|
-
}
|
401
|
-
ngOnDestroy() {
|
402
|
-
this._destroy.next();
|
403
|
-
this._destroy.complete();
|
404
|
-
}
|
405
|
-
}
|
406
|
-
BrowseItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BrowseItemsComponent, deps: [{ token: i1.MailboxService }, { token: i2.CubeService }, { token: i3.SessionService }, { token: i4.PromptService }, { token: i5.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i6.HubService }], target: i0.ɵɵFactoryTarget.Component });
|
407
|
-
BrowseItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: BrowseItemsComponent, selector: "bizdoc-browse-items", inputs: { folderId: "folderId", filterType: "filterType", filters: "filters" }, outputs: { onopen: "open", onview: "view" }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: MatMenuTrigger, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bizdoc-none *ngIf=\"dataSource?.data.length === 0\" title=\"NoMessages\" [subtitle]=\"!isMobile && folderId === DRAFT ? 'AltN' : null\" icon=\"mail_outline\"></bizdoc-none>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<mat-table cdkDropList class=\"data-table\"\r\n [cdkDropListDisabled]=\"isMobile\"\r\n [cdkDropListData]=\"dataSource?.data\"\r\n cdkDropListConnectedTo=\"folders\"\r\n cdkDropListSortingDisabled\r\n [dataSource]=\"dataSource\" matSort multiTemplateDataRows (matSortChange)=\"sortData()\"\r\n id=\"browse-table\" [@list]=\"dataSource\" [style.display]=\"dataSource?.data.length ?'':'none'\">\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef>\r\n <div class=\"\"></div>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [aria-label]=\"'Check'|translate\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" [aria-label]=\"'Check'|translate\"\r\n (change)=\"$event ? selection.toggle(item) : null\"\r\n [checked]=\"selection.isSelected(item)\">\r\n </mat-checkbox>\r\n <!-- drag -->\r\n <button mat-icon-button cdkDragHandle\r\n (mousedown)=\"dragDisabled = false\"\r\n (mouseup)=\"dragDisabled = true\"\r\n (touchstart)=\"dragDisabled = false\"\r\n (touchend)=\"dragDisabled = true\"\r\n class=\"drag\" aria-disabled=\"true\" fxHide.xs>\r\n <mat-icon>drag_indicator</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"toggleExpanded(item, $event)\" [matTooltip]=\"'Details' | translate\" [attr.aria-label]=\"'Details' | translate\" class=\"tool\"><mat-icon>{{item == expandedElement ? 'unfold_less' : 'unfold_more'}}</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"owner\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Owner' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.ownerId\" [identity]=\"item.ownerId\" [by]=\"item.ownerById\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sender\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Sender' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-identity-name *ngIf=\"item.senderId\" [identity]=\"item.senderId\" [by]=\"item.byId\"></bizdoc-identity-name>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"received\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Received' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.received | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"replied\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Replied' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.replied | amCalendar}} </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"issued\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Issued' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.issued | amCalendar}} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"stateId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"customColumns\">\r\n <ng-container *ngFor=\"let c of customColumns\" [matColumnDef]=\"c.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{c.title}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <span [ngSwitch]=\"c.type\">\r\n <span *ngSwitchCase=\"'Date'\">\r\n {{item.model[c.name] | amCalendar}}\r\n </span>\r\n <span *ngSwitchCase=\"'Decimal'\">\r\n {{item.model[c.name] | number }}\r\n </span>\r\n <span *ngSwitchCase=\"'Boolean'\">\r\n <mat-checkbox [checked]=\"item.model[c.name]\" disabled=\"true\"></mat-checkbox>\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{item.model[c.name]}}\r\n </span>\r\n </span>\r\n </mat-cell>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Value column -->\r\n <ng-container matColumnDef=\"value\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Amount' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.value | currency : item.currencyCode : 'symbol' : currencyFormat}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- options column -->\r\n <ng-container matColumnDef=\"options\">\r\n <mat-header-cell *matHeaderCellDef></mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\">\r\n <button mat-icon-button (click)=\"flag(item, $event)\" [matTooltip]=\"'Flagged'| translate\" [attr.aria-label]=\"'ToggleFlagged' | translate\" class=\"tool\"><mat-icon [class.document-flag]=\"item.flag\">{{item.flag ? 'star' : 'star_border'}}</mat-icon></button>\r\n <button mat-icon-button (click)=\"view(item, $event)\" [matTooltip]=\"'View' | translate\" [attr.aria-label]=\"'View' | translate\" class=\"tool\"><mat-icon>data_usage</mat-icon></button>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Expanded Content Column -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <mat-cell *matCellDef=\"let item\" [attr.colspan]=\"displayedColumns.length\" [@updated]=\"item == updatedElement\"\r\n [class.read-row]=\"item.read\">\r\n <div [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\" style=\"width: 100%\">\r\n <bizdoc-expanded-item [item]=\"item\" *ngIf=\"item == expandedElement\"></bizdoc-expanded-item>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row @item [@updated]=\"item == updatedElement\"\r\n *matRowDef=\"let item; let dataIndex = dataIndex; columns: displayedColumns;\" class=\"element-row\"\r\n cdkDrag [cdkDragData]=\"item\"\r\n [cdkDragDisabled]=\"dragDisabled\"\r\n (cdkDragReleased)=\"dragDisabled = true\"\r\n [ngClass]=\"{'selecteded-row': selectedElement === item,\r\n 'expanded-row': expandedElement === item,\r\n 'odd-row': dataIndex % 2,\r\n 'read-row': item.read}\" matRipple\r\n (click)=\"open(item, $event)\" (contextmenu)=\"onContextMenu($event, item)\">\r\n <div *cdkDragPreview>\r\n <button mat-icon-button aria-disabled=\"true\"><mat-icon>drag_indicator</mat-icon></button> <span>#{{item.number}}</span>\r\n </div>\r\n <div *cdkDragPlaceholder>\r\n <!-- none -->\r\n </div>\r\n </mat-row>\r\n <mat-row *matRowDef=\"let item; ; let dataIndex = dataIndex; columns: ['expandedDetail']\"\r\n class=\"detail-row\" matRipple\r\n [ngClass]=\"{ 'selecteded-row': selectedElement === item,\r\n 'odd-row': dataIndex % 2\r\n }\"></mat-row>\r\n</mat-table>\r\n<mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"PAGE_SIZE\" [style.display]=\"!isMobile && dataSource?.data.length>PAGE_SIZE ? '':'none'\"></mat-paginator>\r\n<!--style=\"display:none\"-->\r\n<div style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\">\r\n</div>\r\n<mat-menu #contextMenu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item (click)=\"open(item, $event)\">{{'Open'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"toggleRead(item)\">{{(item.read ?'MarkAsUnread':'MarkAsRead')|translate}}</button>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: ["#browse-table{width:100%}#browse-table .detail-row{min-height:0}#browse-table .element-row{cursor:pointer}#browse-table .element-row .drag{cursor:move}#browse-table .read-row{font-weight:100}@media screen and (min-width: 600px){.mat-row .tool{opacity:.05}.mat-row:hover .tool{opacity:1}}::ng-deep .mat-column-options{justify-content:end;padding-inline-end:8px}::ng-deep .mat-column-value{justify-content:right}::ng-deep .mat-column-select{white-space:nowrap}::ng-deep .mat-column-number{white-space:nowrap}\n"], components: [{ type: i7.NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i13.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i14.IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: i15.ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: ["item"], outputs: ["sent"] }, { type: i9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i16.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { type: i17.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i17.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i18.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i19.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i20.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i13.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i9.MatCellDef, selector: "[matCellDef]" }, { type: i9.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i20.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { type: i21.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i22.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i23.StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { type: i19.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i19.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i19.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i19.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i20.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i24.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleRadius", "matRippleDisabled", "matRippleTrigger", "matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleAnimation"], exportAs: ["matRipple"] }, { type: i19.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i21.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i20.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["matchSize", "data"] }, { type: i20.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i17.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i17.MatMenuContent, selector: "ng-template[matMenuContent]" }], pipes: { "translate": i25.TranslatePipe, "amCalendar": i26.CalendarPipe, "number": i19.DecimalPipe, "currency": i19.CurrencyPipe }, animations: [
|
408
|
-
listAnimation,
|
409
|
-
itemAnimation,
|
410
|
-
expandListItemAnimation,
|
411
|
-
listItemUpdatedAnimation
|
412
|
-
] });
|
413
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BrowseItemsComponent, decorators: [{
|
414
|
-
type: Component,
|
415
|
-
args: [{
|
416
|
-
selector: 'bizdoc-browse-items',
|
417
|
-
templateUrl: './browse-items.component.html',
|
418
|
-
styleUrls: ['./browse-items.component.scss'],
|
419
|
-
animations: [
|
420
|
-
listAnimation,
|
421
|
-
itemAnimation,
|
422
|
-
expandListItemAnimation,
|
423
|
-
listItemUpdatedAnimation
|
424
|
-
],
|
425
|
-
}]
|
426
|
-
}], ctorParameters: function () { return [{ type: i1.MailboxService }, { type: i2.CubeService }, { type: i3.SessionService }, { type: i4.PromptService }, { type: i5.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i6.HubService }]; }, propDecorators: { onopen: [{
|
427
|
-
type: Output,
|
428
|
-
args: ['open']
|
429
|
-
}], onview: [{
|
430
|
-
type: Output,
|
431
|
-
args: ['view']
|
432
|
-
}], folderId: [{
|
433
|
-
type: Input
|
434
|
-
}], filterType: [{
|
435
|
-
type: Input
|
436
|
-
}], filters: [{
|
437
|
-
type: Input
|
438
|
-
}], contextMenu: [{
|
439
|
-
type: ViewChild,
|
440
|
-
args: [MatMenuTrigger]
|
441
|
-
}], sort: [{
|
442
|
-
type: ViewChild,
|
443
|
-
args: [MatSort, { static: true }]
|
444
|
-
}], paginator: [{
|
445
|
-
type: ViewChild,
|
446
|
-
args: [MatPaginator, { static: true }]
|
447
|
-
}] } });
|
448
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3NlLWl0ZW1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYnJvd3NlL2Jyb3dzZS1pdGVtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Jyb3dzZS9icm93c2UtaXRlbXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBK0MsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBYyxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUE2RCxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7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RSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRCxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNELElBQUksSUFBSSxJQUFLLElBQXVCLENBQUMsUUFBUTtnQkFDMUMsSUFBNEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNELElBQUksSUFBSSxJQUFLLElBQXVCLENBQUMsUUFBUSxFQUFFO2dCQUM3QyxNQUFNLE9BQU8sR0FBSSxJQUE0QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkYsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxD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QkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRU4sV0FBVztzQkFEVixTQUFTO3VCQUFDLGNBQWM7Z0JBSWEsSUFBSTtzQkFBekMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNPLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmb3JrSm9pbiwgb2YsIFN1YmplY3QsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCwgc2hhcmVSZXBsYXksIGZpbmFsaXplLCBtYXAsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGb2xkZXIsIEhlYWRlck1vZGVsLCBSZWNpcGllbnRNb2RlbCwgQWN0aW9uLCBGb2xkZXJDb2x1bW4sIERSQUZUIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBpc01vYmlsZSwgcXVlcnlQYXJhbXMgfSBmcm9tICcuLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IGV4cGFuZExpc3RJdGVtQW5pbWF0aW9uLCBpdGVtQW5pbWF0aW9uLCBsaXN0QW5pbWF0aW9uLCBsaXN0SXRlbVVwZGF0ZWRBbmltYXRpb24gfSBmcm9tICcuLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlLCBJdGVtRXh0cmEsIE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlIH0gZnJvbSAnLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJyb3dzZUZpbHRlckFyZ3MgfSBmcm9tICcuL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjb25zdCBUQUtFID0gMjAwLCBTSVpFID0gMjAsIEhFQURFUl9DT0xVTU5fTkFNRVMgPSBbJ251bWJlcicsICdzdWJqZWN0JywgJ3ZhbHVlJywgJ293bmVyJywgJ3NlbmRlcicsICdyZWNlaXZlZCcsICdyZXBsaWVkJywgJ3N0YXRlSWQnLCAnaXNzdWVkJ107XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWJyb3dzZS1pdGVtcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Jyb3dzZS1pdGVtcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnJvd3NlLWl0ZW1zLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgbGlzdEFuaW1hdGlvbixcclxuICAgIGl0ZW1BbmltYXRpb24sXHJcbiAgICBleHBhbmRMaXN0SXRlbUFuaW1hdGlvbixcclxuICAgIGxpc3RJdGVtVXBkYXRlZEFuaW1hdGlvblxyXG4gIF0sXHJcbn0pXHJcbi8qKiBicm93c2UgaXRlbXMgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEJyb3dzZUl0ZW1zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgnb3BlbicpIHJlYWRvbmx5IG9ub3BlbiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjaXBpZW50TW9kZWw+KCk7XHJcbiAgQE91dHB1dCgndmlldycpIHJlYWRvbmx5IG9udmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjaXBpZW50TW9kZWw+KCk7XHJcbiAgQElucHV0KCkgZm9sZGVySWQ6IHN0cmluZyA9IG51bGw7XHJcbiAgQElucHV0KCkgZmlsdGVyVHlwZTogRmlsdGVyVHlwZSA9IG51bGw7XHJcbiAgQElucHV0KCkgZmlsdGVyczogQnJvd3NlRmlsdGVyQXJncztcclxuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKVxyXG4gIGNvbnRleHRNZW51OiBNYXRNZW51VHJpZ2dlcjtcclxuXHJcbiAgY29udGV4dE1lbnVQb3NpdGlvbiA9IHsgeDogJzBweCcsIHk6ICcwcHgnIH07XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KSBzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8SGVhZGVyTW9kZWw+O1xyXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdO1xyXG4gIGN1c3RvbUNvbHVtbnM/OiBGb2xkZXJDb2x1bW5bXTtcclxuICBleHBhbmRlZEVsZW1lbnQ/OiBIZWFkZXJNb2RlbDtcclxuICB1cGRhdGVkRWxlbWVudD86IEhlYWRlck1vZGVsO1xyXG4gIHNlbGVjdGVkRWxlbWVudD86IEhlYWRlck1vZGVsO1xyXG4gIHNoYXJlZEFjdGlvbnM6IEFjdGlvbltdID0gW107XHJcbiAgZHJhZ0Rpc2FibGVkID0gdHJ1ZTtcclxuICByZWFkb25seSBQQUdFX1NJWkUgPSBTSVpFO1xyXG4gIHJlYWRvbmx5IERSQUZUID0gRFJBRlQ7XHJcbiAgcmVhZG9ubHkgY3VycmVuY3lGb3JtYXQgPSB0aGlzLl9jdWJlLmRpZ2l0c0luZm87XHJcbiAgcmVhZG9ubHkgaXNNb2JpbGUgPSBpc01vYmlsZSgpO1xyXG4gIHJlYWRvbmx5IHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxIZWFkZXJNb2RlbD4odHJ1ZSwgW10pO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfcGVuZGluZ0l0ZW1zOiB7IFtpZDogc3RyaW5nXTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxhbnk+PjsgfSA9IHt9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRpbmckID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvKiogYnJvd3NlIGN0b3IgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY3ViZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnaW5nOiBIdWJTZXJ2aWNlKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3NoYXJlZEFjdGlvbnMoKSk7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShtID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5kYXRhU291cmNlLmRhdGEuZmluZChjID0+IGMuaWQgPT09IG0uaWQpO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIGNvbnN0IGV4dHJhID0gaXRlbSBhcyBJdGVtRXh0cmE7XHJcbiAgICAgICAgaWYgKCFleHRyYS53b3JraW5nKSB7XHJcbiAgICAgICAgICBpZiAobS5mb2xkZXJJZCAmJiBtLmZvbGRlcklkICE9PSB0aGlzLmZvbGRlcklkKVxyXG4gICAgICAgICAgICB0aGlzLl9yZW1vdmUoaXRlbSk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fYXNzaWduKGl0ZW0sIG0pO1xyXG4gICAgICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBtLm1vZGVsICYmXHJcbiAgICAgICAgdGhpcy5fYWRkKG0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9tYWlsYm94LmRlbGV0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShpZCA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5kYXRhU291cmNlKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbmQoYyA9PiBjLmlkID09PSBpZCk7XHJcbiAgICAgIGl0ZW0gJiZcclxuICAgICAgICB0aGlzLl9yZW1vdmUoaXRlbSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy5uZXckLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUobSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5kYXRhU291cmNlKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbmQoYyA9PiBjLmlkID09PSBtLm1vZGVsLmlkKTtcclxuICAgICAgaWYgKCFpdGVtICYmIHRoaXMuZm9sZGVySWQgPT09IG0ubW9kZWwuZm9sZGVySWQpIHtcclxuICAgICAgICB0aGlzLl9wZW5kaW5nSXRlbXNbbS5tb2RlbC5pZF0gPSBvZihtLm1vZGVsIGFzIFJlY2lwaWVudE1vZGVsKTtcclxuICAgICAgICB0aGlzLl9hZGQobS5tb2RlbCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fbWVzc2FnaW5nLnVwZGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShtID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5kYXRhU291cmNlLmRhdGEuZmluZChjID0+IGMuaWQgPT09IG0ubW9kZWwuaWQpO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIGlmIChpdGVtLmZvbGRlcklkID09PSBtLm1vZGVsLmZvbGRlcklkKSB7XHJcbiAgICAgICAgICB0aGlzLl9hc3NpZ24oaXRlbSwgbS5tb2RlbCk7XHJcbiAgICAgICAgICB0aGlzLl9wZW5kaW5nSXRlbXNbbS5tb2RlbC5pZF0gPSBvZihpdGVtIGFzIFJlY2lwaWVudE1vZGVsKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlZEVsZW1lbnQgPSBpdGVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLl9yZW1vdmUoaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fbWVzc2FnaW5nLmRlbGV0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShtID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbmQoYyA9PiBjLmlkID09PSBtLmlkKTtcclxuICAgICAgaXRlbSAmJiB0aGlzLl9yZW1vdmUoaXRlbSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy5jb21tZW50JC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5kYXRhU291cmNlLmRhdGEuZmluZChpID0+IGkuaWQgPT09IGMuaWQpO1xyXG4gICAgICBpZiAoaXRlbSAmJiAoaXRlbSBhcyBSZWNpcGllbnRNb2RlbCkuY29tbWVudHMpXHJcbiAgICAgICAgKGl0ZW0gYXMgUmVjaXBpZW50TW9kZWw8YW55PikuY29tbWVudHMucHVzaChjLm1vZGVsKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fbWVzc2FnaW5nLnZvdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maW5kKGMgPT4gYy5pZCA9PT0gdi5pZCk7XHJcbiAgICAgIGlmIChpdGVtICYmIChpdGVtIGFzIFJlY2lwaWVudE1vZGVsKS5jb21tZW50cykge1xyXG4gICAgICAgIGNvbnN0IGNvbW1lbnQgPSAoaXRlbSBhcyBSZWNpcGllbnRNb2RlbDxhbnk+KS5jb21tZW50cy5maW5kKGMgPT4gYy5pZCA9PT0gdi5jb21tZW50SWQpO1xyXG4gICAgICAgIGNvbW1lbnQudm90ZXMgPSB2LnZvdGVzO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3Nlc3Npb24ubG9hZGVkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHRoaXMucmVmcmVzaCgpKTtcclxuICAgIHRoaXMuX2xvYWRpbmckLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSkuXHJcbiAgICAgIHN1YnNjcmliZShlID0+IHRoaXMubG9hZGluZyA9IGUpO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLl9jb2x1bW5zKCk7XHJcbiAgICB0aGlzLnJlZnJlc2goKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYXNzaWduKG1vZGVsMTogSGVhZGVyTW9kZWwsIG1vZGVsMjogSGVhZGVyTW9kZWwpIHtcclxuICAgIE9iamVjdC5hc3NpZ24obW9kZWwxLCBtb2RlbDIsIHtcclxuICAgICAgbW9kZWw6IE9iamVjdC5kZWVwQXNzaWduKG1vZGVsMS5tb2RlbCwgbW9kZWwxLm1vZGVsKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldCBmb2xkZXIoKTogRm9sZGVyIHsgcmV0dXJuIHRoaXMuZm9sZGVySWQgPyB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZm9sZGVycy5maW5kKGYgPT4gZi5uYW1lID09PSB0aGlzLmZvbGRlcklkKSA6IG51bGw7IH1cclxuICAvL2Ryb3AoZXZ0OiBDZGtEcmFnRHJvcDxzdHJpbmcsIHN0cmluZz4pIHtcclxuICAvLyAgKGV2dC5wcmV2aW91c0NvbnRhaW5lci5pZCA9PT0gJ3RhZ3MnKSAmJlxyXG4gIC8vICAgIHRoaXMudGFnKGV2dC5jdXJyZW50SW5kZXgsIGV2dC5pdGVtLmRhdGEpO1xyXG4gIC8vfVxyXG4gIGRyYWdTdGFydGVkKGV2ZW50OiBhbnkpIHtcclxuICB9XHJcbiAgb25Db250ZXh0TWVudShldmVudDogTW91c2VFdmVudCwgaXRlbTogUmVjaXBpZW50TW9kZWwpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueCA9IGV2ZW50LmNsaWVudFggKyAncHgnO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZICsgJ3B4JztcclxuICAgIHRoaXMuY29udGV4dE1lbnUubWVudURhdGEgPSB7IGl0ZW0gfTtcclxuICAgIC8vdGhpcy5jb250ZXh0TWVudS5tZW51LmZvY3VzRmlyc3RJdGVtKCdtb3VzZScpO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudS5vcGVuTWVudSgpO1xyXG4gIH1cclxuICB0b2dnbGVSZWFkKGl0ZW06IFJlY2lwaWVudE1vZGVsKSB7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51LmNsb3NlTWVudSgpO1xyXG4gICAgdGhpcy5fbWFpbGJveC5yZWFkKGl0ZW0uaWQsICFpdGVtLnJlYWQpLlxyXG4gICAgICBzdWJzY3JpYmUoKCkgPT4gaXRlbS5yZWFkID0gIWl0ZW0ucmVhZClcclxuICB9XHJcbiAgc2VsZWN0KGlkOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50ICYmIHRoaXMuc2VsZWN0ZWRFbGVtZW50LmlkID09PSBpZCkgcmV0dXJuO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbmQoaSA9PiBpLmlkID09PSBpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHRhZyhjdXJyZW50SW5kZXg6IG51bWJlciwgdGFnOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGFTb3VyY2Uuc29ydERhdGEodGhpcy5kYXRhU291cmNlLmRhdGEsIHRoaXMuc29ydCksXHJcbiAgICAgIG1haWwgPSBkYXRhW3RoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IucGFnZUluZGV4ICogdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvci5wYWdlU2l6ZSArIGN1cnJlbnRJbmRleF07XHJcbiAgICB0aGlzLl9yZXRyaWV2ZShtYWlsKS5zdWJzY3JpYmUoaXRlbSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLnRhZ3MgJiYgaXRlbS50YWdzLmluZGV4T2YodGFnKSA+IC0xKSByZXR1cm47XHJcbiAgICAgIHRoaXMuX21haWxib3gudGFncyhtYWlsLmlkLCBpdGVtLnRhZ3MpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFpdGVtLnRhZ3MpIGl0ZW0udGFncyA9IFt0YWddO1xyXG4gICAgICAgIGVsc2UgaXRlbS50YWdzLnB1c2godGFnKVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBvcGVuKGl0ZW06IFJlY2lwaWVudE1vZGVsPGFueT4sIGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMuY29udGV4dE1lbnUuY2xvc2VNZW51KCk7XHJcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLl9yZXRyaWV2ZShpdGVtKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5vbm9wZW4ubmV4dChpdGVtKSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgfVxyXG4gIHZpZXcoaXRlbTogUmVjaXBpZW50TW9kZWw8YW55PiwgZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5jb250ZXh0TWVudS5jbG9zZU1lbnUoKTtcclxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuX3JldHJpZXZlKGl0ZW0pLnN1YnNjcmliZSgoKSA9PlxyXG4gICAgICB0aGlzLm9udmlldy5uZXh0KGl0ZW0pLCAoKSA9PiB0aGlzLl9zYi5lcnJvcigpKTtcclxuICB9XHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMuX3BlbmRpbmdJdGVtcyA9IHt9O1xyXG4gICAgdGhpcy5fbG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLl9tYWlsYm94LmZpbmRBbGwoeyAuLi50aGlzLmZpbHRlcnMsIGZvbGRlcklkOiB0aGlzLmZvbGRlcklkLCB0eXBlOiB0aGlzLmZpbHRlclR5cGUgfSwgeyB0YWtlOiBUQUtFIH0pLlxyXG4gICAgICBwaXBlKGZpbmFsaXplKCgpID0+XHJcbiAgICAgICAgdGhpcy5fbG9hZGluZyQubmV4dChmYWxzZSlcclxuICAgICAgKSkuXHJcbiAgICAgIHN1YnNjcmliZShyID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2Uocik7XHJcbiAgICAgICAgdGhpcy5zb3J0LmFjdGl2ZSA9IHRoaXMuc29ydGluZztcclxuICAgICAgICB0aGlzLnNvcnQuc3RhcnQgPSB0aGlzLmRpcmVjdGlvbiBhcyBhbnk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA+IDAgJiYgdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XHJcbiAgICAgIH0sICgpID0+XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoKVxyXG4gICAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF9ncm91cChkYXRhOiBIZWFkZXJNb2RlbFtdKSB7XHJcbiAgICBjb25zdCBncm91cHMgPSB7fTtcclxuICAgIGRhdGEuZm9yRWFjaChpID0+IHtcclxuICAgICAgaWYgKCFncm91cHNbaS5kb2N1bWVudElkXSlcclxuICAgICAgICBncm91cHNbaS5kb2N1bWVudElkXSA9IFtpXTtcclxuICAgICAgZWxzZSAoZ3JvdXBzW2kuZG9jdW1lbnRJZF0gYXMgSGVhZGVyTW9kZWxbXSkucHVzaChpKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgaXNHcm91cChfLCBpdGVtKSB7XHJcbiAgfVxyXG4gIHNvcnREYXRhKCkge1xyXG4gICAgdGhpcy5zb3J0aW5nID0gdGhpcy5zb3J0LmFjdGl2ZTtcclxuICAgIHRoaXMuZGlyZWN0aW9uID0gdGhpcy5zb3J0LmRpcmVjdGlvbjtcclxuICB9XHJcbiAgaXNBbGxEcmFmdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggJiYgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQuZXZlcnkobSA9PiBtLmRyYWZ0KTtcclxuICB9XHJcbiAgaXNBbGxTZWxlY3RlZCgpIHtcclxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xyXG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcbiAgbWFzdGVyVG9nZ2xlKCkge1xyXG4gICAgdGhpcy5pc0FsbFNlbGVjdGVkKCkgP1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpIDpcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcclxuICB9XHJcbiAgZmxhZyhpdGVtOiBIZWFkZXJNb2RlbCwgZXZ0OiBFdmVudCkge1xyXG4gICAgY29uc3QgZXh0cmEgPSBpdGVtIGFzIEl0ZW1FeHRyYTtcclxuICAgIGV4dHJhLndvcmtpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5fbWFpbGJveC5mbGFnKGl0ZW0uaWQsICFpdGVtLmZsYWcpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGl0ZW0uZmxhZyA9ICFpdGVtLmZsYWc7XHJcbiAgICAgIGV4dHJhLndvcmtpbmcgPSBmYWxzZTtcclxuICAgIH0sICgpID0+IGV4dHJhLndvcmtpbmcgPSBmYWxzZSk7XHJcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG4gIGdldCBzb3J0aW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NvcnRpbmcnKTtcclxuICB9XHJcbiAgc2V0IHNvcnRpbmcodmFsdWU6IHN0cmluZykge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NvcnRpbmcnLCB2YWx1ZSk7XHJcbiAgfVxyXG4gIGdldCBkaXJlY3Rpb24oKTogU29ydERpcmVjdGlvbiB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RpcmVjdGlvbicpIGFzIFNvcnREaXJlY3Rpb24gfHwgJ2Rlc2MnO1xyXG4gIH1cclxuICBzZXQgZGlyZWN0aW9uKHZhbHVlOiBTb3J0RGlyZWN0aW9uKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGlyZWN0aW9uJywgdmFsdWUpO1xyXG4gIH1cclxuICBzdWJtaXRBbGwoKSB7XHJcbiAgICB0aGlzLl9mb3JFYWNoKGkgPT4gdGhpcy5fbWFpbGJveC5zdWJtaXQoaS5pZCwgaS52ZXJzaW9uLCBpLmZvcm1JZCkucGlwZSh0YXAoKCkgPT4gdGhpcy5kYXRhU291cmNlLmRhdGEucmVtb3ZlKGkpKSksICdTdWJtaXRFcnInKS5cclxuICAgICAgc3Vic2NyaWJlKGlzID0+IGlzLmxlbmd0aCA+IDEgPyB0aGlzLl9zYi50b2FzdChcclxuICAgICAgICAnU3VibWl0dGVkTWFueScsIGlzLmxlbmd0aCkgOlxyXG4gICAgICAgIHRoaXMuX3NiLnRvYXN0KCdTdWJtaXR0ZWQnLCBpc1swXS5udW1iZXIpKTtcclxuICB9XHJcbiAgZGlzY2FyZEFsbCgpIHtcclxuICAgIHRoaXMuX3NiLmFzaygnRGlzY2FyZEFzaycsICdEaXNjYXJkJywge1xyXG4gICAgICBjb2xvcjogJ3dhcm4nLFxyXG4gICAgICBvazogJ0Rpc2NhcmQnXHJcbiAgICB9KS5zdWJzY3JpYmUob2sgPT4gb2sgJiZcclxuICAgICAgdGhpcy5fZm9yRWFjaChpID0+IHRoaXMuX21haWxib3guZGVsZXRlKGkuaWQpLnBpcGUodGFwKCgpID0+IHRoaXMuZGF0YVNvdXJjZS5kYXRhLnJlbW92ZShpKSkpLCAnRXJyJykuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuICB0b2dnbGVFeHBhbmRlZChpdGVtOiBIZWFkZXJNb2RlbCwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZEVsZW1lbnQgIT0gaXRlbSkge1xyXG4gICAgICB0aGlzLl9yZXRyaWV2ZShpdGVtKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIC8vcGxheUF1ZGlvKCduYXZpZ2F0aW9uX2hvdmVyLXRhcCcpO1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRFbGVtZW50ID0gaXRlbTtcclxuICAgICAgfSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZXhwYW5kZWRFbGVtZW50ID0gbnVsbDtcclxuICAgIHRoaXMuY29udGV4dE1lbnUuY2xvc2VNZW51KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0IGZ1bGwgbWVzYWdlIGJvZHkgZWl0aGVyIGZyb20gY2FjaGUgb3IgbmV0d29ya1xyXG4gICAqIEBwYXJhbSBpdGVtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcmV0cmlldmUoaXRlbTogSGVhZGVyTW9kZWwpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPGFueT4+IHtcclxuICAgIGlmICh0aGlzLl9wZW5kaW5nSXRlbXNbaXRlbS5pZF0pXHJcbiAgICAgIHJldHVybiB0aGlzLl9wZW5kaW5nSXRlbXNbaXRlbS5pZF07XHJcbiAgICBlbHNlIHtcclxuICAgICAgKGl0ZW0gYXMgSXRlbUV4dHJhKS5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5fbG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdJdGVtc1tpdGVtLmlkXSA9XHJcbiAgICAgICAgdGhpcy5fbWFpbGJveC5nZXQoaXRlbS5pZCwgaXRlbS5yZWFkKS5waXBlKGZpcnN0KCksIG1hcChtID0+IE9iamVjdC5hc3NpZ24oaXRlbSwgbSkpLFxyXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAoaXRlbSBhcyBJdGVtRXh0cmEpLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fbG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB9KSwgc2hhcmVSZXBsYXkoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NoYXJlZEFjdGlvbnMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhdGhpcy5pc0FsbERyYWZ0KCkpIHtcclxuICAgICAgdGhpcy5zaGFyZWRBY3Rpb25zID0gW107XHJcbiAgICAgIGZvcmtKb2luKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLm1hcChpID0+IHRoaXMuX3JldHJpZXZlKGkpKSkuc3Vic2NyaWJlKChtOiBSZWNpcGllbnRNb2RlbDxhbnk+W10pID0+IHtcclxuICAgICAgICBjb25zdCBhY3Rpb25zID0gbVswXS5hY3Rpb25zO1xyXG4gICAgICAgIGlmICghYWN0aW9ucylcclxuICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBtW2ldO1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhY3Rpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmFjdGlvbnMuaW5kZXhPZihhY3Rpb25zW2pdKSA9PT0gLTEpXHJcbiAgICAgICAgICAgICAgYWN0aW9ucy5zcGxpY2UoaiwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hhcmVkQWN0aW9ucyA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbHRlcihhID0+IGFjdGlvbnMuaW5kZXhPZihhLm5hbWUpID4gLTEgJiYgKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA9PT0gMSB8fCBhLm11bHRpcGxlICE9PSBmYWxzZSkpO1xyXG4gICAgICB9LCB1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnNoYXJlZEFjdGlvbnMgPSBbXTtcclxuICB9XHJcbiAgLyoqXHJcbiAqIGV4ZWN1dGUgZnVuY3Rpb24gcGVyIGl0ZW0gaW4gY29sbGVjdGlvblxyXG4gKiBAcGFyYW0gZm5cclxuICogQHBhcmFtIGVycm9yXHJcbiAqL1xyXG4gIHByaXZhdGUgX2ZvckVhY2goZm46IChpdGVtOiBIZWFkZXJNb2RlbCkgPT4gT2JzZXJ2YWJsZTxhbnk+LCBlcnJvcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxIZWFkZXJNb2RlbFtdPiB7XHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLnNsaWNlKCk7XHJcbiAgICBjb25zdCBlcnJvcnMgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBlcnJvcnMucGlwZSgpLnN1YnNjcmliZShtID0+IHRoaXMuX3NiLmVycm9yU3RyaW5nKG0pKTtcclxuICAgIGNvbnN0IHByb21pc2VzID0gaXRlbXMubWFwKG0gPT4gZm4obSkucGlwZSh0YXAoKCkgPT4ge1xyXG4gICAgfSwgKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICAgIHN3aXRjaCAoZS5zdGF0dXMpIHtcclxuICAgICAgICBjYXNlIDQwNDpcclxuICAgICAgICAgIG1lc3NhZ2UgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFcnInKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNDA2OlxyXG4gICAgICAgICAgbWVzc2FnZSA9IGUuZXJyb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDQwOTpcclxuICAgICAgICAgIG1lc3NhZ2UgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWZXJzaW9uRXJyJywgbS5udW1iZXIpO1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihtLCBlLmVycm9yKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBtZXNzYWdlID0gdGhpcy5fdHJhbnNsYXRlLmdldChlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICAgZXJyb3JzLm5leHQobWVzc2FnZSk7XHJcbiAgICB9KSwgZmluYWxpemUoKCkgPT4gKG0gYXMgYW55KS53b3JraW5nID0gZmFsc2UpKSk7XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ocHJvbWlzZXMpLnBpcGUodGFwKCgpID0+IHtcclxuICAgICAgZXJyb3JzLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSAnJztcclxuICAgIH0pLCBtYXAoKCkgPT4gaXRlbXMpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWRkKG06IFJlY2lwaWVudE1vZGVsPGFueT4pIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhLnNwbGljZSgwLCAwLCBtKTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbW92ZShpdGVtOiBIZWFkZXJNb2RlbCkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3QoaXRlbSk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5yZW1vdmUoaXRlbSk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gJyc7XHJcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbHVtbnMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgY29sdW1ucyA9IFsnc2VsZWN0J107XHJcbiAgICBpZiAodGhpcy5mb2xkZXIgJiYgdGhpcy5mb2xkZXIuY29sdW1ucykge1xyXG4gICAgICBjb25zdCBjdXN0b21Db2x1bW5zID0gW107XHJcbiAgICAgIHRoaXMuZm9sZGVyLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBpZiAoSEVBREVSX0NPTFVNTl9OQU1FUy5pbmRleE9mKGMubmFtZSkgPiAtMSlcclxuICAgICAgICAgIGNvbHVtbnMucHVzaChjLm5hbWUpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29sdW1ucy5wdXNoKGBtb2RlbC4ke2MubmFtZX1gKTtcclxuICAgICAgICAgIGN1c3RvbUNvbHVtbnMucHVzaChjKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmN1c3RvbUNvbHVtbnMgPSBjdXN0b21Db2x1bW5zO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbHVtbnMucHVzaCgnbnVtYmVyJyk7XHJcbiAgICAgIGlmICghdGhpcy5pc01vYmlsZSkge1xyXG4gICAgICAgIGNvbHVtbnMucHVzaCgnc3ViamVjdCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbHVtbnMucHVzaCgndmFsdWUnKTtcclxuICAgIH1cclxuICAgIGNvbHVtbnMucHVzaCgnb3B0aW9ucycpO1xyXG4gICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgfVxyXG4gIHNlbmRBbGwoYWN0aW9uOiBzdHJpbmcsIGFyZ3M6IGFueSkge1xyXG4gICAgY29uc3QgcGFyYW1zID0gcXVlcnlQYXJhbXMoYXJncyk7XHJcbiAgICB0aGlzLl9mb3JFYWNoKGkgPT4gdGhpcy5fbWFpbGJveC5zZW5kKGkuaWQsIGkudmVyc2lvbiwgaS5mb3JtSWQsIG51bGwsIGFjdGlvbiwgcGFyYW1zKS5waXBlKHRhcCgoKSA9PiAoaS5mb2xkZXJJZCAhPT0gdGhpcy5mb2xkZXJJZCkgJiYgdGhpcy5kYXRhU291cmNlLmRhdGEucmVtb3ZlKGkpKSksICdTZW5kRXJyJykuXHJcbiAgICAgIHN1YnNjcmliZShpcyA9PiBpcy5sZW5ndGggPiAxID8gdGhpcy5fc2IudG9hc3QoJ1NlbnRNYW55JywgaXMubGVuZ3RoLnRvU3RyaW5nKCksIHRoaXMuX2FjdGlvbkFkamVjdGl2ZShhY3Rpb24sIHRydWUpKSA6XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QoJ1NlbnQnLCBpc1swXS5udW1iZXIsIHRoaXMuX2FjdGlvbkFkamVjdGl2ZShhY3Rpb24pKVxyXG4gICAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF9hY3Rpb25BZGplY3RpdmUobmFtZTogc3RyaW5nLCBwbHVyYWw/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgcmV0dXJuICgocGx1cmFsID8gKGFjdGlvbi5hZGplY3RpdmVQbHVyYWwgfHwgYWN0aW9uLmFkamVjdGl2ZSkgOiBhY3Rpb24uYWRqZWN0aXZlKSB8fCBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxiaXpkb2Mtbm9uZSAqbmdJZj1cImRhdGFTb3VyY2U/LmRhdGEubGVuZ3RoID09PSAwXCIgdGl0bGU9XCJOb01lc3NhZ2VzXCIgW3N1YnRpdGxlXT1cIiFpc01vYmlsZSAmJiBmb2xkZXJJZCA9PT0gRFJBRlQgPyAnQWx0TicgOiBudWxsXCIgaWNvbj1cIm1haWxfb3V0bGluZVwiPjwvYml6ZG9jLW5vbmU+XHJcbjxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJxdWVyeVwiIFtzdHlsZS52aXNpYmlsaXR5XT1cImxvYWRpbmcgPyAndmlzaWJsZSc6J2hpZGRlbidcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjxtYXQtdGFibGUgY2RrRHJvcExpc3QgY2xhc3M9XCJkYXRhLXRhYmxlXCJcclxuICAgICAgICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCJpc01vYmlsZVwiXHJcbiAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJkYXRhU291cmNlPy5kYXRhXCJcclxuICAgICAgICAgICBjZGtEcm9wTGlzdENvbm5lY3RlZFRvPVwiZm9sZGVyc1wiXHJcbiAgICAgICAgICAgY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRcclxuICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgbWF0U29ydCBtdWx0aVRlbXBsYXRlRGF0YVJvd3MgKG1hdFNvcnRDaGFuZ2UpPVwic29ydERhdGEoKVwiXHJcbiAgICAgICAgICAgaWQ9XCJicm93c2UtdGFibGVcIiBbQGxpc3RdPVwiZGF0YVNvdXJjZVwiIFtzdHlsZS5kaXNwbGF5XT1cImRhdGFTb3VyY2U/LmRhdGEubGVuZ3RoID8nJzonbm9uZSdcIj5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxyXG4gICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgPGRpdiBjbGFzcz1cIlwiPjwvZGl2PlxyXG4gICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCIgW2FyaWEtbGFiZWxdPVwiJ0NoZWNrJ3x0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiPlxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgIDwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cclxuICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2FyaWEtbGFiZWxdPVwiJ0NoZWNrJ3x0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShpdGVtKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKGl0ZW0pXCI+XHJcbiAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICA8IS0tIGRyYWcgLS0+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNka0RyYWdIYW5kbGVcclxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cImRyYWdEaXNhYmxlZCA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAobW91c2V1cCk9XCJkcmFnRGlzYWJsZWQgPSB0cnVlXCJcclxuICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJkcmFnRGlzYWJsZWQgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgKHRvdWNoZW5kKT1cImRyYWdEaXNhYmxlZCA9IHRydWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ1wiIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCIgZnhIaWRlLnhzPlxyXG4gICAgICAgIDxtYXQtaWNvbj5kcmFnX2luZGljYXRvcjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoaXRlbSwgJGV2ZW50KVwiIFttYXRUb29sdGlwXT1cIidEZXRhaWxzJyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0RldGFpbHMnIHwgdHJhbnNsYXRlXCIgY2xhc3M9XCJ0b29sXCI+PG1hdC1pY29uPnt7aXRlbSA9PSBleHBhbmRlZEVsZW1lbnQgPyAndW5mb2xkX2xlc3MnIDogJ3VuZm9sZF9tb3JlJ319PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvbWF0LWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPCEtLSBOdW1iZXIgY29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibnVtYmVyXCI+XHJcbiAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj57eydOdW1iZXInIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPiB7e2l0ZW0ubnVtYmVyfX0gPC9tYXQtY2VsbD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBTdWJqZWN0IGNvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1YmplY3RcIj5cclxuICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1N1YmplY3QnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPiB7e2l0ZW0uc3ViamVjdH19IDwvbWF0LWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwib3duZXJcIj5cclxuICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J093bmVyJyB8IHRyYW5zbGF0ZX19PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj5cclxuICAgICAgPGJpemRvYy1pZGVudGl0eS1uYW1lICpuZ0lmPVwiaXRlbS5vd25lcklkXCIgW2lkZW50aXR5XT1cIml0ZW0ub3duZXJJZFwiIFtieV09XCJpdGVtLm93bmVyQnlJZFwiPjwvYml6ZG9jLWlkZW50aXR5LW5hbWU+XHJcbiAgICA8L21hdC1jZWxsPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VuZGVyXCI+XHJcbiAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj57eydTZW5kZXInIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPlxyXG4gICAgICA8Yml6ZG9jLWlkZW50aXR5LW5hbWUgKm5nSWY9XCJpdGVtLnNlbmRlcklkXCIgW2lkZW50aXR5XT1cIml0ZW0uc2VuZGVySWRcIiBbYnldPVwiaXRlbS5ieUlkXCI+PC9iaXpkb2MtaWRlbnRpdHktbmFtZT5cclxuICAgIDwvbWF0LWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicmVjZWl2ZWRcIj5cclxuICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1JlY2VpdmVkJyB8IHRyYW5zbGF0ZX19PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj4ge3tpdGVtLnJlY2VpdmVkIHwgYW1DYWxlbmRhcn19IDwvbWF0LWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicmVwbGllZFwiPlxyXG4gICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3snUmVwbGllZCcgfCB0cmFuc2xhdGV9fTwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5yZXBsaWVkIHwgYW1DYWxlbmRhcn19IDwvbWF0LWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpc3N1ZWRcIj5cclxuICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J0lzc3VlZCcgfCB0cmFuc2xhdGV9fTwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5pc3N1ZWQgfCBhbUNhbGVuZGFyfX0gPC9tYXQtY2VsbD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0ZUlkXCI+XHJcbiAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj57eydTdGF0dXMnIHwgdHJhbnNsYXRlIH19PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj5cclxuICAgICAgPGJpemRvYy1zdGF0dXMgW3N0YXRlSWRdPVwiaXRlbS5zdGF0ZUlkXCI+PC9iaXpkb2Mtc3RhdHVzPlxyXG4gICAgPC9tYXQtY2VsbD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUNvbHVtbnNcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgY3VzdG9tQ29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwiYy5uYW1lXCI+XHJcbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPiB7e2MudGl0bGV9fSA8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+XHJcbiAgICAgICAgPHNwYW4gW25nU3dpdGNoXT1cImMudHlwZVwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidEYXRlJ1wiPlxyXG4gICAgICAgICAgICB7e2l0ZW0ubW9kZWxbYy5uYW1lXSB8IGFtQ2FsZW5kYXJ9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidEZWNpbWFsJ1wiPlxyXG4gICAgICAgICAgICB7e2l0ZW0ubW9kZWxbYy5uYW1lXSB8IG51bWJlciB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidCb29sZWFuJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtjaGVja2VkXT1cIml0ZW0ubW9kZWxbYy5uYW1lXVwiIGRpc2FibGVkPVwidHJ1ZVwiPjwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAge3tpdGVtLm1vZGVsW2MubmFtZV19fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9tYXQtY2VsbD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIFZhbHVlIGNvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInZhbHVlXCI+XHJcbiAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj57eydBbW91bnQnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPiB7e2l0ZW0udmFsdWUgfCBjdXJyZW5jeSA6IGl0ZW0uY3VycmVuY3lDb2RlIDogJ3N5bWJvbCcgOiBjdXJyZW5jeUZvcm1hdH19IDwvbWF0LWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gb3B0aW9ucyBjb2x1bW4gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJvcHRpb25zXCI+XHJcbiAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImZsYWcoaXRlbSwgJGV2ZW50KVwiIFttYXRUb29sdGlwXT1cIidGbGFnZ2VkJ3wgdHJhbnNsYXRlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInVG9nZ2xlRmxhZ2dlZCcgfCB0cmFuc2xhdGVcIiBjbGFzcz1cInRvb2xcIj48bWF0LWljb24gW2NsYXNzLmRvY3VtZW50LWZsYWddPVwiaXRlbS5mbGFnXCI+e3tpdGVtLmZsYWcgPyAnc3RhcicgOiAnc3Rhcl9ib3JkZXInfX08L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidmlldyhpdGVtLCAkZXZlbnQpXCIgW21hdFRvb2x0aXBdPVwiJ1ZpZXcnIHwgdHJhbnNsYXRlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInVmlldycgfCB0cmFuc2xhdGVcIiBjbGFzcz1cInRvb2xcIj48bWF0LWljb24+ZGF0YV91c2FnZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8L21hdC1jZWxsPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJleHBhbmRlZERldGFpbFwiPlxyXG4gICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBbYXR0ci5jb2xzcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCIgW0B1cGRhdGVkXT1cIml0ZW0gPT0gdXBkYXRlZEVsZW1lbnRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5yZWFkLXJvd109XCJpdGVtLnJlYWRcIj5cclxuICAgICAgPGRpdiBbQGRldGFpbEV4cGFuZF09XCJpdGVtID09IGV4cGFuZGVkRWxlbWVudCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cclxuICAgICAgICA8Yml6ZG9jLWV4cGFuZGVkLWl0ZW0gW2l0ZW1dPVwiaXRlbVwiICpuZ0lmPVwiaXRlbSA9PSBleHBhbmRlZEVsZW1lbnRcIj48L2JpemRvYy1leHBhbmRlZC1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L21hdC1oZWFkZXItcm93PlxyXG4gIDxtYXQtcm93IEBpdGVtIFtAdXBkYXRlZF09XCJpdGVtID09IHVwZGF0ZWRFbGVtZW50XCJcclxuICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IGl0ZW07IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgY2xhc3M9XCJlbGVtZW50LXJvd1wiXHJcbiAgICAgICAgICAgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwiaXRlbVwiXHJcbiAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJkcmFnRGlzYWJsZWRcIlxyXG4gICAgICAgICAgIChjZGtEcmFnUmVsZWFzZWQpPVwiZHJhZ0Rpc2FibGVkID0gdHJ1ZVwiXHJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZGVkLXJvdyc6IHNlbGVjdGVkRWxlbWVudCA9PT0gaXRlbSxcclxuICAgICAgJ2V4cGFuZGVkLXJvdyc6IGV4cGFuZGVkRWxlbWVudCA9PT0gaXRlbSxcclxuICAgICAgICAgICAnb2RkLXJvdyc6IGRhdGFJbmRleCAlIDIsXHJcbiAgICAgICdyZWFkLXJvdyc6IGl0ZW0ucmVhZH1cIiBtYXRSaXBwbGVcclxuICAgICAgICAgICAoY2xpY2spPVwib3BlbihpdGVtLCAkZXZlbnQpXCIgKGNvbnRleHRtZW51KT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LCBpdGVtKVwiPlxyXG4gICAgPGRpdiAqY2RrRHJhZ1ByZXZpZXc+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCI+PG1hdC1pY29uPmRyYWdfaW5kaWNhdG9yPC9tYXQtaWNvbj48L2J1dHRvbj4gPHNwYW4+I3t7aXRlbS5udW1iZXJ9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqY2RrRHJhZ1BsYWNlaG9sZGVyPlxyXG4gICAgICA8IS0tIG5vbmUgLS0+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1yb3c+XHJcbiAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCBpdGVtOyA7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7IGNvbHVtbnM6IFsnZXhwYW5kZWREZXRhaWwnXVwiXHJcbiAgICAgICAgICAgY2xhc3M9XCJkZXRhaWwtcm93XCIgbWF0UmlwcGxlXHJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWRlZC1yb3cnOiBzZWxlY3RlZEVsZW1lbnQgPT09IGl0ZW0sXHJcbiAgICAgICAgICAgJ29kZC1yb3cnOiBkYXRhSW5kZXggJSAyXHJcbiAgICAgICAgICAgfVwiPjwvbWF0LXJvdz5cclxuPC9tYXQtdGFibGU+XHJcbjxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3IgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCIgW3BhZ2VTaXplXT1cIlBBR0VfU0laRVwiIFtzdHlsZS5kaXNwbGF5XT1cIiFpc01vYmlsZSAmJiBkYXRhU291cmNlPy5kYXRhLmxlbmd0aD5QQUdFX1NJWkUgPyAnJzonbm9uZSdcIj48L21hdC1wYWdpbmF0b3I+XHJcbjwhLS1zdHlsZT1cImRpc3BsYXk6bm9uZVwiLS0+XHJcbjxkaXYgc3R5bGU9XCJ2aXNpYmlsaXR5OiBoaWRkZW47IHBvc2l0aW9uOiBmaXhlZFwiXHJcbiAgICAgW3N0eWxlLmxlZnRdPVwiY29udGV4dE1lbnVQb3NpdGlvbi54XCJcclxuICAgICBbc3R5bGUudG9wXT1cImNvbnRleHRNZW51UG9zaXRpb24ueVwiXHJcbiAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbnRleHRNZW51XCI+XHJcbjwvZGl2PlxyXG48bWF0LW1lbnUgI2NvbnRleHRNZW51PVwibWF0TWVudVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib3BlbihpdGVtLCAkZXZlbnQpXCI+e3snT3Blbid8dHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ0b2dnbGVSZWFkKGl0ZW0pXCI+e3soaXRlbS5yZWFkID8nTWFya0FzVW5yZWFkJzonTWFya0FzUmVhZCcpfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9tYXQtbWVudT5cclxuIl19
|