vcomply-workflow-engine 3.5.3 → 3.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (645) hide show
  1. package/esm2022/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +897 -0
  2. package/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +204 -0
  3. package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +1569 -0
  4. package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +774 -0
  5. package/esm2022/lib/configurations.mjs +6 -0
  6. package/esm2022/lib/confirmation-alert/confirmation-alert.component.mjs +28 -0
  7. package/esm2022/lib/constants/link-responsibility.constants.mjs +9 -0
  8. package/esm2022/lib/constants/time.constants.mjs +3 -0
  9. package/esm2022/lib/create-documents/create-documents.component.mjs +145 -0
  10. package/esm2022/lib/formgroup/cs-checkbox/cs-checkbox.component.mjs +36 -0
  11. package/esm2022/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.mjs +35 -0
  12. package/esm2022/lib/formgroup/cs-radio/cs-radio.component.mjs +34 -0
  13. package/esm2022/lib/formgroup/cs-radio-group/cs-radio-group.component.mjs +14 -0
  14. package/esm2022/lib/formgroup/cs-select/cs-select.component.mjs +95 -0
  15. package/esm2022/lib/formgroup/cs-switch/cs-switch.component.mjs +31 -0
  16. package/esm2022/lib/formgroup/formgroup.module.mjs +56 -0
  17. package/esm2022/lib/formgroup/pipes/pascal.pipe.mjs +19 -0
  18. package/esm2022/lib/formgroup/select/cs-option/cs-option.component.mjs +42 -0
  19. package/esm2022/lib/formgroup/select/cs-select/cs-select.component.mjs +106 -0
  20. package/esm2022/lib/formgroup/select/select.module.mjs +21 -0
  21. package/esm2022/lib/formgroup/select/select.service.mjs +48 -0
  22. package/esm2022/lib/interfaces/categoryList.mjs +2 -0
  23. package/esm2022/lib/interfaces/confirmation-alert.mjs +2 -0
  24. package/esm2022/lib/interfaces/issue-data.mjs +2 -0
  25. package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +1212 -0
  26. package/esm2022/lib/more-option/more-option.component.mjs +790 -0
  27. package/esm2022/lib/pipes/data-type.pipe.mjs +16 -0
  28. package/esm2022/lib/pipes/dom-sanitizer.pipe.mjs +24 -0
  29. package/esm2022/lib/pipes/filter.pipe.mjs +24 -0
  30. package/esm2022/lib/pipes/is-read-more.pipe.mjs +21 -0
  31. package/esm2022/lib/pipes/list-mapper.pipe.mjs +21 -0
  32. package/esm2022/lib/pipes/pipes.module.mjs +67 -0
  33. package/esm2022/lib/pipes/search.pipe.mjs +37 -0
  34. package/esm2022/lib/pipes/space-breaker.pipe.mjs +21 -0
  35. package/esm2022/lib/pipes/uncategorized-filter.pipe.mjs +21 -0
  36. package/esm2022/lib/pipes/user-filter.pipe.mjs +30 -0
  37. package/esm2022/lib/services/bulk-upload.service.mjs +44 -0
  38. package/esm2022/lib/services/common.service.mjs +41 -0
  39. package/esm2022/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +265 -0
  40. package/esm2022/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +73 -0
  41. package/esm2022/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +83 -0
  42. package/esm2022/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.mjs +347 -0
  43. package/esm2022/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.mjs +75 -0
  44. package/esm2022/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.mjs +33 -0
  45. package/esm2022/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.mjs +124 -0
  46. package/esm2022/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.mjs +154 -0
  47. package/esm2022/lib/sharedComponents/assessment-editor/components/build/build.module.mjs +111 -0
  48. package/esm2022/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.mjs +37 -0
  49. package/esm2022/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.mjs +74 -0
  50. package/esm2022/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.mjs +18 -0
  51. package/esm2022/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.mjs +37 -0
  52. package/esm2022/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.mjs +15 -0
  53. package/esm2022/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.mjs +14 -0
  54. package/esm2022/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.mjs +14 -0
  55. package/esm2022/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.mjs +37 -0
  56. package/esm2022/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.mjs +14 -0
  57. package/esm2022/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.mjs +14 -0
  58. package/esm2022/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.mjs +14 -0
  59. package/esm2022/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.mjs +28 -0
  60. package/esm2022/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.mjs +14 -0
  61. package/esm2022/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.mjs +56 -0
  62. package/esm2022/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.mjs +14 -0
  63. package/esm2022/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.mjs +179 -0
  64. package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/error.mjs +2 -0
  65. package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/question.mjs +2 -0
  66. package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/validateStructure.mjs +2 -0
  67. package/esm2022/lib/sharedComponents/assessment-editor/components/logic/logic.component.mjs +104 -0
  68. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.mjs +26 -0
  69. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.mjs +14 -0
  70. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.mjs +56 -0
  71. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.mjs +33 -0
  72. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.mjs +17 -0
  73. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.mjs +26 -0
  74. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.mjs +16 -0
  75. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.mjs +101 -0
  76. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.mjs +16 -0
  77. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.mjs +24 -0
  78. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.mjs +14 -0
  79. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.mjs +16 -0
  80. package/esm2022/lib/sharedComponents/assessment-editor/components/move/move.component.mjs +103 -0
  81. package/esm2022/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.mjs +23 -0
  82. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.mjs +22 -0
  83. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.mjs +27 -0
  84. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.mjs +21 -0
  85. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.mjs +17 -0
  86. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.mjs +16 -0
  87. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.mjs +21 -0
  88. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.mjs +16 -0
  89. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.mjs +28 -0
  90. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.mjs +14 -0
  91. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.mjs +49 -0
  92. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.mjs +30 -0
  93. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.mjs +21 -0
  94. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.mjs +17 -0
  95. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.mjs +31 -0
  96. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.mjs +28 -0
  97. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.mjs +28 -0
  98. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.mjs +16 -0
  99. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.mjs +16 -0
  100. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.mjs +16 -0
  101. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.mjs +14 -0
  102. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.mjs +16 -0
  103. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.mjs +78 -0
  104. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview.module.mjs +152 -0
  105. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.mjs +14 -0
  106. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.mjs +14 -0
  107. package/esm2022/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.mjs +19 -0
  108. package/esm2022/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.mjs +252 -0
  109. package/esm2022/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.mjs +35 -0
  110. package/esm2022/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.mjs +61 -0
  111. package/esm2022/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.mjs +163 -0
  112. package/esm2022/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.mjs +118 -0
  113. package/esm2022/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.mjs +23 -0
  114. package/esm2022/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.mjs +97 -0
  115. package/esm2022/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +493 -0
  116. package/esm2022/lib/sharedComponents/assessment-editor/create-assessment.module.mjs +154 -0
  117. package/esm2022/lib/sharedComponents/assessment-editor/services/editor.service.mjs +635 -0
  118. package/esm2022/lib/sharedComponents/assessment-editor/services/result-criteria.service.mjs +48 -0
  119. package/esm2022/lib/sharedComponents/assessment-editor/services/validator.service.mjs +546 -0
  120. package/esm2022/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.mjs +15 -0
  121. package/esm2022/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.mjs +15 -0
  122. package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +207 -0
  123. package/esm2022/lib/sharedComponents/assessment-list/service/assessment.interface.mjs +2 -0
  124. package/esm2022/lib/sharedComponents/assessment-list/service/assessment.service.mjs +31 -0
  125. package/esm2022/lib/sharedComponents/assessment-preview/assessment-preview.module.mjs +113 -0
  126. package/esm2022/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.mjs +33 -0
  127. package/esm2022/lib/sharedComponents/assessment-preview/date-time/date-time.component.mjs +53 -0
  128. package/esm2022/lib/sharedComponents/assessment-preview/description-preview/description-preview.component.mjs +24 -0
  129. package/esm2022/lib/sharedComponents/assessment-preview/device/device.component.mjs +21 -0
  130. package/esm2022/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.mjs +22 -0
  131. package/esm2022/lib/sharedComponents/assessment-preview/page-header/page-header.component.mjs +21 -0
  132. package/esm2022/lib/sharedComponents/assessment-preview/pipes/get-section-order.pipe.mjs +24 -0
  133. package/esm2022/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +62 -0
  134. package/esm2022/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.mjs +22 -0
  135. package/esm2022/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.mjs +22 -0
  136. package/esm2022/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.mjs +33 -0
  137. package/esm2022/lib/sharedComponents/assessment-preview/section-details/section-details.component.mjs +20 -0
  138. package/esm2022/lib/sharedComponents/assessment-preview/select-question/select-question.component.mjs +35 -0
  139. package/esm2022/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.mjs +21 -0
  140. package/esm2022/lib/sharedComponents/assessment-preview/welcome/welcome.component.mjs +17 -0
  141. package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +61 -0
  142. package/esm2022/lib/sharedComponents/audit-category-list/audit-category.model.mjs +2 -0
  143. package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +72 -0
  144. package/esm2022/lib/sharedComponents/bulk-view/bulk-view.component.mjs +75 -0
  145. package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +84 -0
  146. package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +166 -0
  147. package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +92 -0
  148. package/esm2022/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +315 -0
  149. package/esm2022/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.mjs +25 -0
  150. package/esm2022/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +149 -0
  151. package/esm2022/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.mjs +48 -0
  152. package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +77 -0
  153. package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.mjs +14 -0
  154. package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +197 -0
  155. package/esm2022/lib/sharedComponents/directive/autofocus.directive.mjs +22 -0
  156. package/esm2022/lib/sharedComponents/directive/conditional-focus.directive.mjs +35 -0
  157. package/esm2022/lib/sharedComponents/directive/drag-drop.directive.mjs +52 -0
  158. package/esm2022/lib/sharedComponents/directive/input-trim.directive.mjs +21 -0
  159. package/esm2022/lib/sharedComponents/directive/scroll-in-view.directive.mjs +35 -0
  160. package/esm2022/lib/sharedComponents/document-section/document-section.component.mjs +184 -0
  161. package/esm2022/lib/sharedComponents/floating-bar/floating-bar.component.mjs +122 -0
  162. package/esm2022/lib/sharedComponents/floating-bar/floating-bar.module.mjs +20 -0
  163. package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +308 -0
  164. package/esm2022/lib/sharedComponents/framework-list/framework-integration-interfaces.mjs +2 -0
  165. package/esm2022/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.mjs +38 -0
  166. package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +429 -0
  167. package/esm2022/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.mjs +43 -0
  168. package/esm2022/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.mjs +15 -0
  169. package/esm2022/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +95 -0
  170. package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +297 -0
  171. package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +218 -0
  172. package/esm2022/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.mjs +36 -0
  173. package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +303 -0
  174. package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +152 -0
  175. package/esm2022/lib/sharedComponents/frequency/frequency-due-date/due-date.contant.mjs +21 -0
  176. package/esm2022/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +83 -0
  177. package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +199 -0
  178. package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/lifecycl.constant.mjs +12 -0
  179. package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +223 -0
  180. package/esm2022/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +170 -0
  181. package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +189 -0
  182. package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +75 -0
  183. package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +214 -0
  184. package/esm2022/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +36 -0
  185. package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +253 -0
  186. package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +213 -0
  187. package/esm2022/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +133 -0
  188. package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +200 -0
  189. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +573 -0
  190. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +300 -0
  191. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +216 -0
  192. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.mjs +29 -0
  193. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.mjs +296 -0
  194. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.mjs +110 -0
  195. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +227 -0
  196. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +213 -0
  197. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +212 -0
  198. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +33 -0
  199. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +128 -0
  200. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.mjs +197 -0
  201. package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +259 -0
  202. package/esm2022/lib/sharedComponents/link-program/link-program/link-program.component.mjs +472 -0
  203. package/esm2022/lib/sharedComponents/link-program/link-program/program-list-model.mjs +2 -0
  204. package/esm2022/lib/sharedComponents/link-program/program-integration-interfaces.mjs +2 -0
  205. package/esm2022/lib/sharedComponents/link-program/restapi.service.mjs +149 -0
  206. package/esm2022/lib/sharedComponents/link-program/tooltip-validation.pipe.mjs +28 -0
  207. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +221 -0
  208. package/esm2022/lib/sharedComponents/list-loader/list-loader.component.mjs +15 -0
  209. package/esm2022/lib/sharedComponents/list-loader/list-loader.module.mjs +18 -0
  210. package/esm2022/lib/sharedComponents/no-data/no-data.component.mjs +36 -0
  211. package/esm2022/lib/sharedComponents/no-data/no-data.module.mjs +18 -0
  212. package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +176 -0
  213. package/esm2022/lib/sharedComponents/pipes/array-filter.pipe.mjs +18 -0
  214. package/esm2022/lib/sharedComponents/pipes/filterPipe.mjs +30 -0
  215. package/esm2022/lib/sharedComponents/pipes/rcTreeToolTip.pipe.mjs +26 -0
  216. package/esm2022/lib/sharedComponents/pipes/short-merge.pipe.mjs +24 -0
  217. package/esm2022/lib/sharedComponents/pipes/spaceTrim.pipe.mjs +18 -0
  218. package/esm2022/lib/sharedComponents/pipes/within-data.pipe.mjs +21 -0
  219. package/esm2022/lib/sharedComponents/policy-access/policy-access.component.mjs +88 -0
  220. package/esm2022/lib/sharedComponents/program-listing/program-list-model.mjs +2 -0
  221. package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +739 -0
  222. package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +82 -0
  223. package/esm2022/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.mjs +14 -0
  224. package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +128 -0
  225. package/esm2022/lib/sharedComponents/responsibility-centers-list/rc-list.module.mjs +40 -0
  226. package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +125 -0
  227. package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +81 -0
  228. package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +44 -0
  229. package/esm2022/lib/sharedComponents/risk-classification/risk-classification.component.mjs +102 -0
  230. package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +30 -0
  231. package/esm2022/lib/sharedComponents/select-approvers/select-approvers.component.mjs +78 -0
  232. package/esm2022/lib/sharedComponents/table-card-loader/table-card-loader.component.mjs +15 -0
  233. package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +83 -0
  234. package/esm2022/lib/sharedComponents/v-loader/loader/loader.component.mjs +21 -0
  235. package/esm2022/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.mjs +21 -0
  236. package/esm2022/lib/sharedComponents/v-loader/v-loader.module.mjs +19 -0
  237. package/esm2022/lib/ui-kit/action-dialog/action-dialog.module.mjs +21 -0
  238. package/esm2022/lib/ui-kit/action-dialog/active/active.component.mjs +32 -0
  239. package/esm2022/lib/ui-kit/action-dialog/deactivate/deactivate.component.mjs +33 -0
  240. package/esm2022/lib/ui-kit/action-dialog/delete/delete.component.mjs +26 -0
  241. package/esm2022/lib/ui-kit/action-dialog/duplicate/duplicate.component.mjs +28 -0
  242. package/esm2022/lib/ui-kit/click-outside/click-outside.directive.mjs +29 -0
  243. package/esm2022/lib/ui-kit/click-outside/click-outside.module.mjs +22 -0
  244. package/esm2022/lib/ui-kit/dialog/dialog-config.mjs +3 -0
  245. package/esm2022/lib/ui-kit/dialog/dialog-injector.mjs +14 -0
  246. package/esm2022/lib/ui-kit/dialog/dialog-ref.mjs +11 -0
  247. package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +88 -0
  248. package/esm2022/lib/ui-kit/dialog/dialog.module.mjs +20 -0
  249. package/esm2022/lib/ui-kit/dialog/dialog.service.mjs +58 -0
  250. package/esm2022/lib/ui-kit/dialog/insertion.directive.mjs +16 -0
  251. package/esm2022/lib/ui-kit/directive/directive.module.mjs +24 -0
  252. package/esm2022/lib/ui-kit/directive/stop-propagation.directive.mjs +20 -0
  253. package/esm2022/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.mjs +15 -0
  254. package/esm2022/lib/ui-kit/editor-loader/editor-loader.module.mjs +22 -0
  255. package/esm2022/lib/ui-kit/format-html.pipe.mjs +20 -0
  256. package/esm2022/lib/ui-kit/formgroup/click-outside.directive.mjs +29 -0
  257. package/esm2022/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.mjs +31 -0
  258. package/esm2022/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.mjs +35 -0
  259. package/esm2022/lib/ui-kit/formgroup/cs-radio/cs-radio.component.mjs +30 -0
  260. package/esm2022/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.mjs +14 -0
  261. package/esm2022/lib/ui-kit/formgroup/cs-select/cs-select.component.mjs +100 -0
  262. package/esm2022/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +32 -0
  263. package/esm2022/lib/ui-kit/formgroup/formgroup.module.mjs +60 -0
  264. package/esm2022/lib/ui-kit/formgroup/pipes/pascal.pipe.mjs +19 -0
  265. package/esm2022/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.mjs +24 -0
  266. package/esm2022/lib/ui-kit/line-loader/line-loader.component.mjs +15 -0
  267. package/esm2022/lib/ui-kit/line-loader/line-loader.module.mjs +18 -0
  268. package/esm2022/lib/ui-kit/no-data/no-data.component.mjs +45 -0
  269. package/esm2022/lib/ui-kit/no-data/no-data.module.mjs +18 -0
  270. package/esm2022/lib/ui-kit/pagination/pagination/pagination.component.mjs +116 -0
  271. package/esm2022/lib/ui-kit/pagination/pagination.module.mjs +28 -0
  272. package/esm2022/lib/ui-kit/popover/popover-event.directive.mjs +28 -0
  273. package/esm2022/lib/ui-kit/popover/popover-longpress.directive.mjs +44 -0
  274. package/esm2022/lib/ui-kit/popover/popover.component.mjs +138 -0
  275. package/esm2022/lib/ui-kit/popover/popover.directive.mjs +97 -0
  276. package/esm2022/lib/ui-kit/popover/popover.module.mjs +23 -0
  277. package/esm2022/lib/ui-kit/popover/popover.service.mjs +15 -0
  278. package/esm2022/lib/ui-kit/popover-hover/popover-hover.component.mjs +109 -0
  279. package/esm2022/lib/ui-kit/popover-hover/popover-hover.directive.mjs +34 -0
  280. package/esm2022/lib/ui-kit/popover-hover/popover-hover.module.mjs +31 -0
  281. package/esm2022/lib/ui-kit/popover-hover/popover-hover.service.mjs +14 -0
  282. package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.component.mjs +43 -0
  283. package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.module.mjs +18 -0
  284. package/esm2022/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.mjs +43 -0
  285. package/esm2022/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.mjs +18 -0
  286. package/esm2022/lib/ui-kit/snack-bar/snack-bar.component.mjs +51 -0
  287. package/esm2022/lib/ui-kit/snack-bar/snack-bar.module.mjs +18 -0
  288. package/esm2022/lib/ui-kit/snack-bar/snack-bar.service.mjs +32 -0
  289. package/esm2022/lib/ui-kit/time-picker/constants/constant.mjs +5 -0
  290. package/esm2022/lib/ui-kit/time-picker/time-picker/time-picker.component.mjs +220 -0
  291. package/esm2022/lib/ui-kit/time-picker/time-picker.module.mjs +24 -0
  292. package/esm2022/lib/ui-kit/tooltip/tooltip.directive.mjs +156 -0
  293. package/esm2022/lib/ui-kit/tooltip/tooltip.module.mjs +18 -0
  294. package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +831 -0
  295. package/esm2022/lib/workflow/grc-object/grc-object.module.mjs +64 -0
  296. package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +95 -0
  297. package/esm2022/lib/workflow/shared/components/attributes/attributes-dropdown/attributes-dropdown.component.mjs +110 -0
  298. package/esm2022/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.mjs +118 -0
  299. package/esm2022/lib/workflow/shared/components/attributes/attributes.component.mjs +100 -0
  300. package/esm2022/lib/workflow/shared/components/attributes/date-picker/date-picker.component.mjs +116 -0
  301. package/esm2022/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +216 -0
  302. package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +119 -0
  303. package/esm2022/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +198 -0
  304. package/esm2022/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +202 -0
  305. package/esm2022/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.mjs +191 -0
  306. package/esm2022/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.mjs +86 -0
  307. package/esm2022/lib/workflow/shared/components/list-popup/list-popup.component.mjs +209 -0
  308. package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +411 -0
  309. package/esm2022/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +241 -0
  310. package/esm2022/lib/workflow/shared/components/table-card/table-card.component.mjs +32 -0
  311. package/esm2022/lib/workflow/shared/components/text-field/text-field.component.mjs +143 -0
  312. package/esm2022/lib/workflow/shared/components/text-field-icon/text-field-icon.component.mjs +56 -0
  313. package/esm2022/lib/workflow/shared/constants/cdn-link.constant.mjs +11 -0
  314. package/esm2022/lib/workflow/shared/constants/field-text.constant.mjs +17 -0
  315. package/esm2022/lib/workflow/shared/constants/grcObject.constant.mjs +88 -0
  316. package/esm2022/lib/workflow/shared/constants/link-responsibility.constant.mjs +19 -0
  317. package/esm2022/lib/workflow/shared/constants/message.contstant.mjs +5 -0
  318. package/esm2022/lib/workflow/shared/constants/pagination-limits.constant.mjs +6 -0
  319. package/esm2022/lib/workflow/shared/constants/svg-link.constant.mjs +4 -0
  320. package/esm2022/lib/workflow/shared/constants/validation-message.constant.mjs +8 -0
  321. package/esm2022/lib/workflow/shared/interfaces/add-grc.mjs +2 -0
  322. package/esm2022/lib/workflow/shared/services/grc.service.mjs +310 -0
  323. package/esm2022/lib/workflow/shared/workflow-pipes/get-selected-value.pipe.mjs +30 -0
  324. package/esm2022/lib/workflow/shared/workflow-pipes/is-attributes-valid.pipe.mjs +48 -0
  325. package/esm2022/lib/workflow/shared/workflow-pipes/unique-responsibilities.pipe.mjs +24 -0
  326. package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +32 -0
  327. package/esm2022/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +668 -0
  328. package/esm2022/lib/workflow-assessment/workflow-assessment.component.mjs +254 -0
  329. package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +3913 -0
  330. package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +734 -0
  331. package/esm2022/lib/workflow-engine.module.mjs +467 -0
  332. package/esm2022/lib/workflow-engine.service.mjs +14 -0
  333. package/esm2022/lib/workflow-interfaces/create-policy-form.mjs +2 -0
  334. package/esm2022/lib/workflow-pagination/workflow-pagination.component.mjs +116 -0
  335. package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +1875 -0
  336. package/esm2022/lib/workflow-program/constants.mjs +51 -0
  337. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.mjs +15 -0
  338. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +292 -0
  339. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.mjs +15 -0
  340. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.mjs +43 -0
  341. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.mjs +22 -0
  342. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.mjs +116 -0
  343. package/esm2022/lib/workflow-program/create-program-ui/checkbox/checkbox.component.mjs +39 -0
  344. package/esm2022/lib/workflow-program/create-program-ui/create-program-ui.module.mjs +194 -0
  345. package/esm2022/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.mjs +44 -0
  346. package/esm2022/lib/workflow-program/create-program-ui/custom-field/custom-field.component.mjs +82 -0
  347. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +267 -0
  348. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.mjs +44 -0
  349. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.mjs +15 -0
  350. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.mjs +23 -0
  351. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.mjs +23 -0
  352. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +26 -0
  353. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +68 -0
  354. package/esm2022/lib/workflow-program/create-program-ui/directives/input-trim.directive.mjs +21 -0
  355. package/esm2022/lib/workflow-program/create-program-ui/file-pill/file-pill.component.mjs +27 -0
  356. package/esm2022/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +106 -0
  357. package/esm2022/lib/workflow-program/create-program-ui/form-field/form-field.component.mjs +16 -0
  358. package/esm2022/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.mjs +30 -0
  359. package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +166 -0
  360. package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination.module.mjs +28 -0
  361. package/esm2022/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.mjs +16 -0
  362. package/esm2022/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +27 -0
  363. package/esm2022/lib/workflow-program/create-program-ui/pipes/filter.pipe.mjs +30 -0
  364. package/esm2022/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.mjs +16 -0
  365. package/esm2022/lib/workflow-program/create-program-ui/pipes/pager.pipe.mjs +21 -0
  366. package/esm2022/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.mjs +17 -0
  367. package/esm2022/lib/workflow-program/create-program-ui/pipes/search.pipe.mjs +23 -0
  368. package/esm2022/lib/workflow-program/create-program-ui/role-list/loader/loader.component.mjs +15 -0
  369. package/esm2022/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +240 -0
  370. package/esm2022/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.mjs +43 -0
  371. package/esm2022/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.mjs +15 -0
  372. package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +434 -0
  373. package/esm2022/lib/workflow-program/workflow-program.component.mjs +1550 -0
  374. package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +1642 -0
  375. package/esm2022/lib/workflow-services/add-risk.service.mjs +150 -0
  376. package/esm2022/lib/workflow-services/assessment.service.mjs +117 -0
  377. package/esm2022/lib/workflow-services/auth.service.mjs +229 -0
  378. package/esm2022/lib/workflow-services/frequency.service.mjs +173 -0
  379. package/esm2022/lib/workflow-services/log-issue.service.mjs +360 -0
  380. package/esm2022/lib/workflow-services/policy.service.mjs +163 -0
  381. package/esm2022/lib/workflow-services/programs.service.mjs +319 -0
  382. package/esm2022/lib/workflow-services/responsibility.service.mjs +293 -0
  383. package/esm2022/lib/workflow-services/token-decoder.service.mjs +38 -0
  384. package/esm2022/lib/workflow-services/ui-kit.service.mjs +17 -0
  385. package/esm2022/lib/workflow-survey-form/workflow-survey-form.component.mjs +26 -0
  386. package/esm2022/public-api.mjs +8 -0
  387. package/esm2022/vcomply-workflow-engine.mjs +5 -0
  388. package/fesm2022/vcomply-workflow-engine.mjs +44351 -0
  389. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -0
  390. package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts +1 -1
  391. package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +1 -1
  392. package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +1 -1
  393. package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +1 -1
  394. package/lib/confirmation-alert/confirmation-alert.component.d.ts +1 -1
  395. package/lib/create-documents/create-documents.component.d.ts +1 -1
  396. package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts +1 -1
  397. package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +1 -1
  398. package/lib/formgroup/cs-radio/cs-radio.component.d.ts +1 -1
  399. package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts +1 -1
  400. package/lib/formgroup/cs-select/cs-select.component.d.ts +1 -1
  401. package/lib/formgroup/cs-switch/cs-switch.component.d.ts +1 -1
  402. package/lib/formgroup/select/cs-option/cs-option.component.d.ts +1 -1
  403. package/lib/formgroup/select/cs-select/cs-select.component.d.ts +1 -1
  404. package/lib/log-an-issue/log-an-issue.component.d.ts +7 -3
  405. package/lib/more-option/more-option.component.d.ts +1 -1
  406. package/lib/services/common.service.d.ts +14 -0
  407. package/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.d.ts +1 -1
  408. package/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.d.ts +1 -1
  409. package/lib/sharedComponents/approval-workflow/approval-workflow.component.d.ts +1 -1
  410. package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts +1 -1
  411. package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts +1 -1
  412. package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts +1 -1
  413. package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts +1 -1
  414. package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts +1 -1
  415. package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts +1 -1
  416. package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts +1 -1
  417. package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts +1 -1
  418. package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts +1 -1
  419. package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +1 -1
  420. package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts +1 -1
  421. package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts +1 -1
  422. package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts +1 -1
  423. package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts +1 -1
  424. package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts +1 -1
  425. package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts +1 -1
  426. package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts +1 -1
  427. package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +1 -1
  428. package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts +1 -1
  429. package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +1 -1
  430. package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts +1 -1
  431. package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +1 -1
  432. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts +1 -1
  433. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts +1 -1
  434. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts +7 -3
  435. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts +1 -1
  436. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +1 -1
  437. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts +1 -1
  438. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts +1 -1
  439. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts +1 -1
  440. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts +1 -1
  441. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts +1 -1
  442. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts +1 -1
  443. package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts +1 -1
  444. package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts +1 -1
  445. package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts +1 -1
  446. package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts +1 -1
  447. package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts +8 -5
  448. package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts +1 -1
  449. package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts +1 -1
  450. package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts +1 -1
  451. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts +1 -1
  452. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts +1 -1
  453. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts +1 -1
  454. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts +1 -1
  455. package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts +1 -1
  456. package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts +1 -1
  457. package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts +1 -1
  458. package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts +1 -1
  459. package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts +1 -1
  460. package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +1 -1
  461. package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +1 -1
  462. package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts +1 -1
  463. package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts +1 -1
  464. package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts +1 -1
  465. package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts +1 -1
  466. package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts +1 -1
  467. package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts +1 -1
  468. package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts +1 -1
  469. package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +1 -1
  470. package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts +1 -1
  471. package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts +1 -1
  472. package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts +1 -1
  473. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +1 -1
  474. package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts +1 -1
  475. package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts +8 -5
  476. package/lib/sharedComponents/assessment-preview/description-preview/description-preview.component.d.ts +1 -1
  477. package/lib/sharedComponents/assessment-preview/device/device.component.d.ts +1 -1
  478. package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts +1 -1
  479. package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts +1 -1
  480. package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts +1 -1
  481. package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts +1 -1
  482. package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts +1 -1
  483. package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts +1 -1
  484. package/lib/sharedComponents/assessment-preview/section-details/section-details.component.d.ts +1 -1
  485. package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts +1 -1
  486. package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts +1 -1
  487. package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts +1 -1
  488. package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +1 -1
  489. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +1 -1
  490. package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +1 -1
  491. package/lib/sharedComponents/category-list/category-list.component.d.ts +1 -1
  492. package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +1 -1
  493. package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +1 -1
  494. package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts +1 -1
  495. package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts +1 -1
  496. package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts +6 -2
  497. package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts +1 -1
  498. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts +1 -1
  499. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts +1 -1
  500. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts +1 -1
  501. package/lib/sharedComponents/directive/autofocus.directive.d.ts +1 -1
  502. package/lib/sharedComponents/directive/conditional-focus.directive.d.ts +1 -1
  503. package/lib/sharedComponents/directive/drag-drop.directive.d.ts +1 -1
  504. package/lib/sharedComponents/directive/input-trim.directive.d.ts +1 -1
  505. package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts +1 -1
  506. package/lib/sharedComponents/document-section/document-section.component.d.ts +1 -1
  507. package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts +1 -1
  508. package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +1 -1
  509. package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts +1 -1
  510. package/lib/sharedComponents/framework-list/framework-list.component.d.ts +1 -1
  511. package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts +1 -1
  512. package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts +1 -1
  513. package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts +1 -1
  514. package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts +1 -1
  515. package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts +1 -1
  516. package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts +1 -1
  517. package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts +1 -1
  518. package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts +1 -1
  519. package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts +1 -1
  520. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +10 -4
  521. package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts +1 -1
  522. package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +1 -1
  523. package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts +9 -5
  524. package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
  525. package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts +1 -1
  526. package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts +1 -1
  527. package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +1 -1
  528. package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +1 -1
  529. package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts +1 -1
  530. package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts +1 -1
  531. package/lib/sharedComponents/frequency/frequency.service.d.ts +1 -0
  532. package/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.d.ts +1 -1
  533. package/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.d.ts +1 -1
  534. package/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.d.ts +1 -1
  535. package/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.d.ts +1 -1
  536. package/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.d.ts +1 -1
  537. package/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.d.ts +1 -1
  538. package/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.d.ts +10 -5
  539. package/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.d.ts +1 -1
  540. package/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.d.ts +1 -1
  541. package/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.d.ts +1 -1
  542. package/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.d.ts +1 -1
  543. package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +1 -1
  544. package/lib/sharedComponents/link-program/link-program/link-program.component.d.ts +1 -1
  545. package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +1 -1
  546. package/lib/sharedComponents/list-loader/list-loader.component.d.ts +1 -1
  547. package/lib/sharedComponents/no-data/no-data.component.d.ts +1 -1
  548. package/lib/sharedComponents/owner-list/owner-list.component.d.ts +1 -1
  549. package/lib/sharedComponents/policy-access/policy-access.component.d.ts +1 -1
  550. package/lib/sharedComponents/program-listing/program-listing.component.d.ts +1 -1
  551. package/lib/sharedComponents/radio-list/radio-list.component.d.ts +1 -1
  552. package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts +1 -1
  553. package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +1 -1
  554. package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +1 -1
  555. package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +1 -1
  556. package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +1 -1
  557. package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts +1 -1
  558. package/lib/sharedComponents/roles-list/roles-list.component.d.ts +1 -1
  559. package/lib/sharedComponents/select-approvers/select-approvers.component.d.ts +1 -1
  560. package/lib/sharedComponents/table-card-loader/table-card-loader.component.d.ts +1 -1
  561. package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +1 -1
  562. package/lib/sharedComponents/v-loader/loader/loader.component.d.ts +1 -1
  563. package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts +1 -1
  564. package/lib/ui-kit/action-dialog/active/active.component.d.ts +1 -1
  565. package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts +1 -1
  566. package/lib/ui-kit/action-dialog/delete/delete.component.d.ts +1 -1
  567. package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts +1 -1
  568. package/lib/ui-kit/click-outside/click-outside.directive.d.ts +1 -1
  569. package/lib/ui-kit/dialog/dialog-injector.d.ts +2 -2
  570. package/lib/ui-kit/dialog/dialog.component.d.ts +6 -4
  571. package/lib/ui-kit/dialog/dialog.service.d.ts +3 -3
  572. package/lib/ui-kit/dialog/insertion.directive.d.ts +1 -1
  573. package/lib/ui-kit/directive/stop-propagation.directive.d.ts +1 -1
  574. package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts +1 -1
  575. package/lib/ui-kit/formgroup/click-outside.directive.d.ts +1 -1
  576. package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts +1 -1
  577. package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +1 -1
  578. package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts +1 -1
  579. package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts +1 -1
  580. package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts +1 -1
  581. package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +1 -1
  582. package/lib/ui-kit/line-loader/line-loader.component.d.ts +1 -1
  583. package/lib/ui-kit/no-data/no-data.component.d.ts +1 -1
  584. package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +1 -1
  585. package/lib/ui-kit/popover/popover-event.directive.d.ts +1 -1
  586. package/lib/ui-kit/popover/popover-longpress.directive.d.ts +1 -1
  587. package/lib/ui-kit/popover/popover.component.d.ts +1 -1
  588. package/lib/ui-kit/popover/popover.directive.d.ts +1 -1
  589. package/lib/ui-kit/popover-hover/popover-hover.component.d.ts +1 -1
  590. package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts +1 -1
  591. package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts +1 -1
  592. package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts +1 -1
  593. package/lib/ui-kit/snack-bar/snack-bar.component.d.ts +1 -1
  594. package/lib/ui-kit/time-picker/time-picker/time-picker.component.d.ts +1 -1
  595. package/lib/ui-kit/tooltip/tooltip.directive.d.ts +1 -1
  596. package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +1 -1
  597. package/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.d.ts +1 -1
  598. package/lib/workflow/shared/components/attributes/attributes-dropdown/attributes-dropdown.component.d.ts +1 -1
  599. package/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.d.ts +1 -1
  600. package/lib/workflow/shared/components/attributes/attributes.component.d.ts +1 -1
  601. package/lib/workflow/shared/components/attributes/date-picker/date-picker.component.d.ts +1 -1
  602. package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +1 -1
  603. package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +1 -1
  604. package/lib/workflow/shared/components/grc-object-list/grc-object-list.component.d.ts +1 -1
  605. package/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.d.ts +1 -1
  606. package/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.d.ts +1 -1
  607. package/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.d.ts +1 -1
  608. package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +1 -1
  609. package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +1 -1
  610. package/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.d.ts +1 -1
  611. package/lib/workflow/shared/components/table-card/table-card.component.d.ts +1 -1
  612. package/lib/workflow/shared/components/text-field/text-field.component.d.ts +1 -1
  613. package/lib/workflow/shared/components/text-field-icon/text-field-icon.component.d.ts +1 -1
  614. package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +1 -1
  615. package/lib/workflow-assessment/workflow-assessment.component.d.ts +1 -1
  616. package/lib/workflow-compliance/workflow-compliance.component.d.ts +1 -1
  617. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -1
  618. package/lib/workflow-pagination/workflow-pagination.component.d.ts +1 -1
  619. package/lib/workflow-policy/workflow-policy.component.d.ts +7 -3
  620. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts +1 -1
  621. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +1 -1
  622. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts +1 -1
  623. package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts +1 -1
  624. package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts +1 -1
  625. package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts +1 -1
  626. package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts +1 -1
  627. package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +1 -1
  628. package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts +1 -1
  629. package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts +1 -1
  630. package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts +1 -1
  631. package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts +1 -1
  632. package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts +1 -1
  633. package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts +1 -1
  634. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +1 -1
  635. package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts +1 -1
  636. package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +1 -1
  637. package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts +1 -1
  638. package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts +1 -1
  639. package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +1 -1
  640. package/lib/workflow-program/workflow-program.component.d.ts +1 -1
  641. package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
  642. package/lib/workflow-services/auth.service.d.ts +0 -1
  643. package/lib/workflow-services/log-issue.service.d.ts +1 -0
  644. package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +1 -1
  645. package/package.json +5 -12
@@ -0,0 +1,1569 @@
1
+ import { Component, Input, Output, EventEmitter, } from '@angular/core';
2
+ import { cloneDeep } from 'lodash-es';
3
+ import moment from 'moment/moment';
4
+ import * as XLSX from 'xlsx';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../workflow-services/add-risk.service";
7
+ import * as i2 from "../workflow-services/responsibility.service";
8
+ import * as i3 from "../workflow-services/auth.service";
9
+ import * as i4 from "../workflow-services/frequency.service";
10
+ import * as i5 from "../ui-kit/snack-bar/snack-bar.service";
11
+ import * as i6 from "@angular/forms";
12
+ import * as i7 from "@angular/common";
13
+ import * as i8 from "../sharedComponents/v-loader/loader-inline/loader-inline.component";
14
+ import * as i9 from "../ui-kit/smiley-dialog-inline/smiley-dialog-inline.component";
15
+ import * as i10 from "../sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component";
16
+ export class AddMultipleResponsibilityWithTabComponent {
17
+ set uploadedFileData(data) {
18
+ this.uploadedFile(data);
19
+ }
20
+ constructor(riskService, responsibilityService, authService, frequencyService, snackBar) {
21
+ this.riskService = riskService;
22
+ this.responsibilityService = responsibilityService;
23
+ this.authService = authService;
24
+ this.frequencyService = frequencyService;
25
+ this.snackBar = snackBar;
26
+ this.pickerChanged = new EventEmitter();
27
+ this.populateOption = new EventEmitter();
28
+ this.closeWorkflow = new EventEmitter();
29
+ this.disconnectRefresh = new EventEmitter();
30
+ this.isNotificationPending = 0;
31
+ this.closeAddMultipleResponsibility = new EventEmitter();
32
+ this.queryParam = '';
33
+ this.recentResponsibilityUrl = {
34
+ byResponsibilities: { type: ['recent_responsibilities'], subType: ['CC'] },
35
+ byStatus: { type: [], subType: [] },
36
+ filterObject: {
37
+ responsibilityCenter: [],
38
+ entrustedBy: [],
39
+ entrustedTo: [],
40
+ riskIds: [],
41
+ responsibilityCategory: [],
42
+ },
43
+ timePeriodDetails: { type: '', selectedPeriod: '', selectedYear: '' },
44
+ status: '',
45
+ };
46
+ this.url = 'q={"byResponsibilities":{"type":["responsibilities_in_queue"],"subType":["CC"]},"byStatus":{"type":["responsibilities_in_queue"],"subType":[]},"filterObject":{"responsibilityCenter":[],"entrustedBy":[],"entrustedTo":[],"riskIds":[],"responsibilityCategory":[]},"timePeriodDetails":{"type":"","selectedPeriod":"","selectedYear":""},"status":""}';
47
+ this.responsibilityBulkUpload = {
48
+ header: [],
49
+ reports: [],
50
+ };
51
+ this.tabType = 'frequency';
52
+ this.tabIndex = {
53
+ frequency: 0,
54
+ ongoing: 1,
55
+ onCompletion: 2,
56
+ };
57
+ this.bulkUpload = {
58
+ frequency: {
59
+ header: [],
60
+ subHeading: [],
61
+ reports: [],
62
+ },
63
+ ongoing: {
64
+ header: [],
65
+ subHeading: [],
66
+ reports: [],
67
+ },
68
+ onCompletion: {
69
+ header: [],
70
+ subHeading: [],
71
+ reports: [],
72
+ },
73
+ };
74
+ this.templateInfo = {
75
+ categoryList: [],
76
+ rcList: [],
77
+ assignorsList: [],
78
+ assigneesList: [],
79
+ reviewerList: [],
80
+ parentResponsibility: [],
81
+ memberId: '',
82
+ };
83
+ this.isLoader = false;
84
+ this.showCategoryList = false;
85
+ this.templateDownloaded = false;
86
+ this.downloadInProgress = false;
87
+ this.loader = false;
88
+ this.isFileEmpty = false;
89
+ this.isWrongFile = false;
90
+ this.isWrongFormat = false;
91
+ this.showExcel = false;
92
+ this.uploadedFiles = [];
93
+ this.fileResponse = [];
94
+ this.memberId = 0;
95
+ this.organizationId = 0;
96
+ this.errorMessage = ' invalid file error';
97
+ this.downloadStatus = 'NOT_DOWNLOADING';
98
+ this.downloadPercent = 0;
99
+ this.defaultOwner = '';
100
+ this.smileyMessage = `You're All Set! We're processing your request and you will be notified via email upon completion.`;
101
+ this.actionButtons = [
102
+ {
103
+ buttonText: 'Entrust More Responsibilities',
104
+ class: 'white-btn',
105
+ id: 'addMore',
106
+ },
107
+ {
108
+ buttonText: this.isNotificationPending
109
+ ? 'View Responsibilities In Queue'
110
+ : 'View Responsibilities',
111
+ class: 'blue-btn',
112
+ id: 'view',
113
+ },
114
+ ];
115
+ this.showSmiley = false;
116
+ this.member_obj_id = '';
117
+ this.ffBulkUploadOptimization = false;
118
+ }
119
+ ngOnChanges(changes) { }
120
+ ngOnInit() {
121
+ this.pickerChanged.emit(false);
122
+ this.organizationId = this.authService.getOrganizationId();
123
+ this.memberId = this.authService.getMemberId();
124
+ this.member_obj_id = this.authService.getUserDetails()._id;
125
+ this.userInfo = this.authService.getUserDetails().user;
126
+ this.defaultOwner = this.userInfo
127
+ ? this.userInfo.name + ' (' + this.userInfo.email + ')'
128
+ : '';
129
+ this.getUserDetails();
130
+ this.authService.getOrganizationDetails().subscribe((res) => {
131
+ this.riskClassEnabled = res.enable_riskclass;
132
+ });
133
+ this.ffBulkUploadOptimization = this.feature.isFeatureEnabled('ff_bulk_upload_optimization');
134
+ }
135
+ triggerBrowseFile() {
136
+ const getFile = document.getElementById('fileInput');
137
+ if (getFile) {
138
+ getFile.click();
139
+ }
140
+ }
141
+ getUserDetails() {
142
+ this.authService.getUserInfo().subscribe((res) => {
143
+ this.isNotificationPending = res.notification_pending_flag;
144
+ });
145
+ }
146
+ uploadedFile(event, tabType) {
147
+ try {
148
+ this.responsibilityBulkUpload = {
149
+ header: [],
150
+ reports: [],
151
+ };
152
+ this.templateInfo = {
153
+ categoryList: [],
154
+ rcList: [],
155
+ assignorsList: [],
156
+ assigneesList: [],
157
+ reviewerList: [],
158
+ parentResponsibility: [],
159
+ memberId: '',
160
+ };
161
+ this.uploadedFiles = [];
162
+ const reference = document.querySelector('#scrollReference');
163
+ if (reference) {
164
+ reference.scrollIntoView({ behavior: 'smooth', block: 'center' });
165
+ }
166
+ this.isFileEmpty = false;
167
+ this.isWrongFile = false;
168
+ this.isWrongFormat = false;
169
+ this.fileName = event.target.files[0].name;
170
+ this.uploadedFiles.push(event.target.files);
171
+ const target = event.target;
172
+ // tslint:disable-next-line: curly
173
+ if (target.files.length !== 1)
174
+ throw new Error('Cannot use multiple files');
175
+ const reader = new FileReader();
176
+ reader.onload = (e) => {
177
+ const bstr = e.target.result;
178
+ const wb = XLSX.read(bstr, { type: 'binary' });
179
+ const wsname = wb.SheetNames[1];
180
+ const sheet2 = wb.SheetNames[2];
181
+ const sheet3 = wb.SheetNames[3];
182
+ const wsname1 = wb.SheetNames[4];
183
+ const ws = wb.Sheets[wsname];
184
+ const sheetReport2 = wb.Sheets[sheet2];
185
+ const sheetReport3 = wb.Sheets[sheet3];
186
+ const tempData = wb.Sheets[wsname1];
187
+ const tData = XLSX.utils.sheet_to_json(tempData, { header: 1 });
188
+ const tempList = tData.filter((dataElement) => dataElement.length > 0);
189
+ this.setOrganizationDetails(tempList);
190
+ wb.SheetNames.forEach((sheet) => {
191
+ switch (sheet?.toLowerCase()) {
192
+ case 'frequency responsibilities':
193
+ this.setDataForDifferentTabs(ws, sheet);
194
+ break;
195
+ case 'ongoing responsibilities':
196
+ this.setDataForDifferentTabs(sheetReport2, sheet);
197
+ break;
198
+ case 'on completion responsibilities':
199
+ this.setDataForDifferentTabs(sheetReport3, sheet);
200
+ break;
201
+ default:
202
+ break;
203
+ }
204
+ });
205
+ };
206
+ reader.readAsBinaryString(target.files[0]);
207
+ }
208
+ catch (e) {
209
+ console.error(e);
210
+ }
211
+ }
212
+ /**
213
+ * It takes a worksheet and a sheet name, and then it sets the data for different tabs.
214
+ * @param ws - XLSX.WorkSheet, sheet: string
215
+ * @param {string} sheet - string - the name of the sheet in the excel file
216
+ * @returns the value of the variable "responsibilityBulkUpload" which is an object.
217
+ */
218
+ setDataForDifferentTabs(ws, sheet) {
219
+ let responsibilityBulkUpload = {
220
+ header: [],
221
+ reports: [],
222
+ subHeading: [],
223
+ };
224
+ let sheetValue = XLSX.utils.sheet_to_json(ws, {
225
+ header: 1,
226
+ raw: false,
227
+ });
228
+ let data = sheetValue.filter((res) => {
229
+ let isUndefined = '';
230
+ res.forEach((el) => {
231
+ isUndefined = isUndefined + el;
232
+ });
233
+ if (sheetValue[2] && sheetValue[2][1] === 'Program') {
234
+ return !(res?.length === 9 && res[8] === '' && !isUndefined.length);
235
+ }
236
+ else {
237
+ return !(res?.length === 6 && res[5] === '' && !isUndefined.length);
238
+ }
239
+ });
240
+ if (this.fileName.substr(-5) !== '.xlsx') {
241
+ this.errorMessage =
242
+ 'The incorrect file has been uploaded. Please upload the template which you downloaded from here.' +
243
+ ' RETRY';
244
+ this.isWrongFile = true;
245
+ return;
246
+ }
247
+ responsibilityBulkUpload.header = cloneDeep(data[2]);
248
+ responsibilityBulkUpload.subHeading = cloneDeep(data[3]);
249
+ data = data.slice(5);
250
+ if (this.member_obj_id != this.templateInfo.memberId) {
251
+ this.errorMessage =
252
+ 'The incorrect file has been uploaded. Please upload the template which you downloaded from here.' +
253
+ ' RETRY';
254
+ this.isWrongFile = true;
255
+ return;
256
+ }
257
+ const responsibilityData = data.filter((dataElement) => dataElement.length > 0);
258
+ responsibilityData.forEach((report) => {
259
+ let validDate;
260
+ const validUser = this.returnIds(report[2], 'entrusted_to')
261
+ ? true
262
+ : false;
263
+ if (responsibilityBulkUpload.header[1] === 'Program') {
264
+ validDate = this.compareWithCurrentDate(report[4], report[5]);
265
+ }
266
+ else {
267
+ validDate = this.compareWithCurrentDate(report[5], report[6]);
268
+ }
269
+ /* Pushing the report details into the bulkUpload object as per tab tabs */
270
+ if (sheet?.toLowerCase() === 'frequency responsibilities') {
271
+ responsibilityBulkUpload.reports.push(this.setReportDetails(report, 'frequency', responsibilityBulkUpload.header[1] === 'Program' ? true : false));
272
+ this.bulkUpload.frequency.header = responsibilityBulkUpload?.header;
273
+ this.bulkUpload.frequency.subHeading =
274
+ responsibilityBulkUpload?.subHeading;
275
+ this.bulkUpload.frequency.reports = responsibilityBulkUpload?.reports;
276
+ }
277
+ if (sheet?.toLowerCase() === 'ongoing responsibilities') {
278
+ responsibilityBulkUpload.reports.push(this.setReportDetails(report, 'ongoing', responsibilityBulkUpload.header[1] === 'Program' ? true : false));
279
+ this.bulkUpload.ongoing.header = responsibilityBulkUpload?.header;
280
+ this.bulkUpload.ongoing.subHeading =
281
+ responsibilityBulkUpload?.subHeading;
282
+ this.bulkUpload.ongoing.reports = responsibilityBulkUpload?.reports;
283
+ }
284
+ if (sheet?.toLowerCase() === 'on completion responsibilities') {
285
+ responsibilityBulkUpload.reports.push(this.setReportDetails(report, 'onCompletion', responsibilityBulkUpload.header[1] === 'Program' ? true : false));
286
+ this.bulkUpload.onCompletion.header = responsibilityBulkUpload?.header;
287
+ this.bulkUpload.onCompletion.subHeading =
288
+ responsibilityBulkUpload?.subHeading;
289
+ this.bulkUpload.onCompletion.reports =
290
+ responsibilityBulkUpload?.reports;
291
+ }
292
+ });
293
+ const isEmpty = this.checkEmptyFile(data);
294
+ /* Checking if the file is empty, if it is empty it will return an error message. If it is not
295
+ empty it will check if the file is the correct file, if it is not the correct file it will
296
+ return an error message. If it is the correct file it will call the fileUpload() function. */
297
+ if (isEmpty) {
298
+ this.errorMessage =
299
+ 'You have uploaded a blank template. Please add details for all mandatory fields. RETRY';
300
+ this.isFileEmpty = true;
301
+ this.isWrongFile = false;
302
+ this.isWrongFormat = false;
303
+ return;
304
+ }
305
+ else if (this.bulkUpload?.frequency?.header[0] !== 'Responsibility Name*' &&
306
+ this.bulkUpload?.ongoing?.header[0] !== 'Responsibility Name*' &&
307
+ this.bulkUpload?.onCompletion?.header[0] !== 'Responsibility Name*') {
308
+ this.errorMessage =
309
+ 'The incorrect file has been uploaded. Please upload the template which you downloaded from here.' +
310
+ ' RETRY';
311
+ this.isWrongFile = false;
312
+ this.isWrongFormat = true;
313
+ return;
314
+ }
315
+ else {
316
+ this.isFileEmpty = false;
317
+ this.isWrongFile = false;
318
+ this.isWrongFormat = false;
319
+ this.fileUpload();
320
+ }
321
+ this.isFileEmpty = false;
322
+ this.isWrongFile = false;
323
+ this.isWrongFormat = false;
324
+ this.showExcel = true;
325
+ this.fileValue = '';
326
+ }
327
+ /**
328
+ * If the bulkUpload object has a frequency object with a reports array, set the
329
+ * responsibilityBulkUpload to the frequency object and set the tabType to frequency. If not, check
330
+ * if the bulkUpload object has an ongoing object with a reports array, set the
331
+ * responsibilityBulkUpload to the ongoing object and set the tabType to ongoing. If not, check if
332
+ * the bulkUpload object has an onCompletion object with a reports array, set the
333
+ * responsibilityBulkUpload to the onCompletion object and set the tabType to onCompletion. If not,
334
+ * return true.
335
+ * </code>
336
+ * @param {any} data - any = {
337
+ * @returns a boolean value.
338
+ */
339
+ checkEmptyFile(data) {
340
+ let isEmpty = false;
341
+ if (this.bulkUpload?.frequency?.reports?.length) {
342
+ this.responsibilityBulkUpload = this.bulkUpload?.frequency;
343
+ this.tabType = 'frequency';
344
+ }
345
+ else if (this.bulkUpload?.ongoing?.reports?.length) {
346
+ this.responsibilityBulkUpload = this.bulkUpload?.ongoing;
347
+ this.tabType = 'ongoing';
348
+ }
349
+ else if (this.bulkUpload?.onCompletion?.reports?.length) {
350
+ this.responsibilityBulkUpload = this.bulkUpload?.onCompletion;
351
+ this.tabType = 'onCompletion';
352
+ }
353
+ else {
354
+ isEmpty = true;
355
+ }
356
+ return isEmpty;
357
+ }
358
+ compareWithCurrentDate(day, month) {
359
+ const currentDate = new Date();
360
+ const monthNames = [
361
+ { value: 1, month: 'Jan' },
362
+ { value: 2, month: 'Feb' },
363
+ { value: 3, month: 'Mar' },
364
+ { value: 4, month: 'Apr' },
365
+ { value: 5, month: 'May' },
366
+ { value: 6, month: 'Jun' },
367
+ { value: 7, month: 'Jul' },
368
+ { value: 8, month: 'Aug' },
369
+ { value: 9, month: 'Sep' },
370
+ { value: 10, month: 'Oct' },
371
+ { value: 11, month: 'Nov' },
372
+ { value: 12, month: 'Dec' },
373
+ ];
374
+ if (!(day || month)) {
375
+ return true;
376
+ }
377
+ else if (!(day && month)) {
378
+ return false;
379
+ }
380
+ else {
381
+ const monthAndYear = month.split("'");
382
+ const startDate = moment(day + '-' + monthAndYear[0] + '-' + 20 + monthAndYear[1] + ' 00:00:00', 'DD-MMMM-YYYY HH:mm:ss').format('YYYY-MM-DD HH:mm:ss');
383
+ if (startDate == 'Invalid date') {
384
+ return false;
385
+ }
386
+ setTimeout(() => { }, 5);
387
+ const date_value = new Date();
388
+ date_value.setMonth(typeof month !== 'number'
389
+ ? monthNames.filter((x) => x.month === month?.substring(0, 3))[0]
390
+ ?.value - 1
391
+ : month);
392
+ date_value.setFullYear(Number(20 + month.split("'")[1]));
393
+ date_value.setDate(Number(day));
394
+ if (currentDate.toJSON().split('T')[0] !=
395
+ date_value.toJSON().split('T')[0] &&
396
+ currentDate > date_value) {
397
+ return false;
398
+ }
399
+ else {
400
+ return true;
401
+ }
402
+ }
403
+ }
404
+ isPastDate(day, month) {
405
+ const currentDate = new Date();
406
+ const monthNames = [
407
+ { value: 1, month: 'Jan' },
408
+ { value: 2, month: 'Feb' },
409
+ { value: 3, month: 'Mar' },
410
+ { value: 4, month: 'Apr' },
411
+ { value: 5, month: 'May' },
412
+ { value: 6, month: 'Jun' },
413
+ { value: 7, month: 'Jul' },
414
+ { value: 8, month: 'Aug' },
415
+ { value: 9, month: 'Sep' },
416
+ { value: 10, month: 'Oct' },
417
+ { value: 11, month: 'Nov' },
418
+ { value: 12, month: 'Dec' },
419
+ ];
420
+ if (!(day || month)) {
421
+ return false;
422
+ }
423
+ else if (!(day && month)) {
424
+ return false;
425
+ }
426
+ else {
427
+ // const reportDate = new Date(day + month.split("'"));
428
+ const date_value = new Date();
429
+ date_value.setMonth(typeof month !== 'number'
430
+ ? monthNames.filter((x) => x.month === month?.substring(0, 3))[0]
431
+ ?.value - 1
432
+ : month);
433
+ date_value.setFullYear(Number(20 + month.split("'")[1]));
434
+ date_value.setDate(Number(day));
435
+ if (currentDate > date_value) {
436
+ return true;
437
+ }
438
+ else {
439
+ return false;
440
+ }
441
+ }
442
+ }
443
+ downloadTemplate() {
444
+ this.downloadStatus = 'DOWNLOADING';
445
+ this.downloadPercent = 0;
446
+ const downloadDate = new Date().toDateString().split(' ');
447
+ const fileName = `Entrust Responsibilities-${downloadDate[2]}-${downloadDate[1]}-${downloadDate[3]}.xlsx`;
448
+ this.riskService.downloadResponsibilityTemplate().subscribe((data) => {
449
+ if (data.loaded) {
450
+ this.downloadPercent = 100 * (data.loaded / data.total);
451
+ }
452
+ if (data.body) {
453
+ setTimeout(() => {
454
+ this.downloadStatus = this.riskService.downLoadFile(data.body, 'application/xlsx', fileName);
455
+ }, 1500);
456
+ }
457
+ }, (error) => {
458
+ console.error(error);
459
+ this.downloadStatus = 'DOWNLOADED';
460
+ });
461
+ }
462
+ submitResponsibilityBulkUpload() {
463
+ this.loader = true;
464
+ let payload = [];
465
+ let responsibilityMultiTabBulkUpload = [];
466
+ const frequencyTypeArray = ['1', '2', '3', '4', '7', '0', '6', '9'];
467
+ const defaultWindow = [0, 2, 7, 30, 7, 15, 3, 30];
468
+ const defaultFailedDay = [1, 2, 5, 5, 5, 5, 5, 5];
469
+ let validResponsibilities = 0;
470
+ let responsibilityBulkUpload = this.bulkUpload?.frequency?.reports?.concat(this.bulkUpload?.ongoing?.reports, this.bulkUpload?.onCompletion?.reports);
471
+ responsibilityMultiTabBulkUpload =
472
+ this.bulkUpload?.frequency?.reports?.concat(this.bulkUpload?.ongoing?.reports, this.bulkUpload?.onCompletion?.reports);
473
+ if (this.ffBulkUploadOptimization) {
474
+ responsibilityMultiTabBulkUpload?.forEach((report) => {
475
+ if (report?.isValid) {
476
+ validResponsibilities += 1;
477
+ }
478
+ });
479
+ payload = {
480
+ originalFilename: this.fileResponse[0]?.original_filename,
481
+ fileName: this.fileResponse[0]?.filename,
482
+ filePath: this.fileResponse[0]?.filepath,
483
+ totalResponsibilityCount: responsibilityMultiTabBulkUpload?.length,
484
+ validResponsibilityCount: validResponsibilities,
485
+ };
486
+ }
487
+ else {
488
+ responsibilityBulkUpload.forEach((report) => {
489
+ if (report.isValid) {
490
+ if (report?.responsibilityCategory === null) {
491
+ report.responsibilityCategory = '';
492
+ }
493
+ const rcDetails = this.returnIds(report?.responsibilityCenter, 'rc_id');
494
+ const reviewerDetails = this.returnIds(report?.reviewer, 'reviewer');
495
+ const assignorDetails = report?.assignor
496
+ ? this.returnIds(report?.assignor, 'assignor')
497
+ : '';
498
+ const ccDetails = this.returnIds(report?.overseer, 'cc');
499
+ const ccFailureDetails = this.returnIds(report.notifyOnFailure, 'ccFailure');
500
+ const currentDate = moment().format('YYYY-MM-DD');
501
+ let ongoingReminderType = {
502
+ Weekly: 1,
503
+ Monthly: 2,
504
+ Quarterly: 3,
505
+ };
506
+ const ongoingValues = {
507
+ setReminder: report?.setReminder,
508
+ frequencyReminder: ongoingReminderType[report?.frequencyReminder],
509
+ };
510
+ const frequencyValue = this.frequencyService.shortHand_freqCal(report?.frequency, report?.day, report?.month, '', report?.dueDate, ongoingValues);
511
+ const dateAndMonth = report?.month?.split("'");
512
+ const startDate = dateAndMonth
513
+ ? moment(report?.day +
514
+ '-' +
515
+ dateAndMonth[0] +
516
+ '-' +
517
+ 20 +
518
+ dateAndMonth[1] +
519
+ ' 00:00:00', 'DD-MMMM-YYYY HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')
520
+ : '';
521
+ let completeDays;
522
+ let notCompleteDays;
523
+ const frequencyType = frequencyValue?.split('~')[0];
524
+ if (report.responsibilityWindow &&
525
+ report.responsibilityWindow !== '') {
526
+ completeDays = report?.responsibilityWindow;
527
+ }
528
+ else if (frequencyTypeArray?.includes(frequencyType)) {
529
+ const indexOfArray = frequencyTypeArray?.indexOf(frequencyType);
530
+ completeDays = defaultWindow[indexOfArray];
531
+ }
532
+ if (report?.failedAfter && report?.failedAfter !== '') {
533
+ notCompleteDays = report?.failedAfter;
534
+ }
535
+ else if (frequencyTypeArray.includes(frequencyType)) {
536
+ const indexOfArray = frequencyTypeArray?.indexOf(frequencyType);
537
+ notCompleteDays = defaultFailedDay[indexOfArray];
538
+ }
539
+ const obj = {
540
+ userId: this.templateInfo?.memberId,
541
+ organisation_id: this.organizationId,
542
+ member_id: assignorDetails
543
+ ? assignorDetails?.memberId
544
+ : this.memberId,
545
+ member_name: assignorDetails
546
+ ? report?.assignor
547
+ ? report?.assignor.split(' (')[0]
548
+ : ''
549
+ : this.defaultOwner
550
+ ? this.defaultOwner?.split(' (')[0]
551
+ : '',
552
+ member_email: assignorDetails
553
+ ? report?.assignor
554
+ ? report?.assignor?.split(' (')[1]?.replace(')', '')
555
+ : ''
556
+ : this.defaultOwner
557
+ ? this.defaultOwner?.split(' (')[1].replace(')', '')
558
+ : '',
559
+ created_by: assignorDetails ? this.memberId : 0,
560
+ report_name: report?.responsibilityName ?? '',
561
+ entrusted_to: report?.assignee?.split(' (')[0] ?? '',
562
+ entrusted_to_id: this.isGroupSelected(report?.assignee)
563
+ ? this.getEmployeeIdFromGroup(report?.assignee)
564
+ : this.returnIds(report?.assignee, 'entrusted_to')?.toString() ??
565
+ '',
566
+ email_address: !this.isGroupSelected(report?.assignee)
567
+ ? report?.assignee?.split(' (')[1]?.replace(')', '') ?? ''
568
+ : '',
569
+ isGroupAssignTo: report?.assigneeType?.includes('Any') ? 1 : 0,
570
+ category_name_with_tree: '',
571
+ category_id: this.getProgramId(report?.program, report?.programCategory).categoryId?.toString() ?? '',
572
+ program_cat_ids: this.getProgramId(report?.program, report?.programCategory)?.programId
573
+ ? [
574
+ this.getProgramId(report?.program, report?.programCategory)
575
+ ?.programId,
576
+ ]
577
+ : [],
578
+ rc_name: rcDetails ? rcDetails?.name : '',
579
+ rc_id: rcDetails ? rcDetails?.rcId : 0,
580
+ entity_tree: rcDetails && rcDetails?.rcId
581
+ ? [
582
+ {
583
+ parent_rc_ids: rcDetails ? rcDetails?.parentIds : [],
584
+ rc_id: rcDetails ? rcDetails?.rcId : 0,
585
+ },
586
+ ]
587
+ : [],
588
+ userGroupIds: {
589
+ assigneeAllGroupIds: !report?.assigneeType?.includes('Any') &&
590
+ this.isGroupSelected(report?.assignee)
591
+ ? [this.returnIds(report?.assignee, 'entrusted_to')]
592
+ : [],
593
+ assigneeAnyoneGroupIds: report?.assigneeType?.includes('Any') &&
594
+ this.isGroupSelected(report?.assignee)
595
+ ? [this.returnIds(report?.assignee, 'entrusted_to')]
596
+ : [],
597
+ ccEmailGroupIds: [],
598
+ failureCCEmailGroupIds: [],
599
+ reviewerGroupIds: [],
600
+ },
601
+ frequency_handler: frequencyValue,
602
+ compliance_type: frequencyValue?.split('~')[0],
603
+ frequency_description: report?.frequency,
604
+ start_date: report?.day ? startDate : currentDate + ' 00:00:00',
605
+ risk_class: report?.reportClass ?? '',
606
+ risk_classId: report?.reportClass
607
+ ? this.returnIds(report?.reportClass, 'risk_class')
608
+ : this.riskClassEnabled
609
+ ? 1
610
+ : 2,
611
+ doc_utc: 0,
612
+ comment: report?.notes ?? '',
613
+ cc_mail: ccDetails ? ccDetails?.email : '',
614
+ cc_mail_id: ccDetails ? ccDetails?.employeeId : '',
615
+ cc_failed_mail: ccFailureDetails ? ccFailureDetails?.email : '',
616
+ cc_failure_id: ccFailureDetails ? ccFailureDetails?.employeeId : 0,
617
+ send_reminder: '',
618
+ responsibilityWindow: frequencyType === '1'
619
+ ? 0
620
+ : completeDays && completeDays != ''
621
+ ? completeDays
622
+ : 0,
623
+ failed_after: notCompleteDays && notCompleteDays != '' ? notCompleteDays : 0,
624
+ excel_sheet_name: '',
625
+ report_upload_flag: report?.isFormat === 'Yes' &&
626
+ report?.formatForResponsibility?.length
627
+ ? 1
628
+ : 0,
629
+ report_id: 0,
630
+ is_assigned_flag: 0,
631
+ private_library_id: 0,
632
+ keycompliance: report?.keyResponsibility === 'Yes' ? 'Yes' : 'No',
633
+ key_compliance: report?.keyResponsibility === 'Yes' ? 1 : 0,
634
+ reviewerId: reviewerDetails ? reviewerDetails?.employeeId : 0,
635
+ reviewer_arr: reviewerDetails && reviewerDetails?.employeeId
636
+ ? {
637
+ level1: {
638
+ reviewers: [
639
+ {
640
+ member_id: reviewerDetails
641
+ ? reviewerDetails?.employeeId
642
+ : 0,
643
+ reviewer_accept: 0,
644
+ },
645
+ ],
646
+ type: 'SEQUENTIAL',
647
+ },
648
+ }
649
+ : {},
650
+ reviewerWindow: report?.reviewToBeCompletedWithin &&
651
+ report?.reviewToBeCompletedWithin !== ''
652
+ ? report?.reviewToBeCompletedWithin
653
+ : 2,
654
+ reviewerFailure: report?.reviewWillBeFailedAfter &&
655
+ report?.reviewWillBeFailedAfter !== ''
656
+ ? report?.reviewWillBeFailedAfter
657
+ : 2,
658
+ reviewer_email: reviewerDetails ? reviewerDetails?.email : '',
659
+ formatForResponsibility: report?.formatForResponsibility
660
+ ? report.formatForResponsibility
661
+ : '',
662
+ documentaryEvidence: report?.evidenceNotes ?? '',
663
+ isdocumentaryEvidence: report.documentEvidenceRequired === 'Yes' ? 1 : 0,
664
+ objective: report.objective ?? '',
665
+ excel_sheet_info: this.fileResponse,
666
+ showList: false,
667
+ custom_tags: '[]',
668
+ questionnaire_type: '',
669
+ on_completion_of_type: report?.frequency === 'On Completion of' ||
670
+ report?.frequency?.toLowerCase() === 'ongoing'
671
+ ? 1
672
+ : 0,
673
+ on_completion_of: this.returnIds(report?.parentResponsibility, 'parentResponsibility')
674
+ ? [
675
+ this.returnIds(report?.parentResponsibility, 'parentResponsibility'),
676
+ ]
677
+ : [],
678
+ };
679
+ payload.push(obj);
680
+ }
681
+ });
682
+ }
683
+ this.responsibilityService.addBulkResponsibility(payload).subscribe((res) => {
684
+ this.loader = false;
685
+ this.showExcel = false;
686
+ this.showSmiley = true;
687
+ this.responsibilityData = res;
688
+ }, (err) => {
689
+ console.log(err);
690
+ this.loader = false;
691
+ this.showExcel = false;
692
+ this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?', 'alert');
693
+ });
694
+ }
695
+ returnIds(item, key) {
696
+ switch (key) {
697
+ case 'rc_id':
698
+ let rcObj = { name: '', rcId: 0, parentIds: [] };
699
+ this.templateInfo.rcList.forEach((rc_element) => {
700
+ if (rc_element.name == item) {
701
+ let name;
702
+ if (rc_element.name.includes('[WITHIN]')) {
703
+ name = rc_element.name.split(' [WITHIN] ')[0];
704
+ }
705
+ else {
706
+ name = rc_element.name;
707
+ }
708
+ rcObj = {
709
+ name,
710
+ rcId: rc_element.rc_id,
711
+ parentIds: rc_element.parentIds,
712
+ };
713
+ }
714
+ });
715
+ return rcObj;
716
+ break;
717
+ case 'reviewer':
718
+ let reviewerObj = { name: '', employeeId: 0, email: '' };
719
+ this.templateInfo?.reviewerList.forEach((reviewerElement) => {
720
+ if (reviewerElement.nameAndEmail == item) {
721
+ reviewerObj = {
722
+ name: reviewerElement.name,
723
+ employeeId: reviewerElement.my_member_id,
724
+ email: reviewerElement.email,
725
+ };
726
+ }
727
+ });
728
+ return reviewerObj;
729
+ break;
730
+ case 'assignor':
731
+ let assignorObj = { name: '', memberId: 0, email: '' };
732
+ this.templateInfo.assignorsList.forEach((assignorElement) => {
733
+ if (assignorElement.nameAndEmail == item) {
734
+ assignorObj = {
735
+ name: assignorElement.name,
736
+ email: assignorElement.email,
737
+ memberId: assignorElement.member_id,
738
+ };
739
+ }
740
+ });
741
+ return assignorObj;
742
+ break;
743
+ case 'cc':
744
+ let ccObj = { name: '', employeeId: 0, email: '' };
745
+ this.templateInfo?.reviewerList.forEach((ccElement) => {
746
+ if (ccElement.nameAndEmail == item) {
747
+ ccObj = {
748
+ name: ccElement.name,
749
+ employeeId: ccElement.employee_id,
750
+ email: ccElement.email,
751
+ };
752
+ }
753
+ });
754
+ return ccObj;
755
+ break;
756
+ case 'ccFailure':
757
+ let ccfObj = { name: '', employeeId: 0, email: '' };
758
+ this.templateInfo?.reviewerList.forEach((ccfElement) => {
759
+ if (ccfElement.nameAndEmail == item) {
760
+ ccfObj = {
761
+ name: ccfElement.name,
762
+ employeeId: ccfElement.employee_id,
763
+ email: ccfElement.email,
764
+ };
765
+ }
766
+ });
767
+ return ccfObj;
768
+ break;
769
+ case 'entrusted_to':
770
+ let empId = 0;
771
+ this.templateInfo.assigneesList.forEach((enElement) => {
772
+ if (enElement.nameAndEmail == item) {
773
+ empId = enElement.employee_id;
774
+ }
775
+ });
776
+ return empId;
777
+ break;
778
+ case 'parentResponsibility':
779
+ let id = 0;
780
+ this.templateInfo.parentResponsibility.forEach((responsibility) => {
781
+ if (responsibility?.name === item) {
782
+ id = responsibility.id;
783
+ }
784
+ });
785
+ return id;
786
+ break;
787
+ case 'risk_class':
788
+ if (item == 'Low') {
789
+ return 1;
790
+ }
791
+ else if (item == 'Low-Medium') {
792
+ return 2;
793
+ }
794
+ else if (item == 'Medium-High') {
795
+ return 3;
796
+ }
797
+ else if (item == 'High') {
798
+ return 4;
799
+ }
800
+ else {
801
+ return 0;
802
+ }
803
+ break;
804
+ }
805
+ }
806
+ reset() {
807
+ this.responsibilityBulkUpload = {
808
+ header: [],
809
+ reports: [],
810
+ };
811
+ this.bulkUpload = {
812
+ frequency: {
813
+ header: [],
814
+ subHeading: [],
815
+ reports: [],
816
+ },
817
+ ongoing: {
818
+ header: [],
819
+ subHeading: [],
820
+ reports: [],
821
+ },
822
+ onCompletion: {
823
+ header: [],
824
+ subHeading: [],
825
+ reports: [],
826
+ },
827
+ };
828
+ this.templateInfo = {
829
+ categoryList: [],
830
+ rcList: [],
831
+ assignorsList: [],
832
+ assigneesList: [],
833
+ reviewerList: [],
834
+ memberId: '',
835
+ };
836
+ this.isFileEmpty = false;
837
+ this.isWrongFile = false;
838
+ this.isWrongFormat = false;
839
+ this.fileName = undefined;
840
+ this.data = undefined;
841
+ this.showExcel = false;
842
+ this.showSmiley = false;
843
+ this.closeAddMultipleResponsibility.emit();
844
+ }
845
+ action(event) {
846
+ switch (event) {
847
+ case 'addMore':
848
+ this.reset();
849
+ break;
850
+ case 'view':
851
+ this.viewResponsibilities();
852
+ break;
853
+ }
854
+ }
855
+ closeSmiley(event) {
856
+ this.showSmiley = false;
857
+ this.closeWorkflow.emit({ evt: this.responsibilityData, confirm: false });
858
+ }
859
+ viewResponsibilities() {
860
+ let url;
861
+ let urlSubstring = '';
862
+ this.disconnectRefresh.emit(false);
863
+ if (this.isNotificationPending) {
864
+ if (this.featureflag) {
865
+ urlSubstring = 'compliance/manage-responsibility?' + this.url;
866
+ }
867
+ else {
868
+ urlSubstring =
869
+ 'compliance/manage-responsibilities/responsibilities-queue';
870
+ }
871
+ }
872
+ else {
873
+ if (this.featureflag) {
874
+ this.queryParam = JSON?.stringify(this.recentResponsibilityUrl);
875
+ urlSubstring = 'compliance/manage-responsibility?q=' + this.queryParam;
876
+ }
877
+ else {
878
+ urlSubstring = 'compliance/manage-responsibilities';
879
+ }
880
+ }
881
+ if (window.location.host.startsWith('localhost')) {
882
+ url = 'http://' + window.location.host + '/compliance/#/' + urlSubstring;
883
+ }
884
+ else {
885
+ url = 'https://' + window.location.host + '/compliance/#/' + urlSubstring;
886
+ }
887
+ window.location.href = url;
888
+ }
889
+ // Upload File to the server
890
+ fileUpload() {
891
+ this.fileResponse = [];
892
+ this.loader = true;
893
+ const formData = new FormData();
894
+ const file = this.uploadedFiles[0][0];
895
+ formData.append('sourcefile', file);
896
+ formData.append('destination', 'bulkupload/entrust/' + this.userInfo.email);
897
+ this.responsibilityService.fileUpload(formData).subscribe((res) => {
898
+ if (res?.filename) {
899
+ this.fileResponse.push(res);
900
+ }
901
+ this.loader = false;
902
+ }, (err) => {
903
+ console.error(err);
904
+ this.loader = false;
905
+ this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?', 'alert');
906
+ });
907
+ }
908
+ setOrganizationDetails(tempList) {
909
+ if (tempList[0] !== undefined && tempList[0][18]) {
910
+ this.templateInfo.memberId = tempList[0][18];
911
+ }
912
+ else {
913
+ this.errorMessage =
914
+ 'The incorrect file has been uploaded. Please upload the template which you downloaded from here.' +
915
+ ' RETRY';
916
+ this.isWrongFile = true;
917
+ return;
918
+ }
919
+ tempList.forEach((element) => {
920
+ /* Pushing the value of regulations Programs into the categoryList array. */
921
+ if (element[26] && typeof element[26] === 'number') {
922
+ const regulations = {
923
+ programName: element[22],
924
+ programId: element[26],
925
+ assignee: JSON.parse(element[30]),
926
+ reviewer: JSON.parse(element[31]),
927
+ overseer: JSON.parse(element[32])?.concat(JSON.parse(element[33])),
928
+ programType: 1,
929
+ };
930
+ this.templateInfo.categoryList.push(regulations);
931
+ }
932
+ /* Pushing the value of standards Programs into the categoryList array. */
933
+ if (element[27] && typeof element[27] === 'number') {
934
+ const standards = {
935
+ programName: element[23],
936
+ programId: element[27],
937
+ assignee: JSON.parse(element[34]),
938
+ reviewer: JSON.parse(element[35]),
939
+ overseer: JSON.parse(element[36])?.concat(JSON.parse(element[37])),
940
+ programType: 2,
941
+ };
942
+ this.templateInfo.categoryList.push(standards);
943
+ }
944
+ /* Pushing the value of internal Controls Programs into the categoryList array. */
945
+ if (element[28] && typeof element[28] === 'number') {
946
+ const internalControls = {
947
+ programName: element[24],
948
+ programId: element[28],
949
+ assignee: JSON.parse(element[38]),
950
+ reviewer: JSON.parse(element[39]),
951
+ overseer: JSON.parse(element[40])?.concat(JSON.parse(element[41])),
952
+ programType: 3,
953
+ };
954
+ this.templateInfo.categoryList.push(internalControls);
955
+ }
956
+ /* Pushing the value of others Programs into the categoryList array. */
957
+ if (element[29] && typeof element[29] === 'number') {
958
+ const others = {
959
+ programName: element[25],
960
+ programId: element[29],
961
+ assignee: JSON.parse(element[42]),
962
+ reviewer: JSON.parse(element[43]),
963
+ overseer: JSON.parse(element[44])?.concat(JSON.parse(element[45])),
964
+ programType: 0,
965
+ };
966
+ this.templateInfo.categoryList.push(others);
967
+ }
968
+ /* Checking if the element[9] is not null and not empty. If it is not null and not empty, it is
969
+ pushing the element[9] (RC) to the array (rcList). */
970
+ if (element[9] && element[9] != ' ') {
971
+ const rc = {
972
+ name: element[9],
973
+ rc_id: element[10],
974
+ parentIds: JSON.parse(element[11]),
975
+ };
976
+ this.templateInfo.rcList.push(rc);
977
+ }
978
+ /* Checking if the element[2] is not empty and not equal to space. If it is not empty and not
979
+ equal to space, then it is pushing the assignee object to the assigneesList array. */
980
+ if (element[19] && element[19] != ' ') {
981
+ const assignee = {
982
+ nameAndEmail: element[19],
983
+ // name: element[11].split(' (')[0],
984
+ name: element[19],
985
+ email: element[19],
986
+ employee_id: element[20],
987
+ my_member_id: JSON.parse(element[21]),
988
+ };
989
+ this.templateInfo.assigneesList.push(assignee);
990
+ }
991
+ if (element[2] && element[2] != ' ') {
992
+ const reviewer = {
993
+ nameAndEmail: element[2],
994
+ // name: element[11].split(' (')[0],
995
+ name: element[0],
996
+ email: element[1],
997
+ employee_id: element[3],
998
+ my_member_id: element[4],
999
+ };
1000
+ this.templateInfo.reviewerList.push(reviewer);
1001
+ }
1002
+ /* Checking if the element[2] is not empty and not equal to space. If it is not empty and not
1003
+ equal to space, it will create an object and push it to the assignorsList array. */
1004
+ if (element[2] && element[2] != ' ') {
1005
+ const assignor = {
1006
+ nameAndEmail: element[2],
1007
+ name: element[0],
1008
+ email: element[1],
1009
+ // name: element[14].split(' (')[0],
1010
+ // email: element[14].split(' (')[1].replace(')', ''),
1011
+ member_id: element[4],
1012
+ };
1013
+ this.templateInfo.assignorsList.push(assignor);
1014
+ }
1015
+ /* Checking if the 17th element of the array is true. If it is, it is creating an object with the
1016
+ 16th element as the name and the 17th element as the id. */
1017
+ if (element[17]) {
1018
+ const parentResponsibility = {
1019
+ name: element[16],
1020
+ id: JSON.parse(element[17]),
1021
+ };
1022
+ this.templateInfo.parentResponsibility.push(parentResponsibility);
1023
+ }
1024
+ });
1025
+ /* Creating a list of child categories. and push the child categories to their parent program */
1026
+ if (this.templateInfo.categoryList?.length) {
1027
+ this.templateInfo.categoryList?.forEach((category, i) => {
1028
+ let index = tempList[0]?.indexOf(category?.programId);
1029
+ if (index !== -1) {
1030
+ let childCategory = [];
1031
+ /* Creating a list of child categories. */
1032
+ for (let j = 1; true; j++) {
1033
+ if (tempList[j] && tempList[j][index]) {
1034
+ const category = {
1035
+ name: tempList[j][index - 1],
1036
+ id: tempList[j][index],
1037
+ };
1038
+ childCategory.push(category);
1039
+ }
1040
+ else {
1041
+ break;
1042
+ }
1043
+ }
1044
+ this.templateInfo.categoryList[i]['childCategory'] = childCategory;
1045
+ }
1046
+ });
1047
+ }
1048
+ }
1049
+ /**
1050
+ * It takes an event, which is a string, and then it sets the responsibilityBulkUpload variable to
1051
+ * the value of the bulkUpload variable, which is an object, and then it accesses the property of
1052
+ * that object that matches the event string.
1053
+ *
1054
+ * So if the event string is 'frequency', then the responsibilityBulkUpload variable will be set to
1055
+ * the value of the frequency property of the bulkUpload object.
1056
+ *
1057
+ * If the event string is 'ongoing', then the responsibilityBulkUpload variable will be set to the
1058
+ * value of the ongoing property of the bulkUpload object.
1059
+ *
1060
+ * If the event string is 'onCompletion', then the responsibilityBulkUpload variable will be set to the
1061
+ * value of the onCompletion property of the bulkUpload object.
1062
+ *
1063
+ * If the event string is anything else, then the responsibilityBulkUpload variable will be set to
1064
+ * the value of the frequency property of the bulkUpload object.
1065
+ * @param {string} event - string - the event that is emitted from the child component (frequency | ongoing | onCompletion)
1066
+ */
1067
+ selectedTab(event) {
1068
+ this.tabType = event;
1069
+ switch (event) {
1070
+ case 'frequency':
1071
+ this.responsibilityBulkUpload = this.bulkUpload?.frequency;
1072
+ break;
1073
+ case 'ongoing':
1074
+ this.responsibilityBulkUpload = this.bulkUpload?.ongoing;
1075
+ break;
1076
+ case 'onCompletion':
1077
+ this.responsibilityBulkUpload = this.bulkUpload?.onCompletion;
1078
+ break;
1079
+ default:
1080
+ this.responsibilityBulkUpload = this.bulkUpload?.frequency;
1081
+ break;
1082
+ }
1083
+ }
1084
+ /**
1085
+ * It takes in a report, a tab type, and a boolean value. It then returns an object with a bunch of
1086
+ * properties.
1087
+ * </code>
1088
+ * @param {any} report - any =&gt; the array of data
1089
+ * @param {string} tabType - string - this is the type of tab that is selected.
1090
+ * @param {boolean} isProgram - boolean
1091
+ * @returns An object with the following properties:
1092
+ */
1093
+ setReportDetails(report, tabType, isProgram) {
1094
+ let obj;
1095
+ switch (tabType) {
1096
+ case 'frequency': {
1097
+ if (isProgram) {
1098
+ obj = {
1099
+ responsibilityName: report[0],
1100
+ programType: report[1],
1101
+ program: report[2],
1102
+ programCategory: report[3],
1103
+ assignor: report[4],
1104
+ assignee: report[5],
1105
+ assigneeType: report[6],
1106
+ keyResponsibility: report[7],
1107
+ responsibilityCategory: null,
1108
+ frequency: report[8],
1109
+ day: report[9],
1110
+ month: report[10],
1111
+ responsibilityWindow: report[11],
1112
+ failedAfter: report[12],
1113
+ responsibilityCenter: report[13],
1114
+ reportClass: report[14],
1115
+ objective: report[15],
1116
+ notes: report[16],
1117
+ isFormat: report[17],
1118
+ formatForResponsibility: report[18],
1119
+ documentEvidenceRequired: report[19],
1120
+ // evidenceNotes: report[19],
1121
+ // assessments: report[20],
1122
+ reviewer: report[20],
1123
+ reviewToBeCompletedWithin: report[21],
1124
+ reviewWillBeFailedAfter: report[22],
1125
+ overseer: report[23],
1126
+ notifyOnFailure: report[24],
1127
+ };
1128
+ obj['isValidData'] = this.isValidData(obj);
1129
+ obj['isValidUser'] = this.returnIds(obj?.assignee, 'entrusted_to')
1130
+ ? true
1131
+ : false;
1132
+ obj['userValidateWithProgram'] = this.validateDataWithProgram(obj);
1133
+ obj['validDate'] = this.compareWithCurrentDate(obj?.day, obj?.month);
1134
+ obj['isPastDate'] = this.isPastDate(obj?.day, obj?.month);
1135
+ obj['isValid'] =
1136
+ obj['isValidData'] &&
1137
+ obj['validDate'] &&
1138
+ !obj['isPastDate'] &&
1139
+ obj?.frequency?.length &&
1140
+ !Object.values(obj['userValidateWithProgram']).includes(false) &&
1141
+ obj['isValidUser'];
1142
+ return obj;
1143
+ }
1144
+ else {
1145
+ obj = {
1146
+ responsibilityName: report[0],
1147
+ assignor: report[1],
1148
+ assignee: report[2],
1149
+ assigneeType: report[3],
1150
+ keyResponsibility: report[4],
1151
+ responsibilityCategory: null,
1152
+ frequency: report[5],
1153
+ day: report[6],
1154
+ month: report[7],
1155
+ responsibilityWindow: report[8],
1156
+ failedAfter: report[9],
1157
+ responsibilityCenter: report[10],
1158
+ reportClass: report[11],
1159
+ objective: report[12],
1160
+ notes: report[13],
1161
+ isFormat: report[14],
1162
+ formatForResponsibility: report[15],
1163
+ documentEvidenceRequired: report[16],
1164
+ // evidenceNotes: report[16],
1165
+ // assessments: report[17],
1166
+ reviewer: report[17],
1167
+ reviewToBeCompletedWithin: report[18],
1168
+ reviewWillBeFailedAfter: report[19],
1169
+ overseer: report[20],
1170
+ notifyOnFailure: report[21],
1171
+ };
1172
+ obj['isValidData'] = this.isValidData(obj);
1173
+ obj['userValidateWithProgram'] = this.validateDataWithProgram(obj);
1174
+ obj['isValidUser'] = this.returnIds(obj?.assignee, 'entrusted_to')
1175
+ ? true
1176
+ : false;
1177
+ obj['validDate'] = this.compareWithCurrentDate(obj?.day, obj?.month);
1178
+ obj['isPastDate'] = this.isPastDate(obj?.day, obj?.month);
1179
+ obj['isValid'] =
1180
+ obj['isValidData'] &&
1181
+ obj['validDate'] &&
1182
+ !obj['isPastDate'] &&
1183
+ obj?.frequency?.length &&
1184
+ obj['isValidUser'];
1185
+ return obj;
1186
+ }
1187
+ break;
1188
+ }
1189
+ case 'ongoing': {
1190
+ if (isProgram) {
1191
+ obj = {
1192
+ responsibilityName: report[0],
1193
+ programType: report[1],
1194
+ program: report[2],
1195
+ programCategory: report[3],
1196
+ assignor: report[4],
1197
+ assignee: report[5],
1198
+ assigneeType: report[6],
1199
+ keyResponsibility: report[7],
1200
+ responsibilityCategory: null,
1201
+ frequency: report[8],
1202
+ setReminder: report[9],
1203
+ frequencyReminder: report[10],
1204
+ responsibilityCenter: report[11],
1205
+ reportClass: report[12],
1206
+ objective: report[13],
1207
+ notes: report[14],
1208
+ isFormat: report[15],
1209
+ formatForResponsibility: report[16],
1210
+ documentEvidenceRequired: report[17],
1211
+ // evidenceNotes: report[17],
1212
+ // assessments: report[18],
1213
+ reviewer: report[18],
1214
+ reviewToBeCompletedWithin: report[19],
1215
+ reviewWillBeFailedAfter: report[20],
1216
+ overseer: report[21],
1217
+ notifyOnFailure: report[22],
1218
+ };
1219
+ obj['isValidData'] = this.isValidData(obj);
1220
+ obj['userValidateWithProgram'] = this.validateDataWithProgram(obj);
1221
+ obj['isValidUser'] = this.returnIds(obj?.assignee, 'entrusted_to')
1222
+ ? true
1223
+ : false;
1224
+ obj['isValid'] =
1225
+ obj['isValidData'] &&
1226
+ !Object.values(obj['userValidateWithProgram']).includes(false) &&
1227
+ obj['isValidUser'];
1228
+ return obj;
1229
+ }
1230
+ else {
1231
+ obj = {
1232
+ responsibilityName: report[0],
1233
+ assignor: report[1],
1234
+ assignee: report[2],
1235
+ assigneeType: report[3],
1236
+ keyResponsibility: report[4],
1237
+ responsibilityCategory: null,
1238
+ frequency: report[5],
1239
+ setReminder: report[6],
1240
+ frequencyReminder: report[7],
1241
+ responsibilityCenter: report[8],
1242
+ reportClass: report[9],
1243
+ objective: report[10],
1244
+ notes: report[11],
1245
+ isFormat: report[12],
1246
+ formatForResponsibility: report[13],
1247
+ documentEvidenceRequired: report[14],
1248
+ // evidenceNotes: report[14],
1249
+ // assessments: report[15],
1250
+ reviewer: report[15],
1251
+ reviewToBeCompletedWithin: report[16],
1252
+ reviewWillBeFailedAfter: report[17],
1253
+ overseer: report[18],
1254
+ notifyOnFailure: report[19],
1255
+ };
1256
+ obj['isValidData'] = this.isValidData(obj);
1257
+ obj['userValidateWithProgram'] = this.validateDataWithProgram(obj);
1258
+ obj['isValidUser'] = this.returnIds(obj?.assignee, 'entrusted_to')
1259
+ ? true
1260
+ : false;
1261
+ obj['isValid'] = obj['isValidData'] && obj['isValidUser'];
1262
+ return obj;
1263
+ }
1264
+ }
1265
+ case 'onCompletion': {
1266
+ if (isProgram) {
1267
+ obj = {
1268
+ responsibilityName: report[0],
1269
+ programType: report[1],
1270
+ program: report[2],
1271
+ programCategory: report[3],
1272
+ assignor: report[4],
1273
+ assignee: report[5],
1274
+ assigneeType: report[6],
1275
+ keyResponsibility: report[7],
1276
+ responsibilityCategory: null,
1277
+ frequency: report[8],
1278
+ parentResponsibility: report[9],
1279
+ dueDate: report[10],
1280
+ responsibilityWindow: report[11],
1281
+ failedAfter: report[12],
1282
+ responsibilityCenter: report[13],
1283
+ reportClass: report[14],
1284
+ objective: report[15],
1285
+ notes: report[16],
1286
+ isFormat: report[17],
1287
+ formatForResponsibility: report[18],
1288
+ documentEvidenceRequired: report[19],
1289
+ // evidenceNotes: report[19],
1290
+ // assessments: report[20],
1291
+ reviewer: report[20],
1292
+ reviewToBeCompletedWithin: report[21],
1293
+ reviewWillBeFailedAfter: report[22],
1294
+ overseer: report[23],
1295
+ notifyOnFailure: report[24],
1296
+ };
1297
+ obj['isValidData'] = this.isValidData(obj);
1298
+ obj['userValidateWithProgram'] = this.validateDataWithProgram(obj);
1299
+ obj['isValidUser'] = this.returnIds(obj?.assignee, 'entrusted_to')
1300
+ ? true
1301
+ : false;
1302
+ obj['isValid'] =
1303
+ obj['isValidData'] &&
1304
+ !Object.values(obj['userValidateWithProgram']).includes(false) &&
1305
+ obj?.parentResponsibility?.length &&
1306
+ obj['isValidUser'];
1307
+ return obj;
1308
+ }
1309
+ else {
1310
+ obj = {
1311
+ responsibilityName: report[0],
1312
+ assignor: report[1],
1313
+ assignee: report[2],
1314
+ assigneeType: report[3],
1315
+ keyResponsibility: report[4],
1316
+ responsibilityCategory: null,
1317
+ frequency: report[5],
1318
+ parentResponsibility: report[6],
1319
+ dueDate: report[7],
1320
+ responsibilityWindow: report[8],
1321
+ failedAfter: report[9],
1322
+ responsibilityCenter: report[10],
1323
+ reportClass: report[11],
1324
+ objective: report[12],
1325
+ notes: report[13],
1326
+ isFormat: report[14],
1327
+ formatForResponsibility: report[15],
1328
+ documentEvidenceRequired: report[16],
1329
+ // evidenceNotes: report[16],
1330
+ // assessments: report[17],
1331
+ reviewer: report[17],
1332
+ reviewToBeCompletedWithin: report[18],
1333
+ reviewWillBeFailedAfter: report[19],
1334
+ overseer: report[20],
1335
+ notifyOnFailure: report[21],
1336
+ };
1337
+ obj['isValidData'] = this.isValidData(obj);
1338
+ obj['userValidateWithProgram'] = this.validateDataWithProgram(obj);
1339
+ obj['isValidUser'] = this.returnIds(obj?.assignee, 'entrusted_to')
1340
+ ? true
1341
+ : false;
1342
+ obj['isValid'] =
1343
+ obj['isValidData'] &&
1344
+ obj?.parentResponsibility?.length &&
1345
+ obj['isValidUser'];
1346
+ return obj;
1347
+ }
1348
+ }
1349
+ default: {
1350
+ }
1351
+ }
1352
+ }
1353
+ /**
1354
+ * It takes a string, removes all whitespace, and returns the string
1355
+ * @param {any} name - the name of the responsibility
1356
+ * @returns the trimmedName variable.
1357
+ */
1358
+ checkValidResponsibilityName(name) {
1359
+ const re = /&nbsp;|<br>/g;
1360
+ if (name) {
1361
+ var trimmedName = name.toString().replace(re, '').trim();
1362
+ trimmedName = trimmedName.replace(/ +/g, ' ');
1363
+ }
1364
+ return trimmedName;
1365
+ }
1366
+ /**
1367
+ * If the responsibility name is valid, and the assignee and assignor are not empty, then return
1368
+ * true. Otherwise, return false
1369
+ * @param {any} data - any - the data that is being passed in
1370
+ * @returns A boolean value.
1371
+ */
1372
+ isValidData(data) {
1373
+ const responsibility = this.checkValidResponsibilityName(data?.responsibilityName)?.length
1374
+ ? true
1375
+ : false;
1376
+ const assignee = data?.assignee?.length ? true : false;
1377
+ const frequency = data?.frequency?.length ? true : false;
1378
+ if (assignee && responsibility && frequency) {
1379
+ return true;
1380
+ }
1381
+ else {
1382
+ return false;
1383
+ }
1384
+ }
1385
+ /**
1386
+ * If the assignor is the same as the overseer or the NotifyOnFailure, or if the assignor is not set
1387
+ * and the defaultOwner is the same as the overseer or the NotifyOnFailure, or if the assignee is the
1388
+ * same as the reviewer, overseer, or NotifyOnFailure, or if the assignee is not set and the
1389
+ * defaultOwner is the same as the overseer or the NotifyOnFailure, or if the reviewer is the same as
1390
+ * the overseer or the NotifyOnFailure, or if the assignee is not set, then return false. Otherwise,
1391
+ * return true
1392
+ * @param {any} data - any - this is the data that is passed in from the form.
1393
+ * @returns A boolean value.
1394
+ */
1395
+ isValidUsers(data) {
1396
+ if ((data?.assignor &&
1397
+ (data?.assignor == data?.overseer ||
1398
+ data?.assignor == data?.notifyOnFailure)) ||
1399
+ (!data?.assignor &&
1400
+ (this.defaultOwner == data?.overseer ||
1401
+ this.defaultOwner == data?.notifyOnFailure)) ||
1402
+ (data?.assignee &&
1403
+ (data?.assignee == data?.reviewer ||
1404
+ data?.assignee == data?.overseer ||
1405
+ data?.assignee == data?.notifyOnFailure)) ||
1406
+ (!data?.assignee &&
1407
+ (this.defaultOwner == data?.overseer ||
1408
+ this.defaultOwner == data?.notifyOnFailure)) ||
1409
+ (data?.reviewer &&
1410
+ (data?.reviewer == data?.overseer ||
1411
+ data?.reviewer == data?.notifyOnFailure)) ||
1412
+ !data?.assignee) {
1413
+ return false;
1414
+ }
1415
+ else {
1416
+ return true;
1417
+ }
1418
+ }
1419
+ /**
1420
+ * It takes in a data object and returns an object with 4 boolean properties.
1421
+ * The boolean properties are determined by the values of the data object.
1422
+ * @param {any} data - any = {
1423
+ * @returns {
1424
+ * isValidAssignee: true,
1425
+ * isValidAssignor: true,
1426
+ * isValidReviewer: true,
1427
+ * isValidOverseer: true
1428
+ * }
1429
+ */
1430
+ validateDataWithProgram(data) {
1431
+ const program = this.templateInfo?.categoryList?.filter((program) => program?.programName === data?.program);
1432
+ const selectedAssignee = this.templateInfo?.assigneesList?.filter((assignee) => assignee?.nameAndEmail === data?.assignee);
1433
+ const selectedAssignor = this.templateInfo?.assignorsList?.filter((assignor) => assignor?.nameAndEmail === data?.assignor);
1434
+ const selectedReviewer = this.templateInfo?.reviewerList?.filter((reviewer) => reviewer?.nameAndEmail === data?.reviewer);
1435
+ const selectedOverseer = this.templateInfo?.reviewerList?.filter((overseer) => overseer?.nameAndEmail === data?.overseer);
1436
+ const selectedNotifyOnFailure = this.templateInfo?.reviewerList?.filter((notifyOnFailure) => notifyOnFailure?.nameAndEmail === data?.notifyOnFailure);
1437
+ let isValidAssignee = true;
1438
+ let isValidAssignor = true;
1439
+ let isValidReviewer = true;
1440
+ let isValidOverseer = true;
1441
+ let isValidNotifyOnFailure = true;
1442
+ if (program && this.orgDetails?.hasProgramFullPermission) {
1443
+ if (program[0]?.assignee?.length && selectedAssignee?.length) {
1444
+ isValidAssignee = program[0]?.assignee?.includes(selectedAssignee[0]?.my_member_id)
1445
+ ? true
1446
+ : false;
1447
+ }
1448
+ if (program[0]?.reviewer?.length && selectedReviewer?.length) {
1449
+ isValidReviewer = program[0]?.reviewer?.includes(selectedReviewer[0]?.my_member_id)
1450
+ ? true
1451
+ : false;
1452
+ }
1453
+ if (program[0]?.overseer?.length && selectedOverseer?.length) {
1454
+ isValidOverseer = program[0]?.overseer?.includes(selectedOverseer[0]?.my_member_id)
1455
+ ? true
1456
+ : false;
1457
+ }
1458
+ if (program[0]?.overseer?.length && selectedNotifyOnFailure?.length) {
1459
+ isValidNotifyOnFailure = program[0]?.overseer?.includes(selectedNotifyOnFailure[0]?.my_member_id)
1460
+ ? true
1461
+ : false;
1462
+ }
1463
+ }
1464
+ return {
1465
+ isValidAssignee: isValidAssignee,
1466
+ isValidAssignor: isValidAssignor,
1467
+ isValidReviewer: isValidReviewer,
1468
+ isValidOverseer: isValidOverseer,
1469
+ isValidNotifyOnFailure: isValidNotifyOnFailure,
1470
+ };
1471
+ }
1472
+ /**
1473
+ * It takes two strings as arguments, and returns an object with three properties
1474
+ * @param {string} programName - string -&gt; Name of the program
1475
+ * @param {string} [chileProgram] - string =&gt; this is the name of the sub-program
1476
+ * @returns {
1477
+ * programId: 1,
1478
+ * childProgramId: 2,
1479
+ * categoryId: '1,2'
1480
+ * }
1481
+ */
1482
+ getProgramId(programName, chileProgram) {
1483
+ const program = this.templateInfo?.categoryList?.filter((program) => program?.programName === programName);
1484
+ let subProgram;
1485
+ let subProgramId;
1486
+ let categoryId;
1487
+ if (chileProgram?.length && program?.length) {
1488
+ subProgram = program[0]?.childCategory?.filter((subProgram) => subProgram?.name === chileProgram);
1489
+ subProgramId = subProgram?.length ? subProgram[0]?.id : undefined;
1490
+ }
1491
+ if (subProgramId && program?.length) {
1492
+ categoryId =
1493
+ program[0]?.programId?.toString() + ',' + subProgramId?.toString();
1494
+ }
1495
+ else if (program?.length) {
1496
+ categoryId = program[0]?.programId?.toString();
1497
+ }
1498
+ return {
1499
+ programId: program?.length ? program[0]?.programId : undefined,
1500
+ childProgramId: subProgramId,
1501
+ categoryId: categoryId,
1502
+ };
1503
+ }
1504
+ /**
1505
+ * It takes a string as an argument and returns a string.
1506
+ * @param {any} item - this is the name of the group that is selected from the dropdown.
1507
+ * it will return employee id in this form '1234,2345'.
1508
+ */
1509
+ getEmployeeIdFromGroup(item) {
1510
+ let empId = [];
1511
+ let employee_id = [];
1512
+ this.templateInfo?.assigneesList?.forEach((enElement) => {
1513
+ if (enElement?.nameAndEmail == item) {
1514
+ empId = enElement?.my_member_id;
1515
+ }
1516
+ });
1517
+ if (empId?.length) {
1518
+ empId?.forEach((id) => {
1519
+ this.templateInfo?.reviewerList.forEach((user) => {
1520
+ if (user?.my_member_id == id) {
1521
+ employee_id?.push(user?.employee_id);
1522
+ }
1523
+ });
1524
+ });
1525
+ }
1526
+ return employee_id?.toString();
1527
+ }
1528
+ /**
1529
+ * If the item is a group, return true, otherwise return false.
1530
+ * @param {any} item - any - the item that is being checked
1531
+ */
1532
+ isGroupSelected(item) {
1533
+ let isGroup = false;
1534
+ this.templateInfo.assigneesList.forEach((enElement) => {
1535
+ if (enElement.nameAndEmail == item &&
1536
+ (item?.includes('Users)') || item?.includes('User)')) &&
1537
+ typeof enElement?.my_member_id == 'object') {
1538
+ isGroup = true;
1539
+ }
1540
+ });
1541
+ return isGroup;
1542
+ }
1543
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AddMultipleResponsibilityWithTabComponent, deps: [{ token: i1.AddRiskService }, { token: i2.ResponsibilityService }, { token: i3.AuthService }, { token: i4.FrequencyBulkService }, { token: i5.SnackBarService }], target: i0.ɵɵFactoryTarget.Component }); }
1544
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AddMultipleResponsibilityWithTabComponent, selector: "lib-add-multiple-responsibility-with-tab", inputs: { uploadedFileData: ["uploadedFile", "uploadedFileData"], orgDetails: "orgDetails", feature: "feature", featureflag: "featureflag" }, outputs: { pickerChanged: "pickerChanged", populateOption: "populateOption", closeWorkflow: "closeWorkflow", disconnectRefresh: "disconnectRefresh", closeAddMultipleResponsibility: "closeAddMultipleResponsibility" }, usesOnChanges: true, ngImport: i0, template: "<!-- <div class=\"add-multiple-risk\" [attr.id]=\"'scrollReference'\" >\r\n <!- - main container starts here - ->\r\n <div class=\"add-multiple-risk-body\">\r\n <div class=\"add-multiple-risk-container\">\r\n <div class=\"image\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/spreadsheet-multiple-category.svg\" alt=\"\" />\r\n </div>\r\n <h4>You can entrust multiple responsibilities in just two easy steps:</h4>\r\n <ul class=\"list\">\r\n <li>Download the template and fill in the details.</li>\r\n <li>Upload the .xlsx file and you\u2019re good to go!</li>\r\n </ul>\r\n\r\n <button class=\"download\" *ngIf=\"downloadStatus === 'NOT_DOWNLOADING'\"\r\n (click)=\"downloadTemplate()\" type=\"button\"><i class=\"icons\">&#xe91b;</i> Download Template</button>\r\n <div class=\"bulk-btn-progress\" *ngIf=\"downloadStatus === 'DOWNLOADING'\">\r\n Download in Progress\r\n <app-line-loader [loaderHeight]=\"'2'\"></app-line-loader>\r\n </div>\r\n <ng-container *ngIf=\"downloadStatus === 'DOWNLOADED'\">\r\n <div class=\"bulk-btn-progress\"><i class=\"icons\">&#xe91c;</i>Download Complete</div>\r\n <div class=\"bulk-btn-again\">\r\n Is the file not downloaded?\r\n <button (click)=\"downloadTemplate()\">Retry Download</button>\r\n </div>\r\n </ng-container>\r\n <p class=\"error-message\" *ngIf=\"isWrongFile || isWrongFormat|| isFileEmpty\"\r\n >{{errorMessage}}</p> \r\n </div>\r\n </div>\r\n</div> -->\r\n<app-bulk-responsibility-view *ngIf=\"showExcel\"\r\n [responsibilityBulkUpload]=\"responsibilityBulkUpload\"\r\n [bulkUpload]=\"bulkUpload\"\r\n [fileName]=\"fileName\"\r\n [loader]=\"loader\"\r\n [defaultOwner]=\"defaultOwner\"\r\n [tabType]=\"tabType\"\r\n [bulkUpload]=\"bulkUpload\"\r\n (submitResponsibilityBulkUpload)=\"submitResponsibilityBulkUpload()\"\r\n (selectedTab)=\"selectedTab($event)\"\r\n (cancel)=\"reset()\"\r\n [responsibilityType]=\"'multiTab'\">\r\n</app-bulk-responsibility-view>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<input type=\"file\" [(ngModel)]=\"fileValue\" id=\"fileInput\" class=\"hidden-input\" accept=\".xlsx\" (change)=\"uploadedFile($event)\" multiple />\r\n<app-smiley-dialog-inline *ngIf=\"showSmiley\" [message]=\"smileyMessage\" [actionButtons]=\"actionButtons\" (action)=\"action($event)\" (closeSmiley)=\"closeSmiley($event)\"></app-smiley-dialog-inline>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .add-multiple-risk{background:#fff;position:relative;z-index:1}@media only screen and (min-width: 1920px){::ng-deep .add-multiple-risk{height:calc(100vh - 200px);display:flex;align-items:center}}::ng-deep .add-multiple-risk-body{padding:0;display:block}::ng-deep .add-multiple-risk-container{display:block;text-align:center}::ng-deep .add-multiple-risk-container .image{width:300px;margin:0 auto 24px}::ng-deep .add-multiple-risk-container h4{font-size:20px;line-height:30px;margin:0 0 20px;font-weight:500}::ng-deep .add-multiple-risk-container ul.list{padding:0;margin:0 0 40px;display:block;counter-reset:my-awesome-counter}::ng-deep .add-multiple-risk-container ul.list li{text-align:left;color:#747576;font-size:15px;line-height:38px;font-weight:400;list-style:none;counter-increment:my-awesome-counter;background:#fbfbfb;border:1px solid #F1F1F1;border-radius:4px;padding:0 12px}::ng-deep .add-multiple-risk-container ul.list li:before{content:counter(my-awesome-counter) \". \"}::ng-deep .add-multiple-risk-container ul.list li+li{margin-top:4px}::ng-deep .add-multiple-risk-container button.download{background:#fff;height:36px;border-radius:2px;cursor:pointer;border:1px solid #1e5dd3;color:#1e5dd3;text-transform:uppercase;padding:0 30px;font-weight:500;font-size:11px}::ng-deep .add-multiple-risk-container .bulk-btn-progress{background:#f8f8f8;height:36px;border-radius:2px;cursor:pointer;border:1px solid #f8f8f8;color:#747576;text-transform:uppercase;padding:0 30px;font-weight:500;font-size:11px;position:relative;display:inline-block;line-height:34px}::ng-deep .add-multiple-risk-container .bulk-btn-progress i{color:#34aa44;font-size:14px;float:left;position:relative;margin:0 10px 0 0;font-weight:400}::ng-deep .add-multiple-risk-container .bulk-btn-progress span.progress{height:3px;position:absolute;bottom:0;left:0;width:100%;background:#1e5dd3}::ng-deep .add-multiple-risk-container .bulk-btn-again{color:#161b2f;font-size:11px;margin-top:10px}::ng-deep .add-multiple-risk-container .bulk-btn-again button{background:transparent;border:none;padding:0;font-size:11px;color:#1e5dd3;font-weight:500;text-decoration:underline;cursor:pointer;text-transform:uppercase;display:inline-block}.hidden-input{opacity:0}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer .chipName.full-width{max-width:25rem}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#fff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#fff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#fff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#fff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item .info.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:212px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#fff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#fff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0% 1%,#747576 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#fff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0% 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"], dependencies: [{ kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i9.SmileyDialogInlineComponent, selector: "app-smiley-dialog-inline", inputs: ["message", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "component", type: i10.BulkResponsibilityViewComponent, selector: "app-bulk-responsibility-view", inputs: ["responsibilityBulkUpload", "fileName", "defaultOwner", "loader", "tabType", "bulkUpload", "responsibilityType"], outputs: ["submitResponsibilityBulkUpload", "cancel", "selectedTab"] }] }); }
1545
+ }
1546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AddMultipleResponsibilityWithTabComponent, decorators: [{
1547
+ type: Component,
1548
+ args: [{ selector: 'lib-add-multiple-responsibility-with-tab', template: "<!-- <div class=\"add-multiple-risk\" [attr.id]=\"'scrollReference'\" >\r\n <!- - main container starts here - ->\r\n <div class=\"add-multiple-risk-body\">\r\n <div class=\"add-multiple-risk-container\">\r\n <div class=\"image\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/spreadsheet-multiple-category.svg\" alt=\"\" />\r\n </div>\r\n <h4>You can entrust multiple responsibilities in just two easy steps:</h4>\r\n <ul class=\"list\">\r\n <li>Download the template and fill in the details.</li>\r\n <li>Upload the .xlsx file and you\u2019re good to go!</li>\r\n </ul>\r\n\r\n <button class=\"download\" *ngIf=\"downloadStatus === 'NOT_DOWNLOADING'\"\r\n (click)=\"downloadTemplate()\" type=\"button\"><i class=\"icons\">&#xe91b;</i> Download Template</button>\r\n <div class=\"bulk-btn-progress\" *ngIf=\"downloadStatus === 'DOWNLOADING'\">\r\n Download in Progress\r\n <app-line-loader [loaderHeight]=\"'2'\"></app-line-loader>\r\n </div>\r\n <ng-container *ngIf=\"downloadStatus === 'DOWNLOADED'\">\r\n <div class=\"bulk-btn-progress\"><i class=\"icons\">&#xe91c;</i>Download Complete</div>\r\n <div class=\"bulk-btn-again\">\r\n Is the file not downloaded?\r\n <button (click)=\"downloadTemplate()\">Retry Download</button>\r\n </div>\r\n </ng-container>\r\n <p class=\"error-message\" *ngIf=\"isWrongFile || isWrongFormat|| isFileEmpty\"\r\n >{{errorMessage}}</p> \r\n </div>\r\n </div>\r\n</div> -->\r\n<app-bulk-responsibility-view *ngIf=\"showExcel\"\r\n [responsibilityBulkUpload]=\"responsibilityBulkUpload\"\r\n [bulkUpload]=\"bulkUpload\"\r\n [fileName]=\"fileName\"\r\n [loader]=\"loader\"\r\n [defaultOwner]=\"defaultOwner\"\r\n [tabType]=\"tabType\"\r\n [bulkUpload]=\"bulkUpload\"\r\n (submitResponsibilityBulkUpload)=\"submitResponsibilityBulkUpload()\"\r\n (selectedTab)=\"selectedTab($event)\"\r\n (cancel)=\"reset()\"\r\n [responsibilityType]=\"'multiTab'\">\r\n</app-bulk-responsibility-view>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n\r\n<input type=\"file\" [(ngModel)]=\"fileValue\" id=\"fileInput\" class=\"hidden-input\" accept=\".xlsx\" (change)=\"uploadedFile($event)\" multiple />\r\n<app-smiley-dialog-inline *ngIf=\"showSmiley\" [message]=\"smileyMessage\" [actionButtons]=\"actionButtons\" (action)=\"action($event)\" (closeSmiley)=\"closeSmiley($event)\"></app-smiley-dialog-inline>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .add-multiple-risk{background:#fff;position:relative;z-index:1}@media only screen and (min-width: 1920px){::ng-deep .add-multiple-risk{height:calc(100vh - 200px);display:flex;align-items:center}}::ng-deep .add-multiple-risk-body{padding:0;display:block}::ng-deep .add-multiple-risk-container{display:block;text-align:center}::ng-deep .add-multiple-risk-container .image{width:300px;margin:0 auto 24px}::ng-deep .add-multiple-risk-container h4{font-size:20px;line-height:30px;margin:0 0 20px;font-weight:500}::ng-deep .add-multiple-risk-container ul.list{padding:0;margin:0 0 40px;display:block;counter-reset:my-awesome-counter}::ng-deep .add-multiple-risk-container ul.list li{text-align:left;color:#747576;font-size:15px;line-height:38px;font-weight:400;list-style:none;counter-increment:my-awesome-counter;background:#fbfbfb;border:1px solid #F1F1F1;border-radius:4px;padding:0 12px}::ng-deep .add-multiple-risk-container ul.list li:before{content:counter(my-awesome-counter) \". \"}::ng-deep .add-multiple-risk-container ul.list li+li{margin-top:4px}::ng-deep .add-multiple-risk-container button.download{background:#fff;height:36px;border-radius:2px;cursor:pointer;border:1px solid #1e5dd3;color:#1e5dd3;text-transform:uppercase;padding:0 30px;font-weight:500;font-size:11px}::ng-deep .add-multiple-risk-container .bulk-btn-progress{background:#f8f8f8;height:36px;border-radius:2px;cursor:pointer;border:1px solid #f8f8f8;color:#747576;text-transform:uppercase;padding:0 30px;font-weight:500;font-size:11px;position:relative;display:inline-block;line-height:34px}::ng-deep .add-multiple-risk-container .bulk-btn-progress i{color:#34aa44;font-size:14px;float:left;position:relative;margin:0 10px 0 0;font-weight:400}::ng-deep .add-multiple-risk-container .bulk-btn-progress span.progress{height:3px;position:absolute;bottom:0;left:0;width:100%;background:#1e5dd3}::ng-deep .add-multiple-risk-container .bulk-btn-again{color:#161b2f;font-size:11px;margin-top:10px}::ng-deep .add-multiple-risk-container .bulk-btn-again button{background:transparent;border:none;padding:0;font-size:11px;color:#1e5dd3;font-weight:500;text-decoration:underline;cursor:pointer;text-transform:uppercase;display:inline-block}.hidden-input{opacity:0}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer .chipName.full-width{max-width:25rem}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#fff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#fff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#fff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group vcomply-editor{margin-top:8px;display:block}::ng-deep .vx-form-group vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#fff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item .info.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:212px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#fff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#fff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0% 1%,#747576 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#fff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0% 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"] }]
1549
+ }], ctorParameters: function () { return [{ type: i1.AddRiskService }, { type: i2.ResponsibilityService }, { type: i3.AuthService }, { type: i4.FrequencyBulkService }, { type: i5.SnackBarService }]; }, propDecorators: { pickerChanged: [{
1550
+ type: Output
1551
+ }], populateOption: [{
1552
+ type: Output
1553
+ }], closeWorkflow: [{
1554
+ type: Output
1555
+ }], disconnectRefresh: [{
1556
+ type: Output
1557
+ }], closeAddMultipleResponsibility: [{
1558
+ type: Output
1559
+ }], uploadedFileData: [{
1560
+ type: Input,
1561
+ args: ['uploadedFile']
1562
+ }], orgDetails: [{
1563
+ type: Input
1564
+ }], feature: [{
1565
+ type: Input
1566
+ }], featureflag: [{
1567
+ type: Input
1568
+ }] } });
1569
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktd2l0aC10YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUliLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFpQjdCLE1BQU0sT0FBTyx5Q0FBeUM7SUFzQnBELElBQTJCLGdCQUFnQixDQUFDLElBQVM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBdUZELFlBQ1UsV0FBMkIsRUFDM0IscUJBQTRDLEVBQzVDLFdBQXdCLEVBQ3hCLGdCQUFzQyxFQUN0QyxRQUF5QjtRQUp6QixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGFBQVEsR0FB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QU8sRUFBRTtZQUM5RCxJQUNFLFNBQVMsQ0FBQyxZQUFZLElBQUksSUFBSTtnQkFDOUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELE9BQU8sU0FBUyxFQUFFLFlBQVksSUFBSSxRQUFRLEVBQzFDO2dCQUNBLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDaEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7K0dBbnFEVSx5Q0FBeUM7bUdBQXpDLHlDQUF5Qyw0Y0M3QnRELCtxRkErQ2dNOzs0RkRsQm5MLHlDQUF5QztrQkFSckQsU0FBUzsrQkFDRSwwQ0FBMEM7b09BUTFDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBZ0JvQixnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsY0FBYztnQkFHWixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFrRkcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRSaXNrU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2FkZC1yaXNrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcclxuXHJcbnR5cGUgQU9BID0gYW55W11bXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktd2l0aC10YWIuY29tcG9uZW50Lmxlc3MnLFxyXG4gICAgJy4uL2Zvcm1zLmxlc3MnLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5V2l0aFRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBpc05vdGlmaWNhdGlvblBlbmRpbmcgPSAwO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcXVlcnlQYXJhbTogc3RyaW5nID0gJyc7XHJcbiAgcmVjZW50UmVzcG9uc2liaWxpdHlVcmw6IGFueSA9IHtcclxuICAgIGJ5UmVzcG9uc2liaWxpdGllczogeyB0eXBlOiBbJ3JlY2VudF9yZXNwb25zaWJpbGl0aWVzJ10sIHN1YlR5cGU6IFsnQ0MnXSB9LFxyXG4gICAgYnlTdGF0dXM6IHsgdHlwZTogW10sIHN1YlR5cGU6IFtdIH0sXHJcbiAgICBmaWx0ZXJPYmplY3Q6IHtcclxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxyXG4gICAgICBlbnRydXN0ZWRCeTogW10sXHJcbiAgICAgIGVudHJ1c3RlZFRvOiBbXSxcclxuICAgICAgcmlza0lkczogW10sXHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxyXG4gICAgfSxcclxuICAgIHRpbWVQZXJpb2REZXRhaWxzOiB7IHR5cGU6ICcnLCBzZWxlY3RlZFBlcmlvZDogJycsIHNlbGVjdGVkWWVhcjogJycgfSxcclxuICAgIHN0YXR1czogJycsXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCd1cGxvYWRlZEZpbGUnKSBzZXQgdXBsb2FkZWRGaWxlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlKGRhdGEpO1xyXG4gIH1cclxuICBASW5wdXQoKSBvcmdEZXRhaWxzITogYW55O1xyXG4gIEBJbnB1dCgpIGZlYXR1cmUhOiBhbnk7XHJcblxyXG4gIHVybCA9XHJcbiAgICAncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSc7XHJcbiAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkOiBhbnkgPSB7XHJcbiAgICBoZWFkZXI6IFtdLFxyXG4gICAgcmVwb3J0czogW10sXHJcbiAgfTtcclxuICB0YWJUeXBlOiAnZnJlcXVlbmN5JyB8ICdvbmdvaW5nJyB8ICdvbkNvbXBsZXRpb24nID0gJ2ZyZXF1ZW5jeSc7XHJcbiAgdGFiSW5kZXg6IGFueSA9IHtcclxuICAgIGZyZXF1ZW5jeTogMCxcclxuICAgIG9uZ29pbmc6IDEsXHJcbiAgICBvbkNvbXBsZXRpb246IDIsXHJcbiAgfTtcclxuXHJcbiAgYnVsa1VwbG9hZDogYW55ID0ge1xyXG4gICAgZnJlcXVlbmN5OiB7XHJcbiAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICByZXBvcnRzOiBbXSxcclxuICAgIH0sXHJcbiAgICBvbmdvaW5nOiB7XHJcbiAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICByZXBvcnRzOiBbXSxcclxuICAgIH0sXHJcbiAgICBvbkNvbXBsZXRpb246IHtcclxuICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgc3ViSGVhZGluZzogW10sXHJcbiAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICB0ZW1wbGF0ZUluZm86IGFueSA9IHtcclxuICAgIGNhdGVnb3J5TGlzdDogW10sXHJcbiAgICByY0xpc3Q6IFtdLFxyXG4gICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICBhc3NpZ25lZXNMaXN0OiBbXSxcclxuICAgIHJldmlld2VyTGlzdDogW10sXHJcbiAgICBwYXJlbnRSZXNwb25zaWJpbGl0eTogW10sXHJcbiAgICBtZW1iZXJJZDogJycsXHJcbiAgfTtcclxuICBpc0xvYWRlciA9IGZhbHNlO1xyXG4gIHNob3dDYXRlZ29yeUxpc3QgPSBmYWxzZTtcclxuICB0ZW1wbGF0ZURvd25sb2FkZWQgPSBmYWxzZTtcclxuICBkb3dubG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gIGlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gIGZpbGVOYW1lOiBhbnk7XHJcbiAgZGF0YTogYW55O1xyXG4gIHNob3dFeGNlbCA9IGZhbHNlO1xyXG4gIHVwbG9hZGVkRmlsZXM6IGFueSA9IFtdO1xyXG4gIGZpbGVSZXNwb25zZTogYW55ID0gW107XHJcbiAgZmlsZVZhbHVlOiBhbnk7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIG9yZ2FuaXphdGlvbklkID0gMDtcclxuICBlcnJvck1lc3NhZ2UgPSAnIGludmFsaWQgZmlsZSBlcnJvcic7XHJcbiAgZG93bmxvYWRTdGF0dXM6IHN0cmluZyA9ICdOT1RfRE9XTkxPQURJTkcnO1xyXG4gIGRvd25sb2FkUGVyY2VudCA9IDA7XHJcbiAgZGVmYXVsdE93bmVyID0gJyc7XHJcbiAgc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCEgV2UncmUgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QgYW5kIHlvdSB3aWxsIGJlIG5vdGlmaWVkIHZpYSBlbWFpbCB1cG9uIGNvbXBsZXRpb24uYDtcclxuICBhY3Rpb25CdXR0b25zID0gW1xyXG4gICAge1xyXG4gICAgICBidXR0b25UZXh0OiAnRW50cnVzdCBNb3JlIFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICBjbGFzczogJ3doaXRlLWJ0bicsXHJcbiAgICAgIGlkOiAnYWRkTW9yZScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBidXR0b25UZXh0OiB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZ1xyXG4gICAgICAgID8gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyBJbiBRdWV1ZSdcclxuICAgICAgICA6ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICBjbGFzczogJ2JsdWUtYnRuJyxcclxuICAgICAgaWQ6ICd2aWV3JyxcclxuICAgIH0sXHJcbiAgXTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgbWVtYmVyX29ial9pZCA9ICcnO1xyXG4gIHJpc2tDbGFzc0VuYWJsZWQ6IGFueTtcclxuICB1c2VySW5mbyE6IGFueTtcclxuICByZXNwb25zaWJpbGl0eURhdGEhOiBhbnk7XHJcbiAgQElucHV0KCkgZmVhdHVyZWZsYWc6IGFueTtcclxuICBmZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJpc2tTZXJ2aWNlOiBBZGRSaXNrU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5QnVsa1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHt9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS5faWQ7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI7XHJcbiAgICB0aGlzLmRlZmF1bHRPd25lciA9IHRoaXMudXNlckluZm9cclxuICAgICAgPyB0aGlzLnVzZXJJbmZvLm5hbWUgKyAnICgnICsgdGhpcy51c2VySW5mby5lbWFpbCArICcpJ1xyXG4gICAgICA6ICcnO1xyXG4gICAgdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25EZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJpc2tDbGFzc0VuYWJsZWQgPSByZXMuZW5hYmxlX3Jpc2tjbGFzcztcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb24gPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcclxuICAgICAgJ2ZmX2J1bGtfdXBsb2FkX29wdGltaXphdGlvbidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0cmlnZ2VyQnJvd3NlRmlsZSgpIHtcclxuICAgIGNvbnN0IGdldEZpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0Jyk7XHJcbiAgICBpZiAoZ2V0RmlsZSkge1xyXG4gICAgICBnZXRGaWxlLmNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFVzZXJEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgPSByZXMubm90aWZpY2F0aW9uX3BlbmRpbmdfZmxhZztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkZWRGaWxlKGV2ZW50OiBhbnksIHRhYlR5cGU/OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0ge1xyXG4gICAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgICAgcmVwb3J0czogW10sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgICAgIHJjTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICAgICAgcmV2aWV3ZXJMaXN0OiBbXSxcclxuICAgICAgICBwYXJlbnRSZXNwb25zaWJpbGl0eTogW10sXHJcbiAgICAgICAgbWVtYmVySWQ6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcclxuICAgICAgY29uc3QgcmVmZXJlbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Njcm9sbFJlZmVyZW5jZScpO1xyXG4gICAgICBpZiAocmVmZXJlbmNlKSB7XHJcbiAgICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbGVOYW1lID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLm5hbWU7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGV2ZW50LnRhcmdldC5maWxlcyk7XHJcbiAgICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gZXZlbnQudGFyZ2V0IGFzIERhdGFUcmFuc2ZlcjtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjdXJseVxyXG4gICAgICBpZiAodGFyZ2V0LmZpbGVzLmxlbmd0aCAhPT0gMSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKTtcclxuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMV07XHJcbiAgICAgICAgY29uc3Qgc2hlZXQyOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzJdO1xyXG4gICAgICAgIGNvbnN0IHNoZWV0Mzogc3RyaW5nID0gd2IuU2hlZXROYW1lc1szXTtcclxuICAgICAgICBjb25zdCB3c25hbWUxOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzRdO1xyXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG4gICAgICAgIGNvbnN0IHNoZWV0UmVwb3J0MjogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbc2hlZXQyXTtcclxuICAgICAgICBjb25zdCBzaGVldFJlcG9ydDM6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3NoZWV0M107XHJcbiAgICAgICAgY29uc3QgdGVtcERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZTFdO1xyXG4gICAgICAgIGNvbnN0IHREYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHRlbXBEYXRhLCB7IGhlYWRlcjogMSB9KSBhcyBBT0E7XHJcbiAgICAgICAgY29uc3QgdGVtcExpc3QgPSB0RGF0YS5maWx0ZXIoXHJcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zZXRPcmdhbml6YXRpb25EZXRhaWxzKHRlbXBMaXN0KTtcclxuICAgICAgICB3Yi5TaGVldE5hbWVzLmZvckVhY2goKHNoZWV0OiBhbnkpID0+IHtcclxuICAgICAgICAgIHN3aXRjaCAoc2hlZXQ/LnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY2FzZSAnZnJlcXVlbmN5IHJlc3BvbnNpYmlsaXRpZXMnOlxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUZvckRpZmZlcmVudFRhYnMod3MsIHNoZWV0KTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnb25nb2luZyByZXNwb25zaWJpbGl0aWVzJzpcclxuICAgICAgICAgICAgICB0aGlzLnNldERhdGFGb3JEaWZmZXJlbnRUYWJzKHNoZWV0UmVwb3J0Miwgc2hlZXQpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdvbiBjb21wbGV0aW9uIHJlc3BvbnNpYmlsaXRpZXMnOlxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUZvckRpZmZlcmVudFRhYnMoc2hlZXRSZXBvcnQzLCBzaGVldCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcodGFyZ2V0LmZpbGVzWzBdKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgd29ya3NoZWV0IGFuZCBhIHNoZWV0IG5hbWUsIGFuZCB0aGVuIGl0IHNldHMgdGhlIGRhdGEgZm9yIGRpZmZlcmVudCB0YWJzLlxyXG4gICAqIEBwYXJhbSB3cyAtIFhMU1guV29ya1NoZWV0LCBzaGVldDogc3RyaW5nXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNoZWV0IC0gc3RyaW5nIC0gdGhlIG5hbWUgb2YgdGhlIHNoZWV0IGluIHRoZSBleGNlbCBmaWxlXHJcbiAgICogQHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBcInJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZFwiIHdoaWNoIGlzIGFuIG9iamVjdC5cclxuICAgKi9cclxuICBzZXREYXRhRm9yRGlmZmVyZW50VGFicyh3czogWExTWC5Xb3JrU2hlZXQsIHNoZWV0OiBzdHJpbmcpIHtcclxuICAgIGxldCByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ6IGFueSA9IHtcclxuICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgcmVwb3J0czogW10sXHJcbiAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgfTtcclxuICAgIGxldCBzaGVldFZhbHVlID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7XHJcbiAgICAgIGhlYWRlcjogMSxcclxuICAgICAgcmF3OiBmYWxzZSxcclxuICAgIH0pIGFzIEFPQTtcclxuICAgIGxldCBkYXRhID0gc2hlZXRWYWx1ZS5maWx0ZXIoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGxldCBpc1VuZGVmaW5lZCA9ICcnO1xyXG4gICAgICByZXMuZm9yRWFjaCgoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgIGlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQgKyBlbDtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChzaGVldFZhbHVlWzJdICYmIHNoZWV0VmFsdWVbMl1bMV0gPT09ICdQcm9ncmFtJykge1xyXG4gICAgICAgIHJldHVybiAhKHJlcz8ubGVuZ3RoID09PSA5ICYmIHJlc1s4XSA9PT0gJycgJiYgIWlzVW5kZWZpbmVkLmxlbmd0aCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICEocmVzPy5sZW5ndGggPT09IDYgJiYgcmVzWzVdID09PSAnJyAmJiAhaXNVbmRlZmluZWQubGVuZ3RoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XHJcbiAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xyXG4gICAgICAgICcgUkVUUlknO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIgPSBjbG9uZURlZXAoZGF0YVsyXSk7XHJcbiAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuc3ViSGVhZGluZyA9IGNsb25lRGVlcChkYXRhWzNdKTtcclxuXHJcbiAgICBkYXRhID0gZGF0YS5zbGljZSg1KTtcclxuICAgIGlmICh0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQpIHtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxyXG4gICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAnIFJFVFJZJztcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eURhdGEgPSBkYXRhLmZpbHRlcihcclxuICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcclxuICAgICk7XHJcbiAgICByZXNwb25zaWJpbGl0eURhdGEuZm9yRWFjaCgocmVwb3J0OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHZhbGlkRGF0ZTtcclxuICAgICAgY29uc3QgdmFsaWRVc2VyID0gdGhpcy5yZXR1cm5JZHMocmVwb3J0WzJdLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICA/IHRydWVcclxuICAgICAgICA6IGZhbHNlO1xyXG4gICAgICBpZiAocmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclsxXSA9PT0gJ1Byb2dyYW0nKSB7XHJcbiAgICAgICAgdmFsaWREYXRlID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWxpZERhdGUgPSB0aGlzLmNvbXBhcmVXaXRoQ3VycmVudERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8qIFB1c2hpbmcgdGhlIHJlcG9ydCBkZXRhaWxzIGludG8gdGhlIGJ1bGtVcGxvYWQgb2JqZWN0IGFzIHBlciB0YWIgdGFicyAqL1xyXG4gICAgICBpZiAoc2hlZXQ/LnRvTG93ZXJDYXNlKCkgPT09ICdmcmVxdWVuY3kgcmVzcG9uc2liaWxpdGllcycpIHtcclxuICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQucmVwb3J0cy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5zZXRSZXBvcnREZXRhaWxzKFxyXG4gICAgICAgICAgICByZXBvcnQsXHJcbiAgICAgICAgICAgICdmcmVxdWVuY3knLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzFdID09PSAnUHJvZ3JhbScgPyB0cnVlIDogZmFsc2VcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5mcmVxdWVuY3kuaGVhZGVyID0gcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5oZWFkZXI7XHJcbiAgICAgICAgdGhpcy5idWxrVXBsb2FkLmZyZXF1ZW5jeS5zdWJIZWFkaW5nID1cclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uc3ViSGVhZGluZztcclxuICAgICAgICB0aGlzLmJ1bGtVcGxvYWQuZnJlcXVlbmN5LnJlcG9ydHMgPSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNoZWV0Py50b0xvd2VyQ2FzZSgpID09PSAnb25nb2luZyByZXNwb25zaWJpbGl0aWVzJykge1xyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5yZXBvcnRzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnNldFJlcG9ydERldGFpbHMoXHJcbiAgICAgICAgICAgIHJlcG9ydCxcclxuICAgICAgICAgICAgJ29uZ29pbmcnLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzFdID09PSAnUHJvZ3JhbScgPyB0cnVlIDogZmFsc2VcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbmdvaW5nLmhlYWRlciA9IHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uaGVhZGVyO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbmdvaW5nLnN1YkhlYWRpbmcgPVxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zdWJIZWFkaW5nO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbmdvaW5nLnJlcG9ydHMgPSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNoZWV0Py50b0xvd2VyQ2FzZSgpID09PSAnb24gY29tcGxldGlvbiByZXNwb25zaWJpbGl0aWVzJykge1xyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5yZXBvcnRzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnNldFJlcG9ydERldGFpbHMoXHJcbiAgICAgICAgICAgIHJlcG9ydCxcclxuICAgICAgICAgICAgJ29uQ29tcGxldGlvbicsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbMV0gPT09ICdQcm9ncmFtJyA/IHRydWUgOiBmYWxzZVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5idWxrVXBsb2FkLm9uQ29tcGxldGlvbi5oZWFkZXIgPSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LmhlYWRlcjtcclxuICAgICAgICB0aGlzLmJ1bGtVcGxvYWQub25Db21wbGV0aW9uLnN1YkhlYWRpbmcgPVxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zdWJIZWFkaW5nO1xyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZC5vbkNvbXBsZXRpb24ucmVwb3J0cyA9XHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnJlcG9ydHM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmNoZWNrRW1wdHlGaWxlKGRhdGEpO1xyXG4gICAgLyogQ2hlY2tpbmcgaWYgdGhlIGZpbGUgaXMgZW1wdHksIGlmIGl0IGlzIGVtcHR5IGl0IHdpbGwgcmV0dXJuIGFuIGVycm9yIG1lc3NhZ2UuIElmIGl0IGlzIG5vdFxyXG4gICAgZW1wdHkgaXQgd2lsbCBjaGVjayBpZiB0aGUgZmlsZSBpcyB0aGUgY29ycmVjdCBmaWxlLCBpZiBpdCBpcyBub3QgdGhlIGNvcnJlY3QgZmlsZSBpdCB3aWxsXHJcbiAgICByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4gSWYgaXQgaXMgdGhlIGNvcnJlY3QgZmlsZSBpdCB3aWxsIGNhbGwgdGhlIGZpbGVVcGxvYWQoKSBmdW5jdGlvbi4gKi9cclxuICAgIGlmIChpc0VtcHR5KSB7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAnWW91IGhhdmUgdXBsb2FkZWQgYSBibGFuayB0ZW1wbGF0ZS4gUGxlYXNlIGFkZCBkZXRhaWxzIGZvciBhbGwgbWFuZGF0b3J5IGZpZWxkcy4gUkVUUlknO1xyXG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5idWxrVXBsb2FkPy5mcmVxdWVuY3k/LmhlYWRlclswXSAhPT0gJ1Jlc3BvbnNpYmlsaXR5IE5hbWUqJyAmJlxyXG4gICAgICB0aGlzLmJ1bGtVcGxvYWQ/Lm9uZ29pbmc/LmhlYWRlclswXSAhPT0gJ1Jlc3BvbnNpYmlsaXR5IE5hbWUqJyAmJlxyXG4gICAgICB0aGlzLmJ1bGtVcGxvYWQ/Lm9uQ29tcGxldGlvbj8uaGVhZGVyWzBdICE9PSAnUmVzcG9uc2liaWxpdHkgTmFtZSonXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxyXG4gICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcclxuICAgICAgICAnIFJFVFJZJztcclxuICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RXhjZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5maWxlVmFsdWUgPSAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBidWxrVXBsb2FkIG9iamVjdCBoYXMgYSBmcmVxdWVuY3kgb2JqZWN0IHdpdGggYSByZXBvcnRzIGFycmF5LCBzZXQgdGhlXHJcbiAgICogcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHRvIHRoZSBmcmVxdWVuY3kgb2JqZWN0IGFuZCBzZXQgdGhlIHRhYlR5cGUgdG8gZnJlcXVlbmN5LiBJZiBub3QsIGNoZWNrXHJcbiAgICogaWYgdGhlIGJ1bGtVcGxvYWQgb2JqZWN0IGhhcyBhbiBvbmdvaW5nIG9iamVjdCB3aXRoIGEgcmVwb3J0cyBhcnJheSwgc2V0IHRoZVxyXG4gICAqIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCB0byB0aGUgb25nb2luZyBvYmplY3QgYW5kIHNldCB0aGUgdGFiVHlwZSB0byBvbmdvaW5nLiBJZiBub3QsIGNoZWNrIGlmXHJcbiAgICogdGhlIGJ1bGtVcGxvYWQgb2JqZWN0IGhhcyBhbiBvbkNvbXBsZXRpb24gb2JqZWN0IHdpdGggYSByZXBvcnRzIGFycmF5LCBzZXQgdGhlXHJcbiAgICogcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHRvIHRoZSBvbkNvbXBsZXRpb24gb2JqZWN0IGFuZCBzZXQgdGhlIHRhYlR5cGUgdG8gb25Db21wbGV0aW9uLiBJZiBub3QsXHJcbiAgICogcmV0dXJuIHRydWUuXHJcbiAgICogPC9jb2RlPlxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gYW55ID0ge1xyXG4gICAqIEByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZS5cclxuICAgKi9cclxuICBjaGVja0VtcHR5RmlsZShkYXRhPzogYW55KSB7XHJcbiAgICBsZXQgaXNFbXB0eSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuYnVsa1VwbG9hZD8uZnJlcXVlbmN5Py5yZXBvcnRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/LmZyZXF1ZW5jeTtcclxuICAgICAgdGhpcy50YWJUeXBlID0gJ2ZyZXF1ZW5jeSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnVsa1VwbG9hZD8ub25nb2luZz8ucmVwb3J0cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0gdGhpcy5idWxrVXBsb2FkPy5vbmdvaW5nO1xyXG4gICAgICB0aGlzLnRhYlR5cGUgPSAnb25nb2luZyc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYnVsa1VwbG9hZD8ub25Db21wbGV0aW9uPy5yZXBvcnRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/Lm9uQ29tcGxldGlvbjtcclxuICAgICAgdGhpcy50YWJUeXBlID0gJ29uQ29tcGxldGlvbic7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpc0VtcHR5ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc0VtcHR5O1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZVdpdGhDdXJyZW50RGF0ZShkYXk6IGFueSwgbW9udGg6IGFueSkge1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDIsIG1vbnRoOiAnRmViJyB9LFxyXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcclxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDUsIG1vbnRoOiAnTWF5JyB9LFxyXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcclxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDgsIG1vbnRoOiAnQXVnJyB9LFxyXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMSwgbW9udGg6ICdOb3YnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoIShkYXkgJiYgbW9udGgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoQW5kWWVhciA9IG1vbnRoLnNwbGl0KFwiJ1wiKTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChcclxuICAgICAgICBkYXkgKyAnLScgKyBtb250aEFuZFllYXJbMF0gKyAnLScgKyAyMCArIG1vbnRoQW5kWWVhclsxXSArICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICdERC1NTU1NLVlZWVkgSEg6bW06c3MnXHJcbiAgICAgICkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XHJcbiAgICAgIGlmIChzdGFydERhdGUgPT0gJ0ludmFsaWQgZGF0ZScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge30sIDUpO1xyXG4gICAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXHJcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cclxuICAgICAgICAgICAgICA/LnZhbHVlIC0gMVxyXG4gICAgICAgICAgOiBtb250aFxyXG4gICAgICApO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKE51bWJlcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSkpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY3VycmVudERhdGUudG9KU09OKCkuc3BsaXQoJ1QnKVswXSAhPVxyXG4gICAgICAgICAgZGF0ZV92YWx1ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdICYmXHJcbiAgICAgICAgY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBpc1Bhc3REYXRlKGRheTogYW55LCBtb250aDogYW55KSB7XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDIsIG1vbnRoOiAnRmViJyB9LFxyXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcclxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDUsIG1vbnRoOiAnTWF5JyB9LFxyXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcclxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDgsIG1vbnRoOiAnQXVnJyB9LFxyXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMSwgbW9udGg6ICdOb3YnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKCEoZGF5ICYmIG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb25zdCByZXBvcnREYXRlID0gbmV3IERhdGUoZGF5ICsgbW9udGguc3BsaXQoXCInXCIpKTtcclxuICAgICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXHJcbiAgICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cclxuICAgICAgICAgICAgICA/LnZhbHVlIC0gMVxyXG4gICAgICAgICAgOiBtb250aFxyXG4gICAgICApO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKE51bWJlcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSkpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xyXG4gICAgICBpZiAoY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFRlbXBsYXRlKCkge1xyXG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XHJcbiAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDA7XHJcbiAgICBjb25zdCBkb3dubG9hZERhdGUgPSBuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpLnNwbGl0KCcgJyk7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGBFbnRydXN0IFJlc3BvbnNpYmlsaXRpZXMtJHtkb3dubG9hZERhdGVbMl19LSR7ZG93bmxvYWREYXRlWzFdfS0ke2Rvd25sb2FkRGF0ZVszXX0ueGxzeGA7XHJcblxyXG4gICAgdGhpcy5yaXNrU2VydmljZS5kb3dubG9hZFJlc3BvbnNpYmlsaXR5VGVtcGxhdGUoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YS5sb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuZG93bmxvYWRQZXJjZW50ID0gMTAwICogKGRhdGEubG9hZGVkIC8gZGF0YS50b3RhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkYXRhLmJvZHkpIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gdGhpcy5yaXNrU2VydmljZS5kb3duTG9hZEZpbGUoXHJcbiAgICAgICAgICAgICAgZGF0YS5ib2R5LFxyXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94bHN4JyxcclxuICAgICAgICAgICAgICBmaWxlTmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSwgMTUwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ0RPV05MT0FERUQnO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKCkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IFtdO1xyXG4gICAgbGV0IHJlc3BvbnNpYmlsaXR5TXVsdGlUYWJCdWxrVXBsb2FkOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGVBcnJheSA9IFsnMScsICcyJywgJzMnLCAnNCcsICc3JywgJzAnLCAnNicsICc5J107XHJcbiAgICBjb25zdCBkZWZhdWx0V2luZG93ID0gWzAsIDIsIDcsIDMwLCA3LCAxNSwgMywgMzBdO1xyXG4gICAgY29uc3QgZGVmYXVsdEZhaWxlZERheSA9IFsxLCAyLCA1LCA1LCA1LCA1LCA1LCA1XTtcclxuICAgIGxldCB2YWxpZFJlc3BvbnNpYmlsaXRpZXMgPSAwO1xyXG4gICAgbGV0IHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHRoaXMuYnVsa1VwbG9hZD8uZnJlcXVlbmN5Py5yZXBvcnRzPy5jb25jYXQoXHJcbiAgICAgIHRoaXMuYnVsa1VwbG9hZD8ub25nb2luZz8ucmVwb3J0cyxcclxuICAgICAgdGhpcy5idWxrVXBsb2FkPy5vbkNvbXBsZXRpb24/LnJlcG9ydHNcclxuICAgICk7XHJcbiAgICByZXNwb25zaWJpbGl0eU11bHRpVGFiQnVsa1VwbG9hZCA9XHJcbiAgICAgIHRoaXMuYnVsa1VwbG9hZD8uZnJlcXVlbmN5Py5yZXBvcnRzPy5jb25jYXQoXHJcbiAgICAgICAgdGhpcy5idWxrVXBsb2FkPy5vbmdvaW5nPy5yZXBvcnRzLFxyXG4gICAgICAgIHRoaXMuYnVsa1VwbG9hZD8ub25Db21wbGV0aW9uPy5yZXBvcnRzXHJcbiAgICAgICk7XHJcbiAgICBpZiAodGhpcy5mZkJ1bGtVcGxvYWRPcHRpbWl6YXRpb24pIHtcclxuICAgICAgcmVzcG9uc2liaWxpdHlNdWx0aVRhYkJ1bGtVcGxvYWQ/LmZvckVhY2goKHJlcG9ydDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcG9ydD8uaXNWYWxpZCkge1xyXG4gICAgICAgICAgdmFsaWRSZXNwb25zaWJpbGl0aWVzICs9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICBvcmlnaW5hbEZpbGVuYW1lOiB0aGlzLmZpbGVSZXNwb25zZVswXT8ub3JpZ2luYWxfZmlsZW5hbWUsXHJcbiAgICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZVJlc3BvbnNlWzBdPy5maWxlbmFtZSxcclxuICAgICAgICBmaWxlUGF0aDogdGhpcy5maWxlUmVzcG9uc2VbMF0/LmZpbGVwYXRoLFxyXG4gICAgICAgIHRvdGFsUmVzcG9uc2liaWxpdHlDb3VudDogcmVzcG9uc2liaWxpdHlNdWx0aVRhYkJ1bGtVcGxvYWQ/Lmxlbmd0aCxcclxuICAgICAgICB2YWxpZFJlc3BvbnNpYmlsaXR5Q291bnQ6IHZhbGlkUmVzcG9uc2liaWxpdGllcyxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXBvcnQuaXNWYWxpZCkge1xyXG4gICAgICAgICAgaWYgKHJlcG9ydD8ucmVzcG9uc2liaWxpdHlDYXRlZ29yeSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmNEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgcmVwb3J0Py5yZXNwb25zaWJpbGl0eUNlbnRlcixcclxuICAgICAgICAgICAgJ3JjX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHJldmlld2VyRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHJlcG9ydD8ucmV2aWV3ZXIsXHJcbiAgICAgICAgICAgICdyZXZpZXdlcidcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBhc3NpZ25vckRldGFpbHM6IGFueSA9IHJlcG9ydD8uYXNzaWdub3JcclxuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhyZXBvcnQ/LmFzc2lnbm9yLCAnYXNzaWdub3InKVxyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgICAgY29uc3QgY2NEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhyZXBvcnQ/Lm92ZXJzZWVyLCAnY2MnKTtcclxuICAgICAgICAgIGNvbnN0IGNjRmFpbHVyZURldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICByZXBvcnQubm90aWZ5T25GYWlsdXJlLFxyXG4gICAgICAgICAgICAnY2NGYWlsdXJlJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgICAgICAgICBsZXQgb25nb2luZ1JlbWluZGVyVHlwZTogYW55ID0ge1xyXG4gICAgICAgICAgICBXZWVrbHk6IDEsXHJcbiAgICAgICAgICAgIE1vbnRobHk6IDIsXHJcbiAgICAgICAgICAgIFF1YXJ0ZXJseTogMyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBjb25zdCBvbmdvaW5nVmFsdWVzID0ge1xyXG4gICAgICAgICAgICBzZXRSZW1pbmRlcjogcmVwb3J0Py5zZXRSZW1pbmRlcixcclxuICAgICAgICAgICAgZnJlcXVlbmN5UmVtaW5kZXI6IG9uZ29pbmdSZW1pbmRlclR5cGVbcmVwb3J0Py5mcmVxdWVuY3lSZW1pbmRlcl0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgY29uc3QgZnJlcXVlbmN5VmFsdWUgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2hvcnRIYW5kX2ZyZXFDYWwoXHJcbiAgICAgICAgICAgIHJlcG9ydD8uZnJlcXVlbmN5LFxyXG4gICAgICAgICAgICByZXBvcnQ/LmRheSxcclxuICAgICAgICAgICAgcmVwb3J0Py5tb250aCxcclxuICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgIHJlcG9ydD8uZHVlRGF0ZSxcclxuICAgICAgICAgICAgb25nb2luZ1ZhbHVlc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGRhdGVBbmRNb250aCA9IHJlcG9ydD8ubW9udGg/LnNwbGl0KFwiJ1wiKTtcclxuICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGRhdGVBbmRNb250aFxyXG4gICAgICAgICAgICA/IG1vbWVudChcclxuICAgICAgICAgICAgICAgIHJlcG9ydD8uZGF5ICtcclxuICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgZGF0ZUFuZE1vbnRoWzBdICtcclxuICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgMjAgK1xyXG4gICAgICAgICAgICAgICAgICBkYXRlQW5kTW9udGhbMV0gK1xyXG4gICAgICAgICAgICAgICAgICAnIDAwOjAwOjAwJyxcclxuICAgICAgICAgICAgICAgICdERC1NTU1NLVlZWVkgSEg6bW06c3MnXHJcbiAgICAgICAgICAgICAgKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKVxyXG4gICAgICAgICAgICA6ICcnO1xyXG5cclxuICAgICAgICAgIGxldCBjb21wbGV0ZURheXM7XHJcbiAgICAgICAgICBsZXQgbm90Q29tcGxldGVEYXlzO1xyXG4gICAgICAgICAgY29uc3QgZnJlcXVlbmN5VHlwZSA9IGZyZXF1ZW5jeVZhbHVlPy5zcGxpdCgnficpWzBdO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICByZXBvcnQucmVzcG9uc2liaWxpdHlXaW5kb3cgJiZcclxuICAgICAgICAgICAgcmVwb3J0LnJlc3BvbnNpYmlsaXR5V2luZG93ICE9PSAnJ1xyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbXBsZXRlRGF5cyA9IHJlcG9ydD8ucmVzcG9uc2liaWxpdHlXaW5kb3c7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeVR5cGVBcnJheT8uaW5jbHVkZXMoZnJlcXVlbmN5VHlwZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhPZkFycmF5ID0gZnJlcXVlbmN5VHlwZUFycmF5Py5pbmRleE9mKGZyZXF1ZW5jeVR5cGUpO1xyXG4gICAgICAgICAgICBjb21wbGV0ZURheXMgPSBkZWZhdWx0V2luZG93W2luZGV4T2ZBcnJheV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVwb3J0Py5mYWlsZWRBZnRlciAmJiByZXBvcnQ/LmZhaWxlZEFmdGVyICE9PSAnJykge1xyXG4gICAgICAgICAgICBub3RDb21wbGV0ZURheXMgPSByZXBvcnQ/LmZhaWxlZEFmdGVyO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3lUeXBlQXJyYXkuaW5jbHVkZXMoZnJlcXVlbmN5VHlwZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhPZkFycmF5ID0gZnJlcXVlbmN5VHlwZUFycmF5Py5pbmRleE9mKGZyZXF1ZW5jeVR5cGUpO1xyXG4gICAgICAgICAgICBub3RDb21wbGV0ZURheXMgPSBkZWZhdWx0RmFpbGVkRGF5W2luZGV4T2ZBcnJheV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgICAgIHVzZXJJZDogdGhpcy50ZW1wbGF0ZUluZm8/Lm1lbWJlcklkLFxyXG4gICAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXHJcbiAgICAgICAgICAgIG1lbWJlcl9pZDogYXNzaWdub3JEZXRhaWxzXHJcbiAgICAgICAgICAgICAgPyBhc3NpZ25vckRldGFpbHM/Lm1lbWJlcklkXHJcbiAgICAgICAgICAgICAgOiB0aGlzLm1lbWJlcklkLFxyXG4gICAgICAgICAgICBtZW1iZXJfbmFtZTogYXNzaWdub3JEZXRhaWxzXHJcbiAgICAgICAgICAgICAgPyByZXBvcnQ/LmFzc2lnbm9yXHJcbiAgICAgICAgICAgICAgICA/IHJlcG9ydD8uYXNzaWdub3Iuc3BsaXQoJyAoJylbMF1cclxuICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICA6IHRoaXMuZGVmYXVsdE93bmVyXHJcbiAgICAgICAgICAgICAgPyB0aGlzLmRlZmF1bHRPd25lcj8uc3BsaXQoJyAoJylbMF1cclxuICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICBtZW1iZXJfZW1haWw6IGFzc2lnbm9yRGV0YWlsc1xyXG4gICAgICAgICAgICAgID8gcmVwb3J0Py5hc3NpZ25vclxyXG4gICAgICAgICAgICAgICAgPyByZXBvcnQ/LmFzc2lnbm9yPy5zcGxpdCgnICgnKVsxXT8ucmVwbGFjZSgnKScsICcnKVxyXG4gICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgIDogdGhpcy5kZWZhdWx0T3duZXJcclxuICAgICAgICAgICAgICA/IHRoaXMuZGVmYXVsdE93bmVyPy5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpXHJcbiAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgY3JlYXRlZF9ieTogYXNzaWdub3JEZXRhaWxzID8gdGhpcy5tZW1iZXJJZCA6IDAsXHJcbiAgICAgICAgICAgIHJlcG9ydF9uYW1lOiByZXBvcnQ/LnJlc3BvbnNpYmlsaXR5TmFtZSA/PyAnJyxcclxuICAgICAgICAgICAgZW50cnVzdGVkX3RvOiByZXBvcnQ/LmFzc2lnbmVlPy5zcGxpdCgnICgnKVswXSA/PyAnJyxcclxuICAgICAgICAgICAgZW50cnVzdGVkX3RvX2lkOiB0aGlzLmlzR3JvdXBTZWxlY3RlZChyZXBvcnQ/LmFzc2lnbmVlKVxyXG4gICAgICAgICAgICAgID8gdGhpcy5nZXRFbXBsb3llZUlkRnJvbUdyb3VwKHJlcG9ydD8uYXNzaWduZWUpXHJcbiAgICAgICAgICAgICAgOiB0aGlzLnJldHVybklkcyhyZXBvcnQ/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJyk/LnRvU3RyaW5nKCkgPz9cclxuICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICBlbWFpbF9hZGRyZXNzOiAhdGhpcy5pc0dyb3VwU2VsZWN0ZWQocmVwb3J0Py5hc3NpZ25lZSlcclxuICAgICAgICAgICAgICA/IHJlcG9ydD8uYXNzaWduZWU/LnNwbGl0KCcgKCcpWzFdPy5yZXBsYWNlKCcpJywgJycpID8/ICcnXHJcbiAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgaXNHcm91cEFzc2lnblRvOiByZXBvcnQ/LmFzc2lnbmVlVHlwZT8uaW5jbHVkZXMoJ0FueScpID8gMSA6IDAsXHJcbiAgICAgICAgICAgIGNhdGVnb3J5X25hbWVfd2l0aF90cmVlOiAnJyxcclxuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRQcm9ncmFtSWQoXHJcbiAgICAgICAgICAgICAgICByZXBvcnQ/LnByb2dyYW0sXHJcbiAgICAgICAgICAgICAgICByZXBvcnQ/LnByb2dyYW1DYXRlZ29yeVxyXG4gICAgICAgICAgICAgICkuY2F0ZWdvcnlJZD8udG9TdHJpbmcoKSA/PyAnJyxcclxuICAgICAgICAgICAgcHJvZ3JhbV9jYXRfaWRzOiB0aGlzLmdldFByb2dyYW1JZChcclxuICAgICAgICAgICAgICByZXBvcnQ/LnByb2dyYW0sXHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5wcm9ncmFtQ2F0ZWdvcnlcclxuICAgICAgICAgICAgKT8ucHJvZ3JhbUlkXHJcbiAgICAgICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UHJvZ3JhbUlkKHJlcG9ydD8ucHJvZ3JhbSwgcmVwb3J0Py5wcm9ncmFtQ2F0ZWdvcnkpXHJcbiAgICAgICAgICAgICAgICAgICAgPy5wcm9ncmFtSWQsXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgcmNfbmFtZTogcmNEZXRhaWxzID8gcmNEZXRhaWxzPy5uYW1lIDogJycsXHJcbiAgICAgICAgICAgIHJjX2lkOiByY0RldGFpbHMgPyByY0RldGFpbHM/LnJjSWQgOiAwLFxyXG4gICAgICAgICAgICBlbnRpdHlfdHJlZTpcclxuICAgICAgICAgICAgICByY0RldGFpbHMgJiYgcmNEZXRhaWxzPy5yY0lkXHJcbiAgICAgICAgICAgICAgICA/IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfcmNfaWRzOiByY0RldGFpbHMgPyByY0RldGFpbHM/LnBhcmVudElkcyA6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmNfaWQ6IHJjRGV0YWlscyA/IHJjRGV0YWlscz8ucmNJZCA6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgdXNlckdyb3VwSWRzOiB7XHJcbiAgICAgICAgICAgICAgYXNzaWduZWVBbGxHcm91cElkczpcclxuICAgICAgICAgICAgICAgICFyZXBvcnQ/LmFzc2lnbmVlVHlwZT8uaW5jbHVkZXMoJ0FueScpICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzR3JvdXBTZWxlY3RlZChyZXBvcnQ/LmFzc2lnbmVlKVxyXG4gICAgICAgICAgICAgICAgICA/IFt0aGlzLnJldHVybklkcyhyZXBvcnQ/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJyldXHJcbiAgICAgICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgICAgYXNzaWduZWVBbnlvbmVHcm91cElkczpcclxuICAgICAgICAgICAgICAgIHJlcG9ydD8uYXNzaWduZWVUeXBlPy5pbmNsdWRlcygnQW55JykgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNHcm91cFNlbGVjdGVkKHJlcG9ydD8uYXNzaWduZWUpXHJcbiAgICAgICAgICAgICAgICAgID8gW3RoaXMucmV0dXJuSWRzKHJlcG9ydD8uYXNzaWduZWUsICdlbnRydXN0ZWRfdG8nKV1cclxuICAgICAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgICBjY0VtYWlsR3JvdXBJZHM6IFtdLFxyXG4gICAgICAgICAgICAgIGZhaWx1cmVDQ0VtYWlsR3JvdXBJZHM6IFtdLFxyXG4gICAgICAgICAgICAgIHJldmlld2VyR3JvdXBJZHM6IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lfaGFuZGxlcjogZnJlcXVlbmN5VmFsdWUsXHJcbiAgICAgICAgICAgIGNvbXBsaWFuY2VfdHlwZTogZnJlcXVlbmN5VmFsdWU/LnNwbGl0KCd+JylbMF0sXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeV9kZXNjcmlwdGlvbjogcmVwb3J0Py5mcmVxdWVuY3ksXHJcbiAgICAgICAgICAgIHN0YXJ0X2RhdGU6IHJlcG9ydD8uZGF5ID8gc3RhcnREYXRlIDogY3VycmVudERhdGUgKyAnIDAwOjAwOjAwJyxcclxuICAgICAgICAgICAgcmlza19jbGFzczogcmVwb3J0Py5yZXBvcnRDbGFzcyA/PyAnJyxcclxuICAgICAgICAgICAgcmlza19jbGFzc0lkOiByZXBvcnQ/LnJlcG9ydENsYXNzXHJcbiAgICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhyZXBvcnQ/LnJlcG9ydENsYXNzLCAncmlza19jbGFzcycpXHJcbiAgICAgICAgICAgICAgOiB0aGlzLnJpc2tDbGFzc0VuYWJsZWRcclxuICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICA6IDIsXHJcbiAgICAgICAgICAgIGRvY191dGM6IDAsXHJcbiAgICAgICAgICAgIGNvbW1lbnQ6IHJlcG9ydD8ubm90ZXMgPz8gJycsXHJcbiAgICAgICAgICAgIGNjX21haWw6IGNjRGV0YWlscyA/IGNjRGV0YWlscz8uZW1haWwgOiAnJyxcclxuICAgICAgICAgICAgY2NfbWFpbF9pZDogY2NEZXRhaWxzID8gY2NEZXRhaWxzPy5lbXBsb3llZUlkIDogJycsXHJcbiAgICAgICAgICAgIGNjX2ZhaWxlZF9tYWlsOiBjY0ZhaWx1cmVEZXRhaWxzID8gY2NGYWlsdXJlRGV0YWlscz8uZW1haWwgOiAnJyxcclxuICAgICAgICAgICAgY2NfZmFpbHVyZV9pZDogY2NGYWlsdXJlRGV0YWlscyA/IGNjRmFpbHVyZURldGFpbHM/LmVtcGxveWVlSWQgOiAwLFxyXG4gICAgICAgICAgICBzZW5kX3JlbWluZGVyOiAnJyxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6XHJcbiAgICAgICAgICAgICAgZnJlcXVlbmN5VHlwZSA9PT0gJzEnXHJcbiAgICAgICAgICAgICAgICA/IDBcclxuICAgICAgICAgICAgICAgIDogY29tcGxldGVEYXlzICYmIGNvbXBsZXRlRGF5cyAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgPyBjb21wbGV0ZURheXNcclxuICAgICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgICAgZmFpbGVkX2FmdGVyOlxyXG4gICAgICAgICAgICAgIG5vdENvbXBsZXRlRGF5cyAmJiBub3RDb21wbGV0ZURheXMgIT0gJycgPyBub3RDb21wbGV0ZURheXMgOiAwLFxyXG4gICAgICAgICAgICBleGNlbF9zaGVldF9uYW1lOiAnJyxcclxuICAgICAgICAgICAgcmVwb3J0X3VwbG9hZF9mbGFnOlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8uaXNGb3JtYXQgPT09ICdZZXMnICYmXHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5mb3JtYXRGb3JSZXNwb25zaWJpbGl0eT8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgICAgcmVwb3J0X2lkOiAwLFxyXG4gICAgICAgICAgICBpc19hc3NpZ25lZF9mbGFnOiAwLFxyXG4gICAgICAgICAgICBwcml2YXRlX2xpYnJhcnlfaWQ6IDAsXHJcbiAgICAgICAgICAgIGtleWNvbXBsaWFuY2U6IHJlcG9ydD8ua2V5UmVzcG9uc2liaWxpdHkgPT09ICdZZXMnID8gJ1llcycgOiAnTm8nLFxyXG4gICAgICAgICAgICBrZXlfY29tcGxpYW5jZTogcmVwb3J0Py5rZXlSZXNwb25zaWJpbGl0eSA9PT0gJ1llcycgPyAxIDogMCxcclxuICAgICAgICAgICAgcmV2aWV3ZXJJZDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzPy5lbXBsb3llZUlkIDogMCxcclxuICAgICAgICAgICAgcmV2aWV3ZXJfYXJyOlxyXG4gICAgICAgICAgICAgIHJldmlld2VyRGV0YWlscyAmJiByZXZpZXdlckRldGFpbHM/LmVtcGxveWVlSWRcclxuICAgICAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsMToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV2aWV3ZXJzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJfaWQ6IHJldmlld2VyRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZXZpZXdlckRldGFpbHM/LmVtcGxveWVlSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXZpZXdlcl9hY2NlcHQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1NFUVVFTlRJQUwnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDoge30sXHJcbiAgICAgICAgICAgIHJldmlld2VyV2luZG93OlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8ucmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbiAmJlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8ucmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbiAhPT0gJydcclxuICAgICAgICAgICAgICAgID8gcmVwb3J0Py5yZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluXHJcbiAgICAgICAgICAgICAgICA6IDIsXHJcbiAgICAgICAgICAgIHJldmlld2VyRmFpbHVyZTpcclxuICAgICAgICAgICAgICByZXBvcnQ/LnJldmlld1dpbGxCZUZhaWxlZEFmdGVyICYmXHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5yZXZpZXdXaWxsQmVGYWlsZWRBZnRlciAhPT0gJydcclxuICAgICAgICAgICAgICAgID8gcmVwb3J0Py5yZXZpZXdXaWxsQmVGYWlsZWRBZnRlclxyXG4gICAgICAgICAgICAgICAgOiAyLFxyXG4gICAgICAgICAgICByZXZpZXdlcl9lbWFpbDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzPy5lbWFpbCA6ICcnLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0Py5mb3JtYXRGb3JSZXNwb25zaWJpbGl0eVxyXG4gICAgICAgICAgICAgID8gcmVwb3J0LmZvcm1hdEZvclJlc3BvbnNpYmlsaXR5XHJcbiAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgZG9jdW1lbnRhcnlFdmlkZW5jZTogcmVwb3J0Py5ldmlkZW5jZU5vdGVzID8/ICcnLFxyXG4gICAgICAgICAgICBpc2RvY3VtZW50YXJ5RXZpZGVuY2U6XHJcbiAgICAgICAgICAgICAgcmVwb3J0LmRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZCA9PT0gJ1llcycgPyAxIDogMCxcclxuICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnQub2JqZWN0aXZlID8/ICcnLFxyXG4gICAgICAgICAgICBleGNlbF9zaGVldF9pbmZvOiB0aGlzLmZpbGVSZXNwb25zZSxcclxuICAgICAgICAgICAgc2hvd0xpc3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICBjdXN0b21fdGFnczogJ1tdJyxcclxuICAgICAgICAgICAgcXVlc3Rpb25uYWlyZV90eXBlOiAnJyxcclxuICAgICAgICAgICAgb25fY29tcGxldGlvbl9vZl90eXBlOlxyXG4gICAgICAgICAgICAgIHJlcG9ydD8uZnJlcXVlbmN5ID09PSAnT24gQ29tcGxldGlvbiBvZicgfHxcclxuICAgICAgICAgICAgICByZXBvcnQ/LmZyZXF1ZW5jeT8udG9Mb3dlckNhc2UoKSA9PT0gJ29uZ29pbmcnXHJcbiAgICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgICAgb25fY29tcGxldGlvbl9vZjogdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgICAgcmVwb3J0Py5wYXJlbnRSZXNwb25zaWJpbGl0eSxcclxuICAgICAgICAgICAgICAncGFyZW50UmVzcG9uc2liaWxpdHknXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICA/IFtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0Py5wYXJlbnRSZXNwb25zaWJpbGl0eSxcclxuICAgICAgICAgICAgICAgICAgICAncGFyZW50UmVzcG9uc2liaWxpdHknXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBwYXlsb2FkLnB1c2gob2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuYWRkQnVsa1Jlc3BvbnNpYmlsaXR5KHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICdhbGVydCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuSWRzKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSAncmNfaWQnOlxyXG4gICAgICAgIGxldCByY09iaiA9IHsgbmFtZTogJycsIHJjSWQ6IDAsIHBhcmVudElkczogW10gfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5yY0xpc3QuZm9yRWFjaCgocmNfZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmNfZWxlbWVudC5uYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgbGV0IG5hbWU7XHJcbiAgICAgICAgICAgIGlmIChyY19lbGVtZW50Lm5hbWUuaW5jbHVkZXMoJ1tXSVRISU5dJykpIHtcclxuICAgICAgICAgICAgICBuYW1lID0gcmNfZWxlbWVudC5uYW1lLnNwbGl0KCcgW1dJVEhJTl0gJylbMF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbmFtZSA9IHJjX2VsZW1lbnQubmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByY09iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgIHJjSWQ6IHJjX2VsZW1lbnQucmNfaWQsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWRzOiByY19lbGVtZW50LnBhcmVudElkcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmNPYmo7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcclxuICAgICAgICBsZXQgcmV2aWV3ZXJPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mbz8ucmV2aWV3ZXJMaXN0LmZvckVhY2goKHJldmlld2VyRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmV2aWV3ZXJFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIHJldmlld2VyT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IHJldmlld2VyRWxlbWVudC5uYW1lLFxyXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IHJldmlld2VyRWxlbWVudC5teV9tZW1iZXJfaWQsXHJcbiAgICAgICAgICAgICAgZW1haWw6IHJldmlld2VyRWxlbWVudC5lbWFpbCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmV2aWV3ZXJPYmo7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NpZ25vcic6XHJcbiAgICAgICAgbGV0IGFzc2lnbm9yT2JqID0geyBuYW1lOiAnJywgbWVtYmVySWQ6IDAsIGVtYWlsOiAnJyB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbm9yc0xpc3QuZm9yRWFjaCgoYXNzaWdub3JFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChhc3NpZ25vckVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgYXNzaWdub3JPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogYXNzaWdub3JFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1haWw6IGFzc2lnbm9yRWxlbWVudC5lbWFpbCxcclxuICAgICAgICAgICAgICBtZW1iZXJJZDogYXNzaWdub3JFbGVtZW50Lm1lbWJlcl9pZCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYXNzaWdub3JPYmo7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYyc6XHJcbiAgICAgICAgbGV0IGNjT2JqID0geyBuYW1lOiAnJywgZW1wbG95ZWVJZDogMCwgZW1haWw6ICcnIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8/LnJldmlld2VyTGlzdC5mb3JFYWNoKChjY0VsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNjRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBjY09iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiBjY0VsZW1lbnQubmFtZSxcclxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiBjY0VsZW1lbnQuZW1wbG95ZWVfaWQsXHJcbiAgICAgICAgICAgICAgZW1haWw6IGNjRWxlbWVudC5lbWFpbCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gY2NPYmo7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjRmFpbHVyZSc6XHJcbiAgICAgICAgbGV0IGNjZk9iaiA9IHsgbmFtZTogJycsIGVtcGxveWVlSWQ6IDAsIGVtYWlsOiAnJyB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5yZXZpZXdlckxpc3QuZm9yRWFjaCgoY2NmRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2NmRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBjY2ZPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogY2NmRWxlbWVudC5uYW1lLFxyXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IGNjZkVsZW1lbnQuZW1wbG95ZWVfaWQsXHJcbiAgICAgICAgICAgICAgZW1haWw6IGNjZkVsZW1lbnQuZW1haWwsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNjZk9iajtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2VudHJ1c3RlZF90byc6XHJcbiAgICAgICAgbGV0IGVtcElkID0gMDtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKGVuRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW5FbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGVtcElkID0gZW5FbGVtZW50LmVtcGxveWVlX2lkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBlbXBJZDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3BhcmVudFJlc3BvbnNpYmlsaXR5JzpcclxuICAgICAgICBsZXQgaWQgPSAwO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnBhcmVudFJlc3BvbnNpYmlsaXR5LmZvckVhY2goXHJcbiAgICAgICAgICAocmVzcG9uc2liaWxpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2liaWxpdHk/Lm5hbWUgPT09IGl0ZW0pIHtcclxuICAgICAgICAgICAgICBpZCA9IHJlc3BvbnNpYmlsaXR5LmlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdyaXNrX2NsYXNzJzpcclxuICAgICAgICBpZiAoaXRlbSA9PSAnTG93Jykge1xyXG4gICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdMb3ctTWVkaXVtJykge1xyXG4gICAgICAgICAgcmV0dXJuIDI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdNZWRpdW0tSGlnaCcpIHtcclxuICAgICAgICAgIHJldHVybiAzO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PSAnSGlnaCcpIHtcclxuICAgICAgICAgIHJldHVybiA0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0ge1xyXG4gICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICByZXBvcnRzOiBbXSxcclxuICAgIH07XHJcbiAgICB0aGlzLmJ1bGtVcGxvYWQgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeToge1xyXG4gICAgICAgIGhlYWRlcjogW10sXHJcbiAgICAgICAgc3ViSGVhZGluZzogW10sXHJcbiAgICAgICAgcmVwb3J0czogW10sXHJcbiAgICAgIH0sXHJcbiAgICAgIG9uZ29pbmc6IHtcclxuICAgICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgICBvbkNvbXBsZXRpb246IHtcclxuICAgICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICAgIHN1YkhlYWRpbmc6IFtdLFxyXG4gICAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgICAgcmNMaXN0OiBbXSxcclxuICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxyXG4gICAgICByZXZpZXdlckxpc3Q6IFtdLFxyXG4gICAgICBtZW1iZXJJZDogJycsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZGF0YSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eS5lbWl0KCk7XHJcbiAgfVxyXG4gIGFjdGlvbihldmVudDogc3RyaW5nKSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XHJcbiAgICAgIGNhc2UgJ2FkZE1vcmUnOlxyXG4gICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndmlldyc6XHJcbiAgICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdGllcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5yZXNwb25zaWJpbGl0eURhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgdmlld1Jlc3BvbnNpYmlsaXRpZXMoKTogdm9pZCB7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBsZXQgdXJsU3Vic3RyaW5nID0gJyc7XHJcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgaWYgKHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nKSB7XHJcbiAgICAgIGlmICh0aGlzLmZlYXR1cmVmbGFnKSB7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXR5PycgKyB0aGlzLnVybDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPVxyXG4gICAgICAgICAgJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXRpZXMvcmVzcG9uc2liaWxpdGllcy1xdWV1ZSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmZlYXR1cmVmbGFnKSB7XHJcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtID0gSlNPTj8uc3RyaW5naWZ5KHRoaXMucmVjZW50UmVzcG9uc2liaWxpdHlVcmwpO1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT9xPScgKyB0aGlzLnF1ZXJ5UGFyYW07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXRpZXMnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2NvbXBsaWFuY2UvIy8nICsgdXJsU3Vic3RyaW5nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9jb21wbGlhbmNlLyMvJyArIHVybFN1YnN0cmluZztcclxuICAgIH1cclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBsb2FkIEZpbGUgdG8gdGhlIHNlcnZlclxyXG4gIGZpbGVVcGxvYWQoKSB7XHJcbiAgICB0aGlzLmZpbGVSZXNwb25zZSA9IFtdO1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGNvbnN0IGZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXNbMF1bMF07XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ3NvdXJjZWZpbGUnLCBmaWxlKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZGVzdGluYXRpb24nLCAnYnVsa3VwbG9hZC9lbnRydXN0LycgKyB0aGlzLnVzZXJJbmZvLmVtYWlsKTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmZpbGVVcGxvYWQoZm9ybURhdGEpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8uZmlsZW5hbWUpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZVJlc3BvbnNlLnB1c2gocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRPcmdhbml6YXRpb25EZXRhaWxzKHRlbXBMaXN0OiBhbnkpIHtcclxuICAgIGlmICh0ZW1wTGlzdFswXSAhPT0gdW5kZWZpbmVkICYmIHRlbXBMaXN0WzBdWzE4XSkge1xyXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mby5tZW1iZXJJZCA9IHRlbXBMaXN0WzBdWzE4XTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cclxuICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSB3aGljaCB5b3UgZG93bmxvYWRlZCBmcm9tIGhlcmUuJyArXHJcbiAgICAgICAgJyBSRVRSWSc7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0ZW1wTGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgLyogUHVzaGluZyB0aGUgdmFsdWUgb2YgcmVndWxhdGlvbnMgUHJvZ3JhbXMgaW50byB0aGUgY2F0ZWdvcnlMaXN0IGFycmF5LiAqL1xyXG4gICAgICBpZiAoZWxlbWVudFsyNl0gJiYgdHlwZW9mIGVsZW1lbnRbMjZdID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGNvbnN0IHJlZ3VsYXRpb25zID0ge1xyXG4gICAgICAgICAgcHJvZ3JhbU5hbWU6IGVsZW1lbnRbMjJdLFxyXG4gICAgICAgICAgcHJvZ3JhbUlkOiBlbGVtZW50WzI2XSxcclxuICAgICAgICAgIGFzc2lnbmVlOiBKU09OLnBhcnNlKGVsZW1lbnRbMzBdKSxcclxuICAgICAgICAgIHJldmlld2VyOiBKU09OLnBhcnNlKGVsZW1lbnRbMzFdKSxcclxuICAgICAgICAgIG92ZXJzZWVyOiBKU09OLnBhcnNlKGVsZW1lbnRbMzJdKT8uY29uY2F0KEpTT04ucGFyc2UoZWxlbWVudFszM10pKSxcclxuICAgICAgICAgIHByb2dyYW1UeXBlOiAxLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0LnB1c2gocmVndWxhdGlvbnMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvKiBQdXNoaW5nIHRoZSB2YWx1ZSBvZiBzdGFuZGFyZHMgUHJvZ3JhbXMgaW50byB0aGUgY2F0ZWdvcnlMaXN0IGFycmF5LiAqL1xyXG4gICAgICBpZiAoZWxlbWVudFsyN10gJiYgdHlwZW9mIGVsZW1lbnRbMjddID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGNvbnN0IHN0YW5kYXJkcyA9IHtcclxuICAgICAgICAgIHByb2dyYW1OYW1lOiBlbGVtZW50WzIzXSxcclxuICAgICAgICAgIHByb2dyYW1JZDogZWxlbWVudFsyN10sXHJcbiAgICAgICAgICBhc3NpZ25lZTogSlNPTi5wYXJzZShlbGVtZW50WzM0XSksXHJcbiAgICAgICAgICByZXZpZXdlcjogSlNPTi5wYXJzZShlbGVtZW50WzM1XSksXHJcbiAgICAgICAgICBvdmVyc2VlcjogSlNPTi5wYXJzZShlbGVtZW50WzM2XSk/LmNvbmNhdChKU09OLnBhcnNlKGVsZW1lbnRbMzddKSksXHJcbiAgICAgICAgICBwcm9ncmFtVHlwZTogMixcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5wdXNoKHN0YW5kYXJkcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIFB1c2hpbmcgdGhlIHZhbHVlIG9mIGludGVybmFsIENvbnRyb2xzIFByb2dyYW1zIGludG8gdGhlIGNhdGVnb3J5TGlzdCBhcnJheS4gKi9cclxuICAgICAgaWYgKGVsZW1lbnRbMjhdICYmIHR5cGVvZiBlbGVtZW50WzI4XSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBjb25zdCBpbnRlcm5hbENvbnRyb2xzID0ge1xyXG4gICAgICAgICAgcHJvZ3JhbU5hbWU6IGVsZW1lbnRbMjRdLFxyXG4gICAgICAgICAgcHJvZ3JhbUlkOiBlbGVtZW50WzI4XSxcclxuICAgICAgICAgIGFzc2lnbmVlOiBKU09OLnBhcnNlKGVsZW1lbnRbMzhdKSxcclxuICAgICAgICAgIHJldmlld2VyOiBKU09OLnBhcnNlKGVsZW1lbnRbMzldKSxcclxuICAgICAgICAgIG92ZXJzZWVyOiBKU09OLnBhcnNlKGVsZW1lbnRbNDBdKT8uY29uY2F0KEpTT04ucGFyc2UoZWxlbWVudFs0MV0pKSxcclxuICAgICAgICAgIHByb2dyYW1UeXBlOiAzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0LnB1c2goaW50ZXJuYWxDb250cm9scyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIFB1c2hpbmcgdGhlIHZhbHVlIG9mIG90aGVycyBQcm9ncmFtcyBpbnRvIHRoZSBjYXRlZ29yeUxpc3QgYXJyYXkuICovXHJcbiAgICAgIGlmIChlbGVtZW50WzI5XSAmJiB0eXBlb2YgZWxlbWVudFsyOV0gPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgY29uc3Qgb3RoZXJzID0ge1xyXG4gICAgICAgICAgcHJvZ3JhbU5hbWU6IGVsZW1lbnRbMjVdLFxyXG4gICAgICAgICAgcHJvZ3JhbUlkOiBlbGVtZW50WzI5XSxcclxuICAgICAgICAgIGFzc2lnbmVlOiBKU09OLnBhcnNlKGVsZW1lbnRbNDJdKSxcclxuICAgICAgICAgIHJldmlld2VyOiBKU09OLnBhcnNlKGVsZW1lbnRbNDNdKSxcclxuICAgICAgICAgIG92ZXJzZWVyOiBKU09OLnBhcnNlKGVsZW1lbnRbNDRdKT8uY29uY2F0KEpTT04ucGFyc2UoZWxlbWVudFs0NV0pKSxcclxuICAgICAgICAgIHByb2dyYW1UeXBlOiAwLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0LnB1c2gob3RoZXJzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLyogQ2hlY2tpbmcgaWYgdGhlIGVsZW1lbnRbOV0gaXMgbm90IG51bGwgYW5kIG5vdCBlbXB0eS4gSWYgaXQgaXMgbm90IG51bGwgYW5kIG5vdCBlbXB0eSwgaXQgaXNcclxuICAgICAgcHVzaGluZyB0aGUgZWxlbWVudFs5XSAoUkMpIHRvIHRoZSBhcnJheSAocmNMaXN0KS4gKi9cclxuICAgICAgaWYgKGVsZW1lbnRbOV0gJiYgZWxlbWVudFs5XSAhPSAnICcpIHtcclxuICAgICAgICBjb25zdCByYyA9IHtcclxuICAgICAgICAgIG5hbWU6IGVsZW1lbnRbOV0sXHJcbiAgICAgICAgICByY19pZDogZWxlbWVudFsxMF0sXHJcbiAgICAgICAgICBwYXJlbnRJZHM6IEpTT04ucGFyc2UoZWxlbWVudFsxMV0pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ucmNMaXN0LnB1c2gocmMpO1xyXG4gICAgICB9XHJcbiAgICAgIC8qIENoZWNraW5nIGlmIHRoZSBlbGVtZW50WzJdIGlzIG5vdCBlbXB0eSBhbmQgbm90IGVxdWFsIHRvIHNwYWNlLiBJZiBpdCBpcyBub3QgZW1wdHkgYW5kIG5vdFxyXG4gICAgICBlcXVhbCB0byBzcGFjZSwgdGhlbiBpdCBpcyBwdXNoaW5nIHRoZSBhc3NpZ25lZSBvYmplY3QgdG8gdGhlIGFzc2lnbmVlc0xpc3QgYXJyYXkuICovXHJcbiAgICAgIGlmIChlbGVtZW50WzE5XSAmJiBlbGVtZW50WzE5XSAhPSAnICcpIHtcclxuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHtcclxuICAgICAgICAgIG5hbWVBbmRFbWFpbDogZWxlbWVudFsxOV0sXHJcbiAgICAgICAgICAvLyBuYW1lOiBlbGVtZW50WzExXS5zcGxpdCgnICgnKVswXSxcclxuICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMTldLFxyXG4gICAgICAgICAgZW1haWw6IGVsZW1lbnRbMTldLFxyXG4gICAgICAgICAgZW1wbG95ZWVfaWQ6IGVsZW1lbnRbMjBdLFxyXG4gICAgICAgICAgbXlfbWVtYmVyX2lkOiBKU09OLnBhcnNlKGVsZW1lbnRbMjFdKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QucHVzaChhc3NpZ25lZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChlbGVtZW50WzJdICYmIGVsZW1lbnRbMl0gIT0gJyAnKSB7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSB7XHJcbiAgICAgICAgICBuYW1lQW5kRW1haWw6IGVsZW1lbnRbMl0sXHJcbiAgICAgICAgICAvLyBuYW1lOiBlbGVtZW50WzExXS5zcGxpdCgnICgnKVswXSxcclxuICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMF0sXHJcbiAgICAgICAgICBlbWFpbDogZWxlbWVudFsxXSxcclxuICAgICAgICAgIGVtcGxveWVlX2lkOiBlbGVtZW50WzNdLFxyXG4gICAgICAgICAgbXlfbWVtYmVyX2lkOiBlbGVtZW50WzRdLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ucmV2aWV3ZXJMaXN0LnB1c2gocmV2aWV3ZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIC8qIENoZWNraW5nIGlmIHRoZSBlbGVtZW50WzJdIGlzIG5vdCBlbXB0eSBhbmQgbm90IGVxdWFsIHRvIHNwYWNlLiBJZiBpdCBpcyBub3QgZW1wdHkgYW5kIG5vdFxyXG4gICAgICBlcXVhbCB0byBzcGFjZSwgaXQgd2lsbCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBwdXNoIGl0IHRvIHRoZSBhc3NpZ25vcnNMaXN0IGFycmF5LiAqL1xyXG4gICAgICBpZiAoZWxlbWVudFsyXSAmJiBlbGVtZW50WzJdICE9ICcgJykge1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbm9yID0ge1xyXG4gICAgICAgICAgbmFtZUFuZEVtYWlsOiBlbGVtZW50WzJdLFxyXG4gICAgICAgICAgbmFtZTogZWxlbWVudFswXSxcclxuICAgICAgICAgIGVtYWlsOiBlbGVtZW50WzFdLFxyXG4gICAgICAgICAgLy8gbmFtZTogZWxlbWVudFsxNF0uc3BsaXQoJyAoJylbMF0sXHJcbiAgICAgICAgICAvLyBlbWFpbDogZWxlbWVudFsxNF0uc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSxcclxuICAgICAgICAgIG1lbWJlcl9pZDogZWxlbWVudFs0XSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbm9yc0xpc3QucHVzaChhc3NpZ25vcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIENoZWNraW5nIGlmIHRoZSAxN3RoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRydWUuIElmIGl0IGlzLCBpdCBpcyBjcmVhdGluZyBhbiBvYmplY3Qgd2l0aCB0aGVcclxuICAgICAgMTZ0aCBlbGVtZW50IGFzIHRoZSBuYW1lIGFuZCB0aGUgMTd0aCBlbGVtZW50IGFzIHRoZSBpZC4gKi9cclxuICAgICAgaWYgKGVsZW1lbnRbMTddKSB7XHJcbiAgICAgICAgY29uc3QgcGFyZW50UmVzcG9uc2liaWxpdHkgPSB7XHJcbiAgICAgICAgICBuYW1lOiBlbGVtZW50WzE2XSxcclxuICAgICAgICAgIGlkOiBKU09OLnBhcnNlKGVsZW1lbnRbMTddKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnBhcmVudFJlc3BvbnNpYmlsaXR5LnB1c2gocGFyZW50UmVzcG9uc2liaWxpdHkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvKiBDcmVhdGluZyBhIGxpc3Qgb2YgY2hpbGQgY2F0ZWdvcmllcy4gYW5kIHB1c2ggdGhlIGNoaWxkIGNhdGVnb3JpZXMgdG8gdGhlaXIgcGFyZW50IHByb2dyYW0gKi9cclxuICAgIGlmICh0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3Q/LmZvckVhY2goKGNhdGVnb3J5OiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRlbXBMaXN0WzBdPy5pbmRleE9mKGNhdGVnb3J5Py5wcm9ncmFtSWQpO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIGxldCBjaGlsZENhdGVnb3J5ID0gW107XHJcbiAgICAgICAgICAvKiBDcmVhdGluZyBhIGxpc3Qgb2YgY2hpbGQgY2F0ZWdvcmllcy4gKi9cclxuICAgICAgICAgIGZvciAobGV0IGogPSAxOyB0cnVlOyBqKyspIHtcclxuICAgICAgICAgICAgaWYgKHRlbXBMaXN0W2pdICYmIHRlbXBMaXN0W2pdW2luZGV4XSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogdGVtcExpc3Rbal1baW5kZXggLSAxXSxcclxuICAgICAgICAgICAgICAgIGlkOiB0ZW1wTGlzdFtqXVtpbmRleF0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBjaGlsZENhdGVnb3J5LnB1c2goY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3RbaV1bJ2NoaWxkQ2F0ZWdvcnknXSA9IGNoaWxkQ2F0ZWdvcnk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGFuIGV2ZW50LCB3aGljaCBpcyBhIHN0cmluZywgYW5kIHRoZW4gaXQgc2V0cyB0aGUgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHZhcmlhYmxlIHRvXHJcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBidWxrVXBsb2FkIHZhcmlhYmxlLCB3aGljaCBpcyBhbiBvYmplY3QsIGFuZCB0aGVuIGl0IGFjY2Vzc2VzIHRoZSBwcm9wZXJ0eSBvZlxyXG4gICAqIHRoYXQgb2JqZWN0IHRoYXQgbWF0Y2hlcyB0aGUgZXZlbnQgc3RyaW5nLlxyXG4gICAqXHJcbiAgICogU28gaWYgdGhlIGV2ZW50IHN0cmluZyBpcyAnZnJlcXVlbmN5JywgdGhlbiB0aGUgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkIHZhcmlhYmxlIHdpbGwgYmUgc2V0IHRvXHJcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBmcmVxdWVuY3kgcHJvcGVydHkgb2YgdGhlIGJ1bGtVcGxvYWQgb2JqZWN0LlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGV2ZW50IHN0cmluZyBpcyAnb25nb2luZycsIHRoZW4gdGhlIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCB2YXJpYWJsZSB3aWxsIGJlIHNldCB0byB0aGVcclxuICAgKiB2YWx1ZSBvZiB0aGUgb25nb2luZyBwcm9wZXJ0eSBvZiB0aGUgYnVsa1VwbG9hZCBvYmplY3QuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgc3RyaW5nIGlzICdvbkNvbXBsZXRpb24nLCB0aGVuIHRoZSByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgdmFyaWFibGUgd2lsbCBiZSBzZXQgdG8gdGhlXHJcbiAgICogdmFsdWUgb2YgdGhlIG9uQ29tcGxldGlvbiBwcm9wZXJ0eSBvZiB0aGUgYnVsa1VwbG9hZCBvYmplY3QuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZXZlbnQgc3RyaW5nIGlzIGFueXRoaW5nIGVsc2UsIHRoZW4gdGhlIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCB2YXJpYWJsZSB3aWxsIGJlIHNldCB0b1xyXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGUgZnJlcXVlbmN5IHByb3BlcnR5IG9mIHRoZSBidWxrVXBsb2FkIG9iamVjdC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgLSBzdHJpbmcgLSB0aGUgZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGZyb20gdGhlIGNoaWxkIGNvbXBvbmVudCAoZnJlcXVlbmN5IHwgb25nb2luZyB8IG9uQ29tcGxldGlvbilcclxuICAgKi9cclxuICBzZWxlY3RlZFRhYihldmVudDogJ2ZyZXF1ZW5jeScgfCAnb25nb2luZycgfCAnb25Db21wbGV0aW9uJykge1xyXG4gICAgdGhpcy50YWJUeXBlID0gZXZlbnQ7XHJcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XHJcbiAgICAgIGNhc2UgJ2ZyZXF1ZW5jeSc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/LmZyZXF1ZW5jeTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb25nb2luZyc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/Lm9uZ29pbmc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uQ29tcGxldGlvbic6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB0aGlzLmJ1bGtVcGxvYWQ/Lm9uQ29tcGxldGlvbjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHRoaXMuYnVsa1VwbG9hZD8uZnJlcXVlbmN5O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgaW4gYSByZXBvcnQsIGEgdGFiIHR5cGUsIGFuZCBhIGJvb2xlYW4gdmFsdWUuIEl0IHRoZW4gcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhIGJ1bmNoIG9mXHJcbiAgICogcHJvcGVydGllcy5cclxuICAgKiA8L2NvZGU+XHJcbiAgICogQHBhcmFtIHthbnl9IHJlcG9ydCAtIGFueSA9Jmd0OyB0aGUgYXJyYXkgb2YgZGF0YVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJUeXBlIC0gc3RyaW5nIC0gdGhpcyBpcyB0aGUgdHlwZSBvZiB0YWIgdGhhdCBpcyBzZWxlY3RlZC5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzUHJvZ3JhbSAtIGJvb2xlYW5cclxuICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XHJcbiAgICovXHJcbiAgc2V0UmVwb3J0RGV0YWlscyhyZXBvcnQ6IGFueSwgdGFiVHlwZTogc3RyaW5nLCBpc1Byb2dyYW06IGJvb2xlYW4pIHtcclxuICAgIGxldCBvYmo6IGFueTtcclxuICAgIHN3aXRjaCAodGFiVHlwZSkge1xyXG4gICAgICBjYXNlICdmcmVxdWVuY3knOiB7XHJcbiAgICAgICAgaWYgKGlzUHJvZ3JhbSkge1xyXG4gICAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSxcclxuICAgICAgICAgICAgcHJvZ3JhbVR5cGU6IHJlcG9ydFsxXSxcclxuICAgICAgICAgICAgcHJvZ3JhbTogcmVwb3J0WzJdLFxyXG4gICAgICAgICAgICBwcm9ncmFtQ2F0ZWdvcnk6IHJlcG9ydFszXSxcclxuICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFs0XSxcclxuICAgICAgICAgICAgYXNzaWduZWU6IHJlcG9ydFs1XSxcclxuICAgICAgICAgICAgYXNzaWduZWVUeXBlOiByZXBvcnRbNl0sXHJcbiAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbN10sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzhdLFxyXG4gICAgICAgICAgICBkYXk6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgbW9udGg6IHJlcG9ydFsxMF0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiByZXBvcnRbMTFdLFxyXG4gICAgICAgICAgICBmYWlsZWRBZnRlcjogcmVwb3J0WzEyXSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFsxM10sXHJcbiAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbMTRdLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxNV0sXHJcbiAgICAgICAgICAgIG5vdGVzOiByZXBvcnRbMTZdLFxyXG4gICAgICAgICAgICBpc0Zvcm1hdDogcmVwb3J0WzE3XSxcclxuICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxOF0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgLy8gZXZpZGVuY2VOb3RlczogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgLy8gYXNzZXNzbWVudHM6IHJlcG9ydFsyMF0sXHJcbiAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMjBdLFxyXG4gICAgICAgICAgICByZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluOiByZXBvcnRbMjFdLFxyXG4gICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzIyXSxcclxuICAgICAgICAgICAgb3ZlcnNlZXI6IHJlcG9ydFsyM10sXHJcbiAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzI0XSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWREYXRhJ10gPSB0aGlzLmlzVmFsaWREYXRhKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ10gPSB0aGlzLnJldHVybklkcyhvYmo/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICBvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10gPSB0aGlzLnZhbGlkYXRlRGF0YVdpdGhQcm9ncmFtKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ3ZhbGlkRGF0ZSddID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKG9iaj8uZGF5LCBvYmo/Lm1vbnRoKTtcclxuICAgICAgICAgIG9ialsnaXNQYXN0RGF0ZSddID0gdGhpcy5pc1Bhc3REYXRlKG9iaj8uZGF5LCBvYmo/Lm1vbnRoKTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZCddID1cclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddICYmXHJcbiAgICAgICAgICAgIG9ialsndmFsaWREYXRlJ10gJiZcclxuICAgICAgICAgICAgIW9ialsnaXNQYXN0RGF0ZSddICYmXHJcbiAgICAgICAgICAgIG9iaj8uZnJlcXVlbmN5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgIU9iamVjdC52YWx1ZXMob2JqWyd1c2VyVmFsaWRhdGVXaXRoUHJvZ3JhbSddKS5pbmNsdWRlcyhmYWxzZSkgJiZcclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddO1xyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eU5hbWU6IHJlcG9ydFswXSxcclxuICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFsxXSxcclxuICAgICAgICAgICAgYXNzaWduZWU6IHJlcG9ydFsyXSxcclxuICAgICAgICAgICAgYXNzaWduZWVUeXBlOiByZXBvcnRbM10sXHJcbiAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbNF0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogcmVwb3J0WzVdLFxyXG4gICAgICAgICAgICBkYXk6IHJlcG9ydFs2XSxcclxuICAgICAgICAgICAgbW9udGg6IHJlcG9ydFs3XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFs4XSxcclxuICAgICAgICAgICAgZmFpbGVkQWZ0ZXI6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFsxMF0sXHJcbiAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbMTFdLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxMl0sXHJcbiAgICAgICAgICAgIG5vdGVzOiByZXBvcnRbMTNdLFxyXG4gICAgICAgICAgICBpc0Zvcm1hdDogcmVwb3J0WzE0XSxcclxuICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxNV0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgLy8gZXZpZGVuY2VOb3RlczogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgLy8gYXNzZXNzbWVudHM6IHJlcG9ydFsxN10sXHJcbiAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICByZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluOiByZXBvcnRbMThdLFxyXG4gICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgb3ZlcnNlZXI6IHJlcG9ydFsyMF0sXHJcbiAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzIxXSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWREYXRhJ10gPSB0aGlzLmlzVmFsaWREYXRhKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10gPSB0aGlzLnZhbGlkYXRlRGF0YVdpdGhQcm9ncmFtKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ10gPSB0aGlzLnJldHVybklkcyhvYmo/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICBvYmpbJ3ZhbGlkRGF0ZSddID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKG9iaj8uZGF5LCBvYmo/Lm1vbnRoKTtcclxuICAgICAgICAgIG9ialsnaXNQYXN0RGF0ZSddID0gdGhpcy5pc1Bhc3REYXRlKG9iaj8uZGF5LCBvYmo/Lm1vbnRoKTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZCddID1cclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddICYmXHJcbiAgICAgICAgICAgIG9ialsndmFsaWREYXRlJ10gJiZcclxuICAgICAgICAgICAgIW9ialsnaXNQYXN0RGF0ZSddICYmXHJcbiAgICAgICAgICAgIG9iaj8uZnJlcXVlbmN5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddO1xyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnb25nb2luZyc6IHtcclxuICAgICAgICBpZiAoaXNQcm9ncmFtKSB7XHJcbiAgICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogcmVwb3J0WzBdLFxyXG4gICAgICAgICAgICBwcm9ncmFtVHlwZTogcmVwb3J0WzFdLFxyXG4gICAgICAgICAgICBwcm9ncmFtOiByZXBvcnRbMl0sXHJcbiAgICAgICAgICAgIHByb2dyYW1DYXRlZ29yeTogcmVwb3J0WzNdLFxyXG4gICAgICAgICAgICBhc3NpZ25vcjogcmVwb3J0WzRdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZTogcmVwb3J0WzVdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZVR5cGU6IHJlcG9ydFs2XSxcclxuICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFs3XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogbnVsbCxcclxuICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbOF0sXHJcbiAgICAgICAgICAgIHNldFJlbWluZGVyOiByZXBvcnRbOV0sXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVJlbWluZGVyOiByZXBvcnRbMTBdLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogcmVwb3J0WzExXSxcclxuICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFsxMl0sXHJcbiAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0WzEzXSxcclxuICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIGlzRm9ybWF0OiByZXBvcnRbMTVdLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICAvLyBldmlkZW5jZU5vdGVzOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICAvLyBhc3Nlc3NtZW50czogcmVwb3J0WzE4XSxcclxuICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsxOF0sXHJcbiAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxOV0sXHJcbiAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMjBdLFxyXG4gICAgICAgICAgICBvdmVyc2VlcjogcmVwb3J0WzIxXSxcclxuICAgICAgICAgICAgbm90aWZ5T25GYWlsdXJlOiByZXBvcnRbMjJdLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSA9IHRoaXMuaXNWYWxpZERhdGEob2JqKTtcclxuICAgICAgICAgIG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSA9IHRoaXMudmFsaWRhdGVEYXRhV2l0aFByb2dyYW0ob2JqKTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXSA9IHRoaXMucmV0dXJuSWRzKG9iaj8uYXNzaWduZWUsICdlbnRydXN0ZWRfdG8nKVxyXG4gICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZCddID1cclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddICYmXHJcbiAgICAgICAgICAgICFPYmplY3QudmFsdWVzKG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSkuaW5jbHVkZXMoZmFsc2UpICYmXHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXTtcclxuICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0sXHJcbiAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbMV0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbMl0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlVHlwZTogcmVwb3J0WzNdLFxyXG4gICAgICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVwb3J0WzRdLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBudWxsLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFs1XSxcclxuICAgICAgICAgICAgc2V0UmVtaW5kZXI6IHJlcG9ydFs2XSxcclxuICAgICAgICAgICAgZnJlcXVlbmN5UmVtaW5kZXI6IHJlcG9ydFs3XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFs4XSxcclxuICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnRbMTBdLFxyXG4gICAgICAgICAgICBub3RlczogcmVwb3J0WzExXSxcclxuICAgICAgICAgICAgaXNGb3JtYXQ6IHJlcG9ydFsxMl0sXHJcbiAgICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMTNdLFxyXG4gICAgICAgICAgICBkb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQ6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIC8vIGV2aWRlbmNlTm90ZXM6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIC8vIGFzc2Vzc21lbnRzOiByZXBvcnRbMTVdLFxyXG4gICAgICAgICAgICByZXZpZXdlcjogcmVwb3J0WzE1XSxcclxuICAgICAgICAgICAgcmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbjogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsxN10sXHJcbiAgICAgICAgICAgIG92ZXJzZWVyOiByZXBvcnRbMThdLFxyXG4gICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsxOV0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddID0gdGhpcy5pc1ZhbGlkRGF0YShvYmopO1xyXG4gICAgICAgICAgb2JqWyd1c2VyVmFsaWRhdGVXaXRoUHJvZ3JhbSddID0gdGhpcy52YWxpZGF0ZURhdGFXaXRoUHJvZ3JhbShvYmopO1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddID0gdGhpcy5yZXR1cm5JZHMob2JqPy5hc3NpZ25lZSwgJ2VudHJ1c3RlZF90bycpXHJcbiAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgb2JqWydpc1ZhbGlkJ10gPSBvYmpbJ2lzVmFsaWREYXRhJ10gJiYgb2JqWydpc1ZhbGlkVXNlciddO1xyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnb25Db21wbGV0aW9uJzoge1xyXG4gICAgICAgIGlmIChpc1Byb2dyYW0pIHtcclxuICAgICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0sXHJcbiAgICAgICAgICAgIHByb2dyYW1UeXBlOiByZXBvcnRbMV0sXHJcbiAgICAgICAgICAgIHByb2dyYW06IHJlcG9ydFsyXSxcclxuICAgICAgICAgICAgcHJvZ3JhbUNhdGVnb3J5OiByZXBvcnRbM10sXHJcbiAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbNF0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbNV0sXHJcbiAgICAgICAgICAgIGFzc2lnbmVlVHlwZTogcmVwb3J0WzZdLFxyXG4gICAgICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVwb3J0WzddLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBudWxsLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3k6IHJlcG9ydFs4XSxcclxuICAgICAgICAgICAgcGFyZW50UmVzcG9uc2liaWxpdHk6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgZHVlRGF0ZTogcmVwb3J0WzEwXSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFsxMV0sXHJcbiAgICAgICAgICAgIGZhaWxlZEFmdGVyOiByZXBvcnRbMTJdLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogcmVwb3J0WzEzXSxcclxuICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFsxNF0sXHJcbiAgICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0WzE1XSxcclxuICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNl0sXHJcbiAgICAgICAgICAgIGlzRm9ybWF0OiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzE4XSxcclxuICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTldLFxyXG4gICAgICAgICAgICAvLyBldmlkZW5jZU5vdGVzOiByZXBvcnRbMTldLFxyXG4gICAgICAgICAgICAvLyBhc3Nlc3NtZW50czogcmVwb3J0WzIwXSxcclxuICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsyMF0sXHJcbiAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsyMV0sXHJcbiAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMjJdLFxyXG4gICAgICAgICAgICBvdmVyc2VlcjogcmVwb3J0WzIzXSxcclxuICAgICAgICAgICAgbm90aWZ5T25GYWlsdXJlOiByZXBvcnRbMjRdLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSA9IHRoaXMuaXNWYWxpZERhdGEob2JqKTtcclxuICAgICAgICAgIG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSA9IHRoaXMudmFsaWRhdGVEYXRhV2l0aFByb2dyYW0ob2JqKTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZFVzZXInXSA9IHRoaXMucmV0dXJuSWRzKG9iaj8uYXNzaWduZWUsICdlbnRydXN0ZWRfdG8nKVxyXG4gICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgIG9ialsnaXNWYWxpZCddID1cclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkRGF0YSddICYmXHJcbiAgICAgICAgICAgICFPYmplY3QudmFsdWVzKG9ialsndXNlclZhbGlkYXRlV2l0aFByb2dyYW0nXSkuaW5jbHVkZXMoZmFsc2UpICYmXHJcbiAgICAgICAgICAgIG9iaj8ucGFyZW50UmVzcG9uc2liaWxpdHk/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ107XHJcbiAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogcmVwb3J0WzBdLFxyXG4gICAgICAgICAgICBhc3NpZ25vcjogcmVwb3J0WzFdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZTogcmVwb3J0WzJdLFxyXG4gICAgICAgICAgICBhc3NpZ25lZVR5cGU6IHJlcG9ydFszXSxcclxuICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFs0XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogbnVsbCxcclxuICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbNV0sXHJcbiAgICAgICAgICAgIHBhcmVudFJlc3BvbnNpYmlsaXR5OiByZXBvcnRbNl0sXHJcbiAgICAgICAgICAgIGR1ZURhdGU6IHJlcG9ydFs3XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlXaW5kb3c6IHJlcG9ydFs4XSxcclxuICAgICAgICAgICAgZmFpbGVkQWZ0ZXI6IHJlcG9ydFs5XSxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlcG9ydFsxMF0sXHJcbiAgICAgICAgICAgIHJlcG9ydENsYXNzOiByZXBvcnRbMTFdLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsxMl0sXHJcbiAgICAgICAgICAgIG5vdGVzOiByZXBvcnRbMTNdLFxyXG4gICAgICAgICAgICBpc0Zvcm1hdDogcmVwb3J0WzE0XSxcclxuICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxNV0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgLy8gZXZpZGVuY2VOb3RlczogcmVwb3J0WzE2XSxcclxuICAgICAgICAgICAgLy8gYXNzZXNzbWVudHM6IHJlcG9ydFsxN10sXHJcbiAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMTddLFxyXG4gICAgICAgICAgICByZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluOiByZXBvcnRbMThdLFxyXG4gICAgICAgICAgICByZXZpZXdXaWxsQmVGYWlsZWRBZnRlcjogcmVwb3J0WzE5XSxcclxuICAgICAgICAgICAgb3ZlcnNlZXI6IHJlcG9ydFsyMF0sXHJcbiAgICAgICAgICAgIG5vdGlmeU9uRmFpbHVyZTogcmVwb3J0WzIxXSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWREYXRhJ10gPSB0aGlzLmlzVmFsaWREYXRhKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ3VzZXJWYWxpZGF0ZVdpdGhQcm9ncmFtJ10gPSB0aGlzLnZhbGlkYXRlRGF0YVdpdGhQcm9ncmFtKG9iaik7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWRVc2VyJ10gPSB0aGlzLnJldHVybklkcyhvYmo/LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJylcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICBvYmpbJ2lzVmFsaWQnXSA9XHJcbiAgICAgICAgICAgIG9ialsnaXNWYWxpZERhdGEnXSAmJlxyXG4gICAgICAgICAgICBvYmo/LnBhcmVudFJlc3BvbnNpYmlsaXR5Py5sZW5ndGggJiZcclxuICAgICAgICAgICAgb2JqWydpc1ZhbGlkVXNlciddO1xyXG4gICAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDoge1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZywgcmVtb3ZlcyBhbGwgd2hpdGVzcGFjZSwgYW5kIHJldHVybnMgdGhlIHN0cmluZ1xyXG4gICAqIEBwYXJhbSB7YW55fSBuYW1lIC0gdGhlIG5hbWUgb2YgdGhlIHJlc3BvbnNpYmlsaXR5XHJcbiAgICogQHJldHVybnMgdGhlIHRyaW1tZWROYW1lIHZhcmlhYmxlLlxyXG4gICAqL1xyXG4gIGNoZWNrVmFsaWRSZXNwb25zaWJpbGl0eU5hbWUobmFtZTogYW55KSB7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgaWYgKG5hbWUpIHtcclxuICAgICAgdmFyIHRyaW1tZWROYW1lID0gbmFtZS50b1N0cmluZygpLnJlcGxhY2UocmUsICcnKS50cmltKCk7XHJcbiAgICAgIHRyaW1tZWROYW1lID0gdHJpbW1lZE5hbWUucmVwbGFjZSgvICArL2csICcgJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJpbW1lZE5hbWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgcmVzcG9uc2liaWxpdHkgbmFtZSBpcyB2YWxpZCwgYW5kIHRoZSBhc3NpZ25lZSBhbmQgYXNzaWdub3IgYXJlIG5vdCBlbXB0eSwgdGhlbiByZXR1cm5cclxuICAgKiB0cnVlLiBPdGhlcndpc2UsIHJldHVybiBmYWxzZVxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gYW55IC0gdGhlIGRhdGEgdGhhdCBpcyBiZWluZyBwYXNzZWQgaW5cclxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXHJcbiAgICovXHJcbiAgaXNWYWxpZERhdGEoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eSA9IHRoaXMuY2hlY2tWYWxpZFJlc3BvbnNpYmlsaXR5TmFtZShcclxuICAgICAgZGF0YT8ucmVzcG9uc2liaWxpdHlOYW1lXHJcbiAgICApPy5sZW5ndGhcclxuICAgICAgPyB0cnVlXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgICBjb25zdCBhc3NpZ25lZSA9IGRhdGE/LmFzc2lnbmVlPy5sZW5ndGggPyB0cnVlIDogZmFsc2U7XHJcbiAgICBjb25zdCBmcmVxdWVuY3kgPSBkYXRhPy5mcmVxdWVuY3k/Lmxlbmd0aCA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmIChhc3NpZ25lZSAmJiByZXNwb25zaWJpbGl0eSAmJiBmcmVxdWVuY3kpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgYXNzaWdub3IgaXMgdGhlIHNhbWUgYXMgdGhlIG92ZXJzZWVyIG9yIHRoZSBOb3RpZnlPbkZhaWx1cmUsIG9yIGlmIHRoZSBhc3NpZ25vciBpcyBub3Qgc2V0XHJcbiAgICogYW5kIHRoZSBkZWZhdWx0T3duZXIgaXMgdGhlIHNhbWUgYXMgdGhlIG92ZXJzZWVyIG9yIHRoZSBOb3RpZnlPbkZhaWx1cmUsIG9yIGlmIHRoZSBhc3NpZ25lZSBpcyB0aGVcclxuICAgKiBzYW1lIGFzIHRoZSByZXZpZXdlciwgb3ZlcnNlZXIsIG9yIE5vdGlmeU9uRmFpbHVyZSwgb3IgaWYgdGhlIGFzc2lnbmVlIGlzIG5vdCBzZXQgYW5kIHRoZVxyXG4gICAqIGRlZmF1bHRPd25lciBpcyB0aGUgc2FtZSBhcyB0aGUgb3ZlcnNlZXIgb3IgdGhlIE5vdGlmeU9uRmFpbHVyZSwgb3IgaWYgdGhlIHJldmlld2VyIGlzIHRoZSBzYW1lIGFzXHJcbiAgICogdGhlIG92ZXJzZWVyIG9yIHRoZSBOb3RpZnlPbkZhaWx1cmUsIG9yIGlmIHRoZSBhc3NpZ25lZSBpcyBub3Qgc2V0LCB0aGVuIHJldHVybiBmYWxzZS4gT3RoZXJ3aXNlLFxyXG4gICAqIHJldHVybiB0cnVlXHJcbiAgICogQHBhcmFtIHthbnl9IGRhdGEgLSBhbnkgLSB0aGlzIGlzIHRoZSBkYXRhIHRoYXQgaXMgcGFzc2VkIGluIGZyb20gdGhlIGZvcm0uXHJcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlLlxyXG4gICAqL1xyXG4gIGlzVmFsaWRVc2VycyhkYXRhOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChcclxuICAgICAgKGRhdGE/LmFzc2lnbm9yICYmXHJcbiAgICAgICAgKGRhdGE/LmFzc2lnbm9yID09IGRhdGE/Lm92ZXJzZWVyIHx8XHJcbiAgICAgICAgICBkYXRhPy5hc3NpZ25vciA9PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoIWRhdGE/LmFzc2lnbm9yICYmXHJcbiAgICAgICAgKHRoaXMuZGVmYXVsdE93bmVyID09IGRhdGE/Lm92ZXJzZWVyIHx8XHJcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoZGF0YT8uYXNzaWduZWUgJiZcclxuICAgICAgICAoZGF0YT8uYXNzaWduZWUgPT0gZGF0YT8ucmV2aWV3ZXIgfHxcclxuICAgICAgICAgIGRhdGE/LmFzc2lnbmVlID09IGRhdGE/Lm92ZXJzZWVyIHx8XHJcbiAgICAgICAgICBkYXRhPy5hc3NpZ25lZSA9PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoIWRhdGE/LmFzc2lnbmVlICYmXHJcbiAgICAgICAgKHRoaXMuZGVmYXVsdE93bmVyID09IGRhdGE/Lm92ZXJzZWVyIHx8XHJcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9PSBkYXRhPy5ub3RpZnlPbkZhaWx1cmUpKSB8fFxyXG4gICAgICAoZGF0YT8ucmV2aWV3ZXIgJiZcclxuICAgICAgICAoZGF0YT8ucmV2aWV3ZXIgPT0gZGF0YT8ub3ZlcnNlZXIgfHxcclxuICAgICAgICAgIGRhdGE/LnJldmlld2VyID09IGRhdGE/Lm5vdGlmeU9uRmFpbHVyZSkpIHx8XHJcbiAgICAgICFkYXRhPy5hc3NpZ25lZVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgaW4gYSBkYXRhIG9iamVjdCBhbmQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCA0IGJvb2xlYW4gcHJvcGVydGllcy5cclxuICAgKiBUaGUgYm9vbGVhbiBwcm9wZXJ0aWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZXMgb2YgdGhlIGRhdGEgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhIC0gYW55ID0ge1xyXG4gICAqIEByZXR1cm5zIHtcclxuICAgKiAgIGlzVmFsaWRBc3NpZ25lZTogdHJ1ZSxcclxuICAgKiAgIGlzVmFsaWRBc3NpZ25vcjogdHJ1ZSxcclxuICAgKiAgIGlzVmFsaWRSZXZpZXdlcjogdHJ1ZSxcclxuICAgKiAgIGlzVmFsaWRPdmVyc2VlcjogdHJ1ZVxyXG4gICAqIH1cclxuICAgKi9cclxuICB2YWxpZGF0ZURhdGFXaXRoUHJvZ3JhbShkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgcHJvZ3JhbSA9IHRoaXMudGVtcGxhdGVJbmZvPy5jYXRlZ29yeUxpc3Q/LmZpbHRlcihcclxuICAgICAgKHByb2dyYW06IGFueSkgPT4gcHJvZ3JhbT8ucHJvZ3JhbU5hbWUgPT09IGRhdGE/LnByb2dyYW1cclxuICAgICk7XHJcbiAgICBjb25zdCBzZWxlY3RlZEFzc2lnbmVlID0gdGhpcy50ZW1wbGF0ZUluZm8/LmFzc2lnbmVlc0xpc3Q/LmZpbHRlcihcclxuICAgICAgKGFzc2lnbmVlOiBhbnkpID0+IGFzc2lnbmVlPy5uYW1lQW5kRW1haWwgPT09IGRhdGE/LmFzc2lnbmVlXHJcbiAgICApO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRBc3NpZ25vciA9IHRoaXMudGVtcGxhdGVJbmZvPy5hc3NpZ25vcnNMaXN0Py5maWx0ZXIoXHJcbiAgICAgIChhc3NpZ25vcjogYW55KSA9PiBhc3NpZ25vcj8ubmFtZUFuZEVtYWlsID09PSBkYXRhPy5hc3NpZ25vclxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUmV2aWV3ZXIgPSB0aGlzLnRlbXBsYXRlSW5mbz8ucmV2aWV3ZXJMaXN0Py5maWx0ZXIoXHJcbiAgICAgIChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlcj8ubmFtZUFuZEVtYWlsID09PSBkYXRhPy5yZXZpZXdlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkT3ZlcnNlZXIgPSB0aGlzLnRlbXBsYXRlSW5mbz8ucmV2aWV3ZXJMaXN0Py5maWx0ZXIoXHJcbiAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlcj8ubmFtZUFuZEVtYWlsID09PSBkYXRhPy5vdmVyc2VlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkTm90aWZ5T25GYWlsdXJlID0gdGhpcy50ZW1wbGF0ZUluZm8/LnJldmlld2VyTGlzdD8uZmlsdGVyKFxyXG4gICAgICAobm90aWZ5T25GYWlsdXJlOiBhbnkpID0+XHJcbiAgICAgICAgbm90aWZ5T25GYWlsdXJlPy5uYW1lQW5kRW1haWwgPT09IGRhdGE/Lm5vdGlmeU9uRmFpbHVyZVxyXG4gICAgKTtcclxuICAgIGxldCBpc1ZhbGlkQXNzaWduZWUgPSB0cnVlO1xyXG4gICAgbGV0IGlzVmFsaWRBc3NpZ25vciA9IHRydWU7XHJcbiAgICBsZXQgaXNWYWxpZFJldmlld2VyID0gdHJ1ZTtcclxuICAgIGxldCBpc1ZhbGlkT3ZlcnNlZXIgPSB0cnVlO1xyXG4gICAgbGV0IGlzVmFsaWROb3RpZnlPbkZhaWx1cmUgPSB0cnVlO1xyXG4gICAgaWYgKHByb2dyYW0gJiYgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24pIHtcclxuICAgICAgaWYgKHByb2dyYW1bMF0/LmFzc2lnbmVlPy5sZW5ndGggJiYgc2VsZWN0ZWRBc3NpZ25lZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgaXNWYWxpZEFzc2lnbmVlID0gcHJvZ3JhbVswXT8uYXNzaWduZWU/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgc2VsZWN0ZWRBc3NpZ25lZVswXT8ubXlfbWVtYmVyX2lkXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9ncmFtWzBdPy5yZXZpZXdlcj8ubGVuZ3RoICYmIHNlbGVjdGVkUmV2aWV3ZXI/Lmxlbmd0aCkge1xyXG4gICAgICAgIGlzVmFsaWRSZXZpZXdlciA9IHByb2dyYW1bMF0/LnJldmlld2VyPy5pbmNsdWRlcyhcclxuICAgICAgICAgIHNlbGVjdGVkUmV2aWV3ZXJbMF0/Lm15X21lbWJlcl9pZFxyXG4gICAgICAgIClcclxuICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJvZ3JhbVswXT8ub3ZlcnNlZXI/Lmxlbmd0aCAmJiBzZWxlY3RlZE92ZXJzZWVyPy5sZW5ndGgpIHtcclxuICAgICAgICBpc1ZhbGlkT3ZlcnNlZXIgPSBwcm9ncmFtWzBdPy5vdmVyc2Vlcj8uaW5jbHVkZXMoXHJcbiAgICAgICAgICBzZWxlY3RlZE92ZXJzZWVyWzBdPy5teV9tZW1iZXJfaWRcclxuICAgICAgICApXHJcbiAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb2dyYW1bMF0/Lm92ZXJzZWVyPy5sZW5ndGggJiYgc2VsZWN0ZWROb3RpZnlPbkZhaWx1cmU/Lmxlbmd0aCkge1xyXG4gICAgICAgIGlzVmFsaWROb3RpZnlPbkZhaWx1cmUgPSBwcm9ncmFtWzBdPy5vdmVyc2Vlcj8uaW5jbHVkZXMoXHJcbiAgICAgICAgICBzZWxlY3RlZE5vdGlmeU9uRmFpbHVyZVswXT8ubXlfbWVtYmVyX2lkXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpc1ZhbGlkQXNzaWduZWU6IGlzVmFsaWRBc3NpZ25lZSxcclxuICAgICAgaXNWYWxpZEFzc2lnbm9yOiBpc1ZhbGlkQXNzaWdub3IsXHJcbiAgICAgIGlzVmFsaWRSZXZpZXdlcjogaXNWYWxpZFJldmlld2VyLFxyXG4gICAgICBpc1ZhbGlkT3ZlcnNlZXI6IGlzVmFsaWRPdmVyc2VlcixcclxuICAgICAgaXNWYWxpZE5vdGlmeU9uRmFpbHVyZTogaXNWYWxpZE5vdGlmeU9uRmFpbHVyZSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyB0d28gc3RyaW5ncyBhcyBhcmd1bWVudHMsIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRocmVlIHByb3BlcnRpZXNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvZ3JhbU5hbWUgLSBzdHJpbmcgLSZndDsgTmFtZSBvZiB0aGUgcHJvZ3JhbVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hpbGVQcm9ncmFtXSAtIHN0cmluZyA9Jmd0OyB0aGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBzdWItcHJvZ3JhbVxyXG4gICAqIEByZXR1cm5zIHtcclxuICAgKiAgIHByb2dyYW1JZDogMSxcclxuICAgKiAgIGNoaWxkUHJvZ3JhbUlkOiAyLFxyXG4gICAqICAgY2F0ZWdvcnlJZDogJzEsMidcclxuICAgKiB9XHJcbiAgICovXHJcbiAgZ2V0UHJvZ3JhbUlkKHByb2dyYW1OYW1lOiBzdHJpbmcsIGNoaWxlUHJvZ3JhbT86IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBwcm9ncmFtID0gdGhpcy50ZW1wbGF0ZUluZm8/LmNhdGVnb3J5TGlzdD8uZmlsdGVyKFxyXG4gICAgICAocHJvZ3JhbTogYW55KSA9PiBwcm9ncmFtPy5wcm9ncmFtTmFtZSA9PT0gcHJvZ3JhbU5hbWVcclxuICAgICk7XHJcbiAgICBsZXQgc3ViUHJvZ3JhbTtcclxuICAgIGxldCBzdWJQcm9ncmFtSWQ7XHJcbiAgICBsZXQgY2F0ZWdvcnlJZDtcclxuICAgIGlmIChjaGlsZVByb2dyYW0/Lmxlbmd0aCAmJiBwcm9ncmFtPy5sZW5ndGgpIHtcclxuICAgICAgc3ViUHJvZ3JhbSA9IHByb2dyYW1bMF0/LmNoaWxkQ2F0ZWdvcnk/LmZpbHRlcihcclxuICAgICAgICAoc3ViUHJvZ3JhbTogYW55KSA9PiBzdWJQcm9ncmFtPy5uYW1lID09PSBjaGlsZVByb2dyYW1cclxuICAgICAgKTtcclxuICAgICAgc3ViUHJvZ3JhbUlkID0gc3ViUHJvZ3JhbT8ubGVuZ3RoID8gc3ViUHJvZ3JhbVswXT8uaWQgOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN1YlByb2dyYW1JZCAmJiBwcm9ncmFtPy5sZW5ndGgpIHtcclxuICAgICAgY2F0ZWdvcnlJZCA9XHJcbiAgICAgICAgcHJvZ3JhbVswXT8ucHJvZ3JhbUlkPy50b1N0cmluZygpICsgJywnICsgc3ViUHJvZ3JhbUlkPy50b1N0cmluZygpO1xyXG4gICAgfSBlbHNlIGlmIChwcm9ncmFtPy5sZW5ndGgpIHtcclxuICAgICAgY2F0ZWdvcnlJZCA9IHByb2dyYW1bMF0/LnByb2dyYW1JZD8udG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByb2dyYW1JZDogcHJvZ3JhbT8ubGVuZ3RoID8gcHJvZ3JhbVswXT8ucHJvZ3JhbUlkIDogdW5kZWZpbmVkLFxyXG4gICAgICBjaGlsZFByb2dyYW1JZDogc3ViUHJvZ3JhbUlkLFxyXG4gICAgICBjYXRlZ29yeUlkOiBjYXRlZ29yeUlkLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIGFzIGFuIGFyZ3VtZW50IGFuZCByZXR1cm5zIGEgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSB7YW55fSBpdGVtIC0gdGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgZ3JvdXAgdGhhdCBpcyBzZWxlY3RlZCBmcm9tIHRoZSBkcm9wZG93bi5cclxuICAgKiBpdCB3aWxsIHJldHVybiBlbXBsb3llZSBpZCBpbiB0aGlzIGZvcm0gJzEyMzQsMjM0NScuXHJcbiAgICovXHJcbiAgZ2V0RW1wbG95ZWVJZEZyb21Hcm91cChpdGVtOiBhbnkpIHtcclxuICAgIGxldCBlbXBJZDogYW55ID0gW107XHJcbiAgICBsZXQgZW1wbG95ZWVfaWQ6IGFueSA9IFtdO1xyXG4gICAgdGhpcy50ZW1wbGF0ZUluZm8/LmFzc2lnbmVlc0xpc3Q/LmZvckVhY2goKGVuRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbkVsZW1lbnQ/Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgZW1wSWQgPSBlbkVsZW1lbnQ/Lm15X21lbWJlcl9pZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZW1wSWQ/Lmxlbmd0aCkge1xyXG4gICAgICBlbXBJZD8uZm9yRWFjaCgoaWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5yZXZpZXdlckxpc3QuZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAodXNlcj8ubXlfbWVtYmVyX2lkID09IGlkKSB7XHJcbiAgICAgICAgICAgIGVtcGxveWVlX2lkPy5wdXNoKHVzZXI/LmVtcGxveWVlX2lkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW1wbG95ZWVfaWQ/LnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgaXRlbSBpcyBhIGdyb3VwLCByZXR1cm4gdHJ1ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKiBAcGFyYW0ge2FueX0gaXRlbSAtIGFueSAtIHRoZSBpdGVtIHRoYXQgaXMgYmVpbmcgY2hlY2tlZFxyXG4gICAqL1xyXG4gIGlzR3JvdXBTZWxlY3RlZChpdGVtOiBhbnkpIHtcclxuICAgIGxldCBpc0dyb3VwID0gZmFsc2U7XHJcbiAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKGVuRWxlbWVudDogYW55KTogYW55ID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVuRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSAmJlxyXG4gICAgICAgIChpdGVtPy5pbmNsdWRlcygnVXNlcnMpJykgfHwgaXRlbT8uaW5jbHVkZXMoJ1VzZXIpJykpICYmXHJcbiAgICAgICAgdHlwZW9mIGVuRWxlbWVudD8ubXlfbWVtYmVyX2lkID09ICdvYmplY3QnXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlzR3JvdXAgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpc0dyb3VwO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlza1wiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCIgPlxyXG4gICAgPCEtIC0gbWFpbiBjb250YWluZXIgc3RhcnRzIGhlcmUgLSAtPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc3ByZWFkc2hlZXQtbXVsdGlwbGUtY2F0ZWdvcnkuc3ZnXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxoND5Zb3UgY2FuIGVudHJ1c3QgbXVsdGlwbGUgcmVzcG9uc2liaWxpdGllcyBpbiBqdXN0IHR3byBlYXN5IHN0ZXBzOjwvaDQ+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgYW5kIGZpbGwgaW4gdGhlIGRldGFpbHMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5VcGxvYWQgdGhlIC54bHN4IGZpbGUgYW5kIHlvdeKAmXJlIGdvb2QgdG8gZ28hPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkb3dubG9hZFwiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdOT1RfRE9XTkxPQURJTkcnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIFRlbXBsYXRlPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIj5cclxuICAgICAgICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXHJcbiAgICAgICAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BREVEJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cclxuICAgICAgICAgICAgICAgICAgICBJcyB0aGUgZmlsZSBub3QgZG93bmxvYWRlZD9cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImlzV3JvbmdGaWxlIHx8IGlzV3JvbmdGb3JtYXR8fCBpc0ZpbGVFbXB0eVwiXHJcbiAgICAgICAgICAgID57e2Vycm9yTWVzc2FnZX19PC9wPiAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG48YXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldyAqbmdJZj1cInNob3dFeGNlbFwiXHJcbiAgICBbcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkXT1cInJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZFwiXHJcbiAgICBbYnVsa1VwbG9hZF09XCJidWxrVXBsb2FkXCJcclxuICAgIFtmaWxlTmFtZV09XCJmaWxlTmFtZVwiXHJcbiAgICBbbG9hZGVyXT1cImxvYWRlclwiXHJcbiAgICBbZGVmYXVsdE93bmVyXT1cImRlZmF1bHRPd25lclwiXHJcbiAgICBbdGFiVHlwZV09XCJ0YWJUeXBlXCJcclxuICAgIFtidWxrVXBsb2FkXT1cImJ1bGtVcGxvYWRcIlxyXG4gICAgKHN1Ym1pdFJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCk9XCJzdWJtaXRSZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQoKVwiXHJcbiAgICAoc2VsZWN0ZWRUYWIpPVwic2VsZWN0ZWRUYWIoJGV2ZW50KVwiXHJcbiAgICAoY2FuY2VsKT1cInJlc2V0KClcIlxyXG4gICAgW3Jlc3BvbnNpYmlsaXR5VHlwZV09XCInbXVsdGlUYWInXCI+XHJcbjwvYXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldz5cclxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuXHJcbjxpbnB1dCB0eXBlPVwiZmlsZVwiIFsobmdNb2RlbCldPVwiZmlsZVZhbHVlXCIgaWQ9XCJmaWxlSW5wdXRcIiBjbGFzcz1cImhpZGRlbi1pbnB1dFwiIGFjY2VwdD1cIi54bHN4XCIgKGNoYW5nZSk9XCJ1cGxvYWRlZEZpbGUoJGV2ZW50KVwiIG11bHRpcGxlIC8+XHJcbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmUgKm5nSWY9XCJzaG93U21pbGV5XCIgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIiAoYWN0aW9uKT1cImFjdGlvbigkZXZlbnQpXCIgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIj48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT4iXX0=