vcomply-workflow-engine 0.0.4 → 0.0.7

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 (192) hide show
  1. package/bundles/vcomply-workflow-engine.umd.js +8288 -6762
  2. package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
  3. package/esm2015/lib/add-multiple-responsibility/add-multiple-responsibility.component.js +18 -15
  4. package/esm2015/lib/add-multiple-responsibility/add-multiple-responsibility.component.ngfactory.js +2 -2
  5. package/esm2015/lib/add-multiple-risk/add-multiple-risk.component.js +6 -6
  6. package/esm2015/lib/add-multiple-risk/add-multiple-risk.component.ngfactory.js +3 -3
  7. package/esm2015/lib/confirmation-alert/confirmation-alert.component.js +1 -1
  8. package/esm2015/lib/create-documents/create-documents.component.js +1 -1
  9. package/esm2015/lib/formgroup/cs-select/cs-select.component.js +3 -3
  10. package/esm2015/lib/formgroup/cs-select/cs-select.component.ngfactory.js +3 -3
  11. package/esm2015/lib/formgroup/cs-switch/cs-switch.component.js +1 -1
  12. package/esm2015/lib/formgroup/select/cs-select/cs-select.component.js +3 -3
  13. package/esm2015/lib/formgroup/select/cs-select/cs-select.component.ngfactory.js +3 -3
  14. package/esm2015/lib/log-an-issue/log-an-issue.component.js +10 -13
  15. package/esm2015/lib/log-an-issue/log-an-issue.component.ngfactory.js +7 -7
  16. package/esm2015/lib/more-option/more-option.component.js +40 -5
  17. package/esm2015/lib/more-option/more-option.component.ngfactory.js +29 -13
  18. package/esm2015/lib/more-option/more-option.component.ngsummary.json +1 -1
  19. package/esm2015/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.js +15 -0
  20. package/esm2015/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.ngfactory.js +19 -0
  21. package/esm2015/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.ngsummary.json +1 -0
  22. package/esm2015/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.js +15 -0
  23. package/esm2015/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.ngfactory.js +19 -0
  24. package/esm2015/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.ngsummary.json +1 -0
  25. package/esm2015/lib/sharedComponents/assessment-list/assessment-list.component.js +187 -0
  26. package/esm2015/lib/sharedComponents/assessment-list/assessment-list.component.ngfactory.js +208 -0
  27. package/esm2015/lib/sharedComponents/assessment-list/assessment-list.component.ngsummary.json +1 -0
  28. package/esm2015/lib/sharedComponents/assessment-list/service/assessment.interface.js +2 -0
  29. package/esm2015/lib/sharedComponents/assessment-list/service/assessment.interface.ngsummary.json +1 -0
  30. package/esm2015/lib/sharedComponents/assessment-list/service/assessment.service.js +34 -0
  31. package/esm2015/lib/sharedComponents/assessment-list/service/assessment.service.ngsummary.json +1 -0
  32. package/esm2015/lib/sharedComponents/assessment-preview/assessment-preview.module.js +61 -0
  33. package/esm2015/lib/sharedComponents/assessment-preview/assessment-preview.module.ngfactory.js +21 -0
  34. package/esm2015/lib/sharedComponents/assessment-preview/assessment-preview.module.ngsummary.json +1 -0
  35. package/esm2015/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.js +29 -0
  36. package/esm2015/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.ngfactory.js +57 -0
  37. package/esm2015/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.ngsummary.json +1 -0
  38. package/esm2015/lib/sharedComponents/assessment-preview/date-time/date-time.component.js +32 -0
  39. package/esm2015/lib/sharedComponents/assessment-preview/date-time/date-time.component.ngfactory.js +88 -0
  40. package/esm2015/lib/sharedComponents/assessment-preview/date-time/date-time.component.ngsummary.json +1 -0
  41. package/esm2015/lib/sharedComponents/assessment-preview/device/device.component.js +22 -0
  42. package/esm2015/lib/sharedComponents/assessment-preview/device/device.component.ngfactory.js +26 -0
  43. package/esm2015/lib/sharedComponents/assessment-preview/device/device.component.ngsummary.json +1 -0
  44. package/esm2015/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.js +19 -0
  45. package/esm2015/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.ngfactory.js +39 -0
  46. package/esm2015/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.ngsummary.json +1 -0
  47. package/esm2015/lib/sharedComponents/assessment-preview/page-header/page-header.component.js +19 -0
  48. package/esm2015/lib/sharedComponents/assessment-preview/page-header/page-header.component.ngfactory.js +22 -0
  49. package/esm2015/lib/sharedComponents/assessment-preview/page-header/page-header.component.ngsummary.json +1 -0
  50. package/esm2015/lib/sharedComponents/assessment-preview/preview/preview.component.js +47 -0
  51. package/esm2015/lib/sharedComponents/assessment-preview/preview/preview.component.ngfactory.js +69 -0
  52. package/esm2015/lib/sharedComponents/assessment-preview/preview/preview.component.ngsummary.json +1 -0
  53. package/esm2015/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.js +15 -0
  54. package/esm2015/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.ngfactory.js +109 -0
  55. package/esm2015/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.ngsummary.json +1 -0
  56. package/esm2015/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.js +18 -0
  57. package/esm2015/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.ngfactory.js +96 -0
  58. package/esm2015/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.ngsummary.json +1 -0
  59. package/esm2015/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.js +29 -0
  60. package/esm2015/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.ngfactory.js +56 -0
  61. package/esm2015/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.ngsummary.json +1 -0
  62. package/esm2015/lib/sharedComponents/assessment-preview/select-question/select-question.component.js +32 -0
  63. package/esm2015/lib/sharedComponents/assessment-preview/select-question/select-question.component.ngfactory.js +23 -0
  64. package/esm2015/lib/sharedComponents/assessment-preview/select-question/select-question.component.ngsummary.json +1 -0
  65. package/esm2015/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.js +19 -0
  66. package/esm2015/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.ngfactory.js +21 -0
  67. package/esm2015/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.ngsummary.json +1 -0
  68. package/esm2015/lib/sharedComponents/assessment-preview/welcome/welcome.component.js +18 -0
  69. package/esm2015/lib/sharedComponents/assessment-preview/welcome/welcome.component.ngfactory.js +21 -0
  70. package/esm2015/lib/sharedComponents/assessment-preview/welcome/welcome.component.ngsummary.json +1 -0
  71. package/esm2015/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.js +3 -3
  72. package/esm2015/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.ngfactory.js +19 -51
  73. package/esm2015/lib/sharedComponents/bulk-view/bulk-view.component.js +2 -3
  74. package/esm2015/lib/sharedComponents/category-list/category-list.component.js +1 -1
  75. package/esm2015/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.js +2 -2
  76. package/esm2015/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.ngfactory.js +1 -1
  77. package/esm2015/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.js +2 -2
  78. package/esm2015/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.js +9 -9
  79. package/esm2015/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.ngfactory.js +47 -248
  80. package/esm2015/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.js +1 -1
  81. package/esm2015/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.js +1 -1
  82. package/esm2015/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.js +1 -1
  83. package/esm2015/lib/sharedComponents/format-and-evidence/format-and-evidence.component.js +2 -2
  84. package/esm2015/lib/sharedComponents/format-and-evidence/format-and-evidence.component.ngfactory.js +2 -2
  85. package/esm2015/lib/sharedComponents/framework-list/parent-table/parent-table.component.js +3 -3
  86. package/esm2015/lib/sharedComponents/framework-list/parent-table/parent-table.component.ngfactory.js +12 -12
  87. package/esm2015/lib/sharedComponents/no-data/no-data.component.js +3 -3
  88. package/esm2015/lib/sharedComponents/no-data/no-data.component.ngfactory.js +5 -5
  89. package/esm2015/lib/sharedComponents/no-data/no-data.module.ngfactory.js +1 -1
  90. package/esm2015/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.js +14 -0
  91. package/esm2015/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.ngfactory.js +19 -0
  92. package/esm2015/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.ngsummary.json +1 -0
  93. package/esm2015/lib/sharedComponents/radio-list-with-pagination/radio-list.component.js +111 -0
  94. package/esm2015/lib/sharedComponents/radio-list-with-pagination/radio-list.component.ngfactory.js +87 -0
  95. package/esm2015/lib/sharedComponents/radio-list-with-pagination/radio-list.component.ngsummary.json +1 -0
  96. package/esm2015/lib/sharedComponents/review-frequency/review-frequency.component.js +1 -1
  97. package/esm2015/lib/sharedComponents/risk-classification/risk-classification.component.js +1 -1
  98. package/esm2015/lib/ui-kit/pagination/pagination/pagination.component.js +111 -0
  99. package/esm2015/lib/ui-kit/pagination/pagination/pagination.component.ngfactory.js +57 -0
  100. package/esm2015/lib/ui-kit/pagination/pagination/pagination.component.ngsummary.json +1 -0
  101. package/esm2015/lib/ui-kit/pagination/pagination.module.js +21 -0
  102. package/esm2015/lib/ui-kit/pagination/pagination.module.ngfactory.js +13 -0
  103. package/esm2015/lib/ui-kit/pagination/pagination.module.ngsummary.json +1 -0
  104. package/esm2015/lib/ui-kit/popover/popover.component.js +5 -4
  105. package/esm2015/lib/ui-kit/popover/popover.directive.js +55 -1
  106. package/esm2015/lib/ui-kit/popover/popover.directive.ngsummary.json +1 -1
  107. package/esm2015/lib/workflow-assessment/workflow-assessment.component.js +226 -0
  108. package/esm2015/lib/workflow-assessment/workflow-assessment.component.ngfactory.js +244 -0
  109. package/esm2015/lib/workflow-assessment/workflow-assessment.component.ngsummary.json +1 -0
  110. package/esm2015/lib/workflow-compliance/workflow-compliance.component.js +111 -16
  111. package/esm2015/lib/workflow-compliance/workflow-compliance.component.ngfactory.js +135 -94
  112. package/esm2015/lib/workflow-compliance/workflow-compliance.component.ngsummary.json +1 -1
  113. package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.js +47 -6
  114. package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.ngfactory.js +78 -40
  115. package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.ngsummary.json +1 -1
  116. package/esm2015/lib/workflow-engine.module.js +21 -3
  117. package/esm2015/lib/workflow-engine.module.ngfactory.js +4 -2
  118. package/esm2015/lib/workflow-engine.module.ngsummary.json +1 -1
  119. package/esm2015/lib/workflow-pagination/workflow-pagination.component.js +95 -6
  120. package/esm2015/lib/workflow-pagination/workflow-pagination.component.ngfactory.js +23 -7
  121. package/esm2015/lib/workflow-pagination/workflow-pagination.component.ngsummary.json +1 -1
  122. package/esm2015/lib/workflow-policy/workflow-policy.component.js +5 -5
  123. package/esm2015/lib/workflow-policy/workflow-policy.component.ngfactory.js +13 -13
  124. package/esm2015/lib/workflow-risk/workflow-risk.component.js +20 -3
  125. package/esm2015/lib/workflow-risk/workflow-risk.component.ngfactory.js +7 -7
  126. package/esm2015/lib/workflow-services/assessment.service.js +68 -0
  127. package/esm2015/lib/workflow-services/assessment.service.ngsummary.json +1 -0
  128. package/esm2015/lib/workflow-services/auth.service.js +3 -1
  129. package/esm2015/lib/workflow-services/responsibility.service.js +15 -2
  130. package/esm2015/lib/workflow-services/responsibility.service.ngsummary.json +1 -1
  131. package/esm2015/lib/workflow-survey-form/workflow-survey-form.component.js +2 -2
  132. package/esm2015/lib/workflow-survey-form/workflow-survey-form.component.ngfactory.js +2 -2
  133. package/esm2015/vcomply-workflow-engine.js +67 -44
  134. package/esm2015/vcomply-workflow-engine.ngsummary.json +1 -1
  135. package/fesm2015/vcomply-workflow-engine.js +2689 -1244
  136. package/fesm2015/vcomply-workflow-engine.js.map +1 -1
  137. package/lib/more-option/more-option.component.d.ts +2 -0
  138. package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts +5 -0
  139. package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.ngfactory.d.ts +1 -0
  140. package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts +5 -0
  141. package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.ngfactory.d.ts +1 -0
  142. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +80 -0
  143. package/lib/sharedComponents/assessment-list/assessment-list.component.ngfactory.d.ts +1 -0
  144. package/lib/sharedComponents/assessment-list/service/assessment.interface.d.ts +22 -0
  145. package/lib/sharedComponents/assessment-list/service/assessment.service.d.ts +10 -0
  146. package/lib/sharedComponents/assessment-preview/assessment-preview.module.d.ts +2 -0
  147. package/lib/sharedComponents/assessment-preview/assessment-preview.module.ngfactory.d.ts +3 -0
  148. package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts +9 -0
  149. package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.ngfactory.d.ts +1 -0
  150. package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts +12 -0
  151. package/lib/sharedComponents/assessment-preview/date-time/date-time.component.ngfactory.d.ts +1 -0
  152. package/lib/sharedComponents/assessment-preview/device/device.component.d.ts +7 -0
  153. package/lib/sharedComponents/assessment-preview/device/device.component.ngfactory.d.ts +1 -0
  154. package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts +7 -0
  155. package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.ngfactory.d.ts +1 -0
  156. package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts +7 -0
  157. package/lib/sharedComponents/assessment-preview/page-header/page-header.component.ngfactory.d.ts +1 -0
  158. package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts +11 -0
  159. package/lib/sharedComponents/assessment-preview/preview/preview.component.ngfactory.d.ts +1 -0
  160. package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts +5 -0
  161. package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.ngfactory.d.ts +1 -0
  162. package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts +6 -0
  163. package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.ngfactory.d.ts +1 -0
  164. package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts +9 -0
  165. package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.ngfactory.d.ts +1 -0
  166. package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts +9 -0
  167. package/lib/sharedComponents/assessment-preview/select-question/select-question.component.ngfactory.d.ts +1 -0
  168. package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts +7 -0
  169. package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.ngfactory.d.ts +1 -0
  170. package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts +6 -0
  171. package/lib/sharedComponents/assessment-preview/welcome/welcome.component.ngfactory.d.ts +1 -0
  172. package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts +5 -0
  173. package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.ngfactory.d.ts +1 -0
  174. package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +47 -0
  175. package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.ngfactory.d.ts +1 -0
  176. package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +23 -0
  177. package/lib/ui-kit/pagination/pagination/pagination.component.ngfactory.d.ts +1 -0
  178. package/lib/ui-kit/pagination/pagination.module.d.ts +2 -0
  179. package/lib/ui-kit/pagination/pagination.module.ngfactory.d.ts +3 -0
  180. package/lib/ui-kit/popover/popover.directive.d.ts +1 -0
  181. package/lib/workflow-assessment/workflow-assessment.component.d.ts +63 -0
  182. package/lib/workflow-assessment/workflow-assessment.component.ngfactory.d.ts +1 -0
  183. package/lib/workflow-compliance/workflow-compliance.component.d.ts +13 -1
  184. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +9 -1
  185. package/lib/workflow-pagination/workflow-pagination.component.d.ts +18 -1
  186. package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
  187. package/lib/workflow-services/assessment.service.d.ts +20 -0
  188. package/lib/workflow-services/auth.service.d.ts +2 -0
  189. package/lib/workflow-services/responsibility.service.d.ts +5 -0
  190. package/package.json +1 -1
  191. package/vcomply-workflow-engine.d.ts +66 -43
  192. package/vcomply-workflow-engine.metadata.json +1 -1
@@ -599,7 +599,7 @@ export class LogAnIssueComponent {
599
599
  }
600
600
  }
601
601
  addIssue() {
602
- var _a, _b, _c, _e, _f, _g, _h, _j, _k, _l, _m;
602
+ var _a, _b, _c, _e, _f, _g, _h, _j;
603
603
  const form = cloneDeep(this.logIssueForm);
604
604
  if (form.isAssignToMyself) {
605
605
  form.entrustTo = this.listData.userList.filter((emplist) => emplist.my_member_id === this.currentUser.id);
@@ -611,28 +611,25 @@ export class LogAnIssueComponent {
611
611
  }
612
612
  const PAYLOAD = this.logService.payloadBuilder(form, this.additionalOptionStatus);
613
613
  if (this.mode === 'CREATE') {
614
- PAYLOAD.linkage_object = { source: this.openedFrom };
614
+ PAYLOAD.linkage_object = { source: this.openedFrom, type: '', type_id: 0, source_id: 0 };
615
615
  if (this.openedFrom === 'COMPLIANCE_WORKROOM' && ((_a = this.reponsibilityData) === null || _a === void 0 ? void 0 : _a.responsibilityId)) {
616
- PAYLOAD.linkage_object = { compliance: { ids: [(_b = this.reponsibilityData) === null || _b === void 0 ? void 0 : _b.responsibilityId], source: "RESPONSIBILITY_WORKROOM" } };
616
+ PAYLOAD.linkage_object = { source_id: (_b = this.reponsibilityData) === null || _b === void 0 ? void 0 : _b.responsibilityId, type: '', type_id: 0 };
617
617
  }
618
618
  if (['VIEW_AUDIT_EXECUTION_SUMMARY', 'EXECUTE_AUDIT_PLAN'].includes(this.openedFrom)) {
619
619
  if (((_c = this.logIssueForm) === null || _c === void 0 ? void 0 : _c.linkageType) && ((_e = this.logIssueForm) === null || _e === void 0 ? void 0 : _e.linkedControlRisk.length) > 0) {
620
- if (((_f = this.logIssueForm) === null || _f === void 0 ? void 0 : _f.linkageType) === 'RISK') {
621
- PAYLOAD.linkage_object.risk = { ids: [(_h = (_g = this.logIssueForm) === null || _g === void 0 ? void 0 : _g.linkedControlRisk[0]) === null || _h === void 0 ? void 0 : _h.itemId], source: this.openedFrom };
622
- }
623
- if (((_j = this.logIssueForm) === null || _j === void 0 ? void 0 : _j.linkageType) === 'RESPONSIBILITY') {
624
- PAYLOAD.linkage_object.compliance = { ids: [(_l = (_k = this.logIssueForm) === null || _k === void 0 ? void 0 : _k.linkedControlRisk[0]) === null || _l === void 0 ? void 0 : _l.itemId], source: this.openedFrom };
620
+ if (['RISK', 'RESPONSIBILITY'].includes((_f = this.logIssueForm) === null || _f === void 0 ? void 0 : _f.linkageType)) {
621
+ PAYLOAD.linkage_object.source_id = (_h = (_g = this.logIssueForm) === null || _g === void 0 ? void 0 : _g.linkedControlRisk[0]) === null || _h === void 0 ? void 0 : _h.itemId;
625
622
  }
626
623
  }
627
624
  }
628
625
  if (['AUDIT_WORKROOM', 'VIEW_AUDIT_EXECUTION_SUMMARY', 'EXECUTE_AUDIT_PLAN'].includes(this.openedFrom)) {
629
626
  if (this.issueDetails.auditPlanId) {
630
- PAYLOAD.linkage_object.audit_plan = { ids: [this.issueDetails.auditPlanId], source: this.openedFrom };
627
+ PAYLOAD.linkage_object.source_id = this.issueDetails.auditPlanId;
631
628
  }
632
629
  }
633
630
  }
634
631
  if (this.mode === 'EDIT') {
635
- PAYLOAD.IssueLinkage = (_m = this.dataForEdit) === null || _m === void 0 ? void 0 : _m.linkage_object;
632
+ PAYLOAD.IssueLinkage = (_j = this.dataForEdit) === null || _j === void 0 ? void 0 : _j.linkage_object;
636
633
  }
637
634
  this.loader = true;
638
635
  this.uiKitService.isLoader = true;
@@ -865,8 +862,8 @@ export class LogAnIssueComponent {
865
862
  LogAnIssueComponent.decorators = [
866
863
  { type: Component, args: [{
867
864
  selector: 'app-log-an-issue',
868
- template: "<!-- <p>log-an-issue works!</p> -->\r\n<div class=\"log-an-issue\" *ngIf=\"!showSmiley\">\r\n <div class=\"form-group-row\" *ngIf=\"['COMPLIANCE_WORKROOM'].includes(openedFrom)\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Linked to\r\n </label>\r\n\r\n <div class=\"selected\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\">\r\n {{reponsibilityData?.responsibilityName}}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" *ngIf=\"['AUDIT_WORKROOM','VIEW_AUDIT_EXECUTION_SUMMARY','EXECUTE_AUDIT_PLAN'].includes(openedFrom)\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Issue linked with\r\n </label>\r\n <div class=\"selected\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\">\r\n {{issueDetails?.auditPlanName}}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"form-group-row\" *ngIf=\"['VIEW_AUDIT_EXECUTION_SUMMARY','EXECUTE_AUDIT_PLAN'].includes(openedFrom) || isRiskControlVisible\" [class.active]=\"activeField === 'ISSUE_CONTROL_RISK'\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_CONTROL_RISK' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.linkedControlRisk?.length > 0 \">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\" alt=\"\"\r\n *ngIf=\"logIssueForm?.linkedControlRisk?.length === 0 || activeField === 'ISSUE_CONTROL_RISK' \" />\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.linkedControlRisk?.length > 0 && activeField !== 'ISSUE_CONTROL_RISK'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Select a control or risk</label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.linkedControlRisk || logIssueForm?.linkedControlRisk?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_CONTROL_RISK','ISSUE_CONTROL_RISK')\" type=\"text\"\r\n placeholder=\"Select a control or risk.\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.linkedControlRisk?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_CONTROL_RISK',logIssueForm?.linkedControlRisk[0])\">&#xe90d;</i>{{logIssueForm?.linkedControlRisk[0]?.itemControlName}}</span>\r\n </div>\r\n <button class=\"edit\" *ngIf=\"activeField !=='ISSUE_CONTROL_RISK'\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_CONTROL_RISK','ISSUE_CONTROL_RISK')\"><i\r\n class=\"icons\">&#xe90c;</i>Edit</button>\r\n </div>\r\n </div>\r\n <div class=\"vx-form-group\" *ngFor=\"let tag of logIssueForm.issueCustomTag|keyvalue\">\r\n <!-- {{logIssueForm.issueCustomTag|json}} -->\r\n <label class=\"vx-control-panel\">{{tag?.value?.custom_tag_name}}</label>\r\n <input type=\"text\" [placeholder]=\"tag?.value?.custom_tag_name\" [(ngModel)]=\"tag.value.custom_tag_value\">\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n <div class=\"form-group-row\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_TITLE' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm.issueName.trim().length\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\" alt=\"name\"\r\n *ngIf=\"!logIssueForm.issueName.trim().length || activeField === 'ISSUE_TITLE'\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm.issueName.trim().length && activeField !== 'ISSUE_TITLE'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Issue Title <span class=\"required\">*</span>\r\n </label>\r\n <input type=\"text\" placeholder=\"Enter issue Title\" [(ngModel)]=\"logIssueForm.issueName\"\r\n (focusin)=\"setActiveFieldSelector('ISSUE_TITLE','ISSUE_TITLE')\"\r\n (keyup)=\"logIssueForm.issueName?.trim()?.length > 0 ? removeError('issueName'): null\"\r\n (focusout)=\"setActiveFieldSelector('','')\" *ngIf=\"logIssueForm.issueName =='' || activeSelector === 'ISSUE_TITLE'\">\r\n <div class=\"selected\" *ngIf=\"logIssueForm.issueName.length && activeSelector !== 'ISSUE_TITLE'\">\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{logIssueForm.issueName}}</span>\r\n </div>\r\n <button class=\"edit\" (click)=\"setActiveFieldSelector('ISSUE_TITLE','ISSUE_TITLE')\" type=\"button\"><i class=\"icons\">&#xe90c;</i> Edit</button>\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueName')\">Enter a name for this issue.</p>\r\n <ng-container *ngIf=\"AttachmentTrack[0]?.length > 0 \">\r\n <div class=\"file-list\" *ngFor=\"let uploadingFile of AttachmentTrack[0]\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{uploadingFile}}</span>\r\n <!-- <button>\r\n <i class=\"icons\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n <app-line-loader [loaderHeight]=\"2\"></app-line-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"logIssueForm?.issueDescriptionAttachements?.length > 0\">\r\n <div class=\"file-list\" *ngFor=\"let file of logIssueForm?.issueDescriptionAttachements\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{file?.name}}</span>\r\n <button>\r\n <i class=\"icons\" (click)=\"deleteFile(file,'ISSUE_DESCRIPTION')\">&#xe90d;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <marx-editor [editorConfig]=\"{mode: 'prime',file:false,\r\n colorPalette: true,\r\n link: true,\r\n placeholder: 'Description'}\" [(ngModel)]=\"logIssueForm.issueDescription\"\r\n (sendSavedFiles)=\"selectFile('ISSUE_DESCRIPTION',$event)\" (clickOutside)=\"checkDescription()\"></marx-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [class.active]=\"activeField === 'ISSUE_CATEGORY'\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_CATEGORY' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issueCategory?.length > 0 \">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\" alt=\"\"\r\n *ngIf=\"logIssueForm?.issueCategory?.length === 0 || activeField === 'ISSUE_CATEGORY' \" />\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issueCategory?.length > 0 && activeField !== 'ISSUE_CATEGORY'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Issue Category </label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.issueCategory || logIssueForm?.issueCategory?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_CATEGORY','ISSUE_CATEGORY')\" type=\"text\"\r\n placeholder=\"Select a category for this issue\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.issueCategory?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_CATEGORY',logIssueForm?.issueCategory[0])\">&#xe90d;</i>{{logIssueForm?.issueCategory[0]?.category_name}}</span>\r\n </div>\r\n <button class=\"edit\" *ngIf=\"activeField !=='ISSUE_CATEGORY'\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_CATEGORY','ISSUE_CATEGORY')\"><i\r\n class=\"icons\">&#xe90c;</i>Edit</button>\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueCategory')\">Select an issue\r\n category.</p>\r\n </div>\r\n <div class=\"vx-form-group\" *ngFor=\"let tag of logIssueForm.issueCustomTag\">\r\n <!-- {{logIssueForm.issueCustomTag|json}} -->\r\n <label class=\"vx-control-panel\">{{tag?.name}}</label>\r\n <input type=\"text\" [placeholder]=\"tag?.name\" [(ngModel)]=\"tag.value\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" *ngIf=\"isRCVisible\" [class.active]=\"false\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_RC' && sideSelectorElements.includes(activeField)\"\r\n >\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issueRC?.length > 0\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\" alt=\"\" *ngIf=\"logIssueForm?.issueRC?.length === 0\">\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"logIssueForm?.issueRC?.length > 0 && activeField !== 'ISSUE_RC'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Responsibility Center\r\n <span class=\"required\" *ngIf=\"isRCMandatory\">*</span>\r\n </label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.issueRC || logIssueForm?.issueRC?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_RC','ISSUE_RC')\" type=\"text\"\r\n placeholder=\"Select Responsibility Center(s)\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.issueRC?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" *ngIf=\"!isRCPreSelected\"\r\n (click)=\"deleteItem('ISSUE_RC',logIssueForm?.issueRC[0])\">&#xe90d;</i>{{logIssueForm?.issueRC[0]?.item_name}}</span>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_RC' && !isRCPreSelected\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_RC','ISSUE_RC')\"><i\r\n class=\"icons\">&#xe90c;</i>Edit</button>\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueRC')\">Select the Responsibility Center associated with this issue.</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_WHO' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.entrustTo?.length > 0\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\" alt=\"im\"\r\n *ngIf=\"(logIssueForm?.entrustTo?.length === 0 && !logIssueForm?.isAssignToMyself) || activeField === 'ISSUE_WHO' \">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"(logIssueForm?.entrustTo?.length > 0 || logIssueForm?.isAssignToMyself ) && activeField !== 'ISSUE_WHO'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Who? <span class=\"required\">*</span></label>\r\n <div class=\"select\" [class.disabled]=\"logIssueForm?.isAssignToMyself\"\r\n *ngIf=\"!logIssueForm?.entrustTo || logIssueForm?.entrustTo?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_WHO','ISSUE_WHO')\"\r\n [disabled]=\"logIssueForm?.isAssignToMyself\" type=\"text\"\r\n placeholder=\"Who is responsible for completing the responsibility?\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.entrustTo?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_WHO',logIssueForm?.entrustTo[0])\">&#xe90d;</i>{{logIssueForm?.entrustTo[0]?.employee_name}}</span>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_WHO'\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_WHO','ISSUE_WHO')\"><i\r\n class=\"icons\">&#xe90c;</i>Edit</button>\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('entrustTo')\">Select the person responsible for resolving this issue.</p>\r\n <div class=\"switch-row align-right\" [class.disabled]=\"activeField === 'ISSUE_WHO'\">\r\n <app-cs-switch [disabled]=\"activeField === 'ISSUE_WHO'\" [(ngValue)]=\"logIssueForm.isAssignToMyself\" (ngValueChange)=\"assignMyself($event)\">OR\r\n ASSIGN TO MYSELF\r\n </app-cs-switch>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_DATE_TIME' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issueDueDate \">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\" alt=\"im\"\r\n *ngIf=\"!logIssueForm?.issueDueDate || activeField === 'ISSUE_DATE_TIME' \">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issueDueDate && activeField !== 'ISSUE_DATE_TIME'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Maximum Time to Resolve <span class=\"required\">*</span></label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input type=\"text\" readonly placeholder=\"Set a deadline.\"\r\n [value]=\"logIssueForm.issueDueDate | date: 'dd MMM yyyy'\" (click)=\"openDatePicker();\">\r\n <i class=\"icons\">&#xe92d;</i>\r\n <dp-date-picker #datePicker (onSelect)=\"datePickerOverlay = false;closeDatePicker($event);removeError('issueDueDate')\" [config]=\"dateConfig\"\r\n [(ngModel)]=\"logIssueForm.issueDueDate\" >\r\n </dp-date-picker>\r\n <div class=\"vx-overlay\" (click)=\"closeDatePicker($event)\" *ngIf=\"datePickerOverlay\"></div>\r\n </div>\r\n\r\n <div class=\"picker-group\">\r\n\r\n <input (mouseover)=\"setCurrentTime()\" [(ngModel)]=\"logIssueForm.issueDueTime\" [value]=\"logIssueForm.issueDueTime\" readonly\r\n class=\"time\" aria-label=\"12hr format\" [ngxTimepicker]=\"dailyTime\" placeholder=\"Select Time\"\r\n type=\"text\" [min]=\"currentTime\" readonly>\r\n <i class=\"icons\">&#xe955;</i>\r\n <ngx-material-timepicker (opened)=\"setActiveFieldSelector('ISSUE_DATE_TIME', 'ISSUE_DATE_TIME')\"\r\n (closed)=\"setActiveFieldSelector('','')\" #dailyTime [defaultTime]=\"'11:59 pm'\">\r\n </ngx-material-timepicker>\r\n </div>\r\n\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueDueDate')\">Select the date by which this issue needs to be resolved.</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm.issueRecommendation\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/recommended-action.svg\" alt=\"im\" *ngIf=\"!(logIssueForm.issueRecommendation | spaceBreaker).length\">\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"(logIssueForm.issueRecommendation | spaceBreaker).length>0\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Recommended Actions <span class=\"required\">*</span></label>\r\n <ng-container *ngIf=\"AttachmentTrack[1]?.length > 0 \">\r\n <div class=\"file-list\" *ngFor=\"let uploadingFile of AttachmentTrack[1]\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{uploadingFile}}</span>\r\n <!-- <button>\r\n <i class=\"icons\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n <app-line-loader [loaderHeight]=\"2\"></app-line-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"logIssueForm?.recommendedActionsAttachments?.length > 0\">\r\n <div class=\"file-list\" *ngFor=\"let file of logIssueForm?.recommendedActionsAttachments\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{file?.name}}</span>\r\n <button>\r\n <i class=\"icons\" (click)=\"deleteFile(file,'RECOMMENDED_ACTIONS')\">&#xe90d;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <marx-editor [(ngModel)]=\"logIssueForm.issueRecommendation\" [editorConfig]=\"{mode: 'prime',\r\n colorPalette: true,\r\n link: true,\r\n file:true,\r\n placeholder: 'Recommended actions'}\" (ngModelChange)=\"logIssueForm?.issueRecommendation?.trim()?.length > 0 ? removeError('issueRecommendation'):null\"\r\n (clickOutside)=\"checkDescription()\" (sendSavedFiles)=\"selectFile('RECOMMENDED_ACTIONS',$event)\"></marx-editor>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueRecommendation')\">Specify the recommended actions to resolve this issue.</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" *ngIf=\"!hiddenList.includes('RISK_CLASSIFICATION')\" [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm.issueRiskRating\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/risks.svg\" alt=\"im\" *ngIf=\"!logIssueForm?.issueRiskRating\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issueRiskRating\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Classification</label>\r\n <div class=\"classification\">\r\n <label class=\"low\" *ngFor=\" let class of riskClassification\" [ngClass]=\"[class.class]\">\r\n <input type=\"radio\" name=\"classification\" [value]=\"class.value\"\r\n [checked]=\"logIssueForm?.issueRiskRating === class.value\"\r\n [(ngModel)]=\"logIssueForm.issueRiskRating\">\r\n <span>{{class.name}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"additionalOptionStatus.EXCEPTION_TYPE\"\r\n [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.exceptionType > -1\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/exception-type.svg\" alt=\"im\" *ngIf=\"logIssueForm?.exceptionType === null\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.exceptionType > -1\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Exception Type\r\n </label>\r\n <app-cs-radio class=\"main-filed\" [value]=\"1\" [checked]=\"logIssueForm?.exceptionType === 1\"\r\n (checkedEvent)=\"setException(1)\">Design Exception\r\n <!-- <i class=\"icons\">&#xe91f;</i> -->\r\n </app-cs-radio>\r\n <app-cs-radio class=\"main-filed\" [value]=\"2\" [checked]=\"logIssueForm?.exceptionType === 2\"\r\n (checkedEvent)=\"setException(2)\">Effectiveness Exception\r\n <!-- <i class=\"icons\">&#xe91f;</i> -->\r\n </app-cs-radio>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" [class.active]=\"activeField === 'ISSUE_TYPE'\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_TYPE' && sideSelectorElements.includes(activeField)\"\r\n *ngIf=\"additionalOptionStatus.ISSUE_TYPE\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issueType?.length > 0\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/issue-type.svg\" alt=\"\"\r\n *ngIf=\"logIssueForm?.issueType?.length === 0 || activeField === 'ISSUE_TYPE' \">\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"logIssueForm?.issueType?.length > 0 && activeField !== 'ISSUE_TYPE'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Issue Type</label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.issueType || logIssueForm?.issueType?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_TYPE','ISSUE_TYPE')\" type=\"text\"\r\n placeholder=\"Select the Issue Type associated with this issue.\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.issueType?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_TYPE',logIssueForm?.issueType[0])\">&#xe90d;</i>{{logIssueForm?.issueType[0]?.issue_type_name}}</span>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_TYPE'\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_TYPE','ISSUE_TYPE')\"><i\r\n class=\"icons\">&#xe90c;</i>Edit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"additionalOptionStatus.PRIORITY\"\r\n [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issuePriority\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\" alt=\"im\" *ngIf=\"!logIssueForm?.issuePriority\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issuePriority > 0\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Priority</label>\r\n <div class=\"classification\">\r\n <label *ngFor=\" let priority of riskPrority\" [ngClass]=\"[priority.class]\">\r\n <input type=\"radio\" name=\"classification-priority\" [value]=\"priority.value\"\r\n [checked]=\"logIssueForm?.issuePriority === priority.value\"\r\n [(ngModel)]=\"logIssueForm.issuePriority\">\r\n <span>{{priority.name}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"additionalOptionStatus.ASSOCIATED_RISKS\"\r\n [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm.issueAssociatedRisk\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/associated-risks.svg\" alt=\"im\" *ngIf=\"!logIssueForm?.issueAssociatedRisk.trim().length\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issueAssociatedRisk.trim().length\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Associated Risks </label>\r\n <ng-container *ngIf=\"AttachmentTrack[2]?.length > 0 \">\r\n <div class=\"file-list\" *ngFor=\"let uploadingFile of AttachmentTrack[2]\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{uploadingFile}}</span>\r\n <!-- <button>\r\n <i class=\"icons\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"logIssueForm?.associatedRisksAttachments?.length > 0\">\r\n <div class=\"file-list\" *ngFor=\"let file of logIssueForm?.associatedRisksAttachments\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{file?.name}}</span>\r\n <button>\r\n <i class=\"icons\" (click)=\"deleteFile(file,'ASSOCIATED_RISKS')\">&#xe90d;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <marx-editor [(ngModel)]=\"logIssueForm.issueAssociatedRisk\" [editorConfig]=\"{mode: 'prime',\r\n colorPalette: true,\r\n link: true,\r\n file:false,\r\n placeholder: 'Associated Risks'}\" (clickOutside)=\"checkDescription()\" (sendSavedFiles)=\"selectFile('ASSOCIATED_RISKS',$event)\"></marx-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" [class.active]=\"false\" *ngIf=\"additionalOptionStatus.OVERSIGHT\"\r\n [class.disabled]=\"activeField && !(['ISSUE_CC','ISSUE_FCC'].includes(activeField)) && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\"\r\n [class.checked]=\"logIssueForm?.issueCCUsers?.length > 0 || logIssueForm?.failureCCUsers?.length > 0\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\"\r\n *ngIf=\"(logIssueForm?.issueCCUsers?.length === 0 && logIssueForm?.failureCCUsers?.length === 0)|| activeField === 'ISSUE_CC'|| activeField === 'ISSUE_FCC' \">\r\n\r\n <svg class=\"checkIcon\"\r\n *ngIf=\"logIssueForm?.issueCCUsers?.length > 0 || logIssueForm?.failureCCUsers?.length > 0 && activeField !== 'ISSUE_CC'|| activeField !== 'ISSUE_FCC'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Overseer </label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.issueCCUsers || logIssueForm?.issueCCUsers?.length === 0\">\r\n <input type=\"text\" (click)=\"setActiveFieldSelector('ISSUE_CC','ISSUE_CC')\"\r\n placeholder=\"Who should have oversight of this issue?\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.issueCCUsers?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_CC',logIssueForm?.issueCCUsers[0])\">&#xe90d;</i>{{logIssueForm?.issueCCUsers[0]?.employee_name}}</span>\r\n <button class=\"count\" *ngIf=\"logIssueForm?.issueCCUsers?.length > 1\" type=\"button\" appPopover\r\n (click)=\"CC.popover()\" placement=\"right\">+\r\n {{logIssueForm?.issueCCUsers?.slice(1).length}}</button>\r\n <app-popover #CC [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let cc of logIssueForm?.issueCCUsers | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"deleteItem('ISSUE_CC',cc)\">&#xe90d;</i>\r\n {{cc?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_CC'\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_CC','ISSUE_CC')\"><i\r\n class=\"icons\">&#xe90c;</i>Edit</button>\r\n </div>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.failureCCUsers || logIssueForm?.failureCCUsers?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_FCC','ISSUE_FCC')\" type=\"text\"\r\n placeholder=\"Who should be notified if the issue is not resolved?\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.failureCCUsers?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_FCC',logIssueForm?.failureCCUsers[0])\">&#xe90d;</i>{{logIssueForm?.failureCCUsers[0]?.employee_name}}</span>\r\n <button class=\"count\" *ngIf=\"logIssueForm?.failureCCUsers?.length > 1\" type=\"button\" appPopover\r\n (click)=\"FCC.popover()\" placement=\"right\">+\r\n {{logIssueForm?.failureCCUsers?.slice(1).length}}</button>\r\n <app-popover #FCC [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let fcc of logIssueForm?.failureCCUsers | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"deleteItem('ISSUE_FCC',fcc)\">&#xe90d;</i>\r\n {{fcc?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_FCC'\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_FCC','ISSUE_FCC')\"><i\r\n class=\"icons\">&#xe90c;</i>Edit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"additionalOptionStatus.EVIDENCE\"\r\n [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"true\">\r\n <!-- <img src=\"https://cdn.v-comply.com/format-evidence.svg\" alt=\"im\"> -->\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Evidence\r\n </label>\r\n <div class=\"upload-format\">\r\n <span class=\"text\">Do you want evidence of completion of the issue to be uploaded?</span>\r\n <div class=\"radio-group\">\r\n <app-cs-radio [name]=\"'file-evidence'\" [value]=\"1\"\r\n [checked]=\"logIssueForm?.evidenceRequired === 1\" (checkedEvent)=\"setEvidence(1)\">Yes\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'file-evidence'\" [value]=\"0\"\r\n [checked]=\"logIssueForm?.evidenceRequired === 0\" (checkedEvent)=\"setEvidence(0)\">No\r\n </app-cs-radio>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n<app-radio-list [config]=\"selectorConfig?.ISSUE_CATGORY\" [itemsList]=\"listData?.categoryList\"\r\n [selectedItems]=\"logIssueForm.issueCategory\" [identifierKey]=\"'category_id'\"\r\n [displayKey]=\"'category_name'\" *ngIf=\"activeSelector==='ISSUE_CATEGORY'\"\r\n (saveList)=\"selectorAction($event,'ISSUE_CATEGORY')\" (closeList)=\"fieldDeselector('ISSUE_CATEGORY')\">\r\n</app-radio-list>\r\n\r\n<app-radio-list [config]=\"selectorConfig?.ISSUE_RC\" [itemsList]=\"listData?.rcList\"\r\n [selectedItems]=\"logIssueForm.issueRC\" [identifierKey]=\"'rc_id'\" [displayKey]=\"'rc_name'\"\r\n *ngIf=\"activeSelector==='ISSUE_RC'\" (saveList)=\"selectorAction($event,'ISSUE_RC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_RC')\"></app-radio-list>\r\n\r\n<app-radio-list [config]=\"selectorConfig?.ISSUE_WHO\" [itemsList]=\"listData?.userList\" [twoColumn]=\"true\"\r\n [selectedItems]=\"logIssueForm.entrustTo\" [identifierKey]=\"'employee_id'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_WHO'\" (saveList)=\"selectorAction($event,'ISSUE_WHO')\"\r\n (closeList)=\"fieldDeselector('ISSUE_WHO')\"></app-radio-list>\r\n\r\n<app-radio-list [config]=\"selectorConfig?.ISSUE_TYPE\" [itemsList]=\"listData?.issueTypeList\"\r\n [selectedItems]=\"logIssueForm.issueType\" [identifierKey]=\"'issue_id'\" [displayKey]=\"'issue_type_name'\"\r\n *ngIf=\"activeSelector==='ISSUE_TYPE'\" (saveList)=\"selectorAction($event,'ISSUE_TYPE')\"\r\n (closeList)=\"fieldDeselector('ISSUE_TYPE')\"></app-radio-list>\r\n\r\n<app-checkbox-list [config]=\"selectorConfig?.ISSUE_CC\" [twoColumn]=\"true\"\r\n [itemsList]=\"listData.userList|userFilter:'employee_email':logIssueForm.entrustTo:{'employee_email':currentUser?.email}\"\r\n [selectedItems]=\"logIssueForm.issueCCUsers\" [identifierKey]=\"'employee_email'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_CC'\" (saveList)=\"selectorAction($event,'ISSUE_CC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_CC')\"></app-checkbox-list>\r\n\r\n<app-checkbox-list [config]=\"selectorConfig?.ISSUE_FCC\" [twoColumn]=\"true\"\r\n [itemsList]=\"listData.userList|userFilter:'employee_email':logIssueForm.entrustTo:{'employee_email':currentUser?.email}\"\r\n [selectedItems]=\"logIssueForm.failureCCUsers\" [identifierKey]=\"'employee_email'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_FCC'\" (saveList)=\"selectorAction($event,'ISSUE_FCC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_FCC')\"></app-checkbox-list>\r\n\r\n<app-responsibility-risk-selector [loading]=\"isRiskControlLoading\" *ngIf=\"activeSelector==='ISSUE_CONTROL_RISK'\"\r\n (closeList)=\"fieldDeselector('ISSUE_CONTROL_RISK')\" (fetchList)=\"getLinkage(issueDetails?.auditObjId, $event)\"\r\n (saveList)=\"selectorAction($event,'ISSUE_CONTROL_RISK')\"\r\n[activeEntity]=\"logIssueForm?.linkageType\" [listItems]=\"listData?.linkageList\" [selectedItems]=\"logIssueForm?.linkedControlRisk\"></app-responsibility-risk-selector>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\">\r\n</app-smiley-dialog-inline>\r\n",
869
- styles: ["@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.css\");:root{font-size:4px}::ng-deep .log-an-issue{position:relative}", "@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.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-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::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{content:\"\";border-top:5px solid #707070;border-right:5px solid transparent;border-left:5px solid transparent;position:absolute;right:15px;top:calc(50% - 2px)}::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 rgba(30,93,211,.27)}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:116px}::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}::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}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 24px;display:flex;align-items:center}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px;margin-right:20px}::ng-deep .vx-form-group .tab-group .upload-file .browse{display:flex;align-items:center;justify-content:center;width:calc(100% - 100px);text-align:center}::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;top:0;margin:0;padding:0;right:0;bottom:0;left: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:12px \u200B24px}::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%}::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:11px!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;width:100%;margin-top:4px;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;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 .input,::ng-deep .vx-form-group input[type=text]{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::-moz-placeholder,::ng-deep .vx-form-group input[type=text]::-moz-placeholder{color:#747576}::ng-deep .vx-form-group .input:-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder{color:#747576}::ng-deep .vx-form-group .input::placeholder,::ng-deep .vx-form-group input[type=text]::placeholder{color:#747576}::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group .input:hover,::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group input[type=text]:hover{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .vx-form-group .input.error,::ng-deep .vx-form-group input[type=text].error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group .input.error:focus,::ng-deep .vx-form-group input[type=text].error:focus{box-shadow:0 0 5px rgba(211,30,30,.27)}::ng-deep .vx-form-group .input:disabled,::ng-deep .vx-form-group input[type=text]:disabled{background:#f1f1f1;cursor:not-allowed}::ng-deep .vx-form-group .input:disabled:hover,::ng-deep .vx-form-group input[type=text]:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group .input span.text,::ng-deep .vx-form-group input[type=text] span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group .input .input-group,::ng-deep .vx-form-group input[type=text] .input-group{display:flex;align-items:center}::ng-deep .vx-form-group .input .input-group.counter,::ng-deep .vx-form-group input[type=text] .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group .input .input-group.counter button,::ng-deep .vx-form-group input[type=text] .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 .input-group.counter input,::ng-deep .vx-form-group input[type=text] .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 .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group .input+.file-list,::ng-deep .vx-form-group input[type=text]+.file-list{margin-top:8px}::ng-deep .vx-form-group .input::-moz-placeholder,::ng-deep .vx-form-group input[type=text]::-moz-placeholder{font-size:13px}::ng-deep .vx-form-group .input::placeholder,::ng-deep .vx-form-group input[type=text]::placeholder{font-size:13px}::ng-deep .vx-form-group .input:-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .input::-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]::-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{width:100%;position:relative;z-index:1;margin:0 4px 0 0}::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;top:0;right:0;bottom:0;left: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 .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::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}::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.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 button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:2px 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:1px solid #f1f1f1;border-radius:2px;background:#fff;outline:none;cursor:pointer;display:block;height:24px;padding:0 5px 0 4px;font-size:11px;font-weight:500;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 #1e5dd3;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 marx-editor{margin-top:8px;display:block}::ng-deep .vx-form-group marx-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group marx-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%}@media not all and (min-resolution:0.001dpcm){@supports (-webkit-appearance:none){::ng-deep .vx-form-group marx-editor .editor-container .editable-block:before{opacity:.72}}}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px}::ng-deep .vx-form-group marx-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 marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:22px}::ng-deep .vx-form-group marx-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 marx-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 marx-editor .editor-container:focus-within{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:hover{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-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}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::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:#fff;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::-moz-placeholder{color:#999;font-size:13px}::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:16px;position:absolute;left:12px;top:0;color:#bcbcbc;font-size:16px;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 .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{pointer-events:none;color:#dbdbdb}::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.active button{color:#1e5dd3}::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:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:30px;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 0 #34aa44;-webkit-animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;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;-webkit-animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;-webkit-animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards;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.hide{opacity:0;transition:all .2s ease-in-out}.form-group-row.disabled{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;top:0;right:0;bottom:0;left:0;background:#fff;opacity:.7}.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 .custom-input,.form-group-row.active .right .vx-form-group input{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}@-webkit-keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes strokeCheck{to{stroke-dashoffset:0}}@-webkit-keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}.action-list{width:220px}.action-list ul{padding:0;margin:0;-webkit-animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;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}.action-list ul.action-item{display:block}.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}.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}.action-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.action-list ul.action-item li button:hover{background:#f3f3f3}.action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.action-list ul.action-item li .avatar-card.within-con{display:block}.action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#4681ef;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.action-list ul.action-item li .avatar-card .avatar img{width:100%}.action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.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;-moz-text-align-last:left;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:5px}.action-list ul.action-item li .avatar-card.no-image{display:block}.action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.action-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.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}.action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.action-list ul.action-item li .chip-item span.id{font-size:9px}.action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.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}.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}.action-list ul.action-item li:first-child{-webkit-animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(2){-webkit-animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(3){-webkit-animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(4){-webkit-animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(5){-webkit-animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(6){-webkit-animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(7){-webkit-animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(8){-webkit-animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(9){-webkit-animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(10){-webkit-animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@-webkit-keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@-webkit-keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}@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:0;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{-webkit-animation:rotate 2s linear infinite;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;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@-webkit-keyframes rotate{to{transform:rotate(1turn)}}@keyframes rotate{to{transform:rotate(1turn)}}@-webkit-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}}@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)}.vx-overlay{position:fixed;z-index:3;top:0;right:0;bottom:0;left:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;-webkit-animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,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}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,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}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@-webkit-keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}"]
865
+ template: "<!-- <p>log-an-issue works!</p> -->\r\n<div class=\"log-an-issue\" *ngIf=\"!showSmiley\">\r\n <div class=\"form-group-row\" *ngIf=\"['COMPLIANCE_WORKROOM'].includes(openedFrom)\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Linked to\r\n </label>\r\n\r\n <div class=\"selected\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\">\r\n {{reponsibilityData?.responsibilityName}}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" *ngIf=\"['AUDIT_WORKROOM','VIEW_AUDIT_EXECUTION_SUMMARY','EXECUTE_AUDIT_PLAN'].includes(openedFrom)\">\r\n <div class=\"left\" [class.checked]=\"false\">\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Issue linked with\r\n </label>\r\n <div class=\"selected\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\">\r\n {{issueDetails?.auditPlanName}}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"form-group-row\" *ngIf=\"['VIEW_AUDIT_EXECUTION_SUMMARY','EXECUTE_AUDIT_PLAN'].includes(openedFrom) || isRiskControlVisible\" [class.active]=\"activeField === 'ISSUE_CONTROL_RISK'\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_CONTROL_RISK' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.linkedControlRisk?.length > 0 \">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\" alt=\"\"\r\n *ngIf=\"logIssueForm?.linkedControlRisk?.length === 0 || activeField === 'ISSUE_CONTROL_RISK' \" />\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.linkedControlRisk?.length > 0 && activeField !== 'ISSUE_CONTROL_RISK'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Select a control or risk</label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.linkedControlRisk || logIssueForm?.linkedControlRisk?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_CONTROL_RISK','ISSUE_CONTROL_RISK')\" type=\"text\"\r\n placeholder=\"Select a control or risk.\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.linkedControlRisk?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_CONTROL_RISK',logIssueForm?.linkedControlRisk[0])\">&#xe90d;</i>{{logIssueForm?.linkedControlRisk[0]?.itemControlName}}</span>\r\n </div>\r\n <button class=\"edit\" *ngIf=\"activeField !=='ISSUE_CONTROL_RISK'\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_CONTROL_RISK','ISSUE_CONTROL_RISK')\"><i\r\n class=\"icons\">&#xe90c;</i>Edit</button>\r\n </div>\r\n </div>\r\n <div class=\"vx-form-group\" *ngFor=\"let tag of logIssueForm.issueCustomTag|keyvalue\">\r\n <!-- {{logIssueForm.issueCustomTag|json}} -->\r\n <label class=\"vx-control-panel\">{{tag?.value?.custom_tag_name}}</label>\r\n <input type=\"text\" [placeholder]=\"tag?.value?.custom_tag_name\" [(ngModel)]=\"tag.value.custom_tag_value\">\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n <div class=\"form-group-row\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_TITLE' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm.issueName.trim().length\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\" alt=\"name\"\r\n *ngIf=\"!logIssueForm.issueName.trim().length || activeField === 'ISSUE_TITLE'\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm.issueName.trim().length && activeField !== 'ISSUE_TITLE'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Issue Title <span class=\"required\">*</span>\r\n </label>\r\n <input type=\"text\" placeholder=\"Enter issue Title\" [(ngModel)]=\"logIssueForm.issueName\"\r\n (focusin)=\"setActiveFieldSelector('ISSUE_TITLE','ISSUE_TITLE')\"\r\n (keyup)=\"logIssueForm.issueName?.trim()?.length > 0 ? removeError('issueName'): null\"\r\n (focusout)=\"setActiveFieldSelector('','')\" *ngIf=\"logIssueForm.issueName =='' || activeSelector === 'ISSUE_TITLE'\">\r\n <div class=\"selected\" *ngIf=\"logIssueForm.issueName.length && activeSelector !== 'ISSUE_TITLE'\">\r\n <div class=\"chip-container\">\r\n <span class=\"value\">{{logIssueForm.issueName}}</span>\r\n </div>\r\n <button class=\"edit\" (click)=\"setActiveFieldSelector('ISSUE_TITLE','ISSUE_TITLE')\" type=\"button\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueName')\">Enter a name for this issue.</p>\r\n <ng-container *ngIf=\"AttachmentTrack[0]?.length > 0 \">\r\n <div class=\"file-list\" *ngFor=\"let uploadingFile of AttachmentTrack[0]\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{uploadingFile}}</span>\r\n <!-- <button>\r\n <i class=\"icons\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n <app-line-loader [loaderHeight]=\"2\"></app-line-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"logIssueForm?.issueDescriptionAttachements?.length > 0\">\r\n <div class=\"file-list\" *ngFor=\"let file of logIssueForm?.issueDescriptionAttachements\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{file?.name}}</span>\r\n <button>\r\n <i class=\"icons\" (click)=\"deleteFile(file,'ISSUE_DESCRIPTION')\">&#xe90d;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <marx-editor [editorConfig]=\"{mode: 'prime',file:false,\r\n colorPalette: true,\r\n link: true,\r\n placeholder: 'Description'}\" [(ngModel)]=\"logIssueForm.issueDescription\"\r\n (sendSavedFiles)=\"selectFile('ISSUE_DESCRIPTION',$event)\" (clickOutside)=\"checkDescription()\"></marx-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [class.active]=\"activeField === 'ISSUE_CATEGORY'\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_CATEGORY' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issueCategory?.length > 0 \">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\" alt=\"\"\r\n *ngIf=\"logIssueForm?.issueCategory?.length === 0 || activeField === 'ISSUE_CATEGORY' \" />\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issueCategory?.length > 0 && activeField !== 'ISSUE_CATEGORY'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Issue Category </label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.issueCategory || logIssueForm?.issueCategory?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_CATEGORY','ISSUE_CATEGORY')\" type=\"text\"\r\n placeholder=\"Select a category for this issue\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.issueCategory?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_CATEGORY',logIssueForm?.issueCategory[0])\">&#xe90d;</i>{{logIssueForm?.issueCategory[0]?.category_name}}</span>\r\n </div>\r\n <button class=\"edit\" *ngIf=\"activeField !=='ISSUE_CATEGORY'\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_CATEGORY','ISSUE_CATEGORY')\"><i\r\n class=\"icons\">&#xe9ba;</i>Edit</button>\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueCategory')\">Select an issue\r\n category.</p>\r\n </div>\r\n <div class=\"vx-form-group\" *ngFor=\"let tag of logIssueForm.issueCustomTag\">\r\n <!-- {{logIssueForm.issueCustomTag|json}} -->\r\n <label class=\"vx-control-panel\">{{tag?.name}}</label>\r\n <input type=\"text\" [placeholder]=\"tag?.name\" [(ngModel)]=\"tag.value\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" *ngIf=\"isRCVisible\" [class.active]=\"false\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_RC' && sideSelectorElements.includes(activeField)\"\r\n >\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issueRC?.length > 0\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\" alt=\"\" *ngIf=\"logIssueForm?.issueRC?.length === 0\">\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"logIssueForm?.issueRC?.length > 0 && activeField !== 'ISSUE_RC'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Responsibility Center\r\n <span class=\"required\" *ngIf=\"isRCMandatory\">*</span>\r\n </label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.issueRC || logIssueForm?.issueRC?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_RC','ISSUE_RC')\" type=\"text\"\r\n placeholder=\"Select Responsibility Center(s)\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.issueRC?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\" *ngIf=\"!isRCPreSelected\"\r\n (click)=\"deleteItem('ISSUE_RC',logIssueForm?.issueRC[0])\">&#xe90d;</i>{{logIssueForm?.issueRC[0]?.item_name}}</span>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_RC' && !isRCPreSelected\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_RC','ISSUE_RC')\"><i\r\n class=\"icons\">&#xe9ba;</i>Edit</button>\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueRC')\">Select the Responsibility Center associated with this issue.</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_WHO' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.entrustTo?.length > 0\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\" alt=\"im\"\r\n *ngIf=\"(logIssueForm?.entrustTo?.length === 0 && !logIssueForm?.isAssignToMyself) || activeField === 'ISSUE_WHO' \">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"(logIssueForm?.entrustTo?.length > 0 || logIssueForm?.isAssignToMyself ) && activeField !== 'ISSUE_WHO'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Who? <span class=\"required\">*</span></label>\r\n <div class=\"select\" [class.disabled]=\"logIssueForm?.isAssignToMyself\"\r\n *ngIf=\"!logIssueForm?.entrustTo || logIssueForm?.entrustTo?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_WHO','ISSUE_WHO')\"\r\n [disabled]=\"logIssueForm?.isAssignToMyself\" type=\"text\"\r\n placeholder=\"Who is responsible for completing the responsibility?\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.entrustTo?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_WHO',logIssueForm?.entrustTo[0])\">&#xe90d;</i>{{logIssueForm?.entrustTo[0]?.employee_name}}</span>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_WHO'\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_WHO','ISSUE_WHO')\"><i\r\n class=\"icons\">&#xe9ba;</i>Edit</button>\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('entrustTo')\">Select the person responsible for resolving this issue.</p>\r\n <div class=\"switch-row align-right\" [class.disabled]=\"activeField === 'ISSUE_WHO'\">\r\n <app-cs-switch [disabled]=\"activeField === 'ISSUE_WHO'\" [(ngValue)]=\"logIssueForm.isAssignToMyself\" (ngValueChange)=\"assignMyself($event)\">OR\r\n ASSIGN TO MYSELF\r\n </app-cs-switch>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_DATE_TIME' && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issueDueDate \">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\" alt=\"im\"\r\n *ngIf=\"!logIssueForm?.issueDueDate || activeField === 'ISSUE_DATE_TIME' \">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issueDueDate && activeField !== 'ISSUE_DATE_TIME'\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Maximum Time to Resolve <span class=\"required\">*</span></label>\r\n <div class=\"date-time-picker\">\r\n <div class=\"picker-group\">\r\n <input type=\"text\" readonly placeholder=\"Set a deadline.\"\r\n [value]=\"logIssueForm.issueDueDate | date: 'dd MMM yyyy'\" (click)=\"openDatePicker();\">\r\n <i class=\"icons\">&#xe92d;</i>\r\n <dp-date-picker #datePicker (onSelect)=\"datePickerOverlay = false;closeDatePicker($event);removeError('issueDueDate')\" [config]=\"dateConfig\"\r\n [(ngModel)]=\"logIssueForm.issueDueDate\" >\r\n </dp-date-picker>\r\n <div class=\"vx-overlay\" (click)=\"closeDatePicker($event)\" *ngIf=\"datePickerOverlay\"></div>\r\n </div>\r\n\r\n <div class=\"picker-group\">\r\n\r\n <input (mouseover)=\"setCurrentTime()\" [(ngModel)]=\"logIssueForm.issueDueTime\" [value]=\"logIssueForm.issueDueTime\" readonly\r\n class=\"time\" aria-label=\"12hr format\" [ngxTimepicker]=\"dailyTime\" placeholder=\"Select Time\"\r\n type=\"text\" [min]=\"currentTime\" readonly>\r\n <i class=\"icons\">&#xe955;</i>\r\n <ngx-material-timepicker (opened)=\"setActiveFieldSelector('ISSUE_DATE_TIME', 'ISSUE_DATE_TIME')\"\r\n (closed)=\"setActiveFieldSelector('','')\" #dailyTime [defaultTime]=\"'11:59 pm'\">\r\n </ngx-material-timepicker>\r\n </div>\r\n\r\n </div>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueDueDate')\">Select the date by which this issue needs to be resolved.</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm.issueRecommendation\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/recommended-action.svg\" alt=\"im\" *ngIf=\"!(logIssueForm.issueRecommendation | spaceBreaker).length\">\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"(logIssueForm.issueRecommendation | spaceBreaker).length>0\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Recommended Actions <span class=\"required\">*</span></label>\r\n <ng-container *ngIf=\"AttachmentTrack[1]?.length > 0 \">\r\n <div class=\"file-list\" *ngFor=\"let uploadingFile of AttachmentTrack[1]\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{uploadingFile}}</span>\r\n <!-- <button>\r\n <i class=\"icons\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n <app-line-loader [loaderHeight]=\"2\"></app-line-loader>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"logIssueForm?.recommendedActionsAttachments?.length > 0\">\r\n <div class=\"file-list\" *ngFor=\"let file of logIssueForm?.recommendedActionsAttachments\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{file?.name}}</span>\r\n <button>\r\n <i class=\"icons\" (click)=\"deleteFile(file,'RECOMMENDED_ACTIONS')\">&#xe90d;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <marx-editor [(ngModel)]=\"logIssueForm.issueRecommendation\" [editorConfig]=\"{mode: 'prime',\r\n colorPalette: true,\r\n link: true,\r\n file:true,\r\n placeholder: 'Recommended actions'}\" (ngModelChange)=\"logIssueForm?.issueRecommendation?.trim()?.length > 0 ? removeError('issueRecommendation'):null\"\r\n (clickOutside)=\"checkDescription()\" (sendSavedFiles)=\"selectFile('RECOMMENDED_ACTIONS',$event)\"></marx-editor>\r\n <p class=\"error-message\" *ngIf=\"fieldsWithError.includes('issueRecommendation')\">Specify the recommended actions to resolve this issue.</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group-row\" *ngIf=\"!hiddenList.includes('RISK_CLASSIFICATION')\" [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm.issueRiskRating\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/risks.svg\" alt=\"im\" *ngIf=\"!logIssueForm?.issueRiskRating\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issueRiskRating\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Risk Classification</label>\r\n <div class=\"classification\">\r\n <label class=\"low\" *ngFor=\" let class of riskClassification\" [ngClass]=\"[class.class]\">\r\n <input type=\"radio\" name=\"classification\" [value]=\"class.value\"\r\n [checked]=\"logIssueForm?.issueRiskRating === class.value\"\r\n [(ngModel)]=\"logIssueForm.issueRiskRating\">\r\n <span>{{class.name}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"additionalOptionStatus.EXCEPTION_TYPE\"\r\n [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.exceptionType > -1\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/exception-type.svg\" alt=\"im\" *ngIf=\"logIssueForm?.exceptionType === null\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.exceptionType > -1\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Exception Type\r\n </label>\r\n <app-cs-radio class=\"main-filed\" [value]=\"1\" [checked]=\"logIssueForm?.exceptionType === 1\"\r\n (checkedEvent)=\"setException(1)\">Design Exception\r\n <!-- <i class=\"icons\">&#xe91f;</i> -->\r\n </app-cs-radio>\r\n <app-cs-radio class=\"main-filed\" [value]=\"2\" [checked]=\"logIssueForm?.exceptionType === 2\"\r\n (checkedEvent)=\"setException(2)\">Effectiveness Exception\r\n <!-- <i class=\"icons\">&#xe91f;</i> -->\r\n </app-cs-radio>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" [class.active]=\"activeField === 'ISSUE_TYPE'\"\r\n [class.disabled]=\"activeField && activeField !== 'ISSUE_TYPE' && sideSelectorElements.includes(activeField)\"\r\n *ngIf=\"additionalOptionStatus.ISSUE_TYPE\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issueType?.length > 0\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/issue-type.svg\" alt=\"\"\r\n *ngIf=\"logIssueForm?.issueType?.length === 0 || activeField === 'ISSUE_TYPE' \">\r\n\r\n <svg class=\"checkIcon\" *ngIf=\"logIssueForm?.issueType?.length > 0 && activeField !== 'ISSUE_TYPE'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Issue Type</label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.issueType || logIssueForm?.issueType?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_TYPE','ISSUE_TYPE')\" type=\"text\"\r\n placeholder=\"Select the Issue Type associated with this issue.\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.issueType?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_TYPE',logIssueForm?.issueType[0])\">&#xe90d;</i>{{logIssueForm?.issueType[0]?.issue_type_name}}</span>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_TYPE'\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_TYPE','ISSUE_TYPE')\"><i\r\n class=\"icons\">&#xe9ba;</i>Edit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"additionalOptionStatus.PRIORITY\"\r\n [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm?.issuePriority\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/priority.svg\" alt=\"im\" *ngIf=\"!logIssueForm?.issuePriority\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issuePriority > 0\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Priority</label>\r\n <div class=\"classification\">\r\n <label *ngFor=\" let priority of riskPrority\" [ngClass]=\"[priority.class]\">\r\n <input type=\"radio\" name=\"classification-priority\" [value]=\"priority.value\"\r\n [checked]=\"logIssueForm?.issuePriority === priority.value\"\r\n [(ngModel)]=\"logIssueForm.issuePriority\">\r\n <span>{{priority.name}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"additionalOptionStatus.ASSOCIATED_RISKS\"\r\n [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"logIssueForm.issueAssociatedRisk\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/associated-risks.svg\" alt=\"im\" *ngIf=\"!logIssueForm?.issueAssociatedRisk.trim().length\">\r\n\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\"\r\n *ngIf=\"logIssueForm?.issueAssociatedRisk.trim().length\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Associated Risks </label>\r\n <ng-container *ngIf=\"AttachmentTrack[2]?.length > 0 \">\r\n <div class=\"file-list\" *ngFor=\"let uploadingFile of AttachmentTrack[2]\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{uploadingFile}}</span>\r\n <!-- <button>\r\n <i class=\"icons\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"logIssueForm?.associatedRisksAttachments?.length > 0\">\r\n <div class=\"file-list\" *ngFor=\"let file of logIssueForm?.associatedRisksAttachments\">\r\n <div class=\"file-container\">\r\n <span class=\"file-name\">{{file?.name}}</span>\r\n <button>\r\n <i class=\"icons\" (click)=\"deleteFile(file,'ASSOCIATED_RISKS')\">&#xe90d;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <marx-editor [(ngModel)]=\"logIssueForm.issueAssociatedRisk\" [editorConfig]=\"{mode: 'prime',\r\n colorPalette: true,\r\n link: true,\r\n file:false,\r\n placeholder: 'Associated Risks'}\" (clickOutside)=\"checkDescription()\" (sendSavedFiles)=\"selectFile('ASSOCIATED_RISKS',$event)\"></marx-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" [class.active]=\"false\" *ngIf=\"additionalOptionStatus.OVERSIGHT\"\r\n [class.disabled]=\"activeField && !(['ISSUE_CC','ISSUE_FCC'].includes(activeField)) && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\"\r\n [class.checked]=\"logIssueForm?.issueCCUsers?.length > 0 || logIssueForm?.failureCCUsers?.length > 0\">\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/oversight.svg\" alt=\"\"\r\n *ngIf=\"(logIssueForm?.issueCCUsers?.length === 0 && logIssueForm?.failureCCUsers?.length === 0)|| activeField === 'ISSUE_CC'|| activeField === 'ISSUE_FCC' \">\r\n\r\n <svg class=\"checkIcon\"\r\n *ngIf=\"logIssueForm?.issueCCUsers?.length > 0 || logIssueForm?.failureCCUsers?.length > 0 && activeField !== 'ISSUE_CC'|| activeField !== 'ISSUE_FCC'\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">Overseer </label>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.issueCCUsers || logIssueForm?.issueCCUsers?.length === 0\">\r\n <input type=\"text\" (click)=\"setActiveFieldSelector('ISSUE_CC','ISSUE_CC')\"\r\n placeholder=\"Who should have oversight of this issue?\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.issueCCUsers?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_CC',logIssueForm?.issueCCUsers[0])\">&#xe90d;</i>{{logIssueForm?.issueCCUsers[0]?.employee_name}}</span>\r\n <button class=\"count\" *ngIf=\"logIssueForm?.issueCCUsers?.length > 1\" type=\"button\" appPopover\r\n (click)=\"CC.popover()\" placement=\"right\">+\r\n {{logIssueForm?.issueCCUsers?.slice(1).length}}</button>\r\n <app-popover #CC [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let cc of logIssueForm?.issueCCUsers | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"deleteItem('ISSUE_CC',cc)\">&#xe90d;</i>\r\n {{cc?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_CC'\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_CC','ISSUE_CC')\"><i\r\n class=\"icons\">&#xe9ba;</i>Edit</button>\r\n </div>\r\n <div class=\"select\" *ngIf=\"!logIssueForm?.failureCCUsers || logIssueForm?.failureCCUsers?.length === 0\">\r\n <input (click)=\"setActiveFieldSelector('ISSUE_FCC','ISSUE_FCC')\" type=\"text\"\r\n placeholder=\"Who should be notified if the issue is not resolved?\" readonly>\r\n </div>\r\n <div class=\"selected\" *ngIf=\"logIssueForm?.failureCCUsers?.length > 0\">\r\n <div class=\"chip-container\">\r\n <span class=\"chip\"><i class=\"icons\"\r\n (click)=\"deleteItem('ISSUE_FCC',logIssueForm?.failureCCUsers[0])\">&#xe90d;</i>{{logIssueForm?.failureCCUsers[0]?.employee_name}}</span>\r\n <button class=\"count\" *ngIf=\"logIssueForm?.failureCCUsers?.length > 1\" type=\"button\" appPopover\r\n (click)=\"FCC.popover()\" placement=\"right\">+\r\n {{logIssueForm?.failureCCUsers?.slice(1).length}}</button>\r\n <app-popover #FCC [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let fcc of logIssueForm?.failureCCUsers | slice: 1; let j = index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <i class=\"icons\" (click)=\"deleteItem('ISSUE_FCC',fcc)\">&#xe90d;</i>\r\n {{fcc?.employee_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n <button *ngIf=\"activeField !=='ISSUE_FCC'\" class=\"edit\" type=\"button\"\r\n (click)=\"setActiveFieldSelector('ISSUE_FCC','ISSUE_FCC')\"><i\r\n class=\"icons\">&#xe9ba;</i>Edit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [appScrollInView]=\"scrollToBottom\" class=\"form-group-row\" *ngIf=\"additionalOptionStatus.EVIDENCE\"\r\n [class.disabled]=\"activeField && sideSelectorElements.includes(activeField)\">\r\n <div class=\"left\" [class.checked]=\"true\">\r\n <!-- <img src=\"https://cdn.v-comply.com/format-evidence.svg\" alt=\"im\"> -->\r\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"vx-form-group\">\r\n <label class=\"vx-control-panel\">\r\n Evidence\r\n </label>\r\n <div class=\"upload-format\">\r\n <span class=\"text\">Do you want evidence of completion of the issue to be uploaded?</span>\r\n <div class=\"radio-group\">\r\n <app-cs-radio [name]=\"'file-evidence'\" [value]=\"1\"\r\n [checked]=\"logIssueForm?.evidenceRequired === 1\" (checkedEvent)=\"setEvidence(1)\">Yes\r\n </app-cs-radio>\r\n <app-cs-radio [name]=\"'file-evidence'\" [value]=\"0\"\r\n [checked]=\"logIssueForm?.evidenceRequired === 0\" (checkedEvent)=\"setEvidence(0)\">No\r\n </app-cs-radio>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n<app-radio-list [config]=\"selectorConfig?.ISSUE_CATGORY\" [itemsList]=\"listData?.categoryList\"\r\n [selectedItems]=\"logIssueForm.issueCategory\" [identifierKey]=\"'category_id'\"\r\n [displayKey]=\"'category_name'\" *ngIf=\"activeSelector==='ISSUE_CATEGORY'\"\r\n (saveList)=\"selectorAction($event,'ISSUE_CATEGORY')\" (closeList)=\"fieldDeselector('ISSUE_CATEGORY')\">\r\n</app-radio-list>\r\n\r\n<app-radio-list [config]=\"selectorConfig?.ISSUE_RC\" [itemsList]=\"listData?.rcList\"\r\n [selectedItems]=\"logIssueForm.issueRC\" [identifierKey]=\"'rc_id'\" [displayKey]=\"'rc_name'\"\r\n *ngIf=\"activeSelector==='ISSUE_RC'\" (saveList)=\"selectorAction($event,'ISSUE_RC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_RC')\"></app-radio-list>\r\n\r\n<app-radio-list [config]=\"selectorConfig?.ISSUE_WHO\" [itemsList]=\"listData?.userList\" [twoColumn]=\"true\"\r\n [selectedItems]=\"logIssueForm.entrustTo\" [identifierKey]=\"'employee_id'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_WHO'\" (saveList)=\"selectorAction($event,'ISSUE_WHO')\"\r\n (closeList)=\"fieldDeselector('ISSUE_WHO')\"></app-radio-list>\r\n\r\n<app-radio-list [config]=\"selectorConfig?.ISSUE_TYPE\" [itemsList]=\"listData?.issueTypeList\"\r\n [selectedItems]=\"logIssueForm.issueType\" [identifierKey]=\"'issue_id'\" [displayKey]=\"'issue_type_name'\"\r\n *ngIf=\"activeSelector==='ISSUE_TYPE'\" (saveList)=\"selectorAction($event,'ISSUE_TYPE')\"\r\n (closeList)=\"fieldDeselector('ISSUE_TYPE')\"></app-radio-list>\r\n\r\n<app-checkbox-list [config]=\"selectorConfig?.ISSUE_CC\" [twoColumn]=\"true\"\r\n [itemsList]=\"listData.userList|userFilter:'employee_email':logIssueForm.entrustTo:{'employee_email':currentUser?.email}\"\r\n [selectedItems]=\"logIssueForm.issueCCUsers\" [identifierKey]=\"'employee_email'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_CC'\" (saveList)=\"selectorAction($event,'ISSUE_CC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_CC')\"></app-checkbox-list>\r\n\r\n<app-checkbox-list [config]=\"selectorConfig?.ISSUE_FCC\" [twoColumn]=\"true\"\r\n [itemsList]=\"listData.userList|userFilter:'employee_email':logIssueForm.entrustTo:{'employee_email':currentUser?.email}\"\r\n [selectedItems]=\"logIssueForm.failureCCUsers\" [identifierKey]=\"'employee_email'\" [displayKey]=\"'employee_name'\" [tooltipKey]=\"'employee_email'\"\r\n *ngIf=\"activeSelector==='ISSUE_FCC'\" (saveList)=\"selectorAction($event,'ISSUE_FCC')\"\r\n (closeList)=\"fieldDeselector('ISSUE_FCC')\"></app-checkbox-list>\r\n\r\n<app-responsibility-risk-selector [loading]=\"isRiskControlLoading\" *ngIf=\"activeSelector==='ISSUE_CONTROL_RISK'\"\r\n (closeList)=\"fieldDeselector('ISSUE_CONTROL_RISK')\" (fetchList)=\"getLinkage(issueDetails?.auditObjId, $event)\"\r\n (saveList)=\"selectorAction($event,'ISSUE_CONTROL_RISK')\"\r\n[activeEntity]=\"logIssueForm?.linkageType\" [listItems]=\"listData?.linkageList\" [selectedItems]=\"logIssueForm?.linkedControlRisk\"></app-responsibility-risk-selector>\r\n\r\n<app-smiley-dialog-inline\r\n *ngIf=\"showSmiley\"\r\n [message]=\"smileyMessage\"\r\n [actionButtons]=\"actionButtons\"\r\n (action)=\"action($event)\"\r\n (closeSmiley)=\"closeSmiley($event)\">\r\n</app-smiley-dialog-inline>\r\n",
866
+ styles: ["@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.css\");::ng-deep .log-an-issue{position:relative}", "@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.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-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::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-left-color:#707070;border-bottom:1px solid #707070;border-right:1px solid #707070;border-top-color:#707070;content:\"\";display:inline-block;right:15px;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 rgba(30,93,211,.27)}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:116px}::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}::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}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 24px;display:flex;align-items:center}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px;margin-right:20px}::ng-deep .vx-form-group .tab-group .upload-file .browse{display:flex;align-items:center;justify-content:center;width:calc(100% - 100px);text-align:center}::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;top:0;margin:0;padding:0;right:0;bottom:0;left: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:12px \u200B24px}::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%}::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:11px!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;width:100%;margin-top:4px;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;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 .input,::ng-deep .vx-form-group input[type=text]{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::-moz-placeholder,::ng-deep .vx-form-group input[type=text]::-moz-placeholder{color:#747576}::ng-deep .vx-form-group .input:-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder{color:#747576}::ng-deep .vx-form-group .input::placeholder,::ng-deep .vx-form-group input[type=text]::placeholder{color:#747576}::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group .input:hover,::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group input[type=text]:hover{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::ng-deep .vx-form-group .input.error,::ng-deep .vx-form-group input[type=text].error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group .input.error:focus,::ng-deep .vx-form-group input[type=text].error:focus{box-shadow:0 0 5px rgba(211,30,30,.27)}::ng-deep .vx-form-group .input:disabled,::ng-deep .vx-form-group input[type=text]:disabled{background:#f1f1f1;cursor:not-allowed}::ng-deep .vx-form-group .input:disabled:hover,::ng-deep .vx-form-group input[type=text]:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group .input span.text,::ng-deep .vx-form-group input[type=text] span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group .input .input-group,::ng-deep .vx-form-group input[type=text] .input-group{display:flex;align-items:center}::ng-deep .vx-form-group .input .input-group.counter,::ng-deep .vx-form-group input[type=text] .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group .input .input-group.counter button,::ng-deep .vx-form-group input[type=text] .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 .input-group.counter input,::ng-deep .vx-form-group input[type=text] .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 .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}::ng-deep .vx-form-group .input+.file-list,::ng-deep .vx-form-group input[type=text]+.file-list{margin-top:8px}::ng-deep .vx-form-group .input::-moz-placeholder,::ng-deep .vx-form-group input[type=text]::-moz-placeholder{font-size:13px}::ng-deep .vx-form-group .input::placeholder,::ng-deep .vx-form-group input[type=text]::placeholder{font-size:13px}::ng-deep .vx-form-group .input:-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .input::-ms-input-placeholder,::ng-deep .vx-form-group input[type=text]::-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{width:100%;position:relative;z-index:1;margin:0 4px 0 0}::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;top:0;right:0;bottom:0;left: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 .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}::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 button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:2px 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:1px solid #f1f1f1;border-radius:2px;background:#fff;outline:none;cursor:pointer;display:block;height:24px;padding:0 5px 0 4px;font-size:11px;font-weight:500;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 #1e5dd3;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 marx-editor{margin-top:8px;display:block}::ng-deep .vx-form-group marx-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group marx-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%}@media not all and (min-resolution:0.001dpcm){@supports (-webkit-appearance:none){::ng-deep .vx-form-group marx-editor .editor-container .editable-block:before{opacity:.72}}}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group marx-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group marx-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px}::ng-deep .vx-form-group marx-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 marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:22px}::ng-deep .vx-form-group marx-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 marx-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 marx-editor .editor-container:focus-within{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:hover{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group marx-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}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}::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:#fff;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::-moz-placeholder{color:#999;font-size:13px}::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:16px;position:absolute;left:12px;top:0;color:#bcbcbc;font-size:16px;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 .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}::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.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:208px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:30px;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 0 #34aa44;-webkit-animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;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;-webkit-animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;-webkit-animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards;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.hide{opacity:0;transition:all .2s ease-in-out}.form-group-row.disabled{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;top:2px;right:0;bottom:0;left: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 .custom-input,.form-group-row.active .right .vx-form-group input{border-color:#1e5dd3;box-shadow:0 0 5px rgba(30,93,211,.27)}@-webkit-keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes strokeCheck{to{stroke-dashoffset:0}}@-webkit-keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}.action-list{width:220px}.action-list ul{padding:0;margin:0;-webkit-animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;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}.action-list ul.action-item{display:block}.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}.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}.action-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.action-list ul.action-item li button:hover{background:#f3f3f3}.action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.action-list ul.action-item li .avatar-card.within-con{display:block}.action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#4681ef;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.action-list ul.action-item li .avatar-card .avatar img{width:100%}.action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.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;-moz-text-align-last:left;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:5px}.action-list ul.action-item li .avatar-card.no-image{display:block}.action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.action-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.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}.action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.action-list ul.action-item li .chip-item span.id{font-size:9px}.action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.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}.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}.action-list ul.action-item li:first-child{-webkit-animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(2){-webkit-animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(3){-webkit-animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(4){-webkit-animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(5){-webkit-animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(6){-webkit-animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(7){-webkit-animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(8){-webkit-animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(9){-webkit-animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(10){-webkit-animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both;animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@-webkit-keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@-webkit-keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}@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:0;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{-webkit-animation:rotate 2s linear infinite;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;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@-webkit-keyframes rotate{to{transform:rotate(1turn)}}@keyframes rotate{to{transform:rotate(1turn)}}@-webkit-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}}@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;top:0;right:0;bottom:0;left:0}dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}dp-date-picker input:focus{outline:none}dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;-webkit-animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}dp-date-picker .dp-popup dp-day-calendar,dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}dp-date-picker .dp-popup dp-day-calendar button,dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,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}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays{display:flex;justify-content:space-around}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover{background-color:#f3f3f3}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected{background:#1e5dd3}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day,dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,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}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}dp-date-picker .dp-open+div{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:rgba(0,0,0,.3)}@-webkit-keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}@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;position:relative;margin-right:5px;border:1px solid #747576;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:20px}::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,#747576 1%,#747576 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));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 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,#f31c39 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));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.css,::ng-deep span.file.less,::ng-deep span.file.scss,::ng-deep span.file.xls,::ng-deep span.file.xlsx{border-color:#34aa44}::ng-deep span.file.css:before,::ng-deep span.file.less:before,::ng-deep span.file.scss:before,::ng-deep span.file.xls:before,::ng-deep span.file.xlsx:before{background:linear-gradient(45deg,#34aa44,#34aa44 1%,#34aa44 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.css:after,::ng-deep span.file.less:after,::ng-deep span.file.scss:after,::ng-deep span.file.xls:after,::ng-deep span.file.xlsx:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.css .format,::ng-deep span.file.less .format,::ng-deep span.file.scss .format,::ng-deep span.file.xls .format,::ng-deep span.file.xlsx .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,#1e5dd3 1%,#1e5dd3 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));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.ai,::ng-deep span.file.html,::ng-deep span.file.jpeg,::ng-deep span.file.jpg,::ng-deep span.file.png,::ng-deep span.file.ppt{border-color:#f6882f}::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.jpg:before,::ng-deep span.file.png:before,::ng-deep span.file.ppt:before{background:linear-gradient(45deg,#f6882f,#f6882f 1%,#f6882f 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.jpg:after,::ng-deep span.file.png:after,::ng-deep span.file.ppt:after{border-color:#f6882f}::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.jpg .format,::ng-deep span.file.png .format,::ng-deep span.file.ppt .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7,#7aa6f7 1%,#7aa6f7 50%,rgba(41,137,216,0) 51%,rgba(125,185,232,0));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:rgba(0,0,0,.05)!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:14px solid #f1f1f1;border-bottom:12px solid transparent;border-top:12px solid 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:14px solid #f1f1f1;border-bottom:12px solid transparent;border-top:12px solid 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:calc(224px / 2 - 20px)!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}"]
870
867
  },] }
871
868
  ];
872
869
  LogAnIssueComponent.ctorParameters = () => [
@@ -889,4 +886,4 @@ LogAnIssueComponent.propDecorators = {
889
886
  disconnectRefresh: [{ type: Output }],
890
887
  datePicker: [{ type: ViewChild, args: ['datePicker',] }]
891
888
  };
892
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWFuLWlzc3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2xvZy1hbi1pc3N1ZS9sb2ctYW4taXNzdWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUdwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFTakMsTUFBTSxPQUFPLG1CQUFtQjtJQTBLOUIsWUFBb0IsVUFBMkIsRUFBVSxXQUF3QixFQUFVLFlBQTBCLEVBQVUsUUFBeUI7UUFBcEksZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUF2Sy9JLHNCQUFpQixHQUFHO1lBQzNCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixJQUFJLEVBQUMsSUFBSTtTQUNWLENBQUM7UUFDTyxpQkFBWSxHQUFFO1lBQ3JCLFdBQVcsRUFBRyxJQUFJO1lBQ2hCLGFBQWEsRUFBRyxFQUFFO1lBQ2xCLElBQUksRUFBRSxJQUFJO1lBQ1YsVUFBVSxFQUFDLElBQUk7U0FD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LElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0QsZ0JBQWdCO1FBQ2YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixJQUFJLE1BQU0sRUFBRTtZQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztTQUN6QztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7U0FDNUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLElBQUksTUFBTSxFQUFFO1lBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1NBQzVDO0lBQ0gsQ0FBQzs7O1lBNzJCQSxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsZ28yQ0FBNEM7O2FBRTdDOzs7WUFmUSxlQUFlO1lBRGYsV0FBVztZQU1YLFlBQVk7WUFDWixlQUFlOzs7eUJBV3JCLEtBQUs7c0JBQ0wsS0FBSztnQ0FDTCxLQUFLOzJCQUtMLEtBQUs7bUJBTUwsS0FBSztxQkFDTCxLQUFLOzRCQUNMLE1BQU07NkJBQ04sTUFBTTs0QkFDTixNQUFNO3lCQUNOLE1BQU07Z0NBQ04sTUFBTTt5QkFFTixTQUFTLFNBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ0lzc3VlU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2xvZy1pc3N1ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAndmNvbXBseS1lZGl0b3InO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IElzc3VlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaXNzdWUtZGF0YSc7XHJcbmltcG9ydCB7IFRISVNfRVhQUiB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1sb2ctYW4taXNzdWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2ctYW4taXNzdWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xvZy1hbi1pc3N1ZS5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ0FuSXNzdWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgb3BlbmVkRnJvbSAhOiBhbnk7XHJcbiAgQElucHV0KCkgaXNzdWVJZCAhOiBhbnk7XHJcbiAgQElucHV0KCkgcmVwb25zaWJpbGl0eURhdGEgPSB7IC8vIG9ubHkgdXNlZCBieSBsb2cgYW4gaXNzdWVcclxuICAgIHJlc3BvbnNpYmlsaXR5SWQ6IG51bGwsXHJcbiAgICByZXNwb25zaWJpbGl0eU5hbWU6ICcnLFxyXG4gICAgcmNJZDpudWxsXHJcbiAgfTtcclxuICBASW5wdXQoKSBpc3N1ZURldGFpbHMgPXtcclxuICAgIGF1ZGl0UGxhbklkIDogbnVsbCxcclxuICAgICAgYXVkaXRQbGFuTmFtZSAgOicnLFxyXG4gICAgICByY0lkOiBudWxsLFxyXG4gICAgICBhdWRpdE9iaklkOm51bGxcclxuICB9XHJcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xyXG4gIEBJbnB1dCgpIGNvbmZpZyAhOiBJc3N1ZUNvbmZpZ3VyYXRpb25cclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGN1cnJlbnRVc2VyICE6IGFueTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIHNob3dEYXRlRXJyb3IgPSBmYWxzZTtcclxuICBzZWxlY3RlZERhdGU6IGFueTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgc21pbGV5TWVzc2FnZSA9IGBUaGUgaXNzdWUgaGFzIGJlZW4gcmVwb3J0ZWQuYDtcclxuICBpc3N1ZURhdGEgITogYW55O1xyXG4gIGlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIHsgYnV0dG9uVGV4dDogJ1JlcG9ydCBNb3JlIElzc3VlcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxyXG4gICAgeyBidXR0b25UZXh0OiAnVmlldyBJc3N1ZScsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdJc3N1ZScgfSxcclxuICBdO1xyXG4gIGNyZWF0ZWREYXRhICE6IGFueTtcclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgLy8gbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0Rlc2NyaXB0aW9uJyxcclxuICB9O1xyXG5cclxuICBkYXRlQ29uZmlnID0ge1xyXG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxyXG4gICAgZm9ybWF0OiAnREQgTU1NIFlZWVknLFxyXG4gICAgdW5TZWxlY3RPbkNsaWNrOiB0cnVlLFxyXG4gICAgb3Blbk9uQ2xpY2s6ZmFsc2UsXHJcbiAgICBvcGVuT25Gb2N1czpmYWxzZSxcclxuICAgIG1pbjogbmV3IERhdGUoKS5nZXREYXRlKCkudG9TdHJpbmcoKSxcclxuICB9O1xyXG4gIGxpc3REYXRhOmFueSA9IHtcclxuICAgIGlzc3VlVHlwZUxpc3Q6IFtdLFxyXG4gICAgdXNlckxpc3Q6IFtdLFxyXG4gICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgIHJjTGlzdDogW10sXHJcbiAgICBsaW5rYWdlTGlzdDpbXVxyXG4gIH07XHJcbiAgbG9nSXNzdWVGb3JtOiBhbnkgPSB7XHJcbiAgICBpc3N1ZU5hbWU6ICcnLFxyXG4gICAgZXZpZGVuY2VSZXF1aXJlZDogMCxcclxuICAgIGlzc3VlRGVzY3JpcHRpb246ICcnLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50czogW10sXHJcbiAgICBpc3N1ZUNhdGVnb3J5OiBbXSxcclxuICAgIGlzc3VlQ3VzdG9tVGFnOiBbXSxcclxuICAgIGlzc3VlUkM6IFtdLFxyXG4gICAgaXNzdWVUeXBlOiBbXSxcclxuICAgIGlzQXNzaWduVG9NeXNlbGY6IGZhbHNlLFxyXG4gICAgZW50cnVzdFRvOiBbXSxcclxuICAgIGlzc3VlRHVlRGF0ZTogJycsXHJcbiAgICBpc3N1ZUR1ZVRpbWU6ICcxMTo1OSBwbScsXHJcbiAgICBleGNlcHRpb25UeXBlOiAxLFxyXG4gICAgaXNzdWVSaXNrUmF0aW5nOiAxLFxyXG4gICAgaXNzdWVQcmlvcml0eTogMSxcclxuICAgIGlzc3VlUmVjb21tZW5kYXRpb246ICcnLFxyXG4gICAgcmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM6W10sXHJcbiAgICBpc3N1ZUFzc29jaWF0ZWRSaXNrOiAnJyxcclxuICAgIGFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgaXNzdWVDQ1VzZXJzOiBbXSxcclxuICAgIGZhaWx1cmVDQ1VzZXJzOiBbXSxcclxuICAgIGxpbmtlZENvbnRyb2xSaXNrOltdLFxyXG4gICAgbGlua2FnZVR5cGUgOiAnUklTSydcclxuXHJcbiAgfTtcclxuICBBdHRhY2htZW50VHJhY2s6IGFueSA9IFtbXSxbXSxbXV07XHJcbiAgYWRkaXRpb25hbE9wdGlvblN0YXR1czogYW55ID0ge1xyXG4gICAgRVhDRVBUSU9OX1RZUEU6IGZhbHNlLFxyXG4gICAgRVZJREVOQ0U6IGZhbHNlLFxyXG4gICAgUFJJT1JJVFk6IGZhbHNlLFxyXG4gICAgSVNTVUVfVFlQRTogZmFsc2UsXHJcbiAgICBBU1NPQ0lBVEVEX1JJU0tTOiBmYWxzZSxcclxuICAgIE9WRVJTSUdIVDogZmFsc2VcclxuICB9O1xyXG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcclxuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ0xPVy1NZWRpdW0nLCB2YWx1ZTogMiwgY2xhc3M6ICdsb3ctbWVkJyB9LFxyXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcclxuICAgIHsgbmFtZTogJ0hpZ2gnLCB2YWx1ZTogNCwgY2xhc3M6ICdoaWdoJyB9XHJcbiAgXTtcclxuICByaXNrUHJvcml0eSA9IFtcclxuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ01FRElVTScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXHJcbiAgICB7IG5hbWU6ICdISUdIJywgdmFsdWU6IDMsIGNsYXNzOiAnaGlnaCcgfSxcclxuXHJcbiAgXTtcclxuXHJcbiAgc2lkZVNlbGVjdG9yRWxlbWVudHM6IGFueSA9IFsnSVNTVUVfQ0FURUdPUlknLCAnSVNTVUVfUkMnLCAnSVNTVUVfV0hPJywgJ0lTU1VFX1RZUEUnLCAnSVNTVUVfQ0MnLCAnSVNTVUVfRkNDJywnSVNTVUVfQ09OVFJPTF9SSVNLJ107XHJcbiAgc2VsZWN0b3JDb25maWcgPSB7XHJcbiAgICBJU1NVRV9DQVRHT1JZOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgSXNzdWUgQ2F0ZWdvcnknLFxyXG4gICAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ0NhdGVnb3J5IHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggSXNzdWUgQ2F0ZWdvcnknLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gQ2F0ZWdvcmllcyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9SQzoge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IFJlc3BvbnNpYmlsaXR5IENlbnRlcicsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnUmVzcG9uc2liaWx0eSBjZW50ZXIgc2VsZWN0ZWQnLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gUmVzcG9uc2liaWxpdHkgQ2VudGVycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9XSE86IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBVc2VyJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9UWVBFOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgSXNzdWUgVHlwZScsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnSXNzdWUgVHlwZSBzZWxlY3RlZCcsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIElzc3VlIFR5cGUnLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gSXNzdWUgVHlwZXMgRm91bmQnXHJcbiAgICB9LFxyXG4gICAgSVNTVUVfQ0M6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9GQ0M6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmaWVsZHNXaXRoRXJyb3I6IGFueSA9IFtdO1xyXG4gIGhpZGRlbkxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGFjdGl2ZUZpZWxkID0gJyc7XHJcbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICBsaXN0TG9hZGluZ1N0YXR1czogYW55ID0gW107XHJcbiAgY3VycmVudFRpbWUgPSAnJztcclxuICAgIC8qKlxyXG4gICAqIGlzUkNQcmVTZWxlY3RlZCxpc1JDVmlzaWJsZSBhcmUgdmFyaWFibGUgdXNlZCB0byBzZXQgdGhlIHZpc2liaWxpdHkgb2YgcmMgZmllbGQgYW5kIGVkaXQgYnV0dG9uIGluIGNlcnRhaW4gY29uZGl0aW9uc1xyXG4gICAqL1xyXG4gIGlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gIGlzUkNWaXNpYmxlID0gdHJ1ZVxyXG4gIGlzUkNNYW5kYXRvcnkgPSB0cnVlO1xyXG4gIGRhdGFGb3JFZGl0ICE6YW55O1xyXG4gIGlzUmlza0NvbnRyb2xWaXNpYmxlID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dTZXJ2aWNlOiBMb2dJc3N1ZVNlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLCBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50VGltZSA9IHRoaXMuZ2V0Q3VycmVudFRpbWUoKTtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMuc2V0VXNlckRldGFpbHMoKTtcclxuICAgIHRoaXMuZmV0Y2hJc3N1ZVR5cGVzKCk7XHJcbiAgICB0aGlzLmZldGNoVXNlckxpc3QoKTtcclxuICAgIHRoaXMuZmV0Y2hDYXRlZ29yeUxpc3QoKTtcclxuICAgIHRoaXMuZmV0Y2hSQ0xpc3QoKTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFyZXMuZW5hYmxlX3Jpc2tjbGFzcykge1xyXG4gICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdSSVNLX0NMQVNTSUZJQ0FUSU9OJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgdGhpcy5mZXRjaENvbnRyb2xSaXNrcygpO1xyXG4gICAgIHRoaXMuZGVjaWRlUkNtYW5kYXRvcnkoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5jdXJyZW50VGltZSA9IHRoaXMuZ2V0Q3VycmVudFRpbWUoKTtcclxuICB9XHJcblxyXG4gIGRlY2lkZVJDbWFuZGF0b3J5KCl7XHJcbiAgICBpZihbJ0dMT0JBTCcsJyddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkgJiYgdGhpcy5tb2RlID09PSdDUkVBVEUnKXtcclxuICAgICAgdGhpcy5pc1JDTWFuZGF0b3J5ID0gdHJ1ZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmlzUkNNYW5kYXRvcnkgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBzZXRDdXJyZW50VGltZSgpIHtcclxuICAgIHRoaXMuY3VycmVudFRpbWUgPSB0aGlzLmdldEN1cnJlbnRUaW1lKCk7XHJcbiAgfVxyXG4gIGdldEN1cnJlbnRUaW1lKCkge1xyXG4gICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIGlmICh0b2RheS5nZXREYXRlKCkgPT09IG5ldyBEYXRlKHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRHVlRGF0ZSkuZ2V0RGF0ZSgpKSB7XHJcbiAgICAgIGlmICh0b2RheS5nZXRIb3VycygpIDwgMTIgJiYgdG9kYXkuZ2V0TWludXRlcygpIDwgNTkgJiYgdG9kYXkuZ2V0U2Vjb25kcygpIDwgNTkpIHtcclxuICAgICAgICByZXR1cm4gYCR7KHRvZGF5LmdldEhvdXJzKCkgPCAxMCkgPyAnMCcgKyB0b2RheS5nZXRIb3VycygpIDogdG9kYXkuZ2V0SG91cnMoKX06JHsodG9kYXkuZ2V0TWludXRlcygpIDwgMTApID8gJzAnICsgdG9kYXkuZ2V0TWludXRlcygpIDogdG9kYXkuZ2V0TWludXRlcygpfSBhbWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGAkeygodG9kYXkuZ2V0SG91cnMoKSAtIDEyKSA8IDEwKSA/ICcwJyArICh0b2RheS5nZXRIb3VycygpIC0gMTIpIDogKHRvZGF5LmdldEhvdXJzKCkgLSAxMil9OiR7KHRvZGF5LmdldE1pbnV0ZXMoKSA8IDEwKSA/ICcwJyArIHRvZGF5LmdldE1pbnV0ZXMoKSA6IHRvZGF5LmdldE1pbnV0ZXMoKX0gcG1gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJzAwOjAwIGFtJztcclxuICAgIH1cclxuICB9XHJcbiAgc2V0VXNlckRldGFpbHMoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI7XHJcbiAgfVxyXG4gIGZldGNoSXNzdWVUeXBlcygpIHtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMF0gPSBmYWxzZTtcclxuICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuZ2V0SXNzdWVUeXBlcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1swXSA9IHRydWU7XHJcbiAgICAgIHRoaXMubGlzdERhdGEuaXNzdWVUeXBlTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMF0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZldGNoVXNlckxpc3QoKSB7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzFdID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuZ2V0T3JnUGVvcGxlKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzFdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5saXN0RGF0YS51c2VyTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMV0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaENhdGVnb3J5TGlzdCgpIHtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMl0gPSBmYWxzZTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRJc3N1ZUNhdGVnb3JpZXMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMl0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdCA9IHJlcz8uZGF0YTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QgPSB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdC5maWx0ZXIoKGU6YW55KT0+IGU/LmNhdGVnb3J5X25hbWUgIT09ICdVbmNhdGVnb3JpemVkJylcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMl0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaFJDTGlzdCgpIHtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbM10gPSBmYWxzZTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbM10gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLnJjTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZFJDKCk7XHJcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzNdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRSQygpe1xyXG4gICAgaWYodGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmNJZCAmJiB0aGlzLm9wZW5lZEZyb20gPT09ICdDT01QTElBTkNFX1dPUktST09NJyl7XHJcbiAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMgPSAgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YS5yY0lkID8gdGhpcy5saXN0RGF0YS5yY0xpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5yY19pZCA9PT0gdGhpcy5yZXBvbnNpYmlsaXR5RGF0YS5yY0lkKTpbXTtcclxuICAgIH1lbHNlIGlmKHRoaXMuaXNzdWVEZXRhaWxzPy5yY0lkICYmIFsnQVVESVRfV09SS1JPT00nLCdWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcbiAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMgPSB0aGlzLmlzc3VlRGV0YWlscz8ucmNJZCA/IHRoaXMubGlzdERhdGEucmNMaXN0LmZpbHRlcigoZTphbnkpID0+IGUucmNfaWQgPT09IHRoaXMuaXNzdWVEZXRhaWxzPy5yY0lkKTpbXTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMubG9nSXNzdWVGb3JtPy5pc3N1ZVJDPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IHRydWU7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmKCEodGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmNJZCB8fCB0aGlzLmlzc3VlRGV0YWlscz8ucmNJZCkgJiYgWydDT01QTElBTkNFX1dPUktST09NJywnQVVESVRfV09SS1JPT00nLCdWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcbiAgICB0aGlzLmlzUkNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5pc1JDVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZmV0Y2hDb250cm9sUmlza3MoKXtcclxuXHJcbiAgICAgIGlmKFsnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG5cclxuICAgICAgICB0aGlzLmdldExpbmthZ2UodGhpcy5pc3N1ZURldGFpbHM/LmF1ZGl0T2JqSWQsdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2FnZVR5cGUpXHJcbiAgICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXRMaW5rYWdlKGF1ZGl0SWQ6YW55LCB0eXBlOnN0cmluZyl7XHJcbiAgICB0aGlzLmlzUmlza0NvbnRyb2xMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRDb250cm9sUmlzayhhdWRpdElkLHR5cGUpPy5zdWJzY3JpYmUoKGRhdGE6YW55KT0+e1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0ID0gWy4uLnRoaXMubGlzdERhdGEubGlua2FnZUxpc3QsLi4uZGF0YV07XHJcbiAgICAgIHRoaXMubGlzdERhdGEubGlua2FnZUxpc3QgPSAgdGhpcy5saXN0RGF0YS5saW5rYWdlTGlzdC5maWx0ZXIoKHRoaW5nOmFueSwgaW5kZXg6YW55LCBzZWxmOmFueSkgPT5cclxuICBpbmRleCA9PT0gc2VsZi5maW5kSW5kZXgoKHQ6YW55KSA9PiAoXHJcbiAgICB0Lml0ZW1JZCA9PT0gdGhpbmcuaXRlbUlkICYmIHQuaXRlbVR5cGUgPT09IHRoaW5nLml0ZW1UeXBlXHJcbiAgKSlcclxuKVxyXG4gICAgICB0aGlzLmlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwibGlua2FnZVwiLHRoaXMubGlzdERhdGEpXHJcbiAgICAgfSwoZXJyb3I6YW55KT0+e1xyXG4gICAgICB0aGlzLmlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgfSlcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVGhpcyBmdW5jdGlvaiBjaGVjayB3ZWF0aGVyIGFsbCB0aGUgcmVxdWlyZWQgbGlzdHMgYXJlIGxvYWRlZFxyXG4gICAqIElmIGxvYWRlZCBoaWRlcyB0aGUgbG9hZGVyIG90aGVyd2lzZSBzaG93cyB0aGUgbG9hZGVyLlxyXG4gICAqL1xyXG4gIGNoZWNrQWxsTGlzdExvYWRlZCgpIHtcclxuICAgIGlmICh0aGlzLmxpc3RMb2FkaW5nU3RhdHVzLmluY2x1ZGVzKGZhbHNlKSkge1xyXG4gICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIGlmKHRoaXMubW9kZT09PSdFRElUJyl7XHJcbiAgICAgICAgdGhpcy5mZXRjaElzc3VlRGV0YWlscygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGVycm9yIGZyb20gdGhlIGZpZWxzIHdpdGggZXJyb3IgdG8gcmVtb3ZlIHRoZSBlcnJvciBtZXNzYWcgZnJvbSB0aGUgVUlcclxuICAgKiBAcGFyYW0gZXJyb3JLZXkgZXJyb3IgSWRlbnRpZmllciB1c2VkIHRvIHNob3cgZXJyb3IgaW4gc3BlY2lmaWMgZmllbGRzLlxyXG4gICAqL1xyXG4gIHJlbW92ZUVycm9yKGVycm9yS2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWVsZHNXaXRoRXJyb3IuaW5kZXhPZihlcnJvcktleSk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLmZpZWxkc1dpdGhFcnJvci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvcGVuRGF0ZVBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcGkub3BlbigpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgICB0aGlzLnNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJ0lTU1VFX0RBVEVfVElNRScsICdJU1NVRV9EQVRFX1RJTUUnKTtcclxuICB9XHJcbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XHJcbiAgICBpZiAoIWV2dCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZXZ0Py5kYXRlPy5fZCkge1xyXG4gICAgICBsZXQgbW9udGhBcnJheSA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddXHJcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uX2QpLmdldERhdGUoKTtcclxuICAgICAgY29uc3QgbW9udGhWYWx1ZSA9IG1vbnRoQXJyYXlbbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0TW9udGgoKV07XHJcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uX2QpLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcclxuICAgICAgaWYgKGV2dD8uZGF0ZT8uX2QgIT09IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRHVlRGF0ZT8uX2QpIHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUR1ZVRpbWUgPSBcIjExOjU5IFBNXCI7XHJcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50VGltZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZXZ0Py5kYXRlPy5fZCkge1xyXG4gICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUR1ZURhdGUgPSBldnQ/LmRhdGU/Ll9kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5jbG9zZSgpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXRBY3RpdmVGaWVsZFNlbGVjdG9yKCcnLCAnJyk7XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmVGaWVsZFNlbGVjdG9yKGFjdGl2ZUZpZWxkOiBzdHJpbmcsIGFjdGl2ZVNlbGVjdG9yPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZpZWxkID0gYWN0aXZlRmllbGQ7XHJcbiAgICAoYWN0aXZlU2VsZWN0b3IgPyB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gYWN0aXZlU2VsZWN0b3IgOiB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJycpO1xyXG4gICAgY29uc3Qgc2xpZGVyVHlwZSA9IFsnSVNTVUVfUkMnLCAnSVNTVUVfQ0FURUdPUlknLCAnSVNTVUVfVFlQRScsICdJU1NVRV9DQycsICdJU1NVRV9GQ0MnLCAnSVNTVUVfV0hPJywnSVNTVUVfQ09OVFJPTF9SSVNLJ107XHJcbiAgICBpZiAoc2xpZGVyVHlwZS5pbmNsdWRlcyhhY3RpdmVGaWVsZCkpIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZmllbGREZXNlbGVjdG9yKHR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gICAgdGhpcy5hY3RpdmVGaWVsZCA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0b3JBY3Rpb24oZXZ0OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NBVEVHT1JZJzoge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGV2dCk7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDYXRlZ29yeSA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QsICdjYXRlZ29yeV9pZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5KTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBpZiAoZXZ0Py5sZW5ndGggPiAwKSB7IHRoaXMucmVtb3ZlRXJyb3IoJ2lzc3VlQ2F0ZWdvcnknKSB9XHJcbiAgICAgICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/Lmlzc3VlQ2F0ZWdvcnlbMF0/LmN1c3RvbV90YWdzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgY29uc3QgdGFnOmFueSA9IFtdXHJcbiAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybT8uaXNzdWVDYXRlZ29yeVswXT8uY3VzdG9tX3RhZ3MuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICB0YWcucHVzaCh7bmFtZTplbGVtZW50LCB2YWx1ZTonJ30pXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ3VzdG9tVGFnID0gdGFnO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDdXN0b21UYWcgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy9bXCJpc3N1ZU5hbWVcIiwgXCJpc3N1ZUNhdGVnb3J5XCIsIFwiaXNzdWVSQ1wiLCBcImVudHJ1c3RUb1wiLCBcImlzc3VlRHVlRGF0ZVwiLCBcImlzc3VlUmVjb21tZW5kYXRpb25cIl1cclxuICAgICAgY2FzZSAnSVNTVUVfUkMnOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQyA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS5yY0xpc3QsICdyY19pZCcpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGlmIChldnQ/Lmxlbmd0aCA+IDApIHsgdGhpcy5yZW1vdmVFcnJvcignaXNzdWVSQycpIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9XSE8nOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uZW50cnVzdFRvID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LCAnZW1wbG95ZWVfaWQnKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBpZiAoZXZ0Py5sZW5ndGggPiAwKSB7IHRoaXMucmVtb3ZlRXJyb3IoJ2VudHJ1c3RUbycpIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9UWVBFJzoge1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlVHlwZSA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS5pc3N1ZVR5cGVMaXN0LCAnaXNzdWVfaWQnKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9DQyc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNDVXNlcnMgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEudXNlckxpc3QsICdlbXBsb3llZV9lbWFpbCcpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0ZDQyc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5mYWlsdXJlQ0NVc2VycyA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS51c2VyTGlzdCwgJ2VtcGxveWVlX2VtYWlsJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NPTlRST0xfUklTSyc6XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2VkQ29udHJvbFJpc2sgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEubGlua2FnZUxpc3QsICdpdGVtSWQnKTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rYWdlVHlwZSA9ICB0aGlzLmxvZ0lzc3VlRm9ybT8ubGlua2VkQ29udHJvbFJpc2tbMF0/Lml0ZW1UeXBlO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbSh0eXBlOiBhbnksIGVsZW1lbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NBVEVHT1JZJzoge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ2F0ZWdvcnkuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uY2F0ZWdvcnlfaWQgPT09IGVsZW1lbnQuY2F0ZWdvcnlfaWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ2F0ZWdvcnkuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9SQyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLnJjX2lkID09PSBlbGVtZW50LnJjX2lkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfV0hPJzoge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUby5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5lbXBsb3llZV9pZCA9PT0gZWxlbWVudC5lbXBsb3llZV9pZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uZW50cnVzdFRvLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfVFlQRSc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVR5cGUuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uaXNzdWVfaWQgPT09IGVsZW1lbnQuaXNzdWVfaWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlVHlwZS5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NDJzoge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ0NVc2Vycy5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5lbXBsb3llZV9lbWFpbCA9PT0gZWxlbWVudC5lbXBsb3llZV9lbWFpbCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDQ1VzZXJzLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfRkNDJzoge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmZhaWx1cmVDQ1VzZXJzLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmVtcGxveWVlX2VtYWlsID09PSBlbGVtZW50LmVtcGxveWVlX2VtYWlsKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5mYWlsdXJlQ0NVc2Vycy5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NPTlRST0xfUklTSyc6XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2VkQ29udHJvbFJpc2suZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uaXRlbUlkID09PSBlbGVtZW50Lml0ZW1JZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2VkQ29udHJvbFJpc2suc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgYXNzaWduTXlzZWxmKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucmVtb3ZlRXJyb3IoJ2VudHJ1c3RUbycpXHJcbiAgICB0aGlzLmxvZ0lzc3VlRm9ybS5lbnRydXN0VG8gPSBbXTtcclxuXHJcbiAgfVxyXG4gIHNldEV4Y2VwdGlvbih0eXBlOiBhbnkpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uZXhjZXB0aW9uVHlwZSA9IHR5cGU7IH1cclxuICBzZXRFdmlkZW5jZSh0eXBlOiBhbnkpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uZXZpZGVuY2VSZXF1aXJlZCA9IHR5cGU7IH1cclxuXHJcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzW2V2ZW50LmNvZGVdID0gZXZlbnQuY2hlY2tlZDtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xyXG4gIH1cclxuICBpZFRvQXJyYXkoc2VsZWN0ZWRJdGVtczogYW55LCBsaXN0SXRlbXM6IGFueSwgZmlsdGVya2V5OiBhbnkpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRJdGVtcztcclxuICAgIGNvbnN0IGxpc3QgPSBsaXN0SXRlbXM7XHJcbiAgICBjb25zdCBrZXkgPSBmaWx0ZXJrZXk7XHJcbiAgICBjb25zdCB4ID0gbGlzdC5maWx0ZXIoKGVsOiBhbnkpID0+IHNlbGVjdGVkLmluY2x1ZGVzKGVsW2tleV0pKTtcclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuLy8vQ29kZSBiZXR3ZWVuIDUwMyB0byA2MDggY2FuIGJlIG9wdGltaXplZCB0byByZW1vdmUgZHVwbGljYXRpb25cclxuIHNlbGVjdEZpbGUodHlwZTpzdHJpbmcsZmlsZXM6YW55KXtcclxuICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgIGNhc2UgJ0lTU1VFX0RFU0NSSVBUSU9OJzoge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xyXG4gICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrWzBdLnB1c2gobmFtZSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGVzW2ldLmZpbGUsdHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgICAgfVxyXG4gICAgY2FzZSAnUkVDT01NRU5ERURfQUNUSU9OUyc6e1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xyXG4gICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrWzFdLnB1c2gobmFtZSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGVzW2ldLmZpbGUsdHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBjYXNlICdBU1NPQ0lBVEVEX1JJU0tTJzp7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlc1tpXS5maWxlLm5hbWUgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbMl0ucHVzaChuYW1lKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXNbaV0uZmlsZSx0eXBlKTtcclxuICAgICAgfVxyXG4gICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gfVxyXG59XHJcblxyXG5cclxuICB1cGxvYWRGaWxlKGZpbGU6IGFueSx0eXBlOnN0cmluZykge1xyXG4gICAgbGV0IHRyYWNrSW5kZXggPSAwIDtcclxuICAgIHN3aXRjaCh0eXBlKXtcclxuICAgICAgY2FzZSAnSVNTVUVfREVTQ1JJUFRJT04nOntcclxuICAgICAgICB0cmFja0luZGV4ID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRUNPTU1FTkRFRF9BQ1RJT05TJzp7XHJcbiAgICAgICAgdHJhY2tJbmRleCA9IDE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTT0NJQVRFRF9SSVNLUyc6e1xyXG4gICAgICAgIHRyYWNrSW5kZXggPSAyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgY29uc3QgZGVzdGluYXRpb25TdHJpbmcgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCkudG9TdHJpbmcoKTtcclxuICAgIHRoaXMubG9nU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcrJy8nKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuQXR0YWNobWVudFRyYWNrW3RyYWNrSW5kZXhdLmluZGV4T2YoZmlsZT8ubmFtZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbdHJhY2tJbmRleF0uc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN3aXRjaCh0eXBlKXtcclxuICAgICAgICAgIGNhc2UgJ0lTU1VFX0RFU0NSSVBUSU9OJzp7XHJcbiAgICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ1JFQ09NTUVOREVEX0FDVElPTlMnOntcclxuICAgICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0ucmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0FTU09DSUFURURfUklTS1MnOntcclxuICAgICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gIHRoaXMuQXR0YWNobWVudFRyYWNrW3RyYWNrSW5kZXhdLmluZGV4T2YoZmlsZS5uYW1lKTtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1t0cmFja0luZGV4XS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaWxlKGZpbGU6IGFueSx0eXBlOnN0cmluZykge1xyXG4gICAgbGV0IGZpbGVJbmRleCA9IC0xO1xyXG4gICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgICBjYXNlICdJU1NVRV9ERVNDUklQVElPTic6e1xyXG4gICAgICAgIGZpbGVJbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHM/LmZpbmRJbmRleCgoY3VycmVudEZpbGVzOiBhbnkpID0+IGN1cnJlbnRGaWxlcy5vcmdfZmlsZSA9PT0gZmlsZS5vcmdfZmlsZSkgPz8gLTE7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50cz8uc3BsaWNlKGZpbGVJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVDT01NRU5ERURfQUNUSU9OUyc6e1xyXG4gICAgICAgIGZpbGVJbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLnJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzPy5maW5kSW5kZXgoKGN1cnJlbnRGaWxlczogYW55KSA9PiBjdXJyZW50RmlsZXMub3JnX2ZpbGUgPT09IGZpbGUub3JnX2ZpbGUpID8/IC0xO1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLnJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzPy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NPQ0lBVEVEX1JJU0tTJzp7XHJcbiAgICAgICAgZmlsZUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM/LmZpbmRJbmRleCgoY3VycmVudEZpbGVzOiBhbnkpID0+IGN1cnJlbnRGaWxlcy5vcmdfZmlsZSA9PT0gZmlsZS5vcmdfZmlsZSkgPz8gLTE7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM/LnNwbGljZShmaWxlSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gYWRkSXNzdWUoKXtcclxuICAgY29uc3QgZm9ybSA9IGNsb25lRGVlcCh0aGlzLmxvZ0lzc3VlRm9ybSk7XHJcbiAgIGlmIChmb3JtLmlzQXNzaWduVG9NeXNlbGYpe1xyXG4gICAgIGZvcm0uZW50cnVzdFRvID0gdGhpcy5saXN0RGF0YS51c2VyTGlzdC5maWx0ZXIoKGVtcGxpc3Q6IGFueSkgPT4gZW1wbGlzdC5teV9tZW1iZXJfaWQgPT09IHRoaXMuY3VycmVudFVzZXIuaWQpO1xyXG4gICB9XHJcblxyXG4gICB0aGlzLmZpZWxkc1dpdGhFcnJvciA9IFtdO1xyXG4gICB0aGlzLmZpZWxkc1dpdGhFcnJvciA9IHRoaXMubG9nU2VydmljZS52YWxpZGF0ZShmb3JtLCB0aGlzLm9wZW5lZEZyb20sdGhpcy5pc1JDTWFuZGF0b3J5KTtcclxuICAgaWYgKHRoaXMuZmllbGRzV2l0aEVycm9yLmxlbmd0aCA+IDAgKXtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgIGNvbnN0IFBBWUxPQUQgPSB0aGlzLmxvZ1NlcnZpY2UucGF5bG9hZEJ1aWxkZXIoZm9ybSwgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzKTtcclxuXHJcbiAgIGlmKHRoaXMubW9kZSA9PT0gJ0NSRUFURScpe1xyXG4gICBQQVlMT0FELmxpbmthZ2Vfb2JqZWN0ID0geyBzb3VyY2UgOiB0aGlzLm9wZW5lZEZyb219O1xyXG4gICAgaWYgKHRoaXMuIG9wZW5lZEZyb20gPT09ICdDT01QTElBTkNFX1dPUktST09NJyAmJiB0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yZXNwb25zaWJpbGl0eUlkKXtcclxuICAgICAgUEFZTE9BRC5saW5rYWdlX29iamVjdCA9IHsgY29tcGxpYW5jZTogeyBpZHM6IFt0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yZXNwb25zaWJpbGl0eUlkXSwgc291cmNlOiBcIlJFU1BPTlNJQklMSVRZX1dPUktST09NXCIgfX0gO1xyXG4gICB9XHJcbiAgIGlmKFsnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG4gICAgICAgICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmthZ2VUeXBlICYmIHRoaXMubG9nSXNzdWVGb3JtPy5saW5rZWRDb250cm9sUmlzay5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmthZ2VUeXBlID09PSAnUklTSycpe1xyXG4gICAgICAgICAgICAgIFBBWUxPQUQubGlua2FnZV9vYmplY3QucmlzayA9ICB7IGlkczogW3RoaXMubG9nSXNzdWVGb3JtPy5saW5rZWRDb250cm9sUmlza1swXT8uaXRlbUlkXSwgc291cmNlOiB0aGlzLm9wZW5lZEZyb20gfSA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmthZ2VUeXBlID09PSAnUkVTUE9OU0lCSUxJVFknKXtcclxuICAgICAgICAgICAgICBQQVlMT0FELmxpbmthZ2Vfb2JqZWN0LmNvbXBsaWFuY2UgPSB7IGlkczogW3RoaXMubG9nSXNzdWVGb3JtPy5saW5rZWRDb250cm9sUmlza1swXT8uaXRlbUlkXSwgc291cmNlOiB0aGlzLm9wZW5lZEZyb20gfSA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgfVxyXG4gICBpZihbJ0FVRElUX1dPUktST09NJywnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG4gICAgICBpZih0aGlzLmlzc3VlRGV0YWlscy5hdWRpdFBsYW5JZCl7XHJcbiAgICAgICAgUEFZTE9BRC5saW5rYWdlX29iamVjdC5hdWRpdF9wbGFuID0gIHsgaWRzOiBbdGhpcy5pc3N1ZURldGFpbHMuYXVkaXRQbGFuSWRdLCBzb3VyY2U6IHRoaXMub3BlbmVkRnJvbSB9O1xyXG4gICAgICB9XHJcbiAgIH1cclxuICB9XHJcblxyXG4gIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgIFBBWUxPQUQuSXNzdWVMaW5rYWdlID0gdGhpcy5kYXRhRm9yRWRpdD8ubGlua2FnZV9vYmplY3Q7XHJcbiAgfVxyXG4gICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZVxyXG5cclxuICAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLnVwZGF0ZUlzc3VlKFBBWUxPQUQsdGhpcy5pc3N1ZUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgaXNzdWUgaGFzIGJlZW4gdXBkYXRlZC5gO1xyXG4gICAgICB0aGlzLmlzc3VlRGF0YSA9IHJlcztcclxuICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2VcclxuICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycpO1xyXG4gICB9KTtcclxuICAgfWVsc2UgaWYodGhpcy5tb2RlID09PSAnQ1JFQVRFJyB8fCB0aGlzLm1vZGUgPT09ICcnIHx8ICF0aGlzLm1vZGUpe1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmNyZWF0ZUlzc3VlKFBBWUxPQUQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc3N1ZURhdGEgPSByZXM7XHJcbiAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlXHJcbiAgIH0sIGVycm9yID0+IHtcclxuICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nKTtcclxuICAgfSk7XHJcbiAgIH1cclxuXHJcbiB9XHJcbiBjbG9zZVNtaWxleShldnQ/OiBhbnkpe1xyXG4gIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICB0aGlzLmNsb3NlV29ya0Zsb3codGhpcy5pc3N1ZURhdGEsZmFsc2UpO1xyXG4gfVxyXG4vKipcclxuICogQ2xvc2VzIHdvcmtmbG93IGVuZ2luZVxyXG4gKiBAcGFyYW0gZXZ0XHJcbiAqIEBwYXJhbSBjb25maXJtXHJcbiAqL1xyXG5jbG9zZVdvcmtGbG93KGV2dDogYW55LCBjb25maXJtOmFueSl7XHJcbiAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHtldnQsIGNvbmZpcm19KTtcclxuIH1cclxuIGFjdGlvbihldnQ6IGFueSl7XHJcbiAgIGlmIChldnQgPT09ICdhZGRNb3JlJyl7XHJcbiAgICB0aGlzLnJlc2V0SXNzdWVGb3JtKCk7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIHRoaXMuY2xvc2VXb3JrRmxvdyh0aGlzLmlzc3VlRGF0YSwgZmFsc2UpO1xyXG4gIH1cclxuICBlbHNlIGlmKGV2dCA9PT0gJ3ZpZXdJc3N1ZScpe1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnZpZXdJc3N1ZSgpO1xyXG4gIH1cclxuXHJcbiAgIH1cclxuXHJcbiAgIHZpZXdJc3N1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICAgICB9XHJcbiAgIFxyXG4gICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgICAgIHVybCArPSAnL2lzc3VlLXdvcmtyb29tLycgKyB0aGlzLmlzc3VlRGF0YT8uX2lkO1xyXG4gICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdXJsICs9ICcvYXVkaXQvaXNzdWUtd29ya3Jvb20vJyArIHRoaXMuaXNzdWVEYXRhPy5faWQ7XHJcbiAgICAgICB9XHJcbiAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICB9XHJcbiAgICBcclxuLyoqXHJcbiAqIFBvcHVsYXRlIHRoZSB0aWNrbWFyayBvZiBvcHRpb25hbCBmaWVsZHNcclxuICovXHJcbnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKXtcclxuICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XHJcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzKSl7XHJcbiAgICBpZiAodGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzW2tleV0gPT09IHRydWUpe1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goa2V5KTtcclxuICAgIH1cclxuICB9XHJcbiAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xyXG59XHJcbi8qKlxyXG4gKiBGZXRjaHMgaXNzdWUgZGV0YWlscyB3aGVuIGluIGVkaXQgbW9kZSBiYXNlZCBvbiB0aGUgaW5wdXQgaWQgcGFzc2VkXHJcbiAqL1xyXG5mZXRjaElzc3VlRGV0YWlscygpe1xyXG4gIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XHJcbiAgdGhpcy5sb2dTZXJ2aWNlLmdldElzc3VlRGV0YWlscyh0aGlzLmlzc3VlSWQpLnN1YnNjcmliZSgoZGF0YTphbnkpPT57XHJcbiAgICBjb25zb2xlLmxvZyhcImlzc3VlIERhdGFcIixkYXRhKVxyXG4gICAgdGhpcy5wb3B1bGF0ZUZvcm0oZGF0YSlcclxuICB9KVxyXG59XHJcbi8qKlxyXG4gKiBQb3B1bGF0ZXMgdGhlIGlzc3VlIGZvcm0gd2hlbiBpbiBlZGl0IG1vZGVcclxuICogQHBhcmFtIGlzc3VlRGF0YSBpc3N1ZSBkYXRhIGZldGNoZWQgZnJvbSBBUElcclxuICovXHJcbmFzeW5jIHBvcHVsYXRlRm9ybShpc3N1ZURhdGEgOiBhbnkpe1xyXG4gIHRoaXMuZGF0YUZvckVkaXQgPSBpc3N1ZURhdGE7XHJcbiAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gIGNvbnN0IGlzc3VlRHVlRGF0ZSA9IGlzc3VlRGF0YS5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5X2RhdGUuc3BsaXQoJy0nKTtcclxuICB0aGlzLmxvZ0lzc3VlRm9ybSA9IHtcclxuICAgIGlzc3VlTmFtZSA6IGlzc3VlRGF0YS50aXRsZSA/PyAnJyxcclxuICAgIGV2aWRlbmNlUmVxdWlyZWQ6IGlzc3VlRGF0YT8uZXZpZGVuY2U/LmV2aWRlbmNlX2ZsYWc/PzAsXHJcbiAgICBpc3N1ZURlc2NyaXB0aW9uOiBpc3N1ZURhdGE/LmRlc2NyaXB0aW9uPy5sZW5ndGggPyBpc3N1ZURhdGE/LmRlc2NyaXB0aW9uWzBdPy50ZXh0IDonJyxcclxuICAgIGlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHM6IGlzc3VlRGF0YT8uZGVzY3JpcHRpb24/Lmxlbmd0aCA/IGlzc3VlRGF0YT8uZGVzY3JpcHRpb25bMF0/LmF0dGFjaG1lbnRzIDpbXSxcclxuICAgIGlzc3VlQ2F0ZWdvcnk6IGlzc3VlRGF0YT8uY2F0ZWdvcnlfaWQgPyB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLmNhdGVnb3J5X2lkID09PSBpc3N1ZURhdGE/LmNhdGVnb3J5X2lkKTpbXSxcclxuICAgIGlzc3VlQ3VzdG9tVGFnIDogaXNzdWVEYXRhPy5jdXN0b21fdGFncyA/PyBbXSxcclxuICAgIGlzc3VlUkM6IGlzc3VlRGF0YT8ucmNfaWQgPyB0aGlzLmxpc3REYXRhLnJjTGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLnJjX2lkID09PSBpc3N1ZURhdGE/LnJjX2lkKTpbXSxcclxuICAgIGlzc3VlVHlwZTogW10sXHJcbiAgICByZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50czppc3N1ZURhdGE/LnJlY29tbWVuZGF0aW9uPy5sZW5ndGggPyBpc3N1ZURhdGE/LnJlY29tbWVuZGF0aW9uWzBdPy5hdHRhY2htZW50cyA6W10sXHJcbiAgICBhc3NvY2lhdGVkUmlza3NBdHRhY2htZW50czpbXSxcclxuICAgIGlzQXNzaWduVG9NeXNlbGYgOiAgaXNzdWVEYXRhPy5hc3NpZ25lZV9pZCA9PT0gdGhpcy5jdXJyZW50VXNlci5pZCAgPyB0cnVlIDogZmFsc2UsXHJcbiAgICBlbnRydXN0VG86IGlzc3VlRGF0YT8uYXNzaWduZWVfaWQgPT09IHRoaXMuY3VycmVudFVzZXIuaWQgPyBbXTogdGhpcy5saXN0RGF0YS51c2VyTGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLm15X21lbWJlcl9pZCA9PT0gaXNzdWVEYXRhPy5hc3NpZ25lZV9pZCApLFxyXG4gICAgaXNzdWVEdWVEYXRlOiBpc3N1ZURhdGE/LmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3lfZGF0ZT8gIG1vbWVudChgJHtpc3N1ZUR1ZURhdGVbMF19LSR7aXNzdWVEdWVEYXRlWzFdfS0ke2lzc3VlRHVlRGF0ZVsyXX1gKTonJyxcclxuICAgIGlzc3VlRHVlVGltZTogdGhpcy5sb2dTZXJ2aWNlLmNvbnZlcnRGcm9tMjRUbzEyRm9ybWF0KGlzc3VlRGF0YS5mcmVxdWVuY3lfZGV0YWlscy5mcmVxdWVuY3lfdGltZSksXHJcbiAgICBleGNlcHRpb25UeXBlOiBpc3N1ZURhdGEuZXhjZXB0aW9uX3R5cGUgPz8gMSxcclxuICAgIGlzc3VlUmlza1JhdGluZzogaXNzdWVEYXRhLnJpc2tfY2xhc3MgPz8gMSxcclxuICAgIGlzc3VlUHJpb3JpdHk6IGlzc3VlRGF0YS5wcmlvcml0eSA/PyAxLFxyXG4gICAgaXNzdWVSZWNvbW1lbmRhdGlvbjogaXNzdWVEYXRhPy5yZWNvbW1lbmRhdGlvbj8ubGVuZ3RoID8gaXNzdWVEYXRhPy5yZWNvbW1lbmRhdGlvblswXT8udGV4dCA6JycsXHJcbiAgICBpc3N1ZUFzc29jaWF0ZWRSaXNrOiBpc3N1ZURhdGE/LmFzc29jaWF0ZWRfcmlzaz8ubGVuZ3RoID8gaXNzdWVEYXRhPy5hc3NvY2lhdGVkX3Jpc2tbMF0/LnRleHQgOicnLFxyXG4gICAgaXNzdWVDQ1VzZXJzOiBpc3N1ZURhdGEub3ZlcnNlZXI/LmNjX2VtYWlsLmxlbmd0aCA/IGF3YWl0IHRoaXMuZ2VuZXJhdGVPdmVyc2Vlckxpc3QodGhpcy5saXN0RGF0YS51c2VyTGlzdCxpc3N1ZURhdGEub3ZlcnNlZXI/LmNjX2VtYWlsKSA6W10sXHJcbiAgICBmYWlsdXJlQ0NVc2VyczogaXNzdWVEYXRhLm92ZXJzZWVyPy5mYWlsdXJlX2NjX2VtYWlsLmxlbmd0aCA/IGF3YWl0IHRoaXMuZ2VuZXJhdGVPdmVyc2Vlckxpc3QodGhpcy5saXN0RGF0YS51c2VyTGlzdCxpc3N1ZURhdGEub3ZlcnNlZXI/LmZhaWx1cmVfY2NfZW1haWwpIDpbXSxcclxuICAgIGxpbmtlZENvbnRyb2xSaXNrOltdLFxyXG4gICAgbGlua2FnZVR5cGUgOiAnUkVTUE9OU0lCSUxJVFknXHJcbiAgfTtcclxuICBjb25zb2xlLmxvZyhcIkFmdGVyIEluaXRcIix0aGlzLmxvZ0lzc3VlRm9ybSlcclxuICBpZih0aGlzLm1vZGUgPT09ICdFRElUJyl7XHJcbiAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDPy5sZW5ndGggPiAwID8gdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSB0cnVlIDogdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8uc291cmNlID09PSAnR0xPQkFMJz8gdGhpcy5pc1JDTWFuZGF0b3J5ID0gdHJ1ZSA6IHRoaXMuaXNSQ01hbmRhdG9yeSA9IGZhbHNlO1xyXG4gICAgKGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8uc291cmNlID09PSAnR0xPQkFMJyAmJiBpc3N1ZURhdGE/LnJjX2lkKSA/IHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gZmFsc2UgOiB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAvLyBpZihpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LmNvbXBsaWFuY2U/Lmlkcz8ubGVuZ3RoKXtcclxuICAgIC8vICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2VkQ29udHJvbFJpc2sgPSBpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LmNvbXBsaWFuY2U/Lmlkcz8/W10sXHJcbiAgICAvLyAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmthZ2VUeXBlID0gJ1JFU1BPTlNJQklMSVRZJ1xyXG4gICAgLy8gICB0aGlzLmlzUmlza0NvbnRyb2xWaXNpYmxlID0gdHJ1ZTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmKGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8ucmlzaz8uaWRzPy5sZW5ndGgpe1xyXG4gICAgLy8gICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rZWRDb250cm9sUmlzayA9IGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8ucmlzaz8uaWRzPz9bXSxcclxuICAgIC8vICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2FnZVR5cGUgPSAnUklTSyc7XHJcbiAgICAvLyAgIHRoaXMuaXNSaXNrQ29udHJvbFZpc2libGUgPSB0cnVlO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICB0aGlzLnNldE9wdGlvbmFsRmllbGQoaXNzdWVEYXRhKTtcclxufVxyXG4vKipcclxuICogU2V0cyB0aGUgdmlzaWJpbGl0eSBvZiBvcHRpb25hbCBmaWVsZHNcclxuICogQHBhcmFtIGlzc3VlRGF0YSAgaXNzdWUgZGF0YSBmZXRjaGVkIGZyb20gQVBJXHJcbiAqL1xyXG5zZXRPcHRpb25hbEZpZWxkKGlzc3VlRGF0YTphbnkpe1xyXG4gIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cyA9IHtcclxuICAgIEVYQ0VQVElPTl9UWVBFOiBpc3N1ZURhdGEuZXhjZXB0aW9uX3R5cGUgPyB0cnVlIDogZmFsc2UsXHJcbiAgICBFVklERU5DRTogaXNzdWVEYXRhLmV2aWRlbmNlLmV2aWRlbmNlX2ZsYWcgPyB0cnVlIDpmYWxzZSxcclxuICAgIFBSSU9SSVRZOiAgaXNzdWVEYXRhLnByaW9yaXR5ID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgSVNTVUVfVFlQRTogZmFsc2UsXHJcbiAgICBBU1NPQ0lBVEVEX1JJU0tTIDogaXNzdWVEYXRhLmFzc29jaWF0ZWRfcmlzay5sZW5ndGggPyAoaXNzdWVEYXRhLmFzc29jaWF0ZWRfcmlza1swXS50ZXh0Lmxlbmd0aCA/IHRydWUgOiBmYWxzZSk6ZmFsc2UsXHJcbiAgICBPVkVSU0lHSFQgOiAoaXNzdWVEYXRhLm92ZXJzZWVyLmNjX2VtYWlsLmxlbmd0aCA+IDAgfHwgaXNzdWVEYXRhLm92ZXJzZWVyLmZhaWx1cmVfY2NfZW1haWwubGVuZ3RoID4gMCkgPyB0cnVlIDogZmFsc2VcclxuICB9O1xyXG4gIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG59XHJcbi8qKlxyXG4gKiBHZW5lcmF0ZXMgbGlzdCBvZiBzZWxlY3RlZCBvdmVyc2VlclxyXG4gKiBAcGFyYW0gYWxsVXNlckxpc3QgbGlzdCBvZiBhbGwgdXNlcnMgaW4gdGhlIG9yZ2FuemF0aW9uXHJcbiAqIEBwYXJhbSBvdmVyc2Vlckxpc3QgIGxpdCBvZiB0aGUgb3ZlcnNlZXIgdGhhdCBuZWVkcyB0byBiZSBmaWx0ZXJlZFxyXG4gKiBAcmV0dXJucyAgbGlzdCBvZiBhcnJheSBjb250YWluaW5nIHRoZSB1c2VycyBvYmplY3RzXHJcbiAqL1xyXG5nZW5lcmF0ZU92ZXJzZWVyTGlzdChhbGxVc2VyTGlzdDphbnksIG92ZXJzZWVyTGlzdDphbnkgKXtcclxuIHJldHVybiBvdmVyc2Vlckxpc3QubWFwKCh1c2VyOmFueSk9PntcclxuICAgIGNvbnN0IGZvdW5kVXNlciA9IGFsbFVzZXJMaXN0LmZpbmQoKGVsZW1lbnQ6YW55KSA9PiBlbGVtZW50Lm15X21lbWJlcl9pZCA9PT0gdXNlci5tZW1iZXJfaWQpO1xyXG4gICAgaWYoZm91bmRVc2VyKXtcclxuICAgICAgcmV0dXJuIGZvdW5kVXNlcjtcclxuICAgIH1cclxuICB9KVxyXG59XHJcbi8qKlxyXG4gKiBSZXNldHMgaXNzdWUgZm9ybVxyXG4gKi9cclxucmVzZXRJc3N1ZUZvcm0oKXtcclxuICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIHRoaXMubG9nSXNzdWVGb3JtID0ge1xyXG4gICAgaXNzdWVOYW1lIDogJycsXHJcbiAgICBldmlkZW5jZVJlcXVpcmVkOiAwLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbjogJycsXHJcbiAgICBpc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzOiBbXSxcclxuICAgIHJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM6W10sXHJcbiAgICBpc3N1ZUNhdGVnb3J5OiBbXSxcclxuICAgIGlzc3VlQ3VzdG9tVGFnIDogW10sXHJcbiAgICBpc3N1ZVJDOiBbXSxcclxuICAgIGlzc3VlVHlwZTogW10sXHJcbiAgICBpc0Fzc2lnblRvTXlzZWxmIDogZmFsc2UsXHJcbiAgICBlbnRydXN0VG86IFtdLFxyXG4gICAgaXNzdWVEdWVEYXRlOiAnJyxcclxuICAgIGlzc3VlRHVlVGltZTogJzExOjU5IFBNJyxcclxuICAgIGV4Y2VwdGlvblR5cGU6IDEsXHJcbiAgICBpc3N1ZVJpc2tSYXRpbmc6IDEsXHJcbiAgICBpc3N1ZVByaW9yaXR5OiAxLFxyXG4gICAgaXNzdWVSZWNvbW1lbmRhdGlvbjogJycsXHJcbiAgICBpc3N1ZUFzc29jaWF0ZWRSaXNrOiAnJyxcclxuICAgIGlzc3VlQ0NVc2VyczogW10sXHJcbiAgICBmYWlsdXJlQ0NVc2VyczogW11cclxuICB9O1xyXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cykpe1xyXG4gICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1c1trZXldID0gZmFsc2U7XHJcbiAgfVxyXG4gIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgaXNzdWUgaGFzIGJlZW4gcmVwb3J0ZWQuYDtcclxuICB0aGlzLm1vZGUgPSAnQ1JFQVRFJztcclxuICB0aGlzLm1vZGVDaGFuZ2UuZW1pdCh0aGlzLm1vZGUpO1xyXG4gIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gfVxyXG4gY2hlY2tEZXNjcmlwdGlvbigpIHtcclxuICBpZiAodGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEZXNjcmlwdGlvbiA9PSAnPGJyPicpIHtcclxuICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb24gPSAnJztcclxuICB9XHJcbiAgaWYgKHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUmVjb21tZW5kYXRpb24gPT0gJzxicj4nKSB7XHJcbiAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJlY29tbWVuZGF0aW9uID0gJyc7XHJcbiAgfVxyXG4gIGlmICh0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUFzc29jaWF0ZWRSaXNrID09ICc8YnI+Jykge1xyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVBc3NvY2lhdGVkUmlzayA9ICcnO1xyXG4gIH1cclxufVxyXG59XHJcbiJdfQ==
889
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWFuLWlzc3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2xvZy1hbi1pc3N1ZS9sb2ctYW4taXNzdWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUdwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFTakMsTUFBTSxPQUFPLG1CQUFtQjtJQTBLOUIsWUFBb0IsVUFBMkIsRUFBVSxXQUF3QixFQUFVLFlBQTBCLEVBQVUsUUFBeUI7UUFBcEksZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUF2Sy9JLHNCQUFpQixHQUFHO1lBQzNCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixJQUFJLEVBQUMsSUFBSTtTQUNWLENBQUM7UUFDTyxpQkFBWSxHQUFFO1lBQ3JCLFdBQVcsRUFBRyxJQUFJO1lBQ2hCLGFBQWEsRUFBRyxFQUFFO1lBQ2xCLElBQUksRUFBRSxJQUFJO1lBQ1YsVUFBVSxFQUFDLElBQUk7U0FD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WSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRTtZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztTQUM1QztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7U0FDNUM7SUFDSCxDQUFDOzs7WUExMkJBLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixnbzJDQUE0Qzs7YUFFN0M7OztZQWZRLGVBQWU7WUFEZixXQUFXO1lBTVgsWUFBWTtZQUNaLGVBQWU7Ozt5QkFXckIsS0FBSztzQkFDTCxLQUFLO2dDQUNMLEtBQUs7MkJBS0wsS0FBSzttQkFNTCxLQUFLO3FCQUNMLEtBQUs7NEJBQ0wsTUFBTTs2QkFDTixNQUFNOzRCQUNOLE1BQU07eUJBQ04sTUFBTTtnQ0FDTixNQUFNO3lCQUVOLFNBQVMsU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9nSXNzdWVTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvbG9nLWlzc3VlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgSXNzdWVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pc3N1ZS1kYXRhJztcclxuaW1wb3J0IHsgVEhJU19FWFBSIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXIvc3JjL291dHB1dC9vdXRwdXRfYXN0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWxvZy1hbi1pc3N1ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZy1hbi1pc3N1ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9nLWFuLWlzc3VlLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9nQW5Jc3N1ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBvcGVuZWRGcm9tICE6IGFueTtcclxuICBASW5wdXQoKSBpc3N1ZUlkICE6IGFueTtcclxuICBASW5wdXQoKSByZXBvbnNpYmlsaXR5RGF0YSA9IHsgLy8gb25seSB1c2VkIGJ5IGxvZyBhbiBpc3N1ZVxyXG4gICAgcmVzcG9uc2liaWxpdHlJZDogbnVsbCxcclxuICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogJycsXHJcbiAgICByY0lkOm51bGxcclxuICB9O1xyXG4gIEBJbnB1dCgpIGlzc3VlRGV0YWlscyA9e1xyXG4gICAgYXVkaXRQbGFuSWQgOiBudWxsLFxyXG4gICAgICBhdWRpdFBsYW5OYW1lICA6JycsXHJcbiAgICAgIHJjSWQ6IG51bGwsXHJcbiAgICAgIGF1ZGl0T2JqSWQ6bnVsbFxyXG4gIH1cclxuICBASW5wdXQoKSBtb2RlID0gJ0NSRUFURSc7XHJcbiAgQElucHV0KCkgY29uZmlnICE6IElzc3VlQ29uZmlndXJhdGlvblxyXG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbW9kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgY3VycmVudFVzZXIgITogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcbiAgc2hvd0RhdGVFcnJvciA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkRGF0ZTogYW55O1xyXG4gIHNob3dTbWlsZXkgPSBmYWxzZTtcclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBzbWlsZXlNZXNzYWdlID0gYFRoZSBpc3N1ZSBoYXMgYmVlbiByZXBvcnRlZC5gO1xyXG4gIGlzc3VlRGF0YSAhOiBhbnk7XHJcbiAgaXNSaXNrQ29udHJvbExvYWRpbmcgPSBmYWxzZTtcclxuICBhY3Rpb25CdXR0b25zID0gW1xyXG4gICAgeyBidXR0b25UZXh0OiAnUmVwb3J0IE1vcmUgSXNzdWVzJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXHJcbiAgICB7IGJ1dHRvblRleHQ6ICdWaWV3IElzc3VlJywgY2xhc3M6ICdibHVlLWJ0bicsIGlkOiAndmlld0lzc3VlJyB9LFxyXG4gIF07XHJcbiAgY3JlYXRlZERhdGEgITogYW55O1xyXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgICAvLyBtb2RlOiAncHJpbWUnLFxyXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnRGVzY3JpcHRpb24nLFxyXG4gIH07XHJcblxyXG4gIGRhdGVDb25maWcgPSB7XHJcbiAgICBkaXNhYmxlS2V5cHJlc3M6IHRydWUsXHJcbiAgICBmb3JtYXQ6ICdERCBNTU0gWVlZWScsXHJcbiAgICB1blNlbGVjdE9uQ2xpY2s6IHRydWUsXHJcbiAgICBvcGVuT25DbGljazpmYWxzZSxcclxuICAgIG9wZW5PbkZvY3VzOmZhbHNlLFxyXG4gICAgbWluOiBuZXcgRGF0ZSgpLmdldERhdGUoKS50b1N0cmluZygpLFxyXG4gIH07XHJcbiAgbGlzdERhdGE6YW55ID0ge1xyXG4gICAgaXNzdWVUeXBlTGlzdDogW10sXHJcbiAgICB1c2VyTGlzdDogW10sXHJcbiAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgcmNMaXN0OiBbXSxcclxuICAgIGxpbmthZ2VMaXN0OltdXHJcbiAgfTtcclxuICBsb2dJc3N1ZUZvcm06IGFueSA9IHtcclxuICAgIGlzc3VlTmFtZTogJycsXHJcbiAgICBldmlkZW5jZVJlcXVpcmVkOiAwLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbjogJycsXHJcbiAgICBpc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzOiBbXSxcclxuICAgIGlzc3VlQ2F0ZWdvcnk6IFtdLFxyXG4gICAgaXNzdWVDdXN0b21UYWc6IFtdLFxyXG4gICAgaXNzdWVSQzogW10sXHJcbiAgICBpc3N1ZVR5cGU6IFtdLFxyXG4gICAgaXNBc3NpZ25Ub015c2VsZjogZmFsc2UsXHJcbiAgICBlbnRydXN0VG86IFtdLFxyXG4gICAgaXNzdWVEdWVEYXRlOiAnJyxcclxuICAgIGlzc3VlRHVlVGltZTogJzExOjU5IHBtJyxcclxuICAgIGV4Y2VwdGlvblR5cGU6IDEsXHJcbiAgICBpc3N1ZVJpc2tSYXRpbmc6IDEsXHJcbiAgICBpc3N1ZVByaW9yaXR5OiAxLFxyXG4gICAgaXNzdWVSZWNvbW1lbmRhdGlvbjogJycsXHJcbiAgICByZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50czpbXSxcclxuICAgIGlzc3VlQXNzb2NpYXRlZFJpc2s6ICcnLFxyXG4gICAgYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM6W10sXHJcbiAgICBpc3N1ZUNDVXNlcnM6IFtdLFxyXG4gICAgZmFpbHVyZUNDVXNlcnM6IFtdLFxyXG4gICAgbGlua2VkQ29udHJvbFJpc2s6W10sXHJcbiAgICBsaW5rYWdlVHlwZSA6ICdSSVNLJ1xyXG5cclxuICB9O1xyXG4gIEF0dGFjaG1lbnRUcmFjazogYW55ID0gW1tdLFtdLFtdXTtcclxuICBhZGRpdGlvbmFsT3B0aW9uU3RhdHVzOiBhbnkgPSB7XHJcbiAgICBFWENFUFRJT05fVFlQRTogZmFsc2UsXHJcbiAgICBFVklERU5DRTogZmFsc2UsXHJcbiAgICBQUklPUklUWTogZmFsc2UsXHJcbiAgICBJU1NVRV9UWVBFOiBmYWxzZSxcclxuICAgIEFTU09DSUFURURfUklTS1M6IGZhbHNlLFxyXG4gICAgT1ZFUlNJR0hUOiBmYWxzZVxyXG4gIH07XHJcbiAgcmlza0NsYXNzaWZpY2F0aW9uID0gW1xyXG4gICAgeyBuYW1lOiAnTE9XJywgdmFsdWU6IDEsIGNsYXNzOiAnbG93JyB9LFxyXG4gICAgeyBuYW1lOiAnTE9XLU1lZGl1bScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXHJcbiAgICB7IG5hbWU6ICdNZWRpdW0tSGlnaCcsIHZhbHVlOiAzLCBjbGFzczogJ21lZC1oaWdoJyB9LFxyXG4gICAgeyBuYW1lOiAnSGlnaCcsIHZhbHVlOiA0LCBjbGFzczogJ2hpZ2gnIH1cclxuICBdO1xyXG4gIHJpc2tQcm9yaXR5ID0gW1xyXG4gICAgeyBuYW1lOiAnTE9XJywgdmFsdWU6IDEsIGNsYXNzOiAnbG93JyB9LFxyXG4gICAgeyBuYW1lOiAnTUVESVVNJywgdmFsdWU6IDIsIGNsYXNzOiAnbG93LW1lZCcgfSxcclxuICAgIHsgbmFtZTogJ0hJR0gnLCB2YWx1ZTogMywgY2xhc3M6ICdoaWdoJyB9LFxyXG5cclxuICBdO1xyXG5cclxuICBzaWRlU2VsZWN0b3JFbGVtZW50czogYW55ID0gWydJU1NVRV9DQVRFR09SWScsICdJU1NVRV9SQycsICdJU1NVRV9XSE8nLCAnSVNTVUVfVFlQRScsICdJU1NVRV9DQycsICdJU1NVRV9GQ0MnLCdJU1NVRV9DT05UUk9MX1JJU0snXTtcclxuICBzZWxlY3RvckNvbmZpZyA9IHtcclxuICAgIElTU1VFX0NBVEdPUlk6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBJc3N1ZSBDYXRlZ29yeScsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnQ2F0ZWdvcnkgc2VsZWN0ZWQnLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBJc3N1ZSBDYXRlZ29yeScsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBDYXRlZ29yaWVzIEZvdW5kJ1xyXG4gICAgfSxcclxuICAgIElTU1VFX1JDOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdSZXNwb25zaWJpbHR5IGNlbnRlciBzZWxlY3RlZCcsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFJlc3BvbnNpYmlsaXR5IENlbnRlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBSZXNwb25zaWJpbGl0eSBDZW50ZXJzIEZvdW5kJ1xyXG4gICAgfSxcclxuICAgIElTU1VFX1dITzoge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IFVzZXInLFxyXG4gICAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1VzZXIgc2VsZWN0ZWQnLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBVc2VyJyxcclxuICAgICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgbm9EYXRhVGV4dDogJ05vIFVzZXJzIEZvdW5kJ1xyXG4gICAgfSxcclxuICAgIElTU1VFX1RZUEU6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBJc3N1ZSBUeXBlJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdJc3N1ZSBUeXBlIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggSXNzdWUgVHlwZScsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBJc3N1ZSBUeXBlcyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9DQzoge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IHVzZXIocyknLFxyXG4gICAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1VzZXIgc2VsZWN0ZWQnLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBVc2VyJyxcclxuICAgICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgc2VsZWN0QWxsRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgbm9EYXRhVGV4dDogJ05vIFVzZXJzIEZvdW5kJ1xyXG4gICAgfSxcclxuICAgIElTU1VFX0ZDQzoge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IHVzZXIocyknLFxyXG4gICAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1VzZXIgc2VsZWN0ZWQnLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBVc2VyJyxcclxuICAgICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgc2VsZWN0QWxsRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgbm9EYXRhVGV4dDogJ05vIFVzZXJzIEZvdW5kJ1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGZpZWxkc1dpdGhFcnJvcjogYW55ID0gW107XHJcbiAgaGlkZGVuTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgYWN0aXZlRmllbGQgPSAnJztcclxuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gIGxpc3RMb2FkaW5nU3RhdHVzOiBhbnkgPSBbXTtcclxuICBjdXJyZW50VGltZSA9ICcnO1xyXG4gICAgLyoqXHJcbiAgICogaXNSQ1ByZVNlbGVjdGVkLGlzUkNWaXNpYmxlIGFyZSB2YXJpYWJsZSB1c2VkIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBvZiByYyBmaWVsZCBhbmQgZWRpdCBidXR0b24gaW4gY2VydGFpbiBjb25kaXRpb25zXHJcbiAgICovXHJcbiAgaXNSQ1ByZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgaXNSQ1Zpc2libGUgPSB0cnVlXHJcbiAgaXNSQ01hbmRhdG9yeSA9IHRydWU7XHJcbiAgZGF0YUZvckVkaXQgITphbnk7XHJcbiAgaXNSaXNrQ29udHJvbFZpc2libGUgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ1NlcnZpY2U6IExvZ0lzc3VlU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSkgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRUaW1lID0gdGhpcy5nZXRDdXJyZW50VGltZSgpO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy5zZXRVc2VyRGV0YWlscygpO1xyXG4gICAgdGhpcy5mZXRjaElzc3VlVHlwZXMoKTtcclxuICAgIHRoaXMuZmV0Y2hVc2VyTGlzdCgpO1xyXG4gICAgdGhpcy5mZXRjaENhdGVnb3J5TGlzdCgpO1xyXG4gICAgdGhpcy5mZXRjaFJDTGlzdCgpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25EZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXJlcy5lbmFibGVfcmlza2NsYXNzKSB7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ1JJU0tfQ0xBU1NJRklDQVRJT04nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICB0aGlzLmZldGNoQ29udHJvbFJpc2tzKCk7XHJcbiAgICAgdGhpcy5kZWNpZGVSQ21hbmRhdG9yeSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRUaW1lID0gdGhpcy5nZXRDdXJyZW50VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgZGVjaWRlUkNtYW5kYXRvcnkoKXtcclxuICAgIGlmKFsnR0xPQkFMJywnJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSAmJiB0aGlzLm1vZGUgPT09J0NSRUFURScpe1xyXG4gICAgICB0aGlzLmlzUkNNYW5kYXRvcnkgPSB0cnVlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuaXNSQ01hbmRhdG9yeSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNldEN1cnJlbnRUaW1lKCkge1xyXG4gICAgdGhpcy5jdXJyZW50VGltZSA9IHRoaXMuZ2V0Q3VycmVudFRpbWUoKTtcclxuICB9XHJcbiAgZ2V0Q3VycmVudFRpbWUoKSB7XHJcbiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKHRvZGF5LmdldERhdGUoKSA9PT0gbmV3IERhdGUodGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEdWVEYXRlKS5nZXREYXRlKCkpIHtcclxuICAgICAgaWYgKHRvZGF5LmdldEhvdXJzKCkgPCAxMiAmJiB0b2RheS5nZXRNaW51dGVzKCkgPCA1OSAmJiB0b2RheS5nZXRTZWNvbmRzKCkgPCA1OSkge1xyXG4gICAgICAgIHJldHVybiBgJHsodG9kYXkuZ2V0SG91cnMoKSA8IDEwKSA/ICcwJyArIHRvZGF5LmdldEhvdXJzKCkgOiB0b2RheS5nZXRIb3VycygpfTokeyh0b2RheS5nZXRNaW51dGVzKCkgPCAxMCkgPyAnMCcgKyB0b2RheS5nZXRNaW51dGVzKCkgOiB0b2RheS5nZXRNaW51dGVzKCl9IGFtYDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYCR7KCh0b2RheS5nZXRIb3VycygpIC0gMTIpIDwgMTApID8gJzAnICsgKHRvZGF5LmdldEhvdXJzKCkgLSAxMikgOiAodG9kYXkuZ2V0SG91cnMoKSAtIDEyKX06JHsodG9kYXkuZ2V0TWludXRlcygpIDwgMTApID8gJzAnICsgdG9kYXkuZ2V0TWludXRlcygpIDogdG9kYXkuZ2V0TWludXRlcygpfSBwbWA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnMDA6MDAgYW0nO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRVc2VyRGV0YWlscygpIHtcclxuICAgIHRoaXMuY3VycmVudFVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkudXNlcjtcclxuICB9XHJcbiAgZmV0Y2hJc3N1ZVR5cGVzKCkge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1swXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRJc3N1ZVR5cGVzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzBdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5pc3N1ZVR5cGVMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1swXSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZmV0Y2hVc2VyTGlzdCgpIHtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMV0gPSBmYWxzZTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRPcmdQZW9wbGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMV0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLnVzZXJMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1sxXSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZldGNoQ2F0ZWdvcnlMaXN0KCkge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1syXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldElzc3VlQ2F0ZWdvcmllcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1syXSA9IHRydWU7XHJcbiAgICAgIHRoaXMubGlzdERhdGEuY2F0ZWdvcnlMaXN0ID0gcmVzPy5kYXRhO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdCA9IHRoaXMubGlzdERhdGEuY2F0ZWdvcnlMaXN0LmZpbHRlcigoZTphbnkpPT4gZT8uY2F0ZWdvcnlfbmFtZSAhPT0gJ1VuY2F0ZWdvcml6ZWQnKVxyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1syXSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZldGNoUkNMaXN0KCkge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1szXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1szXSA9IHRydWU7XHJcbiAgICAgIHRoaXMubGlzdERhdGEucmNMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGVkUkMoKTtcclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbM10gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZFJDKCl7XHJcbiAgICBpZih0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yY0lkICYmIHRoaXMub3BlbmVkRnJvbSA9PT0gJ0NPTVBMSUFOQ0VfV09SS1JPT00nKXtcclxuICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQyA9ICB0aGlzLnJlcG9uc2liaWxpdHlEYXRhLnJjSWQgPyB0aGlzLmxpc3REYXRhLnJjTGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLnJjX2lkID09PSB0aGlzLnJlcG9uc2liaWxpdHlEYXRhLnJjSWQpOltdO1xyXG4gICAgfWVsc2UgaWYodGhpcy5pc3N1ZURldGFpbHM/LnJjSWQgJiYgWydBVURJVF9XT1JLUk9PTScsJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCdFWEVDVVRFX0FVRElUX1BMQU4nXS5pbmNsdWRlcyh0aGlzLm9wZW5lZEZyb20pKXtcclxuICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQyA9IHRoaXMuaXNzdWVEZXRhaWxzPy5yY0lkID8gdGhpcy5saXN0RGF0YS5yY0xpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5yY19pZCA9PT0gdGhpcy5pc3N1ZURldGFpbHM/LnJjSWQpOltdO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/Lmlzc3VlUkM/Lmxlbmd0aCl7XHJcbiAgICAgIHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYoISh0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yY0lkIHx8IHRoaXMuaXNzdWVEZXRhaWxzPy5yY0lkKSAmJiBbJ0NPTVBMSUFOQ0VfV09SS1JPT00nLCdBVURJVF9XT1JLUk9PTScsJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCdFWEVDVVRFX0FVRElUX1BMQU4nXS5pbmNsdWRlcyh0aGlzLm9wZW5lZEZyb20pKXtcclxuICAgIHRoaXMuaXNSQ1Zpc2libGUgPSBmYWxzZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmlzUkNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBmZXRjaENvbnRyb2xSaXNrcygpe1xyXG5cclxuICAgICAgaWYoWydWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0TGlua2FnZSh0aGlzLmlzc3VlRGV0YWlscz8uYXVkaXRPYmpJZCx0aGlzLmxvZ0lzc3VlRm9ybS5saW5rYWdlVHlwZSlcclxuICAgICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldExpbmthZ2UoYXVkaXRJZDphbnksIHR5cGU6c3RyaW5nKXtcclxuICAgIHRoaXMuaXNSaXNrQ29udHJvbExvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldENvbnRyb2xSaXNrKGF1ZGl0SWQsdHlwZSk/LnN1YnNjcmliZSgoZGF0YTphbnkpPT57XHJcbiAgICAgIHRoaXMubGlzdERhdGEubGlua2FnZUxpc3QgPSBbLi4udGhpcy5saXN0RGF0YS5saW5rYWdlTGlzdCwuLi5kYXRhXTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5saW5rYWdlTGlzdCA9ICB0aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0LmZpbHRlcigodGhpbmc6YW55LCBpbmRleDphbnksIHNlbGY6YW55KSA9PlxyXG4gIGluZGV4ID09PSBzZWxmLmZpbmRJbmRleCgodDphbnkpID0+IChcclxuICAgIHQuaXRlbUlkID09PSB0aGluZy5pdGVtSWQgJiYgdC5pdGVtVHlwZSA9PT0gdGhpbmcuaXRlbVR5cGVcclxuICApKVxyXG4pXHJcbiAgICAgIHRoaXMuaXNSaXNrQ29udHJvbExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgY29uc29sZS5sb2coXCJsaW5rYWdlXCIsdGhpcy5saXN0RGF0YSlcclxuICAgICB9LChlcnJvcjphbnkpPT57XHJcbiAgICAgIHRoaXMuaXNSaXNrQ29udHJvbExvYWRpbmcgPSBmYWxzZTtcclxuICAgICB9KVxyXG4gIH1cclxuICAvKipcclxuICAgKiBUaGlzIGZ1bmN0aW9qIGNoZWNrIHdlYXRoZXIgYWxsIHRoZSByZXF1aXJlZCBsaXN0cyBhcmUgbG9hZGVkXHJcbiAgICogSWYgbG9hZGVkIGhpZGVzIHRoZSBsb2FkZXIgb3RoZXJ3aXNlIHNob3dzIHRoZSBsb2FkZXIuXHJcbiAgICovXHJcbiAgY2hlY2tBbGxMaXN0TG9hZGVkKCkge1xyXG4gICAgaWYgKHRoaXMubGlzdExvYWRpbmdTdGF0dXMuaW5jbHVkZXMoZmFsc2UpKSB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgaWYodGhpcy5tb2RlPT09J0VESVQnKXtcclxuICAgICAgICB0aGlzLmZldGNoSXNzdWVEZXRhaWxzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgZXJyb3IgZnJvbSB0aGUgZmllbHMgd2l0aCBlcnJvciB0byByZW1vdmUgdGhlIGVycm9yIG1lc3NhZyBmcm9tIHRoZSBVSVxyXG4gICAqIEBwYXJhbSBlcnJvcktleSBlcnJvciBJZGVudGlmaWVyIHVzZWQgdG8gc2hvdyBlcnJvciBpbiBzcGVjaWZpYyBmaWVsZHMuXHJcbiAgICovXHJcbiAgcmVtb3ZlRXJyb3IoZXJyb3JLZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpZWxkc1dpdGhFcnJvci5pbmRleE9mKGVycm9yS2V5KTtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHRoaXMuZmllbGRzV2l0aEVycm9yLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9wZW5EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignSVNTVUVfREFURV9USU1FJywgJ0lTU1VFX0RBVEVfVElNRScpO1xyXG4gIH1cclxuICBjbG9zZURhdGVQaWNrZXIoZXZ0OiBhbnkpIHtcclxuICAgIGlmICghZXZ0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChldnQ/LmRhdGU/Ll9kKSB7XHJcbiAgICAgIGxldCBtb250aEFycmF5ID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ11cclxuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0RGF0ZSgpO1xyXG4gICAgICBjb25zdCBtb250aFZhbHVlID0gbW9udGhBcnJheVtuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXRNb250aCgpXTtcclxuICAgICAgY29uc3QgeWVhclZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgY29uc3QgZGF0ZVN0ciA9IGAke2RhdGVWYWx1ZX0gJHttb250aFZhbHVlfSAke3llYXJWYWx1ZX1gO1xyXG4gICAgICBpZiAoZXZ0Py5kYXRlPy5fZCAhPT0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEdWVEYXRlPy5fZCkge1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRHVlVGltZSA9IFwiMTE6NTkgUE1cIjtcclxuICAgICAgICB0aGlzLnNldEN1cnJlbnRUaW1lKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChldnQ/LmRhdGU/Ll9kKSB7XHJcbiAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRHVlRGF0ZSA9IGV2dD8uZGF0ZT8uX2Q7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVQaWNrZXIuYXBpLmNsb3NlKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJycsICcnKTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoYWN0aXZlRmllbGQ6IHN0cmluZywgYWN0aXZlU2VsZWN0b3I/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYWN0aXZlRmllbGQgPSBhY3RpdmVGaWVsZDtcclxuICAgIChhY3RpdmVTZWxlY3RvciA/IHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBhY3RpdmVTZWxlY3RvciA6IHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJyk7XHJcbiAgICBjb25zdCBzbGlkZXJUeXBlID0gWydJU1NVRV9SQycsICdJU1NVRV9DQVRFR09SWScsICdJU1NVRV9UWVBFJywgJ0lTU1VFX0NDJywgJ0lTU1VFX0ZDQycsICdJU1NVRV9XSE8nLCdJU1NVRV9DT05UUk9MX1JJU0snXTtcclxuICAgIGlmIChzbGlkZXJUeXBlLmluY2x1ZGVzKGFjdGl2ZUZpZWxkKSkge1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBmaWVsZERlc2VsZWN0b3IodHlwZTogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpZWxkID0gJyc7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RvckFjdGlvbihldnQ6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnSVNTVUVfQ0FURUdPUlknOiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXZ0KTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5ID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdCwgJ2NhdGVnb3J5X2lkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ2F0ZWdvcnkpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGlmIChldnQ/Lmxlbmd0aCA+IDApIHsgdGhpcy5yZW1vdmVFcnJvcignaXNzdWVDYXRlZ29yeScpIH1cclxuICAgICAgICBpZih0aGlzLmxvZ0lzc3VlRm9ybT8uaXNzdWVDYXRlZ29yeVswXT8uY3VzdG9tX3RhZ3M/Lmxlbmd0aCl7XHJcbiAgICAgICAgICBjb25zdCB0YWc6YW55ID0gW11cclxuICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtPy5pc3N1ZUNhdGVnb3J5WzBdPy5jdXN0b21fdGFncy5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgIHRhZy5wdXNoKHtuYW1lOmVsZW1lbnQsIHZhbHVlOicnfSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDdXN0b21UYWcgPSB0YWc7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUN1c3RvbVRhZyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAvL1tcImlzc3VlTmFtZVwiLCBcImlzc3VlQ2F0ZWdvcnlcIiwgXCJpc3N1ZVJDXCIsIFwiZW50cnVzdFRvXCIsIFwiaXNzdWVEdWVEYXRlXCIsIFwiaXNzdWVSZWNvbW1lbmRhdGlvblwiXVxyXG4gICAgICBjYXNlICdJU1NVRV9SQyc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLnJjTGlzdCwgJ3JjX2lkJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgaWYgKGV2dD8ubGVuZ3RoID4gMCkgeyB0aGlzLnJlbW92ZUVycm9yKCdpc3N1ZVJDJykgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1dITyc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5lbnRydXN0VG8gPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEudXNlckxpc3QsICdlbXBsb3llZV9pZCcpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGlmIChldnQ/Lmxlbmd0aCA+IDApIHsgdGhpcy5yZW1vdmVFcnJvcignZW50cnVzdFRvJykgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1RZUEUnOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVUeXBlID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLmlzc3VlVHlwZUxpc3QsICdpc3N1ZV9pZCcpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NDJzoge1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ0NVc2VycyA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS51c2VyTGlzdCwgJ2VtcGxveWVlX2VtYWlsJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfRkNDJzoge1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmZhaWx1cmVDQ1VzZXJzID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LCAnZW1wbG95ZWVfZW1haWwnKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSAnSVNTVUVfQ09OVFJPTF9SSVNLJzpcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rZWRDb250cm9sUmlzayA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS5saW5rYWdlTGlzdCwgJ2l0ZW1JZCcpO1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmthZ2VUeXBlID0gIHRoaXMubG9nSXNzdWVGb3JtPy5saW5rZWRDb250cm9sUmlza1swXT8uaXRlbVR5cGU7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtKHR5cGU6IGFueSwgZWxlbWVudDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnSVNTVUVfQ0FURUdPUlknOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDYXRlZ29yeS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5jYXRlZ29yeV9pZCA9PT0gZWxlbWVudC5jYXRlZ29yeV9pZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDYXRlZ29yeS5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1JDJzoge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0ucmNfaWQgPT09IGVsZW1lbnQucmNfaWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9XSE8nOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uZW50cnVzdFRvLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmVtcGxveWVlX2lkID09PSBlbGVtZW50LmVtcGxveWVlX2lkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5lbnRydXN0VG8uc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9UWVBFJzoge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlVHlwZS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5pc3N1ZV9pZCA9PT0gZWxlbWVudC5pc3N1ZV9pZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVUeXBlLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfQ0MnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDQ1VzZXJzLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmVtcGxveWVlX2VtYWlsID09PSBlbGVtZW50LmVtcGxveWVlX2VtYWlsKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNDVXNlcnMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9GQ0MnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uZmFpbHVyZUNDVXNlcnMuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uZW1wbG95ZWVfZW1haWwgPT09IGVsZW1lbnQuZW1wbG95ZWVfZW1haWwpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmZhaWx1cmVDQ1VzZXJzLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfQ09OVFJPTF9SSVNLJzpcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rZWRDb250cm9sUmlzay5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5pdGVtSWQgPT09IGVsZW1lbnQuaXRlbUlkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rZWRDb250cm9sUmlzay5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICBhc3NpZ25NeXNlbGYoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZW1vdmVFcnJvcignZW50cnVzdFRvJylcclxuICAgIHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUbyA9IFtdO1xyXG5cclxuICB9XHJcbiAgc2V0RXhjZXB0aW9uKHR5cGU6IGFueSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5leGNlcHRpb25UeXBlID0gdHlwZTsgfVxyXG4gIHNldEV2aWRlbmNlKHR5cGU6IGFueSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5ldmlkZW5jZVJlcXVpcmVkID0gdHlwZTsgfVxyXG5cclxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXNbZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgfVxyXG4gIGlkVG9BcnJheShzZWxlY3RlZEl0ZW1zOiBhbnksIGxpc3RJdGVtczogYW55LCBmaWx0ZXJrZXk6IGFueSkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3RlZEl0ZW1zO1xyXG4gICAgY29uc3QgbGlzdCA9IGxpc3RJdGVtcztcclxuICAgIGNvbnN0IGtleSA9IGZpbHRlcmtleTtcclxuICAgIGNvbnN0IHggPSBsaXN0LmZpbHRlcigoZWw6IGFueSkgPT4gc2VsZWN0ZWQuaW5jbHVkZXMoZWxba2V5XSkpO1xyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG4vLy9Db2RlIGJldHdlZW4gNTAzIHRvIDYwOCBjYW4gYmUgb3B0aW1pemVkIHRvIHJlbW92ZSBkdXBsaWNhdGlvblxyXG4gc2VsZWN0RmlsZSh0eXBlOnN0cmluZyxmaWxlczphbnkpe1xyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSAnSVNTVUVfREVTQ1JJUFRJT04nOiB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlc1tpXS5maWxlLm5hbWUgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbMF0ucHVzaChuYW1lKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXNbaV0uZmlsZSx0eXBlKTtcclxuICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgICB9XHJcbiAgICBjYXNlICdSRUNPTU1FTkRFRF9BQ1RJT05TJzp7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlc1tpXS5maWxlLm5hbWUgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbMV0ucHVzaChuYW1lKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXNbaV0uZmlsZSx0eXBlKTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNhc2UgJ0FTU09DSUFURURfUklTS1MnOntcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gZmlsZXMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcclxuICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1syXS5wdXNoKG5hbWUpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlc1tpXS5maWxlLHR5cGUpO1xyXG4gICAgICB9XHJcbiAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiB9XHJcbn1cclxuXHJcblxyXG4gIHVwbG9hZEZpbGUoZmlsZTogYW55LHR5cGU6c3RyaW5nKSB7XHJcbiAgICBsZXQgdHJhY2tJbmRleCA9IDAgO1xyXG4gICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgICBjYXNlICdJU1NVRV9ERVNDUklQVElPTic6e1xyXG4gICAgICAgIHRyYWNrSW5kZXggPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JFQ09NTUVOREVEX0FDVElPTlMnOntcclxuICAgICAgICB0cmFja0luZGV4ID0gMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NPQ0lBVEVEX1JJU0tTJzp7XHJcbiAgICAgICAgdHJhY2tJbmRleCA9IDI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICBjb25zdCBkZXN0aW5hdGlvblN0cmluZyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKS50b1N0cmluZygpO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLnVwbG9hZEZpbGVzKGZvcm1EYXRhLCBkZXN0aW5hdGlvblN0cmluZysnLycpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5BdHRhY2htZW50VHJhY2tbdHJhY2tJbmRleF0uaW5kZXhPZihmaWxlPy5uYW1lKTtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1t0cmFja0luZGV4XS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgICAgICAgY2FzZSAnSVNTVUVfREVTQ1JJUFRJT04nOntcclxuICAgICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50cy5wdXNoKHJlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnUkVDT01NRU5ERURfQUNUSU9OUyc6e1xyXG4gICAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5yZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50cy5wdXNoKHJlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQVNTT0NJQVRFRF9SSVNLUyc6e1xyXG4gICAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5hc3NvY2lhdGVkUmlza3NBdHRhY2htZW50cy5wdXNoKHJlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSAgdGhpcy5BdHRhY2htZW50VHJhY2tbdHJhY2tJbmRleF0uaW5kZXhPZihmaWxlLm5hbWUpO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrW3RyYWNrSW5kZXhdLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoZmlsZTogYW55LHR5cGU6c3RyaW5nKSB7XHJcbiAgICBsZXQgZmlsZUluZGV4ID0gLTE7XHJcbiAgICBzd2l0Y2godHlwZSl7XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0RFU0NSSVBUSU9OJzp7XHJcbiAgICAgICAgZmlsZUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50cz8uZmluZEluZGV4KChjdXJyZW50RmlsZXM6IGFueSkgPT4gY3VycmVudEZpbGVzLm9yZ19maWxlID09PSBmaWxlLm9yZ19maWxlKSA/PyAtMTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzPy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRUNPTU1FTkRFRF9BQ1RJT05TJzp7XHJcbiAgICAgICAgZmlsZUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0ucmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM/LmZpbmRJbmRleCgoY3VycmVudEZpbGVzOiBhbnkpID0+IGN1cnJlbnRGaWxlcy5vcmdfZmlsZSA9PT0gZmlsZS5vcmdfZmlsZSkgPz8gLTE7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0ucmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM/LnNwbGljZShmaWxlSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU09DSUFURURfUklTS1MnOntcclxuICAgICAgICBmaWxlSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5hc3NvY2lhdGVkUmlza3NBdHRhY2htZW50cz8uZmluZEluZGV4KChjdXJyZW50RmlsZXM6IGFueSkgPT4gY3VycmVudEZpbGVzLm9yZ19maWxlID09PSBmaWxlLm9yZ19maWxlKSA/PyAtMTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5hc3NvY2lhdGVkUmlza3NBdHRhY2htZW50cz8uc3BsaWNlKGZpbGVJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiBhZGRJc3N1ZSgpe1xyXG4gICBjb25zdCBmb3JtID0gY2xvbmVEZWVwKHRoaXMubG9nSXNzdWVGb3JtKTtcclxuICAgaWYgKGZvcm0uaXNBc3NpZ25Ub015c2VsZil7XHJcbiAgICAgZm9ybS5lbnRydXN0VG8gPSB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LmZpbHRlcigoZW1wbGlzdDogYW55KSA9PiBlbXBsaXN0Lm15X21lbWJlcl9pZCA9PT0gdGhpcy5jdXJyZW50VXNlci5pZCk7XHJcbiAgIH1cclxuXHJcbiAgIHRoaXMuZmllbGRzV2l0aEVycm9yID0gW107XHJcbiAgIHRoaXMuZmllbGRzV2l0aEVycm9yID0gdGhpcy5sb2dTZXJ2aWNlLnZhbGlkYXRlKGZvcm0sIHRoaXMub3BlbmVkRnJvbSx0aGlzLmlzUkNNYW5kYXRvcnkpO1xyXG4gICBpZiAodGhpcy5maWVsZHNXaXRoRXJyb3IubGVuZ3RoID4gMCApe1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICAgY29uc3QgUEFZTE9BRCA9IHRoaXMubG9nU2VydmljZS5wYXlsb2FkQnVpbGRlcihmb3JtLCB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMpO1xyXG5cclxuICAgaWYodGhpcy5tb2RlID09PSAnQ1JFQVRFJyl7XHJcbiAgIFBBWUxPQUQubGlua2FnZV9vYmplY3QgPSB7IHNvdXJjZSA6IHRoaXMub3BlbmVkRnJvbSwgdHlwZTonJywgdHlwZV9pZDogMCwgc291cmNlX2lkOiAwfTtcclxuICAgIGlmICh0aGlzLiBvcGVuZWRGcm9tID09PSAnQ09NUExJQU5DRV9XT1JLUk9PTScgJiYgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmVzcG9uc2liaWxpdHlJZCl7XHJcbiAgICAgIFBBWUxPQUQubGlua2FnZV9vYmplY3QgPSB7IHNvdXJjZV9pZDogIHRoaXMucmVwb25zaWJpbGl0eURhdGE/LnJlc3BvbnNpYmlsaXR5SWQsIHR5cGU6ICcnLCB0eXBlX2lkOiAwIH0gO1xyXG4gICB9XHJcbiAgIGlmKFsnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG4gICAgICAgICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmthZ2VUeXBlICYmIHRoaXMubG9nSXNzdWVGb3JtPy5saW5rZWRDb250cm9sUmlzay5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgaWYoWydSSVNLJywgJ1JFU1BPTlNJQklMSVRZJ10uaW5jbHVkZXModGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmthZ2VUeXBlKSl7XHJcbiAgICAgICAgICAgICAgUEFZTE9BRC5saW5rYWdlX29iamVjdC5zb3VyY2VfaWQgPSB0aGlzLmxvZ0lzc3VlRm9ybT8ubGlua2VkQ29udHJvbFJpc2tbMF0/Lml0ZW1JZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICB9XHJcbiAgIGlmKFsnQVVESVRfV09SS1JPT00nLCdWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcbiAgICAgIGlmKHRoaXMuaXNzdWVEZXRhaWxzLmF1ZGl0UGxhbklkKXtcclxuICAgICAgICBQQVlMT0FELmxpbmthZ2Vfb2JqZWN0LnNvdXJjZV9pZCA9ICB0aGlzLmlzc3VlRGV0YWlscy5hdWRpdFBsYW5JZDtcclxuICAgICAgfVxyXG4gICB9XHJcbiAgfVxyXG5cclxuICBpZih0aGlzLm1vZGUgPT09ICdFRElUJyl7XHJcbiAgICBQQVlMT0FELklzc3VlTGlua2FnZSA9IHRoaXMuZGF0YUZvckVkaXQ/LmxpbmthZ2Vfb2JqZWN0O1xyXG4gIH1cclxuICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWVcclxuXHJcbiAgIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgIHRoaXMubG9nU2VydmljZS51cGRhdGVJc3N1ZShQQVlMT0FELHRoaXMuaXNzdWVJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgVGhlIGlzc3VlIGhhcyBiZWVuIHVwZGF0ZWQuYDtcclxuICAgICAgdGhpcy5pc3N1ZURhdGEgPSByZXM7XHJcbiAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlXHJcbiAgIH0sIGVycm9yID0+IHtcclxuICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nKTtcclxuICAgfSk7XHJcbiAgIH1lbHNlIGlmKHRoaXMubW9kZSA9PT0gJ0NSRUFURScgfHwgdGhpcy5tb2RlID09PSAnJyB8fCAhdGhpcy5tb2RlKXtcclxuICAgIHRoaXMubG9nU2VydmljZS5jcmVhdGVJc3N1ZShQQVlMT0FEKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaXNzdWVEYXRhID0gcmVzO1xyXG4gICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZVxyXG4gICB9LCBlcnJvciA9PiB7XHJcbiAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/Jyk7XHJcbiAgIH0pO1xyXG4gICB9XHJcblxyXG4gfVxyXG4gY2xvc2VTbWlsZXkoZXZ0PzogYW55KXtcclxuICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgdGhpcy5jbG9zZVdvcmtGbG93KHRoaXMuaXNzdWVEYXRhLGZhbHNlKTtcclxuIH1cclxuLyoqXHJcbiAqIENsb3NlcyB3b3JrZmxvdyBlbmdpbmVcclxuICogQHBhcmFtIGV2dFxyXG4gKiBAcGFyYW0gY29uZmlybVxyXG4gKi9cclxuY2xvc2VXb3JrRmxvdyhldnQ6IGFueSwgY29uZmlybTphbnkpe1xyXG4gICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7ZXZ0LCBjb25maXJtfSk7XHJcbiB9XHJcbiBhY3Rpb24oZXZ0OiBhbnkpe1xyXG4gICBpZiAoZXZ0ID09PSAnYWRkTW9yZScpe1xyXG4gICAgdGhpcy5yZXNldElzc3VlRm9ybSgpO1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsb3NlV29ya0Zsb3codGhpcy5pc3N1ZURhdGEsIGZhbHNlKTtcclxuICB9XHJcbiAgZWxzZSBpZihldnQgPT09ICd2aWV3SXNzdWUnKXtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy52aWV3SXNzdWUoKTtcclxuICB9XHJcblxyXG4gICB9XHJcblxyXG4gICB2aWV3SXNzdWUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgICAgfVxyXG4gICBcclxuICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICAgICB1cmwgKz0gJy9pc3N1ZS13b3Jrcm9vbS8nICsgdGhpcy5pc3N1ZURhdGE/Ll9pZDtcclxuICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHVybCArPSAnL2F1ZGl0L2lzc3VlLXdvcmtyb29tLycgKyB0aGlzLmlzc3VlRGF0YT8uX2lkO1xyXG4gICAgICAgfVxyXG4gICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgfVxyXG4gICAgXHJcbi8qKlxyXG4gKiBQb3B1bGF0ZSB0aGUgdGlja21hcmsgb2Ygb3B0aW9uYWwgZmllbGRzXHJcbiAqL1xyXG5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCl7XHJcbiAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xyXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cykpe1xyXG4gICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1c1trZXldID09PSB0cnVlKXtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKGtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcclxufVxyXG4vKipcclxuICogRmV0Y2hzIGlzc3VlIGRldGFpbHMgd2hlbiBpbiBlZGl0IG1vZGUgYmFzZWQgb24gdGhlIGlucHV0IGlkIHBhc3NlZFxyXG4gKi9cclxuZmV0Y2hJc3N1ZURldGFpbHMoKXtcclxuICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gIHRoaXMubG9nU2VydmljZS5nZXRJc3N1ZURldGFpbHModGhpcy5pc3N1ZUlkKS5zdWJzY3JpYmUoKGRhdGE6YW55KT0+e1xyXG4gICAgY29uc29sZS5sb2coXCJpc3N1ZSBEYXRhXCIsZGF0YSlcclxuICAgIHRoaXMucG9wdWxhdGVGb3JtKGRhdGEpXHJcbiAgfSlcclxufVxyXG4vKipcclxuICogUG9wdWxhdGVzIHRoZSBpc3N1ZSBmb3JtIHdoZW4gaW4gZWRpdCBtb2RlXHJcbiAqIEBwYXJhbSBpc3N1ZURhdGEgaXNzdWUgZGF0YSBmZXRjaGVkIGZyb20gQVBJXHJcbiAqL1xyXG5hc3luYyBwb3B1bGF0ZUZvcm0oaXNzdWVEYXRhIDogYW55KXtcclxuICB0aGlzLmRhdGFGb3JFZGl0ID0gaXNzdWVEYXRhO1xyXG4gIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICBjb25zdCBpc3N1ZUR1ZURhdGUgPSBpc3N1ZURhdGEuZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeV9kYXRlLnNwbGl0KCctJyk7XHJcbiAgdGhpcy5sb2dJc3N1ZUZvcm0gPSB7XHJcbiAgICBpc3N1ZU5hbWUgOiBpc3N1ZURhdGEudGl0bGUgPz8gJycsXHJcbiAgICBldmlkZW5jZVJlcXVpcmVkOiBpc3N1ZURhdGE/LmV2aWRlbmNlPy5ldmlkZW5jZV9mbGFnPz8wLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbjogaXNzdWVEYXRhPy5kZXNjcmlwdGlvbj8ubGVuZ3RoID8gaXNzdWVEYXRhPy5kZXNjcmlwdGlvblswXT8udGV4dCA6JycsXHJcbiAgICBpc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzOiBpc3N1ZURhdGE/LmRlc2NyaXB0aW9uPy5sZW5ndGggPyBpc3N1ZURhdGE/LmRlc2NyaXB0aW9uWzBdPy5hdHRhY2htZW50cyA6W10sXHJcbiAgICBpc3N1ZUNhdGVnb3J5OiBpc3N1ZURhdGE/LmNhdGVnb3J5X2lkID8gdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5jYXRlZ29yeV9pZCA9PT0gaXNzdWVEYXRhPy5jYXRlZ29yeV9pZCk6W10sXHJcbiAgICBpc3N1ZUN1c3RvbVRhZyA6IGlzc3VlRGF0YT8uY3VzdG9tX3RhZ3MgPz8gW10sXHJcbiAgICBpc3N1ZVJDOiBpc3N1ZURhdGE/LnJjX2lkID8gdGhpcy5saXN0RGF0YS5yY0xpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5yY19pZCA9PT0gaXNzdWVEYXRhPy5yY19pZCk6W10sXHJcbiAgICBpc3N1ZVR5cGU6IFtdLFxyXG4gICAgcmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM6aXNzdWVEYXRhPy5yZWNvbW1lbmRhdGlvbj8ubGVuZ3RoID8gaXNzdWVEYXRhPy5yZWNvbW1lbmRhdGlvblswXT8uYXR0YWNobWVudHMgOltdLFxyXG4gICAgYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM6W10sXHJcbiAgICBpc0Fzc2lnblRvTXlzZWxmIDogIGlzc3VlRGF0YT8uYXNzaWduZWVfaWQgPT09IHRoaXMuY3VycmVudFVzZXIuaWQgID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgZW50cnVzdFRvOiBpc3N1ZURhdGE/LmFzc2lnbmVlX2lkID09PSB0aGlzLmN1cnJlbnRVc2VyLmlkID8gW106IHRoaXMubGlzdERhdGEudXNlckxpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5teV9tZW1iZXJfaWQgPT09IGlzc3VlRGF0YT8uYXNzaWduZWVfaWQgKSxcclxuICAgIGlzc3VlRHVlRGF0ZTogaXNzdWVEYXRhPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5X2RhdGU/ICBtb21lbnQoYCR7aXNzdWVEdWVEYXRlWzBdfS0ke2lzc3VlRHVlRGF0ZVsxXX0tJHtpc3N1ZUR1ZURhdGVbMl19YCk6JycsXHJcbiAgICBpc3N1ZUR1ZVRpbWU6IHRoaXMubG9nU2VydmljZS5jb252ZXJ0RnJvbTI0VG8xMkZvcm1hdChpc3N1ZURhdGEuZnJlcXVlbmN5X2RldGFpbHMuZnJlcXVlbmN5X3RpbWUpLFxyXG4gICAgZXhjZXB0aW9uVHlwZTogaXNzdWVEYXRhLmV4Y2VwdGlvbl90eXBlID8/IDEsXHJcbiAgICBpc3N1ZVJpc2tSYXRpbmc6IGlzc3VlRGF0YS5yaXNrX2NsYXNzID8/IDEsXHJcbiAgICBpc3N1ZVByaW9yaXR5OiBpc3N1ZURhdGEucHJpb3JpdHkgPz8gMSxcclxuICAgIGlzc3VlUmVjb21tZW5kYXRpb246IGlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb24/Lmxlbmd0aCA/IGlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb25bMF0/LnRleHQgOicnLFxyXG4gICAgaXNzdWVBc3NvY2lhdGVkUmlzazogaXNzdWVEYXRhPy5hc3NvY2lhdGVkX3Jpc2s/Lmxlbmd0aCA/IGlzc3VlRGF0YT8uYXNzb2NpYXRlZF9yaXNrWzBdPy50ZXh0IDonJyxcclxuICAgIGlzc3VlQ0NVc2VyczogaXNzdWVEYXRhLm92ZXJzZWVyPy5jY19lbWFpbC5sZW5ndGggPyBhd2FpdCB0aGlzLmdlbmVyYXRlT3ZlcnNlZXJMaXN0KHRoaXMubGlzdERhdGEudXNlckxpc3QsaXNzdWVEYXRhLm92ZXJzZWVyPy5jY19lbWFpbCkgOltdLFxyXG4gICAgZmFpbHVyZUNDVXNlcnM6IGlzc3VlRGF0YS5vdmVyc2Vlcj8uZmFpbHVyZV9jY19lbWFpbC5sZW5ndGggPyBhd2FpdCB0aGlzLmdlbmVyYXRlT3ZlcnNlZXJMaXN0KHRoaXMubGlzdERhdGEudXNlckxpc3QsaXNzdWVEYXRhLm92ZXJzZWVyPy5mYWlsdXJlX2NjX2VtYWlsKSA6W10sXHJcbiAgICBsaW5rZWRDb250cm9sUmlzazpbXSxcclxuICAgIGxpbmthZ2VUeXBlIDogJ1JFU1BPTlNJQklMSVRZJ1xyXG4gIH07XHJcbiAgY29uc29sZS5sb2coXCJBZnRlciBJbml0XCIsdGhpcy5sb2dJc3N1ZUZvcm0pXHJcbiAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQz8ubGVuZ3RoID4gMCA/IHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gdHJ1ZSA6IHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICBpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnNvdXJjZSA9PT0gJ0dMT0JBTCc/IHRoaXMuaXNSQ01hbmRhdG9yeSA9IHRydWUgOiB0aGlzLmlzUkNNYW5kYXRvcnkgPSBmYWxzZTtcclxuICAgIChpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnNvdXJjZSA9PT0gJ0dMT0JBTCcgJiYgaXNzdWVEYXRhPy5yY19pZCkgPyB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlIDogdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgLy8gaWYoaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5jb21wbGlhbmNlPy5pZHM/Lmxlbmd0aCl7XHJcbiAgICAvLyAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrID0gaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5jb21wbGlhbmNlPy5pZHM/P1tdLFxyXG4gICAgLy8gICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rYWdlVHlwZSA9ICdSRVNQT05TSUJJTElUWSdcclxuICAgIC8vICAgdGhpcy5pc1Jpc2tDb250cm9sVmlzaWJsZSA9IHRydWU7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZihpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnJpc2s/Lmlkcz8ubGVuZ3RoKXtcclxuICAgIC8vICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2VkQ29udHJvbFJpc2sgPSBpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnJpc2s/Lmlkcz8/W10sXHJcbiAgICAvLyAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmthZ2VUeXBlID0gJ1JJU0snO1xyXG4gICAgLy8gICB0aGlzLmlzUmlza0NvbnRyb2xWaXNpYmxlID0gdHJ1ZTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgdGhpcy5zZXRPcHRpb25hbEZpZWxkKGlzc3VlRGF0YSk7XHJcbn1cclxuLyoqXHJcbiAqIFNldHMgdGhlIHZpc2liaWxpdHkgb2Ygb3B0aW9uYWwgZmllbGRzXHJcbiAqIEBwYXJhbSBpc3N1ZURhdGEgIGlzc3VlIGRhdGEgZmV0Y2hlZCBmcm9tIEFQSVxyXG4gKi9cclxuc2V0T3B0aW9uYWxGaWVsZChpc3N1ZURhdGE6YW55KXtcclxuICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMgPSB7XHJcbiAgICBFWENFUFRJT05fVFlQRTogaXNzdWVEYXRhLmV4Y2VwdGlvbl90eXBlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgRVZJREVOQ0U6IGlzc3VlRGF0YS5ldmlkZW5jZS5ldmlkZW5jZV9mbGFnID8gdHJ1ZSA6ZmFsc2UsXHJcbiAgICBQUklPUklUWTogIGlzc3VlRGF0YS5wcmlvcml0eSA/IHRydWUgOiBmYWxzZSxcclxuICAgIElTU1VFX1RZUEU6IGZhbHNlLFxyXG4gICAgQVNTT0NJQVRFRF9SSVNLUyA6IGlzc3VlRGF0YS5hc3NvY2lhdGVkX3Jpc2subGVuZ3RoID8gKGlzc3VlRGF0YS5hc3NvY2lhdGVkX3Jpc2tbMF0udGV4dC5sZW5ndGggPyB0cnVlIDogZmFsc2UpOmZhbHNlLFxyXG4gICAgT1ZFUlNJR0hUIDogKGlzc3VlRGF0YS5vdmVyc2Vlci5jY19lbWFpbC5sZW5ndGggPiAwIHx8IGlzc3VlRGF0YS5vdmVyc2Vlci5mYWlsdXJlX2NjX2VtYWlsLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlXHJcbiAgfTtcclxuICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxufVxyXG4vKipcclxuICogR2VuZXJhdGVzIGxpc3Qgb2Ygc2VsZWN0ZWQgb3ZlcnNlZXJcclxuICogQHBhcmFtIGFsbFVzZXJMaXN0IGxpc3Qgb2YgYWxsIHVzZXJzIGluIHRoZSBvcmdhbnphdGlvblxyXG4gKiBAcGFyYW0gb3ZlcnNlZXJMaXN0ICBsaXQgb2YgdGhlIG92ZXJzZWVyIHRoYXQgbmVlZHMgdG8gYmUgZmlsdGVyZWRcclxuICogQHJldHVybnMgIGxpc3Qgb2YgYXJyYXkgY29udGFpbmluZyB0aGUgdXNlcnMgb2JqZWN0c1xyXG4gKi9cclxuZ2VuZXJhdGVPdmVyc2Vlckxpc3QoYWxsVXNlckxpc3Q6YW55LCBvdmVyc2Vlckxpc3Q6YW55ICl7XHJcbiByZXR1cm4gb3ZlcnNlZXJMaXN0Lm1hcCgodXNlcjphbnkpPT57XHJcbiAgICBjb25zdCBmb3VuZFVzZXIgPSBhbGxVc2VyTGlzdC5maW5kKChlbGVtZW50OmFueSkgPT4gZWxlbWVudC5teV9tZW1iZXJfaWQgPT09IHVzZXIubWVtYmVyX2lkKTtcclxuICAgIGlmKGZvdW5kVXNlcil7XHJcbiAgICAgIHJldHVybiBmb3VuZFVzZXI7XHJcbiAgICB9XHJcbiAgfSlcclxufVxyXG4vKipcclxuICogUmVzZXRzIGlzc3VlIGZvcm1cclxuICovXHJcbnJlc2V0SXNzdWVGb3JtKCl7XHJcbiAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICB0aGlzLmxvZ0lzc3VlRm9ybSA9IHtcclxuICAgIGlzc3VlTmFtZSA6ICcnLFxyXG4gICAgZXZpZGVuY2VSZXF1aXJlZDogMCxcclxuICAgIGlzc3VlRGVzY3JpcHRpb246ICcnLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50czogW10sXHJcbiAgICByZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50czpbXSxcclxuICAgIGFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgaXNzdWVDYXRlZ29yeTogW10sXHJcbiAgICBpc3N1ZUN1c3RvbVRhZyA6IFtdLFxyXG4gICAgaXNzdWVSQzogW10sXHJcbiAgICBpc3N1ZVR5cGU6IFtdLFxyXG4gICAgaXNBc3NpZ25Ub015c2VsZiA6IGZhbHNlLFxyXG4gICAgZW50cnVzdFRvOiBbXSxcclxuICAgIGlzc3VlRHVlRGF0ZTogJycsXHJcbiAgICBpc3N1ZUR1ZVRpbWU6ICcxMTo1OSBQTScsXHJcbiAgICBleGNlcHRpb25UeXBlOiAxLFxyXG4gICAgaXNzdWVSaXNrUmF0aW5nOiAxLFxyXG4gICAgaXNzdWVQcmlvcml0eTogMSxcclxuICAgIGlzc3VlUmVjb21tZW5kYXRpb246ICcnLFxyXG4gICAgaXNzdWVBc3NvY2lhdGVkUmlzazogJycsXHJcbiAgICBpc3N1ZUNDVXNlcnM6IFtdLFxyXG4gICAgZmFpbHVyZUNDVXNlcnM6IFtdXHJcbiAgfTtcclxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMpKXtcclxuICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXNba2V5XSA9IGZhbHNlO1xyXG4gIH1cclxuICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgVGhlIGlzc3VlIGhhcyBiZWVuIHJlcG9ydGVkLmA7XHJcbiAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XHJcbiAgdGhpcy5tb2RlQ2hhbmdlLmVtaXQodGhpcy5tb2RlKTtcclxuICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuIH1cclxuIGNoZWNrRGVzY3JpcHRpb24oKSB7XHJcbiAgaWYgKHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb24gPT0gJzxicj4nKSB7XHJcbiAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uID0gJyc7XHJcbiAgfVxyXG4gIGlmICh0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJlY29tbWVuZGF0aW9uID09ICc8YnI+Jykge1xyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSZWNvbW1lbmRhdGlvbiA9ICcnO1xyXG4gIH1cclxuICBpZiAodGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVBc3NvY2lhdGVkUmlzayA9PSAnPGJyPicpIHtcclxuICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQXNzb2NpYXRlZFJpc2sgPSAnJztcclxuICB9XHJcbn1cclxufVxyXG4iXX0=