@acorex/modules 20.0.8 → 20.0.10

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 (197) hide show
  1. package/common/index.d.ts +1 -0
  2. package/conversation/index.d.ts +4 -1
  3. package/data-management/README.md +3 -0
  4. package/data-management/index.d.ts +101 -0
  5. package/fesm2022/{acorex-modules-application-management-module-designer.component-BErRgx0w.mjs → acorex-modules-application-management-module-designer.component-BvuZJdwg.mjs} +7 -7
  6. package/fesm2022/{acorex-modules-application-management-module-designer.component-BErRgx0w.mjs.map → acorex-modules-application-management-module-designer.component-BvuZJdwg.mjs.map} +1 -1
  7. package/fesm2022/acorex-modules-application-management.mjs +41 -41
  8. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  9. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-X866H4oy.mjs → acorex-modules-auth-acorex-modules-auth-DqsEqXec.mjs} +44 -44
  10. package/fesm2022/acorex-modules-auth-acorex-modules-auth-DqsEqXec.mjs.map +1 -0
  11. package/fesm2022/{acorex-modules-auth-app-chooser.component-DqKTfLA2.mjs → acorex-modules-auth-app-chooser.component-D0pKNUts.mjs} +5 -5
  12. package/fesm2022/{acorex-modules-auth-app-chooser.component-DqKTfLA2.mjs.map → acorex-modules-auth-app-chooser.component-D0pKNUts.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-auth-blank.layout-D2qSgxTy.mjs → acorex-modules-auth-blank.layout-BwVSMaFI.mjs} +4 -4
  14. package/fesm2022/{acorex-modules-auth-blank.layout-D2qSgxTy.mjs.map → acorex-modules-auth-blank.layout-BwVSMaFI.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-auth-login.module-CWOYzn0L.mjs → acorex-modules-auth-login.module-Dky49ylL.mjs} +8 -8
  16. package/fesm2022/{acorex-modules-auth-login.module-CWOYzn0L.mjs.map → acorex-modules-auth-login.module-Dky49ylL.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-auth-master.layout-384T0lIg.mjs → acorex-modules-auth-master.layout-DXfRjCLL.mjs} +5 -5
  18. package/fesm2022/{acorex-modules-auth-master.layout-384T0lIg.mjs.map → acorex-modules-auth-master.layout-DXfRjCLL.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-auth-password.component-BW_ooTQG.mjs → acorex-modules-auth-password.component-BbsQWpEh.mjs} +5 -5
  20. package/fesm2022/{acorex-modules-auth-password.component-BW_ooTQG.mjs.map → acorex-modules-auth-password.component-BbsQWpEh.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-auth-password.component-JG95JpLz.mjs → acorex-modules-auth-password.component-oH5OFHqQ.mjs} +5 -5
  22. package/fesm2022/{acorex-modules-auth-password.component-JG95JpLz.mjs.map → acorex-modules-auth-password.component-oH5OFHqQ.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-auth-routes-DqKtHu-i.mjs → acorex-modules-auth-routes-DAiaTm4Y.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-auth-routes-DqKtHu-i.mjs.map → acorex-modules-auth-routes-DAiaTm4Y.mjs.map} +1 -1
  25. package/fesm2022/acorex-modules-auth-settings.provider-CM-T8nbI.mjs.map +1 -1
  26. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-C0jxaqqg.mjs → acorex-modules-auth-tenant-chooser.component-3-FFY4tI.mjs} +4 -4
  27. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-C0jxaqqg.mjs.map → acorex-modules-auth-tenant-chooser.component-3-FFY4tI.mjs.map} +1 -1
  28. package/fesm2022/{acorex-modules-auth-two-factor-code.component-D7KOomHD.mjs → acorex-modules-auth-two-factor-code.component-UUmdX7IM.mjs} +4 -4
  29. package/fesm2022/{acorex-modules-auth-two-factor-code.component-D7KOomHD.mjs.map → acorex-modules-auth-two-factor-code.component-UUmdX7IM.mjs.map} +1 -1
  30. package/fesm2022/{acorex-modules-auth-two-factor.module-C88pXqao.mjs → acorex-modules-auth-two-factor.module-Coe4NNUW.mjs} +7 -7
  31. package/fesm2022/{acorex-modules-auth-two-factor.module-C88pXqao.mjs.map → acorex-modules-auth-two-factor.module-Coe4NNUW.mjs.map} +1 -1
  32. package/fesm2022/{acorex-modules-auth-user-sessions.component-loloVwv0.mjs → acorex-modules-auth-user-sessions.component-CtTrstZT.mjs} +5 -5
  33. package/fesm2022/{acorex-modules-auth-user-sessions.component-loloVwv0.mjs.map → acorex-modules-auth-user-sessions.component-CtTrstZT.mjs.map} +1 -1
  34. package/fesm2022/acorex-modules-auth.mjs +1 -1
  35. package/fesm2022/{acorex-modules-common-search-popup.component-CCKiQx0U.mjs → acorex-modules-common-search-popup.component-CNh7TFpe.mjs} +4 -4
  36. package/fesm2022/{acorex-modules-common-search-popup.component-CCKiQx0U.mjs.map → acorex-modules-common-search-popup.component-CNh7TFpe.mjs.map} +1 -1
  37. package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-DJOcjquG.mjs → acorex-modules-common-timeline-version-history-popup.component-D48aDOVu.mjs} +4 -4
  38. package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-DJOcjquG.mjs.map → acorex-modules-common-timeline-version-history-popup.component-D48aDOVu.mjs.map} +1 -1
  39. package/fesm2022/acorex-modules-common.mjs +53 -49
  40. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  41. package/fesm2022/acorex-modules-contact-management-address-type.entity-QMEODkhx.mjs.map +1 -1
  42. package/fesm2022/acorex-modules-contact-management-contact-address.entity-0f4Vaw_k.mjs.map +1 -1
  43. package/fesm2022/acorex-modules-contact-management-contact-method.entity-ChEz1jW0.mjs.map +1 -1
  44. package/fesm2022/acorex-modules-contact-management-contact-relationship.entity-DLfiEEfk.mjs.map +1 -1
  45. package/fesm2022/acorex-modules-contact-management-contact-source.entity-hopVxiIT.mjs.map +1 -1
  46. package/fesm2022/acorex-modules-contact-management.mjs +31 -31
  47. package/fesm2022/acorex-modules-contact-management.mjs.map +1 -1
  48. package/fesm2022/acorex-modules-content-management.mjs +15 -14
  49. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  50. package/fesm2022/acorex-modules-conversation.mjs +58 -50
  51. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  52. package/fesm2022/acorex-modules-dashboard-management.mjs +74 -74
  53. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  54. package/fesm2022/acorex-modules-data-management.mjs +2328 -0
  55. package/fesm2022/acorex-modules-data-management.mjs.map +1 -0
  56. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-C4cvhxSV.mjs → acorex-modules-document-management-acorex-modules-document-management-CJYBHKUf.mjs} +111 -111
  57. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-C4cvhxSV.mjs.map → acorex-modules-document-management-acorex-modules-document-management-CJYBHKUf.mjs.map} +1 -1
  58. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-B5txg8z0.mjs → acorex-modules-document-management-attachment-widget.component-Cc-hsCCX.mjs} +5 -5
  59. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-B5txg8z0.mjs.map → acorex-modules-document-management-attachment-widget.component-Cc-hsCCX.mjs.map} +1 -1
  60. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-LfnTz49a.mjs → acorex-modules-document-management-create-folder-dialog.component-CMhwz1-0.mjs} +5 -5
  61. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-LfnTz49a.mjs.map → acorex-modules-document-management-create-folder-dialog.component-CMhwz1-0.mjs.map} +1 -1
  62. package/fesm2022/{acorex-modules-document-management-details-view.component-Co5F8eWp.mjs → acorex-modules-document-management-details-view.component-CqK0rCnR.mjs} +5 -5
  63. package/fesm2022/{acorex-modules-document-management-details-view.component-Co5F8eWp.mjs.map → acorex-modules-document-management-details-view.component-CqK0rCnR.mjs.map} +1 -1
  64. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DFRdS7s1.mjs → acorex-modules-document-management-drive-choose.component-r8KKbY1d.mjs} +5 -5
  65. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DFRdS7s1.mjs.map → acorex-modules-document-management-drive-choose.component-r8KKbY1d.mjs.map} +1 -1
  66. package/fesm2022/{acorex-modules-document-management-drive.component-jGs09Jrd.mjs → acorex-modules-document-management-drive.component-0wxNHSJr.mjs} +8 -8
  67. package/fesm2022/{acorex-modules-document-management-drive.component-jGs09Jrd.mjs.map → acorex-modules-document-management-drive.component-0wxNHSJr.mjs.map} +1 -1
  68. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DD9_xgL4.mjs → acorex-modules-document-management-large-icons-view.component-z-EQb_uG.mjs} +5 -5
  69. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DD9_xgL4.mjs.map → acorex-modules-document-management-large-icons-view.component-z-EQb_uG.mjs.map} +1 -1
  70. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CNBUzaUz.mjs → acorex-modules-document-management-large-tiles-view.component-Ce9h5m2O.mjs} +5 -5
  71. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CNBUzaUz.mjs.map → acorex-modules-document-management-large-tiles-view.component-Ce9h5m2O.mjs.map} +1 -1
  72. package/fesm2022/{acorex-modules-document-management-link-dialog.component-CXzR7mUW.mjs → acorex-modules-document-management-link-dialog.component-OTa8ttto.mjs} +4 -4
  73. package/fesm2022/{acorex-modules-document-management-link-dialog.component-CXzR7mUW.mjs.map → acorex-modules-document-management-link-dialog.component-OTa8ttto.mjs.map} +1 -1
  74. package/fesm2022/{acorex-modules-document-management-list-view.component-D4DbyB6W.mjs → acorex-modules-document-management-list-view.component-DZKdXqAA.mjs} +5 -5
  75. package/fesm2022/{acorex-modules-document-management-list-view.component-D4DbyB6W.mjs.map → acorex-modules-document-management-list-view.component-DZKdXqAA.mjs.map} +1 -1
  76. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-CmMvrfKW.mjs → acorex-modules-document-management-meta-choose-popup.component-DsSo15AL.mjs} +4 -4
  77. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-CmMvrfKW.mjs.map → acorex-modules-document-management-meta-choose-popup.component-DsSo15AL.mjs.map} +1 -1
  78. package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-DHQjyq8s.mjs → acorex-modules-document-management-meta-selector-widget-column.component-gunvY9et.mjs} +4 -4
  79. package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-DHQjyq8s.mjs.map → acorex-modules-document-management-meta-selector-widget-column.component-gunvY9et.mjs.map} +1 -1
  80. package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-Cc6n71wn.mjs → acorex-modules-document-management-meta-selector-widget-designer.component-B-fYrGs1.mjs} +4 -4
  81. package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-Cc6n71wn.mjs.map → acorex-modules-document-management-meta-selector-widget-designer.component-B-fYrGs1.mjs.map} +1 -1
  82. package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-D88h9eR6.mjs → acorex-modules-document-management-meta-selector-widget-view.component-D4gu7liQ.mjs} +4 -4
  83. package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-D88h9eR6.mjs.map → acorex-modules-document-management-meta-selector-widget-view.component-D4gu7liQ.mjs.map} +1 -1
  84. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DoOyhnwQ.mjs → acorex-modules-document-management-permission-definition.provider-C31fYGZT.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DoOyhnwQ.mjs.map → acorex-modules-document-management-permission-definition.provider-C31fYGZT.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-JDZWsFXL.mjs → acorex-modules-document-management-rename-node-dialog.component-CMmT_vVe.mjs} +5 -5
  87. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-JDZWsFXL.mjs.map → acorex-modules-document-management-rename-node-dialog.component-CMmT_vVe.mjs.map} +1 -1
  88. package/fesm2022/{acorex-modules-document-management-share-dialog.component-DTzXwqHw.mjs → acorex-modules-document-management-share-dialog.component-DiyR6CiE.mjs} +4 -4
  89. package/fesm2022/{acorex-modules-document-management-share-dialog.component-DTzXwqHw.mjs.map → acorex-modules-document-management-share-dialog.component-DiyR6CiE.mjs.map} +1 -1
  90. package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-BaNzKKG4.mjs → acorex-modules-document-management-share-email-dialog.component-CKlG3YwB.mjs} +4 -4
  91. package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-BaNzKKG4.mjs.map → acorex-modules-document-management-share-email-dialog.component-CKlG3YwB.mjs.map} +1 -1
  92. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BNTmgtYr.mjs → acorex-modules-document-management-small-icons-view.component-DI7c4jHZ.mjs} +5 -5
  93. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BNTmgtYr.mjs.map → acorex-modules-document-management-small-icons-view.component-DI7c4jHZ.mjs.map} +1 -1
  94. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CbCBAKyR.mjs → acorex-modules-document-management-small-tiles-view.component-BYJfNu6O.mjs} +5 -5
  95. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CbCBAKyR.mjs.map → acorex-modules-document-management-small-tiles-view.component-BYJfNu6O.mjs.map} +1 -1
  96. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  97. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-BsAsK1EG.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-EsaVgkdd.mjs} +56 -56
  98. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-BsAsK1EG.mjs.map → acorex-modules-form-template-management-acorex-modules-form-template-management-EsaVgkdd.mjs.map} +1 -1
  99. package/fesm2022/{acorex-modules-form-template-management-category.entity-B3iAtREq.mjs → acorex-modules-form-template-management-category.entity-CC0qe4pv.mjs} +2 -2
  100. package/fesm2022/{acorex-modules-form-template-management-category.entity-B3iAtREq.mjs.map → acorex-modules-form-template-management-category.entity-CC0qe4pv.mjs.map} +1 -1
  101. package/fesm2022/{acorex-modules-form-template-management-designer.page-B-TIUKl7.mjs → acorex-modules-form-template-management-designer.page-B14QVCAw.mjs} +4 -4
  102. package/fesm2022/{acorex-modules-form-template-management-designer.page-B-TIUKl7.mjs.map → acorex-modules-form-template-management-designer.page-B14QVCAw.mjs.map} +1 -1
  103. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CTG95UDp.mjs → acorex-modules-form-template-management-permission-definition.provider-BMd6DvoR.mjs} +2 -2
  104. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CTG95UDp.mjs.map → acorex-modules-form-template-management-permission-definition.provider-BMd6DvoR.mjs.map} +1 -1
  105. package/fesm2022/{acorex-modules-form-template-management-settings.provider-BmFufTUd.mjs → acorex-modules-form-template-management-settings.provider-BYS5t4c_.mjs} +2 -2
  106. package/fesm2022/{acorex-modules-form-template-management-settings.provider-BmFufTUd.mjs.map → acorex-modules-form-template-management-settings.provider-BYS5t4c_.mjs.map} +1 -1
  107. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-CNwhdnGC.mjs → acorex-modules-form-template-management-template-picker.component-C0mLCsFT.mjs} +4 -4
  108. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-CNwhdnGC.mjs.map → acorex-modules-form-template-management-template-picker.component-C0mLCsFT.mjs.map} +1 -1
  109. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BNIx16WW.mjs → acorex-modules-form-template-management-template-widget-edit.component-CffnsEo2.mjs} +5 -5
  110. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BNIx16WW.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-CffnsEo2.mjs.map} +1 -1
  111. package/fesm2022/{acorex-modules-form-template-management-template.entity-BGsixiEI.mjs → acorex-modules-form-template-management-template.entity-DTx9CejD.mjs} +2 -2
  112. package/fesm2022/{acorex-modules-form-template-management-template.entity-BGsixiEI.mjs.map → acorex-modules-form-template-management-template.entity-DTx9CejD.mjs.map} +1 -1
  113. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CzjuUz4o.mjs → acorex-modules-form-template-management-viewer-popup.component-BwVSDsN3.mjs} +5 -5
  114. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CzjuUz4o.mjs.map → acorex-modules-form-template-management-viewer-popup.component-BwVSDsN3.mjs.map} +1 -1
  115. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  116. package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-C2JoHgaa.mjs → acorex-modules-issue-management-acorex-modules-issue-management-BhascWnH.mjs} +712 -644
  117. package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-BhascWnH.mjs.map +1 -0
  118. package/fesm2022/acorex-modules-issue-management-capture-screen.component-BIWYcqOI.mjs +28 -0
  119. package/fesm2022/acorex-modules-issue-management-capture-screen.component-BIWYcqOI.mjs.map +1 -0
  120. package/fesm2022/acorex-modules-issue-management.mjs +1 -1
  121. package/fesm2022/acorex-modules-log-management.mjs +10 -10
  122. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  123. package/fesm2022/acorex-modules-notification-management.mjs +35 -35
  124. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  125. package/fesm2022/{acorex-modules-organization-management-add-item.component-D99TugmE.mjs → acorex-modules-organization-management-add-item.component-Br70YGJS.mjs} +4 -4
  126. package/fesm2022/{acorex-modules-organization-management-add-item.component-D99TugmE.mjs.map → acorex-modules-organization-management-add-item.component-Br70YGJS.mjs.map} +1 -1
  127. package/fesm2022/acorex-modules-organization-management-branch.entity-Bsgj4Pow.mjs.map +1 -1
  128. package/fesm2022/acorex-modules-organization-management-chart.entity-UAn44WCP.mjs.map +1 -1
  129. package/fesm2022/acorex-modules-organization-management-company.entity-D1A1HSkC.mjs.map +1 -1
  130. package/fesm2022/acorex-modules-organization-management-department.entity-BMojk26d.mjs.map +1 -1
  131. package/fesm2022/acorex-modules-organization-management-division.entity-BnWpX4US.mjs.map +1 -1
  132. package/fesm2022/acorex-modules-organization-management-employee.entity-DBuCVYZP.mjs.map +1 -1
  133. package/fesm2022/acorex-modules-organization-management-employment-type.entity-CWYu9tIg.mjs.map +1 -1
  134. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DTNqHbxt.mjs → acorex-modules-organization-management-org-chart-configuration.page-DHu4UuxD.mjs} +5 -5
  135. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DTNqHbxt.mjs.map → acorex-modules-organization-management-org-chart-configuration.page-DHu4UuxD.mjs.map} +1 -1
  136. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-BSO0GrAW.mjs → acorex-modules-organization-management-org-chart-configuration.service-CcZMGyCz.mjs} +4 -4
  137. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-BSO0GrAW.mjs.map → acorex-modules-organization-management-org-chart-configuration.service-CcZMGyCz.mjs.map} +1 -1
  138. package/fesm2022/{acorex-modules-organization-management-org-chart.page-ioMhEPnQ.mjs → acorex-modules-organization-management-org-chart.page-CSMTnTDi.mjs} +12 -12
  139. package/fesm2022/{acorex-modules-organization-management-org-chart.page-ioMhEPnQ.mjs.map → acorex-modules-organization-management-org-chart.page-CSMTnTDi.mjs.map} +1 -1
  140. package/fesm2022/acorex-modules-organization-management-position-category.entity-DrZ9Ott4.mjs.map +1 -1
  141. package/fesm2022/acorex-modules-organization-management-position.entity-CY4TugWR.mjs.map +1 -1
  142. package/fesm2022/acorex-modules-organization-management-responsibility-category.entity-CmafbyCZ.mjs.map +1 -1
  143. package/fesm2022/acorex-modules-organization-management-responsibility.entity-DmLeFogS.mjs.map +1 -1
  144. package/fesm2022/acorex-modules-organization-management-role-category.entity-Cyt1dAKR.mjs.map +1 -1
  145. package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs.map +1 -1
  146. package/fesm2022/acorex-modules-organization-management-settings.provider-hlbUXugb.mjs.map +1 -1
  147. package/fesm2022/acorex-modules-organization-management-skill-category.entity-BPgGGVT3.mjs.map +1 -1
  148. package/fesm2022/acorex-modules-organization-management-skill.entity-D9XojzUV.mjs.map +1 -1
  149. package/fesm2022/acorex-modules-organization-management-team.entity-mYPhrc2l.mjs.map +1 -1
  150. package/fesm2022/acorex-modules-organization-management.mjs +125 -122
  151. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  152. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-CFoPmixl.mjs → acorex-modules-platform-management-acorex-modules-platform-management-TWTBqgn6.mjs} +107 -104
  153. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-CFoPmixl.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-TWTBqgn6.mjs.map} +1 -1
  154. package/fesm2022/{acorex-modules-platform-management-list-version.component-D0-Ya-Yx.mjs → acorex-modules-platform-management-list-version.component-DQ3Gp9kl.mjs} +5 -5
  155. package/fesm2022/{acorex-modules-platform-management-list-version.component-D0-Ya-Yx.mjs.map → acorex-modules-platform-management-list-version.component-DQ3Gp9kl.mjs.map} +1 -1
  156. package/fesm2022/{acorex-modules-platform-management-settings.provider--ARXqBUY.mjs → acorex-modules-platform-management-settings.provider-FXMK1_44.mjs} +2 -2
  157. package/fesm2022/{acorex-modules-platform-management-settings.provider--ARXqBUY.mjs.map → acorex-modules-platform-management-settings.provider-FXMK1_44.mjs.map} +1 -1
  158. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  159. package/fesm2022/acorex-modules-project-management.mjs +43 -43
  160. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  161. package/fesm2022/{acorex-modules-report-management-report-create-root.component-LrE6TkIp.mjs → acorex-modules-report-management-report-create-root.component-CcNJIUk2.mjs} +4 -4
  162. package/fesm2022/{acorex-modules-report-management-report-create-root.component-LrE6TkIp.mjs.map → acorex-modules-report-management-report-create-root.component-CcNJIUk2.mjs.map} +1 -1
  163. package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-BntIoMfN.mjs → acorex-modules-report-management-report-runner-root-page.component-CAxcD_pe.mjs} +22 -22
  164. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CAxcD_pe.mjs.map +1 -0
  165. package/fesm2022/{acorex-modules-report-management-run.command-CoXvPC15.mjs → acorex-modules-report-management-run.command-DHPmdkSZ.mjs} +4 -4
  166. package/fesm2022/{acorex-modules-report-management-run.command-CoXvPC15.mjs.map → acorex-modules-report-management-run.command-DHPmdkSZ.mjs.map} +1 -1
  167. package/fesm2022/acorex-modules-report-management.mjs +186 -27
  168. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  169. package/fesm2022/acorex-modules-scheduler-job-management.mjs +14 -14
  170. package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
  171. package/fesm2022/acorex-modules-security-management.mjs +63 -63
  172. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  173. package/fesm2022/{acorex-modules-settings-management-setting-page.component-BKwKLUpD.mjs → acorex-modules-settings-management-setting-page.component-BbnEqXKu.mjs} +4 -4
  174. package/fesm2022/{acorex-modules-settings-management-setting-page.component-BKwKLUpD.mjs.map → acorex-modules-settings-management-setting-page.component-BbnEqXKu.mjs.map} +1 -1
  175. package/fesm2022/{acorex-modules-settings-management-setting-view.component-Dco7MvZr.mjs → acorex-modules-settings-management-setting-view.component-DP8mxDK9.mjs} +4 -4
  176. package/fesm2022/{acorex-modules-settings-management-setting-view.component-Dco7MvZr.mjs.map → acorex-modules-settings-management-setting-view.component-DP8mxDK9.mjs.map} +1 -1
  177. package/fesm2022/acorex-modules-settings-management.mjs +6 -6
  178. package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
  179. package/fesm2022/acorex-modules-text-template-management-settings.provider-fX0dhWUL.mjs.map +1 -1
  180. package/fesm2022/acorex-modules-text-template-management.mjs +24 -24
  181. package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
  182. package/fesm2022/acorex-modules-training-management.mjs +43 -43
  183. package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
  184. package/fesm2022/acorex-modules-workflow-management-task-board.page-Dp7SJ3NA.mjs +876 -0
  185. package/fesm2022/acorex-modules-workflow-management-task-board.page-Dp7SJ3NA.mjs.map +1 -0
  186. package/fesm2022/acorex-modules-workflow-management.mjs +19 -12
  187. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  188. package/issue-management/index.d.ts +63 -5
  189. package/package.json +9 -5
  190. package/workflow-management/index.d.ts +1 -0
  191. package/fesm2022/acorex-modules-auth-acorex-modules-auth-X866H4oy.mjs.map +0 -1
  192. package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-C2JoHgaa.mjs.map +0 -1
  193. package/fesm2022/acorex-modules-issue-management-capture-screen.component-DTtUkL78.mjs +0 -28
  194. package/fesm2022/acorex-modules-issue-management-capture-screen.component-DTtUkL78.mjs.map +0 -1
  195. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BntIoMfN.mjs.map +0 -1
  196. package/fesm2022/acorex-modules-workflow-management-task-board.page-ChW_Hwf2.mjs +0 -762
  197. package/fesm2022/acorex-modules-workflow-management-task-board.page-ChW_Hwf2.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-conversation.mjs","sources":["../tmp-esm2022/conversation/lib/const.js","../tmp-esm2022/conversation/lib/entities/message/message.service.js","../tmp-esm2022/conversation/lib/entities/message/message.entity.js","../tmp-esm2022/conversation/lib/entities/message/message.types.js","../tmp-esm2022/conversation/lib/entities/room/room.service.js","../tmp-esm2022/conversation/lib/entities/room/room.entity.js","../tmp-esm2022/conversation/lib/entity.provider.js","../tmp-esm2022/conversation/lib/menu.provider.js","../tmp-esm2022/conversation/lib/features/comment/comment.service.js","../tmp-esm2022/conversation/lib/features/comment/comment.component.js","../tmp-esm2022/conversation/lib/features/comment/popup/comment-popup.component.js","../tmp-esm2022/conversation/lib/features/comment/user-lookup-popup.component.js","../tmp-esm2022/conversation/lib/features/comment/widget/comment-widget-view.component.js","../tmp-esm2022/conversation/lib/features/comment/widget/comment-widget.config.js","../tmp-esm2022/conversation/lib/features/comment/workflow/comment.workflow.js","../tmp-esm2022/conversation/lib/features/chat/chat.service.js","../tmp-esm2022/conversation/lib/features/chat/components/chat-item/chat-item.component.js","../tmp-esm2022/conversation/lib/features/chat/chat.component.js","../tmp-esm2022/conversation/lib/features/chat/chat-preview.helper.js","../tmp-esm2022/conversation/lib/features/chat/components/chat-preview/chat-preview.component.js","../tmp-esm2022/conversation/lib/conversation.module.js","../tmp-esm2022/conversation/acorex-modules-conversation.js"],"sourcesContent":["const config = {\n i18n: 'conversation',\n module: 'Conversation',\n route: 'chat',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'conversation',\n name: config.module,\n title: `t('module-name', {scope:\"${config.i18n}\"})`,\n icon: 'fa-light fa-comments',\n },\n entities: {\n room: {\n name: 'room',\n title: `t(\"room.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Room`,\n icon: 'fa-light fa-comments',\n },\n message: {\n name: 'message',\n title: `t(\"message.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Message`,\n icon: 'fa-light fa-message',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxNQUFNLEdBQUc7SUFDYixJQUFJLEVBQUUsY0FBYztJQUNwQixNQUFNLEVBQUUsY0FBYztJQUN0QixLQUFLLEVBQUUsTUFBTTtDQUNkLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTTtJQUNOLE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRSxjQUFjO1FBQ3JCLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNuQixLQUFLLEVBQUUsNEJBQTRCLE1BQU0sQ0FBQyxJQUFJLEtBQUs7UUFDbkQsSUFBSSxFQUFFLHNCQUFzQjtLQUM3QjtJQUNELFFBQVEsRUFBRTtRQUNSLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLG9DQUFvQyxNQUFNLENBQUMsSUFBSSxNQUFNO1lBQzVELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLE9BQU87WUFDL0IsSUFBSSxFQUFFLHNCQUFzQjtTQUM3QjtRQUNELE9BQU8sRUFBRTtZQUNQLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLHVDQUF1QyxNQUFNLENBQUMsSUFBSSxNQUFNO1lBQy9ELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLFVBQVU7WUFDbEMsSUFBSSxFQUFFLHFCQUFxQjtTQUM1QjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbmZpZyA9IHtcbiAgaTE4bjogJ2NvbnZlcnNhdGlvbicsXG4gIG1vZHVsZTogJ0NvbnZlcnNhdGlvbicsXG4gIHJvdXRlOiAnY2hhdCcsXG59O1xuXG5leHBvcnQgY29uc3QgUm9vdENvbmZpZyA9IHtcbiAgY29uZmlnLFxuICBtb2R1bGU6IHtcbiAgICByb3V0ZTogJ2NvbnZlcnNhdGlvbicsXG4gICAgbmFtZTogY29uZmlnLm1vZHVsZSxcbiAgICB0aXRsZTogYHQoJ21vZHVsZS1uYW1lJywge3Njb3BlOlwiJHtjb25maWcuaTE4bn1cIn0pYCxcbiAgICBpY29uOiAnZmEtbGlnaHQgZmEtY29tbWVudHMnLFxuICB9LFxuICBlbnRpdGllczoge1xuICAgIHJvb206IHtcbiAgICAgIG5hbWU6ICdyb29tJyxcbiAgICAgIHRpdGxlOiBgdChcInJvb20ucGx1cmFsLXRpdGxlXCIsIHsgc2NvcGU6IFwiJHtjb25maWcuaTE4bn1cIiB9KWAsXG4gICAgICBzb3VyY2U6IGAke2NvbmZpZy5tb2R1bGV9LlJvb21gLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNvbW1lbnRzJyxcbiAgICB9LFxuICAgIG1lc3NhZ2U6IHtcbiAgICAgIG5hbWU6ICdtZXNzYWdlJyxcbiAgICAgIHRpdGxlOiBgdChcIm1lc3NhZ2UucGx1cmFsLXRpdGxlXCIsIHsgc2NvcGU6IFwiJHtjb25maWcuaTE4bn1cIiB9KWAsXG4gICAgICBzb3VyY2U6IGAke2NvbmZpZy5tb2R1bGV9Lk1lc3NhZ2VgLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLW1lc3NhZ2UnLFxuICAgIH0sXG4gIH0sXG59O1xuIl19","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMMessageService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMMessageServiceImpl extends AXMMessageService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.message.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMMessageServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMMessageServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMMessageServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHekMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSx3QkFBd0Q7Q0FBRztBQUczRyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsaUJBQWlCO0lBQzFEO1FBQ0UsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDOzhHQUhVLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Db252ZXJzYXRpb25NZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlLnR5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYTU1lc3NhZ2VTZXJ2aWNlIGV4dGVuZHMgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPHN0cmluZywgQVhNQ29udmVyc2F0aW9uTWVzc2FnZT4ge31cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTU1lc3NhZ2VTZXJ2aWNlSW1wbCBleHRlbmRzIEFYTU1lc3NhZ2VTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLm1lc3NhZ2UubmFtZX1gKTtcbiAgfVxufVxuIl19","import { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMMessageService } from './message.service';\nexport async function messageFactory(injector) {\n const dataService = injector.get(AXMMessageService);\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.message.name,\n source: '',\n title: RootConfig.entities.message.title,\n formats: {\n individual: RootConfig.entities.message.title,\n plural: RootConfig.entities.message.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.message.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLFFBQWtCO0lBQ3JELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUVwQyxNQUFNLFNBQVMsR0FBYztRQUMzQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQzlCLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1FBQ3RDLE1BQU0sRUFBRSxFQUFFO1FBQ1YsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7UUFDeEMsT0FBTyxFQUFFO1lBQ1AsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDN0MsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDekMsWUFBWSxFQUFFO2dCQUNaLEtBQUssRUFBRSxhQUFhO2dCQUNwQixXQUFXLEVBQUUsVUFBVSxDQUFD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T0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsTUFBTTs0QkFDWixLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLGtDQUFrQzs0QkFDekMsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7cUJBQ0Y7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMLGtCQUFrQixDQUFDOzRCQUNqQixLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO3lCQUN0QyxDQUFDO3FCQUNIO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRW50aXR5LCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVF1ZXJ5VHlwZSwgY3JlYXRlQWxsUXVlcnlWaWV3IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2Uuc2VydmljZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtZXNzYWdlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPEFYUEVudGl0eSB8IG51bGw+IHtcbiAgY29uc3QgZGF0YVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQVhNTWVzc2FnZVNlcnZpY2UpO1xuICBjb25zdCBpMThuID0gUm9vdENvbmZpZy5jb25maWcuaTE4bjtcblxuICBjb25zdCBlbnRpdHlEZWY6IEFYUEVudGl0eSA9IHtcbiAgICBtb2R1bGU6IFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gICAgbmFtZTogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLm5hbWUsXG4gICAgc291cmNlOiAnJyxcbiAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLnRpdGxlLFxuICAgIGZvcm1hdHM6IHtcbiAgICAgIGluZGl2aWR1YWw6IFJvb3RDb25maWcuZW50aXRpZXMubWVzc2FnZS50aXRsZSxcbiAgICAgIHBsdXJhbDogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLnRpdGxlLFxuICAgICAgc2VhcmNoUmVzdWx0OiB7XG4gICAgICAgIHRpdGxlOiAne3sgdGl0bGUgfX0nLFxuICAgICAgICBkZXNjcmlwdGlvbjogUm9vdENvbmZpZy5tb2R1bGUudGl0bGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVsYXRlZEVudGl0aWVzOiBbXSxcbiAgICBncm91cHM6IFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgdGl0bGU6IFJvb3RDb25maWcuZW50aXRpZXMubWVzc2FnZS50aXRsZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgdGl0bGU6IGB0KFwibmFtZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdGl0bGU6IGB0KFwidGl0bGVcIiwgeyBzY29wZTogXCJjb21tb25cIiB9KWAsXG4gICAgICAgIGdyb3VwSWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGFkdmFuY2U6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmxpbmU6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW3sgbmFtZTogJ25hbWUnIH0sIHsgbmFtZTogJ3RpdGxlJyB9XSxcbiAgICBjb21tYW5kczoge1xuICAgICAgY3JlYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBkYXRhU2VydmljZS5pbnNlcnRPbmUoZGF0YSk7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlcyB9O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRlbGV0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5kZWxldGVPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHVwZGF0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZU9uZShkYXRhLmlkLCBkYXRhKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBxdWVyaWVzOiB7XG4gICAgICBieUtleToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5nZXRPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuU2luZ2xlLFxuICAgICAgfSxcbiAgICAgIGxpc3Q6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5xdWVyeSh7IHNraXA6IGUuc2tpcCwgdGFrZTogZS50YWtlLCBmaWx0ZXI6IGUuZmlsdGVyIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuTGlzdCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnRlcmZhY2VzOiB7XG4gICAgICBtYXN0ZXI6IHtcbiAgICAgICAgY3JlYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgc2luZ2xlOiB7XG4gICAgICAgICAgdGl0bGU6ICd7e3RpdGxlfX0nLFxuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnc2VjdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYWN0aW9uczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIGxpc3Q6IHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiBgdChcImNyZWF0ZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5UeXBlTGV2ZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ3QoXCJkZWxldGVJdGVtc1wiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRldGFpbFwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ29wZW4tZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdzZWNvbmRhcnknLFxuICAgICAgICAgICAgICB0eXBlOiAndmlldycsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRlbGV0ZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdmlld3M6IFtcbiAgICAgICAgICAgIGNyZWF0ZUFsbFF1ZXJ5Vmlldyh7XG4gICAgICAgICAgICAgIHNvcnRzOiBbeyBuYW1lOiAnbmFtZScsIGRpcjogJ2FzYycgfV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBlbnRpdHlEZWY7XG59XG4iXX0=","// === Shared Types ===\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2UudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gPT09IFNoYXJlZCBUeXBlcyA9PT1cblxuaW1wb3J0IHsgQVhQQ29udGVudCwgQVhQVXNlclJlZmVyZW5jZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5cbmV4cG9ydCB0eXBlIEFYTVNlZW5UeXBlID0gJ2RlbGl2ZXJlZCcgfCAncmVhZCc7XG5leHBvcnQgdHlwZSBBWE1SZWFjdGlvblR5cGUgPSAnbGlrZScgfCAnbG92ZScgfCAnbGF1Z2gnIHwgJ2FuZ3J5JyB8ICdzYWQnIHwgc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uIHtcbiAgYXV0aG9yOiBBWFBVc2VyUmVmZXJlbmNlO1xuICB0eXBlOiBBWE1SZWFjdGlvblR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhNQ29udmVyc2F0aW9uU2VlbiB7XG4gIGF1dGhvcjogQVhQVXNlclJlZmVyZW5jZTtcbiAgdHlwZTogQVhNU2VlblR5cGU7XG59XG5cbi8vID09PSBDb3JlIE1vZGVscyA9PT1cblxuZXhwb3J0IGludGVyZmFjZSBBWE1Db252ZXJzYXRpb25NZXNzYWdlIGV4dGVuZHMgQVhQRW50aXR5TW9kZWw8c3RyaW5nPiB7XG4gIHJvb21JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBBWFBDb250ZW50O1xuICBhdXRob3I6IEFYUFVzZXJSZWZlcmVuY2U7XG4gIHJlcGx5SWQ/OiBzdHJpbmcgfCBudWxsO1xuICByZWFjdGlvbnM6IEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uW107XG4gIHNlZW46IEFYTUNvbnZlcnNhdGlvblNlZW5bXTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xufVxuIl19","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMRoomService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMRoomServiceImpl extends AXMRoomService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.room.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMRoomServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMRoomServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMRoomServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0aWVzL3Jvb20vcm9vbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHekMsTUFBTSxPQUFnQixjQUFlLFNBQVEsd0JBQXFEO0NBQUc7QUFHckcsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFDcEQ7UUFDRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBSFUsa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTUNvbnZlcnNhdGlvblJvb20gfSBmcm9tICcuL3Jvb20udHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNUm9vbVNlcnZpY2UgZXh0ZW5kcyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGw8c3RyaW5nLCBBWE1Db252ZXJzYXRpb25Sb29tPiB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUm9vbVNlcnZpY2VJbXBsIGV4dGVuZHMgQVhNUm9vbVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMucm9vbS5uYW1lfWApO1xuICB9XG59XG4iXX0=","import { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMRoomService } from './room.service';\nexport async function roomFactory(injector) {\n const dataService = injector.get(AXMRoomService);\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.room.name,\n source: '',\n title: RootConfig.entities.room.title,\n formats: {\n individual: RootConfig.entities.room.title,\n plural: RootConfig.entities.room.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.room.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZW50aXRpZXMvcm9vbS9yb29tLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxRQUFrQjtJQUNsRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRXBDLE1BQU0sU0FBUyxHQUFjO1FBQzNCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUk7UUFDbkMsTUFBTSxFQUFFLEVBQUU7UUFDVixLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztRQUNyQyxPQUFPLEVBQUU7WUFDUCxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUMxQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN0QyxZQUFZLEVBQUU7Z0JBQ1osS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLFdBQVcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEtB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YTs0QkFDdEIsUUFBUSxFQUFFLFdBQVc7NEJBQ3JCLElBQUksRUFBRSxNQUFNOzRCQUNaLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO3lCQUN4Qzt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsa0NBQWtDOzRCQUN6QyxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFdBQVc7NEJBQ3JCLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO3lCQUN4QztxQkFDRjtvQkFDRCxLQUFLLEVBQUU7d0JBQ0wsa0JBQWtCLENBQUM7NEJBQ2pCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7eUJBQ3RDLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBFbnRpdHksIEFYUEVudGl0eUNvbW1hbmRTY29wZSwgQVhQRW50aXR5UXVlcnlUeXBlLCBjcmVhdGVBbGxRdWVyeVZpZXcgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Sb29tU2VydmljZSB9IGZyb20gJy4vcm9vbS5zZXJ2aWNlJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJvb21GYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdG9yLmdldChBWE1Sb29tU2VydmljZSk7XG4gIGNvbnN0IGkxOG4gPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuXG4gIGNvbnN0IGVudGl0eURlZjogQVhQRW50aXR5ID0ge1xuICAgIG1vZHVsZTogUm9vdENvbmZpZy5tb2R1bGUubmFtZSxcbiAgICBuYW1lOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20ubmFtZSxcbiAgICBzb3VyY2U6ICcnLFxuICAgIHRpdGxlOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20udGl0bGUsXG4gICAgZm9ybWF0czoge1xuICAgICAgaW5kaXZpZHVhbDogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLnRpdGxlLFxuICAgICAgcGx1cmFsOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20udGl0bGUsXG4gICAgICBzZWFyY2hSZXN1bHQ6IHtcbiAgICAgICAgdGl0bGU6ICd7eyB0aXRsZSB9fScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLnRpdGxlLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHByb3BlcnRpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICB0aXRsZTogYHQoXCJuYW1lXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSlgLFxuICAgICAgICBncm91cElkOiAnc2VjdGlvbicsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBzb3J0OiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICBhZHZhbmNlOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5saW5lOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcnVsZTogJ3JlcXVpcmVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICB0aXRsZTogYHQoXCJ0aXRsZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjb2x1bW5zOiBbeyBuYW1lOiAnbmFtZScgfSwgeyBuYW1lOiAndGl0bGUnIH1dLFxuICAgIGNvbW1hbmRzOiB7XG4gICAgICBjcmVhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGRhdGFTZXJ2aWNlLmluc2VydE9uZShkYXRhKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogcmVzIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVsZXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmdldE9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5TaW5nbGUsXG4gICAgICB9LFxuICAgICAgbGlzdDoge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnF1ZXJ5KHsgc2tpcDogZS5za2lwLCB0YWtlOiBlLnRha2UsIGZpbHRlcjogZS5maWx0ZXIgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5MaXN0LFxuICAgICAgfSxcbiAgICB9LFxuICAgIGludGVyZmFjZXM6IHtcbiAgICAgIG1hc3Rlcjoge1xuICAgICAgICBjcmVhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBzaW5nbGU6IHtcbiAgICAgICAgICB0aXRsZTogJ3t7dGl0bGV9fScsXG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6IGB0KFwiY3JlYXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSlgLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnY3JlYXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRlbGV0ZUl0ZW1zXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGV0YWlsXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnb3Blbi1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICd2aWV3JyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGVsZXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB2aWV3czogW1xuICAgICAgICAgICAgY3JlYXRlQWxsUXVlcnlWaWV3KHtcbiAgICAgICAgICAgICAgc29ydHM6IFt7IG5hbWU6ICduYW1lJywgZGlyOiAnYXNjJyB9XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIGVudGl0eURlZjtcbn1cbiJdfQ==","import { Injectable, Injector } from '@angular/core';\nimport { RootConfig } from './const';\nimport { messageFactory, roomFactory } from './entities';\nimport * as i0 from \"@angular/core\";\nexport class AXMConversationModuleEntityProvider {\n constructor(injector) {\n this.injector = injector;\n }\n preload() {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity) => ({\n module: module,\n entity: entity.name,\n }));\n }\n async get(moduleName, entityName) {\n switch (entityName) {\n case 'room':\n return roomFactory(this.injector);\n case 'message':\n return messageFactory(this.injector);\n default:\n return null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMConversationModuleEntityProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMConversationModuleEntityProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMConversationModuleEntityProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0eS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUd6RCxNQUFNLE9BQU8sbUNBQW1DO0lBQzlDLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRW5DLE9BQU87UUFDWixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUUsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7U0FDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO1FBQ3JELFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDbkIsS0FBSyxNQUFNO2dCQUNULE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDOzhHQXBCVSxtQ0FBbUM7a0hBQW5DLG1DQUFtQzs7MkZBQW5DLG1DQUFtQztrQkFEL0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEVudGl0eSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUEVudGl0eURlZmluaXRpb25Mb2FkZXIsIEFYUEVudGl0eVByZWxvYWRFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IG1lc3NhZ2VGYWN0b3J5LCByb29tRmFjdG9yeSB9IGZyb20gJy4vZW50aXRpZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNQ29udmVyc2F0aW9uTW9kdWxlRW50aXR5UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBFbnRpdHlEZWZpbml0aW9uTG9hZGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgcHVibGljIHByZWxvYWQoKTogQVhQRW50aXR5UHJlbG9hZEVudGl0eVtdIHtcbiAgICBjb25zdCBtb2R1bGUgPSBSb290Q29uZmlnLm1vZHVsZS5uYW1lO1xuICAgIHJldHVybiBBcnJheS5mcm9tKE9iamVjdC52YWx1ZXMoUm9vdENvbmZpZy5lbnRpdGllcykpLm1hcCgoZW50aXR5OiBhbnkpID0+ICh7XG4gICAgICBtb2R1bGU6IG1vZHVsZSxcbiAgICAgIGVudGl0eTogZW50aXR5Lm5hbWUsXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldChtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICAgIHN3aXRjaCAoZW50aXR5TmFtZSkge1xuICAgICAgY2FzZSAncm9vbSc6XG4gICAgICAgIHJldHVybiByb29tRmFjdG9yeSh0aGlzLmluamVjdG9yKTtcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICByZXR1cm4gbWVzc2FnZUZhY3RvcnkodGhpcy5pbmplY3Rvcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\nexport class AXMMenuProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n this.entityService = inject(AXPEntityService);\n }\n async provide(context) {\n const module = RootConfig;\n const scope = RootConfig.config.i18n;\n context.addItems([\n {\n text: `t('plural-title', {scope:\"${scope}\"})`,\n path: `${this.sessionService.application?.name}/${module.config.route}`,\n priority: 2,\n icon: RootConfig.entities.room.icon,\n },\n ]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMMenuProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMMenuProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMMenuProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9tZW51LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR3JDLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVUsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBZWxEO0lBYkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUErQjtRQUMzQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFFckMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNmO2dCQUNFLElBQUksRUFBRSw2QkFBNkIsS0FBSyxLQUFLO2dCQUM3QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZFLFFBQVEsRUFBRSxDQUFDO2dCQUNYLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJO2FBQ3BDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoQlUsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQTWVudVByb3ZpZGVyLCBBWFBNZW51UHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTU1lbnVQcm92aWRlciBpbXBsZW1lbnRzIEFYUE1lbnVQcm92aWRlciB7XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG5cbiAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBNZW51UHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbW9kdWxlID0gUm9vdENvbmZpZztcbiAgICBjb25zdCBzY29wZSA9IFJvb3RDb25maWcuY29uZmlnLmkxOG47XG5cbiAgICBjb250ZXh0LmFkZEl0ZW1zKFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogYHQoJ3BsdXJhbC10aXRsZScsIHtzY29wZTpcIiR7c2NvcGV9XCJ9KWAsXG4gICAgICAgIHBhdGg6IGAke3RoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/Lm5hbWV9LyR7bW9kdWxlLmNvbmZpZy5yb3V0ZX1gLFxuICAgICAgICBwcmlvcml0eTogMixcbiAgICAgICAgaWNvbjogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLmljb24sXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=","import { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPFilterOperatorMiddlewareService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXMMessageService } from '../../entities/message/message.service';\nimport { AXMRoomService } from '../../entities/room/room.service';\nimport * as i0 from \"@angular/core\";\n//#region ---- Abstract Comment Service ----\nexport class AXMCommentService {\n}\n//#endregion\nexport class AXMCommentServiceImpl {\n constructor() {\n //#region ---- Dependencies ----\n this.roomService = inject(AXMRoomService);\n this.messageService = inject(AXMMessageService);\n this.sessionService = inject(AXPSessionService);\n this.usersService = inject(AXMUsersEntityService);\n this.filterService = inject(AXPFilterOperatorMiddlewareService);\n //#endregion\n //#region ---- Observables ----\n this._commentAdded$ = new Subject();\n this.commentAdded$ = this._commentAdded$.asObservable();\n this._commentRemoved$ = new Subject();\n this.commentRemoved$ = this._commentRemoved$.asObservable();\n this._commentUpdated$ = new Subject();\n this.commentUpdated$ = this._commentUpdated$.asObservable();\n this._threadAdded$ = new Subject();\n this.threadAdded$ = this._threadAdded$.asObservable();\n this._threadRemoved$ = new Subject();\n this.threadRemoved$ = this._threadRemoved$.asObservable();\n }\n //#endregion\n //#region ---- Helper Methods ----\n getCurrentUser() {\n const user = this.sessionService.user;\n if (!user) {\n throw new Error('No authenticated user found.');\n }\n return {\n id: user.id,\n type: 'user',\n };\n }\n async getUserInfo(userId) {\n try {\n await this.usersService.getOne(userId); // check if user exists\n return { id: userId, type: 'user' };\n }\n catch {\n throw new Error(`User with ID ${userId} not found`);\n }\n }\n formatComment(message, depth = 0) {\n return {\n ...message,\n depth,\n replies: [],\n replyCount: 0,\n };\n }\n buildCommentTree(comments) {\n const commentMap = new Map(comments.map((c) => [c.id, c]));\n const tree = [];\n comments.forEach((comment) => {\n if (comment.replyId && commentMap.has(comment.replyId)) {\n const parent = commentMap.get(comment.replyId);\n parent.replies.push(comment);\n comment.depth = parent.depth + 1;\n }\n else {\n tree.push(comment);\n }\n });\n commentMap.forEach((comment) => {\n comment.replyCount = comment.replies.length;\n });\n return tree;\n }\n //#endregion\n //#region ---- Comment Thread Service Implementation ----\n async createThread(entityRef, topic, title) {\n const currentUser = this.getCurrentUser();\n const room = {\n type: 'comment',\n topic: topic,\n title: title || `Comments for ${entityRef.type}#${entityRef.id}`,\n members: [currentUser],\n entityRef: entityRef,\n createdBy: currentUser.id,\n createdAt: new Date(),\n };\n await this.roomService.insertOne(room);\n const newThread = await this.getThread(entityRef, topic);\n if (!newThread) {\n throw new Error('Failed to create or retrieve thread after creation.');\n }\n this._threadAdded$.next(newThread);\n return newThread;\n }\n async getThread(entityRef, topic) {\n const { items } = await this.roomService.query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'entityRef.id',\n value: entityRef.id,\n operator: this.filterService.getOperator('equal'),\n },\n {\n field: 'entityRef.type',\n value: entityRef.type,\n operator: this.filterService.getOperator('equal'),\n },\n {\n field: 'topic',\n value: topic,\n operator: this.filterService.getOperator('equal'),\n },\n ],\n },\n });\n const room = items[0];\n if (!room) {\n return null;\n }\n const comments = await this.getComments(room.id, true);\n return {\n ...room,\n comments,\n commentCount: comments.length,\n };\n }\n async listThreads(entityRef, topic) {\n const { items } = await this.roomService.query({\n skip: 0,\n take: 100,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'entityRef.id',\n value: entityRef.id,\n operator: this.filterService.getOperator('equal'),\n },\n {\n field: 'entityRef.type',\n value: entityRef.type,\n operator: this.filterService.getOperator('equal'),\n },\n {\n field: 'topic',\n value: topic,\n operator: this.filterService.getOperator('equal'),\n },\n ],\n },\n });\n const threads = await Promise.all(items.map((room) => this.getThread(room.entityRef, room.topic)));\n return threads.filter((t) => t !== null);\n }\n async updateThread(entityRef, topic, data) {\n const thread = await this.getThread(entityRef, topic);\n if (!thread) {\n throw new Error(`Thread for entity ${entityRef.type}#${entityRef.id} not found.`);\n }\n await this.roomService.updateOne(thread.id, data);\n const updatedThread = await this.getThread(entityRef, topic);\n if (!updatedThread) {\n throw new Error('Failed to retrieve thread after update.');\n }\n return updatedThread;\n }\n async deleteThread(entityRef, topic) {\n const thread = await this.getThread(entityRef, topic);\n if (thread) {\n await this.roomService.deleteOne(thread.id);\n this._threadRemoved$.next(thread.id);\n }\n return true;\n }\n //#endregion\n //#region ---- Comment Service Implementation ----\n async addComment(threadId, content, parentCommentId, contentType = 'text', userId) {\n const author = userId ? await this.getUserInfo(userId) : this.getCurrentUser();\n const messageContent = { content, contentType };\n const message = {\n roomId: threadId,\n message: messageContent,\n author,\n replyId: parentCommentId,\n reactions: [],\n seen: [],\n createdBy: author.id,\n createdAt: new Date(),\n };\n const messageId = await this.messageService.insertOne(message);\n const newComment = await this.getComment(messageId);\n this._commentAdded$.next(newComment);\n return newComment;\n }\n async getComments(threadId, nested = true) {\n const { items } = await this.messageService.query({\n skip: 0,\n filter: { field: 'roomId', value: threadId, operator: this.filterService.getOperator('equal') },\n sort: [{ field: 'createdAt', dir: 'asc' }],\n take: 500, // Assuming a reasonable limit for comments per thread\n });\n const formattedComments = items.map((c) => this.formatComment(c));\n if (nested) {\n return this.buildCommentTree(formattedComments);\n }\n return formattedComments;\n }\n async getComment(commentId) {\n const message = await this.messageService.getOne(commentId);\n return this.formatComment(message);\n }\n async editComment(commentId, content, contentType = 'text') {\n const messageContent = { content, contentType };\n await this.messageService.updateOne(commentId, {\n message: messageContent,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n async deleteComment(commentId) {\n // Note: This is a hard delete. Soft delete might be preferable.\n await this.messageService.deleteOne(commentId);\n this._commentRemoved$.next(commentId);\n return true;\n }\n //#endregion\n //#region ---- Comment Reaction Service Implementation ----\n async addReaction(commentId, type) {\n const author = this.getCurrentUser();\n const comment = await this.messageService.getOne(commentId);\n const reactions = comment.reactions || [];\n if (reactions.some((r) => r.author.id === author.id && r.type === type)) {\n return this.formatComment(comment);\n }\n const updatedReactions = [...reactions, { author, type }];\n await this.messageService.updateOne(commentId, { reactions: updatedReactions });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n async removeReaction(commentId, type) {\n const author = this.getCurrentUser();\n const comment = await this.messageService.getOne(commentId);\n const updatedReactions = (comment.reactions || []).filter((r) => !(r.author.id === author.id && r.type === type));\n await this.messageService.updateOne(commentId, { reactions: updatedReactions });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n async getReactions(commentId) {\n const comment = await this.messageService.getOne(commentId);\n return comment.reactions || [];\n }\n async likeComment(commentId) {\n return this.addReaction(commentId, 'like');\n }\n async unlikeComment(commentId) {\n return this.removeReaction(commentId, 'like');\n }\n //#endregion\n //#region ---- Comment Pin Service Implementation ----\n async pinComment(commentId) {\n await this.messageService.updateOne(commentId, { isPinned: true });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n async unpinComment(commentId) {\n await this.messageService.updateOne(commentId, { isPinned: false });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentServiceImpl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentServiceImpl, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUlsRSxnREFBZ0Q7QUFFaEQsTUFBTSxPQUFnQixpQkFBaUI7Q0F5RHRDO0FBRUQsWUFBWTtBQUtaLE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFJRSxvQ0FBb0M7UUFFbkIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDN0Msa0JBQWEsR0FBRyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUU1RSxZQUFZO1FBRVosbUNBQW1DO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUNuRCxrQkFBYSxHQUFHLElBQUksQ0FB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QixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFpQjtRQUNsQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7OEdBelVVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1Vc2Vyc0VudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvc2VjdXJpdHktbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBGaWx0ZXJPcGVyYXRvck1pZGRsZXdhcmVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQQ29udGVudCwgQVhQQ29udGVudFR5cGUsIEFYUEVudGl0eVJlZmVyZW5jZSwgQVhQVXNlclJlZmVyZW5jZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uTWVzc2FnZSwgQVhNQ29udmVyc2F0aW9uUmVhY3Rpb24sIEFYTVJlYWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS50eXBlcyc7XG5pbXBvcnQgeyBBWE1Sb29tU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3Jvb20vcm9vbS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUNvbnZlcnNhdGlvblJvb20gfSBmcm9tICcuLi8uLi9lbnRpdGllcy9yb29tL3Jvb20udHlwZXMnO1xuaW1wb3J0IHsgQVhNQ29tbWVudCwgQVhNQ29tbWVudFRocmVhZCB9IGZyb20gJy4vY29tbWVudC50eXBlJztcblxuLy8jcmVnaW9uIC0tLS0gICBBYnN0cmFjdCBDb21tZW50IFNlcnZpY2UgICAtLS0tXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWE1Db21tZW50U2VydmljZSB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgT2JzZXJ2YWJsZXMgICAtLS0tXG5cbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29tbWVudEFkZGVkJDogT2JzZXJ2YWJsZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29tbWVudFJlbW92ZWQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbW1lbnRVcGRhdGVkJDogT2JzZXJ2YWJsZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgdGhyZWFkQWRkZWQkOiBPYnNlcnZhYmxlPEFYTUNvbW1lbnRUaHJlYWQ+O1xuICBhYnN0cmFjdCByZWFkb25seSB0aHJlYWRSZW1vdmVkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWVudCBUaHJlYWQgU2VydmljZSAgIC0tLS1cblxuICBhYnN0cmFjdCBjcmVhdGVUaHJlYWQoZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsIHRvcGljOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkPjtcbiAgYWJzdHJhY3QgZ2V0VGhyZWFkKGVudGl0eVJlZjogQVhQRW50aXR5UmVmZXJlbmNlLCB0b3BpYzogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkIHwgbnVsbD47XG4gIGFic3RyYWN0IGxpc3RUaHJlYWRzKGVudGl0eVJlZjogQVhQRW50aXR5UmVmZXJlbmNlLCB0b3BpYzogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkW10+O1xuICBhYnN0cmFjdCB1cGRhdGVUaHJlYWQoXG4gICAgZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsXG4gICAgdG9waWM6IHN0cmluZyxcbiAgICBkYXRhOiBQYXJ0aWFsPHsgdGl0bGU6IHN0cmluZyB9PixcbiAgKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkPjtcbiAgYWJzdHJhY3QgZGVsZXRlVGhyZWFkKGVudGl0eVJlZjogQVhQRW50aXR5UmVmZXJlbmNlLCB0b3BpYzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbW1lbnQgU2VydmljZSAgIC0tLS1cblxuICBhYnN0cmFjdCBhZGRDb21tZW50KFxuICAgIHRocmVhZElkOiBzdHJpbmcsXG4gICAgY29udGVudDogc3RyaW5nLFxuICAgIHBhcmVudENvbW1lbnRJZD86IHN0cmluZyxcbiAgICBjb250ZW50VHlwZT86IEFYUENvbnRlbnRUeXBlLFxuICAgIHVzZXJJZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgZ2V0Q29tbWVudHModGhyZWFkSWQ6IHN0cmluZywgbmVzdGVkOiBib29sZWFuKTogUHJvbWlzZTxBWE1Db21tZW50W10+O1xuICBhYnN0cmFjdCBnZXRDb21tZW50KGNvbW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgZWRpdENvbW1lbnQoY29tbWVudElkOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZywgY29udGVudFR5cGU/OiBBWFBDb250ZW50VHlwZSk6IFByb21pc2U8QVhNQ29tbWVudD47XG4gIGFic3RyYWN0IGRlbGV0ZUNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWVudCBSZWFjdGlvbiBTZXJ2aWNlICAgLS0tLVxuXG4gIGFic3RyYWN0IGFkZFJlYWN0aW9uKGNvbW1lbnRJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbW1lbnQ+O1xuICBhYnN0cmFjdCByZW1vdmVSZWFjdGlvbihjb21tZW50SWQ6IHN0cmluZywgdHlwZTogQVhNUmVhY3Rpb25UeXBlKTogUHJvbWlzZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgZ2V0UmVhY3Rpb25zKGNvbW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdPjtcbiAgYWJzdHJhY3QgbGlrZUNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnQ+O1xuICBhYnN0cmFjdCB1bmxpa2VDb21tZW50KGNvbW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50PjtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbW1lbnQgUGluIFNlcnZpY2UgICAtLS0tXG5cbiAgYWJzdHJhY3QgcGluQ29tbWVudChjb21tZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudD47XG4gIGFic3RyYWN0IHVucGluQ29tbWVudChjb21tZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudD47XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ29tbWVudFNlcnZpY2VJbXBsIGltcGxlbWVudHMgQVhNQ29tbWVudFNlcnZpY2Uge1xuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IHJvb21TZXJ2aWNlID0gaW5qZWN0KEFYTVJvb21TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZSA9IGluamVjdChBWE1NZXNzYWdlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJzU2VydmljZSA9IGluamVjdChBWE1Vc2Vyc0VudGl0eVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlclNlcnZpY2UgPSBpbmplY3QoQVhQRmlsdGVyT3BlcmF0b3JNaWRkbGV3YXJlU2VydmljZSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBPYnNlcnZhYmxlcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21tZW50QWRkZWQkID0gbmV3IFN1YmplY3Q8QVhNQ29tbWVudD4oKTtcbiAgcmVhZG9ubHkgY29tbWVudEFkZGVkJCA9IHRoaXMuX2NvbW1lbnRBZGRlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29tbWVudFJlbW92ZWQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICByZWFkb25seSBjb21tZW50UmVtb3ZlZCQgPSB0aGlzLl9jb21tZW50UmVtb3ZlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29tbWVudFVwZGF0ZWQkID0gbmV3IFN1YmplY3Q8QVhNQ29tbWVudD4oKTtcbiAgcmVhZG9ubHkgY29tbWVudFVwZGF0ZWQkID0gdGhpcy5fY29tbWVudFVwZGF0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVhZEFkZGVkJCA9IG5ldyBTdWJqZWN0PEFYTUNvbW1lbnRUaHJlYWQ+KCk7XG4gIHJlYWRvbmx5IHRocmVhZEFkZGVkJCA9IHRoaXMuX3RocmVhZEFkZGVkJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlYWRSZW1vdmVkJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdGhyZWFkUmVtb3ZlZCQgPSB0aGlzLl90aHJlYWRSZW1vdmVkJC5hc09ic2VydmFibGUoKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogQVhQVXNlclJlZmVyZW5jZSB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcjtcbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gYXV0aGVudGljYXRlZCB1c2VyIGZvdW5kLicpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHVzZXIuaWQsXG4gICAgICB0eXBlOiAndXNlcicsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VXNlckluZm8odXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFVzZXJSZWZlcmVuY2U+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy51c2Vyc1NlcnZpY2UuZ2V0T25lKHVzZXJJZCk7IC8vIGNoZWNrIGlmIHVzZXIgZXhpc3RzXG4gICAgICByZXR1cm4geyBpZDogdXNlcklkLCB0eXBlOiAndXNlcicgfTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVXNlciB3aXRoIElEICR7dXNlcklkfSBub3QgZm91bmRgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdENvbW1lbnQobWVzc2FnZTogQVhNQ29udmVyc2F0aW9uTWVzc2FnZSwgZGVwdGggPSAwKTogQVhNQ29tbWVudCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICBkZXB0aCxcbiAgICAgIHJlcGxpZXM6IFtdLFxuICAgICAgcmVwbHlDb3VudDogMCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbW1lbnRUcmVlKGNvbW1lbnRzOiBBWE1Db21tZW50W10pOiBBWE1Db21tZW50W10ge1xuICAgIGNvbnN0IGNvbW1lbnRNYXAgPSBuZXcgTWFwPHN0cmluZywgQVhNQ29tbWVudD4oY29tbWVudHMubWFwKChjKSA9PiBbYy5pZCwgY10pKTtcbiAgICBjb25zdCB0cmVlOiBBWE1Db21tZW50W10gPSBbXTtcblxuICAgIGNvbW1lbnRzLmZvckVhY2goKGNvbW1lbnQpID0+IHtcbiAgICAgIGlmIChjb21tZW50LnJlcGx5SWQgJiYgY29tbWVudE1hcC5oYXMoY29tbWVudC5yZXBseUlkKSkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBjb21tZW50TWFwLmdldChjb21tZW50LnJlcGx5SWQpITtcbiAgICAgICAgcGFyZW50LnJlcGxpZXMucHVzaChjb21tZW50KTtcbiAgICAgICAgY29tbWVudC5kZXB0aCA9IHBhcmVudC5kZXB0aCArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmVlLnB1c2goY29tbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb21tZW50TWFwLmZvckVhY2goKGNvbW1lbnQpID0+IHtcbiAgICAgIGNvbW1lbnQucmVwbHlDb3VudCA9IGNvbW1lbnQucmVwbGllcy5sZW5ndGg7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHJlZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWVudCBUaHJlYWQgU2VydmljZSBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuICBhc3luYyBjcmVhdGVUaHJlYWQoZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsIHRvcGljOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkPiB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3Qgcm9vbTogT21pdDxBWE1Db252ZXJzYXRpb25Sb29tLCAnaWQnPiA9IHtcbiAgICAgIHR5cGU6ICdjb21tZW50JyxcbiAgICAgIHRvcGljOiB0b3BpYyxcbiAgICAgIHRpdGxlOiB0aXRsZSB8fCBgQ29tbWVudHMgZm9yICR7ZW50aXR5UmVmLnR5cGV9IyR7ZW50aXR5UmVmLmlkfWAsXG4gICAgICBtZW1iZXJzOiBbY3VycmVudFVzZXJdLFxuICAgICAgZW50aXR5UmVmOiBlbnRpdHlSZWYsXG4gICAgICBjcmVhdGVkQnk6IGN1cnJlbnRVc2VyLmlkLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5yb29tU2VydmljZS5pbnNlcnRPbmUocm9vbSk7XG4gICAgY29uc3QgbmV3VGhyZWFkID0gYXdhaXQgdGhpcy5nZXRUaHJlYWQoZW50aXR5UmVmLCB0b3BpYyk7XG4gICAgaWYgKCFuZXdUaHJlYWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBvciByZXRyaWV2ZSB0aHJlYWQgYWZ0ZXIgY3JlYXRpb24uJyk7XG4gICAgfVxuICAgIHRoaXMuX3RocmVhZEFkZGVkJC5uZXh0KG5ld1RocmVhZCk7XG4gICAgcmV0dXJuIG5ld1RocmVhZDtcbiAgfVxuXG4gIGFzeW5jIGdldFRocmVhZChlbnRpdHlSZWY6IEFYUEVudGl0eVJlZmVyZW5jZSwgdG9waWM6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudFRocmVhZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxLFxuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGxvZ2ljOiAnYW5kJyxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkOiAnZW50aXR5UmVmLmlkJyxcbiAgICAgICAgICAgIHZhbHVlOiBlbnRpdHlSZWYuaWQsXG4gICAgICAgICAgICBvcGVyYXRvcjogdGhpcy5maWx0ZXJTZXJ2aWNlLmdldE9wZXJhdG9yKCdlcXVhbCcpIGFzIGFueSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkOiAnZW50aXR5UmVmLnR5cGUnLFxuICAgICAgICAgICAgdmFsdWU6IGVudGl0eVJlZi50eXBlLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHRoaXMuZmlsdGVyU2VydmljZS5nZXRPcGVyYXRvcignZXF1YWwnKSBhcyBhbnksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ3RvcGljJyxcbiAgICAgICAgICAgIHZhbHVlOiB0b3BpYyxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0T3BlcmF0b3IoJ2VxdWFsJykgYXMgYW55LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgcm9vbSA9IGl0ZW1zWzBdO1xuICAgIGlmICghcm9vbSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWVudHMgPSBhd2FpdCB0aGlzLmdldENvbW1lbnRzKHJvb20uaWQsIHRydWUpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yb29tLFxuICAgICAgY29tbWVudHMsXG4gICAgICBjb21tZW50Q291bnQ6IGNvbW1lbnRzLmxlbmd0aCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbGlzdFRocmVhZHMoZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsIHRvcGljOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnRUaHJlYWRbXT4ge1xuICAgIGNvbnN0IHsgaXRlbXMgfSA9IGF3YWl0IHRoaXMucm9vbVNlcnZpY2UucXVlcnkoe1xuICAgICAgc2tpcDogMCxcbiAgICAgIHRha2U6IDEwMCxcbiAgICAgIGZpbHRlcjoge1xuICAgICAgICBsb2dpYzogJ2FuZCcsXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ2VudGl0eVJlZi5pZCcsXG4gICAgICAgICAgICB2YWx1ZTogZW50aXR5UmVmLmlkLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHRoaXMuZmlsdGVyU2VydmljZS5nZXRPcGVyYXRvcignZXF1YWwnKSBhcyBhbnksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ2VudGl0eVJlZi50eXBlJyxcbiAgICAgICAgICAgIHZhbHVlOiBlbnRpdHlSZWYudHlwZSxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0T3BlcmF0b3IoJ2VxdWFsJykgYXMgYW55LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGQ6ICd0b3BpYycsXG4gICAgICAgICAgICB2YWx1ZTogdG9waWMsXG4gICAgICAgICAgICBvcGVyYXRvcjogdGhpcy5maWx0ZXJTZXJ2aWNlLmdldE9wZXJhdG9yKCdlcXVhbCcpIGFzIGFueSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRocmVhZHMgPSBhd2FpdCBQcm9taXNlLmFsbChpdGVtcy5tYXAoKHJvb20pID0+IHRoaXMuZ2V0VGhyZWFkKHJvb20uZW50aXR5UmVmISwgcm9vbS50b3BpYyEpKSk7XG4gICAgcmV0dXJuIHRocmVhZHMuZmlsdGVyKCh0KTogdCBpcyBBWE1Db21tZW50VGhyZWFkID0+IHQgIT09IG51bGwpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVGhyZWFkKFxuICAgIGVudGl0eVJlZjogQVhQRW50aXR5UmVmZXJlbmNlLFxuICAgIHRvcGljOiBzdHJpbmcsXG4gICAgZGF0YTogUGFydGlhbDx7IHRpdGxlOiBzdHJpbmcgfT4sXG4gICk6IFByb21pc2U8QVhNQ29tbWVudFRocmVhZD4ge1xuICAgIGNvbnN0IHRocmVhZCA9IGF3YWl0IHRoaXMuZ2V0VGhyZWFkKGVudGl0eVJlZiwgdG9waWMpO1xuICAgIGlmICghdGhyZWFkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRocmVhZCBmb3IgZW50aXR5ICR7ZW50aXR5UmVmLnR5cGV9IyR7ZW50aXR5UmVmLmlkfSBub3QgZm91bmQuYCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHRocmVhZC5pZCwgZGF0YSk7XG4gICAgY29uc3QgdXBkYXRlZFRocmVhZCA9IGF3YWl0IHRoaXMuZ2V0VGhyZWFkKGVudGl0eVJlZiwgdG9waWMpO1xuICAgIGlmICghdXBkYXRlZFRocmVhZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcmV0cmlldmUgdGhyZWFkIGFmdGVyIHVwZGF0ZS4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZWRUaHJlYWQ7XG4gIH1cblxuICBhc3luYyBkZWxldGVUaHJlYWQoZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsIHRvcGljOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB0aHJlYWQgPSBhd2FpdCB0aGlzLmdldFRocmVhZChlbnRpdHlSZWYsIHRvcGljKTtcbiAgICBpZiAodGhyZWFkKSB7XG4gICAgICBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmRlbGV0ZU9uZSh0aHJlYWQuaWQpO1xuICAgICAgdGhpcy5fdGhyZWFkUmVtb3ZlZCQubmV4dCh0aHJlYWQuaWQpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWVudCBTZXJ2aWNlIEltcGxlbWVudGF0aW9uICAgLS0tLVxuXG4gIGFzeW5jIGFkZENvbW1lbnQoXG4gICAgdGhyZWFkSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgcGFyZW50Q29tbWVudElkPzogc3RyaW5nLFxuICAgIGNvbnRlbnRUeXBlOiBBWFBDb250ZW50VHlwZSA9ICd0ZXh0JyxcbiAgICB1c2VySWQ/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8QVhNQ29tbWVudD4ge1xuICAgIGNvbnN0IGF1dGhvciA9IHVzZXJJZCA/IGF3YWl0IHRoaXMuZ2V0VXNlckluZm8odXNlcklkKSA6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBjb25zdCBtZXNzYWdlQ29udGVudDogQVhQQ29udGVudCA9IHsgY29udGVudCwgY29udGVudFR5cGUgfTtcbiAgICBjb25zdCBtZXNzYWdlOiBPbWl0PEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2UsICdpZCc+ID0ge1xuICAgICAgcm9vbUlkOiB0aHJlYWRJZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VDb250ZW50LFxuICAgICAgYXV0aG9yLFxuICAgICAgcmVwbHlJZDogcGFyZW50Q29tbWVudElkLFxuICAgICAgcmVhY3Rpb25zOiBbXSxcbiAgICAgIHNlZW46IFtdLFxuICAgICAgY3JlYXRlZEJ5OiBhdXRob3IuaWQsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgfTtcbiAgICBjb25zdCBtZXNzYWdlSWQgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluc2VydE9uZShtZXNzYWdlKTtcbiAgICBjb25zdCBuZXdDb21tZW50ID0gYXdhaXQgdGhpcy5nZXRDb21tZW50KG1lc3NhZ2VJZCk7XG4gICAgdGhpcy5fY29tbWVudEFkZGVkJC5uZXh0KG5ld0NvbW1lbnQpO1xuICAgIHJldHVybiBuZXdDb21tZW50O1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29tbWVudHModGhyZWFkSWQ6IHN0cmluZywgbmVzdGVkID0gdHJ1ZSk6IFByb21pc2U8QVhNQ29tbWVudFtdPiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgZmlsdGVyOiB7IGZpZWxkOiAncm9vbUlkJywgdmFsdWU6IHRocmVhZElkLCBvcGVyYXRvcjogdGhpcy5maWx0ZXJTZXJ2aWNlLmdldE9wZXJhdG9yKCdlcXVhbCcpIGFzIGFueSB9LFxuICAgICAgc29ydDogW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXI6ICdhc2MnIH1dLFxuICAgICAgdGFrZTogNTAwLCAvLyBBc3N1bWluZyBhIHJlYXNvbmFibGUgbGltaXQgZm9yIGNvbW1lbnRzIHBlciB0aHJlYWRcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvcm1hdHRlZENvbW1lbnRzID0gaXRlbXMubWFwKChjKSA9PiB0aGlzLmZvcm1hdENvbW1lbnQoYykpO1xuXG4gICAgaWYgKG5lc3RlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRDb21tZW50VHJlZShmb3JtYXR0ZWRDb21tZW50cyk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZWRDb21tZW50cztcbiAgfVxuXG4gIGFzeW5jIGdldENvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnQ+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUoY29tbWVudElkKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRDb21tZW50KG1lc3NhZ2UpO1xuICB9XG5cbiAgYXN5bmMgZWRpdENvbW1lbnQoY29tbWVudElkOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZywgY29udGVudFR5cGU6IEFYUENvbnRlbnRUeXBlID0gJ3RleHQnKTogUHJvbWlzZTxBWE1Db21tZW50PiB7XG4gICAgY29uc3QgbWVzc2FnZUNvbnRlbnQ6IEFYUENvbnRlbnQgPSB7IGNvbnRlbnQsIGNvbnRlbnRUeXBlIH07XG4gICAgYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUoY29tbWVudElkLCB7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlQ29udGVudCxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgIH0pO1xuICAgIGNvbnN0IHVwZGF0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5nZXRDb21tZW50KGNvbW1lbnRJZCk7XG4gICAgdGhpcy5fY29tbWVudFVwZGF0ZWQkLm5leHQodXBkYXRlZENvbW1lbnQpO1xuICAgIHJldHVybiB1cGRhdGVkQ29tbWVudDtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBOb3RlOiBUaGlzIGlzIGEgaGFyZCBkZWxldGUuIFNvZnQgZGVsZXRlIG1pZ2h0IGJlIHByZWZlcmFibGUuXG4gICAgYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5kZWxldGVPbmUoY29tbWVudElkKTtcbiAgICB0aGlzLl9jb21tZW50UmVtb3ZlZCQubmV4dChjb21tZW50SWQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21tZW50IFJlYWN0aW9uIFNlcnZpY2UgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbiAgYXN5bmMgYWRkUmVhY3Rpb24oY29tbWVudElkOiBzdHJpbmcsIHR5cGU6IEFYTVJlYWN0aW9uVHlwZSk6IFByb21pc2U8QVhNQ29tbWVudD4ge1xuICAgIGNvbnN0IGF1dGhvciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBjb25zdCBjb21tZW50ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUoY29tbWVudElkKTtcbiAgICBjb25zdCByZWFjdGlvbnMgPSBjb21tZW50LnJlYWN0aW9ucyB8fCBbXTtcblxuICAgIGlmIChyZWFjdGlvbnMuc29tZSgocikgPT4gci5hdXRob3IuaWQgPT09IGF1dGhvci5pZCAmJiByLnR5cGUgPT09IHR5cGUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRDb21tZW50KGNvbW1lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRSZWFjdGlvbnMgPSBbLi4ucmVhY3Rpb25zLCB7IGF1dGhvciwgdHlwZSB9XTtcbiAgICBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShjb21tZW50SWQsIHsgcmVhY3Rpb25zOiB1cGRhdGVkUmVhY3Rpb25zIH0pO1xuICAgIGNvbnN0IHVwZGF0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5nZXRDb21tZW50KGNvbW1lbnRJZCk7XG4gICAgdGhpcy5fY29tbWVudFVwZGF0ZWQkLm5leHQodXBkYXRlZENvbW1lbnQpO1xuICAgIHJldHVybiB1cGRhdGVkQ29tbWVudDtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVJlYWN0aW9uKGNvbW1lbnRJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbW1lbnQ+IHtcbiAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgY29tbWVudCA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKGNvbW1lbnRJZCk7XG4gICAgY29uc3QgdXBkYXRlZFJlYWN0aW9ucyA9IChjb21tZW50LnJlYWN0aW9ucyB8fCBbXSkuZmlsdGVyKChyKSA9PiAhKHIuYXV0aG9yLmlkID09PSBhdXRob3IuaWQgJiYgci50eXBlID09PSB0eXBlKSk7XG4gICAgYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUoY29tbWVudElkLCB7IHJlYWN0aW9uczogdXBkYXRlZFJlYWN0aW9ucyB9KTtcbiAgICBjb25zdCB1cGRhdGVkQ29tbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29tbWVudChjb21tZW50SWQpO1xuICAgIHRoaXMuX2NvbW1lbnRVcGRhdGVkJC5uZXh0KHVwZGF0ZWRDb21tZW50KTtcbiAgICByZXR1cm4gdXBkYXRlZENvbW1lbnQ7XG4gIH1cblxuICBhc3luYyBnZXRSZWFjdGlvbnMoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uW10+IHtcbiAgICBjb25zdCBjb21tZW50ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUoY29tbWVudElkKTtcbiAgICByZXR1cm4gY29tbWVudC5yZWFjdGlvbnMgfHwgW107XG4gIH1cblxuICBhc3luYyBsaWtlQ29tbWVudChjb21tZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudD4ge1xuICAgIHJldHVybiB0aGlzLmFkZFJlYWN0aW9uKGNvbW1lbnRJZCwgJ2xpa2UnKTtcbiAgfVxuXG4gIGFzeW5jIHVubGlrZUNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVSZWFjdGlvbihjb21tZW50SWQsICdsaWtlJyk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbW1lbnQgUGluIFNlcnZpY2UgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbiAgYXN5bmMgcGluQ29tbWVudChjb21tZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudD4ge1xuICAgIGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKGNvbW1lbnRJZCwgeyBpc1Bpbm5lZDogdHJ1ZSB9KTtcbiAgICBjb25zdCB1cGRhdGVkQ29tbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29tbWVudChjb21tZW50SWQpO1xuICAgIHRoaXMuX2NvbW1lbnRVcGRhdGVkJC5uZXh0KHVwZGF0ZWRDb21tZW50KTtcbiAgICByZXR1cm4gdXBkYXRlZENvbW1lbnQ7XG4gIH1cblxuICBhc3luYyB1bnBpbkNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnQ+IHtcbiAgICBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShjb21tZW50SWQsIHsgaXNQaW5uZWQ6IGZhbHNlIH0pO1xuICAgIGNvbnN0IHVwZGF0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5nZXRDb21tZW50KGNvbW1lbnRJZCk7XG4gICAgdGhpcy5fY29tbWVudFVwZGF0ZWQkLm5leHQodXBkYXRlZENvbW1lbnQpO1xuICAgIHJldHVybiB1cGRhdGVkQ29tbWVudDtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19","import { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, signal, viewChild, } from '@angular/core';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXMCommentService } from './comment.service';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/wysiwyg\";\nimport * as i2 from \"@acorex/components/skeleton\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/components/comment\";\nimport * as i5 from \"@acorex/components/button\";\nimport * as i6 from \"@acorex/components/loading\";\nimport * as i7 from \"@acorex/components/dropdown\";\nimport * as i8 from \"@acorex/core/format\";\nimport * as i9 from \"@acorex/components/form\";\nimport * as i10 from \"@acorex/components/toolbar\";\nimport * as i11 from \"@angular/forms\";\nimport * as i12 from \"@acorex/components/dropdown-button\";\nexport class AXMCommentComponent {\n constructor() {\n this.refrenceType = input.required();\n this.refrenceId = input.required();\n this.subject = input.required();\n this.hasCooldown = signal(false);\n this.commentContent = signal('');\n this.isSubmitting = signal(false);\n this.isReplyingMode = signal(false);\n this.isEditingMode = signal(false);\n this.isLoading = signal(true);\n this.failedImageIds = signal([]);\n this.activeReplyComment = signal(undefined);\n this.activeEditComment = signal(undefined);\n this.highlightedCommentId = signal(null);\n this.wysiwygEditor = viewChild.required('w');\n this.commentService = inject(AXMCommentService);\n this.sessionService = inject(AXPSessionService);\n this.toastService = inject(AXToastService);\n this.dialogService = inject(AXDialogService);\n this.sanitize = inject(DomSanitizer);\n this.destroyRef = inject(DestroyRef);\n this.comments = signal([]);\n this.thread = signal(undefined);\n this.wysiwygOptions = signal({\n look: 'solid',\n });\n this.avatarConfig = signal({\n color: 'primary',\n look: 'rounded',\n type: 'solid',\n });\n this.validateContent = (content) => {\n let isValid = true;\n if (!content || content === '<p><br></p>') {\n isValid = false;\n }\n return {\n rule: 'callback',\n result: isValid,\n message: isValid ? '' : 'Please fill the content',\n value: content,\n };\n };\n }\n ngOnInit() {\n this.isLoading.set(true);\n this.loadComments().finally(() => {\n setTimeout(() => {\n this.isLoading.set(false);\n }, 250);\n });\n this.commentService.commentAdded$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((comment) => {\n if (comment.replyId) {\n this.comments.update((comments) => {\n return comments.map((c) => {\n if (c.id === comment.replyId) {\n const newReplies = c.replies ? [...c.replies, comment] : [comment];\n return { ...c, replies: newReplies, replyCount: newReplies.length };\n }\n return c;\n });\n });\n }\n else {\n this.comments.update((comments) => [...comments, comment]);\n }\n });\n this.commentService.commentUpdated$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((updatedComment) => {\n const update = (list) => {\n return list.map((c) => {\n if (c.id === updatedComment.id) {\n return { ...c, ...updatedComment, replies: updatedComment.replies || c.replies };\n }\n if (c.replies && c.replies.length > 0) {\n return { ...c, replies: update(c.replies) };\n }\n return c;\n });\n };\n this.comments.update((comments) => update(comments));\n });\n }\n getCurrentUser() {\n const user = this.sessionService.user;\n return user ? { id: user.id, type: 'user' } : null;\n }\n isLikedByUser(comment) {\n const user = this.getCurrentUser();\n if (!user)\n return false;\n return (comment.reactions || []).some((r) => r.author.id === user.id && r.type === 'like');\n }\n getReactionsCount(comment) {\n return (comment.reactions || []).filter((r) => r.type === 'like').length;\n }\n sanitizeHtml(htmlContent) {\n if (!htmlContent)\n return this.sanitize.bypassSecurityTrustHtml('');\n return this.sanitize.bypassSecurityTrustHtml(htmlContent);\n }\n handleImageError(imageId) {\n this.failedImageIds.update((ids) => [...ids, imageId]);\n }\n checkImageExists(imageId) {\n return !this.failedImageIds().includes(imageId);\n }\n async loadComments() {\n try {\n const thread = await this.commentService.getThread({ type: this.refrenceType(), id: this.refrenceId() }, this.subject());\n if (thread) {\n this.thread.set(thread);\n this.comments.set(thread.comments);\n }\n else {\n this.comments.set([]);\n this.thread.set(undefined);\n }\n }\n catch (error) {\n console.error('Failed to load comments:', error);\n this.toastService.show({\n content: 'Failed to load comments. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.comments.set([]);\n }\n }\n editMessage(comment, reply, userName) {\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.isEditingMode.set(true);\n this.activeEditComment.set({ ...comment, userName: userName || '' });\n const contentToEdit = reply ? reply.message?.content : comment.message?.content;\n this.commentContent.set(contentToEdit || '');\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n replyMessage(comment, reply, userName) {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(true);\n this.activeReplyComment.set({ ...comment, userName: userName || '' });\n if (reply) {\n const author = reply.author.fullName || reply.author.id;\n const mention = `<a data-id=\"${reply.id}\">@${author}</a> `;\n this.commentContent.set(mention);\n document.getElementsByClassName('ql-editor')[0].innerHTML = mention;\n this.wysiwygEditor()?.focus();\n }\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n async deleteComment(commentId) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this comment?',\n title: 'Delete Comment',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n await this.commentService.deleteComment(commentId);\n this.removeMessageById(commentId);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n if (this.isEditingMode() && this.activeEditComment()?.id === commentId) {\n this.resetReplyEditState();\n }\n dialog.close();\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n resetReplyEditState() {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n }\n async toggleLike(comment) {\n const isLiked = this.isLikedByUser(comment);\n this.updateLikeStatus(comment.id, !isLiked);\n try {\n if (isLiked) {\n await this.commentService.unlikeComment(comment.id);\n }\n else {\n await this.commentService.likeComment(comment.id);\n }\n }\n catch (error) {\n console.error('Failed to toggle like:', error);\n this.updateLikeStatus(comment.id, isLiked); // Revert optimistic update\n }\n }\n updateLikeStatus(commentId, willBeLiked) {\n const findAndToggle = (comments) => {\n return comments.map((c) => {\n if (c.id === commentId) {\n const user = this.getCurrentUser();\n if (!user)\n return c;\n let reactions = c.reactions || [];\n if (willBeLiked) {\n reactions.push({ author: user, type: 'like' });\n }\n else {\n reactions = reactions.filter((r) => r.author.id !== user.id || r.type !== 'like');\n }\n return { ...c, reactions };\n }\n if (c.replies && c.replies.length > 0) {\n c.replies = findAndToggle(c.replies);\n }\n return c;\n });\n };\n this.comments.update((comments) => findAndToggle(comments));\n }\n removeMessageById(commentId) {\n const filterOut = (comments) => {\n return comments\n .filter((c) => c.id !== commentId)\n .map((c) => {\n if (c.replies && c.replies.length > 0) {\n c.replies = filterOut(c.replies);\n }\n return c;\n });\n };\n this.comments.update((comments) => filterOut(comments));\n }\n async submitComment() {\n if (!this.validateContent(this.commentContent()).result) {\n return;\n }\n this.isSubmitting.set(true);\n console.log(this.commentContent());\n try {\n let currentThread = this.thread();\n if (!currentThread) {\n currentThread = await this.commentService.createThread({ type: this.refrenceType(), id: this.refrenceId() }, this.subject());\n this.thread.set(currentThread);\n }\n if (this.isEditingMode() && this.activeEditComment()?.id) {\n await this.commentService.editComment(this.activeEditComment().id, this.commentContent());\n this.hasCooldown.set(true);\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n }\n else {\n await this.commentService.addComment(currentThread.id, this.commentContent(), this.activeReplyComment()?.id);\n this.hasCooldown.set(true);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n }\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n setTimeout(() => {\n this.hasCooldown.set(false);\n }, 1000);\n }\n catch (error) {\n console.error('Error submitting comment:', error);\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to submit comment. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n scrollMain() {\n const comment = this.isReplyingMode() ? this.activeReplyComment() : this.activeEditComment();\n if (comment && comment.id) {\n const el = document.getElementById(comment.id);\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n this.highlightedCommentId.set(comment.id);\n setTimeout(() => {\n this.highlightedCommentId.set(null);\n }, 1000);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.6\", type: AXMCommentComponent, isStandalone: true, selector: \"axm-comment\", inputs: { refrenceType: { classPropertyName: \"refrenceType\", publicName: \"refrenceType\", isSignal: true, isRequired: true, transformFunction: null }, refrenceId: { classPropertyName: \"refrenceId\", publicName: \"refrenceId\", isSignal: true, isRequired: true, transformFunction: null }, subject: { classPropertyName: \"subject\", publicName: \"subject\", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: \"wysiwygEditor\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"ax-size-full ax-flex ax-flex-col ax-justify-between ax-p-4 ax-overflow-hidden\\\">\\n <ax-comment-container class=\\\"ax-overflow-auto\\\">\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item\\n [id]=\\\"comment.id!\\\"\\n [replyCount]=\\\"comment.replyCount\\\"\\n [class.highlighted]=\\\"highlightedCommentId() === comment.id\\\"\\n [@fadeIn]\\n >\\n <axp-user-avatar #user [size]=\\\"48\\\" [userId]=\\\"comment.author.id\\\" ngProjectAs=\\\"'ax-avatar'\\\"></axp-user-avatar>\\n <ax-title>{{ user.firstName() + ' ' + user.lastName() }}</ax-title>\\n <ax-comment-date>{{ comment.createdAt | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n text=\\\"Edit\\\"\\n color=\\\"neutral\\\"\\n (click)=\\\"editMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment.id!)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"isLikedByUser(comment)\\\">\\n {{ getReactionsCount(comment) }}\\n </ax-comment-like>\\n <ax-comment-reply-text\\n (click)=\\\"replyMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\\\"\\n ></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\" [class.highlighted]=\\\"highlightedCommentId() === reply.id\\\" [@fadeIn]>\\n <axp-user-avatar\\n #user2\\n [size]=\\\"48\\\"\\n [userId]=\\\"reply.author.id\\\"\\n ngProjectAs=\\\"'ax-avatar'\\\"\\n ></axp-user-avatar>\\n <ax-title>{{ user2.firstName() + ' ' + user2.lastName() }}</ax-title>\\n <ax-comment-date>{{ reply.createdAt | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n text=\\\"Edit\\\"\\n color=\\\"neutral\\\"\\n (click)=\\\"editMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(reply.id!)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(reply)\\\" [liked]=\\\"isLikedByUser(reply)\\\">\\n {{ getReactionsCount(reply) }}\\n </ax-comment-like>\\n <ax-comment-reply-text\\n (click)=\\\"replyMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\\\"\\n ></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? activeReplyComment()?.userName : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment()\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%}ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}ax-wysiwyg-container .highlighted{background:var(--ax-color-primary-050)!important;border-radius:.25rem;transition:background 1s ease-in-out}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXWysiwygModule }, { kind: \"component\", type: i1.AXWysiwygContainerComponent, selector: \"ax-wysiwyg-container\", inputs: [\"look\", \"placeHolder\"], outputs: [\"onValueChanged\"] }, { kind: \"component\", type: i1.AXWysiwygViewComponent, selector: \"ax-wysiwyg-view\", inputs: [\"class\"] }, { kind: \"component\", type: i1.AXWysiwygAlignmentComponent, selector: \"ax-wysiwyg-alignment\" }, { kind: \"component\", type: i1.AXWysiwygColorsComponent, selector: \"ax-wysiwyg-colors\" }, { kind: \"component\", type: i1.AXWysiwygFontStyleComponent, selector: \"ax-wysiwyg-font-style\" }, { kind: \"component\", type: i1.AXWysiwygHistoryComponent, selector: \"ax-wysiwyg-history\" }, { kind: \"component\", type: i1.AXWysiwygListComponent, selector: \"ax-wysiwyg-list\" }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i2.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXCommentModule }, { kind: \"component\", type: i4.AXCommentViewComponent, selector: \"ax-comment-view\" }, { kind: \"component\", type: i4.AXCommentContainerComponent, selector: \"ax-comment-container\" }, { kind: \"component\", type: i4.AxCommentItemComponent, selector: \"ax-comment-item\", inputs: [\"replyCount\"] }, { kind: \"component\", type: i4.AXCommentLikeComponent, selector: \"ax-comment-like\", inputs: [\"liked\"], outputs: [\"likedChange\", \"onLiked\"] }, { kind: \"component\", type: i4.AXMenuOptionsComponent, selector: \"ax-comment-menu-options\" }, { kind: \"component\", type: i4.AXCommentReplyTextComponent, selector: \"ax-comment-reply-text\" }, { kind: \"component\", type: i4.AXCommentDateComponent, selector: \"ax-comment-date\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i5.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i5.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i5.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"ngmodule\", type: AXImageModule }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i6.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i7.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"pipe\", type: i8.AXFormatPipe, name: \"format\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i9.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i9.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"directive\", type: i9.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }, { kind: \"ngmodule\", type: AXToolBarModule }, { kind: \"component\", type: i10.AXToolBarComponent, selector: \"ax-toolbar\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i11.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i11.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"component\", type: i12.AXDropdownButtonComponent, selector: \"ax-dropdown-button\", inputs: [\"disabled\", \"size\", \"color\", \"look\", \"text\", \"type\", \"mode\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"lookChange\", \"colorChange\", \"disabledChange\"] }, { kind: \"component\", type: AXPUserAvatarComponent, selector: \"axp-user-avatar\", inputs: [\"size\", \"userId\"] }], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n ]),\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-comment', animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n ]),\n ], imports: [\n AXWysiwygModule,\n AXConversationModule,\n AXSkeletonModule,\n AXDecoratorModule,\n AXCommentModule,\n AXButtonModule,\n AXAvatarModule,\n AXImageModule,\n AXLoadingModule,\n AXDropdownModule,\n AXFormatModule,\n AsyncPipe,\n AXFormModule,\n AXToolBarModule,\n FormsModule,\n AXDropdownButtonModule,\n AXPUserAvatarComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"ax-size-full ax-flex ax-flex-col ax-justify-between ax-p-4 ax-overflow-hidden\\\">\\n <ax-comment-container class=\\\"ax-overflow-auto\\\">\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item\\n [id]=\\\"comment.id!\\\"\\n [replyCount]=\\\"comment.replyCount\\\"\\n [class.highlighted]=\\\"highlightedCommentId() === comment.id\\\"\\n [@fadeIn]\\n >\\n <axp-user-avatar #user [size]=\\\"48\\\" [userId]=\\\"comment.author.id\\\" ngProjectAs=\\\"'ax-avatar'\\\"></axp-user-avatar>\\n <ax-title>{{ user.firstName() + ' ' + user.lastName() }}</ax-title>\\n <ax-comment-date>{{ comment.createdAt | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n text=\\\"Edit\\\"\\n color=\\\"neutral\\\"\\n (click)=\\\"editMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment.id!)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"isLikedByUser(comment)\\\">\\n {{ getReactionsCount(comment) }}\\n </ax-comment-like>\\n <ax-comment-reply-text\\n (click)=\\\"replyMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\\\"\\n ></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\" [class.highlighted]=\\\"highlightedCommentId() === reply.id\\\" [@fadeIn]>\\n <axp-user-avatar\\n #user2\\n [size]=\\\"48\\\"\\n [userId]=\\\"reply.author.id\\\"\\n ngProjectAs=\\\"'ax-avatar'\\\"\\n ></axp-user-avatar>\\n <ax-title>{{ user2.firstName() + ' ' + user2.lastName() }}</ax-title>\\n <ax-comment-date>{{ reply.createdAt | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n text=\\\"Edit\\\"\\n color=\\\"neutral\\\"\\n (click)=\\\"editMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(reply.id!)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(reply)\\\" [liked]=\\\"isLikedByUser(reply)\\\">\\n {{ getReactionsCount(reply) }}\\n </ax-comment-like>\\n <ax-comment-reply-text\\n (click)=\\\"replyMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\\\"\\n ></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? activeReplyComment()?.userName : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment()\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%}ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}ax-wysiwyg-container .highlighted{background:var(--ax-color-primary-050)!important;border-radius:.25rem;transition:background 1s ease-in-out}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY29tbWVudC9jb21tZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jb21tZW50L2NvbW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUd0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0Is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QiwwRUF6Qlo7WUFDVixPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUNoQixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO29CQUNwRCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztpQkFDN0UsQ0FBQzthQUNILENBQUM7U0FDSDs7MkZBMkNVLG1CQUFtQjtrQkFyRC9CLFNBQVM7K0JBRUUsYUFBYSxjQUNYO3dCQUNWLE9BQU8sQ0FBQyxRQUFRLEVBQUU7NEJBQ2hCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7Z0NBQ3BELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzZCQUM3RSxDQUFDO3lCQUNILENBQUM7cUJBQ0gsV0FDUTt3QkFDUCxlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxzQkFBc0I7d0JBQ3RCLHNCQUFzQjtxQkFDdkIsbUJBc0JnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50LCBBWFd5c2l3eWdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvd3lzaXd5Zyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhTdHlsZUxvb2tUeXBlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhUb2FzdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9hc3QnO1xuaW1wb3J0IHsgQVhQVXNlclJlZmVyZW5jZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBWE1Db21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUNvbW1lbnQsIEFYTUNvbW1lbnRUaHJlYWQgfSBmcm9tICcuL2NvbW1lbnQudHlwZSc7XG5cbmltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDb21tZW50TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29udmVyc2F0aW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWEltYWdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2ltYWdlJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQVhUb29sQmFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2xiYXInO1xuaW1wb3J0IHsgQVhGb3JtYXRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUFVzZXJBdmF0YXJDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc2VsZWN0b3I6ICdheG0tY29tbWVudCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlSW4nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMHB4KScgfSksXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIEFYV3lzaXd5Z01vZHVsZSxcbiAgICBBWENvbnZlcnNhdGlvbk1vZHVsZSxcbiAgICBBWFNrZWxldG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYQ29tbWVudE1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRm9ybWF0TW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhUb29sQmFyTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhQVXNlckF2YXRhckNvbXBvbmVudCxcbiAgXSxcbiAgc3R5bGVzOiBgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gICAgYXgtd3lzaXd5Zy1jb250YWluZXIge1xuICAgICAgLmF4LWVkaXRvci1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgICAuYXgtZXJyb3ItbWVzc2FnZSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgICAgfVxuICAgICAgLmhpZ2hsaWdodGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXgtY29sb3ItcHJpbWFyeS0wNTApICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMXMgZWFzZS1pbi1vdXQ7XG4gICAgICB9XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ29tbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlZnJlbmNlVHlwZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVmcmVuY2VJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgc3ViamVjdCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICBwcm90ZWN0ZWQgaGFzQ29vbGRvd24gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgY29tbWVudENvbnRlbnQgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcHJvdGVjdGVkIGlzU3VibWl0dGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBpc1JlcGx5aW5nTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBpc0VkaXRpbmdNb2RlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICBwcm90ZWN0ZWQgZmFpbGVkSW1hZ2VJZHMgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgcHJvdGVjdGVkIGFjdGl2ZVJlcGx5Q29tbWVudCA9IHNpZ25hbDx1bmRlZmluZWQgfCAoQVhNQ29tbWVudCAmIHsgdXNlck5hbWU6IHN0cmluZyB9KT4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGFjdGl2ZUVkaXRDb21tZW50ID0gc2lnbmFsPHVuZGVmaW5lZCB8IChBWE1Db21tZW50ICYgeyB1c2VyTmFtZTogc3RyaW5nIH0pPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgaGlnaGxpZ2h0ZWRDb21tZW50SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIHd5c2l3eWdFZGl0b3IgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8QVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50PigndycpO1xuXG4gIHByaXZhdGUgY29tbWVudFNlcnZpY2UgPSBpbmplY3QoQVhNQ29tbWVudFNlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQVhEaWFsb2dTZXJ2aWNlKTtcbiAgc2FuaXRpemUgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByb3RlY3RlZCBjb21tZW50cyA9IHNpZ25hbDxBWE1Db21tZW50W10+KFtdKTtcbiAgcHJvdGVjdGVkIHRocmVhZCA9IHNpZ25hbDxBWE1Db21tZW50VGhyZWFkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmxvYWRDb21tZW50cygpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LCAyNTApO1xuICAgIH0pO1xuICAgIHRoaXMuY29tbWVudFNlcnZpY2UuY29tbWVudEFkZGVkJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGNvbW1lbnQpID0+IHtcbiAgICAgIGlmIChjb21tZW50LnJlcGx5SWQpIHtcbiAgICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNvbW1lbnRzLm1hcCgoYykgPT4ge1xuICAgICAgICAgICAgaWYgKGMuaWQgPT09IGNvbW1lbnQucmVwbHlJZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXdSZXBsaWVzID0gYy5yZXBsaWVzID8gWy4uLmMucmVwbGllcywgY29tbWVudF0gOiBbY29tbWVudF07XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLmMsIHJlcGxpZXM6IG5ld1JlcGxpZXMsIHJlcGx5Q291bnQ6IG5ld1JlcGxpZXMubGVuZ3RoIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbW1lbnRzLnVwZGF0ZSgoY29tbWVudHMpID0+IFsuLi5jb21tZW50cywgY29tbWVudF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY29tbWVudFNlcnZpY2UuY29tbWVudFVwZGF0ZWQkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgodXBkYXRlZENvbW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IChsaXN0OiBBWE1Db21tZW50W10pOiBBWE1Db21tZW50W10gPT4ge1xuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKGMpID0+IHtcbiAgICAgICAgICBpZiAoYy5pZCA9PT0gdXBkYXRlZENvbW1lbnQuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmMsIC4uLnVwZGF0ZWRDb21tZW50LCByZXBsaWVzOiB1cGRhdGVkQ29tbWVudC5yZXBsaWVzIHx8IGMucmVwbGllcyB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYy5yZXBsaWVzICYmIGMucmVwbGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5jLCByZXBsaWVzOiB1cGRhdGUoYy5yZXBsaWVzKSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzKSA9PiB1cGRhdGUoY29tbWVudHMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB3eXNpd3lnT3B0aW9ucyA9IHNpZ25hbDx7XG4gICAgbG9vazogQVhTdHlsZUxvb2tUeXBlO1xuICB9Pih7XG4gICAgbG9vazogJ3NvbGlkJyxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGF2YXRhckNvbmZpZyA9IHNpZ25hbDx7XG4gICAgY29sb3I6IHN0cmluZztcbiAgICBsb29rOiAnc2hhcnAnIHwgJ3NvZnQnIHwgJ3JvdW5kZWQnO1xuICAgIHR5cGU6IHN0cmluZztcbiAgfT4oe1xuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgbG9vazogJ3JvdW5kZWQnLFxuICAgIHR5cGU6ICdzb2xpZCcsXG4gIH0pO1xuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogQVhQVXNlclJlZmVyZW5jZSB8IG51bGwge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI7XG4gICAgcmV0dXJuIHVzZXIgPyB7IGlkOiB1c2VyLmlkLCB0eXBlOiAndXNlcicgfSA6IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNMaWtlZEJ5VXNlcihjb21tZW50OiBBWE1Db21tZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBpZiAoIXVzZXIpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKGNvbW1lbnQucmVhY3Rpb25zIHx8IFtdKS5zb21lKChyKSA9PiByLmF1dGhvci5pZCA9PT0gdXNlci5pZCAmJiByLnR5cGUgPT09ICdsaWtlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UmVhY3Rpb25zQ291bnQoY29tbWVudDogQVhNQ29tbWVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChjb21tZW50LnJlYWN0aW9ucyB8fCBbXSkuZmlsdGVyKChyKSA9PiByLnR5cGUgPT09ICdsaWtlJykubGVuZ3RoO1xuICB9XG5cbiAgdmFsaWRhdGVDb250ZW50ID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBpZiAoIWNvbnRlbnQgfHwgY29udGVudCA9PT0gJzxwPjxicj48L3A+Jykge1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogJ2NhbGxiYWNrJyxcbiAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgIG1lc3NhZ2U6IGlzVmFsaWQgPyAnJyA6ICdQbGVhc2UgZmlsbCB0aGUgY29udGVudCcsXG4gICAgICB2YWx1ZTogY29udGVudCxcbiAgICB9O1xuICB9O1xuXG4gIHNhbml0aXplSHRtbChodG1sQ29udGVudDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFodG1sQ29udGVudCkgcmV0dXJuIHRoaXMuc2FuaXRpemUuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoJycpO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWxDb250ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUltYWdlRXJyb3IoaW1hZ2VJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mYWlsZWRJbWFnZUlkcy51cGRhdGUoKGlkcykgPT4gWy4uLmlkcywgaW1hZ2VJZF0pO1xuICB9XG5cbiAgY2hlY2tJbWFnZUV4aXN0cyhpbWFnZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZmFpbGVkSW1hZ2VJZHMoKS5pbmNsdWRlcyhpbWFnZUlkKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRDb21tZW50cygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdGhyZWFkID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRUaHJlYWQoXG4gICAgICAgIHsgdHlwZTogdGhpcy5yZWZyZW5jZVR5cGUoKSwgaWQ6IHRoaXMucmVmcmVuY2VJZCgpIH0sXG4gICAgICAgIHRoaXMuc3ViamVjdCgpLFxuICAgICAgKTtcbiAgICAgIGlmICh0aHJlYWQpIHtcbiAgICAgICAgdGhpcy50aHJlYWQuc2V0KHRocmVhZCk7XG4gICAgICAgIHRoaXMuY29tbWVudHMuc2V0KHRocmVhZC5jb21tZW50cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbW1lbnRzLnNldChbXSk7XG4gICAgICAgIHRoaXMudGhyZWFkLnNldCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBjb21tZW50czonLCBlcnJvcik7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29udGVudDogJ0ZhaWxlZCB0byBsb2FkIGNvbW1lbnRzLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21tZW50cy5zZXQoW10pO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRNZXNzYWdlKGNvbW1lbnQ6IEFYTUNvbW1lbnQsIHJlcGx5PzogQVhNQ29tbWVudCwgdXNlck5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldCh7IC4uLmNvbW1lbnQsIHVzZXJOYW1lOiB1c2VyTmFtZSB8fCAnJyB9KTtcbiAgICBjb25zdCBjb250ZW50VG9FZGl0ID0gcmVwbHkgPyByZXBseS5tZXNzYWdlPy5jb250ZW50IDogY29tbWVudC5tZXNzYWdlPy5jb250ZW50O1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KGNvbnRlbnRUb0VkaXQgfHwgJycpO1xuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgcmVwbHlNZXNzYWdlKGNvbW1lbnQ6IEFYTUNvbW1lbnQsIHJlcGx5PzogQVhNQ29tbWVudCwgdXNlck5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzRWRpdGluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KHRydWUpO1xuICAgIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50LnNldCh7IC4uLmNvbW1lbnQsIHVzZXJOYW1lOiB1c2VyTmFtZSB8fCAnJyB9KTtcbiAgICBpZiAocmVwbHkpIHtcbiAgICAgIGNvbnN0IGF1dGhvciA9IChyZXBseS5hdXRob3IgYXMgYW55KS5mdWxsTmFtZSB8fCByZXBseS5hdXRob3IuaWQ7XG4gICAgICBjb25zdCBtZW50aW9uID0gYDxhIGRhdGEtaWQ9XCIke3JlcGx5LmlkfVwiPkAke2F1dGhvcn08L2E+IGA7XG4gICAgICB0aGlzLmNvbW1lbnRDb250ZW50LnNldChtZW50aW9uKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9IG1lbnRpb247XG4gICAgICB0aGlzLnd5c2l3eWdFZGl0b3IoKT8uZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy53eXNpd3lnRWRpdG9yKCkuZ2V0SG9zdEVsZW1lbnQoKS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb21tZW50KGNvbW1lbnRJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xuICAgICAgaWNvbjogJ2ZhLXJlZ3VsYXIgZmEtd2FybmluZycsXG4gICAgICBjb250ZW50OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbW1lbnQ/JyxcbiAgICAgIHRpdGxlOiAnRGVsZXRlIENvbW1lbnQnLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGUuaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS50ZXh0ID0gJ0RlbGV0aW5nLi4uJztcbiAgICAgICAgICAgIGUuc291cmNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KGNvbW1lbnRJZCk7XG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlTWVzc2FnZUJ5SWQoY29tbWVudElkKTtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgY29udGVudDogJ0NvbW1lbnQgZGVsZXRlZCBzdWNjZXNzZnVsbHkuJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmdNb2RlKCkgJiYgdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpPy5pZCA9PT0gY29tbWVudElkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFJlcGx5RWRpdFN0YXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gZXJyb3IgOiAnRmFpbGVkIHRvIGRlbGV0ZSBjb21tZW50IScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgIGF1dG9mb2N1czogdHJ1ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICByZXNldFJlcGx5RWRpdFN0YXRlKCkge1xuICAgIHRoaXMuaXNFZGl0aW5nTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc1JlcGx5aW5nTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KCcnKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1lZGl0b3InKVswXS5pbm5lckhUTUwgPSAnJztcbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZUxpa2UoY29tbWVudDogQVhNQ29tbWVudCkge1xuICAgIGNvbnN0IGlzTGlrZWQgPSB0aGlzLmlzTGlrZWRCeVVzZXIoY29tbWVudCk7XG4gICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQsICFpc0xpa2VkKTtcbiAgICB0cnkge1xuICAgICAgaWYgKGlzTGlrZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51bmxpa2VDb21tZW50KGNvbW1lbnQuaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5saWtlQ29tbWVudChjb21tZW50LmlkKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHRvZ2dsZSBsaWtlOicsIGVycm9yKTtcbiAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkLCBpc0xpa2VkKTsgLy8gUmV2ZXJ0IG9wdGltaXN0aWMgdXBkYXRlXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnRJZDogc3RyaW5nLCB3aWxsQmVMaWtlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IGZpbmRBbmRUb2dnbGUgPSAoY29tbWVudHM6IEFYTUNvbW1lbnRbXSk6IEFYTUNvbW1lbnRbXSA9PiB7XG4gICAgICByZXR1cm4gY29tbWVudHMubWFwKChjKSA9PiB7XG4gICAgICAgIGlmIChjLmlkID09PSBjb21tZW50SWQpIHtcbiAgICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIGM7XG4gICAgICAgICAgbGV0IHJlYWN0aW9ucyA9IGMucmVhY3Rpb25zIHx8IFtdO1xuICAgICAgICAgIGlmICh3aWxsQmVMaWtlZCkge1xuICAgICAgICAgICAgcmVhY3Rpb25zLnB1c2goeyBhdXRob3I6IHVzZXIsIHR5cGU6ICdsaWtlJyB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVhY3Rpb25zID0gcmVhY3Rpb25zLmZpbHRlcigocikgPT4gci5hdXRob3IuaWQgIT09IHVzZXIuaWQgfHwgci50eXBlICE9PSAnbGlrZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyAuLi5jLCByZWFjdGlvbnMgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYy5yZXBsaWVzICYmIGMucmVwbGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYy5yZXBsaWVzID0gZmluZEFuZFRvZ2dsZShjLnJlcGxpZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLmNvbW1lbnRzLnVwZGF0ZSgoY29tbWVudHMpID0+IGZpbmRBbmRUb2dnbGUoY29tbWVudHMpKTtcbiAgfVxuICBwcml2YXRlIHJlbW92ZU1lc3NhZ2VCeUlkKGNvbW1lbnRJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZmlsdGVyT3V0ID0gKGNvbW1lbnRzOiBBWE1Db21tZW50W10pOiBBWE1Db21tZW50W10gPT4ge1xuICAgICAgcmV0dXJuIGNvbW1lbnRzXG4gICAgICAgIC5maWx0ZXIoKGMpID0+IGMuaWQgIT09IGNvbW1lbnRJZClcbiAgICAgICAgLm1hcCgoYykgPT4ge1xuICAgICAgICAgIGlmIChjLnJlcGxpZXMgJiYgYy5yZXBsaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGMucmVwbGllcyA9IGZpbHRlck91dChjLnJlcGxpZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLmNvbW1lbnRzLnVwZGF0ZSgoY29tbWVudHMpID0+IGZpbHRlck91dChjb21tZW50cykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHN1Ym1pdENvbW1lbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlQ29udGVudCh0aGlzLmNvbW1lbnRDb250ZW50KCkpLnJlc3VsdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldCh0cnVlKTtcblxuICAgIGNvbnNvbGUubG9nKHRoaXMuY29tbWVudENvbnRlbnQoKSk7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjdXJyZW50VGhyZWFkID0gdGhpcy50aHJlYWQoKTtcbiAgICAgIGlmICghY3VycmVudFRocmVhZCkge1xuICAgICAgICBjdXJyZW50VGhyZWFkID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5jcmVhdGVUaHJlYWQoXG4gICAgICAgICAgeyB0eXBlOiB0aGlzLnJlZnJlbmNlVHlwZSgpLCBpZDogdGhpcy5yZWZyZW5jZUlkKCkgfSxcbiAgICAgICAgICB0aGlzLnN1YmplY3QoKSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aHJlYWQuc2V0KGN1cnJlbnRUaHJlYWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0VkaXRpbmdNb2RlKCkgJiYgdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpPy5pZCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmVkaXRDb21tZW50KHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKSEuaWQsIHRoaXMuY29tbWVudENvbnRlbnQoKSk7XG4gICAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmlzRWRpdGluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuYWRkQ29tbWVudChjdXJyZW50VGhyZWFkLmlkLCB0aGlzLmNvbW1lbnRDb250ZW50KCksIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50KCk/LmlkKTtcbiAgICAgICAgdGhpcy5oYXNDb29sZG93bi5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbW1lbnRDb250ZW50LnNldCgnJyk7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1lZGl0b3InKVswXS5pbm5lckhUTUwgPSAnJztcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KGZhbHNlKTtcbiAgICAgIH0sIDEwMDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJtaXR0aW5nIGNvbW1lbnQ6JywgZXJyb3IpO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGNvbnRlbnQ6IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBlcnJvciA6ICdGYWlsZWQgdG8gc3VibWl0IGNvbW1lbnQuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsTWFpbigpIHtcbiAgICBjb25zdCBjb21tZW50ID0gdGhpcy5pc1JlcGx5aW5nTW9kZSgpID8gdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQoKSA6IHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKTtcbiAgICBpZiAoY29tbWVudCAmJiBjb21tZW50LmlkKSB7XG4gICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbW1lbnQuaWQpO1xuICAgICAgaWYgKGVsKSB7XG4gICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRDb21tZW50SWQuc2V0KGNvbW1lbnQuaWQpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmhpZ2hsaWdodGVkQ29tbWVudElkLnNldChudWxsKTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtc2l6ZS1mdWxsIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LXAtNCBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgPGF4LWNvbW1lbnQtY29udGFpbmVyIGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1weS0xMiBheC1iZy1saWdodGVzdCBheC1weC01XCI+XG4gICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LW1pbi13LTE2IGF4LWgtMTYgYXgtcm91bmRlZC1mdWxsIGF4LW1lLTRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC13LWZ1bGxcIj5cbiAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC02IGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctZnVsbCBheC1oLTIgYXgtcm91bmRlZC1mdWxsXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0yIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy04LzEyIGF4LWgtMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKCFpc0xvYWRpbmcoKSAmJiBjb21tZW50cygpLmxlbmd0aCA+IDApIHtcbiAgICAgIDxheC1jb21tZW50LXZpZXcgY2xhc3M9XCJheC1iZy1saWdodGVzdFwiPlxuICAgICAgICBAZm9yIChjb21tZW50IG9mIGNvbW1lbnRzKCk7IHRyYWNrIGNvbW1lbnQuaWQpIHtcbiAgICAgICAgICA8YXgtY29tbWVudC1pdGVtXG4gICAgICAgICAgICBbaWRdPVwiY29tbWVudC5pZCFcIlxuICAgICAgICAgICAgW3JlcGx5Q291bnRdPVwiY29tbWVudC5yZXBseUNvdW50XCJcbiAgICAgICAgICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJoaWdobGlnaHRlZENvbW1lbnRJZCgpID09PSBjb21tZW50LmlkXCJcbiAgICAgICAgICAgIFtAZmFkZUluXVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheHAtdXNlci1hdmF0YXIgI3VzZXIgW3NpemVdPVwiNDhcIiBbdXNlcklkXT1cImNvbW1lbnQuYXV0aG9yLmlkXCIgbmdQcm9qZWN0QXM9XCInYXgtYXZhdGFyJ1wiPjwvYXhwLXVzZXItYXZhdGFyPlxuICAgICAgICAgICAgPGF4LXRpdGxlPnt7IHVzZXIuZmlyc3ROYW1lKCkgKyAnICcgKyB1c2VyLmxhc3ROYW1lKCkgfX08L2F4LXRpdGxlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtZGF0ZT57eyBjb21tZW50LmNyZWF0ZWRBdCB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19IDwvYXgtY29tbWVudC1kYXRlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cIm5ldXRyYWxcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tbW9yZS1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgdGV4dD1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoY29tbWVudCwgdW5kZWZpbmVkLCB1c2VyLmZpcnN0TmFtZSgpICsgJyAnICsgdXNlci5sYXN0TmFtZSgpKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWVkaXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cblxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJEZWxldGVcIiBjb2xvcj1cImRhbmdlclwiIChjbGljayk9XCJkZWxldGVDb21tZW50KGNvbW1lbnQuaWQhKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS10cmFzaC1jYW5cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgPGF4LWNvbnRlbnQgW2lubmVySFRNTF09XCJzYW5pdGl6ZUh0bWwoY29tbWVudC5tZXNzYWdlLmNvbnRlbnQpXCI+PC9heC1jb250ZW50PlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShjb21tZW50KVwiIFtsaWtlZF09XCJpc0xpa2VkQnlVc2VyKGNvbW1lbnQpXCI+XG4gICAgICAgICAgICAgIHt7IGdldFJlYWN0aW9uc0NvdW50KGNvbW1lbnQpIH19XG4gICAgICAgICAgICA8L2F4LWNvbW1lbnQtbGlrZT5cbiAgICAgICAgICAgIDxheC1jb21tZW50LXJlcGx5LXRleHRcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcGx5TWVzc2FnZShjb21tZW50LCB1bmRlZmluZWQsIHVzZXIuZmlyc3ROYW1lKCkgKyAnICcgKyB1c2VyLmxhc3ROYW1lKCkpXCJcbiAgICAgICAgICAgID48L2F4LWNvbW1lbnQtcmVwbHktdGV4dD5cbiAgICAgICAgICAgIEBmb3IgKHJlcGx5IG9mIGNvbW1lbnQucmVwbGllczsgdHJhY2sgcmVwbHkuaWQpIHtcbiAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtaXRlbSBbaWRdPVwicmVwbHkuaWRcIiBbY2xhc3MuaGlnaGxpZ2h0ZWRdPVwiaGlnaGxpZ2h0ZWRDb21tZW50SWQoKSA9PT0gcmVwbHkuaWRcIiBbQGZhZGVJbl0+XG4gICAgICAgICAgICAgICAgPGF4cC11c2VyLWF2YXRhclxuICAgICAgICAgICAgICAgICAgI3VzZXIyXG4gICAgICAgICAgICAgICAgICBbc2l6ZV09XCI0OFwiXG4gICAgICAgICAgICAgICAgICBbdXNlcklkXT1cInJlcGx5LmF1dGhvci5pZFwiXG4gICAgICAgICAgICAgICAgICBuZ1Byb2plY3RBcz1cIidheC1hdmF0YXInXCJcbiAgICAgICAgICAgICAgICA+PC9heHAtdXNlci1hdmF0YXI+XG4gICAgICAgICAgICAgICAgPGF4LXRpdGxlPnt7IHVzZXIyLmZpcnN0TmFtZSgpICsgJyAnICsgdXNlcjIubGFzdE5hbWUoKSB9fTwvYXgtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtZGF0ZT57eyByZXBseS5jcmVhdGVkQXQgfCBmb3JtYXQ6ICd0aW1lbGVmdCcgfCBhc3luYyB9fSA8L2F4LWNvbW1lbnQtZGF0ZT5cbiAgICAgICAgICAgICAgICA8YXgtY29tbWVudC1tZW51LW9wdGlvbnM+XG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cIm5ldXRyYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1zb2xpZCBheC1pY29uLW1vcmUtaG9yaXpvbnRhbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0TWVzc2FnZShjb21tZW50LCByZXBseSwgdXNlcjIuZmlyc3ROYW1lKCkgKyAnICcgKyB1c2VyMi5sYXN0TmFtZSgpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWVkaXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRGVsZXRlXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiZGVsZXRlQ29tbWVudChyZXBseS5pZCEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICAgIDxheC1jb250ZW50IFtpbm5lckhUTUxdPVwic2FuaXRpemVIdG1sKHJlcGx5Lm1lc3NhZ2UuY29udGVudClcIj48L2F4LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShyZXBseSlcIiBbbGlrZWRdPVwiaXNMaWtlZEJ5VXNlcihyZXBseSlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldFJlYWN0aW9uc0NvdW50KHJlcGx5KSB9fVxuICAgICAgICAgICAgICAgIDwvYXgtY29tbWVudC1saWtlPlxuICAgICAgICAgICAgICAgIDxheC1jb21tZW50LXJlcGx5LXRleHRcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXBseU1lc3NhZ2UoY29tbWVudCwgcmVwbHksIHVzZXIyLmZpcnN0TmFtZSgpICsgJyAnICsgdXNlcjIubGFzdE5hbWUoKSlcIlxuICAgICAgICAgICAgICAgID48L2F4LWNvbW1lbnQtcmVwbHktdGV4dD5cbiAgICAgICAgICAgICAgPC9heC1jb21tZW50LWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9heC1jb21tZW50LWl0ZW0+XG4gICAgICAgIH1cbiAgICAgIDwvYXgtY29tbWVudC12aWV3PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgYXgtanVzdGlmeS1jZW50ZXIgYXgtaXRlbXMtY2VudGVyIGF4LXAtMTBcIj5cbiAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICBjbGFzcz1cImF4LW14LWF1dG9cIlxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICB3aWR0aD1cIjE1NFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCIxNjFcIlxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNTQgMTYxXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTAuMDYxNjQ1NSA4NC40MjY4QzAuMDYxNjQ1NSA0Mi4wMjEzIDM0LjQzNSA3LjgzNzY1IDc2LjY1MDcgNy44Mzc2NUMxMTguODAzIDcuODM3NjUgMTUzLjIyNCA0Mi4wMDU1IDE1My4yMjQgODQuNDI2OEMxNTMuMjI0IDEwMi40MiAxNDcuMDI2IDExOC45NzQgMTM2LjYyMiAxMzIuMDM0QzEyMi4yODIgMTUwLjEzOCAxMDAuMzY3IDE2MSA3Ni42NTA3IDE2MUM1Mi43NzU5IDE2MSAzMC45ODgyIDE1MC4wNTkgMTYuNjYzMyAxMzIuMDM0QzYuMjU5NjEgMTE4Ljk3NCAwLjA2MTY0NTUgMTAyLjQyIDAuMDYxNjQ1NSA4NC40MjY4WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjRUVGMkZGXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTk2LjgxODkgMC42MzI0OThMOTYuODE4OSAwLjYzMjM4NEw5Ni44MDgzIDAuNjMwOTU0Qzk2LjIwMzQgMC41NDk1ODEgOTUuNTkzMSAwLjUgOTQuOTc4NyAwLjVIMjkuMzM4QzIyLjcxMTIgMC41IDE3LjMzOTQgNS44NDQ1NSAxNy4zMzk0IDEyLjQ0NzNWMTQyLjcxNUMxNy4zMzk0IDE0OS4zMTggMjIuNzExMiAxNTQuNjYyIDI5LjMzOCAxNTQuNjYySDEyMy45NDhDMTMwLjU5MSAxNTQuNjYyIDEzNS45NDYgMTQ5LjMxNyAxMzUuOTQ2IDE0Mi43MTVWMzguOTMwOUMxMzUuOTQ2IDM4LjAyNDQgMTM1Ljg0NyAzNy4xMzM0IDEzNS42NDggMzYuMjU4NkwxMzUuNjQ4IDM2LjI1ODRDMTM1LjExNyAzMy45MzA5IDEzMy44NzQgMzEuNzY4NiAxMzIuMDY2IDMwLjEzMzNDMTMyLjA2NiAzMC4xMzMxIDEzMi4wNjUgMzAuMTMyOSAxMzIuMDY1IDMwLjEzMjdMMTAzLjA2OCAzLjY1MjAzQzEwMy4wNjggMy42NTE5IDEwMy4wNjcgMy42NTE3NyAxMDMuMDY3IDMuNjUxNjRDMTAxLjMxMSAyLjAzNTI2IDk5LjEzOTYgMC45OTU1NTIgOTYuODE4OSAwLjYzMjQ5OFpcIlxuICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjRTVFN0VCXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZWxsaXBzZSBjeD1cIjgwLjA2MThcIiBjeT1cIjgxXCIgcng9XCIyOC4wMzQyXCIgcnk9XCIyOC4wMzQyXCIgZmlsbD1cIiNFRUYyRkZcIiAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk05OS4yMzkzIDYxLjMwNjFMOTkuMjM5MSA2MS4zMDU4Qzg4LjQ5OCA1MC41ODA4IDcxLjEwOTIgNTAuNTgwNCA2MC4zODM1IDYxLjMwNjFDNDkuNjQyMyA3Mi4wMzE2IDQ5LjY0MjIgODkuNDM2MSA2MC4zODMyIDEwMC4xNjJDNzEuMTA5IDExMC45MDMgODguNDk4MiAxMTAuOTAzIDk5LjIzOTMgMTAwLjE2MkMxMDkuOTY1IDg5LjQzNjMgMTA5Ljk2NSA3Mi4wMzE3IDk5LjIzOTMgNjEuMzA2MVpNMTA1Ljg2MyA1NC42ODMyQzEyMC4yNDkgNjkuMDY5NSAxMjAuMjQ5IDkyLjM5ODUgMTA1Ljg2MyAxMDYuNzg1QzkxLjQ2MDUgMTIxLjE3MSA2OC4xNDY4IDEyMS4xNzEgNTMuNzQ0NiAxMDYuNzg1QzM5LjM1ODIgOTIuMzk4NyAzOS4zNTgyIDY5LjA2OTMgNTMuNzQ0NiA1NC42ODNDNjguMTQ2OCA0MC4yOTY1IDkxLjQ2MDUgNDAuMjk2NiAxMDUuODYzIDU0LjY4MzJaXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiI0U1RTdFQlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk0xMTAuNzgyIDExOS4yNjdMMTAyLjAxNiAxMTAuNDkyQzEwNC44ODggMTA4LjI2NyAxMDcuNDc2IDEwNS42NTEgMTA5LjU2NCAxMDIuOTU1TDExOC4zMjkgMTExLjcyOUwxMTAuNzgyIDExOS4yNjdaXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiI0U1RTdFQlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk0xMzkuMTIyIDEyNS43ODFMMTM5LjEyMiAxMjUuNzhMMTIzLjMxMyAxMDkuOTg4QzEyMy4zMTMgMTA5Ljk4NyAxMjMuMzEzIDEwOS45ODcgMTIzLjMxMiAxMDkuOTg2QzEyMS45OTYgMTA4LjY1MyAxMTkuODQ5IDEwOC42NTcgMTE4LjUyMSAxMDkuOTg1TDExOC44NzEgMTEwLjMzNUwxMTguNTIxIDEwOS45ODVMMTA5LjA0NyAxMTkuNDU5QzEwNy43MzEgMTIwLjc3NSAxMDcuNzM1IDEyMi45MTggMTA5LjA0NCAxMjQuMjQ3TDEwOS4wNDcgMTI0LjI0OUwxMjQuODU4IDE0MC4wNkMxMjguNzg5IDE0My45OTIgMTM1LjE5MSAxNDMuOTkyIDEzOS4xMjIgMTQwLjA2QzE0My4wNjkgMTM2LjExMyAxNDMuMDY5IDEyOS43MjggMTM5LjEyMiAxMjUuNzgxWlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjQTVCNEZDXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiIzgxOENGOFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk04My4xODUgODcuMjI4NUM4Mi41Mzg3IDg3LjIyODUgODIuMDAyNyA4Ni42OTI2IDgyLjAwMjcgODYuMDMwNUM4Mi4wMDI3IDgzLjM4MjEgNzcuOTk4NyA4My4zODIxIDc3Ljk5ODcgODYuMDMwNUM3Ny45OTg3IDg2LjY5MjYgNzcuNDYyNyA4Ny4yMjg1IDc2LjgwMDYgODcuMjI4NUM3Ni4xNTQzIDg3LjIyODUgNzUuNjE4MyA4Ni42OTI2IDc1LjYxODMgODYuMDMwNUM3NS42MTgzIDgwLjIyOTQgODQuMzgzMSA4MC4yNDUxIDg0LjM4MzEgODYuMDMwNUM4NC4zODMxIDg2LjY5MjYgODMuODQ3MSA4Ny4yMjg1IDgzLjE4NSA4Ny4yMjg1WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjNEY0NkU1XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTkzLjM1MjggNzcuMDkyNkg4OC40MDNDODcuNzQwOSA3Ny4wOTI2IDg3LjIwNDkgNzYuNTU2NyA4Ny4yMDQ5IDc1Ljg5NDZDODcuMjA0OSA3NS4yNDgzIDg3Ljc0MDkgNzQuNzEyMyA4OC40MDMgNzQuNzEyM0g5My4zNTI4Qzk0LjAxNDkgNzQuNzEyMyA5NC41NTA5IDc1LjI0ODMgOTQuNTUwOSA3NS44OTQ2Qzk0LjU1MDkgNzYuNTU2NyA5NC4wMTQ5IDc3LjA5MjYgOTMuMzUyOCA3Ny4wOTI2WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjNEY0NkU1XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTcxLjU5ODcgNzcuMDkyNUg2Ni42NDg4QzY1Ljk4NjcgNzcuMDkyNSA2NS40NTA3IDc2LjU1NjUgNjUuNDUwNyA3NS44OTQ1QzY1LjQ1MDcgNzUuMjQ4MSA2NS45ODY3IDc0LjcxMjIgNjYuNjQ4OCA3NC43MTIySDcxLjU5ODdDNzIuMjQ1IDc0LjcxMjIgNzIuNzgxIDc1LjI0ODEgNzIuNzgxIDc1Ljg5NDVDNzIuNzgxIDc2LjU1NjUgNzIuMjQ1IDc3LjA5MjUgNzEuNTk4NyA3Ny4wOTI1WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjNEY0NkU1XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMzguMzUyMlwiIHk9XCIyMS41MTI4XCIgd2lkdGg9XCI0MS4wMjU2XCIgaGVpZ2h0PVwiMi43MzUwNFwiIHJ4PVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjEzMy42NVwiIHdpZHRoPVwiNTQuNzAwOVwiIGhlaWdodD1cIjUuNDcwMDlcIiByeD1cIjIuNzM1MDRcIiBmaWxsPVwiI0E1QjRGQ1wiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMzguMzUyMlwiIHk9XCIyOS43MTc5XCIgd2lkdGg9XCIxMy42NzUyXCIgaGVpZ2h0PVwiMi43MzUwNFwiIHJ4PVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI1Ni4xM1wiIGN5PVwiMzEuMDg1NFwiIHI9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjYxLjYwMDFcIiBjeT1cIjMxLjA4NTRcIiByPVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI2Ny4wNzAyXCIgY3k9XCIzMS4wODU0XCIgcj1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cImF4LXRleHQtY2VudGVyIGF4LXRleHQtbmV1dHJhbC02MDAgYXgtZm9udC1zZW1pYm9sZCBheC1sZWFkaW5nLWxvb3NlIGF4LXBiLTJcIj5cbiAgICAgICAgICAgICAgVGhlcmUgaXMgbm8gQ29tbWVudCFcbiAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2F4LWNvbW1lbnQtY29udGFpbmVyPlxuICA8YXgtZm9ybT5cbiAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgIDxkaXY+XG4gICAgICAgIEBpZiAoaXNSZXBseWluZ01vZGUoKSB8fCBpc0VkaXRpbmdNb2RlKCkpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LXJvdW5kZWQtYi1ub25lIGF4LWJvcmRlciBheC1ib3JkZXItYi0wIGF4LXJvdW5kZWQtbGcgYXgtcHgtNiBheC1weS0zIGF4LXctZnVsbCBheC1pdGVtcy1jZW50ZXIgYXgtb3ZlcmZsb3ctaGlkZGVuIGF4LXRleHQtc20gYXgtbGVhZGluZy1ub25lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzY3JvbGxNYWluKClcIiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1zdGFydCBheC1pdGVtcy1jZW50ZXIgYXgtY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXNSZXBseWluZ01vZGUoKSA/ICdmYS1yZXBseScgOiAnZmEtcGVuJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBheC10ZXh0LXByaW1hcnktNTAwIGRhcms6YXgtdGV4dC1wcmltYXJ5LTMwMCBheC10ZXh0LTJ4bCBheC1tZS00XCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC1qdXN0aWZ5LWJldHdlZW4gYXgtYWxpZ24tbWlkZGxlIGF4LWxlYWRpbmctNCBheC1vdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LXByaW1hcnktNTAwIGRhcms6YXgtdGV4dC1wcmltYXJ5LTMwMFwiPlxuICAgICAgICAgICAgICAgICAge3sgaXNSZXBseWluZ01vZGUoKSA/ICdSZXBseSB0byAnIDogJ0VkaXQgTWVzc2FnZScgfX1cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGlzUmVwbHlpbmdNb2RlKCkgPyBhY3RpdmVSZXBseUNvbW1lbnQoKT8udXNlck5hbWUgOiAnJyB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgIGlzUmVwbHlpbmdNb2RlKClcbiAgICAgICAgICAgICAgICAgICAgICA/IHNhbml0aXplSHRtbChhY3RpdmVSZXBseUNvbW1lbnQoKT8ubWVzc2FnZT8uY29udGVudCA/PyAnJylcbiAgICAgICAgICAgICAgICAgICAgICA6IHNhbml0aXplSHRtbChhY3RpdmVFZGl0Q29tbWVudCgpPy5tZXNzYWdlPy5jb250ZW50ID8/ICcnKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PjxpIChjbGljayk9XCJyZXNldFJlcGx5RWRpdFN0YXRlKClcIiBjbGFzcz1cImZhLXNvbGlkIGF4LXRleHQtMnhsIGZhLXhtYXJrIGF4LWN1cnNvci1wb2ludGVyXCI+PC9pPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxheC13eXNpd3lnLWNvbnRhaW5lciAjdyBbbG9va109XCJ3eXNpd3lnT3B0aW9ucygpLmxvb2tcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRDb250ZW50XCI+XG4gICAgICAgICAgPGF4LXd5c2l3eWctdmlldyBjbGFzcz1cImF4LW1pbi1oLTI4XCI+PC9heC13eXNpd3lnLXZpZXc+XG4gICAgICAgICAgPGF4LXRvb2xiYXI+XG4gICAgICAgICAgICA8YXgtY29udGVudD5cbiAgICAgICAgICAgICAgPGF4LXd5c2l3eWctaGlzdG9yeT48L2F4LXd5c2l3eWctaGlzdG9yeT5cbiAgICAgICAgICAgICAgPGF4LXd5c2l3eWctZm9udC1zdHlsZT48L2F4LXd5c2l3eWctZm9udC1zdHlsZT5cbiAgICAgICAgICAgICAgPGF4LXd5c2l3eWctY29sb3JzPjwvYXgtd3lzaXd5Zy1jb2xvcnM+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWxpc3Q+PC9heC13eXNpd3lnLWxpc3Q+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWFsaWdubWVudD48L2F4LXd5c2l3eWctYWxpZ25tZW50PlxuICAgICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgPGF4LWRyb3Bkb3duLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJoYXNDb29sZG93bigpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIG1vZGU9XCJzcGxpdFwiXG4gICAgICAgICAgICAgICAgdGV4dD1cIlNlbmRcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInN1Ym1pdENvbW1lbnQoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGlzU3VibWl0dGluZygpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIChjbGljayk9XCJzdWJtaXRDb21tZW50KClcIiB0ZXh0PVwiU2VuZCBQcml2YXRlIC4uLlwiIG5hbWU9XCJwcml2YXRlXCIgZGF0YT1cInByaXZhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtcmVndWxhciBmYS11c2VyLXNlY3JldFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICA8L2F4LXRvb2xiYXI+XG4gICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSBydWxlPVwiY2FsbGJhY2tcIiBbb3B0aW9uc109XCJ7IHZhbGlkYXRlOiB2YWxpZGF0ZUNvbnRlbnQgfVwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICA8L2F4LXd5c2l3eWctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9heC1mb3JtLWZpZWxkPlxuICA8L2F4LWZvcm0+XG48L2Rpdj5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { Component, ViewEncapsulation, input } from '@angular/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXMCommentComponent } from '../comment.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/button\";\nimport * as i4 from \"@acorex/core/translation\";\nexport class AXMCommentPopupComponent extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.refrenceType = input.required();\n this.refrenceId = input.required();\n this.subject = input.required();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.6\", type: AXMCommentPopupComponent, isStandalone: true, selector: \"axm-comment-popup\", inputs: { refrenceType: { classPropertyName: \"refrenceType\", publicName: \"refrenceType\", isSignal: true, isRequired: true, transformFunction: null }, refrenceId: { classPropertyName: \"refrenceId\", publicName: \"refrenceId\", isSignal: true, isRequired: true, transformFunction: null }, subject: { classPropertyName: \"subject\", publicName: \"subject\", isSignal: true, isRequired: true, transformFunction: null } }, providers: [], usesInheritance: true, ngImport: i0, template: \"<ax-content>\\n <div class=\\\"ax-p-6 ax-min-h-[30vh] ax-overflow-y-auto\\\">\\n <axm-comment [refrenceType]=\\\"refrenceType()\\\" [refrenceId]=\\\"refrenceId()\\\" [subject]=\\\"subject()\\\"></axm-comment>\\n </div>\\n</ax-content>\\n<ax-footer>\\n <ax-prefix></ax-prefix>\\n <ax-suffix>\\n <ax-button [text]=\\\"'close' | translate | async\\\" look=\\\"solid\\\" color=\\\"primary\\\" (onClick)=\\\"close()\\\"> </ax-button>\\n </ax-suffix>\\n</ax-footer>\\n\", dependencies: [{ kind: \"ngmodule\", type: \n // Angular\n CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: \n // ACoreX\n AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }, { kind: \"component\", type: \n // Comment\n AXMCommentComponent, selector: \"axm-comment\", inputs: [\"refrenceType\", \"refrenceId\", \"subject\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentPopupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-comment-popup', standalone: true, imports: [\n // Angular\n CommonModule,\n // ACoreX\n AXDecoratorModule,\n AXButtonModule,\n AXTranslationModule,\n // Comment\n AXMCommentComponent,\n ], encapsulation: ViewEncapsulation.None, providers: [], template: \"<ax-content>\\n <div class=\\\"ax-p-6 ax-min-h-[30vh] ax-overflow-y-auto\\\">\\n <axm-comment [refrenceType]=\\\"refrenceType()\\\" [refrenceId]=\\\"refrenceId()\\\" [subject]=\\\"subject()\\\"></axm-comment>\\n </div>\\n</ax-content>\\n<ax-footer>\\n <ax-prefix></ax-prefix>\\n <ax-suffix>\\n <ax-button [text]=\\\"'close' | translate | async\\\" look=\\\"solid\\\" color=\\\"primary\\\" (onClick)=\\\"close()\\\"> </ax-button>\\n </ax-suffix>\\n</ax-footer>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY29tbWVudC9wb3B1cC9jb21tZW50LXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jb21tZW50L3BvcHVwL2NvbW1lbnQtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBbUIzRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsbUJBQW1CO0lBakJqRTs7UUFrQkUsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDeEMsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUN0QyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0tBQ3BDOzhHQUpZLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDJkQUZ4QixFQUFFLGlEQ3hCZixnYkFXQTtnQkRFSSxVQUFVO2dCQUNWLFlBQVk7Z0JBQ1osU0FBUztnQkFDVCxpQkFBaUIscVBBQ2pCLGNBQWMsNlhBQ2QsbUJBQW1CO2dCQUNuQixVQUFVO2dCQUNWLG1CQUFtQjs7MkZBTVYsd0JBQXdCO2tCQWpCcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFVBQVU7d0JBQ1YsbUJBQW1CO3FCQUNwQixpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhNQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1lbnQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLWNvbW1lbnQtcG9wdXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgLy8gQW5ndWxhclxuICAgIENvbW1vbk1vZHVsZSxcbiAgICAvLyBBQ29yZVhcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIC8vIENvbW1lbnRcbiAgICBBWE1Db21tZW50Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNvbW1lbnRQb3B1cENvbXBvbmVudCBleHRlbmRzIEFYQmFzZVBhZ2VDb21wb25lbnQge1xuICByZWZyZW5jZVR5cGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHJlZnJlbmNlSWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHN1YmplY3QgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG59XG4iLCI8YXgtY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImF4LXAtNiBheC1taW4taC1bMzB2aF0gYXgtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgPGF4bS1jb21tZW50IFtyZWZyZW5jZVR5cGVdPVwicmVmcmVuY2VUeXBlKClcIiBbcmVmcmVuY2VJZF09XCJyZWZyZW5jZUlkKClcIiBbc3ViamVjdF09XCJzdWJqZWN0KClcIj48L2F4bS1jb21tZW50PlxuICA8L2Rpdj5cbjwvYXgtY29udGVudD5cbjxheC1mb290ZXI+XG4gIDxheC1wcmVmaXg+PC9heC1wcmVmaXg+XG4gIDxheC1zdWZmaXg+XG4gICAgPGF4LWJ1dHRvbiBbdGV4dF09XCInY2xvc2UnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiAob25DbGljayk9XCJjbG9zZSgpXCI+IDwvYXgtYnV0dG9uPlxuICA8L2F4LXN1ZmZpeD5cbjwvYXgtZm9vdGVyPlxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { Component, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/platform/layout/builder\";\nimport * as i3 from \"@acorex/components/button\";\nexport class AXMUserLookupPopup extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.lookupNode = {\n name: 'form-field',\n path: 'form-field',\n type: 'form-field',\n children: [\n {\n name: 'lookup',\n path: 'lookup',\n type: 'lookup-editor',\n options: {\n entity: 'SecurityManagement.users',\n multiple: true,\n },\n },\n ],\n options: {\n label: 'Select users:',\n },\n };\n this.titleNode = {\n name: 'form-field',\n path: 'form-field',\n type: 'form-field',\n children: [\n {\n name: 'title',\n path: 'title',\n type: 'text-editor',\n options: {\n placeholder: 'Enter title',\n required: true,\n },\n },\n ],\n options: {\n label: 'Title:',\n },\n };\n this.context = signal({});\n }\n handleClose() {\n this.close({\n lookup: this.context()?.lookup,\n title: this.context()?.title,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMUserLookupPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.6\", type: AXMUserLookupPopup, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: `<axp-widgets-container [context]=\"context()\" (onContextChanged)=\"context.set($event.data)\">\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-4\">\n <ng-container axp-widget-renderer [node]=\"lookupNode\" [mode]=\"'edit'\"> </ng-container>\n @if (context()?.lookup?.length > 1) {\n <ng-container axp-widget-renderer [node]=\"titleNode\" [mode]=\"'edit'\"> </ng-container>\n }\n </div>\n </axp-widgets-container>\n\n <ax-footer>\n <ax-suffix>\n <ax-button\n text=\"Accept & Send\"\n color=\"primary\"\n [disabled]=\"context()?.lookup?.length > 1 && !context()?.title\"\n (onClick)=\"handleClose()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i2.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i2.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMUserLookupPopup, decorators: [{\n type: Component,\n args: [{\n template: `<axp-widgets-container [context]=\"context()\" (onContextChanged)=\"context.set($event.data)\">\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-4\">\n <ng-container axp-widget-renderer [node]=\"lookupNode\" [mode]=\"'edit'\"> </ng-container>\n @if (context()?.lookup?.length > 1) {\n <ng-container axp-widget-renderer [node]=\"titleNode\" [mode]=\"'edit'\"> </ng-container>\n }\n </div>\n </axp-widgets-container>\n\n <ax-footer>\n <ax-suffix>\n <ax-button\n text=\"Accept & Send\"\n color=\"primary\"\n [disabled]=\"context()?.lookup?.length > 1 && !context()?.title\"\n (onClick)=\"handleClose()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>`,\n imports: [AXDecoratorModule, AXPLayoutBuilderModule, AXButtonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1sb29rdXAtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvdXNlci1sb29rdXAtcG9wdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWlCLE1BQU0saUNBQWlDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBd0JsRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsbUJBQW1CO0lBdEIzRDs7UUF1QlksZUFBVSxHQUFrQjtZQUNwQyxJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsWUFBWTtZQUNsQixRQUFRLEVBQUU7Z0JBQ1I7b0JBQ0UsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsMEJBQTBCO3dCQUNsQyxRQUFRLEVBQUUsSUFBSTtxQkFDZjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxlQUFlO2FBQ3ZCO1NBQ0YsQ0FBQztRQUNRLGNBQVMsR0FBa0I7WUFDbkMsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLElBQUksRUFBRSxPQUFPO29CQUNiLElBQUksRUFBRSxhQUFhO29CQUNuQixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxFQUFFLGFBQWE7d0JBQzFCLFFBQVEsRUFBRSxJQUFJO3FCQUNmO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLFFBQVE7YUFDaEI7U0FDRixDQUFDO1FBRUYsWUFBTyxHQUFHLE1BQU0sQ0FBTSxFQUFFLENBQUMsQ0FBQztLQVEzQjtJQU5DLFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ1QsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNO1lBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSztTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQS9DVSxrQkFBa0I7a0dBQWxCLGtCQUFrQiwrRkFyQm5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBa0JLLDJEQUNMLGlCQUFpQixxUEFBRSxzQkFBc0IsOFpBQUUsY0FBYzs7MkZBRXhELGtCQUFrQjtrQkF0QjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBa0JLO29CQUNmLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsQ0FBQztpQkFDckUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEJhc2VQYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJjb250ZXh0KClcIiAob25Db250ZXh0Q2hhbmdlZCk9XCJjb250ZXh0LnNldCgkZXZlbnQuZGF0YSlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTQgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIGF4cC13aWRnZXQtcmVuZGVyZXIgW25vZGVdPVwibG9va3VwTm9kZVwiIFttb2RlXT1cIidlZGl0J1wiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgQGlmIChjb250ZXh0KCk/Lmxvb2t1cD8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgYXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJ0aXRsZU5vZGVcIiBbbW9kZV09XCInZWRpdCdcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuXG4gICAgPGF4LWZvb3Rlcj5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICB0ZXh0PVwiQWNjZXB0ICYgU2VuZFwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29udGV4dCgpPy5sb29rdXA/Lmxlbmd0aCA+IDEgJiYgIWNvbnRleHQoKT8udGl0bGVcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUNsb3NlKClcIlxuICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LWZvb3Rlcj5gLFxuICBpbXBvcnRzOiBbQVhEZWNvcmF0b3JNb2R1bGUsIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYQnV0dG9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVXNlckxvb2t1cFBvcHVwIGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBsb29rdXBOb2RlOiBBWFBXaWRnZXROb2RlID0ge1xuICAgIG5hbWU6ICdmb3JtLWZpZWxkJyxcbiAgICBwYXRoOiAnZm9ybS1maWVsZCcsXG4gICAgdHlwZTogJ2Zvcm0tZmllbGQnLFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdsb29rdXAnLFxuICAgICAgICBwYXRoOiAnbG9va3VwJyxcbiAgICAgICAgdHlwZTogJ2xvb2t1cC1lZGl0b3InLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZW50aXR5OiAnU2VjdXJpdHlNYW5hZ2VtZW50LnVzZXJzJyxcbiAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBsYWJlbDogJ1NlbGVjdCB1c2VyczonLFxuICAgIH0sXG4gIH07XG4gIHByb3RlY3RlZCB0aXRsZU5vZGU6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgbmFtZTogJ2Zvcm0tZmllbGQnLFxuICAgIHBhdGg6ICdmb3JtLWZpZWxkJyxcbiAgICB0eXBlOiAnZm9ybS1maWVsZCcsXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgcGF0aDogJ3RpdGxlJyxcbiAgICAgICAgdHlwZTogJ3RleHQtZWRpdG9yJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdGl0bGUnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGxhYmVsOiAnVGl0bGU6JyxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnRleHQgPSBzaWduYWw8YW55Pih7fSk7XG5cbiAgaGFuZGxlQ2xvc2UoKSB7XG4gICAgdGhpcy5jbG9zZSh7XG4gICAgICBsb29rdXA6IHRoaXMuY29udGV4dCgpPy5sb29rdXAsXG4gICAgICB0aXRsZTogdGhpcy5jb250ZXh0KCk/LnRpdGxlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { AXMCommentComponent } from '..';\nimport * as i0 from \"@angular/core\";\nexport class AXMCommentWidgetViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n this.refrenceType = computed(() => this.options().refrenceType);\n this.refrenceId = computed(() => this.options().refrenceId);\n this.subject = computed(() => this.options().subject);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.6\", type: AXMCommentWidgetViewComponent, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: `\n <axm-comment [refrenceId]=\"refrenceId()\" [refrenceType]=\"refrenceType()\" [subject]=\"subject()\"></axm-comment>\n `, isInline: true, dependencies: [{ kind: \"component\", type: AXMCommentComponent, selector: \"axm-comment\", inputs: [\"refrenceType\", \"refrenceId\", \"subject\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentWidgetViewComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n <axm-comment [refrenceId]=\"refrenceId()\" [refrenceType]=\"refrenceType()\" [subject]=\"subject()\"></axm-comment>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMCommentComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY29tbWVudC93aWRnZXQvY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sSUFBSSxDQUFDOztBQVN6QyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQWlFO0lBUHBIOztRQVFZLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzRCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM1RDs4R0FKWSw2QkFBNkI7a0dBQTdCLDZCQUE2QiwrRkFOOUI7O0dBRVQsNERBRVMsbUJBQW1COzsyRkFFbEIsNkJBQTZCO2tCQVB6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7R0FFVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRW50aXR5UmVmZXJlbmNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4uJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGF4bS1jb21tZW50IFtyZWZyZW5jZUlkXT1cInJlZnJlbmNlSWQoKVwiIFtyZWZyZW5jZVR5cGVdPVwicmVmcmVuY2VUeXBlKClcIiBbc3ViamVjdF09XCJzdWJqZWN0KClcIj48L2F4bS1jb21tZW50PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0FYTUNvbW1lbnRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Db21tZW50V2lkZ2V0Vmlld0NvbXBvbmVudCBleHRlbmRzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50PEFYUEVudGl0eVJlZmVyZW5jZSAmIHsgc3ViamVjdDogc3RyaW5nIH0+IHtcbiAgcHJvdGVjdGVkIHJlZnJlbmNlVHlwZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnJlZnJlbmNlVHlwZSk7XG4gIHByb3RlY3RlZCByZWZyZW5jZUlkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkucmVmcmVuY2VJZCk7XG4gIHByb3RlY3RlZCBzdWJqZWN0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuc3ViamVjdCk7XG59XG4iXX0=","import { AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nexport const AXPCommentWidget = {\n name: 'comment',\n title: 'Comments',\n description: 'Display and manage comments for entities',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.FormElement],\n icon: 'fa-solid fa-comments',\n properties: [],\n components: {\n view: {\n component: () => import('./comment-widget-view.component').then((c) => c.AXMCommentWidgetViewComponent),\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC13aWRnZXQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvd2lkZ2V0L2NvbW1lbnQtd2lkZ2V0LmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdEYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQW9CO0lBQy9DLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFVBQVU7SUFDakIsV0FBVyxFQUFFLDBDQUEwQztJQUN2RCxJQUFJLEVBQUUsTUFBTTtJQUNaLFVBQVUsRUFBRSxFQUFFO0lBQ2QsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDO0lBQ3hDLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsVUFBVSxFQUFFLEVBQUU7SUFDZCxVQUFVLEVBQUU7UUFDVixJQUFJLEVBQUU7WUFDSixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7U0FDeEc7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuXG5leHBvcnQgY29uc3QgQVhQQ29tbWVudFdpZGdldDogQVhQV2lkZ2V0Q29uZmlnID0ge1xuICBuYW1lOiAnY29tbWVudCcsXG4gIHRpdGxlOiAnQ29tbWVudHMnLFxuICBkZXNjcmlwdGlvbjogJ0Rpc3BsYXkgYW5kIG1hbmFnZSBjb21tZW50cyBmb3IgZW50aXRpZXMnLFxuICB0eXBlOiAndmlldycsXG4gIGNhdGVnb3JpZXM6IFtdLFxuICBncm91cHM6IFtBWFBXaWRnZXRHcm91cEVudW0uRm9ybUVsZW1lbnRdLFxuICBpY29uOiAnZmEtc29saWQgZmEtY29tbWVudHMnLFxuICBwcm9wZXJ0aWVzOiBbXSxcbiAgY29tcG9uZW50czoge1xuICAgIHZpZXc6IHtcbiAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2NvbW1lbnQtd2lkZ2V0LXZpZXcuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWE1Db21tZW50V2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflowAction } from '@acorex/platform/workflow';\nimport { inject, Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXMCommentPopupStartAction extends AXPWorkflowAction {\n constructor() {\n super(...arguments);\n this.popupService = inject(AXPopupService);\n this.translate = inject(AXTranslationService);\n }\n async execute(context) {\n const comp = (await import('../popup/comment-popup.component')).AXMCommentPopupComponent;\n this.popupService.open(comp, {\n title: await this.translate.translateAsync('Comments'),\n size: 'lg',\n data: {\n refrenceType: signal(context.getVariable('options.refType')),\n refrenceId: signal(context.getVariable('options.refId')),\n subject: signal(context.getVariable('options.subject')),\n },\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentPopupStartAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentPopupStartAction }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMCommentPopupStartAction, decorators: [{\n type: Injectable\n }] });\nexport const AXMCommentPopupWorkflow = {\n startStepId: 'start',\n steps: {\n start: {\n action: 'show-comment-popup-action',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC53b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jb21tZW50L3dvcmtmbG93L2NvbW1lbnQud29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBZSxpQkFBaUIsRUFBc0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFEakU7O1FBRVUsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBZWxEO0lBYlUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUNoRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztRQUV6RixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDM0IsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQ3RELElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFO2dCQUNKLFlBQVksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUM1RCxVQUFVLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3hEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoQlUsMEJBQTBCO2tIQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVU7O0FBb0JYLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFnQjtJQUNsRCxXQUFXLEVBQUUsT0FBTztJQUNwQixLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUU7WUFDTCxNQUFNLEVBQUUsMkJBQTJCO1NBQ3BDO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3csIEFYUFdvcmtmbG93QWN0aW9uLCBBWFBXb3JrZmxvd0NvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1Db21tZW50UG9wdXBTdGFydEFjdGlvbiBleHRlbmRzIEFYUFdvcmtmbG93QWN0aW9uIHtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHRyYW5zbGF0ZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZShjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb21wID0gKGF3YWl0IGltcG9ydCgnLi4vcG9wdXAvY29tbWVudC1wb3B1cC5jb21wb25lbnQnKSkuQVhNQ29tbWVudFBvcHVwQ29tcG9uZW50O1xuXG4gICAgdGhpcy5wb3B1cFNlcnZpY2Uub3Blbihjb21wLCB7XG4gICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGUudHJhbnNsYXRlQXN5bmMoJ0NvbW1lbnRzJyksXG4gICAgICBzaXplOiAnbGcnLFxuICAgICAgZGF0YToge1xuICAgICAgICByZWZyZW5jZVR5cGU6IHNpZ25hbChjb250ZXh0LmdldFZhcmlhYmxlKCdvcHRpb25zLnJlZlR5cGUnKSksXG4gICAgICAgIHJlZnJlbmNlSWQ6IHNpZ25hbChjb250ZXh0LmdldFZhcmlhYmxlKCdvcHRpb25zLnJlZklkJykpLFxuICAgICAgICBzdWJqZWN0OiBzaWduYWwoY29udGV4dC5nZXRWYXJpYWJsZSgnb3B0aW9ucy5zdWJqZWN0JykpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQVhNQ29tbWVudFBvcHVwV29ya2Zsb3c6IEFYUFdvcmtmbG93ID0ge1xuICBzdGFydFN0ZXBJZDogJ3N0YXJ0JyxcbiAgc3RlcHM6IHtcbiAgICBzdGFydDoge1xuICAgICAgYWN0aW9uOiAnc2hvdy1jb21tZW50LXBvcHVwLWFjdGlvbicsXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=","import { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXMMessageService } from '../../entities/message/message.service';\nimport { AXMRoomService } from '../../entities/room/room.service';\nimport * as i0 from \"@angular/core\";\n//#region ---- Abstract Chat Service ----\nexport class AXMChatService {\n}\n//#endregion\nexport class AXMChatServiceImpl {\n constructor() {\n this.roomService = inject(AXMRoomService);\n this.messageService = inject(AXMMessageService);\n this.sessionService = inject(AXPSessionService);\n this.usersService = inject(AXMUsersEntityService);\n this._messageSent$ = new Subject();\n this.messageSent$ = this._messageSent$.asObservable();\n this._messageRemoved$ = new Subject();\n this.messageRemoved$ = this._messageRemoved$.asObservable();\n this._messageSeen$ = new Subject();\n this.messageSeen$ = this._messageSeen$.asObservable();\n this._roomAdded$ = new Subject();\n this.roomAdded$ = this._roomAdded$.asObservable();\n this._roomRemoved$ = new Subject();\n this.roomRemoved$ = this._roomRemoved$.asObservable();\n this._roomSeen$ = new Subject();\n this.roomSeen$ = this._roomSeen$.asObservable();\n this._messageReacted$ = new Subject();\n this.messageReacted$ = this._messageReacted$.asObservable();\n this._typingStatus$ = new Subject();\n this.typingStatus$ = this._typingStatus$.asObservable();\n }\n //#region ---- Helper Methods ----\n getCurrentUser() {\n const user = this.sessionService.user;\n return {\n id: user?.id || 'guest-user',\n type: 'user',\n fullName: user?.title?.trim() || 'Guest User',\n username: user?.name?.trim() || 'guest-user',\n };\n }\n async getUserInfo(userId) {\n try {\n const user = await this.usersService.getOne(userId);\n return {\n id: user.id,\n type: 'user',\n fullName: `${user.firstName} ${user.lastName}`.trim(),\n username: user.username?.trim(),\n };\n }\n catch (error) {\n console.error(`Failed to get user info for ID: ${userId}`, error);\n return {\n id: userId,\n type: 'user',\n fullName: 'Unknown User',\n username: 'Unknown User',\n };\n }\n }\n async formatMessage(message) {\n if (message.author && !message.author.fullName) {\n const authorInfo = await this.getUserInfo(message.author.id);\n return {\n ...message,\n author: authorInfo,\n };\n }\n return message;\n }\n async getUnreadCount(roomId) {\n const { items } = await this.messageService.query({\n skip: 0,\n take: 99,\n filter: { field: 'roomId', value: roomId, operator: { type: 'equal' } },\n });\n const currentUserId = this.getCurrentUser().id;\n const unreadMessages = items.filter((message) => {\n const isFromCurrentUser = message.author.id === currentUserId;\n const isReadByCurrentUser = (message.seen || []).some((seen) => seen.author.id === currentUserId);\n return !isFromCurrentUser && !isReadByCurrentUser;\n });\n return unreadMessages.length;\n }\n //#endregion\n //#region ---- ChatRoomService Implementations ----\n async createRoom(memberIds, title) {\n if (memberIds.length === 0) {\n throw new Error('At least one member is required to create a room');\n }\n const currentUser = this.getCurrentUser();\n const allMemberIds = [...new Set([...memberIds, currentUser.id])];\n const memberReferences = await Promise.all(allMemberIds.map((id) => this.getUserInfo(id)));\n const room = {\n members: memberReferences,\n title: title,\n topic: memberIds.length > 1 ? 'group' : 'personal',\n createdAt: new Date(),\n updatedAt: new Date(),\n type: 'chat',\n createdBy: this.getCurrentUser().id,\n updatedBy: this.getCurrentUser().id,\n };\n const roomId = await this.roomService.insertOne(room);\n const newRoom = await this.getRoom(roomId);\n this._roomAdded$.next(newRoom);\n return newRoom;\n }\n async getRoom(roomId) {\n const room = await this.roomService.getOne(roomId);\n if (!room || room.type !== 'chat') {\n throw new Error(`Chat room with ID ${roomId} not found.`);\n }\n const messages = await this.getMessages(roomId, 0, 1);\n const lastMessage = messages.items.length > 0 ? messages.items[0] : undefined;\n const unreadCount = await this.getUnreadCount(roomId);\n const currentUserId = this.getCurrentUser().id;\n const members = await Promise.all(room.members.map(async (member) => {\n if (member.fullName) {\n return member;\n }\n return this.getUserInfo(member.id);\n }));\n return {\n ...room,\n lastMessage,\n unreadCount,\n members: members.filter((m) => m.id !== currentUserId),\n };\n }\n async listRooms(skip = 0, take = 100) {\n const { items, total } = await this.roomService.query({\n skip,\n take,\n filter: { field: 'type', value: 'chat', operator: { type: 'equal' } },\n });\n const settledRooms = await Promise.allSettled(items.map((room) => this.getRoom(room.id)));\n const chatRooms = settledRooms\n .filter((result) => {\n if (result.status === 'rejected') {\n console.error('Failed to fetch room details:', result.reason);\n return false;\n }\n return true;\n })\n .map((result) => result.value);\n return { items: chatRooms, total: chatRooms.length };\n }\n async updateRoom(roomId, data) {\n const update = { ...data, updatedAt: new Date(), updatedBy: this.getCurrentUser().id };\n return this.roomService.updateOne(roomId, update);\n }\n async deleteRoom(roomId) {\n try {\n await this.roomService.deleteOne(roomId);\n this._roomRemoved$.next(roomId);\n return true;\n }\n catch (error) {\n return false;\n }\n }\n async addParticipant(roomId, userId) {\n const room = await this.roomService.getOne(roomId);\n if (room.members.some((m) => m.id === userId))\n return room;\n const userRef = await this.getUserInfo(userId);\n const updatedMembers = [...room.members, userRef];\n return this.roomService.updateOne(roomId, {\n members: updatedMembers,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async removeParticipant(roomId, userId) {\n const room = await this.roomService.getOne(roomId);\n const updatedMembers = room.members.filter((member) => member.id !== userId);\n return this.roomService.updateOne(roomId, {\n members: updatedMembers,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n //#endregion\n //#region ---- ChatMessageService Implementations ----\n async sendMessage(roomId, content, contentType = 'text', replyId, userId) {\n const author = userId ? await this.getUserInfo(userId) : this.getCurrentUser();\n const messageContent = { content, contentType };\n const message = {\n roomId,\n message: messageContent,\n author,\n replyId,\n createdAt: new Date(),\n updatedAt: new Date(),\n createdBy: this.getCurrentUser().id,\n updatedBy: this.getCurrentUser().id,\n reactions: [],\n seen: [],\n };\n const messageId = await this.messageService.insertOne({ ...message });\n const newMessage = await this.messageService.getOne(messageId);\n const formattedMessage = await this.formatMessage(newMessage);\n this._messageSent$.next(formattedMessage);\n return formattedMessage;\n }\n async getMessages(roomId, skip = 0, take = 99) {\n const result = await this.messageService.query({\n skip,\n take,\n filter: { field: 'roomId', value: roomId, operator: { type: 'equal' } },\n sort: [{ field: 'createdAt', dir: 'desc' }],\n });\n const formattedMessages = await Promise.all(result.items.map((m) => this.formatMessage(m)));\n return { items: formattedMessages, total: result.total };\n }\n async getMessage(messageId) {\n const message = await this.messageService.getOne(messageId);\n return this.formatMessage(message);\n }\n async editMessage(messageId, content, contentType = 'text') {\n const messageContent = { content, contentType };\n return this.messageService.updateOne(messageId, {\n message: messageContent,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async deleteMessage(messageId) {\n try {\n await this.messageService.deleteOne(messageId);\n this._messageRemoved$.next(messageId);\n return true;\n }\n catch (error) {\n return false;\n }\n }\n async replyMessage(replyToMessageId, content, contentType = 'text') {\n const originalMessage = await this.messageService.getOne(replyToMessageId);\n return this.sendMessage(originalMessage.roomId, content, contentType, replyToMessageId);\n }\n async pinMessage(messageId) {\n return this.messageService.updateOne(messageId, {\n isPinned: true,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async unpinMessage(messageId) {\n return this.messageService.updateOne(messageId, {\n isPinned: false,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n //#endregion\n //#region ---- ChatReactionService Implementations ----\n async addReaction(messageId, type) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const reactions = message.reactions || [];\n if (reactions.some((r) => r.author.id === author.id && r.type === type)) {\n return message;\n }\n const updatedReactions = [...reactions, { author, type }];\n const res = await this.messageService.updateOne(messageId, {\n reactions: updatedReactions,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n this._messageReacted$.next(res);\n return res;\n }\n async removeReaction(messageId, type) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const updatedReactions = (message.reactions || []).filter((r) => !(r.author.id === author.id && r.type === type));\n const res = await this.messageService.updateOne(messageId, {\n reactions: updatedReactions,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n this._messageReacted$.next(res);\n return res;\n }\n async getReactions(messageId) {\n const message = await this.messageService.getOne(messageId);\n return message.reactions || [];\n }\n //#endregion\n //#region ---- ChatSeenService Implementations ----\n async markSeen(messageId) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const seen = message.seen || [];\n if (seen.some((s) => s.author.id === author.id)) {\n return message;\n }\n const updatedSeen = [...seen, { author, type: 'read' }];\n const updatedMessage = await this.messageService.updateOne(messageId, {\n seen: updatedSeen,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n this._messageSeen$.next(await this.formatMessage(updatedMessage));\n return updatedMessage;\n }\n async getSeenBy(messageId) {\n const message = await this.messageService.getOne(messageId);\n return message.seen || [];\n }\n async markRoomSeen(roomId) {\n try {\n if (!roomId) {\n return true;\n }\n const { items } = await this.getMessages(roomId, 0, 99);\n const currentUserId = this.getCurrentUser().id;\n const unreadMessages = items.filter((message) => message.author.id !== currentUserId && !message.seen?.some((s) => s.author.id === currentUserId));\n if (unreadMessages.length > 0) {\n await Promise.all(unreadMessages.map((message) => this.markSeen(message.id)));\n }\n this._roomSeen$.next(roomId);\n return true;\n }\n catch (error) {\n console.error(`Error marking room ${roomId} as seen:`, error);\n return false;\n }\n }\n //#endregion\n //#region ---- Typing Status Implementations ----\n async startTyping(roomId, userId) {\n const user = userId ? await this.getUserInfo(userId) : this.getCurrentUser();\n this._typingStatus$.next({ roomId, user, isTyping: true });\n }\n async stopTyping(roomId, userId) {\n const user = userId ? await this.getUserInfo(userId) : this.getCurrentUser();\n this._typingStatus$.next({ roomId, user, isTyping: false });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMChatServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMChatServiceImpl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMChatServiceImpl, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NoYXQvY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFRM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUlsRSw2Q0FBNkM7QUFFN0MsTUFBTSxPQUFnQixjQUFjO0NBMkRuQztBQUVELFlBQVk7QUFLWixNQUFNLE9BQU8sa0JBQWtCO0lBSC9CO1FBSW1CLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTdDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDdEQsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXpDLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDakQsb0JBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFL0Msa0JBQWEsR0FB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L0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBYyxFQUFFLE1BQWU7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs4R0FuWlUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTVVzZXJzRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9zZWN1cml0eS1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUENvbnRlbnQsIEFYUENvbnRlbnRUeXBlLCBBWFBVc2VyUmVmZXJlbmNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhNTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBBWE1Db252ZXJzYXRpb25NZXNzYWdlLFxuICBBWE1Db252ZXJzYXRpb25SZWFjdGlvbixcbiAgQVhNQ29udmVyc2F0aW9uU2VlbixcbiAgQVhNUmVhY3Rpb25UeXBlLFxuICBBWE1TZWVuVHlwZSxcbn0gZnJvbSAnLi4vLi4vZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLnR5cGVzJztcbmltcG9ydCB7IEFYTVJvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvcm9vbS9yb29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uUm9vbSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3Jvb20vcm9vbS50eXBlcyc7XG5pbXBvcnQgeyBBWE1DaGF0TWVzc2FnZSwgQVhNQ2hhdFJvb20gfSBmcm9tICcuL2NoYXQudHlwZSc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgQWJzdHJhY3QgQ2hhdCBTZXJ2aWNlICAgLS0tLVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNQ2hhdFNlcnZpY2Uge1xuICAvLyBDaGF0Um9vbVNlcnZpY2UgTWV0aG9kc1xuICBhYnN0cmFjdCBjcmVhdGVSb29tKG1lbWJlcklkczogc3RyaW5nW10sIHRpdGxlPzogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0Um9vbT47XG4gIGFic3RyYWN0IGdldFJvb20ocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRSb29tPjtcbiAgYWJzdHJhY3QgbGlzdFJvb21zKHNraXA/OiBudW1iZXIsIHRha2U/OiBudW1iZXIpOiBQcm9taXNlPHsgaXRlbXM6IEFYTUNoYXRSb29tW107IHRvdGFsOiBudW1iZXIgfT47XG4gIGFic3RyYWN0IHVwZGF0ZVJvb20ocm9vbUlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8QVhNQ29udmVyc2F0aW9uUm9vbT4pOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvblJvb20+O1xuICBhYnN0cmFjdCBkZWxldGVSb29tKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgYWRkUGFydGljaXBhbnQocm9vbUlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPjtcbiAgYWJzdHJhY3QgcmVtb3ZlUGFydGljaXBhbnQocm9vbUlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPjtcblxuICAvLyBDaGF0TWVzc2FnZVNlcnZpY2UgTWV0aG9kc1xuICBhYnN0cmFjdCBzZW5kTWVzc2FnZShcbiAgICByb29tSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU/OiBBWFBDb250ZW50VHlwZSxcbiAgICByZXBseUlkPzogc3RyaW5nLFxuICAgIHVzZXJJZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBWE1DaGF0TWVzc2FnZT47XG4gIGFic3RyYWN0IGdldE1lc3NhZ2VzKFxuICAgIHJvb21JZDogc3RyaW5nLFxuICAgIHNraXA/OiBudW1iZXIsXG4gICAgdGFrZT86IG51bWJlcixcbiAgKTogUHJvbWlzZTx7IGl0ZW1zOiBBWE1DaGF0TWVzc2FnZVtdOyB0b3RhbDogbnVtYmVyIH0+O1xuICBhYnN0cmFjdCBnZXRNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0TWVzc2FnZT47XG4gIGFic3RyYWN0IGVkaXRNZXNzYWdlKFxuICAgIG1lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBjb250ZW50VHlwZT86IEFYUENvbnRlbnRUeXBlLFxuICApOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuICBhYnN0cmFjdCBkZWxldGVNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgcmVwbHlNZXNzYWdlKFxuICAgIHJlcGx5VG9NZXNzYWdlSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU/OiBBWFBDb250ZW50VHlwZSxcbiAgKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPjtcbiAgYWJzdHJhY3QgcGluTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT47XG4gIGFic3RyYWN0IHVucGluTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT47XG5cbiAgLy8gQ2hhdFJlYWN0aW9uU2VydmljZSBNZXRob2RzXG4gIGFic3RyYWN0IGFkZFJlYWN0aW9uKG1lc3NhZ2VJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuICBhYnN0cmFjdCByZW1vdmVSZWFjdGlvbihtZXNzYWdlSWQ6IHN0cmluZywgdHlwZTogQVhNUmVhY3Rpb25UeXBlKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPjtcbiAgYWJzdHJhY3QgZ2V0UmVhY3Rpb25zKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdPjtcblxuICAvLyBDaGF0U2VlblNlcnZpY2UgTWV0aG9kc1xuICBhYnN0cmFjdCBtYXJrU2VlbihtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT47XG4gIGFic3RyYWN0IGdldFNlZW5CeShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uU2VlbltdPjtcbiAgYWJzdHJhY3QgbWFya1Jvb21TZWVuKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcblxuICBhYnN0cmFjdCByZWFkb25seSBtZXNzYWdlU2VudCQ6IE9ic2VydmFibGU8QVhNQ2hhdE1lc3NhZ2U+O1xuICBhYnN0cmFjdCByZWFkb25seSBtZXNzYWdlUmVtb3ZlZCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbWVzc2FnZVNlZW4kOiBPYnNlcnZhYmxlPEFYTUNoYXRNZXNzYWdlPjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgcm9vbUFkZGVkJDogT2JzZXJ2YWJsZTxBWE1DaGF0Um9vbT47XG4gIGFic3RyYWN0IHJlYWRvbmx5IHJvb21SZW1vdmVkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBhYnN0cmFjdCByZWFkb25seSByb29tU2VlbiQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbWVzc2FnZVJlYWN0ZWQkOiBPYnNlcnZhYmxlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuXG4gIGFic3RyYWN0IHJlYWRvbmx5IHR5cGluZ1N0YXR1cyQ6IE9ic2VydmFibGU8eyByb29tSWQ6IHN0cmluZzsgdXNlcjogQVhQVXNlclJlZmVyZW5jZTsgaXNUeXBpbmc6IGJvb2xlYW4gfT47XG4gIGFic3RyYWN0IHN0YXJ0VHlwaW5nKHJvb21JZDogc3RyaW5nLCB1c2VySWQ/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICBhYnN0cmFjdCBzdG9wVHlwaW5nKHJvb21JZDogc3RyaW5nLCB1c2VySWQ/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vLyNlbmRyZWdpb25cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNoYXRTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEFYTUNoYXRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSByb29tU2VydmljZSA9IGluamVjdChBWE1Sb29tU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoQVhNTWVzc2FnZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB1c2Vyc1NlcnZpY2UgPSBpbmplY3QoQVhNVXNlcnNFbnRpdHlTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlU2VudCQgPSBuZXcgU3ViamVjdDxBWE1DaGF0TWVzc2FnZT4oKTtcbiAgcmVhZG9ubHkgbWVzc2FnZVNlbnQkID0gdGhpcy5fbWVzc2FnZVNlbnQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VSZW1vdmVkJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgbWVzc2FnZVJlbW92ZWQkID0gdGhpcy5fbWVzc2FnZVJlbW92ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VTZWVuJCA9IG5ldyBTdWJqZWN0PEFYTUNoYXRNZXNzYWdlPigpO1xuICByZWFkb25seSBtZXNzYWdlU2VlbiQgPSB0aGlzLl9tZXNzYWdlU2VlbiQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcm9vbUFkZGVkJCA9IG5ldyBTdWJqZWN0PEFYTUNoYXRSb29tPigpO1xuICByZWFkb25seSByb29tQWRkZWQkID0gdGhpcy5fcm9vbUFkZGVkJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yb29tUmVtb3ZlZCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHJvb21SZW1vdmVkJCA9IHRoaXMuX3Jvb21SZW1vdmVkJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yb29tU2VlbiQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHJvb21TZWVuJCA9IHRoaXMuX3Jvb21TZWVuJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlUmVhY3RlZCQgPSBuZXcgU3ViamVjdDxBWE1Db252ZXJzYXRpb25NZXNzYWdlPigpO1xuICByZWFkb25seSBtZXNzYWdlUmVhY3RlZCQgPSB0aGlzLl9tZXNzYWdlUmVhY3RlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwaW5nU3RhdHVzJCA9IG5ldyBTdWJqZWN0PHsgcm9vbUlkOiBzdHJpbmc7IHVzZXI6IEFYUFVzZXJSZWZlcmVuY2U7IGlzVHlwaW5nOiBib29sZWFuIH0+KCk7XG4gIHJlYWRvbmx5IHR5cGluZ1N0YXR1cyQgPSB0aGlzLl90eXBpbmdTdGF0dXMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIE1ldGhvZHMgICAtLS0tXG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50VXNlcigpOiBBWFBVc2VyUmVmZXJlbmNlIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdXNlcj8uaWQgfHwgJ2d1ZXN0LXVzZXInLFxuICAgICAgdHlwZTogJ3VzZXInLFxuICAgICAgZnVsbE5hbWU6IHVzZXI/LnRpdGxlPy50cmltKCkgfHwgJ0d1ZXN0IFVzZXInLFxuICAgICAgdXNlcm5hbWU6IHVzZXI/Lm5hbWU/LnRyaW0oKSB8fCAnZ3Vlc3QtdXNlcicsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VXNlckluZm8odXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFVzZXJSZWZlcmVuY2U+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMudXNlcnNTZXJ2aWNlLmdldE9uZSh1c2VySWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHVzZXIuaWQsXG4gICAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICAgICAgZnVsbE5hbWU6IGAke3VzZXIuZmlyc3ROYW1lfSAke3VzZXIubGFzdE5hbWV9YC50cmltKCksXG4gICAgICAgIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lPy50cmltKCksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZ2V0IHVzZXIgaW5mbyBmb3IgSUQ6ICR7dXNlcklkfWAsIGVycm9yKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICAgICAgZnVsbE5hbWU6ICdVbmtub3duIFVzZXInLFxuICAgICAgICB1c2VybmFtZTogJ1Vua25vd24gVXNlcicsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZm9ybWF0TWVzc2FnZShtZXNzYWdlOiBBWE1Db252ZXJzYXRpb25NZXNzYWdlKTogUHJvbWlzZTxBWE1DaGF0TWVzc2FnZT4ge1xuICAgIGlmIChtZXNzYWdlLmF1dGhvciAmJiAhbWVzc2FnZS5hdXRob3IuZnVsbE5hbWUpIHtcbiAgICAgIGNvbnN0IGF1dGhvckluZm8gPSBhd2FpdCB0aGlzLmdldFVzZXJJbmZvKG1lc3NhZ2UuYXV0aG9yLmlkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICAgIGF1dGhvcjogYXV0aG9ySW5mbyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRVbnJlYWRDb3VudChyb29tSWQ6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogOTksXG4gICAgICBmaWx0ZXI6IHsgZmllbGQ6ICdyb29tSWQnLCB2YWx1ZTogcm9vbUlkLCBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0gfSxcbiAgICB9KTtcbiAgICBjb25zdCBjdXJyZW50VXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkO1xuXG4gICAgY29uc3QgdW5yZWFkTWVzc2FnZXMgPSBpdGVtcy5maWx0ZXIoKG1lc3NhZ2UpID0+IHtcbiAgICAgIGNvbnN0IGlzRnJvbUN1cnJlbnRVc2VyID0gbWVzc2FnZS5hdXRob3IuaWQgPT09IGN1cnJlbnRVc2VySWQ7XG4gICAgICBjb25zdCBpc1JlYWRCeUN1cnJlbnRVc2VyID0gKG1lc3NhZ2Uuc2VlbiB8fCBbXSkuc29tZSgoc2VlbikgPT4gc2Vlbi5hdXRob3IuaWQgPT09IGN1cnJlbnRVc2VySWQpO1xuICAgICAgcmV0dXJuICFpc0Zyb21DdXJyZW50VXNlciAmJiAhaXNSZWFkQnlDdXJyZW50VXNlcjtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5yZWFkTWVzc2FnZXMubGVuZ3RoO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDaGF0Um9vbVNlcnZpY2UgSW1wbGVtZW50YXRpb25zICAgLS0tLVxuXG4gIGFzeW5jIGNyZWF0ZVJvb20obWVtYmVySWRzOiBzdHJpbmdbXSwgdGl0bGU/OiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRSb29tPiB7XG4gICAgaWYgKG1lbWJlcklkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIG1lbWJlciBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSByb29tJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgYWxsTWVtYmVySWRzID0gWy4uLm5ldyBTZXQoWy4uLm1lbWJlcklkcywgY3VycmVudFVzZXIuaWRdKV07XG5cbiAgICBjb25zdCBtZW1iZXJSZWZlcmVuY2VzID0gYXdhaXQgUHJvbWlzZS5hbGwoYWxsTWVtYmVySWRzLm1hcCgoaWQpID0+IHRoaXMuZ2V0VXNlckluZm8oaWQpKSk7XG5cbiAgICBjb25zdCByb29tOiBPbWl0PEFYTUNvbnZlcnNhdGlvblJvb20sICdpZCc+ID0ge1xuICAgICAgbWVtYmVyczogbWVtYmVyUmVmZXJlbmNlcyxcbiAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgIHRvcGljOiBtZW1iZXJJZHMubGVuZ3RoID4gMSA/ICdncm91cCcgOiAncGVyc29uYWwnLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2NoYXQnLFxuICAgICAgY3JlYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9O1xuICAgIGNvbnN0IHJvb21JZCA9IGF3YWl0IHRoaXMucm9vbVNlcnZpY2UuaW5zZXJ0T25lKHJvb20pO1xuICAgIGNvbnN0IG5ld1Jvb20gPSBhd2FpdCB0aGlzLmdldFJvb20ocm9vbUlkKTtcbiAgICB0aGlzLl9yb29tQWRkZWQkLm5leHQobmV3Um9vbSk7XG4gICAgcmV0dXJuIG5ld1Jvb207XG4gIH1cblxuICBhc3luYyBnZXRSb29tKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0Um9vbT4ge1xuICAgIGNvbnN0IHJvb20gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmdldE9uZShyb29tSWQpO1xuICAgIGlmICghcm9vbSB8fCByb29tLnR5cGUgIT09ICdjaGF0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDaGF0IHJvb20gd2l0aCBJRCAke3Jvb21JZH0gbm90IGZvdW5kLmApO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMuZ2V0TWVzc2FnZXMocm9vbUlkLCAwLCAxKTtcbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzLml0ZW1zLmxlbmd0aCA+IDAgPyBtZXNzYWdlcy5pdGVtc1swXSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB1bnJlYWRDb3VudCA9IGF3YWl0IHRoaXMuZ2V0VW5yZWFkQ291bnQocm9vbUlkKTtcbiAgICBjb25zdCBjdXJyZW50VXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkO1xuXG4gICAgY29uc3QgbWVtYmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcm9vbS5tZW1iZXJzLm1hcChhc3luYyAobWVtYmVyKSA9PiB7XG4gICAgICAgIGlmIChtZW1iZXIuZnVsbE5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gbWVtYmVyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmdldFVzZXJJbmZvKG1lbWJlci5pZCk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJvb20sXG4gICAgICBsYXN0TWVzc2FnZSxcbiAgICAgIHVucmVhZENvdW50LFxuICAgICAgbWVtYmVyczogbWVtYmVycy5maWx0ZXIoKG0pID0+IG0uaWQgIT09IGN1cnJlbnRVc2VySWQpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBsaXN0Um9vbXMoc2tpcCA9IDAsIHRha2UgPSAxMDApOiBQcm9taXNlPHsgaXRlbXM6IEFYTUNoYXRSb29tW107IHRvdGFsOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IHsgaXRlbXMsIHRvdGFsIH0gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXAsXG4gICAgICB0YWtlLFxuICAgICAgZmlsdGVyOiB7IGZpZWxkOiAndHlwZScsIHZhbHVlOiAnY2hhdCcsIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSB9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2V0dGxlZFJvb21zID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGl0ZW1zLm1hcCgocm9vbSkgPT4gdGhpcy5nZXRSb29tKHJvb20uaWQpKSk7XG5cbiAgICBjb25zdCBjaGF0Um9vbXMgPSBzZXR0bGVkUm9vbXNcbiAgICAgIC5maWx0ZXIoKHJlc3VsdCk6IHJlc3VsdCBpcyBQcm9taXNlRnVsZmlsbGVkUmVzdWx0PEFYTUNoYXRSb29tPiA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIHJvb20gZGV0YWlsczonLCByZXN1bHQucmVhc29uKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICAgLm1hcCgocmVzdWx0KSA9PiByZXN1bHQudmFsdWUpO1xuXG4gICAgcmV0dXJuIHsgaXRlbXM6IGNoYXRSb29tcywgdG90YWw6IGNoYXRSb29tcy5sZW5ndGggfTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVJvb20ocm9vbUlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8QVhNQ29udmVyc2F0aW9uUm9vbT4pOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvblJvb20+IHtcbiAgICBjb25zdCB1cGRhdGUgPSB7IC4uLmRhdGEsIHVwZGF0ZWRBdDogbmV3IERhdGUoKSwgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQgfTtcbiAgICByZXR1cm4gdGhpcy5yb29tU2VydmljZS51cGRhdGVPbmUocm9vbUlkLCB1cGRhdGUpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlUm9vbShyb29tSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmRlbGV0ZU9uZShyb29tSWQpO1xuICAgICAgdGhpcy5fcm9vbVJlbW92ZWQkLm5leHQocm9vbUlkKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYWRkUGFydGljaXBhbnQocm9vbUlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPiB7XG4gICAgY29uc3Qgcm9vbSA9IGF3YWl0IHRoaXMucm9vbVNlcnZpY2UuZ2V0T25lKHJvb21JZCk7XG4gICAgaWYgKHJvb20ubWVtYmVycy5zb21lKChtKSA9PiBtLmlkID09PSB1c2VySWQpKSByZXR1cm4gcm9vbTtcbiAgICBjb25zdCB1c2VyUmVmID0gYXdhaXQgdGhpcy5nZXRVc2VySW5mbyh1c2VySWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRNZW1iZXJzID0gWy4uLnJvb20ubWVtYmVycywgdXNlclJlZl07XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHJvb21JZCwge1xuICAgICAgbWVtYmVyczogdXBkYXRlZE1lbWJlcnMsXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVBhcnRpY2lwYW50KHJvb21JZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uUm9vbT4ge1xuICAgIGNvbnN0IHJvb20gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmdldE9uZShyb29tSWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRNZW1iZXJzID0gcm9vbS5tZW1iZXJzLmZpbHRlcigobWVtYmVyKSA9PiBtZW1iZXIuaWQgIT09IHVzZXJJZCk7XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHJvb21JZCwge1xuICAgICAgbWVtYmVyczogdXBkYXRlZE1lbWJlcnMsXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ2hhdE1lc3NhZ2VTZXJ2aWNlIEltcGxlbWVudGF0aW9ucyAgIC0tLS1cblxuICBhc3luYyBzZW5kTWVzc2FnZShcbiAgICByb29tSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU6IEFYUENvbnRlbnRUeXBlID0gJ3RleHQnLFxuICAgIHJlcGx5SWQ/OiBzdHJpbmcsXG4gICAgdXNlcklkPzogc3RyaW5nLFxuICApOiBQcm9taXNlPEFYTUNoYXRNZXNzYWdlPiB7XG4gICAgY29uc3QgYXV0aG9yID0gdXNlcklkID8gYXdhaXQgdGhpcy5nZXRVc2VySW5mbyh1c2VySWQpIDogdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2VDb250ZW50OiBBWFBDb250ZW50ID0geyBjb250ZW50LCBjb250ZW50VHlwZSB9O1xuICAgIGNvbnN0IG1lc3NhZ2U6IE9taXQ8QVhNQ29udmVyc2F0aW9uTWVzc2FnZSwgJ2lkJz4gPSB7XG4gICAgICByb29tSWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlQ29udGVudCxcbiAgICAgIGF1dGhvcixcbiAgICAgIHJlcGx5SWQsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBjcmVhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICAgIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgICAgcmVhY3Rpb25zOiBbXSxcbiAgICAgIHNlZW46IFtdLFxuICAgIH07XG4gICAgY29uc3QgbWVzc2FnZUlkID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5pbnNlcnRPbmUoeyAuLi5tZXNzYWdlIH0pO1xuICAgIGNvbnN0IG5ld01lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuICAgIGNvbnN0IGZvcm1hdHRlZE1lc3NhZ2UgPSBhd2FpdCB0aGlzLmZvcm1hdE1lc3NhZ2UobmV3TWVzc2FnZSk7XG5cbiAgICB0aGlzLl9tZXNzYWdlU2VudCQubmV4dChmb3JtYXR0ZWRNZXNzYWdlKTtcblxuICAgIHJldHVybiBmb3JtYXR0ZWRNZXNzYWdlO1xuICB9XG5cbiAgYXN5bmMgZ2V0TWVzc2FnZXMocm9vbUlkOiBzdHJpbmcsIHNraXAgPSAwLCB0YWtlID0gOTkpOiBQcm9taXNlPHsgaXRlbXM6IEFYTUNoYXRNZXNzYWdlW107IHRvdGFsOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UucXVlcnkoe1xuICAgICAgc2tpcCxcbiAgICAgIHRha2UsXG4gICAgICBmaWx0ZXI6IHsgZmllbGQ6ICdyb29tSWQnLCB2YWx1ZTogcm9vbUlkLCBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0gfSxcbiAgICAgIHNvcnQ6IFt7IGZpZWxkOiAnY3JlYXRlZEF0JywgZGlyOiAnZGVzYycgfV0sXG4gICAgfSk7XG4gICAgY29uc3QgZm9ybWF0dGVkTWVzc2FnZXMgPSBhd2FpdCBQcm9taXNlLmFsbChyZXN1bHQuaXRlbXMubWFwKChtKSA9PiB0aGlzLmZvcm1hdE1lc3NhZ2UobSkpKTtcbiAgICByZXR1cm4geyBpdGVtczogZm9ybWF0dGVkTWVzc2FnZXMsIHRvdGFsOiByZXN1bHQudG90YWwgfTtcbiAgfVxuXG4gIGFzeW5jIGdldE1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRNZXNzYWdlPiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0TWVzc2FnZShtZXNzYWdlKTtcbiAgfVxuXG4gIGFzeW5jIGVkaXRNZXNzYWdlKFxuICAgIG1lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBjb250ZW50VHlwZTogQVhQQ29udGVudFR5cGUgPSAndGV4dCcsXG4gICk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VDb250ZW50OiBBWFBDb250ZW50ID0geyBjb250ZW50LCBjb250ZW50VHlwZSB9O1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShtZXNzYWdlSWQsIHtcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VDb250ZW50LFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZGVsZXRlT25lKG1lc3NhZ2VJZCk7XG4gICAgICB0aGlzLl9tZXNzYWdlUmVtb3ZlZCQubmV4dChtZXNzYWdlSWQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXBseU1lc3NhZ2UoXG4gICAgcmVwbHlUb01lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBjb250ZW50VHlwZTogQVhQQ29udGVudFR5cGUgPSAndGV4dCcsXG4gICk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsTWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKHJlcGx5VG9NZXNzYWdlSWQpO1xuICAgIHJldHVybiB0aGlzLnNlbmRNZXNzYWdlKG9yaWdpbmFsTWVzc2FnZS5yb29tSWQsIGNvbnRlbnQsIGNvbnRlbnRUeXBlLCByZXBseVRvTWVzc2FnZUlkKTtcbiAgfVxuXG4gIGFzeW5jIHBpbk1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUobWVzc2FnZUlkLCB7XG4gICAgICBpc1Bpbm5lZDogdHJ1ZSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5waW5NZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKG1lc3NhZ2VJZCwge1xuICAgICAgaXNQaW5uZWQ6IGZhbHNlLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENoYXRSZWFjdGlvblNlcnZpY2UgSW1wbGVtZW50YXRpb25zICAgLS0tLVxuXG4gIGFzeW5jIGFkZFJlYWN0aW9uKG1lc3NhZ2VJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+IHtcbiAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgY29uc3QgcmVhY3Rpb25zID0gbWVzc2FnZS5yZWFjdGlvbnMgfHwgW107XG4gICAgaWYgKHJlYWN0aW9ucy5zb21lKChyKSA9PiByLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkICYmIHIudHlwZSA9PT0gdHlwZSkpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGVkUmVhY3Rpb25zOiBBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdID0gWy4uLnJlYWN0aW9ucywgeyBhdXRob3IsIHR5cGUgfV07XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUobWVzc2FnZUlkLCB7XG4gICAgICByZWFjdGlvbnM6IHVwZGF0ZWRSZWFjdGlvbnMsXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9KTtcbiAgICB0aGlzLl9tZXNzYWdlUmVhY3RlZCQubmV4dChyZXMpO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBhc3luYyByZW1vdmVSZWFjdGlvbihtZXNzYWdlSWQ6IHN0cmluZywgdHlwZTogQVhNUmVhY3Rpb25UeXBlKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiB7XG4gICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRSZWFjdGlvbnMgPSAobWVzc2FnZS5yZWFjdGlvbnMgfHwgW10pLmZpbHRlcigocikgPT4gIShyLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkICYmIHIudHlwZSA9PT0gdHlwZSkpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKG1lc3NhZ2VJZCwge1xuICAgICAgcmVhY3Rpb25zOiB1cGRhdGVkUmVhY3Rpb25zLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gICAgdGhpcy5fbWVzc2FnZVJlYWN0ZWQkLm5leHQocmVzKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmVhY3Rpb25zKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdPiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgcmV0dXJuIG1lc3NhZ2UucmVhY3Rpb25zIHx8IFtdO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDaGF0U2VlblNlcnZpY2UgSW1wbGVtZW50YXRpb25zICAgLS0tLVxuXG4gIGFzeW5jIG1hcmtTZWVuKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiB7XG4gICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuICAgIGNvbnN0IHNlZW4gPSBtZXNzYWdlLnNlZW4gfHwgW107XG4gICAgaWYgKHNlZW4uc29tZSgocykgPT4gcy5hdXRob3IuaWQgPT09IGF1dGhvci5pZCkpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGVkU2VlbjogQVhNQ29udmVyc2F0aW9uU2VlbltdID0gWy4uLnNlZW4sIHsgYXV0aG9yLCB0eXBlOiAncmVhZCcgYXMgQVhNU2VlblR5cGUgfV07XG4gICAgY29uc3QgdXBkYXRlZE1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShtZXNzYWdlSWQsIHtcbiAgICAgIHNlZW46IHVwZGF0ZWRTZWVuLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gICAgdGhpcy5fbWVzc2FnZVNlZW4kLm5leHQoYXdhaXQgdGhpcy5mb3JtYXRNZXNzYWdlKHVwZGF0ZWRNZXNzYWdlKSk7XG4gICAgcmV0dXJuIHVwZGF0ZWRNZXNzYWdlO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2VlbkJ5KG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25TZWVuW10+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUobWVzc2FnZUlkKTtcbiAgICByZXR1cm4gbWVzc2FnZS5zZWVuIHx8IFtdO1xuICB9XG5cbiAgYXN5bmMgbWFya1Jvb21TZWVuKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghcm9vbUlkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBpdGVtcyB9ID0gYXdhaXQgdGhpcy5nZXRNZXNzYWdlcyhyb29tSWQsIDAsIDk5KTtcbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VySWQgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQ7XG5cbiAgICAgIGNvbnN0IHVucmVhZE1lc3NhZ2VzID0gaXRlbXMuZmlsdGVyKFxuICAgICAgICAobWVzc2FnZSkgPT4gbWVzc2FnZS5hdXRob3IuaWQgIT09IGN1cnJlbnRVc2VySWQgJiYgIW1lc3NhZ2Uuc2Vlbj8uc29tZSgocykgPT4gcy5hdXRob3IuaWQgPT09IGN1cnJlbnRVc2VySWQpLFxuICAgICAgKTtcblxuICAgICAgaWYgKHVucmVhZE1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodW5yZWFkTWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB0aGlzLm1hcmtTZWVuKG1lc3NhZ2UuaWQpKSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9yb29tU2VlbiQubmV4dChyb29tSWQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIG1hcmtpbmcgcm9vbSAke3Jvb21JZH0gYXMgc2VlbjpgLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBUeXBpbmcgU3RhdHVzIEltcGxlbWVudGF0aW9ucyAgIC0tLS1cblxuICBhc3luYyBzdGFydFR5cGluZyhyb29tSWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJJZCA/IGF3YWl0IHRoaXMuZ2V0VXNlckluZm8odXNlcklkKSA6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICB0aGlzLl90eXBpbmdTdGF0dXMkLm5leHQoeyByb29tSWQsIHVzZXIsIGlzVHlwaW5nOiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RvcFR5cGluZyhyb29tSWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJJZCA/IGF3YWl0IHRoaXMuZ2V0VXNlckluZm8odXNlcklkKSA6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICB0aGlzLl90eXBpbmdTdGF0dXMkLm5leHQoeyByb29tSWQsIHVzZXIsIGlzVHlwaW5nOiBmYWxzZSB9KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/badge\";\nimport * as i3 from \"@acorex/components/avatar\";\nexport class AXMChatItemComponent {\n constructor() {\n // Input\n this.data = input.required();\n this.typing = input(false);\n this.lastMessageReaction = input(null);\n // Output\n this.pressChatItem = output();\n // Services\n this.sessionService = inject(AXPSessionService);\n this.datePipe = inject(DatePipe);\n this.chatName = signal({\n fullName: 'Loading...',\n id: '',\n isPrivate: false,\n });\n this.#chatInfoEffect = effect(async () => {\n const { members, title, id } = this.data();\n if (members.length > 1) {\n this.chatName.set({\n fullName: title || 'Group Chat',\n id,\n isPrivate: false,\n });\n return;\n }\n const member = members[0];\n if (!member) {\n this.chatName.set({ fullName: 'Unknown User', id: '', isPrivate: true });\n return;\n }\n this.chatName.set({\n fullName: member.fullName || 'Unknown User',\n id: member.id,\n isPrivate: true,\n });\n });\n this.formattedLastMessageDate = computed(() => {\n const lastMessage = this.data().lastMessage;\n if (!lastMessage?.createdAt) {\n return '';\n }\n const messageDate = new Date(lastMessage.createdAt);\n const today = new Date();\n const isToday = messageDate.getFullYear() === today.getFullYear() &&\n messageDate.getMonth() === today.getMonth() &&\n messageDate.getDate() === today.getDate();\n if (isToday) {\n return this.datePipe.transform(messageDate, 'shortTime');\n }\n else {\n return this.datePipe.transform(messageDate, 'mediumDate');\n }\n });\n this.lastMessage = computed(() => {\n const message = this.data().lastMessage;\n if (!message)\n return { content: 'No messages yet', contentType: 'text', reactions: [] };\n return {\n content: message.message.contentType === 'text' ? message.message.content : message.message.contentType,\n contentType: message.message.contentType,\n reactions: message.reactions || [],\n author: message.author,\n };\n });\n this.hasUnread = computed(() => {\n return this.data().unreadCount > 0;\n });\n this.unreadCount = computed(() => {\n return this.data().unreadCount.toString();\n });\n }\n #chatInfoEffect;\n onPressChatItem(id) {\n this.pressChatItem.emit(id);\n }\n messageSeenStatus() {\n const lastMessage = this.data().lastMessage;\n if (!lastMessage)\n return '';\n // Check if current user is the author\n if (this.sessionService.user?.id === lastMessage.author?.id) {\n // Check if message has been seen by anyone\n return lastMessage.seen.length > 0 ? 'ax-icon-dobble-check' : 'ax-icon-check';\n }\n return '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMChatItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.6\", type: AXMChatItemComponent, isStandalone: true, selector: \"axm-chat-item\", inputs: { data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: true, transformFunction: null }, typing: { classPropertyName: \"typing\", publicName: \"typing\", isSignal: true, isRequired: false, transformFunction: null }, lastMessageReaction: { classPropertyName: \"lastMessageReaction\", publicName: \"lastMessageReaction\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressChatItem: \"pressChatItem\" }, ngImport: i0, template: \"<div\\n [id]=\\\"data().id\\\"\\n class=\\\"ax-cursor-pointer ax-p-4 ax-flex ax-items-center ax-justify-between ax-gap-4 ax-border-b ax-border-divider\\\"\\n (click)=\\\"onPressChatItem(data().id)\\\"\\n>\\n <!-- Avatar and User Info Section -->\\n <div class=\\\"ax-flex ax-min-w-0 ax-gap-4 ax-flex-1\\\">\\n <!-- Avatar with Online Status -->\\n <div class=\\\"ax-flex-shrink-0\\\">\\n @if (chatName().isPrivate) {\\n <axp-user-avatar [size]=\\\"48\\\" [userId]=\\\"chatName().id\\\"></axp-user-avatar>\\n } @else {\\n <ax-avatar [size]=\\\"48\\\">\\n <ax-text class=\\\"ax-primary-lightest\\\">\\n <small class=\\\"ax-text-xs ax-font-semibold fas fa-users\\\"></small>\\n </ax-text>\\n </ax-avatar>\\n }\\n <!--Temp-->\\n </div>\\n\\n <!-- User Details and Last Message -->\\n <div class=\\\"ax-flex ax-flex-col ax-min-w-0 ax-flex-1 ax-gap-1\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2\\\">\\n <p class=\\\"ax-font-semibold ax-text-on-surface ax-truncate ax-py-1\\\" [title]=\\\"chatName().fullName\\\">\\n {{ chatName().fullName }}\\n </p>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (messageSeenStatus()) {\\n <ax-icon class=\\\"ax-icon ax-text-success ax-size-5\\\" [class]=\\\"messageSeenStatus()\\\"></ax-icon>\\n }\\n @if (this.data().lastMessage) {\\n <span class=\\\"ax-text-xs ax-whitespace-nowrap\\\">\\n {{ formattedLastMessageDate() }}\\n </span>\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2 ax-mt-1 ax-overflow-hidden\\\">\\n @if (typing()) {\\n <div class=\\\"ax-pb-1 ax-flex ax-justify-center ax-items-end ax-gap-1\\\">\\n <span>is typing</span>\\n <div class=\\\"typing-indicator\\\">\\n <span></span>\\n <span></span>\\n <span></span>\\n </div>\\n </div>\\n } @else {\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-sm ax-shrink ax-min-w-0\\\">\\n @if ((lastMessage().author?.fullName || lastMessage().author?.username) && !chatName().isPrivate) {\\n <span class=\\\"ax-text-on-surface-light ax-font-semibold ax-capitalize\\\">\\n {{ lastMessage().author?.fullName || lastMessage().author?.username + ': ' }}\\n </span>\\n }\\n @switch (lastMessage().contentType) {\\n @case ('image') {\\n <i class=\\\"fa-regular fa-image\\\"></i>\\n }\\n @case ('video') {\\n <i class=\\\"fa-regular fa-video\\\"></i>\\n }\\n @case ('file') {\\n <i class=\\\"fa-regular fa-file\\\"></i>\\n }\\n @case ('audio') {\\n <i class=\\\"fa-regular fa-microphone\\\"></i>\\n }\\n @case ('link') {\\n <i class=\\\"fa-regular fa-link\\\"></i>\\n }\\n }\\n\\n <span class=\\\"ax-truncate ax-capitalize\\\">\\n {{ lastMessage().content }}\\n </span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n @if (hasUnread()) {\\n <ax-badge color=\\\"primary\\\" [text]=\\\"unreadCount()\\\" class=\\\"ax-flex-shrink-0 ax-ml-auto\\\"></ax-badge>\\n }\\n <!-- @if (lastMessageReaction()) {\\n <div class=\\\"ax-flex ax-items-center ax-gap-1 ax-bg-surface ax-rounded-full ax-p-1 ax-px-2\\\">\\n <span class=\\\"ax-text-sm\\\">{{ lastMessageReaction() }}</span>\\n <span class=\\\"ax-text-xs\\\">{{ lastMessage().reactions.length }}</span>\\n </div>\\n } -->\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:block;width:100%}.typing-indicator{display:flex;align-items:center;padding-bottom:.1rem}.typing-indicator span{height:6px;width:6px;margin:0 1px;background-color:#9e9ea1;border-radius:50%;display:inline-block;animation:bounce 1.4s infinite ease-in-out both}.typing-indicator span:nth-child(1){animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i2.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"component\", type: AXPUserAvatarComponent, selector: \"axp-user-avatar\", inputs: [\"size\", \"userId\"] }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"component\", type: i3.AXAvatarComponent, selector: \"ax-avatar\", inputs: [\"color\", \"size\", \"shape\", \"look\"], outputs: [\"sizeChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMChatItemComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXDecoratorModule, AXBadgeModule, AXPUserAvatarComponent, AXAvatarModule, AXDecoratorModule], template: \"<div\\n [id]=\\\"data().id\\\"\\n class=\\\"ax-cursor-pointer ax-p-4 ax-flex ax-items-center ax-justify-between ax-gap-4 ax-border-b ax-border-divider\\\"\\n (click)=\\\"onPressChatItem(data().id)\\\"\\n>\\n <!-- Avatar and User Info Section -->\\n <div class=\\\"ax-flex ax-min-w-0 ax-gap-4 ax-flex-1\\\">\\n <!-- Avatar with Online Status -->\\n <div class=\\\"ax-flex-shrink-0\\\">\\n @if (chatName().isPrivate) {\\n <axp-user-avatar [size]=\\\"48\\\" [userId]=\\\"chatName().id\\\"></axp-user-avatar>\\n } @else {\\n <ax-avatar [size]=\\\"48\\\">\\n <ax-text class=\\\"ax-primary-lightest\\\">\\n <small class=\\\"ax-text-xs ax-font-semibold fas fa-users\\\"></small>\\n </ax-text>\\n </ax-avatar>\\n }\\n <!--Temp-->\\n </div>\\n\\n <!-- User Details and Last Message -->\\n <div class=\\\"ax-flex ax-flex-col ax-min-w-0 ax-flex-1 ax-gap-1\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2\\\">\\n <p class=\\\"ax-font-semibold ax-text-on-surface ax-truncate ax-py-1\\\" [title]=\\\"chatName().fullName\\\">\\n {{ chatName().fullName }}\\n </p>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (messageSeenStatus()) {\\n <ax-icon class=\\\"ax-icon ax-text-success ax-size-5\\\" [class]=\\\"messageSeenStatus()\\\"></ax-icon>\\n }\\n @if (this.data().lastMessage) {\\n <span class=\\\"ax-text-xs ax-whitespace-nowrap\\\">\\n {{ formattedLastMessageDate() }}\\n </span>\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2 ax-mt-1 ax-overflow-hidden\\\">\\n @if (typing()) {\\n <div class=\\\"ax-pb-1 ax-flex ax-justify-center ax-items-end ax-gap-1\\\">\\n <span>is typing</span>\\n <div class=\\\"typing-indicator\\\">\\n <span></span>\\n <span></span>\\n <span></span>\\n </div>\\n </div>\\n } @else {\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-sm ax-shrink ax-min-w-0\\\">\\n @if ((lastMessage().author?.fullName || lastMessage().author?.username) && !chatName().isPrivate) {\\n <span class=\\\"ax-text-on-surface-light ax-font-semibold ax-capitalize\\\">\\n {{ lastMessage().author?.fullName || lastMessage().author?.username + ': ' }}\\n </span>\\n }\\n @switch (lastMessage().contentType) {\\n @case ('image') {\\n <i class=\\\"fa-regular fa-image\\\"></i>\\n }\\n @case ('video') {\\n <i class=\\\"fa-regular fa-video\\\"></i>\\n }\\n @case ('file') {\\n <i class=\\\"fa-regular fa-file\\\"></i>\\n }\\n @case ('audio') {\\n <i class=\\\"fa-regular fa-microphone\\\"></i>\\n }\\n @case ('link') {\\n <i class=\\\"fa-regular fa-link\\\"></i>\\n }\\n }\\n\\n <span class=\\\"ax-truncate ax-capitalize\\\">\\n {{ lastMessage().content }}\\n </span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n @if (hasUnread()) {\\n <ax-badge color=\\\"primary\\\" [text]=\\\"unreadCount()\\\" class=\\\"ax-flex-shrink-0 ax-ml-auto\\\"></ax-badge>\\n }\\n <!-- @if (lastMessageReaction()) {\\n <div class=\\\"ax-flex ax-items-center ax-gap-1 ax-bg-surface ax-rounded-full ax-p-1 ax-px-2\\\">\\n <span class=\\\"ax-text-sm\\\">{{ lastMessageReaction() }}</span>\\n <span class=\\\"ax-text-xs\\\">{{ lastMessage().reactions.length }}</span>\\n </div>\\n } -->\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:block;width:100%}.typing-indicator{display:flex;align-items:center;padding-bottom:.1rem}.typing-indicator span{height:6px;width:6px;margin:0 1px;background-color:#9e9ea1;border-radius:50%;display:inline-block;animation:bounce 1.4s infinite ease-in-out both}.typing-indicator span:nth-child(1){animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NvbXBvbmVudHMvY2hhdC1pdGVtL2NoYXQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jb21wb25lbnRzL2NoYXQtaXRlbS9jaGF0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVcEgsTUFBTSxPQUFPLG9CQUFvQjtJQVBqQztRQVFFLFFBQVE7UUFDUixTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZSxDQUFDO1FBQ3JDLFdBQU0sR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDL0Isd0JBQW1CLEdBQUcsS0FBSyxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUVqRCxTQUFT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Q2hGLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7OEdBakdVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLG1oQkNoQmpDLDJzSEE2RkEscWdCRC9FWSxpQkFBaUIsc1ZBQUUsYUFBYSwwSUFBRSxzQkFBc0IsdUZBQUUsY0FBYzs7MkZBRXZFLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhBdmF0YXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBVc2VyQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNQ2hhdFJvb20gfSBmcm9tICcuLi8uLi9jaGF0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tY2hhdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0FYRGVjb3JhdG9yTW9kdWxlLCBBWEJhZGdlTW9kdWxlLCBBWFBVc2VyQXZhdGFyQ29tcG9uZW50LCBBWEF2YXRhck1vZHVsZSwgQVhEZWNvcmF0b3JNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1DaGF0SXRlbUNvbXBvbmVudCB7XG4gIC8vIElucHV0XG4gIGRhdGEgPSBpbnB1dC5yZXF1aXJlZDxBWE1DaGF0Um9vbT4oKTtcbiAgdHlwaW5nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBsYXN0TWVzc2FnZVJlYWN0aW9uID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gT3V0cHV0XG4gIHByZXNzQ2hhdEl0ZW0gPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIC8vIFNlcnZpY2VzXG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcblxuICBwcm90ZWN0ZWQgY2hhdE5hbWUgPSBzaWduYWw8eyBmdWxsTmFtZTogc3RyaW5nOyBpZDogc3RyaW5nOyBpc1ByaXZhdGU6IGJvb2xlYW4gfT4oe1xuICAgIGZ1bGxOYW1lOiAnTG9hZGluZy4uLicsXG4gICAgaWQ6ICcnLFxuICAgIGlzUHJpdmF0ZTogZmFsc2UsXG4gIH0pO1xuXG4gICNjaGF0SW5mb0VmZmVjdCA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBtZW1iZXJzLCB0aXRsZSwgaWQgfSA9IHRoaXMuZGF0YSgpO1xuXG4gICAgaWYgKG1lbWJlcnMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5jaGF0TmFtZS5zZXQoe1xuICAgICAgICBmdWxsTmFtZTogdGl0bGUgfHwgJ0dyb3VwIENoYXQnLFxuICAgICAgICBpZCxcbiAgICAgICAgaXNQcml2YXRlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lbWJlciA9IG1lbWJlcnNbMF07XG4gICAgaWYgKCFtZW1iZXIpIHtcbiAgICAgIHRoaXMuY2hhdE5hbWUuc2V0KHsgZnVsbE5hbWU6ICdVbmtub3duIFVzZXInLCBpZDogJycsIGlzUHJpdmF0ZTogdHJ1ZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoYXROYW1lLnNldCh7XG4gICAgICBmdWxsTmFtZTogbWVtYmVyLmZ1bGxOYW1lIHx8ICdVbmtub3duIFVzZXInLFxuICAgICAgaWQ6IG1lbWJlci5pZCxcbiAgICAgIGlzUHJpdmF0ZTogdHJ1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGZvcm1hdHRlZExhc3RNZXNzYWdlRGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IHRoaXMuZGF0YSgpLmxhc3RNZXNzYWdlO1xuICAgIGlmICghbGFzdE1lc3NhZ2U/LmNyZWF0ZWRBdCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlRGF0ZSA9IG5ldyBEYXRlKGxhc3RNZXNzYWdlLmNyZWF0ZWRBdCk7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGlzVG9kYXkgPVxuICAgICAgbWVzc2FnZURhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdG9kYXkuZ2V0RnVsbFllYXIoKSAmJlxuICAgICAgbWVzc2FnZURhdGUuZ2V0TW9udGgoKSA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJlxuICAgICAgbWVzc2FnZURhdGUuZ2V0RGF0ZSgpID09PSB0b2RheS5nZXREYXRlKCk7XG5cbiAgICBpZiAoaXNUb2RheSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG1lc3NhZ2VEYXRlLCAnc2hvcnRUaW1lJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShtZXNzYWdlRGF0ZSwgJ21lZGl1bURhdGUnKTtcbiAgICB9XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBsYXN0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kYXRhKCkubGFzdE1lc3NhZ2U7XG4gICAgaWYgKCFtZXNzYWdlKSByZXR1cm4geyBjb250ZW50OiAnTm8gbWVzc2FnZXMgeWV0JywgY29udGVudFR5cGU6ICd0ZXh0JywgcmVhY3Rpb25zOiBbXSB9O1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBtZXNzYWdlLm1lc3NhZ2UuY29udGVudFR5cGUgPT09ICd0ZXh0JyA/IG1lc3NhZ2UubWVzc2FnZS5jb250ZW50IDogbWVzc2FnZS5tZXNzYWdlLmNvbnRlbnRUeXBlLFxuICAgICAgY29udGVudFR5cGU6IG1lc3NhZ2UubWVzc2FnZS5jb250ZW50VHlwZSxcbiAgICAgIHJlYWN0aW9uczogbWVzc2FnZS5yZWFjdGlvbnMgfHwgW10sXG4gICAgICBhdXRob3I6IG1lc3NhZ2UuYXV0aG9yLFxuICAgIH07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBoYXNVbnJlYWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSgpLnVucmVhZENvdW50ID4gMDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHVucmVhZENvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEoKS51bnJlYWRDb3VudC50b1N0cmluZygpO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgb25QcmVzc0NoYXRJdGVtKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByZXNzQ2hhdEl0ZW0uZW1pdChpZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWVzc2FnZVNlZW5TdGF0dXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IHRoaXMuZGF0YSgpLmxhc3RNZXNzYWdlO1xuICAgIGlmICghbGFzdE1lc3NhZ2UpIHJldHVybiAnJztcblxuICAgIC8vIENoZWNrIGlmIGN1cnJlbnQgdXNlciBpcyB0aGUgYXV0aG9yXG4gICAgaWYgKHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcj8uaWQgPT09IGxhc3RNZXNzYWdlLmF1dGhvcj8uaWQpIHtcbiAgICAgIC8vIENoZWNrIGlmIG1lc3NhZ2UgaGFzIGJlZW4gc2VlbiBieSBhbnlvbmVcbiAgICAgIHJldHVybiBsYXN0TWVzc2FnZS5zZWVuLmxlbmd0aCA+IDAgPyAnYXgtaWNvbi1kb2JibGUtY2hlY2snIDogJ2F4LWljb24tY2hlY2snO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuIiwiPGRpdlxuICBbaWRdPVwiZGF0YSgpLmlkXCJcbiAgY2xhc3M9XCJheC1jdXJzb3ItcG9pbnRlciBheC1wLTQgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWdhcC00IGF4LWJvcmRlci1iIGF4LWJvcmRlci1kaXZpZGVyXCJcbiAgKGNsaWNrKT1cIm9uUHJlc3NDaGF0SXRlbShkYXRhKCkuaWQpXCJcbj5cbiAgPCEtLSBBdmF0YXIgYW5kIFVzZXIgSW5mbyBTZWN0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1taW4tdy0wIGF4LWdhcC00IGF4LWZsZXgtMVwiPlxuICAgIDwhLS0gQXZhdGFyIHdpdGggT25saW5lIFN0YXR1cyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC1zaHJpbmstMFwiPlxuICAgICAgQGlmIChjaGF0TmFtZSgpLmlzUHJpdmF0ZSkge1xuICAgICAgICA8YXhwLXVzZXItYXZhdGFyIFtzaXplXT1cIjQ4XCIgW3VzZXJJZF09XCJjaGF0TmFtZSgpLmlkXCI+PC9heHAtdXNlci1hdmF0YXI+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGF4LWF2YXRhciBbc2l6ZV09XCI0OFwiPlxuICAgICAgICAgIDxheC10ZXh0IGNsYXNzPVwiYXgtcHJpbWFyeS1saWdodGVzdFwiPlxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiYXgtdGV4dC14cyBheC1mb250LXNlbWlib2xkIGZhcyBmYS11c2Vyc1wiPjwvc21hbGw+XG4gICAgICAgICAgPC9heC10ZXh0PlxuICAgICAgICA8L2F4LWF2YXRhcj5cbiAgICAgIH1cbiAgICAgIDwhLS1UZW1wLS0+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFVzZXIgRGV0YWlscyBhbmQgTGFzdCBNZXNzYWdlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LW1pbi13LTAgYXgtZmxleC0xIGF4LWdhcC0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWdhcC0yXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LW9uLXN1cmZhY2UgYXgtdHJ1bmNhdGUgYXgtcHktMVwiIFt0aXRsZV09XCJjaGF0TmFtZSgpLmZ1bGxOYW1lXCI+XG4gICAgICAgICAge3sgY2hhdE5hbWUoKS5mdWxsTmFtZSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMVwiPlxuICAgICAgICAgIEBpZiAobWVzc2FnZVNlZW5TdGF0dXMoKSkge1xuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LXRleHQtc3VjY2VzcyBheC1zaXplLTVcIiBbY2xhc3NdPVwibWVzc2FnZVNlZW5TdGF0dXMoKVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICh0aGlzLmRhdGEoKS5sYXN0TWVzc2FnZSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhzIGF4LXdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhc3RNZXNzYWdlRGF0ZSgpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1nYXAtMiBheC1tdC0xIGF4LW92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICBAaWYgKHR5cGluZygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXBiLTEgYXgtZmxleCBheC1qdXN0aWZ5LWNlbnRlciBheC1pdGVtcy1lbmQgYXgtZ2FwLTFcIj5cbiAgICAgICAgICAgIDxzcGFuPmlzIHR5cGluZzwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBpbmctaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yIGF4LXRleHQtc20gYXgtc2hyaW5rIGF4LW1pbi13LTBcIj5cbiAgICAgICAgICAgIEBpZiAoKGxhc3RNZXNzYWdlKCkuYXV0aG9yPy5mdWxsTmFtZSB8fCBsYXN0TWVzc2FnZSgpLmF1dGhvcj8udXNlcm5hbWUpICYmICFjaGF0TmFtZSgpLmlzUHJpdmF0ZSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtb24tc3VyZmFjZS1saWdodCBheC1mb250LXNlbWlib2xkIGF4LWNhcGl0YWxpemVcIj5cbiAgICAgICAgICAgICAgICB7eyBsYXN0TWVzc2FnZSgpLmF1dGhvcj8uZnVsbE5hbWUgfHwgbGFzdE1lc3NhZ2UoKS5hdXRob3I/LnVzZXJuYW1lICsgJzogJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAc3dpdGNoIChsYXN0TWVzc2FnZSgpLmNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICAgIEBjYXNlICgnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLWltYWdlXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlICgndmlkZW8nKSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXZpZGVvXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlICgnZmlsZScpIHtcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtZmlsZVwiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAY2FzZSAoJ2F1ZGlvJykge1xuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtcmVndWxhciBmYS1taWNyb3Bob25lXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlICgnbGluaycpIHtcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtbGlua1wiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRydW5jYXRlIGF4LWNhcGl0YWxpemVcIj5cbiAgICAgICAgICAgICAge3sgbGFzdE1lc3NhZ2UoKS5jb250ZW50IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yXCI+XG4gICAgICAgICAgQGlmIChoYXNVbnJlYWQoKSkge1xuICAgICAgICAgICAgPGF4LWJhZGdlIGNvbG9yPVwicHJpbWFyeVwiIFt0ZXh0XT1cInVucmVhZENvdW50KClcIiBjbGFzcz1cImF4LWZsZXgtc2hyaW5rLTAgYXgtbWwtYXV0b1wiPjwvYXgtYmFkZ2U+XG4gICAgICAgICAgfVxuICAgICAgICAgIDwhLS0gQGlmIChsYXN0TWVzc2FnZVJlYWN0aW9uKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMSBheC1iZy1zdXJmYWNlIGF4LXJvdW5kZWQtZnVsbCBheC1wLTEgYXgtcHgtMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtc21cIj57eyBsYXN0TWVzc2FnZVJlYWN0aW9uKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC14c1wiPnt7IGxhc3RNZXNzYWdlKCkucmVhY3Rpb25zLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, HostListener, inject, signal, viewChild, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, startWith } from 'rxjs';\nimport { AXMUserLookupPopup } from '../comment';\nimport { AXMChatService } from './chat.service';\nimport { AXMChatItemComponent } from './components/chat-item/chat-item.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/router\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@acorex/components/badge\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/components/search-box\";\nimport * as i7 from \"@acorex/components/tabs\";\nimport * as i8 from \"@acorex/components/button\";\nimport * as i9 from \"@acorex/components/skeleton\";\nexport class AXMChatComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n this.activatedRoute = inject(ActivatedRoute);\n this.chatService = inject(AXMChatService);\n this.popupService = inject(AXPopupService);\n this.dialogService = inject(AXDialogService);\n this.router = inject(Router);\n this.unsubscribe = inject(AXUnsubscriber);\n // View Children\n this.tab = viewChild('tab');\n this.container = viewChild('container');\n // State signals\n this.rooms = signal([]);\n this.allRooms = signal([]);\n this.selectedRoom = signal(null);\n this.isLoading = signal(false);\n this.typingStatus = signal({});\n this.error = signal(null);\n this.activeTab = signal(0);\n this.isSearching = signal(false);\n this.searchQuery = signal('');\n this.showSearch = signal(true);\n this.placeholder = signal('Search chats...');\n // Computed signals\n // filteredRooms = computed(() => {\n // let chatRooms = this.rooms();\n // // Apply search filter\n // if (this.searchQuery()) {\n // const searchText = this.searchQuery().toLowerCase();\n // chatRooms = chatRooms.filter(async (room) => {\n // const user = await this.userService.getOne(room.members?.[0]?.id);\n // const roomName = `${user.firstName} ${user.lastName}` || '';\n // const lastMessage = room.lastMessage?.message?.content || '';\n // return roomName.toLowerCase().includes(searchText) || lastMessage.toLowerCase().includes(searchText);\n // });\n // }\n // // Apply tab filter\n // if (this.activeTab() === 1) {\n // return chatRooms.filter((room) => room.unreadCount > 0);\n // }\n // return chatRooms;\n // });\n this.filteredRooms = signal([]);\n this.searchEffect = effect(async () => {\n let chatRooms = this.allRooms();\n // Search filter\n const query = (this.searchQuery() || '').toLowerCase();\n if (query) {\n // Perform async enrichment for names\n const filtered = [];\n for (const room of chatRooms) {\n try {\n let roomName = '';\n // Handle group chats vs. single-user chats\n if (room.members && room.members.length > 1) {\n roomName = room.title || '';\n }\n else if (room.members && room.members.length === 1) {\n const member = room.members[0];\n if (member) {\n roomName = member.fullName || '';\n }\n }\n const lastMessage = room.lastMessage?.message?.content || '';\n if (roomName.toLowerCase().includes(query) || lastMessage.toLowerCase().includes(query)) {\n filtered.push(room);\n }\n }\n catch (error) {\n console.error(`Failed to process search for room ${room.id}`, error);\n }\n }\n chatRooms = filtered;\n }\n // Tab filter\n if (this.activeTab() === 1) {\n chatRooms = chatRooms.filter((room) => room.unreadCount > 0);\n }\n this.filteredRooms.set(chatRooms);\n });\n this.unreadCount = computed(() => this.allRooms().filter((i) => i.unreadCount > 0).length);\n this.allCount = computed(() => this.allRooms().length);\n this.hasUnread = computed(() => this.allRooms().filter((i) => i.unreadCount > 0).length > 0);\n this.totalCount = computed(() => this.allRooms().length || 0);\n //switch tab to unread if there is no unread\n this.autoSwitchTab = effect(() => {\n if (this.activeTab() === 1 && !this.hasUnread()) {\n this.activeTab.set(0);\n }\n });\n this.af = afterNextRender(() => {\n const tabComponent = this.tab();\n if (tabComponent) {\n tabComponent.onActiveTabChanged.subscribe((i) => {\n this.activeTab.set(i.index);\n });\n }\n //(window as any).a = this.container()?.startSideDrawer();\n });\n }\n onTabChange(event) {\n this.activeTab.set(event.index);\n }\n async ngOnInit() {\n super.ngOnInit();\n this.isLoading.set(true);\n this.error.set(null);\n await this.loadChats();\n this.isLoading.set(false);\n //\n this.router.events\n .pipe(this.unsubscribe.takeUntilDestroy, filter((event) => event instanceof NavigationEnd), startWith(null))\n .subscribe(async () => {\n await this.loadFromRoute();\n });\n //\n this.chatService.roomRemoved$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((roomId) => {\n this.allRooms.update((rooms) => rooms.filter((r) => r.id !== roomId));\n if (roomId === this.selectedRoom()?.id) {\n this.selectedRoom.set(null);\n this.router.navigate(['./'], { relativeTo: this.activatedRoute });\n }\n });\n this.chatService.roomSeen$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((roomId) => {\n const currentRooms = this.allRooms();\n const updatedRooms = currentRooms.map((room) => {\n if (room.id === roomId) {\n return { ...room, unreadCount: 0 };\n }\n return room;\n });\n this.allRooms.set(updatedRooms);\n });\n this.chatService.messageSeen$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((message) => {\n const currentRooms = this.allRooms();\n const updatedRooms = currentRooms.map((room) => {\n if (room.id === message.roomId) {\n return { ...room, unreadCount: room.unreadCount - 1 };\n }\n return room;\n });\n this.allRooms.set(updatedRooms);\n });\n this.chatService.typingStatus$.pipe(this.unsubscribe.takeUntilDestroy).subscribe(async (status) => {\n const currentUserId = this.sessionService.user?.id;\n if (status.user.id !== currentUserId) {\n if (status.isTyping) {\n this.typingStatus.update((value) => ({\n ...value,\n [status.roomId]: { user: status.user.fullName || '', isTyping: true },\n }));\n }\n else {\n this.typingStatus.update((value) => {\n const { [status.roomId]: _, ...rest } = value;\n return rest;\n });\n }\n }\n });\n this.chatService.messageSent$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((message) => {\n const rooms = this.allRooms();\n const roomIndex = rooms.findIndex((r) => r.id === message.roomId);\n if (roomIndex > -1) {\n const roomToUpdate = rooms[roomIndex];\n const updatedRoom = {\n ...roomToUpdate,\n lastMessage: message,\n unreadCount: message.author.id !== this.sessionService.user?.id\n ? (roomToUpdate.unreadCount || 0) + 1\n : roomToUpdate.unreadCount,\n };\n const newRooms = [updatedRoom, ...rooms.filter((r) => r.id !== message.roomId)];\n this.allRooms.set(newRooms);\n }\n else {\n // New room, fetch it and add it to the top.\n this.chatService.getRoom(message.roomId).then((newRoom) => {\n this.allRooms.update((currentRooms) => {\n // Prepending the new room\n return [newRoom, ...currentRooms];\n });\n });\n }\n });\n this.chatService.messageReacted$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((message) => {\n this.allRooms.update((rooms) => {\n return rooms.map((room) => {\n if (room.lastMessage?.id === message.id) {\n return {\n ...room,\n lastMessage: {\n ...room.lastMessage,\n reactions: message.reactions,\n },\n };\n }\n return room;\n });\n });\n });\n }\n async loadFromRoute() {\n const chatId = this.activatedRoute.snapshot.firstChild?.paramMap.get('id');\n if (chatId) {\n this.openChat(chatId);\n }\n else {\n this.selectedRoom.set(null);\n }\n }\n // Page Interface Implementation\n async getPageTitle() {\n const room = this.selectedRoom();\n if (!room && this.layoutService.isMobileDevice()) {\n return await this.translateService.translateAsync('plural-title', { scope: 'conversation' });\n }\n if (!room) {\n return '';\n }\n const { members, title, id } = room;\n if (members.length > 1) {\n return title || 'Group Chat';\n }\n const member = members[0];\n if (!member) {\n return 'Unknown User';\n }\n return member.fullName || 'Unknown User';\n }\n getPageDescription() {\n const typing = this.typingStatus();\n const selectedRoomId = this.selectedRoom()?.id;\n if (selectedRoomId && typing[selectedRoomId]?.isTyping) {\n return `${typing[selectedRoomId].user} is typing...`;\n }\n const room = this.selectedRoom();\n return room?.topic || '';\n }\n async getBackButton() {\n if (this.selectedRoom()) {\n return {\n title: await this.translateService.translateAsync('back-to-chat-list', { scope: 'conversation' }),\n };\n }\n else\n return null;\n }\n async getSecondaryMenuItems() {\n return this.layoutService.isMobileDevice()\n ? []\n : [\n {\n title: await this.translateService.translateAsync('remove-chat', { scope: 'conversation' }),\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n command: {\n name: 'remove-chat',\n },\n },\n ];\n }\n async execute(command) {\n switch (command.name) {\n case 'remove-chat':\n const result = await this.dialogService.confirm('Remove Chat', 'Are you sure you want to remove this chat?');\n if (result) {\n await this.chatService.deleteRoom(this.selectedRoom()?.id);\n this.router.navigate(['./'], { relativeTo: this.activatedRoute });\n }\n break;\n }\n }\n onBackButtonClick() {\n this.selectedRoom.set(null);\n this.typingStatus.update((value) => {\n const { [this.selectedRoom()?.id]: _, ...rest } = value;\n return rest;\n });\n this.router.navigate(['./'], { relativeTo: this.activatedRoute });\n }\n onKeydownHandler(event) {\n if (this.selectedRoom()) {\n this.onBackButtonClick();\n }\n }\n // Methods\n async loadChats() {\n try {\n // Use the updated service method to get rooms with last messages\n const response = await this.chatService.listRooms();\n // Sort rooms by last message createdAt timestamp in descending order\n const sortedRooms = response.items.sort((a, b) => {\n const dateA = a.lastMessage?.createdAt || a.createdAt || 0;\n const dateB = b.lastMessage?.createdAt || b.createdAt || 0;\n return new Date(dateB).getTime() - new Date(dateA).getTime();\n });\n this.allRooms.set(sortedRooms);\n this.rooms.set(sortedRooms);\n }\n catch (error) {\n this.error.set('Failed to load chats. Please try again.');\n console.error('Error loading chats:', error);\n }\n }\n async refreshChat() {\n await this.loadChats();\n }\n async openChat(chatId) {\n try {\n this.typingStatus.update((value) => {\n const { [chatId]: _, ...rest } = value;\n return rest;\n });\n // Use the service method to mark chat as read\n await this.chatService.markRoomSeen(chatId);\n // Update local state without making another network request\n const currentRooms = this.allRooms();\n const updatedRooms = currentRooms.map((room) => {\n if (room.id === chatId) {\n // Reset unread count for the selected room\n return { ...room, unreadCount: 0 };\n }\n return room;\n });\n // Update the rooms signals\n this.allRooms.set(updatedRooms);\n this.rooms.set(updatedRooms);\n // Find the selected room\n const selectedRoom = updatedRooms.find((room) => room.id === chatId) || null;\n this.selectedRoom.set(selectedRoom);\n // Navigate to the chat details\n this.router.navigate([chatId], { relativeTo: this.activatedRoute });\n }\n catch (error) {\n console.error('Failed to mark chat as read:', error);\n }\n }\n searchChat(query) {\n this.searchQuery.set(query);\n this.isSearching.set(!!query);\n }\n // Header methods\n onSearch(query) {\n this.searchChat(query);\n }\n clearSearch() {\n this.searchQuery.set('');\n this.isSearching.set(false);\n }\n // Footer methods\n async onNewConversation() {\n const popupConfig = {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n closeButton: true,\n closeOnBackdropClick: false,\n };\n const popup = await this.popupService.open(AXMUserLookupPopup, popupConfig);\n const members = popup.data?.lookup;\n try {\n if (members) {\n const res = await this.chatService.createRoom(members, popup.data?.title);\n await this.refreshChat();\n this.router.navigate([res.id], { relativeTo: this.activatedRoute });\n }\n }\n catch (error) {\n this.toastService.danger('Failed to create room');\n }\n }\n ngOnDestroy() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMChatComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.6\", type: AXMChatComponent, isStandalone: true, selector: \"axm-chat\", host: { listeners: { \"document:keydown.escape\": \"onKeydownHandler($event)\" } }, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMChatComponent,\n },\n AXUnsubscriber,\n ], viewQueries: [{ propertyName: \"tab\", first: true, predicate: [\"tab\"], descendants: true, isSignal: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout #container>\\n <axp-layout-start-side class=\\\"ax-border-e ax-lightest-surface ax-h-full\\\">\\n <axp-layout-header>\\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </axp-layout-toolbar>\\n </axp-layout-header>\\n <axp-layout-content class=\\\"ax-flex ax-flex-col ax-min-h-0 ax-max-w-80\\\">\\n @if (!layoutService.isMobileDevice()) {\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-layout-content>\\n </axp-layout-start-side>\\n\\n <axp-page-content style=\\\"height: calc(100vh - 22rem)\\\">\\n @if (selectedRoom()) {\\n <router-outlet></router-outlet>\\n } @else if (layoutService.isMobileDevice()) {\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<ng-template #template>\\n <!-- Tabs -->\\n <div class=\\\"ax-px-4\\\">\\n @if (hasUnread()) {\\n <ax-tabs\\n #tab\\n class=\\\"ax-text-neutral-400\\\"\\n [look]=\\\"'with-line'\\\"\\n [location]=\\\"'bottom'\\\"\\n [fitParent]=\\\"true\\\"\\n (onActiveTabChanged)=\\\"onTabChange($event)\\\"\\n >\\n <ax-tab-item text=\\\"All\\\" [active]=\\\"activeTab() === 0\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"totalCount().toString()\\\"\\n [color]=\\\"activeTab() === 0 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n <ax-tab-item text=\\\"Unread\\\" [active]=\\\"activeTab() === 1\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"unreadCount().toString()\\\"\\n [color]=\\\"activeTab() === 1 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n </ax-tabs>\\n }\\n </div>\\n\\n <!-- Chat List Content -->\\n <div\\n class=\\\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between ax-min-w-80\\\"\\n [class.ax-border-t]=\\\"hasUnread()\\\"\\n >\\n <!-- Loading State -->\\n @if (isLoading()) {\\n <div class=\\\"ax-p-4 ax-space-y-4\\\">\\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\\n <div class=\\\"ax-flex ax-items-center ax-space-x-3\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-12 ax-h-12 ax-rounded-full\\\"></ax-skeleton>\\n <div class=\\\"ax-flex-1 ax-space-y-2\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-3/4 ax-h-4 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-1/2 ax-h-3 ax-rounded-md\\\"></ax-skeleton>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Error State -->\\n @if (error()) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\\\">\\n <ax-icon class=\\\"ax-text-danger ax-text-5xl ax-mb-3\\\">\\n <i class=\\\"fa-light fa-circle-exclamation\\\"></i>\\n </ax-icon>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-text-secondary ax-mb-4\\\">{{ error() }}</p>\\n <ax-button\\n [text]=\\\"'try-again' | translate: { scope: 'conversation' } | async\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"refreshChat()\\\"\\n ></ax-button>\\n </div>\\n }\\n\\n <!-- Chat List -->\\n @if (!isLoading() && !error()) {\\n <div class=\\\"ax-flex-1 ax-overflow-y-auto\\\">\\n @for (i of filteredRooms(); track i.id) {\\n <axm-chat-item\\n [data]=\\\"i\\\"\\n [typing]=\\\"$any(typingStatus()[i.id])?.isTyping || false\\\"\\n [lastMessageReaction]=\\\"i.lastMessage?.reactions?.[0]?.type ?? null\\\"\\n [attr.data-id]=\\\"i.id\\\"\\n (click)=\\\"openChat(i.id)\\\"\\n [class.ax-bg-dark]=\\\"selectedRoom()?.id === i.id\\\"\\n class=\\\"ax-transition-all ax-duration-100 hover:ax-bg-surface\\\"\\n [@fadeIn]\\n tabindex=\\\"0\\\"\\n (keydown.enter)=\\\"openChat(i.id)\\\"\\n role=\\\"button\\\"\\n ></axm-chat-item>\\n }\\n\\n <!-- Empty State -->\\n @empty {\\n <div class=\\\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\\\">\\n @if (isSearching()) {\\n No chats found matching your search\\n } @else {\\n No chats available\\n }\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Footer Content -->\\n <div class=\\\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\\\">\\n <ax-button class=\\\"ax-w-full\\\" color=\\\"primary\\\" text=\\\"New Conversation\\\" (onClick)=\\\"onNewConversation()\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-plus\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: AXMChatItemComponent, selector: \"axm-chat-item\", inputs: [\"data\", \"typing\", \"lastMessageReaction\"], outputs: [\"pressChatItem\"] }, { kind: \"ngmodule\", type: \n // Common Modules\n CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i2.RouterOutlet, selector: \"router-outlet\", inputs: [\"name\", \"routerOutletData\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }, { kind: \"ngmodule\", type: \n // Acorex Core Modules\n AXFormatModule }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"ngmodule\", type: AXCommentModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }, { kind: \"ngmodule\", type: \n // Acorex Component Modules\n // AXResizableDirective,\n AXImageModule }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i4.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i6.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"component\", type: i7.AXTabsComponent, selector: \"ax-tabs\", inputs: [\"look\", \"location\", \"fitParent\", \"minWidth\", \"content\"], outputs: [\"onActiveTabChanged\"] }, { kind: \"component\", type: i7.AXTabItemComponent, selector: \"ax-tab-item\", inputs: [\"disabled\", \"text\", \"key\", \"headerTemplate\", \"active\"], outputs: [\"disabledChange\", \"onClick\", \"onBlur\", \"onFocus\", \"activeChange\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i8.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXWysiwygModule }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"ngmodule\", type: AXSelectBoxModule }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXToolBarModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i9.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPThemeLayoutStartSideComponent, selector: \"axp-layout-page-start-side, axp-layout-start-side\" }, { kind: \"component\", type: AXPThemeLayoutHeaderComponent, selector: \"axp-layout-header\" }, { kind: \"component\", type: AXPThemeLayoutToolbarComponent, selector: \"axp-layout-toolbar\" }], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n ]),\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMChatComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMChatComponent,\n },\n AXUnsubscriber,\n ], imports: [\n AXMChatItemComponent,\n // Common Modules\n CommonModule,\n FormsModule,\n RouterModule,\n // Acorex Core Modules\n AXFormatModule,\n AXConversationModule,\n AXCommentModule,\n AXTranslationModule,\n // Acorex Component Modules\n // AXResizableDirective,\n AXImageModule,\n AXAvatarModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTextBoxModule,\n AXSearchBoxModule,\n AXTabsModule,\n AXButtonModule,\n AXLoadingModule,\n AXWysiwygModule,\n AXLabelModule,\n AXSelectBoxModule,\n AXFormModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXToolBarModule,\n AXSkeletonModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutToolbarComponent,\n ], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n ]),\n ], template: \"<axp-page-layout #container>\\n <axp-layout-start-side class=\\\"ax-border-e ax-lightest-surface ax-h-full\\\">\\n <axp-layout-header>\\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </axp-layout-toolbar>\\n </axp-layout-header>\\n <axp-layout-content class=\\\"ax-flex ax-flex-col ax-min-h-0 ax-max-w-80\\\">\\n @if (!layoutService.isMobileDevice()) {\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-layout-content>\\n </axp-layout-start-side>\\n\\n <axp-page-content style=\\\"height: calc(100vh - 22rem)\\\">\\n @if (selectedRoom()) {\\n <router-outlet></router-outlet>\\n } @else if (layoutService.isMobileDevice()) {\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<ng-template #template>\\n <!-- Tabs -->\\n <div class=\\\"ax-px-4\\\">\\n @if (hasUnread()) {\\n <ax-tabs\\n #tab\\n class=\\\"ax-text-neutral-400\\\"\\n [look]=\\\"'with-line'\\\"\\n [location]=\\\"'bottom'\\\"\\n [fitParent]=\\\"true\\\"\\n (onActiveTabChanged)=\\\"onTabChange($event)\\\"\\n >\\n <ax-tab-item text=\\\"All\\\" [active]=\\\"activeTab() === 0\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"totalCount().toString()\\\"\\n [color]=\\\"activeTab() === 0 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n <ax-tab-item text=\\\"Unread\\\" [active]=\\\"activeTab() === 1\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"unreadCount().toString()\\\"\\n [color]=\\\"activeTab() === 1 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n </ax-tabs>\\n }\\n </div>\\n\\n <!-- Chat List Content -->\\n <div\\n class=\\\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between ax-min-w-80\\\"\\n [class.ax-border-t]=\\\"hasUnread()\\\"\\n >\\n <!-- Loading State -->\\n @if (isLoading()) {\\n <div class=\\\"ax-p-4 ax-space-y-4\\\">\\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\\n <div class=\\\"ax-flex ax-items-center ax-space-x-3\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-12 ax-h-12 ax-rounded-full\\\"></ax-skeleton>\\n <div class=\\\"ax-flex-1 ax-space-y-2\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-3/4 ax-h-4 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-1/2 ax-h-3 ax-rounded-md\\\"></ax-skeleton>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Error State -->\\n @if (error()) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\\\">\\n <ax-icon class=\\\"ax-text-danger ax-text-5xl ax-mb-3\\\">\\n <i class=\\\"fa-light fa-circle-exclamation\\\"></i>\\n </ax-icon>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-text-secondary ax-mb-4\\\">{{ error() }}</p>\\n <ax-button\\n [text]=\\\"'try-again' | translate: { scope: 'conversation' } | async\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"refreshChat()\\\"\\n ></ax-button>\\n </div>\\n }\\n\\n <!-- Chat List -->\\n @if (!isLoading() && !error()) {\\n <div class=\\\"ax-flex-1 ax-overflow-y-auto\\\">\\n @for (i of filteredRooms(); track i.id) {\\n <axm-chat-item\\n [data]=\\\"i\\\"\\n [typing]=\\\"$any(typingStatus()[i.id])?.isTyping || false\\\"\\n [lastMessageReaction]=\\\"i.lastMessage?.reactions?.[0]?.type ?? null\\\"\\n [attr.data-id]=\\\"i.id\\\"\\n (click)=\\\"openChat(i.id)\\\"\\n [class.ax-bg-dark]=\\\"selectedRoom()?.id === i.id\\\"\\n class=\\\"ax-transition-all ax-duration-100 hover:ax-bg-surface\\\"\\n [@fadeIn]\\n tabindex=\\\"0\\\"\\n (keydown.enter)=\\\"openChat(i.id)\\\"\\n role=\\\"button\\\"\\n ></axm-chat-item>\\n }\\n\\n <!-- Empty State -->\\n @empty {\\n <div class=\\\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\\\">\\n @if (isSearching()) {\\n No chats found matching your search\\n } @else {\\n No chats available\\n }\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Footer Content -->\\n <div class=\\\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\\\">\\n <ax-button class=\\\"ax-w-full\\\" color=\\\"primary\\\" text=\\\"New Conversation\\\" (onClick)=\\\"onNewConversation()\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-plus\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n</ng-template>\\n\" }]\n }], propDecorators: { onKeydownHandler: [{\n type: HostListener,\n args: ['document:keydown.escape', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jaGF0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NoYXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFpQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVB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TyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDcEQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7NkJBQzdFLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDs4QkFnVUQsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEF2YXRhck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDb21tZW50TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29udmVyc2F0aW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvaW1hZ2UnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcHVwQ29uZmlnLCBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFNlYXJjaEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWFyY2gtYm94JztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFRhYnNDb21wb25lbnQsIEFYVGFic01vZHVsZSwgQVhUYWJTdHJpcENoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWFRvb2xCYXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBBWFd5c2l3eWdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvd3lzaXd5Zyc7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBWFBBY3Rpb25NZW51SXRlbSwgQVhQQmFja0J1dHRvbiwgQVhQRXhlY3V0ZUNvbW1hbmQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRIZWFkZXJDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0U3RhcnRTaWRlQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dFRvb2xiYXJDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQUGFnZUxheW91dEJhc2UsIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50LCBBWFBQYWdlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvdmlld3MnO1xuaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTVVzZXJMb29rdXBQb3B1cCB9IGZyb20gJy4uL2NvbW1lbnQnO1xuaW1wb3J0IHsgQVhNQ2hhdFNlcnZpY2UgfSBmcm9tICcuL2NoYXQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1DaGF0TWVzc2FnZSwgQVhNQ2hhdFJvb20gfSBmcm9tICcuL2NoYXQudHlwZSc7XG5pbXBvcnQgeyBBWE1DaGF0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGF0LWl0ZW0vY2hhdC1pdGVtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1jaGF0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGF0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWE1DaGF0Q29tcG9uZW50LFxuICAgIH0sXG4gICAgQVhVbnN1YnNjcmliZXIsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBBWE1DaGF0SXRlbUNvbXBvbmVudCxcbiAgICAvLyBDb21tb24gTW9kdWxlc1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgLy8gQWNvcmV4IENvcmUgTW9kdWxlc1xuICAgIEFYRm9ybWF0TW9kdWxlLFxuICAgIEFYQ29udmVyc2F0aW9uTW9kdWxlLFxuICAgIEFYQ29tbWVudE1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIC8vIEFjb3JleCBDb21wb25lbnQgTW9kdWxlc1xuICAgIC8vIEFYUmVzaXphYmxlRGlyZWN0aXZlLFxuICAgIEFYSW1hZ2VNb2R1bGUsXG4gICAgQVhBdmF0YXJNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgQVhTZWFyY2hCb3hNb2R1bGUsXG4gICAgQVhUYWJzTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFd5c2l3eWdNb2R1bGUsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWFNlbGVjdEJveE1vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYVG9vbEJhck1vZHVsZSxcbiAgICBBWFNrZWxldG9uTW9kdWxlLFxuICAgIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dFN0YXJ0U2lkZUNvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dEhlYWRlckNvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dFRvb2xiYXJDb21wb25lbnQsXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlSW4nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMHB4KScgfSksXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ2hhdENvbXBvbmVudCBleHRlbmRzIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBjaGF0U2VydmljZSA9IGluamVjdChBWE1DaGF0U2VydmljZSk7XG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFYRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmUgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gIC8vIFZpZXcgQ2hpbGRyZW5cbiAgdGFiID0gdmlld0NoaWxkPEFYVGFic0NvbXBvbmVudD4oJ3RhYicpO1xuICBjb250YWluZXIgPSB2aWV3Q2hpbGQ8QVhQUGFnZUxheW91dENvbXBvbmVudD4oJ2NvbnRhaW5lcicpO1xuXG4gIC8vIFN0YXRlIHNpZ25hbHNcbiAgcm9vbXMgPSBzaWduYWw8QVhNQ2hhdFJvb21bXT4oW10pO1xuICBhbGxSb29tcyA9IHNpZ25hbDxBWE1DaGF0Um9vbVtdPihbXSk7XG4gIHNlbGVjdGVkUm9vbSA9IHNpZ25hbDxBWE1DaGF0Um9vbSB8IG51bGw+KG51bGwpO1xuICBpc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICB0eXBpbmdTdGF0dXMgPSBzaWduYWw8eyBba2V5OiBzdHJpbmddOiB7IHVzZXI6IHN0cmluZzsgaXNUeXBpbmc/OiBib29sZWFuIH0gfT4oe30pO1xuXG4gIGVycm9yID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBhY3RpdmVUYWIgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgaXNTZWFyY2hpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBzZWFyY2hRdWVyeSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgc2hvd1NlYXJjaCA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgcGxhY2Vob2xkZXIgPSBzaWduYWw8c3RyaW5nPignU2VhcmNoIGNoYXRzLi4uJyk7XG5cbiAgLy8gQ29tcHV0ZWQgc2lnbmFsc1xuICAvLyBmaWx0ZXJlZFJvb21zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAvLyAgIGxldCBjaGF0Um9vbXMgPSB0aGlzLnJvb21zKCk7XG5cbiAgLy8gICAvLyBBcHBseSBzZWFyY2ggZmlsdGVyXG4gIC8vICAgaWYgKHRoaXMuc2VhcmNoUXVlcnkoKSkge1xuICAvLyAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IHRoaXMuc2VhcmNoUXVlcnkoKS50b0xvd2VyQ2FzZSgpO1xuICAvLyAgICAgY2hhdFJvb21zID0gY2hhdFJvb21zLmZpbHRlcihhc3luYyAocm9vbSkgPT4ge1xuICAvLyAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5nZXRPbmUocm9vbS5tZW1iZXJzPy5bMF0/LmlkKTtcbiAgLy8gICAgICAgY29uc3Qgcm9vbU5hbWUgPSBgJHt1c2VyLmZpcnN0TmFtZX0gJHt1c2VyLmxhc3ROYW1lfWAgfHwgJyc7XG4gIC8vICAgICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gcm9vbS5sYXN0TWVzc2FnZT8ubWVzc2FnZT8uY29udGVudCB8fCAnJztcbiAgLy8gICAgICAgcmV0dXJuIHJvb21OYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dCkgfHwgbGFzdE1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0KTtcbiAgLy8gICAgIH0pO1xuICAvLyAgIH1cblxuICAvLyAgIC8vIEFwcGx5IHRhYiBmaWx0ZXJcbiAgLy8gICBpZiAodGhpcy5hY3RpdmVUYWIoKSA9PT0gMSkge1xuICAvLyAgICAgcmV0dXJuIGNoYXRSb29tcy5maWx0ZXIoKHJvb20pID0+IHJvb20udW5yZWFkQ291bnQgPiAwKTtcbiAgLy8gICB9XG5cbiAgLy8gICByZXR1cm4gY2hhdFJvb21zO1xuICAvLyB9KTtcblxuICBmaWx0ZXJlZFJvb21zID0gc2lnbmFsPEFYTUNoYXRSb29tW10+KFtdKTtcblxuICBzZWFyY2hFZmZlY3QgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjaGF0Um9vbXMgPSB0aGlzLmFsbFJvb21zKCk7XG5cbiAgICAvLyBTZWFyY2ggZmlsdGVyXG4gICAgY29uc3QgcXVlcnkgPSAodGhpcy5zZWFyY2hRdWVyeSgpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgLy8gUGVyZm9ybSBhc3luYyBlbnJpY2htZW50IGZvciBuYW1lc1xuICAgICAgY29uc3QgZmlsdGVyZWQgPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgcm9vbSBvZiBjaGF0Um9vbXMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgcm9vbU5hbWUgPSAnJztcbiAgICAgICAgICAvLyBIYW5kbGUgZ3JvdXAgY2hhdHMgdnMuIHNpbmdsZS11c2VyIGNoYXRzXG4gICAgICAgICAgaWYgKHJvb20ubWVtYmVycyAmJiByb29tLm1lbWJlcnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgcm9vbU5hbWUgPSByb29tLnRpdGxlIHx8ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAocm9vbS5tZW1iZXJzICYmIHJvb20ubWVtYmVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lbWJlciA9IHJvb20ubWVtYmVyc1swXTtcbiAgICAgICAgICAgIGlmIChtZW1iZXIpIHtcbiAgICAgICAgICAgICAgcm9vbU5hbWUgPSBtZW1iZXIuZnVsbE5hbWUgfHwgJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbGFzdE1lc3NhZ2UgPSByb29tLmxhc3RNZXNzYWdlPy5tZXNzYWdlPy5jb250ZW50IHx8ICcnO1xuICAgICAgICAgIGlmIChyb29tTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSB8fCBsYXN0TWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSkge1xuICAgICAgICAgICAgZmlsdGVyZWQucHVzaChyb29tKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHByb2Nlc3Mgc2VhcmNoIGZvciByb29tICR7cm9vbS5pZH1gLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNoYXRSb29tcyA9IGZpbHRlcmVkO1xuICAgIH1cblxuICAgIC8vIFRhYiBmaWx0ZXJcbiAgICBpZiAodGhpcy5hY3RpdmVUYWIoKSA9PT0gMSkge1xuICAgICAgY2hhdFJvb21zID0gY2hhdFJvb21zLmZpbHRlcigocm9vbSkgPT4gcm9vbS51bnJlYWRDb3VudCA+IDApO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRSb29tcy5zZXQoY2hhdFJvb21zKTtcbiAgfSk7XG5cbiAgdW5yZWFkQ291bnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFsbFJvb21zKCkuZmlsdGVyKChpKSA9PiBpLnVucmVhZENvdW50ID4gMCkubGVuZ3RoKTtcbiAgYWxsQ291bnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFsbFJvb21zKCkubGVuZ3RoKTtcbiAgaGFzVW5yZWFkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hbGxSb29tcygpLmZpbHRlcigoaSkgPT4gaS51bnJlYWRDb3VudCA+IDApLmxlbmd0aCA+IDApO1xuICB0b3RhbENvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hbGxSb29tcygpLmxlbmd0aCB8fCAwKTtcblxuICAvL3N3aXRjaCB0YWIgdG8gdW5yZWFkIGlmIHRoZXJlIGlzIG5vIHVucmVhZFxuICBwcml2YXRlIGF1dG9Td2l0Y2hUYWIgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLmFjdGl2ZVRhYigpID09PSAxICYmICF0aGlzLmhhc1VucmVhZCgpKSB7XG4gICAgICB0aGlzLmFjdGl2ZVRhYi5zZXQoMCk7XG4gICAgfVxuICB9KTtcblxuICBhZiA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgY29uc3QgdGFiQ29tcG9uZW50ID0gdGhpcy50YWIoKTtcbiAgICBpZiAodGFiQ29tcG9uZW50KSB7XG4gICAgICB0YWJDb21wb25lbnQub25BY3RpdmVUYWJDaGFuZ2VkLnN1YnNjcmliZSgoaSkgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZVRhYi5zZXQoaS5pbmRleCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8od2luZG93IGFzIGFueSkuYSA9IHRoaXMuY29udGFpbmVyKCk/LnN0YXJ0U2lkZURyYXdlcigpO1xuICB9KTtcblxuICBvblRhYkNoYW5nZShldmVudDogQVhUYWJTdHJpcENoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuYWN0aXZlVGFiLnNldChldmVudC5pbmRleCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRDaGF0cygpO1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgLy9cbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLnRha2VVbnRpbERlc3Ryb3ksXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRGcm9tUm91dGUoKTtcbiAgICAgIH0pO1xuICAgIC8vXG5cbiAgICB0aGlzLmNoYXRTZXJ2aWNlLnJvb21SZW1vdmVkJC5waXBlKHRoaXMudW5zdWJzY3JpYmUudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChyb29tSWQpID0+IHtcbiAgICAgIHRoaXMuYWxsUm9vbXMudXBkYXRlKChyb29tcykgPT4gcm9vbXMuZmlsdGVyKChyKSA9PiByLmlkICE9PSByb29tSWQpKTtcbiAgICAgIGlmIChyb29tSWQgPT09IHRoaXMuc2VsZWN0ZWRSb29tKCk/LmlkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb29tLnNldChudWxsKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYXRTZXJ2aWNlLnJvb21TZWVuJC5waXBlKHRoaXMudW5zdWJzY3JpYmUudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChyb29tSWQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFJvb21zID0gdGhpcy5hbGxSb29tcygpO1xuICAgICAgY29uc3QgdXBkYXRlZFJvb21zID0gY3VycmVudFJvb21zLm1hcCgocm9vbSkgPT4ge1xuICAgICAgICBpZiAocm9vbS5pZCA9PT0gcm9vbUlkKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ucm9vbSwgdW5yZWFkQ291bnQ6IDAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm9vbTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hbGxSb29tcy5zZXQodXBkYXRlZFJvb21zKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2hhdFNlcnZpY2UubWVzc2FnZVNlZW4kLnBpcGUodGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKG1lc3NhZ2U6IEFYTUNoYXRNZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50Um9vbXMgPSB0aGlzLmFsbFJvb21zKCk7XG4gICAgICBjb25zdCB1cGRhdGVkUm9vbXMgPSBjdXJyZW50Um9vbXMubWFwKChyb29tKSA9PiB7XG4gICAgICAgIGlmIChyb29tLmlkID09PSBtZXNzYWdlLnJvb21JZCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLnJvb20sIHVucmVhZENvdW50OiByb29tLnVucmVhZENvdW50IC0gMSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb29tO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFsbFJvb21zLnNldCh1cGRhdGVkUm9vbXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jaGF0U2VydmljZS50eXBpbmdTdGF0dXMkLnBpcGUodGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoYXN5bmMgKHN0YXR1cykgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFVzZXJJZCA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcj8uaWQ7XG4gICAgICBpZiAoc3RhdHVzLnVzZXIuaWQgIT09IGN1cnJlbnRVc2VySWQpIHtcbiAgICAgICAgaWYgKHN0YXR1cy5pc1R5cGluZykge1xuICAgICAgICAgIHRoaXMudHlwaW5nU3RhdHVzLnVwZGF0ZSgodmFsdWUpID0+ICh7XG4gICAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICAgIFtzdGF0dXMucm9vbUlkXTogeyB1c2VyOiBzdGF0dXMudXNlci5mdWxsTmFtZSB8fCAnJywgaXNUeXBpbmc6IHRydWUgfSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50eXBpbmdTdGF0dXMudXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBbc3RhdHVzLnJvb21JZF06IF8sIC4uLnJlc3QgfSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhdFNlcnZpY2UubWVzc2FnZVNlbnQkLnBpcGUodGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgIGNvbnN0IHJvb21zID0gdGhpcy5hbGxSb29tcygpO1xuICAgICAgY29uc3Qgcm9vbUluZGV4ID0gcm9vbXMuZmluZEluZGV4KChyKSA9PiByLmlkID09PSBtZXNzYWdlLnJvb21JZCk7XG5cbiAgICAgIGlmIChyb29tSW5kZXggPiAtMSkge1xuICAgICAgICBjb25zdCByb29tVG9VcGRhdGUgPSByb29tc1tyb29tSW5kZXhdO1xuICAgICAgICBjb25zdCB1cGRhdGVkUm9vbSA9IHtcbiAgICAgICAgICAuLi5yb29tVG9VcGRhdGUsXG4gICAgICAgICAgbGFzdE1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgdW5yZWFkQ291bnQ6XG4gICAgICAgICAgICBtZXNzYWdlLmF1dGhvci5pZCAhPT0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZFxuICAgICAgICAgICAgICA/IChyb29tVG9VcGRhdGUudW5yZWFkQ291bnQgfHwgMCkgKyAxXG4gICAgICAgICAgICAgIDogcm9vbVRvVXBkYXRlLnVucmVhZENvdW50LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdSb29tcyA9IFt1cGRhdGVkUm9vbSwgLi4ucm9vbXMuZmlsdGVyKChyKSA9PiByLmlkICE9PSBtZXNzYWdlLnJvb21JZCldO1xuICAgICAgICB0aGlzLmFsbFJvb21zLnNldChuZXdSb29tcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOZXcgcm9vbSwgZmV0Y2ggaXQgYW5kIGFkZCBpdCB0byB0aGUgdG9wLlxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldFJvb20obWVzc2FnZS5yb29tSWQpLnRoZW4oKG5ld1Jvb20pID0+IHtcbiAgICAgICAgICB0aGlzLmFsbFJvb21zLnVwZGF0ZSgoY3VycmVudFJvb21zKSA9PiB7XG4gICAgICAgICAgICAvLyBQcmVwZW5kaW5nIHRoZSBuZXcgcm9vbVxuICAgICAgICAgICAgcmV0dXJuIFtuZXdSb29tLCAuLi5jdXJyZW50Um9vbXNdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhdFNlcnZpY2UubWVzc2FnZVJlYWN0ZWQkLnBpcGUodGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgIHRoaXMuYWxsUm9vbXMudXBkYXRlKChyb29tcykgPT4ge1xuICAgICAgICByZXR1cm4gcm9vbXMubWFwKChyb29tKSA9PiB7XG4gICAgICAgICAgaWYgKHJvb20ubGFzdE1lc3NhZ2U/LmlkID09PSBtZXNzYWdlLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5yb29tLFxuICAgICAgICAgICAgICBsYXN0TWVzc2FnZToge1xuICAgICAgICAgICAgICAgIC4uLnJvb20ubGFzdE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgcmVhY3Rpb25zOiBtZXNzYWdlLnJlYWN0aW9ucyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByb29tO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRnJvbVJvdXRlKCkge1xuICAgIGNvbnN0IGNoYXRJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZmlyc3RDaGlsZD8ucGFyYW1NYXAuZ2V0KCdpZCcpO1xuICAgIGlmIChjaGF0SWQpIHtcbiAgICAgIHRoaXMub3BlbkNoYXQoY2hhdElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvb20uc2V0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhZ2UgSW50ZXJmYWNlIEltcGxlbWVudGF0aW9uXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJvb20gPSB0aGlzLnNlbGVjdGVkUm9vbSgpO1xuXG4gICAgaWYgKCFyb29tICYmIHRoaXMubGF5b3V0U2VydmljZS5pc01vYmlsZURldmljZSgpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdwbHVyYWwtdGl0bGUnLCB7IHNjb3BlOiAnY29udmVyc2F0aW9uJyB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXJvb20pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB7IG1lbWJlcnMsIHRpdGxlLCBpZCB9ID0gcm9vbTtcblxuICAgIGlmIChtZW1iZXJzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB0aXRsZSB8fCAnR3JvdXAgQ2hhdCc7XG4gICAgfVxuXG4gICAgY29uc3QgbWVtYmVyID0gbWVtYmVyc1swXTtcbiAgICBpZiAoIW1lbWJlcikge1xuICAgICAgcmV0dXJuICdVbmtub3duIFVzZXInO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1iZXIuZnVsbE5hbWUgfHwgJ1Vua25vd24gVXNlcic7XG4gIH1cblxuICBvdmVycmlkZSBnZXRQYWdlRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBpbmcgPSB0aGlzLnR5cGluZ1N0YXR1cygpO1xuICAgIGNvbnN0IHNlbGVjdGVkUm9vbUlkID0gdGhpcy5zZWxlY3RlZFJvb20oKT8uaWQ7XG4gICAgaWYgKHNlbGVjdGVkUm9vbUlkICYmIHR5cGluZ1tzZWxlY3RlZFJvb21JZF0/LmlzVHlwaW5nKSB7XG4gICAgICByZXR1cm4gYCR7dHlwaW5nW3NlbGVjdGVkUm9vbUlkXS51c2VyfSBpcyB0eXBpbmcuLi5gO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb20gPSB0aGlzLnNlbGVjdGVkUm9vbSgpO1xuICAgIHJldHVybiByb29tPy50b3BpYyB8fCAnJztcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldEJhY2tCdXR0b24oKTogUHJvbWlzZTxBWFBCYWNrQnV0dG9uIHwgbnVsbD4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUm9vbSgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdiYWNrLXRvLWNoYXQtbGlzdCcsIHsgc2NvcGU6ICdjb252ZXJzYXRpb24nIH0pLFxuICAgICAgfTtcbiAgICB9IGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRTZWNvbmRhcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5pc01vYmlsZURldmljZSgpXG4gICAgICA/IFtdXG4gICAgICA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdyZW1vdmUtY2hhdCcsIHsgc2NvcGU6ICdjb252ZXJzYXRpb24nIH0pLFxuICAgICAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXRyYXNoLWNhbicsXG4gICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgICAgIG5hbWU6ICdyZW1vdmUtY2hhdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBleGVjdXRlKGNvbW1hbmQ6IEFYUEV4ZWN1dGVDb21tYW5kKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoIChjb21tYW5kLm5hbWUpIHtcbiAgICAgIGNhc2UgJ3JlbW92ZS1jaGF0JzpcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ1JlbW92ZSBDaGF0JywgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBjaGF0PycpO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jaGF0U2VydmljZS5kZWxldGVSb29tKHRoaXMuc2VsZWN0ZWRSb29tKCk/LmlkISk7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgb25CYWNrQnV0dG9uQ2xpY2soKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2VsZWN0ZWRSb29tLnNldChudWxsKTtcbiAgICB0aGlzLnR5cGluZ1N0YXR1cy51cGRhdGUoKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCB7IFt0aGlzLnNlbGVjdGVkUm9vbSgpPy5pZCFdOiBfLCAuLi5yZXN0IH0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiByZXN0O1xuICAgIH0pO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb29tKCkpIHtcbiAgICAgIHRoaXMub25CYWNrQnV0dG9uQ2xpY2soKTtcbiAgICB9XG4gIH1cblxuICAvLyBNZXRob2RzXG4gIGFzeW5jIGxvYWRDaGF0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8gVXNlIHRoZSB1cGRhdGVkIHNlcnZpY2UgbWV0aG9kIHRvIGdldCByb29tcyB3aXRoIGxhc3QgbWVzc2FnZXNcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jaGF0U2VydmljZS5saXN0Um9vbXMoKTtcbiAgICAgIC8vIFNvcnQgcm9vbXMgYnkgbGFzdCBtZXNzYWdlIGNyZWF0ZWRBdCB0aW1lc3RhbXAgaW4gZGVzY2VuZGluZyBvcmRlclxuICAgICAgY29uc3Qgc29ydGVkUm9vbXMgPSByZXNwb25zZS5pdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGVBID0gYS5sYXN0TWVzc2FnZT8uY3JlYXRlZEF0IHx8IGEuY3JlYXRlZEF0IHx8IDA7XG4gICAgICAgIGNvbnN0IGRhdGVCID0gYi5sYXN0TWVzc2FnZT8uY3JlYXRlZEF0IHx8IGIuY3JlYXRlZEF0IHx8IDA7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlQikuZ2V0VGltZSgpIC0gbmV3IERhdGUoZGF0ZUEpLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hbGxSb29tcy5zZXQoc29ydGVkUm9vbXMpO1xuICAgICAgdGhpcy5yb29tcy5zZXQoc29ydGVkUm9vbXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yLnNldCgnRmFpbGVkIHRvIGxvYWQgY2hhdHMuIFBsZWFzZSB0cnkgYWdhaW4uJyk7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGNoYXRzOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWZyZXNoQ2hhdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvYWRDaGF0cygpO1xuICB9XG5cbiAgYXN5bmMgb3BlbkNoYXQoY2hhdElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy50eXBpbmdTdGF0dXMudXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB7IFtjaGF0SWRdOiBfLCAuLi5yZXN0IH0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgICB9KTtcbiAgICAgIC8vIFVzZSB0aGUgc2VydmljZSBtZXRob2QgdG8gbWFyayBjaGF0IGFzIHJlYWRcbiAgICAgIGF3YWl0IHRoaXMuY2hhdFNlcnZpY2UubWFya1Jvb21TZWVuKGNoYXRJZCk7XG5cbiAgICAgIC8vIFVwZGF0ZSBsb2NhbCBzdGF0ZSB3aXRob3V0IG1ha2luZyBhbm90aGVyIG5ldHdvcmsgcmVxdWVzdFxuICAgICAgY29uc3QgY3VycmVudFJvb21zID0gdGhpcy5hbGxSb29tcygpO1xuICAgICAgY29uc3QgdXBkYXRlZFJvb21zID0gY3VycmVudFJvb21zLm1hcCgocm9vbSkgPT4ge1xuICAgICAgICBpZiAocm9vbS5pZCA9PT0gY2hhdElkKSB7XG4gICAgICAgICAgLy8gUmVzZXQgdW5yZWFkIGNvdW50IGZvciB0aGUgc2VsZWN0ZWQgcm9vbVxuICAgICAgICAgIHJldHVybiB7IC4uLnJvb20sIHVucmVhZENvdW50OiAwIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvb207XG4gICAgICB9KTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSByb29tcyBzaWduYWxzXG4gICAgICB0aGlzLmFsbFJvb21zLnNldCh1cGRhdGVkUm9vbXMpO1xuICAgICAgdGhpcy5yb29tcy5zZXQodXBkYXRlZFJvb21zKTtcblxuICAgICAgLy8gRmluZCB0aGUgc2VsZWN0ZWQgcm9vbVxuICAgICAgY29uc3Qgc2VsZWN0ZWRSb29tID0gdXBkYXRlZFJvb21zLmZpbmQoKHJvb20pID0+IHJvb20uaWQgPT09IGNoYXRJZCkgfHwgbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb29tLnNldChzZWxlY3RlZFJvb20pO1xuXG4gICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgY2hhdCBkZXRhaWxzXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbY2hhdElkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbWFyayBjaGF0IGFzIHJlYWQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaENoYXQocXVlcnk6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KHF1ZXJ5KTtcbiAgICB0aGlzLmlzU2VhcmNoaW5nLnNldCghIXF1ZXJ5KTtcbiAgfVxuXG4gIC8vIEhlYWRlciBtZXRob2RzXG4gIG9uU2VhcmNoKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaENoYXQocXVlcnkpO1xuICB9XG5cbiAgY2xlYXJTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hRdWVyeS5zZXQoJycpO1xuICAgIHRoaXMuaXNTZWFyY2hpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8vIEZvb3RlciBtZXRob2RzXG4gIGFzeW5jIG9uTmV3Q29udmVyc2F0aW9uKCkge1xuICAgIGNvbnN0IHBvcHVwQ29uZmlnOiBBWFBvcHVwQ29uZmlnID0ge1xuICAgICAgaGVhZGVyOiB0cnVlLFxuICAgICAgc2l6ZTogJ3NtJyxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICBjbG9zZU9uQmFja2Ryb3BDbGljazogZmFsc2UsXG4gICAgfTtcbiAgICBjb25zdCBwb3B1cCA9IGF3YWl0IHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oQVhNVXNlckxvb2t1cFBvcHVwLCBwb3B1cENvbmZpZyk7XG4gICAgY29uc3QgbWVtYmVycyA9IHBvcHVwLmRhdGE/Lmxvb2t1cCBhcyBzdHJpbmdbXTtcbiAgICB0cnkge1xuICAgICAgaWYgKG1lbWJlcnMpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jaGF0U2VydmljZS5jcmVhdGVSb29tKG1lbWJlcnMsIHBvcHVwLmRhdGE/LnRpdGxlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ2hhdCgpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVzLmlkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0ZhaWxlZCB0byBjcmVhdGUgcm9vbScpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge31cbn1cbiIsIjxheHAtcGFnZS1sYXlvdXQgI2NvbnRhaW5lcj5cbiAgPGF4cC1sYXlvdXQtc3RhcnQtc2lkZSBjbGFzcz1cImF4LWJvcmRlci1lIGF4LWxpZ2h0ZXN0LXN1cmZhY2UgYXgtaC1mdWxsXCI+XG4gICAgPGF4cC1sYXlvdXQtaGVhZGVyPlxuICAgICAgPGF4cC1sYXlvdXQtdGl0bGU+e3sgJ21vZHVsZS1uYW1lJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2NvbnZlcnNhdGlvbicgfSB8IGFzeW5jIH19PC9heHAtbGF5b3V0LXRpdGxlPlxuICAgICAgPGF4cC1sYXlvdXQtdG9vbGJhcj5cbiAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoUXVlcnkoKVwiXG4gICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uU2VhcmNoKCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgIGNsYXNzPVwiYXgtdy1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b24+XG4gICAgICAgIDwvYXgtc2VhcmNoLWJveD5cbiAgICAgIDwvYXhwLWxheW91dC10b29sYmFyPlxuICAgIDwvYXhwLWxheW91dC1oZWFkZXI+XG4gICAgPGF4cC1sYXlvdXQtY29udGVudCBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWluLWgtMCBheC1tYXgtdy04MFwiPlxuICAgICAgQGlmICghbGF5b3V0U2VydmljZS5pc01vYmlsZURldmljZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICA8L2F4cC1sYXlvdXQtY29udGVudD5cbiAgPC9heHAtbGF5b3V0LXN0YXJ0LXNpZGU+XG5cbiAgPGF4cC1wYWdlLWNvbnRlbnQgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSAyMnJlbSlcIj5cbiAgICBAaWYgKHNlbGVjdGVkUm9vbSgpKSB7XG4gICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gICAgfSBAZWxzZSBpZiAobGF5b3V0U2VydmljZS5pc01vYmlsZURldmljZSgpKSB7XG4gICAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgbG9vaz1cInNvbGlkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoUXVlcnkoKVwiXG4gICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvblNlYXJjaCgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgY2xhc3M9XCJheC13LWZ1bGxcIlxuICAgICAgPlxuICAgICAgICA8YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPlxuICAgICAgPC9heC1zZWFyY2gtYm94PlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgPC9heHAtcGFnZS1jb250ZW50PlxuPC9heHAtcGFnZS1sYXlvdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDwhLS0gVGFicyAtLT5cbiAgPGRpdiBjbGFzcz1cImF4LXB4LTRcIj5cbiAgICBAaWYgKGhhc1VucmVhZCgpKSB7XG4gICAgICA8YXgtdGFic1xuICAgICAgICAjdGFiXG4gICAgICAgIGNsYXNzPVwiYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgIFtsb29rXT1cIid3aXRoLWxpbmUnXCJcbiAgICAgICAgW2xvY2F0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgW2ZpdFBhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgKG9uQWN0aXZlVGFiQ2hhbmdlZCk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGF4LXRhYi1pdGVtIHRleHQ9XCJBbGxcIiBbYWN0aXZlXT1cImFjdGl2ZVRhYigpID09PSAwXCI+XG4gICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgIDxheC1iYWRnZVxuICAgICAgICAgICAgICBbdGV4dF09XCJ0b3RhbENvdW50KCkudG9TdHJpbmcoKVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJhY3RpdmVUYWIoKSA9PT0gMCA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1taW4tdy1bMS41cmVtXSBheC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICA+PC9heC1iYWRnZT5cbiAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgPC9heC10YWItaXRlbT5cbiAgICAgICAgPGF4LXRhYi1pdGVtIHRleHQ9XCJVbnJlYWRcIiBbYWN0aXZlXT1cImFjdGl2ZVRhYigpID09PSAxXCI+XG4gICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgIDxheC1iYWRnZVxuICAgICAgICAgICAgICBbdGV4dF09XCJ1bnJlYWRDb3VudCgpLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICBbY29sb3JdPVwiYWN0aXZlVGFiKCkgPT09IDEgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtbWluLXctWzEuNXJlbV0gYXgtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgPjwvYXgtYmFkZ2U+XG4gICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgIDwvYXgtdGFiLWl0ZW0+XG4gICAgICA8L2F4LXRhYnM+XG4gICAgfVxuICA8L2Rpdj5cblxuICA8IS0tIENoYXQgTGlzdCBDb250ZW50IC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3ctaGlkZGVuIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LW1pbi13LTgwXCJcbiAgICBbY2xhc3MuYXgtYm9yZGVyLXRdPVwiaGFzVW5yZWFkKClcIlxuICA+XG4gICAgPCEtLSBMb2FkaW5nIFN0YXRlIC0tPlxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTQgYXgtc3BhY2UteS00XCI+XG4gICAgICAgIEBmb3IgKF8gb2YgWzEsIDIsIDMsIDQsIDUsIDZdOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtc3BhY2UteC0zXCI+XG4gICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cInRydWVcIiBjbGFzcz1cImF4LXctMTIgYXgtaC0xMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXgtMSBheC1zcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJ0cnVlXCIgY2xhc3M9XCJheC13LTMvNCBheC1oLTQgYXgtcm91bmRlZC1tZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwidHJ1ZVwiIGNsYXNzPVwiYXgtdy0xLzIgYXgtaC0zIGF4LXJvdW5kZWQtbWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gICAgQGlmIChlcnJvcigpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtaC1mdWxsIGF4LXAtNCBheC10ZXh0LWNlbnRlclwiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LXRleHQtZGFuZ2VyIGF4LXRleHQtNXhsIGF4LW1iLTNcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWNpcmNsZS1leGNsYW1hdGlvblwiPjwvaT5cbiAgICAgICAgPC9heC1pY29uPlxuICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1sZ1wiPlxuICAgICAgICAgIHt7ICdjaGF0LWVycm9yJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2NvbnZlcnNhdGlvbicgfSB8IGFzeW5jIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtbGdcIj5cbiAgICAgICAgICB7eyAnY2hhdC10cnktYWdhaW4nIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnY29udmVyc2F0aW9uJyB9IHwgYXN5bmMgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cCBjbGFzcz1cImF4LXRleHQtc2Vjb25kYXJ5IGF4LW1iLTRcIj57eyBlcnJvcigpIH19PC9wPlxuICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgW3RleHRdPVwiJ3RyeS1hZ2FpbicgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdjb252ZXJzYXRpb24nIH0gfCBhc3luY1wiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAob25DbGljayk9XCJyZWZyZXNoQ2hhdCgpXCJcbiAgICAgICAgPjwvYXgtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPCEtLSBDaGF0IExpc3QgLS0+XG4gICAgQGlmICghaXNMb2FkaW5nKCkgJiYgIWVycm9yKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgIEBmb3IgKGkgb2YgZmlsdGVyZWRSb29tcygpOyB0cmFjayBpLmlkKSB7XG4gICAgICAgICAgPGF4bS1jaGF0LWl0ZW1cbiAgICAgICAgICAgIFtkYXRhXT1cImlcIlxuICAgICAgICAgICAgW3R5cGluZ109XCIkYW55KHR5cGluZ1N0YXR1cygpW2kuaWRdKT8uaXNUeXBpbmcgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW2xhc3RNZXNzYWdlUmVhY3Rpb25dPVwiaS5sYXN0TWVzc2FnZT8ucmVhY3Rpb25zPy5bMF0/LnR5cGUgPz8gbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWlkXT1cImkuaWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGF0KGkuaWQpXCJcbiAgICAgICAgICAgIFtjbGFzcy5heC1iZy1kYXJrXT1cInNlbGVjdGVkUm9vbSgpPy5pZCA9PT0gaS5pZFwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LXRyYW5zaXRpb24tYWxsIGF4LWR1cmF0aW9uLTEwMCBob3ZlcjpheC1iZy1zdXJmYWNlXCJcbiAgICAgICAgICAgIFtAZmFkZUluXVxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9wZW5DaGF0KGkuaWQpXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgID48L2F4bS1jaGF0LWl0ZW0+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICAgICAgICBAZW1wdHkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTQgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1jZW50ZXIgYXgtdGV4dC1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgIEBpZiAoaXNTZWFyY2hpbmcoKSkge1xuICAgICAgICAgICAgICBObyBjaGF0cyBmb3VuZCBtYXRjaGluZyB5b3VyIHNlYXJjaFxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIE5vIGNoYXRzIGF2YWlsYWJsZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIEZvb3RlciBDb250ZW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1ib3JkZXItdCBheC1ib3JkZXItZGl2aWRlciBheC1iZy1saWdodGVzdCBheC1wLTRcIj5cbiAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC13LWZ1bGxcIiBjb2xvcj1cInByaW1hcnlcIiB0ZXh0PVwiTmV3IENvbnZlcnNhdGlvblwiIChvbkNsaWNrKT1cIm9uTmV3Q29udmVyc2F0aW9uKClcIj5cbiAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgPC9heC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","/**\n * Converts chat service response to chat preview format\n * @param chatResponse - The response from chat service containing items and total\n * @returns Array of formatted chat preview messages\n */\nexport function convertToChatPreview(currentUserId, chatResponse, userName) {\n if (!chatResponse || !chatResponse.items?.length) {\n return [];\n }\n // Map from AXMChatMessage to ChatPreviewMessage\n return chatResponse.items.map((message) => {\n // Determine message type based on content type\n let messageType = 'text';\n // Map contentType to preview type\n if (message.message?.contentType) {\n switch (message.message.contentType) {\n case 'text':\n messageType = 'text';\n break;\n case 'file':\n messageType = 'file';\n break;\n case 'image':\n messageType = 'image';\n break;\n case 'video':\n messageType = 'video';\n break;\n case 'link':\n // Determine if link is for audio or other content\n const content = message.message.content || '';\n if (content.includes('.mp3') || content.includes('.ogg') || content.includes('audio')) {\n messageType = 'audio';\n }\n else {\n messageType = 'text';\n }\n break;\n default:\n messageType = 'text';\n }\n }\n // Extract author name if available\n const name = message.author ? message.author.id : 'Unknown';\n // Create the chat preview message\n const previewMessage = {\n id: message.id,\n sendTime: new Date(message.createdAt || new Date()),\n readTime: new Date(), // Assuming \"read\" when converted\n type: messageType,\n content: message.message?.content || '',\n name: name,\n userName,\n };\n // Add fromId if the message is not from current user\n if (currentUserId !== message.author.id) {\n previewMessage.fromId = message.author?.id;\n }\n else {\n previewMessage.showActionButton = true;\n }\n // Note: Reply information would need to be looked up from the actual messages\n // This would typically be done by the service that has access to all messages\n return previewMessage;\n });\n}\n/**\n * Creates a ChatPreviewMessage from reply information\n * @param message - The original message that is being referenced\n * @returns A ChatPreviewMessage formatted for use as a replyTo\n */\nexport function createReplyPreview(currentUserId, message, userName) {\n if (!message)\n return undefined;\n return {\n id: message.id,\n sendTime: new Date(message.createdAt || new Date()),\n readTime: new Date(),\n type: message.message?.contentType === 'image'\n ? 'image'\n : message.message?.contentType === 'video'\n ? 'video'\n : message.message?.contentType === 'file'\n ? 'file'\n : 'text',\n content: message.message?.content || '',\n name: message.author?.id || 'Unknown',\n fromId: currentUserId !== message.author.id ? message.author?.id : undefined,\n showActionButton: true,\n userName,\n };\n}\n/**\n * Generate demo chat preview data with a variety of message types\n * @returns Array of sample chat preview messages\n */\nexport function generateDemoChatPreview() {\n return [\n {\n id: '0',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n {\n id: '1',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Hello',\n name: 'test name',\n replyTo: {\n id: '0',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n },\n {\n id: '2',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'voice',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfoEF34fJ`,\n },\n {\n id: '3',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Can i have your address information?',\n name: 'test name',\n replyTo: {\n id: '1',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Hello',\n name: 'test name',\n },\n },\n {\n id: '4',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'file',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfoEF34fJ`,\n },\n {\n id: '5',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/300/200`,\n },\n {\n id: '6',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'video',\n name: 'test name',\n content: `https://www.pexels.com/download/video/5495322/?fps=29.97&h=540&w=960`,\n },\n {\n id: '7',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n {\n id: '8',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'audio',\n name: 'kids',\n content: `https://actions.google.com/sounds/v1/ambiences/kids_playing.ogg`,\n },\n {\n id: '9',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/300/200`,\n },\n {\n id: '10',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/200/300`,\n },\n {\n id: '11',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'video',\n name: 'test name',\n content: `https://www.pexels.com/download/video/5495322/?fps=29.97&h=540&w=960`,\n },\n {\n id: '12',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'file',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfo59ChoE+u5BxHVL7ZAS1EF34fJ`,\n },\n {\n id: '13',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'audio',\n name: 'alarm',\n content: `https://actions.google.com/sounds/v1/alarms/digital_watch_alarm_long.ogg`,\n },\n ];\n}\n/**\n * Usage Examples:\n *\n * Example 1: Converting chat service response to chat preview format\n * ```typescript\n * import { AXMChatService } from '../chat.service';\n * import { convertToChatPreview } from './chat-preview.helper';\n *\n * export class ChatPreviewComponent {\n * constructor(private chatService: AXMChatService) {}\n *\n * async loadChatMessages(roomId: string) {\n * const response = await this.chatService.getChatMessages(roomId);\n *\n * // Convert to chat preview format\n * const previewMessages = convertToChatPreview(response);\n *\n * // Use the converted messages\n * this.conversationService.chats.set(previewMessages);\n * }\n * }\n * ```\n *\n * Example 2: Using demo data for development/testing\n * ```typescript\n * import { generateDemoChatPreview } from './chat-preview.helper';\n *\n * export class ChatPreviewDemoComponent {\n * ngOnInit() {\n * // Load demo messages\n * const demoMessages = generateDemoChatPreview();\n *\n * // Use the demo messages\n * this.conversationService.chats.set(demoMessages);\n * }\n * }\n */\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1wcmV2aWV3LmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NoYXQtcHJldmlldy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsYUFBcUIsRUFDckIsWUFBd0QsRUFDeEQsUUFBaUI7SUFFakIsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDakQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN4QywrQ0FBK0M7UUFDL0MsSUFBSSxXQUFXLEdBQStCLE1BQU0sQ0FBQztRQUVyRCxrQ0FBa0M7UUFDbEMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLFFBQVEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEMsS0FBSyxNQUFNO29CQUNULFdBQVcsR0FBRyxNQUFNLENBQUM7b0JBQ3JCLE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULFdBQVcsR0FBRyxNQUFNLENBQUM7b0JBQ3JCLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLFdBQVcsR0FBRyxPQUFPLENBQUM7b0JBQ3RCLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLFdBQVcsR0FBRyxPQUFPLENBQUM7b0JBQ3RCLE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULGtEQUFrRDtvQkFDbEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO29CQUM5QyxJ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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1DaGF0TWVzc2FnZSB9IGZyb20gJy4vY2hhdC50eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGF0UHJldmlld01lc3NhZ2Uge1xuICBpZDogc3RyaW5nO1xuICBmcm9tSWQ/OiBzdHJpbmc7XG4gIHNlbmRUaW1lOiBEYXRlO1xuICByZWFkVGltZTogRGF0ZTtcbiAgdHlwZTogJ3RleHQnIHwgJ3ZvaWNlJyB8ICdmaWxlJyB8ICdpbWFnZScgfCAndmlkZW8nIHwgJ2F1ZGlvJztcbiAgY29udGVudDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlcGx5VG8/OiBDaGF0UHJldmlld01lc3NhZ2U7XG4gIHNob3dBY3Rpb25CdXR0b24/OiBib29sZWFuO1xuICB1c2VyTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBjaGF0IHNlcnZpY2UgcmVzcG9uc2UgdG8gY2hhdCBwcmV2aWV3IGZvcm1hdFxuICogQHBhcmFtIGNoYXRSZXNwb25zZSAtIFRoZSByZXNwb25zZSBmcm9tIGNoYXQgc2VydmljZSBjb250YWluaW5nIGl0ZW1zIGFuZCB0b3RhbFxuICogQHJldHVybnMgQXJyYXkgb2YgZm9ybWF0dGVkIGNoYXQgcHJldmlldyBtZXNzYWdlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvQ2hhdFByZXZpZXcoXG4gIGN1cnJlbnRVc2VySWQ6IHN0cmluZyxcbiAgY2hhdFJlc3BvbnNlOiB7IGl0ZW1zOiBBWE1DaGF0TWVzc2FnZVtdOyB0b3RhbDogbnVtYmVyIH0sXG4gIHVzZXJOYW1lPzogc3RyaW5nLFxuKTogQ2hhdFByZXZpZXdNZXNzYWdlW10ge1xuICBpZiAoIWNoYXRSZXNwb25zZSB8fCAhY2hhdFJlc3BvbnNlLml0ZW1zPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBNYXAgZnJvbSBBWE1DaGF0TWVzc2FnZSB0byBDaGF0UHJldmlld01lc3NhZ2VcbiAgcmV0dXJuIGNoYXRSZXNwb25zZS5pdGVtcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAvLyBEZXRlcm1pbmUgbWVzc2FnZSB0eXBlIGJhc2VkIG9uIGNvbnRlbnQgdHlwZVxuICAgIGxldCBtZXNzYWdlVHlwZTogQ2hhdFByZXZpZXdNZXNzYWdlWyd0eXBlJ10gPSAndGV4dCc7XG5cbiAgICAvLyBNYXAgY29udGVudFR5cGUgdG8gcHJldmlldyB0eXBlXG4gICAgaWYgKG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUpIHtcbiAgICAgIHN3aXRjaCAobWVzc2FnZS5tZXNzYWdlLmNvbnRlbnRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ3RleHQnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmaWxlJzpcbiAgICAgICAgICBtZXNzYWdlVHlwZSA9ICdmaWxlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ2ltYWdlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ3ZpZGVvJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIGxpbmsgaXMgZm9yIGF1ZGlvIG9yIG90aGVyIGNvbnRlbnRcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gbWVzc2FnZS5tZXNzYWdlLmNvbnRlbnQgfHwgJyc7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoJy5tcDMnKSB8fCBjb250ZW50LmluY2x1ZGVzKCcub2dnJykgfHwgY29udGVudC5pbmNsdWRlcygnYXVkaW8nKSkge1xuICAgICAgICAgICAgbWVzc2FnZVR5cGUgPSAnYXVkaW8nO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZXNzYWdlVHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbWVzc2FnZVR5cGUgPSAndGV4dCc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCBhdXRob3IgbmFtZSBpZiBhdmFpbGFibGVcbiAgICBjb25zdCBuYW1lID0gbWVzc2FnZS5hdXRob3IgPyBtZXNzYWdlLmF1dGhvci5pZCA6ICdVbmtub3duJztcblxuICAgIC8vIENyZWF0ZSB0aGUgY2hhdCBwcmV2aWV3IG1lc3NhZ2VcbiAgICBjb25zdCBwcmV2aWV3TWVzc2FnZTogQ2hhdFByZXZpZXdNZXNzYWdlID0ge1xuICAgICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUobWVzc2FnZS5jcmVhdGVkQXQgfHwgbmV3IERhdGUoKSksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSwgLy8gQXNzdW1pbmcgXCJyZWFkXCIgd2hlbiBjb252ZXJ0ZWRcbiAgICAgIHR5cGU6IG1lc3NhZ2VUeXBlLFxuICAgICAgY29udGVudDogbWVzc2FnZS5tZXNzYWdlPy5jb250ZW50IHx8ICcnLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHVzZXJOYW1lLFxuICAgIH07XG5cbiAgICAvLyBBZGQgZnJvbUlkIGlmIHRoZSBtZXNzYWdlIGlzIG5vdCBmcm9tIGN1cnJlbnQgdXNlclxuICAgIGlmIChjdXJyZW50VXNlcklkICE9PSBtZXNzYWdlLmF1dGhvci5pZCkge1xuICAgICAgcHJldmlld01lc3NhZ2UuZnJvbUlkID0gbWVzc2FnZS5hdXRob3I/LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2aWV3TWVzc2FnZS5zaG93QWN0aW9uQnV0dG9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBSZXBseSBpbmZvcm1hdGlvbiB3b3VsZCBuZWVkIHRvIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBhY3R1YWwgbWVzc2FnZXNcbiAgICAvLyBUaGlzIHdvdWxkIHR5cGljYWxseSBiZSBkb25lIGJ5IHRoZSBzZXJ2aWNlIHRoYXQgaGFzIGFjY2VzcyB0byBhbGwgbWVzc2FnZXNcblxuICAgIHJldHVybiBwcmV2aWV3TWVzc2FnZTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIENoYXRQcmV2aWV3TWVzc2FnZSBmcm9tIHJlcGx5IGluZm9ybWF0aW9uXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBvcmlnaW5hbCBtZXNzYWdlIHRoYXQgaXMgYmVpbmcgcmVmZXJlbmNlZFxuICogQHJldHVybnMgQSBDaGF0UHJldmlld01lc3NhZ2UgZm9ybWF0dGVkIGZvciB1c2UgYXMgYSByZXBseVRvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZXBseVByZXZpZXcoXG4gIGN1cnJlbnRVc2VySWQ6IHN0cmluZyxcbiAgbWVzc2FnZTogQVhNQ2hhdE1lc3NhZ2UsXG4gIHVzZXJOYW1lPzogc3RyaW5nLFxuKTogQ2hhdFByZXZpZXdNZXNzYWdlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgc2VuZFRpbWU6IG5ldyBEYXRlKG1lc3NhZ2UuY3JlYXRlZEF0IHx8IG5ldyBEYXRlKCkpLFxuICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgIHR5cGU6XG4gICAgICBtZXNzYWdlLm1lc3NhZ2U/LmNvbnRlbnRUeXBlID09PSAnaW1hZ2UnXG4gICAgICAgID8gJ2ltYWdlJ1xuICAgICAgICA6IG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUgPT09ICd2aWRlbydcbiAgICAgICAgICA/ICd2aWRlbydcbiAgICAgICAgICA6IG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUgPT09ICdmaWxlJ1xuICAgICAgICAgICAgPyAnZmlsZSdcbiAgICAgICAgICAgIDogJ3RleHQnLFxuICAgIGNvbnRlbnQ6IG1lc3NhZ2UubWVzc2FnZT8uY29udGVudCB8fCAnJyxcbiAgICBuYW1lOiBtZXNzYWdlLmF1dGhvcj8uaWQgfHwgJ1Vua25vd24nLFxuICAgIGZyb21JZDogY3VycmVudFVzZXJJZCAhPT0gbWVzc2FnZS5hdXRob3IuaWQgPyBtZXNzYWdlLmF1dGhvcj8uaWQgOiB1bmRlZmluZWQsXG4gICAgc2hvd0FjdGlvbkJ1dHRvbjogdHJ1ZSxcbiAgICB1c2VyTmFtZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBkZW1vIGNoYXQgcHJldmlldyBkYXRhIHdpdGggYSB2YXJpZXR5IG9mIG1lc3NhZ2UgdHlwZXNcbiAqIEByZXR1cm5zIEFycmF5IG9mIHNhbXBsZSBjaGF0IHByZXZpZXcgbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRGVtb0NoYXRQcmV2aWV3KCk6IENoYXRQcmV2aWV3TWVzc2FnZVtdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBpZDogJzAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBKb2huLCBIb3cgYXJlIHlvdT8nLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzEnLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIHJlcGx5VG86IHtcbiAgICAgICAgaWQ6ICcwJyxcbiAgICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIGNvbnRlbnQ6ICdIZWxsbyBKb2huLCBIb3cgYXJlIHlvdT8nLFxuICAgICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzInLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd2b2ljZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBkYXRhOmF1ZGlvL3dlYm07Y29kZWNzPW9wdXM7YmFzZTY0LEdrWGZvRUYzNGZKYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnMycsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgY29udGVudDogJ0NhbiBpIGhhdmUgeW91ciBhZGRyZXNzIGluZm9ybWF0aW9uPycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIHJlcGx5VG86IHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgY29udGVudDogJ0hlbGxvJyxcbiAgICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICc0JyxcbiAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnZmlsZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBkYXRhOmF1ZGlvL3dlYm07Y29kZWNzPW9wdXM7YmFzZTY0LEdrWGZvRUYzNGZKYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNScsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vcGljc3VtLnBob3Rvcy8zMDAvMjAwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNicsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ3ZpZGVvJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vd3d3LnBleGVscy5jb20vZG93bmxvYWQvdmlkZW8vNTQ5NTMyMi8/ZnBzPTI5Ljk3Jmg9NTQwJnc9OTYwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNycsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgY29udGVudDogJ0hlbGxvIEpvaG4sIEhvdyBhcmUgeW91PycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnOCcsXG4gICAgICBmcm9tSWQ6ICcxMCcsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2F1ZGlvJyxcbiAgICAgIG5hbWU6ICdraWRzJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL2FjdGlvbnMuZ29vZ2xlLmNvbS9zb3VuZHMvdjEvYW1iaWVuY2VzL2tpZHNfcGxheWluZy5vZ2dgLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICc5JyxcbiAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICBjb250ZW50OiBgaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzMwMC8yMDBgLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcxMCcsXG4gICAgICBmcm9tSWQ6ICcxMCcsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMzAwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnMTEnLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd2aWRlbycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL3d3dy5wZXhlbHMuY29tL2Rvd25sb2FkL3ZpZGVvLzU0OTUzMjIvP2Zwcz0yOS45NyZoPTU0MCZ3PTk2MGAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzEyJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnZmlsZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBkYXRhOmF1ZGlvL3dlYm07Y29kZWNzPW9wdXM7YmFzZTY0LEdrWGZvNTlDaG9FK3U1QnhIVkw3WkFTMUVGMzRmSmAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzEzJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnYXVkaW8nLFxuICAgICAgbmFtZTogJ2FsYXJtJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL2FjdGlvbnMuZ29vZ2xlLmNvbS9zb3VuZHMvdjEvYWxhcm1zL2RpZ2l0YWxfd2F0Y2hfYWxhcm1fbG9uZy5vZ2dgLFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogVXNhZ2UgRXhhbXBsZXM6XG4gKlxuICogRXhhbXBsZSAxOiBDb252ZXJ0aW5nIGNoYXQgc2VydmljZSByZXNwb25zZSB0byBjaGF0IHByZXZpZXcgZm9ybWF0XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBBWE1DaGF0U2VydmljZSB9IGZyb20gJy4uL2NoYXQuc2VydmljZSc7XG4gKiBpbXBvcnQgeyBjb252ZXJ0VG9DaGF0UHJldmlldyB9IGZyb20gJy4vY2hhdC1wcmV2aWV3LmhlbHBlcic7XG4gKlxuICogZXhwb3J0IGNsYXNzIENoYXRQcmV2aWV3Q29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGF0U2VydmljZTogQVhNQ2hhdFNlcnZpY2UpIHt9XG4gKlxuICogICBhc3luYyBsb2FkQ2hhdE1lc3NhZ2VzKHJvb21JZDogc3RyaW5nKSB7XG4gKiAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYXRTZXJ2aWNlLmdldENoYXRNZXNzYWdlcyhyb29tSWQpO1xuICpcbiAqICAgICAvLyBDb252ZXJ0IHRvIGNoYXQgcHJldmlldyBmb3JtYXRcbiAqICAgICBjb25zdCBwcmV2aWV3TWVzc2FnZXMgPSBjb252ZXJ0VG9DaGF0UHJldmlldyhyZXNwb25zZSk7XG4gKlxuICogICAgIC8vIFVzZSB0aGUgY29udmVydGVkIG1lc3NhZ2VzXG4gKiAgICAgdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzLnNldChwcmV2aWV3TWVzc2FnZXMpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBFeGFtcGxlIDI6IFVzaW5nIGRlbW8gZGF0YSBmb3IgZGV2ZWxvcG1lbnQvdGVzdGluZ1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgZ2VuZXJhdGVEZW1vQ2hhdFByZXZpZXcgfSBmcm9tICcuL2NoYXQtcHJldmlldy5oZWxwZXInO1xuICpcbiAqIGV4cG9ydCBjbGFzcyBDaGF0UHJldmlld0RlbW9Db21wb25lbnQge1xuICogICBuZ09uSW5pdCgpIHtcbiAqICAgICAvLyBMb2FkIGRlbW8gbWVzc2FnZXNcbiAqICAgICBjb25zdCBkZW1vTWVzc2FnZXMgPSBnZW5lcmF0ZURlbW9DaGF0UHJldmlldygpO1xuICpcbiAqICAgICAvLyBVc2UgdGhlIGRlbW8gbWVzc2FnZXNcbiAqICAgICB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMuc2V0KGRlbW9NZXNzYWdlcyk7XG4gKiAgIH1cbiAqIH1cbiAqL1xuIl19","import { AXDomChangeDirective } from '@acorex/cdk/dom';\nimport { AXConversationInputComponent, AXConversationModule, } from '@acorex/components/conversation';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXFileService } from '@acorex/core/file';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { convertToChatPreview } from '../../chat-preview.helper';\nimport { AXMChatService } from '../../chat.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/conversation\";\nimport * as i3 from \"@acorex/components/loading\";\nexport class AXMChatPreviewComponent {\n constructor() {\n this.activatedRoute = inject(ActivatedRoute);\n this.fileService = inject(AXFileService);\n this.chatService = inject(AXMChatService);\n this.sessionService = inject(AXPSessionService);\n this.toastService = inject(AXToastService);\n this.inputRef = viewChild(AXConversationInputComponent);\n this.activeMessage = signal(null);\n this.typing$ = new Subject();\n this.chatData = signal([]);\n this.room = signal(null);\n this.isEditing = signal(false);\n this.editId = signal(null);\n this.height = signal(0);\n this.isLoading = signal(false);\n this.error = signal(null);\n this.isChannel = computed(() => this.room()?.topic === 'channel');\n this.options = signal({\n disabled: false,\n readonly: false,\n value: '',\n });\n this.roomId = '';\n }\n setHeight(height) {\n this.height.set(height);\n }\n ngOnInit() {\n this.activatedRoute.params.subscribe((params) => {\n this.roomId = params['id'];\n if (this.roomId) {\n this.loadMessages(this.roomId);\n this.loadRoomInfo(this.roomId);\n }\n });\n this.chatService.messageSent$.subscribe(async (message) => {\n // Only add messages that are not from the current user and belong to the current room\n if (message.author.id !== this.sessionService.user?.id && message.roomId === this.roomId) {\n await this.chatService.markSeen(message.id);\n this.chatData.update((values) => {\n const newMessage = convertToChatPreview(this.sessionService.user?.id || '', {\n items: [message],\n total: 1,\n })[0];\n return [...values, newMessage];\n });\n }\n });\n // this.typingSubscription = this.typing$.pipe(debounceTime(1000)).subscribe(() => {\n // if (this.roomId) {\n // this.chatService.stopTyping(this.roomId);\n // }\n // });\n }\n ngOnDestroy() {\n this.typingSubscription?.unsubscribe();\n }\n handleTyping(event) {\n if (this.roomId) {\n this.chatService.startTyping(this.roomId);\n this.typing$.next();\n }\n }\n handleFileChange(event) {\n console.log('File Changed:', event);\n }\n handleCancelRecord(event) {\n console.log('Recording Cancelled:', event);\n }\n handleEndRecord(event) {\n this.fileService.blobToBase64(event.data.value).then((base64Content) => {\n // Create a properly formatted chat preview message for voice\n const newVoiceMessage = {\n id: `${Math.floor(Math.random() * 10000)}`,\n content: base64Content,\n sendTime: new Date(),\n readTime: new Date(),\n type: 'voice',\n name: 'test name',\n };\n this.chatData.update((values) => [...values, newVoiceMessage]);\n });\n }\n handleOnSend(e) {\n if (this.isEditing() && this.editId()) {\n this.chatService\n .editMessage(this.editId(), e.data.value, e.data.type || 'text')\n .then((newMessage) => {\n const convertedNewMessage = convertToChatPreview(this.sessionService.user?.id || '', {\n items: [newMessage],\n total: 1,\n })[0];\n this.chatData.update((values) => values.map((item) => (item.id === this.editId() ? { ...convertedNewMessage } : item)));\n this.editId.set(null);\n this.options.update((prev) => ({ ...prev, value: '' }));\n this.isEditing.set(false);\n })\n .catch((error) => {\n this.toastService.danger('Failed to edit message');\n });\n }\n else {\n if (e.data.value && this.roomId) {\n const replyId = e.data.replyChat?.id;\n this.chatService\n .sendMessage(this.roomId, e.data.value, e.data.type || 'text', replyId)\n .then((newMessage) => {\n const convertedNewMessage = convertToChatPreview(this.sessionService.user?.id || '', {\n items: [newMessage],\n total: 1,\n })[0];\n this.chatData.update((values) => [...values, { ...convertedNewMessage, replyTo: replyId }]);\n this.options.update((prev) => ({ ...prev, value: '' }));\n this.scrollToEnd();\n })\n .catch((error) => {\n this.toastService.danger('Failed to send message');\n });\n }\n }\n }\n handleEnter() {\n if (this.options().value && this.roomId) {\n this.handleOnSend({ data: { value: this.options().value } });\n }\n }\n handleOnAction(e) {\n console.log('Action Triggered:', e);\n }\n scrollToEnd() {\n const conversationView = document.querySelector('ax-conversation-view');\n if (conversationView) {\n conversationView.scrollTo({\n top: conversationView.scrollHeight,\n behavior: 'smooth',\n });\n }\n }\n async loadMessages(roomId) {\n this.isLoading.set(true);\n this.error.set(null);\n try {\n // Get messages from the chat service\n const messageResponse = await this.chatService.getMessages(roomId);\n // Convert to chat preview format\n const chatPreviewMessages = convertToChatPreview(this.sessionService.user?.id || '', messageResponse).sort((a, b) => {\n return new Date(a.sendTime).getTime() - new Date(b.sendTime).getTime();\n });\n // Set the messages in the conversation service\n this.chatData.set(chatPreviewMessages);\n }\n catch (error) {\n this.error.set('Failed to load messages. Please try again.');\n console.error('Failed to load messages:', error);\n }\n finally {\n this.isLoading.set(false);\n }\n }\n async loadRoomInfo(roomId) {\n try {\n const roomData = await this.chatService.getRoom(roomId);\n this.room.set(roomData);\n }\n catch (error) {\n console.error('Failed to load room info:', error);\n }\n }\n addItemHandler(e) {\n this.activeMessage.set(e.data);\n if (e.data.fromId) {\n e.canceled = true;\n return;\n }\n const userItem = [];\n if (e.data.type === 'text') {\n userItem.push({\n text: 'Edit',\n color: 'primary',\n icon: 'fa-solid fa-pencil',\n onClick: (id) => {\n try {\n this.isEditing.set(true);\n this.editId.set(e.data.id);\n this.options.update((prev) => ({ ...prev, value: e.data.content }));\n this.addInputOverlay('edit', e.data);\n }\n catch (error) {\n this.toastService.danger('Failed to edit message');\n }\n },\n });\n }\n if (e.data.type === 'text') {\n userItem.push({\n text: 'Delete',\n color: 'danger',\n icon: 'fa-solid fa-trash-can',\n onClick: (id) => {\n try {\n this.chatService.deleteMessage(id).then((res) => {\n this.chatData.update((values) => values.filter((item) => item.id !== id));\n if (!res) {\n this.toastService.danger('Failed to delete message');\n }\n });\n }\n catch (error) {\n this.toastService.danger('Failed to delete message');\n }\n },\n });\n }\n e.items.push(...userItem);\n }\n addInputOverlay(type, message) {\n const input = this.inputRef();\n const icon = type === 'reply' ? 'fa-solid fa-reply' : 'fa-solid fa-pencil';\n if (input) {\n input.setActionBoxContainer(icon, message?.content || this.activeMessage()?.content || '');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMChatPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.6\", type: AXMChatPreviewComponent, isStandalone: true, selector: \"axm-chat-preview\", viewQueries: [{ propertyName: \"inputRef\", first: true, predicate: AXConversationInputComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"@if (isLoading()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <ax-loading></ax-loading>\\n </div>\\n} @else if (error()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <div class=\\\"ax-text-center\\\">\\n <p class=\\\"ax-text-danger\\\">{{ error() }}</p>\\n <button (click)=\\\"loadMessages(roomId)\\\" class=\\\"ax-mt-2 ax-button ax-primary\\\">Retry</button>\\n </div>\\n </div>\\n} @else {\\n <div\\n axDomChange\\n (axResizeObserver)=\\\"setHeight($event[0].contentRect.height)\\\"\\n class=\\\"ax-bg-surface-container ax-h-full\\\"\\n >\\n <!-- Messages Container -->\\n <ax-conversation-container class=\\\"ax-overflow-hidden\\\" [chatData]=\\\"chatData()\\\">\\n <ax-conversation-view\\n (onActionMenuOpening)=\\\"addItemHandler($event)\\\"\\n (onAction)=\\\"handleOnAction($event)\\\"\\n (onReplyClick)=\\\"addInputOverlay('reply', $event.data)\\\"\\n [chatBoxHeight]=\\\"height() - 60 + 'px'\\\"\\n ></ax-conversation-view>\\n @if (!isChannel()) {\\n <ax-conversation-input\\n class=\\\"ax-p-1\\\"\\n placeholder=\\\"Type a message...\\\"\\n [(ngModel)]=\\\"options().value\\\"\\n (ngModelChange)=\\\"handleTyping($event)\\\"\\n (onSendClick)=\\\"handleOnSend($event)\\\"\\n (onFileChange)=\\\"handleFileChange($event)\\\"\\n (onStopRecording)=\\\"handleEndRecord($event)\\\"\\n (onCancelRecording)=\\\"handleCancelRecord($event)\\\"\\n (onEnterPressed)=\\\"handleEnter()\\\"\\n ></ax-conversation-input>\\n }\\n </ax-conversation-container>\\n </div>\\n}\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: AXDomChangeDirective, selector: \"[axDomChange]\", outputs: [\"axMutationObserver\", \"axResizeObserver\"] }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"component\", type: i2.AXConversationViewComponent, selector: \"ax-conversation-view\", inputs: [\"chatBoxHeight\", \"isReplyArrowShown\", \"avatar\"], outputs: [\"onScrollEnd\", \"onActionMenuOpening\", \"onAction\", \"onReplyClick\"] }, { kind: \"component\", type: i2.AXConversationInputComponent, selector: \"ax-conversation-input\", inputs: [\"look\", \"placeholder\", \"maxLength\", \"hasAttachment\", \"hasVoice\", \"hasEmoji\", \"isLoading\", \"acceptFileType\"], outputs: [\"onSendClick\", \"onStartRecording\", \"onCancelRecording\", \"onEnterPressed\"] }, { kind: \"component\", type: i2.AXConversationContainerComponent, selector: \"ax-conversation-container\", inputs: [\"chatData\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i3.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMChatPreviewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat-preview', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormsModule, AXDomChangeDirective, AXConversationModule, AXLoadingModule], template: \"@if (isLoading()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <ax-loading></ax-loading>\\n </div>\\n} @else if (error()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <div class=\\\"ax-text-center\\\">\\n <p class=\\\"ax-text-danger\\\">{{ error() }}</p>\\n <button (click)=\\\"loadMessages(roomId)\\\" class=\\\"ax-mt-2 ax-button ax-primary\\\">Retry</button>\\n </div>\\n </div>\\n} @else {\\n <div\\n axDomChange\\n (axResizeObserver)=\\\"setHeight($event[0].contentRect.height)\\\"\\n class=\\\"ax-bg-surface-container ax-h-full\\\"\\n >\\n <!-- Messages Container -->\\n <ax-conversation-container class=\\\"ax-overflow-hidden\\\" [chatData]=\\\"chatData()\\\">\\n <ax-conversation-view\\n (onActionMenuOpening)=\\\"addItemHandler($event)\\\"\\n (onAction)=\\\"handleOnAction($event)\\\"\\n (onReplyClick)=\\\"addInputOverlay('reply', $event.data)\\\"\\n [chatBoxHeight]=\\\"height() - 60 + 'px'\\\"\\n ></ax-conversation-view>\\n @if (!isChannel()) {\\n <ax-conversation-input\\n class=\\\"ax-p-1\\\"\\n placeholder=\\\"Type a message...\\\"\\n [(ngModel)]=\\\"options().value\\\"\\n (ngModelChange)=\\\"handleTyping($event)\\\"\\n (onSendClick)=\\\"handleOnSend($event)\\\"\\n (onFileChange)=\\\"handleFileChange($event)\\\"\\n (onStopRecording)=\\\"handleEndRecord($event)\\\"\\n (onCancelRecording)=\\\"handleCancelRecord($event)\\\"\\n (onEnterPressed)=\\\"handleEnter()\\\"\\n ></ax-conversation-input>\\n }\\n </ax-conversation-container>\\n </div>\\n}\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NvbXBvbmVudHMvY2hhdC1wcmV2aWV3L2NoYXQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jb21wb25lbnRzL2NoYXQtcHJldmlldy9jaGF0LXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUVMLDRCQUE0QixFQUk1QixvQkFBb0IsR0FDckIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVdwRCxNQUFNLE9BQU8sdUJBQXVCO0lBUnBDO1FBU1UsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV0QyxhQUFRLEdBQUcsU0FBUyxDQUErQiw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2pGLGtCQUFhLEdBQUcsTUFBTSxDQUErQixJQUFJLENBQUMsQ0FBQztRQUUzRCxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUc1QixhQUFRLEdBQUcsTUFBTSxDQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQyxTQUFJLEdBQUcsTUFBTSxDQUFxQixJQUFJLENBQUMsQ0FBQztRQUN4QyxjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3JDLFdBQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixVQUFLLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUVwQyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUM7UUFNN0QsWUFBTyxHQUFHLE1BQU0sQ0FBQztZQUN6QixRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxLQUFLO1lBQ2YsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDLENBQUM7UUFFTyxXQUFNLEdBQVcsRUFBRSxDQUFDO0tBc04vQjtJQWhPVyxTQUFTLENBQUMsTUFBYztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBVUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN4RCxzRkFBc0Y7WUFDdEYsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pGLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUM5QixNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUMxRSxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUM7d0JBQ2hCLEtBQUssRUFBRSxDQUFDO3FCQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDTixPQUFPLENBQUMsR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsb0ZBQW9GO1FBQ3BGLHVCQUF1QjtRQUN2QixnREFBZ0Q7UUFDaEQsTUFBTTtRQUNOLE1BQU07SUFDUixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFVO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDckUsNkRBQTZEO1lBQzdELE1BQU0sZUFBZSxHQUEwQjtnQkFDN0MsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQzFDLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLFdBQVc7YUFDbEIsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLENBQU07UUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVc7aUJBQ2IsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUM7aUJBQ2hFLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNuQixNQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUU7b0JBQ25GLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQztvQkFDbkIsS0FBSyxFQUFFLENBQUM7aUJBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDOUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3RGLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXO3FCQUNiLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRSxPQUFPLENBQUM7cUJBQ3RFLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUNuQixNQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQ25GLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQzt3QkFDbkIsS0FBSyxFQUFFLENBQUM7cUJBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM1RixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckIsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQ3JELENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQTRCO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4RSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO2dCQUN4QixHQUFHLEVBQUUsZ0JBQWdCLENBQUMsWUFBWTtnQkFDbEMsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQWM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDO1lBQ0gscUNBQXFDO1lBQ3JDLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkUsaUNBQWlDO1lBQ2pDLE1BQU0sbUJBQW1CLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQ3hHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNQLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6RSxDQUFDLENBQ0YsQ0FBQztZQUVGLCtDQUErQztZQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUM3RCxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFjO1FBQy9CLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRVMsY0FBYyxDQUFDLENBQWlDO1FBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBa0MsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDM0IsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDWixJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7b0JBQ2QsSUFBSSxDQUFDO3dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDcEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QyxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztvQkFDckQsQ0FBQztnQkFDSCxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDM0IsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDWixJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsUUFBUTtnQkFDZixJQUFJLEVBQUUsdUJBQXVCO2dCQUM3QixPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQkFDZCxJQUFJLENBQUM7d0JBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7NEJBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQ0FDVCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDOzRCQUN2RCxDQUFDO3dCQUNILENBQUMsQ0FBQyxDQUFDO29CQUNMLENBQUM7b0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO29CQUN2RCxDQUFDO2dCQUNILENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQXNCLEVBQUUsT0FBK0I7UUFDckUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztRQUMzRSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsS0FBSyxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0YsQ0FBQztJQUNILENBQUM7OEdBdFBVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHNIQU95Qiw0QkFBNEIsZ0VDOUN6Riw2a0RBeUNBLHNHREpZLFlBQVksOEJBQUUsV0FBVywrVkFBRSxvQkFBb0IsOEdBQUUsb0JBQW9CLCtxQkFBRSxlQUFlOzsyRkFFckYsdUJBQXVCO2tCQVJuQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEb21DaGFuZ2VEaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L2Nkay9kb20nO1xuaW1wb3J0IHtcbiAgQVhDb252ZXJzYXRpb25BY3Rpb25FdmVudCxcbiAgQVhDb252ZXJzYXRpb25JbnB1dENvbXBvbmVudCxcbiAgQVhDb252ZXJzYXRpb25NZW51T3BlbmluZ0V2ZW50LFxuICBBWENvbnZlcnNhdGlvbk1lc3NhZ2UsXG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZUFjdGlvbixcbiAgQVhDb252ZXJzYXRpb25Nb2R1bGUsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb252ZXJzYXRpb24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUb2FzdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9hc3QnO1xuaW1wb3J0IHsgQVhGaWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9maWxlJztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbnZlcnRUb0NoYXRQcmV2aWV3IH0gZnJvbSAnLi4vLi4vY2hhdC1wcmV2aWV3LmhlbHBlcic7XG5pbXBvcnQgeyBBWE1DaGF0U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1DaGF0Um9vbSB9IGZyb20gJy4uLy4uL2NoYXQudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1jaGF0LXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQVhEb21DaGFuZ2VEaXJlY3RpdmUsIEFYQ29udmVyc2F0aW9uTW9kdWxlLCBBWExvYWRpbmdNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1DaGF0UHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgZmlsZVNlcnZpY2UgPSBpbmplY3QoQVhGaWxlU2VydmljZSk7XG4gIHByaXZhdGUgY2hhdFNlcnZpY2UgPSBpbmplY3QoQVhNQ2hhdFNlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuXG4gIHByaXZhdGUgaW5wdXRSZWYgPSB2aWV3Q2hpbGQ8QVhDb252ZXJzYXRpb25JbnB1dENvbXBvbmVudD4oQVhDb252ZXJzYXRpb25JbnB1dENvbXBvbmVudCk7XG4gIHByaXZhdGUgYWN0aXZlTWVzc2FnZSA9IHNpZ25hbDxBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHR5cGluZyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHR5cGluZ1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBwcm90ZWN0ZWQgY2hhdERhdGEgPSBzaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlW10+KFtdKTtcbiAgcHJvdGVjdGVkIHJvb20gPSBzaWduYWw8QVhNQ2hhdFJvb20gfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIGlzRWRpdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBlZGl0SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBoZWlnaHQgPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgZXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIGlzQ2hhbm5lbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucm9vbSgpPy50b3BpYyA9PT0gJ2NoYW5uZWwnKTtcblxuICBwcm90ZWN0ZWQgc2V0SGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWlnaHQuc2V0KGhlaWdodCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3B0aW9ucyA9IHNpZ25hbCh7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHJlYWRvbmx5OiBmYWxzZSxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByb29tSWQ6IHN0cmluZyA9ICcnO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLnJvb21JZCA9IHBhcmFtc1snaWQnXTtcbiAgICAgIGlmICh0aGlzLnJvb21JZCkge1xuICAgICAgICB0aGlzLmxvYWRNZXNzYWdlcyh0aGlzLnJvb21JZCk7XG4gICAgICAgIHRoaXMubG9hZFJvb21JbmZvKHRoaXMucm9vbUlkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhdFNlcnZpY2UubWVzc2FnZVNlbnQkLnN1YnNjcmliZShhc3luYyAobWVzc2FnZSkgPT4ge1xuICAgICAgLy8gT25seSBhZGQgbWVzc2FnZXMgdGhhdCBhcmUgbm90IGZyb20gdGhlIGN1cnJlbnQgdXNlciBhbmQgYmVsb25nIHRvIHRoZSBjdXJyZW50IHJvb21cbiAgICAgIGlmIChtZXNzYWdlLmF1dGhvci5pZCAhPT0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZCAmJiBtZXNzYWdlLnJvb21JZCA9PT0gdGhpcy5yb29tSWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGF0U2VydmljZS5tYXJrU2VlbihtZXNzYWdlLmlkKTtcbiAgICAgICAgdGhpcy5jaGF0RGF0YS51cGRhdGUoKHZhbHVlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld01lc3NhZ2UgPSBjb252ZXJ0VG9DaGF0UHJldmlldyh0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI/LmlkIHx8ICcnLCB7XG4gICAgICAgICAgICBpdGVtczogW21lc3NhZ2VdLFxuICAgICAgICAgICAgdG90YWw6IDEsXG4gICAgICAgICAgfSlbMF07XG4gICAgICAgICAgcmV0dXJuIFsuLi52YWx1ZXMsIG5ld01lc3NhZ2VdO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHRoaXMudHlwaW5nU3Vic2NyaXB0aW9uID0gdGhpcy50eXBpbmckLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIC8vICAgaWYgKHRoaXMucm9vbUlkKSB7XG4gICAgLy8gICAgIHRoaXMuY2hhdFNlcnZpY2Uuc3RvcFR5cGluZyh0aGlzLnJvb21JZCk7XG4gICAgLy8gICB9XG4gICAgLy8gfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnR5cGluZ1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGhhbmRsZVR5cGluZyhldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm9vbUlkKSB7XG4gICAgICB0aGlzLmNoYXRTZXJ2aWNlLnN0YXJ0VHlwaW5nKHRoaXMucm9vbUlkKTtcbiAgICAgIHRoaXMudHlwaW5nJC5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRmlsZUNoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0ZpbGUgQ2hhbmdlZDonLCBldmVudCk7XG4gIH1cblxuICBoYW5kbGVDYW5jZWxSZWNvcmQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdSZWNvcmRpbmcgQ2FuY2VsbGVkOicsIGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUVuZFJlY29yZChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5maWxlU2VydmljZS5ibG9iVG9CYXNlNjQoZXZlbnQuZGF0YS52YWx1ZSkudGhlbigoYmFzZTY0Q29udGVudCkgPT4ge1xuICAgICAgLy8gQ3JlYXRlIGEgcHJvcGVybHkgZm9ybWF0dGVkIGNoYXQgcHJldmlldyBtZXNzYWdlIGZvciB2b2ljZVxuICAgICAgY29uc3QgbmV3Vm9pY2VNZXNzYWdlOiBBWENvbnZlcnNhdGlvbk1lc3NhZ2UgPSB7XG4gICAgICAgIGlkOiBgJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMCl9YCxcbiAgICAgICAgY29udGVudDogYmFzZTY0Q29udGVudCxcbiAgICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICB0eXBlOiAndm9pY2UnLFxuICAgICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2hhdERhdGEudXBkYXRlKCh2YWx1ZXMpID0+IFsuLi52YWx1ZXMsIG5ld1ZvaWNlTWVzc2FnZV0pO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlT25TZW5kKGU6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRWRpdGluZygpICYmIHRoaXMuZWRpdElkKCkpIHtcbiAgICAgIHRoaXMuY2hhdFNlcnZpY2VcbiAgICAgICAgLmVkaXRNZXNzYWdlKHRoaXMuZWRpdElkKCkhLCBlLmRhdGEudmFsdWUsIGUuZGF0YS50eXBlIHx8ICd0ZXh0JylcbiAgICAgICAgLnRoZW4oKG5ld01lc3NhZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjb252ZXJ0ZWROZXdNZXNzYWdlID0gY29udmVydFRvQ2hhdFByZXZpZXcodGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZCB8fCAnJywge1xuICAgICAgICAgICAgaXRlbXM6IFtuZXdNZXNzYWdlXSxcbiAgICAgICAgICAgIHRvdGFsOiAxLFxuICAgICAgICAgIH0pWzBdO1xuICAgICAgICAgIHRoaXMuY2hhdERhdGEudXBkYXRlKCh2YWx1ZXMpID0+XG4gICAgICAgICAgICB2YWx1ZXMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gdGhpcy5lZGl0SWQoKSA/IHsgLi4uY29udmVydGVkTmV3TWVzc2FnZSB9IDogaXRlbSkpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5lZGl0SWQuc2V0KG51bGwpO1xuICAgICAgICAgIHRoaXMub3B0aW9ucy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIHZhbHVlOiAnJyB9KSk7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcignRmFpbGVkIHRvIGVkaXQgbWVzc2FnZScpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGUuZGF0YS52YWx1ZSAmJiB0aGlzLnJvb21JZCkge1xuICAgICAgICBjb25zdCByZXBseUlkID0gZS5kYXRhLnJlcGx5Q2hhdD8uaWQ7XG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2VcbiAgICAgICAgICAuc2VuZE1lc3NhZ2UodGhpcy5yb29tSWQsIGUuZGF0YS52YWx1ZSwgZS5kYXRhLnR5cGUgfHwgJ3RleHQnLCByZXBseUlkKVxuICAgICAgICAgIC50aGVuKChuZXdNZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWROZXdNZXNzYWdlID0gY29udmVydFRvQ2hhdFByZXZpZXcodGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZCB8fCAnJywge1xuICAgICAgICAgICAgICBpdGVtczogW25ld01lc3NhZ2VdLFxuICAgICAgICAgICAgICB0b3RhbDogMSxcbiAgICAgICAgICAgIH0pWzBdO1xuICAgICAgICAgICAgdGhpcy5jaGF0RGF0YS51cGRhdGUoKHZhbHVlcykgPT4gWy4uLnZhbHVlcywgeyAuLi5jb252ZXJ0ZWROZXdNZXNzYWdlLCByZXBseVRvOiByZXBseUlkIH1dKTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIHZhbHVlOiAnJyB9KSk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0ZhaWxlZCB0byBzZW5kIG1lc3NhZ2UnKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zKCkudmFsdWUgJiYgdGhpcy5yb29tSWQpIHtcbiAgICAgIHRoaXMuaGFuZGxlT25TZW5kKHsgZGF0YTogeyB2YWx1ZTogdGhpcy5vcHRpb25zKCkudmFsdWUgfSB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPbkFjdGlvbihlOiBBWENvbnZlcnNhdGlvbkFjdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0FjdGlvbiBUcmlnZ2VyZWQ6JywgZSk7XG4gIH1cblxuICBzY3JvbGxUb0VuZCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb252ZXJzYXRpb25WaWV3ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXgtY29udmVyc2F0aW9uLXZpZXcnKTtcbiAgICBpZiAoY29udmVyc2F0aW9uVmlldykge1xuICAgICAgY29udmVyc2F0aW9uVmlldy5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogY29udmVyc2F0aW9uVmlldy5zY3JvbGxIZWlnaHQsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRNZXNzYWdlcyhyb29tSWQ6IHN0cmluZykge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICB0cnkge1xuICAgICAgLy8gR2V0IG1lc3NhZ2VzIGZyb20gdGhlIGNoYXQgc2VydmljZVxuICAgICAgY29uc3QgbWVzc2FnZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jaGF0U2VydmljZS5nZXRNZXNzYWdlcyhyb29tSWQpO1xuXG4gICAgICAvLyBDb252ZXJ0IHRvIGNoYXQgcHJldmlldyBmb3JtYXRcbiAgICAgIGNvbnN0IGNoYXRQcmV2aWV3TWVzc2FnZXMgPSBjb252ZXJ0VG9DaGF0UHJldmlldyh0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI/LmlkIHx8ICcnLCBtZXNzYWdlUmVzcG9uc2UpLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGEuc2VuZFRpbWUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuc2VuZFRpbWUpLmdldFRpbWUoKTtcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFNldCB0aGUgbWVzc2FnZXMgaW4gdGhlIGNvbnZlcnNhdGlvbiBzZXJ2aWNlXG4gICAgICB0aGlzLmNoYXREYXRhLnNldChjaGF0UHJldmlld01lc3NhZ2VzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5lcnJvci5zZXQoJ0ZhaWxlZCB0byBsb2FkIG1lc3NhZ2VzLiBQbGVhc2UgdHJ5IGFnYWluLicpO1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgbWVzc2FnZXM6JywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRSb29tSW5mbyhyb29tSWQ6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByb29tRGF0YSA9IGF3YWl0IHRoaXMuY2hhdFNlcnZpY2UuZ2V0Um9vbShyb29tSWQpO1xuICAgICAgdGhpcy5yb29tLnNldChyb29tRGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHJvb20gaW5mbzonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFkZEl0ZW1IYW5kbGVyKGU6IEFYQ29udmVyc2F0aW9uTWVudU9wZW5pbmdFdmVudCkge1xuICAgIHRoaXMuYWN0aXZlTWVzc2FnZS5zZXQoZS5kYXRhKTtcbiAgICBpZiAoZS5kYXRhLmZyb21JZCkge1xuICAgICAgZS5jYW5jZWxlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHVzZXJJdGVtOiBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBY3Rpb25bXSA9IFtdO1xuICAgIGlmIChlLmRhdGEudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICB1c2VySXRlbS5wdXNoKHtcbiAgICAgICAgdGV4dDogJ0VkaXQnLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtcGVuY2lsJyxcbiAgICAgICAgb25DbGljazogKGlkKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0aW5nLnNldCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdElkLnNldChlLmRhdGEuaWQpO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgdmFsdWU6IGUuZGF0YS5jb250ZW50IH0pKTtcbiAgICAgICAgICAgIHRoaXMuYWRkSW5wdXRPdmVybGF5KCdlZGl0JywgZS5kYXRhKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKCdGYWlsZWQgdG8gZWRpdCBtZXNzYWdlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlLmRhdGEudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICB1c2VySXRlbS5wdXNoKHtcbiAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgaWNvbjogJ2ZhLXNvbGlkIGZhLXRyYXNoLWNhbicsXG4gICAgICAgIG9uQ2xpY2s6IChpZCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmRlbGV0ZU1lc3NhZ2UoaWQpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoYXREYXRhLnVwZGF0ZSgodmFsdWVzKSA9PiB2YWx1ZXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBpZCkpO1xuICAgICAgICAgICAgICBpZiAoIXJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcignRmFpbGVkIHRvIGRlbGV0ZSBtZXNzYWdlJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0ZhaWxlZCB0byBkZWxldGUgbWVzc2FnZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGUuaXRlbXMucHVzaCguLi51c2VySXRlbSk7XG4gIH1cblxuICBhZGRJbnB1dE92ZXJsYXkodHlwZTogJ3JlcGx5JyB8ICdlZGl0JywgbWVzc2FnZT86IEFYQ29udmVyc2F0aW9uTWVzc2FnZSkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dFJlZigpO1xuICAgIGNvbnN0IGljb24gPSB0eXBlID09PSAncmVwbHknID8gJ2ZhLXNvbGlkIGZhLXJlcGx5JyA6ICdmYS1zb2xpZCBmYS1wZW5jaWwnO1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgaW5wdXQuc2V0QWN0aW9uQm94Q29udGFpbmVyKGljb24sIG1lc3NhZ2U/LmNvbnRlbnQgfHwgdGhpcy5hY3RpdmVNZXNzYWdlKCk/LmNvbnRlbnQgfHwgJycpO1xuICAgIH1cbiAgfVxufVxuIiwiQGlmIChpc0xvYWRpbmcoKSkge1xuICA8ZGl2IGNsYXNzPVwiYXgtaC1mdWxsIGF4LXctZnVsbCBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgPC9kaXY+XG59IEBlbHNlIGlmIChlcnJvcigpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1oLWZ1bGwgYXgtdy1mdWxsIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LXRleHQtY2VudGVyXCI+XG4gICAgICA8cCBjbGFzcz1cImF4LXRleHQtZGFuZ2VyXCI+e3sgZXJyb3IoKSB9fTwvcD5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNZXNzYWdlcyhyb29tSWQpXCIgY2xhc3M9XCJheC1tdC0yIGF4LWJ1dHRvbiBheC1wcmltYXJ5XCI+UmV0cnk8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdlxuICAgIGF4RG9tQ2hhbmdlXG4gICAgKGF4UmVzaXplT2JzZXJ2ZXIpPVwic2V0SGVpZ2h0KCRldmVudFswXS5jb250ZW50UmVjdC5oZWlnaHQpXCJcbiAgICBjbGFzcz1cImF4LWJnLXN1cmZhY2UtY29udGFpbmVyIGF4LWgtZnVsbFwiXG4gID5cbiAgICA8IS0tIE1lc3NhZ2VzIENvbnRhaW5lciAtLT5cbiAgICA8YXgtY29udmVyc2F0aW9uLWNvbnRhaW5lciBjbGFzcz1cImF4LW92ZXJmbG93LWhpZGRlblwiIFtjaGF0RGF0YV09XCJjaGF0RGF0YSgpXCI+XG4gICAgICA8YXgtY29udmVyc2F0aW9uLXZpZXdcbiAgICAgICAgKG9uQWN0aW9uTWVudU9wZW5pbmcpPVwiYWRkSXRlbUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgIChvbkFjdGlvbik9XCJoYW5kbGVPbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgKG9uUmVwbHlDbGljayk9XCJhZGRJbnB1dE92ZXJsYXkoJ3JlcGx5JywgJGV2ZW50LmRhdGEpXCJcbiAgICAgICAgW2NoYXRCb3hIZWlnaHRdPVwiaGVpZ2h0KCkgLSA2MCArICdweCdcIlxuICAgICAgPjwvYXgtY29udmVyc2F0aW9uLXZpZXc+XG4gICAgICBAaWYgKCFpc0NoYW5uZWwoKSkge1xuICAgICAgICA8YXgtY29udmVyc2F0aW9uLWlucHV0XG4gICAgICAgICAgY2xhc3M9XCJheC1wLTFcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSBhIG1lc3NhZ2UuLi5cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwib3B0aW9ucygpLnZhbHVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVUeXBpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uU2VuZENsaWNrKT1cImhhbmRsZU9uU2VuZCgkZXZlbnQpXCJcbiAgICAgICAgICAob25GaWxlQ2hhbmdlKT1cImhhbmRsZUZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uU3RvcFJlY29yZGluZyk9XCJoYW5kbGVFbmRSZWNvcmQoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uQ2FuY2VsUmVjb3JkaW5nKT1cImhhbmRsZUNhbmNlbFJlY29yZCgkZXZlbnQpXCJcbiAgICAgICAgICAob25FbnRlclByZXNzZWQpPVwiaGFuZGxlRW50ZXIoKVwiXG4gICAgICAgID48L2F4LWNvbnZlcnNhdGlvbi1pbnB1dD5cbiAgICAgIH1cbiAgICA8L2F4LWNvbnZlcnNhdGlvbi1jb250YWluZXI+XG4gIDwvZGl2PlxufVxuIl19","import { AXConversationModule } from '@acorex/components/conversation';\nimport { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { DatePipe } from '@angular/common';\nimport { importProvidersFrom, NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { AXMRoomService } from './entities';\nimport { AXMMessageService, AXMMessageServiceImpl } from './entities/message/message.service';\nimport { AXMRoomServiceImpl } from './entities/room/room.service';\nimport { AXMConversationModuleEntityProvider } from './entity.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { AXMChatService, AXMChatServiceImpl, AXMCommentPopupStartAction, AXMCommentPopupWorkflow, AXMCommentService, AXMCommentServiceImpl, AXPCommentWidget, } from './features';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/builder\";\nimport * as i2 from \"@acorex/platform/workflow\";\nfunction routesFactory() {\n const routes = [\n {\n path: ':app/chat',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n title: 'Chat',\n children: [\n {\n path: '',\n loadComponent: () => import('./features/chat/chat.component').then((c) => c.AXMChatComponent),\n data: { reuse: true },\n children: [\n {\n path: ':id',\n loadComponent: () => import('./features/chat/components/chat-preview/chat-preview.component').then((c) => c.AXMChatPreviewComponent),\n },\n ],\n },\n ],\n },\n {\n path: ':app/comments/t/:refrenceType/i/:refrenceId/s/:subject',\n title: 'Comments',\n canActivate: [AXPAuthGuard],\n loadComponent: () => AXPRootLayoutComponent,\n // resolve: {\n // refrenceType: {\n // resolve: refrenceTypeResolver,\n // },\n // refrenceId: {\n // resolve: refrenceIdResolver,\n // },\n // subject: {\n // resolve: subjectResolver,\n // },\n // },\n children: [\n {\n path: '',\n loadComponent: () => import('./features/comment/comment.component').then((c) => c.AXMCommentComponent),\n },\n ],\n },\n {\n path: ':app/comments/',\n title: 'Comments',\n canActivate: [AXPAuthGuard],\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./features/comment/comment.component').then((c) => c.AXMCommentComponent),\n },\n ],\n },\n ];\n return routes;\n}\nexport class AXMConversationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMConversationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMConversationModule, imports: [i1.AXPLayoutBuilderModule, i2.AXPWorkflowModule], exports: [\n // Modules\n RouterModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMConversationModule, providers: [\n // Services\n {\n provide: AXMMessageService,\n useClass: AXMMessageServiceImpl,\n },\n {\n provide: AXMRoomService,\n useClass: AXMRoomServiceImpl,\n },\n // Chat and Comment Services\n {\n provide: AXMChatService,\n useClass: AXMChatServiceImpl,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentServiceImpl,\n },\n // Entity Provider\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMConversationModuleEntityProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Menu Provider\n // {\n // provide: AXP_MENU_PROVIDER,\n // useClass: AXMConversationMenuProvider,\n // multi: true,\n // },\n // Conversation Module\n importProvidersFrom(AXConversationModule.forRoot()),\n DatePipe,\n ], imports: [AXPLayoutBuilderModule.forChild({\n widgets: [AXPCommentWidget],\n }),\n AXPWorkflowModule.forChild({\n actions: {\n 'show-comment-popup-action': AXMCommentPopupStartAction,\n },\n workflows: {\n 'show-comment-popup': AXMCommentPopupWorkflow,\n },\n }), \n // Modules\n RouterModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXMConversationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [\n AXPLayoutBuilderModule.forChild({\n widgets: [AXPCommentWidget],\n }),\n AXPWorkflowModule.forChild({\n actions: {\n 'show-comment-popup-action': AXMCommentPopupStartAction,\n },\n workflows: {\n 'show-comment-popup': AXMCommentPopupWorkflow,\n },\n }),\n ],\n exports: [\n // Modules\n RouterModule,\n ],\n providers: [\n // Services\n {\n provide: AXMMessageService,\n useClass: AXMMessageServiceImpl,\n },\n {\n provide: AXMRoomService,\n useClass: AXMRoomServiceImpl,\n },\n // Chat and Comment Services\n {\n provide: AXMChatService,\n useClass: AXMChatServiceImpl,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentServiceImpl,\n },\n // Entity Provider\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMConversationModuleEntityProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Menu Provider\n // {\n // provide: AXP_MENU_PROVIDER,\n // useClass: AXMConversationMenuProvider,\n // multi: true,\n // },\n // Conversation Module\n importProvidersFrom(AXConversationModule.forRoot()),\n DatePipe,\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsa0JBQWtCLEVB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QUFTLEVBQUU7d0JBQ1QsV0FBVzt3QkFDWDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUscUJBQXFCO3lCQUNoQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsY0FBYzs0QkFDdkIsUUFBUSxFQUFFLGtCQUFrQjt5QkFDN0I7d0JBQ0QsNEJBQTRCO3dCQUM1Qjs0QkFDRSxPQUFPLEVBQUUsY0FBYzs0QkFDdkIsUUFBUSxFQUFFLGtCQUFrQjt5QkFDN0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLHFCQUFxQjt5QkFDaEM7d0JBQ0Qsa0JBQWtCO3dCQUNsQjs0QkFDRSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxRQUFRLEVBQUUsbUNBQW1DOzRCQUM3QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUsZUFBZTs0QkFDekIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLE1BQU07NEJBQ2YsS0FBSyxFQUFFLElBQUk7NEJBQ1gsVUFBVSxFQUFFLGFBQWE7eUJBQzFCO3dCQUNELGdCQUFnQjt3QkFDaEIsSUFBSTt3QkFDSixnQ0FBZ0M7d0JBQ2hDLDJDQUEyQzt3QkFDM0MsaUJBQWlCO3dCQUNqQixLQUFLO3dCQUNMLHNCQUFzQjt3QkFDdEIsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ25ELFFBQVE7cUJBQ1Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb252ZXJzYXRpb24nO1xuaW1wb3J0IHsgQVhQQXV0aEd1YXJkIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQUm9vdExheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW1wb3J0UHJvdmlkZXJzRnJvbSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhNUm9vbVNlcnZpY2UgfSBmcm9tICcuL2VudGl0aWVzJztcbmltcG9ydCB7IEFYTU1lc3NhZ2VTZXJ2aWNlLCBBWE1NZXNzYWdlU2VydmljZUltcGwgfSBmcm9tICcuL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTVJvb21TZXJ2aWNlSW1wbCB9IGZyb20gJy4vZW50aXRpZXMvcm9vbS9yb29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uTW9kdWxlRW50aXR5UHJvdmlkZXIgfSBmcm9tICcuL2VudGl0eS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWE1NZW51UHJvdmlkZXIgfSBmcm9tICcuL21lbnUucHJvdmlkZXInO1xuXG5pbXBvcnQgeyBBWFBfTUVOVV9QUk9WSURFUiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUFdvcmtmbG93TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQge1xuICBBWE1DaGF0U2VydmljZSxcbiAgQVhNQ2hhdFNlcnZpY2VJbXBsLFxuICBBWE1Db21tZW50UG9wdXBTdGFydEFjdGlvbixcbiAgQVhNQ29tbWVudFBvcHVwV29ya2Zsb3csXG4gIEFYTUNvbW1lbnRTZXJ2aWNlLFxuICBBWE1Db21tZW50U2VydmljZUltcGwsXG4gIEFYUENvbW1lbnRXaWRnZXQsXG59IGZyb20gJy4vZmVhdHVyZXMnO1xuXG5mdW5jdGlvbiByb3V0ZXNGYWN0b3J5KCk6IFJvdXRlcyB7XG4gIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICAgIHtcbiAgICAgIHBhdGg6ICc6YXBwL2NoYXQnLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gQVhQUm9vdExheW91dENvbXBvbmVudDtcbiAgICAgIH0sXG4gICAgICB0aXRsZTogJ0NoYXQnLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9mZWF0dXJlcy9jaGF0L2NoYXQuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWE1DaGF0Q29tcG9uZW50KSxcbiAgICAgICAgICBkYXRhOiB7IHJldXNlOiB0cnVlIH0sXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGF0aDogJzppZCcsXG4gICAgICAgICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL2NoYXQvY29tcG9uZW50cy9jaGF0LXByZXZpZXcvY2hhdC1wcmV2aWV3LmNvbXBvbmVudCcpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAoYykgPT4gYy5BWE1DaGF0UHJldmlld0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHBhdGg6ICc6YXBwL2NvbW1lbnRzL3QvOnJlZnJlbmNlVHlwZS9pLzpyZWZyZW5jZUlkL3MvOnN1YmplY3QnLFxuICAgICAgdGl0bGU6ICdDb21tZW50cycsXG4gICAgICBjYW5BY3RpdmF0ZTogW0FYUEF1dGhHdWFyZF0sXG4gICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBBWFBSb290TGF5b3V0Q29tcG9uZW50LFxuICAgICAgLy8gcmVzb2x2ZToge1xuICAgICAgLy8gICByZWZyZW5jZVR5cGU6IHtcbiAgICAgIC8vICAgICByZXNvbHZlOiByZWZyZW5jZVR5cGVSZXNvbHZlcixcbiAgICAgIC8vICAgfSxcbiAgICAgIC8vICAgcmVmcmVuY2VJZDoge1xuICAgICAgLy8gICAgIHJlc29sdmU6IHJlZnJlbmNlSWRSZXNvbHZlcixcbiAgICAgIC8vICAgfSxcbiAgICAgIC8vICAgc3ViamVjdDoge1xuICAgICAgLy8gICAgIHJlc29sdmU6IHN1YmplY3RSZXNvbHZlcixcbiAgICAgIC8vICAgfSxcbiAgICAgIC8vIH0sXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYTUNvbW1lbnRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHBhdGg6ICc6YXBwL2NvbW1lbnRzLycsXG4gICAgICB0aXRsZTogJ0NvbW1lbnRzJyxcbiAgICAgIGNhbkFjdGl2YXRlOiBbQVhQQXV0aEd1YXJkXSxcbiAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IEFYUFJvb3RMYXlvdXRDb21wb25lbnQsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYTUNvbW1lbnRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuICByZXR1cm4gcm91dGVzO1xufVxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICB3aWRnZXRzOiBbQVhQQ29tbWVudFdpZGdldF0sXG4gICAgfSksXG4gICAgQVhQV29ya2Zsb3dNb2R1bGUuZm9yQ2hpbGQoe1xuICAgICAgYWN0aW9uczoge1xuICAgICAgICAnc2hvdy1jb21tZW50LXBvcHVwLWFjdGlvbic6IEFYTUNvbW1lbnRQb3B1cFN0YXJ0QWN0aW9uLFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93czoge1xuICAgICAgICAnc2hvdy1jb21tZW50LXBvcHVwJzogQVhNQ29tbWVudFBvcHVwV29ya2Zsb3csXG4gICAgICB9LFxuICAgIH0pLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgLy8gTW9kdWxlc1xuICAgIFJvdXRlck1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gU2VydmljZXNcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWE1NZXNzYWdlU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBWE1NZXNzYWdlU2VydmljZUltcGwsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWE1Sb29tU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBWE1Sb29tU2VydmljZUltcGwsXG4gICAgfSxcbiAgICAvLyBDaGF0IGFuZCBDb21tZW50IFNlcnZpY2VzXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNQ2hhdFNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhNQ2hhdFNlcnZpY2VJbXBsLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNQ29tbWVudFNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhNQ29tbWVudFNlcnZpY2VJbXBsLFxuICAgIH0sXG4gICAgLy8gRW50aXR5IFByb3ZpZGVyXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1Db252ZXJzYXRpb25Nb2R1bGVFbnRpdHlQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX01FTlVfUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhNTWVudVByb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBST1VURVMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUZhY3Rvcnk6IHJvdXRlc0ZhY3RvcnksXG4gICAgfSxcbiAgICAvLyBNZW51IFByb3ZpZGVyXG4gICAgLy8ge1xuICAgIC8vICAgcHJvdmlkZTogQVhQX01FTlVfUFJPVklERVIsXG4gICAgLy8gICB1c2VDbGFzczogQVhNQ29udmVyc2F0aW9uTWVudVByb3ZpZGVyLFxuICAgIC8vICAgbXVsdGk6IHRydWUsXG4gICAgLy8gfSxcbiAgICAvLyBDb252ZXJzYXRpb24gTW9kdWxlXG4gICAgaW1wb3J0UHJvdmlkZXJzRnJvbShBWENvbnZlcnNhdGlvbk1vZHVsZS5mb3JSb290KCkpLFxuICAgIERhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Db252ZXJzYXRpb25Nb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvYWNvcmV4LW1vZHVsZXMtY29udmVyc2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i3","i1","i2","i4","i5","i6","i7","i8","i9"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-conversation.mjs","sources":["../tmp-esm2022/conversation/lib/const.js","../tmp-esm2022/conversation/lib/entities/message/message.service.js","../tmp-esm2022/conversation/lib/entities/message/message.entity.js","../tmp-esm2022/conversation/lib/entities/message/message.types.js","../tmp-esm2022/conversation/lib/entities/room/room.service.js","../tmp-esm2022/conversation/lib/entities/room/room.entity.js","../tmp-esm2022/conversation/lib/entity.provider.js","../tmp-esm2022/conversation/lib/menu.provider.js","../tmp-esm2022/conversation/lib/features/comment/comment.service.js","../tmp-esm2022/conversation/lib/features/comment/comment.component.js","../tmp-esm2022/conversation/lib/features/comment/popup/comment-popup.component.js","../tmp-esm2022/conversation/lib/features/comment/user-lookup-popup.component.js","../tmp-esm2022/conversation/lib/features/comment/widget/comment-widget-view.component.js","../tmp-esm2022/conversation/lib/features/comment/widget/comment-widget.config.js","../tmp-esm2022/conversation/lib/features/comment/workflow/comment.workflow.js","../tmp-esm2022/conversation/lib/features/chat/chat.service.js","../tmp-esm2022/conversation/lib/features/chat/components/chat-item/chat-item.component.js","../tmp-esm2022/conversation/lib/features/chat/chat.component.js","../tmp-esm2022/conversation/lib/features/chat/chat-preview.helper.js","../tmp-esm2022/conversation/lib/features/chat/components/chat-preview/chat-preview.component.js","../tmp-esm2022/conversation/lib/conversation.module.js","../tmp-esm2022/conversation/acorex-modules-conversation.js"],"sourcesContent":["const config = {\n i18n: 'conversation',\n module: 'Conversation',\n route: 'chat',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'conversation',\n name: config.module,\n title: `t('module-name', {scope:\"${config.i18n}\"})`,\n icon: 'fa-light fa-comments',\n },\n entities: {\n room: {\n name: 'room',\n title: `t(\"room.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Room`,\n icon: 'fa-light fa-comments',\n },\n message: {\n name: 'message',\n title: `t(\"message.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Message`,\n icon: 'fa-light fa-message',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxNQUFNLEdBQUc7SUFDYixJQUFJLEVBQUUsY0FBYztJQUNwQixNQUFNLEVBQUUsY0FBYztJQUN0QixLQUFLLEVBQUUsTUFBTTtDQUNkLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTTtJQUNOLE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRSxjQUFjO1FBQ3JCLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNuQixLQUFLLEVBQUUsNEJBQTRCLE1BQU0sQ0FBQyxJQUFJLEtBQUs7UUFDbkQsSUFBSSxFQUFFLHNCQUFzQjtLQUM3QjtJQUNELFFBQVEsRUFBRTtRQUNSLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLG9DQUFvQyxNQUFNLENBQUMsSUFBSSxNQUFNO1lBQzVELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLE9BQU87WUFDL0IsSUFBSSxFQUFFLHNCQUFzQjtTQUM3QjtRQUNELE9BQU8sRUFBRTtZQUNQLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLHVDQUF1QyxNQUFNLENBQUMsSUFBSSxNQUFNO1lBQy9ELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLFVBQVU7WUFDbEMsSUFBSSxFQUFFLHFCQUFxQjtTQUM1QjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbmZpZyA9IHtcbiAgaTE4bjogJ2NvbnZlcnNhdGlvbicsXG4gIG1vZHVsZTogJ0NvbnZlcnNhdGlvbicsXG4gIHJvdXRlOiAnY2hhdCcsXG59O1xuXG5leHBvcnQgY29uc3QgUm9vdENvbmZpZyA9IHtcbiAgY29uZmlnLFxuICBtb2R1bGU6IHtcbiAgICByb3V0ZTogJ2NvbnZlcnNhdGlvbicsXG4gICAgbmFtZTogY29uZmlnLm1vZHVsZSxcbiAgICB0aXRsZTogYHQoJ21vZHVsZS1uYW1lJywge3Njb3BlOlwiJHtjb25maWcuaTE4bn1cIn0pYCxcbiAgICBpY29uOiAnZmEtbGlnaHQgZmEtY29tbWVudHMnLFxuICB9LFxuICBlbnRpdGllczoge1xuICAgIHJvb206IHtcbiAgICAgIG5hbWU6ICdyb29tJyxcbiAgICAgIHRpdGxlOiBgdChcInJvb20ucGx1cmFsLXRpdGxlXCIsIHsgc2NvcGU6IFwiJHtjb25maWcuaTE4bn1cIiB9KWAsXG4gICAgICBzb3VyY2U6IGAke2NvbmZpZy5tb2R1bGV9LlJvb21gLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNvbW1lbnRzJyxcbiAgICB9LFxuICAgIG1lc3NhZ2U6IHtcbiAgICAgIG5hbWU6ICdtZXNzYWdlJyxcbiAgICAgIHRpdGxlOiBgdChcIm1lc3NhZ2UucGx1cmFsLXRpdGxlXCIsIHsgc2NvcGU6IFwiJHtjb25maWcuaTE4bn1cIiB9KWAsXG4gICAgICBzb3VyY2U6IGAke2NvbmZpZy5tb2R1bGV9Lk1lc3NhZ2VgLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLW1lc3NhZ2UnLFxuICAgIH0sXG4gIH0sXG59O1xuIl19","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMMessageService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMMessageServiceImpl extends AXMMessageService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.message.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMMessageServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMMessageServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMMessageServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHekMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSx3QkFBd0Q7Q0FBRztBQUczRyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsaUJBQWlCO0lBQzFEO1FBQ0UsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDOzhHQUhVLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Db252ZXJzYXRpb25NZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlLnR5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYTU1lc3NhZ2VTZXJ2aWNlIGV4dGVuZHMgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPHN0cmluZywgQVhNQ29udmVyc2F0aW9uTWVzc2FnZT4ge31cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTU1lc3NhZ2VTZXJ2aWNlSW1wbCBleHRlbmRzIEFYTU1lc3NhZ2VTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLm1lc3NhZ2UubmFtZX1gKTtcbiAgfVxufVxuIl19","import { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMMessageService } from './message.service';\nexport async function messageFactory(injector) {\n const dataService = injector.get(AXMMessageService);\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.message.name,\n source: '',\n title: RootConfig.entities.message.title,\n formats: {\n individual: RootConfig.entities.message.title,\n plural: RootConfig.entities.message.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.message.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLFFBQWtCO0lBQ3JELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUVwQyxNQUFNLFNBQVMsR0FBYztRQUMzQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQzlCLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1FBQ3RDLE1BQU0sRUFBRSxFQUFFO1FBQ1YsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7UUFDeEMsT0FBTyxFQUFFO1lBQ1AsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDN0MsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDekMsWUFBWSxFQUFFO2dCQUNaLEtBQUssRUFBRSxhQUFhO2dCQUNwQixXQUFXLEVBQUUsVUFBVSxDQUFD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T0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsTUFBTTs0QkFDWixLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLGtDQUFrQzs0QkFDekMsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7cUJBQ0Y7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMLGtCQUFrQixDQUFDOzRCQUNqQixLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO3lCQUN0QyxDQUFDO3FCQUNIO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRW50aXR5LCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVF1ZXJ5VHlwZSwgY3JlYXRlQWxsUXVlcnlWaWV3IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2Uuc2VydmljZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtZXNzYWdlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPEFYUEVudGl0eSB8IG51bGw+IHtcbiAgY29uc3QgZGF0YVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQVhNTWVzc2FnZVNlcnZpY2UpO1xuICBjb25zdCBpMThuID0gUm9vdENvbmZpZy5jb25maWcuaTE4bjtcblxuICBjb25zdCBlbnRpdHlEZWY6IEFYUEVudGl0eSA9IHtcbiAgICBtb2R1bGU6IFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gICAgbmFtZTogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLm5hbWUsXG4gICAgc291cmNlOiAnJyxcbiAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLnRpdGxlLFxuICAgIGZvcm1hdHM6IHtcbiAgICAgIGluZGl2aWR1YWw6IFJvb3RDb25maWcuZW50aXRpZXMubWVzc2FnZS50aXRsZSxcbiAgICAgIHBsdXJhbDogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLnRpdGxlLFxuICAgICAgc2VhcmNoUmVzdWx0OiB7XG4gICAgICAgIHRpdGxlOiAne3sgdGl0bGUgfX0nLFxuICAgICAgICBkZXNjcmlwdGlvbjogUm9vdENvbmZpZy5tb2R1bGUudGl0bGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVsYXRlZEVudGl0aWVzOiBbXSxcbiAgICBncm91cHM6IFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgdGl0bGU6IFJvb3RDb25maWcuZW50aXRpZXMubWVzc2FnZS50aXRsZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgdGl0bGU6IGB0KFwibmFtZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdGl0bGU6IGB0KFwidGl0bGVcIiwgeyBzY29wZTogXCJjb21tb25cIiB9KWAsXG4gICAgICAgIGdyb3VwSWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGFkdmFuY2U6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmxpbmU6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW3sgbmFtZTogJ25hbWUnIH0sIHsgbmFtZTogJ3RpdGxlJyB9XSxcbiAgICBjb21tYW5kczoge1xuICAgICAgY3JlYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBkYXRhU2VydmljZS5pbnNlcnRPbmUoZGF0YSk7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlcyB9O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRlbGV0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5kZWxldGVPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHVwZGF0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZU9uZShkYXRhLmlkLCBkYXRhKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBxdWVyaWVzOiB7XG4gICAgICBieUtleToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5nZXRPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuU2luZ2xlLFxuICAgICAgfSxcbiAgICAgIGxpc3Q6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5xdWVyeSh7IHNraXA6IGUuc2tpcCwgdGFrZTogZS50YWtlLCBmaWx0ZXI6IGUuZmlsdGVyIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuTGlzdCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnRlcmZhY2VzOiB7XG4gICAgICBtYXN0ZXI6IHtcbiAgICAgICAgY3JlYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgc2luZ2xlOiB7XG4gICAgICAgICAgdGl0bGU6ICd7e3RpdGxlfX0nLFxuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnc2VjdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYWN0aW9uczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIGxpc3Q6IHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiBgdChcImNyZWF0ZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5UeXBlTGV2ZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ3QoXCJkZWxldGVJdGVtc1wiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRldGFpbFwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ29wZW4tZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdzZWNvbmRhcnknLFxuICAgICAgICAgICAgICB0eXBlOiAndmlldycsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRlbGV0ZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdmlld3M6IFtcbiAgICAgICAgICAgIGNyZWF0ZUFsbFF1ZXJ5Vmlldyh7XG4gICAgICAgICAgICAgIHNvcnRzOiBbeyBuYW1lOiAnbmFtZScsIGRpcjogJ2FzYycgfV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBlbnRpdHlEZWY7XG59XG4iXX0=","// === Shared Types ===\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2UudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gPT09IFNoYXJlZCBUeXBlcyA9PT1cblxuaW1wb3J0IHsgQVhQQ29udGVudCwgQVhQVXNlclJlZmVyZW5jZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5cbmV4cG9ydCB0eXBlIEFYTVNlZW5UeXBlID0gJ2RlbGl2ZXJlZCcgfCAncmVhZCc7XG5leHBvcnQgdHlwZSBBWE1SZWFjdGlvblR5cGUgPSAnbGlrZScgfCAnbG92ZScgfCAnbGF1Z2gnIHwgJ2FuZ3J5JyB8ICdzYWQnIHwgc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uIHtcbiAgYXV0aG9yOiBBWFBVc2VyUmVmZXJlbmNlO1xuICB0eXBlOiBBWE1SZWFjdGlvblR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhNQ29udmVyc2F0aW9uU2VlbiB7XG4gIGF1dGhvcjogQVhQVXNlclJlZmVyZW5jZTtcbiAgdHlwZTogQVhNU2VlblR5cGU7XG59XG5cbi8vID09PSBDb3JlIE1vZGVscyA9PT1cblxuZXhwb3J0IGludGVyZmFjZSBBWE1Db252ZXJzYXRpb25NZXNzYWdlIGV4dGVuZHMgQVhQRW50aXR5TW9kZWw8c3RyaW5nPiB7XG4gIHJvb21JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBBWFBDb250ZW50O1xuICBhdXRob3I6IEFYUFVzZXJSZWZlcmVuY2U7XG4gIHJlcGx5SWQ/OiBzdHJpbmcgfCBudWxsO1xuICByZWFjdGlvbnM6IEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uW107XG4gIHNlZW46IEFYTUNvbnZlcnNhdGlvblNlZW5bXTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xufVxuIl19","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMRoomService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMRoomServiceImpl extends AXMRoomService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.room.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMRoomServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMRoomServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMRoomServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0aWVzL3Jvb20vcm9vbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHekMsTUFBTSxPQUFnQixjQUFlLFNBQVEsd0JBQXFEO0NBQUc7QUFHckcsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFDcEQ7UUFDRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBSFUsa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTUNvbnZlcnNhdGlvblJvb20gfSBmcm9tICcuL3Jvb20udHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNUm9vbVNlcnZpY2UgZXh0ZW5kcyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGw8c3RyaW5nLCBBWE1Db252ZXJzYXRpb25Sb29tPiB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUm9vbVNlcnZpY2VJbXBsIGV4dGVuZHMgQVhNUm9vbVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMucm9vbS5uYW1lfWApO1xuICB9XG59XG4iXX0=","import { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMRoomService } from './room.service';\nexport async function roomFactory(injector) {\n const dataService = injector.get(AXMRoomService);\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.room.name,\n source: '',\n title: RootConfig.entities.room.title,\n formats: {\n individual: RootConfig.entities.room.title,\n plural: RootConfig.entities.room.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.room.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZW50aXRpZXMvcm9vbS9yb29tLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxRQUFrQjtJQUNsRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRXBDLE1BQU0sU0FBUyxHQUFjO1FBQzNCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUk7UUFDbkMsTUFBTSxFQUFFLEVBQUU7UUFDVixLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztRQUNyQyxPQUFPLEVBQUU7WUFDUCxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUMxQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN0QyxZQUFZLEVBQUU7Z0JBQ1osS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLFdBQVcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEtB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YTs0QkFDdEIsUUFBUSxFQUFFLFdBQVc7NEJBQ3JCLElBQUksRUFBRSxNQUFNOzRCQUNaLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO3lCQUN4Qzt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsa0NBQWtDOzRCQUN6QyxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFdBQVc7NEJBQ3JCLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO3lCQUN4QztxQkFDRjtvQkFDRCxLQUFLLEVBQUU7d0JBQ0wsa0JBQWtCLENBQUM7NEJBQ2pCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7eUJBQ3RDLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBFbnRpdHksIEFYUEVudGl0eUNvbW1hbmRTY29wZSwgQVhQRW50aXR5UXVlcnlUeXBlLCBjcmVhdGVBbGxRdWVyeVZpZXcgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Sb29tU2VydmljZSB9IGZyb20gJy4vcm9vbS5zZXJ2aWNlJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJvb21GYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdG9yLmdldChBWE1Sb29tU2VydmljZSk7XG4gIGNvbnN0IGkxOG4gPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuXG4gIGNvbnN0IGVudGl0eURlZjogQVhQRW50aXR5ID0ge1xuICAgIG1vZHVsZTogUm9vdENvbmZpZy5tb2R1bGUubmFtZSxcbiAgICBuYW1lOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20ubmFtZSxcbiAgICBzb3VyY2U6ICcnLFxuICAgIHRpdGxlOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20udGl0bGUsXG4gICAgZm9ybWF0czoge1xuICAgICAgaW5kaXZpZHVhbDogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLnRpdGxlLFxuICAgICAgcGx1cmFsOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20udGl0bGUsXG4gICAgICBzZWFyY2hSZXN1bHQ6IHtcbiAgICAgICAgdGl0bGU6ICd7eyB0aXRsZSB9fScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLnRpdGxlLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHByb3BlcnRpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICB0aXRsZTogYHQoXCJuYW1lXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSlgLFxuICAgICAgICBncm91cElkOiAnc2VjdGlvbicsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBzb3J0OiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICBhZHZhbmNlOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5saW5lOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcnVsZTogJ3JlcXVpcmVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICB0aXRsZTogYHQoXCJ0aXRsZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjb2x1bW5zOiBbeyBuYW1lOiAnbmFtZScgfSwgeyBuYW1lOiAndGl0bGUnIH1dLFxuICAgIGNvbW1hbmRzOiB7XG4gICAgICBjcmVhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGRhdGFTZXJ2aWNlLmluc2VydE9uZShkYXRhKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogcmVzIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVsZXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmdldE9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5TaW5nbGUsXG4gICAgICB9LFxuICAgICAgbGlzdDoge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnF1ZXJ5KHsgc2tpcDogZS5za2lwLCB0YWtlOiBlLnRha2UsIGZpbHRlcjogZS5maWx0ZXIgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5MaXN0LFxuICAgICAgfSxcbiAgICB9LFxuICAgIGludGVyZmFjZXM6IHtcbiAgICAgIG1hc3Rlcjoge1xuICAgICAgICBjcmVhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBzaW5nbGU6IHtcbiAgICAgICAgICB0aXRsZTogJ3t7dGl0bGV9fScsXG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6IGB0KFwiY3JlYXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSlgLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnY3JlYXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRlbGV0ZUl0ZW1zXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGV0YWlsXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnb3Blbi1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICd2aWV3JyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGVsZXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB2aWV3czogW1xuICAgICAgICAgICAgY3JlYXRlQWxsUXVlcnlWaWV3KHtcbiAgICAgICAgICAgICAgc29ydHM6IFt7IG5hbWU6ICduYW1lJywgZGlyOiAnYXNjJyB9XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIGVudGl0eURlZjtcbn1cbiJdfQ==","import { Injectable, Injector } from '@angular/core';\nimport { RootConfig } from './const';\nimport { messageFactory, roomFactory } from './entities';\nimport * as i0 from \"@angular/core\";\nexport class AXMConversationModuleEntityProvider {\n constructor(injector) {\n this.injector = injector;\n }\n preload() {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity) => ({\n module: module,\n entity: entity.name,\n }));\n }\n async get(moduleName, entityName) {\n switch (entityName) {\n case 'room':\n return roomFactory(this.injector);\n case 'message':\n return messageFactory(this.injector);\n default:\n return null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMConversationModuleEntityProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMConversationModuleEntityProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMConversationModuleEntityProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0eS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUd6RCxNQUFNLE9BQU8sbUNBQW1DO0lBQzlDLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRW5DLE9BQU87UUFDWixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUUsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7U0FDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO1FBQ3JELFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDbkIsS0FBSyxNQUFNO2dCQUNULE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDOzhHQXBCVSxtQ0FBbUM7a0hBQW5DLG1DQUFtQzs7MkZBQW5DLG1DQUFtQztrQkFEL0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEVudGl0eSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUEVudGl0eURlZmluaXRpb25Mb2FkZXIsIEFYUEVudGl0eVByZWxvYWRFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IG1lc3NhZ2VGYWN0b3J5LCByb29tRmFjdG9yeSB9IGZyb20gJy4vZW50aXRpZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNQ29udmVyc2F0aW9uTW9kdWxlRW50aXR5UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBFbnRpdHlEZWZpbml0aW9uTG9hZGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgcHVibGljIHByZWxvYWQoKTogQVhQRW50aXR5UHJlbG9hZEVudGl0eVtdIHtcbiAgICBjb25zdCBtb2R1bGUgPSBSb290Q29uZmlnLm1vZHVsZS5uYW1lO1xuICAgIHJldHVybiBBcnJheS5mcm9tKE9iamVjdC52YWx1ZXMoUm9vdENvbmZpZy5lbnRpdGllcykpLm1hcCgoZW50aXR5OiBhbnkpID0+ICh7XG4gICAgICBtb2R1bGU6IG1vZHVsZSxcbiAgICAgIGVudGl0eTogZW50aXR5Lm5hbWUsXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldChtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICAgIHN3aXRjaCAoZW50aXR5TmFtZSkge1xuICAgICAgY2FzZSAncm9vbSc6XG4gICAgICAgIHJldHVybiByb29tRmFjdG9yeSh0aGlzLmluamVjdG9yKTtcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICByZXR1cm4gbWVzc2FnZUZhY3RvcnkodGhpcy5pbmplY3Rvcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\nexport class AXMMenuProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n this.entityService = inject(AXPEntityService);\n }\n async provide(context) {\n const module = RootConfig;\n const scope = RootConfig.config.i18n;\n context.addItems([\n {\n text: `t('plural-title', {scope:\"${scope}\"})`,\n path: `${this.sessionService.application?.name}/${module.config.route}`,\n priority: 2,\n icon: RootConfig.entities.room.icon,\n },\n ]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMMenuProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMMenuProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMMenuProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9tZW51LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR3JDLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVUsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBZWxEO0lBYkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUErQjtRQUMzQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFFckMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNmO2dCQUNFLElBQUksRUFBRSw2QkFBNkIsS0FBSyxLQUFLO2dCQUM3QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZFLFFBQVEsRUFBRSxDQUFDO2dCQUNYLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJO2FBQ3BDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoQlUsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQTWVudVByb3ZpZGVyLCBBWFBNZW51UHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTU1lbnVQcm92aWRlciBpbXBsZW1lbnRzIEFYUE1lbnVQcm92aWRlciB7XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG5cbiAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBNZW51UHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbW9kdWxlID0gUm9vdENvbmZpZztcbiAgICBjb25zdCBzY29wZSA9IFJvb3RDb25maWcuY29uZmlnLmkxOG47XG5cbiAgICBjb250ZXh0LmFkZEl0ZW1zKFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogYHQoJ3BsdXJhbC10aXRsZScsIHtzY29wZTpcIiR7c2NvcGV9XCJ9KWAsXG4gICAgICAgIHBhdGg6IGAke3RoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/Lm5hbWV9LyR7bW9kdWxlLmNvbmZpZy5yb3V0ZX1gLFxuICAgICAgICBwcmlvcml0eTogMixcbiAgICAgICAgaWNvbjogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLmljb24sXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=","import { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPFilterOperatorMiddlewareService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXMMessageService } from '../../entities/message/message.service';\nimport { AXMRoomService } from '../../entities/room/room.service';\nimport * as i0 from \"@angular/core\";\n//#region ---- Abstract Comment Service ----\nexport class AXMCommentService {\n}\n//#endregion\nexport class AXMCommentServiceImpl {\n constructor() {\n //#region ---- Dependencies ----\n this.roomService = inject(AXMRoomService);\n this.messageService = inject(AXMMessageService);\n this.sessionService = inject(AXPSessionService);\n this.usersService = inject(AXMUsersEntityService);\n this.filterService = inject(AXPFilterOperatorMiddlewareService);\n //#endregion\n //#region ---- Observables ----\n this._commentAdded$ = new Subject();\n this.commentAdded$ = this._commentAdded$.asObservable();\n this._commentRemoved$ = new Subject();\n this.commentRemoved$ = this._commentRemoved$.asObservable();\n this._commentUpdated$ = new Subject();\n this.commentUpdated$ = this._commentUpdated$.asObservable();\n this._threadAdded$ = new Subject();\n this.threadAdded$ = this._threadAdded$.asObservable();\n this._threadRemoved$ = new Subject();\n this.threadRemoved$ = this._threadRemoved$.asObservable();\n }\n //#endregion\n //#region ---- Helper Methods ----\n getCurrentUser() {\n const user = this.sessionService.user;\n if (!user) {\n throw new Error('No authenticated user found.');\n }\n return {\n id: user.id,\n type: 'user',\n };\n }\n async getUserInfo(userId) {\n try {\n await this.usersService.getOne(userId); // check if user exists\n return { id: userId, type: 'user' };\n }\n catch {\n throw new Error(`User with ID ${userId} not found`);\n }\n }\n formatComment(message, depth = 0) {\n return {\n ...message,\n depth,\n replies: [],\n replyCount: 0,\n };\n }\n buildCommentTree(comments) {\n const commentMap = new Map(comments.map((c) => [c.id, c]));\n const tree = [];\n comments.forEach((comment) => {\n if (comment.replyId && commentMap.has(comment.replyId)) {\n const parent = commentMap.get(comment.replyId);\n parent.replies.push(comment);\n comment.depth = parent.depth + 1;\n }\n else {\n tree.push(comment);\n }\n });\n commentMap.forEach((comment) => {\n comment.replyCount = comment.replies.length;\n });\n return tree;\n }\n //#endregion\n //#region ---- Comment Thread Service Implementation ----\n async createThread(entityRef, topic, title) {\n const currentUser = this.getCurrentUser();\n const room = {\n type: 'comment',\n topic: topic,\n title: title || `Comments for ${entityRef.type}#${entityRef.id}`,\n members: [currentUser],\n entityRef: entityRef,\n createdBy: currentUser.id,\n createdAt: new Date(),\n };\n await this.roomService.insertOne(room);\n const newThread = await this.getThread(entityRef, topic);\n if (!newThread) {\n throw new Error('Failed to create or retrieve thread after creation.');\n }\n this._threadAdded$.next(newThread);\n return newThread;\n }\n async getThread(entityRef, topic) {\n const { items } = await this.roomService.query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'entityRef.id',\n value: entityRef.id,\n operator: this.filterService.getOperator('equal'),\n },\n {\n field: 'entityRef.type',\n value: entityRef.type,\n operator: this.filterService.getOperator('equal'),\n },\n {\n field: 'topic',\n value: topic,\n operator: this.filterService.getOperator('equal'),\n },\n ],\n },\n });\n const room = items[0];\n if (!room) {\n return null;\n }\n const comments = await this.getComments(room.id, true);\n return {\n ...room,\n comments,\n commentCount: comments.length,\n };\n }\n async listThreads(entityRef, topic) {\n const { items } = await this.roomService.query({\n skip: 0,\n take: 100,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'entityRef.id',\n value: entityRef.id,\n operator: this.filterService.getOperator('equal'),\n },\n {\n field: 'entityRef.type',\n value: entityRef.type,\n operator: this.filterService.getOperator('equal'),\n },\n {\n field: 'topic',\n value: topic,\n operator: this.filterService.getOperator('equal'),\n },\n ],\n },\n });\n const threads = await Promise.all(items.map((room) => this.getThread(room.entityRef, room.topic)));\n return threads.filter((t) => t !== null);\n }\n async updateThread(entityRef, topic, data) {\n const thread = await this.getThread(entityRef, topic);\n if (!thread) {\n throw new Error(`Thread for entity ${entityRef.type}#${entityRef.id} not found.`);\n }\n await this.roomService.updateOne(thread.id, data);\n const updatedThread = await this.getThread(entityRef, topic);\n if (!updatedThread) {\n throw new Error('Failed to retrieve thread after update.');\n }\n return updatedThread;\n }\n async deleteThread(entityRef, topic) {\n const thread = await this.getThread(entityRef, topic);\n if (thread) {\n await this.roomService.deleteOne(thread.id);\n this._threadRemoved$.next(thread.id);\n }\n return true;\n }\n //#endregion\n //#region ---- Comment Service Implementation ----\n async addComment(threadId, content, parentCommentId, contentType = 'text', userId) {\n const author = userId ? await this.getUserInfo(userId) : this.getCurrentUser();\n const messageContent = { content, contentType };\n const message = {\n roomId: threadId,\n message: messageContent,\n author,\n replyId: parentCommentId,\n reactions: [],\n seen: [],\n createdBy: author.id,\n createdAt: new Date(),\n };\n const messageId = await this.messageService.insertOne(message);\n const newComment = await this.getComment(messageId);\n this._commentAdded$.next(newComment);\n return newComment;\n }\n async getComments(threadId, nested = true) {\n const { items } = await this.messageService.query({\n skip: 0,\n filter: { field: 'roomId', value: threadId, operator: this.filterService.getOperator('equal') },\n sort: [{ field: 'createdAt', dir: 'asc' }],\n take: 500, // Assuming a reasonable limit for comments per thread\n });\n const formattedComments = items.map((c) => this.formatComment(c));\n if (nested) {\n return this.buildCommentTree(formattedComments);\n }\n return formattedComments;\n }\n async getComment(commentId) {\n const message = await this.messageService.getOne(commentId);\n return this.formatComment(message);\n }\n async editComment(commentId, content, contentType = 'text') {\n const messageContent = { content, contentType };\n await this.messageService.updateOne(commentId, {\n message: messageContent,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n async deleteComment(commentId) {\n // Note: This is a hard delete. Soft delete might be preferable.\n await this.messageService.deleteOne(commentId);\n this._commentRemoved$.next(commentId);\n return true;\n }\n //#endregion\n //#region ---- Comment Reaction Service Implementation ----\n async addReaction(commentId, type) {\n const author = this.getCurrentUser();\n const comment = await this.messageService.getOne(commentId);\n const reactions = comment.reactions || [];\n if (reactions.some((r) => r.author.id === author.id && r.type === type)) {\n return this.formatComment(comment);\n }\n const updatedReactions = [...reactions, { author, type }];\n await this.messageService.updateOne(commentId, { reactions: updatedReactions });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n async removeReaction(commentId, type) {\n const author = this.getCurrentUser();\n const comment = await this.messageService.getOne(commentId);\n const updatedReactions = (comment.reactions || []).filter((r) => !(r.author.id === author.id && r.type === type));\n await this.messageService.updateOne(commentId, { reactions: updatedReactions });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n async getReactions(commentId) {\n const comment = await this.messageService.getOne(commentId);\n return comment.reactions || [];\n }\n async likeComment(commentId) {\n return this.addReaction(commentId, 'like');\n }\n async unlikeComment(commentId) {\n return this.removeReaction(commentId, 'like');\n }\n //#endregion\n //#region ---- Comment Pin Service Implementation ----\n async pinComment(commentId) {\n await this.messageService.updateOne(commentId, { isPinned: true });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n async unpinComment(commentId) {\n await this.messageService.updateOne(commentId, { isPinned: false });\n const updatedComment = await this.getComment(commentId);\n this._commentUpdated$.next(updatedComment);\n return updatedComment;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentServiceImpl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentServiceImpl, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUlsRSxnREFBZ0Q7QUFFaEQsTUFBTSxPQUFnQixpQkFBaUI7Q0F5RHRDO0FBRUQsWUFBWTtBQUtaLE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFJRSxvQ0FBb0M7UUFFbkIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDN0Msa0JBQWEsR0FBRyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUU1RSxZQUFZO1FBRVosbUNBQW1DO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUNuRCxrQkFBYSxHQUFHLElBQUksQ0FB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QixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFpQjtRQUNsQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7OEdBelVVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1Vc2Vyc0VudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvc2VjdXJpdHktbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBGaWx0ZXJPcGVyYXRvck1pZGRsZXdhcmVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQQ29udGVudCwgQVhQQ29udGVudFR5cGUsIEFYUEVudGl0eVJlZmVyZW5jZSwgQVhQVXNlclJlZmVyZW5jZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uTWVzc2FnZSwgQVhNQ29udmVyc2F0aW9uUmVhY3Rpb24sIEFYTVJlYWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS50eXBlcyc7XG5pbXBvcnQgeyBBWE1Sb29tU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3Jvb20vcm9vbS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUNvbnZlcnNhdGlvblJvb20gfSBmcm9tICcuLi8uLi9lbnRpdGllcy9yb29tL3Jvb20udHlwZXMnO1xuaW1wb3J0IHsgQVhNQ29tbWVudCwgQVhNQ29tbWVudFRocmVhZCB9IGZyb20gJy4vY29tbWVudC50eXBlJztcblxuLy8jcmVnaW9uIC0tLS0gICBBYnN0cmFjdCBDb21tZW50IFNlcnZpY2UgICAtLS0tXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWE1Db21tZW50U2VydmljZSB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgT2JzZXJ2YWJsZXMgICAtLS0tXG5cbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29tbWVudEFkZGVkJDogT2JzZXJ2YWJsZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29tbWVudFJlbW92ZWQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbW1lbnRVcGRhdGVkJDogT2JzZXJ2YWJsZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgdGhyZWFkQWRkZWQkOiBPYnNlcnZhYmxlPEFYTUNvbW1lbnRUaHJlYWQ+O1xuICBhYnN0cmFjdCByZWFkb25seSB0aHJlYWRSZW1vdmVkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWVudCBUaHJlYWQgU2VydmljZSAgIC0tLS1cblxuICBhYnN0cmFjdCBjcmVhdGVUaHJlYWQoZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsIHRvcGljOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkPjtcbiAgYWJzdHJhY3QgZ2V0VGhyZWFkKGVudGl0eVJlZjogQVhQRW50aXR5UmVmZXJlbmNlLCB0b3BpYzogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkIHwgbnVsbD47XG4gIGFic3RyYWN0IGxpc3RUaHJlYWRzKGVudGl0eVJlZjogQVhQRW50aXR5UmVmZXJlbmNlLCB0b3BpYzogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkW10+O1xuICBhYnN0cmFjdCB1cGRhdGVUaHJlYWQoXG4gICAgZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsXG4gICAgdG9waWM6IHN0cmluZyxcbiAgICBkYXRhOiBQYXJ0aWFsPHsgdGl0bGU6IHN0cmluZyB9PixcbiAgKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkPjtcbiAgYWJzdHJhY3QgZGVsZXRlVGhyZWFkKGVudGl0eVJlZjogQVhQRW50aXR5UmVmZXJlbmNlLCB0b3BpYzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbW1lbnQgU2VydmljZSAgIC0tLS1cblxuICBhYnN0cmFjdCBhZGRDb21tZW50KFxuICAgIHRocmVhZElkOiBzdHJpbmcsXG4gICAgY29udGVudDogc3RyaW5nLFxuICAgIHBhcmVudENvbW1lbnRJZD86IHN0cmluZyxcbiAgICBjb250ZW50VHlwZT86IEFYUENvbnRlbnRUeXBlLFxuICAgIHVzZXJJZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgZ2V0Q29tbWVudHModGhyZWFkSWQ6IHN0cmluZywgbmVzdGVkOiBib29sZWFuKTogUHJvbWlzZTxBWE1Db21tZW50W10+O1xuICBhYnN0cmFjdCBnZXRDb21tZW50KGNvbW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgZWRpdENvbW1lbnQoY29tbWVudElkOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZywgY29udGVudFR5cGU/OiBBWFBDb250ZW50VHlwZSk6IFByb21pc2U8QVhNQ29tbWVudD47XG4gIGFic3RyYWN0IGRlbGV0ZUNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWVudCBSZWFjdGlvbiBTZXJ2aWNlICAgLS0tLVxuXG4gIGFic3RyYWN0IGFkZFJlYWN0aW9uKGNvbW1lbnRJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbW1lbnQ+O1xuICBhYnN0cmFjdCByZW1vdmVSZWFjdGlvbihjb21tZW50SWQ6IHN0cmluZywgdHlwZTogQVhNUmVhY3Rpb25UeXBlKTogUHJvbWlzZTxBWE1Db21tZW50PjtcbiAgYWJzdHJhY3QgZ2V0UmVhY3Rpb25zKGNvbW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdPjtcbiAgYWJzdHJhY3QgbGlrZUNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnQ+O1xuICBhYnN0cmFjdCB1bmxpa2VDb21tZW50KGNvbW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50PjtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbW1lbnQgUGluIFNlcnZpY2UgICAtLS0tXG5cbiAgYWJzdHJhY3QgcGluQ29tbWVudChjb21tZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudD47XG4gIGFic3RyYWN0IHVucGluQ29tbWVudChjb21tZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudD47XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ29tbWVudFNlcnZpY2VJbXBsIGltcGxlbWVudHMgQVhNQ29tbWVudFNlcnZpY2Uge1xuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IHJvb21TZXJ2aWNlID0gaW5qZWN0KEFYTVJvb21TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZSA9IGluamVjdChBWE1NZXNzYWdlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJzU2VydmljZSA9IGluamVjdChBWE1Vc2Vyc0VudGl0eVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlclNlcnZpY2UgPSBpbmplY3QoQVhQRmlsdGVyT3BlcmF0b3JNaWRkbGV3YXJlU2VydmljZSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBPYnNlcnZhYmxlcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21tZW50QWRkZWQkID0gbmV3IFN1YmplY3Q8QVhNQ29tbWVudD4oKTtcbiAgcmVhZG9ubHkgY29tbWVudEFkZGVkJCA9IHRoaXMuX2NvbW1lbnRBZGRlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29tbWVudFJlbW92ZWQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICByZWFkb25seSBjb21tZW50UmVtb3ZlZCQgPSB0aGlzLl9jb21tZW50UmVtb3ZlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29tbWVudFVwZGF0ZWQkID0gbmV3IFN1YmplY3Q8QVhNQ29tbWVudD4oKTtcbiAgcmVhZG9ubHkgY29tbWVudFVwZGF0ZWQkID0gdGhpcy5fY29tbWVudFVwZGF0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVhZEFkZGVkJCA9IG5ldyBTdWJqZWN0PEFYTUNvbW1lbnRUaHJlYWQ+KCk7XG4gIHJlYWRvbmx5IHRocmVhZEFkZGVkJCA9IHRoaXMuX3RocmVhZEFkZGVkJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlYWRSZW1vdmVkJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdGhyZWFkUmVtb3ZlZCQgPSB0aGlzLl90aHJlYWRSZW1vdmVkJC5hc09ic2VydmFibGUoKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogQVhQVXNlclJlZmVyZW5jZSB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcjtcbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gYXV0aGVudGljYXRlZCB1c2VyIGZvdW5kLicpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHVzZXIuaWQsXG4gICAgICB0eXBlOiAndXNlcicsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VXNlckluZm8odXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFVzZXJSZWZlcmVuY2U+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy51c2Vyc1NlcnZpY2UuZ2V0T25lKHVzZXJJZCk7IC8vIGNoZWNrIGlmIHVzZXIgZXhpc3RzXG4gICAgICByZXR1cm4geyBpZDogdXNlcklkLCB0eXBlOiAndXNlcicgfTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVXNlciB3aXRoIElEICR7dXNlcklkfSBub3QgZm91bmRgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdENvbW1lbnQobWVzc2FnZTogQVhNQ29udmVyc2F0aW9uTWVzc2FnZSwgZGVwdGggPSAwKTogQVhNQ29tbWVudCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICBkZXB0aCxcbiAgICAgIHJlcGxpZXM6IFtdLFxuICAgICAgcmVwbHlDb3VudDogMCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbW1lbnRUcmVlKGNvbW1lbnRzOiBBWE1Db21tZW50W10pOiBBWE1Db21tZW50W10ge1xuICAgIGNvbnN0IGNvbW1lbnRNYXAgPSBuZXcgTWFwPHN0cmluZywgQVhNQ29tbWVudD4oY29tbWVudHMubWFwKChjKSA9PiBbYy5pZCwgY10pKTtcbiAgICBjb25zdCB0cmVlOiBBWE1Db21tZW50W10gPSBbXTtcblxuICAgIGNvbW1lbnRzLmZvckVhY2goKGNvbW1lbnQpID0+IHtcbiAgICAgIGlmIChjb21tZW50LnJlcGx5SWQgJiYgY29tbWVudE1hcC5oYXMoY29tbWVudC5yZXBseUlkKSkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBjb21tZW50TWFwLmdldChjb21tZW50LnJlcGx5SWQpITtcbiAgICAgICAgcGFyZW50LnJlcGxpZXMucHVzaChjb21tZW50KTtcbiAgICAgICAgY29tbWVudC5kZXB0aCA9IHBhcmVudC5kZXB0aCArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmVlLnB1c2goY29tbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb21tZW50TWFwLmZvckVhY2goKGNvbW1lbnQpID0+IHtcbiAgICAgIGNvbW1lbnQucmVwbHlDb3VudCA9IGNvbW1lbnQucmVwbGllcy5sZW5ndGg7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHJlZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWVudCBUaHJlYWQgU2VydmljZSBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuICBhc3luYyBjcmVhdGVUaHJlYWQoZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsIHRvcGljOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50VGhyZWFkPiB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3Qgcm9vbTogT21pdDxBWE1Db252ZXJzYXRpb25Sb29tLCAnaWQnPiA9IHtcbiAgICAgIHR5cGU6ICdjb21tZW50JyxcbiAgICAgIHRvcGljOiB0b3BpYyxcbiAgICAgIHRpdGxlOiB0aXRsZSB8fCBgQ29tbWVudHMgZm9yICR7ZW50aXR5UmVmLnR5cGV9IyR7ZW50aXR5UmVmLmlkfWAsXG4gICAgICBtZW1iZXJzOiBbY3VycmVudFVzZXJdLFxuICAgICAgZW50aXR5UmVmOiBlbnRpdHlSZWYsXG4gICAgICBjcmVhdGVkQnk6IGN1cnJlbnRVc2VyLmlkLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5yb29tU2VydmljZS5pbnNlcnRPbmUocm9vbSk7XG4gICAgY29uc3QgbmV3VGhyZWFkID0gYXdhaXQgdGhpcy5nZXRUaHJlYWQoZW50aXR5UmVmLCB0b3BpYyk7XG4gICAgaWYgKCFuZXdUaHJlYWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBvciByZXRyaWV2ZSB0aHJlYWQgYWZ0ZXIgY3JlYXRpb24uJyk7XG4gICAgfVxuICAgIHRoaXMuX3RocmVhZEFkZGVkJC5uZXh0KG5ld1RocmVhZCk7XG4gICAgcmV0dXJuIG5ld1RocmVhZDtcbiAgfVxuXG4gIGFzeW5jIGdldFRocmVhZChlbnRpdHlSZWY6IEFYUEVudGl0eVJlZmVyZW5jZSwgdG9waWM6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudFRocmVhZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXA6IDAsXG4gICAgICB0YWtlOiAxLFxuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGxvZ2ljOiAnYW5kJyxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkOiAnZW50aXR5UmVmLmlkJyxcbiAgICAgICAgICAgIHZhbHVlOiBlbnRpdHlSZWYuaWQsXG4gICAgICAgICAgICBvcGVyYXRvcjogdGhpcy5maWx0ZXJTZXJ2aWNlLmdldE9wZXJhdG9yKCdlcXVhbCcpIGFzIGFueSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkOiAnZW50aXR5UmVmLnR5cGUnLFxuICAgICAgICAgICAgdmFsdWU6IGVudGl0eVJlZi50eXBlLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHRoaXMuZmlsdGVyU2VydmljZS5nZXRPcGVyYXRvcignZXF1YWwnKSBhcyBhbnksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ3RvcGljJyxcbiAgICAgICAgICAgIHZhbHVlOiB0b3BpYyxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0T3BlcmF0b3IoJ2VxdWFsJykgYXMgYW55LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgcm9vbSA9IGl0ZW1zWzBdO1xuICAgIGlmICghcm9vbSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWVudHMgPSBhd2FpdCB0aGlzLmdldENvbW1lbnRzKHJvb20uaWQsIHRydWUpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yb29tLFxuICAgICAgY29tbWVudHMsXG4gICAgICBjb21tZW50Q291bnQ6IGNvbW1lbnRzLmxlbmd0aCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbGlzdFRocmVhZHMoZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsIHRvcGljOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnRUaHJlYWRbXT4ge1xuICAgIGNvbnN0IHsgaXRlbXMgfSA9IGF3YWl0IHRoaXMucm9vbVNlcnZpY2UucXVlcnkoe1xuICAgICAgc2tpcDogMCxcbiAgICAgIHRha2U6IDEwMCxcbiAgICAgIGZpbHRlcjoge1xuICAgICAgICBsb2dpYzogJ2FuZCcsXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ2VudGl0eVJlZi5pZCcsXG4gICAgICAgICAgICB2YWx1ZTogZW50aXR5UmVmLmlkLFxuICAgICAgICAgICAgb3BlcmF0b3I6IHRoaXMuZmlsdGVyU2VydmljZS5nZXRPcGVyYXRvcignZXF1YWwnKSBhcyBhbnksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ2VudGl0eVJlZi50eXBlJyxcbiAgICAgICAgICAgIHZhbHVlOiBlbnRpdHlSZWYudHlwZSxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0T3BlcmF0b3IoJ2VxdWFsJykgYXMgYW55LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGQ6ICd0b3BpYycsXG4gICAgICAgICAgICB2YWx1ZTogdG9waWMsXG4gICAgICAgICAgICBvcGVyYXRvcjogdGhpcy5maWx0ZXJTZXJ2aWNlLmdldE9wZXJhdG9yKCdlcXVhbCcpIGFzIGFueSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRocmVhZHMgPSBhd2FpdCBQcm9taXNlLmFsbChpdGVtcy5tYXAoKHJvb20pID0+IHRoaXMuZ2V0VGhyZWFkKHJvb20uZW50aXR5UmVmISwgcm9vbS50b3BpYyEpKSk7XG4gICAgcmV0dXJuIHRocmVhZHMuZmlsdGVyKCh0KTogdCBpcyBBWE1Db21tZW50VGhyZWFkID0+IHQgIT09IG51bGwpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVGhyZWFkKFxuICAgIGVudGl0eVJlZjogQVhQRW50aXR5UmVmZXJlbmNlLFxuICAgIHRvcGljOiBzdHJpbmcsXG4gICAgZGF0YTogUGFydGlhbDx7IHRpdGxlOiBzdHJpbmcgfT4sXG4gICk6IFByb21pc2U8QVhNQ29tbWVudFRocmVhZD4ge1xuICAgIGNvbnN0IHRocmVhZCA9IGF3YWl0IHRoaXMuZ2V0VGhyZWFkKGVudGl0eVJlZiwgdG9waWMpO1xuICAgIGlmICghdGhyZWFkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRocmVhZCBmb3IgZW50aXR5ICR7ZW50aXR5UmVmLnR5cGV9IyR7ZW50aXR5UmVmLmlkfSBub3QgZm91bmQuYCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHRocmVhZC5pZCwgZGF0YSk7XG4gICAgY29uc3QgdXBkYXRlZFRocmVhZCA9IGF3YWl0IHRoaXMuZ2V0VGhyZWFkKGVudGl0eVJlZiwgdG9waWMpO1xuICAgIGlmICghdXBkYXRlZFRocmVhZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcmV0cmlldmUgdGhyZWFkIGFmdGVyIHVwZGF0ZS4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZWRUaHJlYWQ7XG4gIH1cblxuICBhc3luYyBkZWxldGVUaHJlYWQoZW50aXR5UmVmOiBBWFBFbnRpdHlSZWZlcmVuY2UsIHRvcGljOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB0aHJlYWQgPSBhd2FpdCB0aGlzLmdldFRocmVhZChlbnRpdHlSZWYsIHRvcGljKTtcbiAgICBpZiAodGhyZWFkKSB7XG4gICAgICBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmRlbGV0ZU9uZSh0aHJlYWQuaWQpO1xuICAgICAgdGhpcy5fdGhyZWFkUmVtb3ZlZCQubmV4dCh0aHJlYWQuaWQpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWVudCBTZXJ2aWNlIEltcGxlbWVudGF0aW9uICAgLS0tLVxuXG4gIGFzeW5jIGFkZENvbW1lbnQoXG4gICAgdGhyZWFkSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgcGFyZW50Q29tbWVudElkPzogc3RyaW5nLFxuICAgIGNvbnRlbnRUeXBlOiBBWFBDb250ZW50VHlwZSA9ICd0ZXh0JyxcbiAgICB1c2VySWQ/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8QVhNQ29tbWVudD4ge1xuICAgIGNvbnN0IGF1dGhvciA9IHVzZXJJZCA/IGF3YWl0IHRoaXMuZ2V0VXNlckluZm8odXNlcklkKSA6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBjb25zdCBtZXNzYWdlQ29udGVudDogQVhQQ29udGVudCA9IHsgY29udGVudCwgY29udGVudFR5cGUgfTtcbiAgICBjb25zdCBtZXNzYWdlOiBPbWl0PEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2UsICdpZCc+ID0ge1xuICAgICAgcm9vbUlkOiB0aHJlYWRJZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VDb250ZW50LFxuICAgICAgYXV0aG9yLFxuICAgICAgcmVwbHlJZDogcGFyZW50Q29tbWVudElkLFxuICAgICAgcmVhY3Rpb25zOiBbXSxcbiAgICAgIHNlZW46IFtdLFxuICAgICAgY3JlYXRlZEJ5OiBhdXRob3IuaWQsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgfTtcbiAgICBjb25zdCBtZXNzYWdlSWQgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluc2VydE9uZShtZXNzYWdlKTtcbiAgICBjb25zdCBuZXdDb21tZW50ID0gYXdhaXQgdGhpcy5nZXRDb21tZW50KG1lc3NhZ2VJZCk7XG4gICAgdGhpcy5fY29tbWVudEFkZGVkJC5uZXh0KG5ld0NvbW1lbnQpO1xuICAgIHJldHVybiBuZXdDb21tZW50O1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29tbWVudHModGhyZWFkSWQ6IHN0cmluZywgbmVzdGVkID0gdHJ1ZSk6IFByb21pc2U8QVhNQ29tbWVudFtdPiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgZmlsdGVyOiB7IGZpZWxkOiAncm9vbUlkJywgdmFsdWU6IHRocmVhZElkLCBvcGVyYXRvcjogdGhpcy5maWx0ZXJTZXJ2aWNlLmdldE9wZXJhdG9yKCdlcXVhbCcpIGFzIGFueSB9LFxuICAgICAgc29ydDogW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXI6ICdhc2MnIH1dLFxuICAgICAgdGFrZTogNTAwLCAvLyBBc3N1bWluZyBhIHJlYXNvbmFibGUgbGltaXQgZm9yIGNvbW1lbnRzIHBlciB0aHJlYWRcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvcm1hdHRlZENvbW1lbnRzID0gaXRlbXMubWFwKChjKSA9PiB0aGlzLmZvcm1hdENvbW1lbnQoYykpO1xuXG4gICAgaWYgKG5lc3RlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRDb21tZW50VHJlZShmb3JtYXR0ZWRDb21tZW50cyk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZWRDb21tZW50cztcbiAgfVxuXG4gIGFzeW5jIGdldENvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnQ+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUoY29tbWVudElkKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRDb21tZW50KG1lc3NhZ2UpO1xuICB9XG5cbiAgYXN5bmMgZWRpdENvbW1lbnQoY29tbWVudElkOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZywgY29udGVudFR5cGU6IEFYUENvbnRlbnRUeXBlID0gJ3RleHQnKTogUHJvbWlzZTxBWE1Db21tZW50PiB7XG4gICAgY29uc3QgbWVzc2FnZUNvbnRlbnQ6IEFYUENvbnRlbnQgPSB7IGNvbnRlbnQsIGNvbnRlbnRUeXBlIH07XG4gICAgYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUoY29tbWVudElkLCB7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlQ29udGVudCxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgIH0pO1xuICAgIGNvbnN0IHVwZGF0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5nZXRDb21tZW50KGNvbW1lbnRJZCk7XG4gICAgdGhpcy5fY29tbWVudFVwZGF0ZWQkLm5leHQodXBkYXRlZENvbW1lbnQpO1xuICAgIHJldHVybiB1cGRhdGVkQ29tbWVudDtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBOb3RlOiBUaGlzIGlzIGEgaGFyZCBkZWxldGUuIFNvZnQgZGVsZXRlIG1pZ2h0IGJlIHByZWZlcmFibGUuXG4gICAgYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5kZWxldGVPbmUoY29tbWVudElkKTtcbiAgICB0aGlzLl9jb21tZW50UmVtb3ZlZCQubmV4dChjb21tZW50SWQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21tZW50IFJlYWN0aW9uIFNlcnZpY2UgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbiAgYXN5bmMgYWRkUmVhY3Rpb24oY29tbWVudElkOiBzdHJpbmcsIHR5cGU6IEFYTVJlYWN0aW9uVHlwZSk6IFByb21pc2U8QVhNQ29tbWVudD4ge1xuICAgIGNvbnN0IGF1dGhvciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBjb25zdCBjb21tZW50ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUoY29tbWVudElkKTtcbiAgICBjb25zdCByZWFjdGlvbnMgPSBjb21tZW50LnJlYWN0aW9ucyB8fCBbXTtcblxuICAgIGlmIChyZWFjdGlvbnMuc29tZSgocikgPT4gci5hdXRob3IuaWQgPT09IGF1dGhvci5pZCAmJiByLnR5cGUgPT09IHR5cGUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRDb21tZW50KGNvbW1lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRSZWFjdGlvbnMgPSBbLi4ucmVhY3Rpb25zLCB7IGF1dGhvciwgdHlwZSB9XTtcbiAgICBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShjb21tZW50SWQsIHsgcmVhY3Rpb25zOiB1cGRhdGVkUmVhY3Rpb25zIH0pO1xuICAgIGNvbnN0IHVwZGF0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5nZXRDb21tZW50KGNvbW1lbnRJZCk7XG4gICAgdGhpcy5fY29tbWVudFVwZGF0ZWQkLm5leHQodXBkYXRlZENvbW1lbnQpO1xuICAgIHJldHVybiB1cGRhdGVkQ29tbWVudDtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVJlYWN0aW9uKGNvbW1lbnRJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbW1lbnQ+IHtcbiAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgY29tbWVudCA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKGNvbW1lbnRJZCk7XG4gICAgY29uc3QgdXBkYXRlZFJlYWN0aW9ucyA9IChjb21tZW50LnJlYWN0aW9ucyB8fCBbXSkuZmlsdGVyKChyKSA9PiAhKHIuYXV0aG9yLmlkID09PSBhdXRob3IuaWQgJiYgci50eXBlID09PSB0eXBlKSk7XG4gICAgYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUoY29tbWVudElkLCB7IHJlYWN0aW9uczogdXBkYXRlZFJlYWN0aW9ucyB9KTtcbiAgICBjb25zdCB1cGRhdGVkQ29tbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29tbWVudChjb21tZW50SWQpO1xuICAgIHRoaXMuX2NvbW1lbnRVcGRhdGVkJC5uZXh0KHVwZGF0ZWRDb21tZW50KTtcbiAgICByZXR1cm4gdXBkYXRlZENvbW1lbnQ7XG4gIH1cblxuICBhc3luYyBnZXRSZWFjdGlvbnMoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uW10+IHtcbiAgICBjb25zdCBjb21tZW50ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUoY29tbWVudElkKTtcbiAgICByZXR1cm4gY29tbWVudC5yZWFjdGlvbnMgfHwgW107XG4gIH1cblxuICBhc3luYyBsaWtlQ29tbWVudChjb21tZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudD4ge1xuICAgIHJldHVybiB0aGlzLmFkZFJlYWN0aW9uKGNvbW1lbnRJZCwgJ2xpa2UnKTtcbiAgfVxuXG4gIGFzeW5jIHVubGlrZUNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVSZWFjdGlvbihjb21tZW50SWQsICdsaWtlJyk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbW1lbnQgUGluIFNlcnZpY2UgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbiAgYXN5bmMgcGluQ29tbWVudChjb21tZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudD4ge1xuICAgIGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKGNvbW1lbnRJZCwgeyBpc1Bpbm5lZDogdHJ1ZSB9KTtcbiAgICBjb25zdCB1cGRhdGVkQ29tbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29tbWVudChjb21tZW50SWQpO1xuICAgIHRoaXMuX2NvbW1lbnRVcGRhdGVkJC5uZXh0KHVwZGF0ZWRDb21tZW50KTtcbiAgICByZXR1cm4gdXBkYXRlZENvbW1lbnQ7XG4gIH1cblxuICBhc3luYyB1bnBpbkNvbW1lbnQoY29tbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnQ+IHtcbiAgICBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShjb21tZW50SWQsIHsgaXNQaW5uZWQ6IGZhbHNlIH0pO1xuICAgIGNvbnN0IHVwZGF0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5nZXRDb21tZW50KGNvbW1lbnRJZCk7XG4gICAgdGhpcy5fY29tbWVudFVwZGF0ZWQkLm5leHQodXBkYXRlZENvbW1lbnQpO1xuICAgIHJldHVybiB1cGRhdGVkQ29tbWVudDtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19","import { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, signal, viewChild, } from '@angular/core';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXMCommentService } from './comment.service';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/wysiwyg\";\nimport * as i2 from \"@acorex/components/skeleton\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/components/comment\";\nimport * as i5 from \"@acorex/components/button\";\nimport * as i6 from \"@acorex/components/loading\";\nimport * as i7 from \"@acorex/components/dropdown\";\nimport * as i8 from \"@acorex/core/format\";\nimport * as i9 from \"@acorex/components/form\";\nimport * as i10 from \"@acorex/components/toolbar\";\nimport * as i11 from \"@angular/forms\";\nimport * as i12 from \"@acorex/components/dropdown-button\";\nexport class AXMCommentComponent {\n constructor() {\n this.refrenceType = input.required();\n this.refrenceId = input.required();\n this.subject = input.required();\n this.hasCooldown = signal(false);\n this.commentContent = signal('');\n this.isSubmitting = signal(false);\n this.isReplyingMode = signal(false);\n this.isEditingMode = signal(false);\n this.isLoading = signal(true);\n this.failedImageIds = signal([]);\n this.activeReplyComment = signal(undefined);\n this.activeEditComment = signal(undefined);\n this.highlightedCommentId = signal(null);\n this.wysiwygEditor = viewChild.required('w');\n this.commentService = inject(AXMCommentService);\n this.sessionService = inject(AXPSessionService);\n this.toastService = inject(AXToastService);\n this.dialogService = inject(AXDialogService);\n this.sanitize = inject(DomSanitizer);\n this.destroyRef = inject(DestroyRef);\n this.comments = signal([]);\n this.thread = signal(undefined);\n this.wysiwygOptions = signal({\n look: 'solid',\n });\n this.avatarConfig = signal({\n color: 'primary',\n look: 'rounded',\n type: 'solid',\n });\n this.validateContent = (content) => {\n let isValid = true;\n if (!content || content === '<p><br></p>') {\n isValid = false;\n }\n return {\n rule: 'callback',\n result: isValid,\n message: isValid ? '' : 'Please fill the content',\n value: content,\n };\n };\n }\n ngOnInit() {\n this.isLoading.set(true);\n this.loadComments().finally(() => {\n setTimeout(() => {\n this.isLoading.set(false);\n }, 250);\n });\n this.commentService.commentAdded$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((comment) => {\n if (comment.replyId) {\n this.comments.update((comments) => {\n return comments.map((c) => {\n if (c.id === comment.replyId) {\n const newReplies = c.replies ? [...c.replies, comment] : [comment];\n return { ...c, replies: newReplies, replyCount: newReplies.length };\n }\n return c;\n });\n });\n }\n else {\n this.comments.update((comments) => [...comments, comment]);\n }\n });\n this.commentService.commentUpdated$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((updatedComment) => {\n const update = (list) => {\n return list.map((c) => {\n if (c.id === updatedComment.id) {\n return { ...c, ...updatedComment, replies: updatedComment.replies || c.replies };\n }\n if (c.replies && c.replies.length > 0) {\n return { ...c, replies: update(c.replies) };\n }\n return c;\n });\n };\n this.comments.update((comments) => update(comments));\n });\n }\n getCurrentUser() {\n const user = this.sessionService.user;\n return user ? { id: user.id, type: 'user' } : null;\n }\n isLikedByUser(comment) {\n const user = this.getCurrentUser();\n if (!user)\n return false;\n return (comment.reactions || []).some((r) => r.author.id === user.id && r.type === 'like');\n }\n getReactionsCount(comment) {\n return (comment.reactions || []).filter((r) => r.type === 'like').length;\n }\n sanitizeHtml(htmlContent) {\n if (!htmlContent)\n return this.sanitize.bypassSecurityTrustHtml('');\n return this.sanitize.bypassSecurityTrustHtml(htmlContent);\n }\n handleImageError(imageId) {\n this.failedImageIds.update((ids) => [...ids, imageId]);\n }\n checkImageExists(imageId) {\n return !this.failedImageIds().includes(imageId);\n }\n async loadComments() {\n try {\n const thread = await this.commentService.getThread({ type: this.refrenceType(), id: this.refrenceId() }, this.subject());\n if (thread) {\n this.thread.set(thread);\n this.comments.set(thread.comments);\n }\n else {\n this.comments.set([]);\n this.thread.set(undefined);\n }\n }\n catch (error) {\n console.error('Failed to load comments:', error);\n this.toastService.show({\n content: 'Failed to load comments. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.comments.set([]);\n }\n }\n editMessage(comment, reply, userName) {\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.isEditingMode.set(true);\n this.activeEditComment.set({ ...comment, userName: userName || '' });\n const contentToEdit = reply ? reply.message?.content : comment.message?.content;\n this.commentContent.set(contentToEdit || '');\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n replyMessage(comment, reply, userName) {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(true);\n this.activeReplyComment.set({ ...comment, userName: userName || '' });\n if (reply) {\n const author = reply.author.fullName || reply.author.id;\n const mention = `<a data-id=\"${reply.id}\">@${author}</a> `;\n this.commentContent.set(mention);\n document.getElementsByClassName('ql-editor')[0].innerHTML = mention;\n this.wysiwygEditor()?.focus();\n }\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n async deleteComment(commentId) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this comment?',\n title: 'Delete Comment',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n await this.commentService.deleteComment(commentId);\n this.removeMessageById(commentId);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n if (this.isEditingMode() && this.activeEditComment()?.id === commentId) {\n this.resetReplyEditState();\n }\n dialog.close();\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n resetReplyEditState() {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n }\n async toggleLike(comment) {\n const isLiked = this.isLikedByUser(comment);\n this.updateLikeStatus(comment.id, !isLiked);\n try {\n if (isLiked) {\n await this.commentService.unlikeComment(comment.id);\n }\n else {\n await this.commentService.likeComment(comment.id);\n }\n }\n catch (error) {\n console.error('Failed to toggle like:', error);\n this.updateLikeStatus(comment.id, isLiked); // Revert optimistic update\n }\n }\n updateLikeStatus(commentId, willBeLiked) {\n const findAndToggle = (comments) => {\n return comments.map((c) => {\n if (c.id === commentId) {\n const user = this.getCurrentUser();\n if (!user)\n return c;\n let reactions = c.reactions || [];\n if (willBeLiked) {\n reactions.push({ author: user, type: 'like' });\n }\n else {\n reactions = reactions.filter((r) => r.author.id !== user.id || r.type !== 'like');\n }\n return { ...c, reactions };\n }\n if (c.replies && c.replies.length > 0) {\n c.replies = findAndToggle(c.replies);\n }\n return c;\n });\n };\n this.comments.update((comments) => findAndToggle(comments));\n }\n removeMessageById(commentId) {\n const filterOut = (comments) => {\n return comments\n .filter((c) => c.id !== commentId)\n .map((c) => {\n if (c.replies && c.replies.length > 0) {\n c.replies = filterOut(c.replies);\n }\n return c;\n });\n };\n this.comments.update((comments) => filterOut(comments));\n }\n async submitComment() {\n if (!this.validateContent(this.commentContent()).result) {\n return;\n }\n this.isSubmitting.set(true);\n console.log(this.commentContent());\n try {\n let currentThread = this.thread();\n if (!currentThread) {\n currentThread = await this.commentService.createThread({ type: this.refrenceType(), id: this.refrenceId() }, this.subject());\n this.thread.set(currentThread);\n }\n if (this.isEditingMode() && this.activeEditComment()?.id) {\n await this.commentService.editComment(this.activeEditComment().id, this.commentContent());\n this.hasCooldown.set(true);\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n }\n else {\n await this.commentService.addComment(currentThread.id, this.commentContent(), this.activeReplyComment()?.id);\n this.hasCooldown.set(true);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n }\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n setTimeout(() => {\n this.hasCooldown.set(false);\n }, 1000);\n }\n catch (error) {\n console.error('Error submitting comment:', error);\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to submit comment. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n scrollMain() {\n const comment = this.isReplyingMode() ? this.activeReplyComment() : this.activeEditComment();\n if (comment && comment.id) {\n const el = document.getElementById(comment.id);\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n this.highlightedCommentId.set(comment.id);\n setTimeout(() => {\n this.highlightedCommentId.set(null);\n }, 1000);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: AXMCommentComponent, isStandalone: true, selector: \"axm-comment\", inputs: { refrenceType: { classPropertyName: \"refrenceType\", publicName: \"refrenceType\", isSignal: true, isRequired: true, transformFunction: null }, refrenceId: { classPropertyName: \"refrenceId\", publicName: \"refrenceId\", isSignal: true, isRequired: true, transformFunction: null }, subject: { classPropertyName: \"subject\", publicName: \"subject\", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: \"wysiwygEditor\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"ax-size-full ax-flex ax-flex-col ax-justify-between ax-p-4 ax-overflow-hidden\\\">\\n <ax-comment-container class=\\\"ax-overflow-auto\\\">\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item\\n [id]=\\\"comment.id!\\\"\\n [replyCount]=\\\"comment.replyCount\\\"\\n [class.highlighted]=\\\"highlightedCommentId() === comment.id\\\"\\n [@fadeIn]\\n >\\n <axp-user-avatar #user [size]=\\\"48\\\" [userId]=\\\"comment.author.id\\\" ngProjectAs=\\\"'ax-avatar'\\\"></axp-user-avatar>\\n <ax-title>{{ user.firstName() + ' ' + user.lastName() }}</ax-title>\\n <ax-comment-date>{{ comment.createdAt | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n text=\\\"Edit\\\"\\n color=\\\"neutral\\\"\\n (click)=\\\"editMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment.id!)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"isLikedByUser(comment)\\\">\\n {{ getReactionsCount(comment) }}\\n </ax-comment-like>\\n <ax-comment-reply-text\\n (click)=\\\"replyMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\\\"\\n ></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\" [class.highlighted]=\\\"highlightedCommentId() === reply.id\\\" [@fadeIn]>\\n <axp-user-avatar\\n #user2\\n [size]=\\\"48\\\"\\n [userId]=\\\"reply.author.id\\\"\\n ngProjectAs=\\\"'ax-avatar'\\\"\\n ></axp-user-avatar>\\n <ax-title>{{ user2.firstName() + ' ' + user2.lastName() }}</ax-title>\\n <ax-comment-date>{{ reply.createdAt | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n text=\\\"Edit\\\"\\n color=\\\"neutral\\\"\\n (click)=\\\"editMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(reply.id!)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(reply)\\\" [liked]=\\\"isLikedByUser(reply)\\\">\\n {{ getReactionsCount(reply) }}\\n </ax-comment-like>\\n <ax-comment-reply-text\\n (click)=\\\"replyMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\\\"\\n ></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? activeReplyComment()?.userName : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment()\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%}ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}ax-wysiwyg-container .highlighted{background:var(--ax-color-primary-050)!important;border-radius:.25rem;transition:background 1s ease-in-out}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXWysiwygModule }, { kind: \"component\", type: i1.AXWysiwygContainerComponent, selector: \"ax-wysiwyg-container\", inputs: [\"look\", \"placeHolder\"], outputs: [\"onValueChanged\"] }, { kind: \"component\", type: i1.AXWysiwygViewComponent, selector: \"ax-wysiwyg-view\", inputs: [\"class\"] }, { kind: \"component\", type: i1.AXWysiwygAlignmentComponent, selector: \"ax-wysiwyg-alignment\" }, { kind: \"component\", type: i1.AXWysiwygColorsComponent, selector: \"ax-wysiwyg-colors\" }, { kind: \"component\", type: i1.AXWysiwygFontStyleComponent, selector: \"ax-wysiwyg-font-style\" }, { kind: \"component\", type: i1.AXWysiwygHistoryComponent, selector: \"ax-wysiwyg-history\" }, { kind: \"component\", type: i1.AXWysiwygListComponent, selector: \"ax-wysiwyg-list\" }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i2.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXCommentModule }, { kind: \"component\", type: i4.AXCommentViewComponent, selector: \"ax-comment-view\" }, { kind: \"component\", type: i4.AXCommentContainerComponent, selector: \"ax-comment-container\" }, { kind: \"component\", type: i4.AxCommentItemComponent, selector: \"ax-comment-item\", inputs: [\"replyCount\"] }, { kind: \"component\", type: i4.AXCommentLikeComponent, selector: \"ax-comment-like\", inputs: [\"liked\"], outputs: [\"likedChange\", \"onLiked\"] }, { kind: \"component\", type: i4.AXMenuOptionsComponent, selector: \"ax-comment-menu-options\" }, { kind: \"component\", type: i4.AXCommentReplyTextComponent, selector: \"ax-comment-reply-text\" }, { kind: \"component\", type: i4.AXCommentDateComponent, selector: \"ax-comment-date\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i5.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i5.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i5.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"ngmodule\", type: AXImageModule }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i6.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i7.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"pipe\", type: i8.AXFormatPipe, name: \"format\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i9.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i9.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"directive\", type: i9.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }, { kind: \"ngmodule\", type: AXToolBarModule }, { kind: \"component\", type: i10.AXToolBarComponent, selector: \"ax-toolbar\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i11.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i11.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"component\", type: i12.AXDropdownButtonComponent, selector: \"ax-dropdown-button\", inputs: [\"disabled\", \"size\", \"color\", \"look\", \"text\", \"type\", \"mode\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"lookChange\", \"colorChange\", \"disabledChange\"] }, { kind: \"component\", type: AXPUserAvatarComponent, selector: \"axp-user-avatar\", inputs: [\"size\", \"userId\"] }], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n ]),\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-comment', animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n ]),\n ], imports: [\n AXWysiwygModule,\n AXConversationModule,\n AXSkeletonModule,\n AXDecoratorModule,\n AXCommentModule,\n AXButtonModule,\n AXAvatarModule,\n AXImageModule,\n AXLoadingModule,\n AXDropdownModule,\n AXFormatModule,\n AsyncPipe,\n AXFormModule,\n AXToolBarModule,\n FormsModule,\n AXDropdownButtonModule,\n AXPUserAvatarComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"ax-size-full ax-flex ax-flex-col ax-justify-between ax-p-4 ax-overflow-hidden\\\">\\n <ax-comment-container class=\\\"ax-overflow-auto\\\">\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item\\n [id]=\\\"comment.id!\\\"\\n [replyCount]=\\\"comment.replyCount\\\"\\n [class.highlighted]=\\\"highlightedCommentId() === comment.id\\\"\\n [@fadeIn]\\n >\\n <axp-user-avatar #user [size]=\\\"48\\\" [userId]=\\\"comment.author.id\\\" ngProjectAs=\\\"'ax-avatar'\\\"></axp-user-avatar>\\n <ax-title>{{ user.firstName() + ' ' + user.lastName() }}</ax-title>\\n <ax-comment-date>{{ comment.createdAt | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n text=\\\"Edit\\\"\\n color=\\\"neutral\\\"\\n (click)=\\\"editMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment.id!)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"isLikedByUser(comment)\\\">\\n {{ getReactionsCount(comment) }}\\n </ax-comment-like>\\n <ax-comment-reply-text\\n (click)=\\\"replyMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\\\"\\n ></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\" [class.highlighted]=\\\"highlightedCommentId() === reply.id\\\" [@fadeIn]>\\n <axp-user-avatar\\n #user2\\n [size]=\\\"48\\\"\\n [userId]=\\\"reply.author.id\\\"\\n ngProjectAs=\\\"'ax-avatar'\\\"\\n ></axp-user-avatar>\\n <ax-title>{{ user2.firstName() + ' ' + user2.lastName() }}</ax-title>\\n <ax-comment-date>{{ reply.createdAt | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item\\n text=\\\"Edit\\\"\\n color=\\\"neutral\\\"\\n (click)=\\\"editMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(reply.id!)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(reply)\\\" [liked]=\\\"isLikedByUser(reply)\\\">\\n {{ getReactionsCount(reply) }}\\n </ax-comment-like>\\n <ax-comment-reply-text\\n (click)=\\\"replyMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\\\"\\n ></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? activeReplyComment()?.userName : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment()\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%}ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}ax-wysiwyg-container .highlighted{background:var(--ax-color-primary-050)!important;border-radius:.25rem;transition:background 1s ease-in-out}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY29tbWVudC9jb21tZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jb21tZW50L2NvbW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUd0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBdUQ3QyxNQUFNLE9BQU8sbUJBQW1CO0lBckRoQztRQXNERSxpQkFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUN4QyxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3RDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFFekIsZ0JBQVcsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckMsbUJBQWMsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFcEMsaUJBQVksR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDeEMsa0JBQWEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdkMsY0FBUyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUVsQyxtQkFBYyxHQUFHLE1BQU0sQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBRyxNQUFNLENBQWtELFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLHNCQUFpQixHQUFHLE1BQU0sQ0FBa0QsU0FBUyxDQUFDLENBQUM7UUFDdkYseUJBQW9CLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUVuRCxrQkFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQThCLEdBQUcsQ0FBQyxDQUFDO1FBRXZFLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRCxhQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUIsYUFBUSxHQUFHLE1BQU0sQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUNwQyxXQUFNLEdBQUcsTUFBTSxDQUErQixTQUFTLENBQUMsQ0FBQztRQXdDekQsbUJBQWMsR0FBRyxNQUFNLENBRTlCO1lBQ0QsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDLENBQUM7UUFFTyxpQkFBWSxHQUFHLE1BQU0sQ0FJNUI7WUFDRCxLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxPQUFPO1NBQ2QsQ0FBQyxDQUFDO1FBaUJILG9CQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtZQUNwQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDbEIsQ0FBQztZQUNELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE1BQU0sRUFBRSxPQUFPO2dCQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMseUJBQXlCO2dCQUNqRCxLQUFLLEVBQUUsT0FBTzthQUNmLENBQUM7UUFDSixDQUFDLENBQUM7S0FzUEg7SUF0VUMsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEcsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2hDLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUN4QixJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDbkUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDdEUsQ0FBQzt3QkFDRCxPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUN6RyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQWtCLEVBQWdCLEVBQUU7Z0JBQ2xELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUMvQixPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNuRixDQUFDO29CQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDdEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQzlDLENBQUM7b0JBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBa0JPLGNBQWM7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUVTLGFBQWEsQ0FBQyxPQUFtQjtRQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4QixPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRVMsaUJBQWlCLENBQUMsT0FBbUI7UUFDN0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzRSxDQUFDO0lBZUQsWUFBWSxDQUFDLFdBQStCO1FBQzFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFlO1FBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUNoRCxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUNwRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQ2YsQ0FBQztZQUNGLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLE9BQU8sRUFBRSw0Q0FBNEM7Z0JBQ3JELEtBQUssRUFBRSxRQUFRO2dCQUNmLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixXQUFXLEVBQUUsSUFBSTtnQkFDakIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsZUFBZSxFQUFFLElBQUk7YUFDdEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBbUIsRUFBRSxLQUFrQixFQUFFLFFBQWlCO1FBQ3BFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRSxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUNoRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFtQixFQUFFLEtBQWtCLEVBQUUsUUFBaUI7UUFDckUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLE1BQU0sR0FBSSxLQUFLLENBQUMsTUFBYyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxNQUFNLE9BQU8sR0FBRyxlQUFlLEtBQUssQ0FBQyxFQUFFLE1BQU0sTUFBTSxPQUFPLENBQUM7WUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7WUFDcEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFpQjtRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUNyQyxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLE9BQU8sRUFBRSwrQ0FBK0M7WUFDeEQsS0FBSyxFQUFFLGdCQUFnQjtZQUN2QixJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsUUFBUTtvQkFDZCxLQUFLLEVBQUUsUUFBUTtvQkFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFO3dCQUN4QixDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDakIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO3dCQUM5QixDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7d0JBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsSUFBSSxDQUFDOzRCQUNILE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7NEJBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0NBQ3JCLE9BQU8sRUFBRSwrQkFBK0I7Z0NBQ3hDLEtBQUssRUFBRSxTQUFTO2dDQUNoQixRQUFRLEVBQUUsZUFBZTtnQ0FDekIsV0FBVyxFQUFFLElBQUk7Z0NBQ2pCLE9BQU8sRUFBRSxJQUFJO2dDQUNiLGVBQWUsRUFBRSxJQUFJOzZCQUN0QixDQUFDLENBQUM7NEJBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dDQUN2RSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzs0QkFDN0IsQ0FBQzs0QkFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ2pCLENBQUM7d0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzs0QkFDZixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQ0FDckIsT0FBTyxFQUFFLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywyQkFBMkI7Z0NBQ3hFLEtBQUssRUFBRSxRQUFRO2dDQUNmLFFBQVEsRUFBRSxlQUFlO2dDQUN6QixXQUFXLEVBQUUsSUFBSTtnQ0FDakIsT0FBTyxFQUFFLElBQUk7Z0NBQ2IsZUFBZSxFQUFFLElBQUk7NkJBQ3RCLENBQUMsQ0FBQzt3QkFDTCxDQUFDO29CQUNILENBQUM7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLFNBQVMsRUFBRSxJQUFJO29CQUNmLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUNiLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakIsQ0FBQztpQkFDRjthQUNGO1lBQ0QsV0FBVyxFQUFFLEtBQUs7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsUUFBUSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBbUI7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQztZQUNILElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQywyQkFBMkI7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFdBQW9CO1FBQzlELE1BQU0sYUFBYSxHQUFHLENBQUMsUUFBc0IsRUFBZ0IsRUFBRTtZQUM3RCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ25DLElBQUksQ0FBQyxJQUFJO3dCQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNwQixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxXQUFXLEVBQUUsQ0FBQzt3QkFDaEIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQ2pELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO29CQUNwRixDQUFDO29CQUNELE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQztnQkFDRCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3RDLENBQUMsQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztnQkFDRCxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDTyxpQkFBaUIsQ0FBQyxTQUFpQjtRQUN6QyxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQXNCLEVBQWdCLEVBQUU7WUFDekQsT0FBTyxRQUFRO2lCQUNaLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUM7aUJBQ2pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNULElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVTLEtBQUssQ0FBQyxhQUFhO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUM7WUFDSCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FDcEQsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFDcEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUNmLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDakMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUN6RCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztnQkFDM0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBRS9ELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixPQUFPLEVBQUUsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDZDQUE2QztnQkFDMUYsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixPQUFPLEVBQUUsSUFBSTtnQkFDYixlQUFlLEVBQUUsSUFBSTthQUN0QixDQUFDLENBQUM7UUFDTCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3RixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0MsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDUCxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQW5XVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixzbEJDN0ZoQyxxaGFBNE9BLDhaRHhMSSxlQUFlLDJ1QkFDZixvQkFBb0IsOEJBQ3BCLGdCQUFnQixrSUFDaEIsaUJBQWlCLHNWQUNqQixlQUFlLDh0QkFDZixjQUFjLG91QkFDZCxjQUFjLDhCQUNkLGFBQWEsOEJBQ2IsZUFBZSw4S0FDZixnQkFBZ0IscVFBQ2hCLGNBQWMsbUZBQ2QsU0FBUyw2Q0FDVCxZQUFZLGljQUNaLGVBQWUsMkdBQ2YsV0FBVyxnV0FDWCxzQkFBc0IsOFNBQ3RCLHNCQUFzQiwwRUF6Qlo7WUFDVixPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUNoQixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO29CQUNwRCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztpQkFDN0UsQ0FBQzthQUNILENBQUM7U0FDSDs7MkZBMkNVLG1CQUFtQjtrQkFyRC9CLFNBQVM7K0JBRUUsYUFBYSxjQUNYO3dCQUNWLE9BQU8sQ0FBQyxRQUFRLEVBQUU7NEJBQ2hCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7Z0NBQ3BELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzZCQUM3RSxDQUFDO3lCQUNILENBQUM7cUJBQ0gsV0FDUTt3QkFDUCxlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxzQkFBc0I7d0JBQ3RCLHNCQUFzQjtxQkFDdkIsbUJBc0JnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50LCBBWFd5c2l3eWdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvd3lzaXd5Zyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhTdHlsZUxvb2tUeXBlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhUb2FzdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9hc3QnO1xuaW1wb3J0IHsgQVhQVXNlclJlZmVyZW5jZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBWE1Db21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUNvbW1lbnQsIEFYTUNvbW1lbnRUaHJlYWQgfSBmcm9tICcuL2NvbW1lbnQudHlwZSc7XG5cbmltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDb21tZW50TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29udmVyc2F0aW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWEltYWdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2ltYWdlJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQVhUb29sQmFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2xiYXInO1xuaW1wb3J0IHsgQVhGb3JtYXRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUFVzZXJBdmF0YXJDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc2VsZWN0b3I6ICdheG0tY29tbWVudCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlSW4nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMHB4KScgfSksXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIEFYV3lzaXd5Z01vZHVsZSxcbiAgICBBWENvbnZlcnNhdGlvbk1vZHVsZSxcbiAgICBBWFNrZWxldG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYQ29tbWVudE1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRm9ybWF0TW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhUb29sQmFyTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhQVXNlckF2YXRhckNvbXBvbmVudCxcbiAgXSxcbiAgc3R5bGVzOiBgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gICAgYXgtd3lzaXd5Zy1jb250YWluZXIge1xuICAgICAgLmF4LWVkaXRvci1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgICAuYXgtZXJyb3ItbWVzc2FnZSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgICAgfVxuICAgICAgLmhpZ2hsaWdodGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXgtY29sb3ItcHJpbWFyeS0wNTApICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMXMgZWFzZS1pbi1vdXQ7XG4gICAgICB9XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ29tbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlZnJlbmNlVHlwZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVmcmVuY2VJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgc3ViamVjdCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICBwcm90ZWN0ZWQgaGFzQ29vbGRvd24gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgY29tbWVudENvbnRlbnQgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcHJvdGVjdGVkIGlzU3VibWl0dGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBpc1JlcGx5aW5nTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBpc0VkaXRpbmdNb2RlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICBwcm90ZWN0ZWQgZmFpbGVkSW1hZ2VJZHMgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgcHJvdGVjdGVkIGFjdGl2ZVJlcGx5Q29tbWVudCA9IHNpZ25hbDx1bmRlZmluZWQgfCAoQVhNQ29tbWVudCAmIHsgdXNlck5hbWU6IHN0cmluZyB9KT4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGFjdGl2ZUVkaXRDb21tZW50ID0gc2lnbmFsPHVuZGVmaW5lZCB8IChBWE1Db21tZW50ICYgeyB1c2VyTmFtZTogc3RyaW5nIH0pPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgaGlnaGxpZ2h0ZWRDb21tZW50SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIHd5c2l3eWdFZGl0b3IgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8QVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50PigndycpO1xuXG4gIHByaXZhdGUgY29tbWVudFNlcnZpY2UgPSBpbmplY3QoQVhNQ29tbWVudFNlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQVhEaWFsb2dTZXJ2aWNlKTtcbiAgc2FuaXRpemUgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByb3RlY3RlZCBjb21tZW50cyA9IHNpZ25hbDxBWE1Db21tZW50W10+KFtdKTtcbiAgcHJvdGVjdGVkIHRocmVhZCA9IHNpZ25hbDxBWE1Db21tZW50VGhyZWFkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmxvYWRDb21tZW50cygpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LCAyNTApO1xuICAgIH0pO1xuICAgIHRoaXMuY29tbWVudFNlcnZpY2UuY29tbWVudEFkZGVkJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGNvbW1lbnQpID0+IHtcbiAgICAgIGlmIChjb21tZW50LnJlcGx5SWQpIHtcbiAgICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNvbW1lbnRzLm1hcCgoYykgPT4ge1xuICAgICAgICAgICAgaWYgKGMuaWQgPT09IGNvbW1lbnQucmVwbHlJZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXdSZXBsaWVzID0gYy5yZXBsaWVzID8gWy4uLmMucmVwbGllcywgY29tbWVudF0gOiBbY29tbWVudF07XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLmMsIHJlcGxpZXM6IG5ld1JlcGxpZXMsIHJlcGx5Q291bnQ6IG5ld1JlcGxpZXMubGVuZ3RoIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbW1lbnRzLnVwZGF0ZSgoY29tbWVudHMpID0+IFsuLi5jb21tZW50cywgY29tbWVudF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY29tbWVudFNlcnZpY2UuY29tbWVudFVwZGF0ZWQkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgodXBkYXRlZENvbW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IChsaXN0OiBBWE1Db21tZW50W10pOiBBWE1Db21tZW50W10gPT4ge1xuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKGMpID0+IHtcbiAgICAgICAgICBpZiAoYy5pZCA9PT0gdXBkYXRlZENvbW1lbnQuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmMsIC4uLnVwZGF0ZWRDb21tZW50LCByZXBsaWVzOiB1cGRhdGVkQ29tbWVudC5yZXBsaWVzIHx8IGMucmVwbGllcyB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYy5yZXBsaWVzICYmIGMucmVwbGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5jLCByZXBsaWVzOiB1cGRhdGUoYy5yZXBsaWVzKSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzKSA9PiB1cGRhdGUoY29tbWVudHMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB3eXNpd3lnT3B0aW9ucyA9IHNpZ25hbDx7XG4gICAgbG9vazogQVhTdHlsZUxvb2tUeXBlO1xuICB9Pih7XG4gICAgbG9vazogJ3NvbGlkJyxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGF2YXRhckNvbmZpZyA9IHNpZ25hbDx7XG4gICAgY29sb3I6IHN0cmluZztcbiAgICBsb29rOiAnc2hhcnAnIHwgJ3NvZnQnIHwgJ3JvdW5kZWQnO1xuICAgIHR5cGU6IHN0cmluZztcbiAgfT4oe1xuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgbG9vazogJ3JvdW5kZWQnLFxuICAgIHR5cGU6ICdzb2xpZCcsXG4gIH0pO1xuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogQVhQVXNlclJlZmVyZW5jZSB8IG51bGwge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI7XG4gICAgcmV0dXJuIHVzZXIgPyB7IGlkOiB1c2VyLmlkLCB0eXBlOiAndXNlcicgfSA6IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNMaWtlZEJ5VXNlcihjb21tZW50OiBBWE1Db21tZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBpZiAoIXVzZXIpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKGNvbW1lbnQucmVhY3Rpb25zIHx8IFtdKS5zb21lKChyKSA9PiByLmF1dGhvci5pZCA9PT0gdXNlci5pZCAmJiByLnR5cGUgPT09ICdsaWtlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UmVhY3Rpb25zQ291bnQoY29tbWVudDogQVhNQ29tbWVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChjb21tZW50LnJlYWN0aW9ucyB8fCBbXSkuZmlsdGVyKChyKSA9PiByLnR5cGUgPT09ICdsaWtlJykubGVuZ3RoO1xuICB9XG5cbiAgdmFsaWRhdGVDb250ZW50ID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBpZiAoIWNvbnRlbnQgfHwgY29udGVudCA9PT0gJzxwPjxicj48L3A+Jykge1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogJ2NhbGxiYWNrJyxcbiAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgIG1lc3NhZ2U6IGlzVmFsaWQgPyAnJyA6ICdQbGVhc2UgZmlsbCB0aGUgY29udGVudCcsXG4gICAgICB2YWx1ZTogY29udGVudCxcbiAgICB9O1xuICB9O1xuXG4gIHNhbml0aXplSHRtbChodG1sQ29udGVudDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFodG1sQ29udGVudCkgcmV0dXJuIHRoaXMuc2FuaXRpemUuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoJycpO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWxDb250ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUltYWdlRXJyb3IoaW1hZ2VJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mYWlsZWRJbWFnZUlkcy51cGRhdGUoKGlkcykgPT4gWy4uLmlkcywgaW1hZ2VJZF0pO1xuICB9XG5cbiAgY2hlY2tJbWFnZUV4aXN0cyhpbWFnZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZmFpbGVkSW1hZ2VJZHMoKS5pbmNsdWRlcyhpbWFnZUlkKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRDb21tZW50cygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdGhyZWFkID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRUaHJlYWQoXG4gICAgICAgIHsgdHlwZTogdGhpcy5yZWZyZW5jZVR5cGUoKSwgaWQ6IHRoaXMucmVmcmVuY2VJZCgpIH0sXG4gICAgICAgIHRoaXMuc3ViamVjdCgpLFxuICAgICAgKTtcbiAgICAgIGlmICh0aHJlYWQpIHtcbiAgICAgICAgdGhpcy50aHJlYWQuc2V0KHRocmVhZCk7XG4gICAgICAgIHRoaXMuY29tbWVudHMuc2V0KHRocmVhZC5jb21tZW50cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbW1lbnRzLnNldChbXSk7XG4gICAgICAgIHRoaXMudGhyZWFkLnNldCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBjb21tZW50czonLCBlcnJvcik7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29udGVudDogJ0ZhaWxlZCB0byBsb2FkIGNvbW1lbnRzLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21tZW50cy5zZXQoW10pO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRNZXNzYWdlKGNvbW1lbnQ6IEFYTUNvbW1lbnQsIHJlcGx5PzogQVhNQ29tbWVudCwgdXNlck5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldCh7IC4uLmNvbW1lbnQsIHVzZXJOYW1lOiB1c2VyTmFtZSB8fCAnJyB9KTtcbiAgICBjb25zdCBjb250ZW50VG9FZGl0ID0gcmVwbHkgPyByZXBseS5tZXNzYWdlPy5jb250ZW50IDogY29tbWVudC5tZXNzYWdlPy5jb250ZW50O1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KGNvbnRlbnRUb0VkaXQgfHwgJycpO1xuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgcmVwbHlNZXNzYWdlKGNvbW1lbnQ6IEFYTUNvbW1lbnQsIHJlcGx5PzogQVhNQ29tbWVudCwgdXNlck5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzRWRpdGluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KHRydWUpO1xuICAgIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50LnNldCh7IC4uLmNvbW1lbnQsIHVzZXJOYW1lOiB1c2VyTmFtZSB8fCAnJyB9KTtcbiAgICBpZiAocmVwbHkpIHtcbiAgICAgIGNvbnN0IGF1dGhvciA9IChyZXBseS5hdXRob3IgYXMgYW55KS5mdWxsTmFtZSB8fCByZXBseS5hdXRob3IuaWQ7XG4gICAgICBjb25zdCBtZW50aW9uID0gYDxhIGRhdGEtaWQ9XCIke3JlcGx5LmlkfVwiPkAke2F1dGhvcn08L2E+IGA7XG4gICAgICB0aGlzLmNvbW1lbnRDb250ZW50LnNldChtZW50aW9uKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9IG1lbnRpb247XG4gICAgICB0aGlzLnd5c2l3eWdFZGl0b3IoKT8uZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy53eXNpd3lnRWRpdG9yKCkuZ2V0SG9zdEVsZW1lbnQoKS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb21tZW50KGNvbW1lbnRJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xuICAgICAgaWNvbjogJ2ZhLXJlZ3VsYXIgZmEtd2FybmluZycsXG4gICAgICBjb250ZW50OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbW1lbnQ/JyxcbiAgICAgIHRpdGxlOiAnRGVsZXRlIENvbW1lbnQnLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGUuaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS50ZXh0ID0gJ0RlbGV0aW5nLi4uJztcbiAgICAgICAgICAgIGUuc291cmNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KGNvbW1lbnRJZCk7XG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlTWVzc2FnZUJ5SWQoY29tbWVudElkKTtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgY29udGVudDogJ0NvbW1lbnQgZGVsZXRlZCBzdWNjZXNzZnVsbHkuJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmdNb2RlKCkgJiYgdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpPy5pZCA9PT0gY29tbWVudElkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFJlcGx5RWRpdFN0YXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gZXJyb3IgOiAnRmFpbGVkIHRvIGRlbGV0ZSBjb21tZW50IScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgIGF1dG9mb2N1czogdHJ1ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICByZXNldFJlcGx5RWRpdFN0YXRlKCkge1xuICAgIHRoaXMuaXNFZGl0aW5nTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc1JlcGx5aW5nTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KCcnKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1lZGl0b3InKVswXS5pbm5lckhUTUwgPSAnJztcbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZUxpa2UoY29tbWVudDogQVhNQ29tbWVudCkge1xuICAgIGNvbnN0IGlzTGlrZWQgPSB0aGlzLmlzTGlrZWRCeVVzZXIoY29tbWVudCk7XG4gICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQsICFpc0xpa2VkKTtcbiAgICB0cnkge1xuICAgICAgaWYgKGlzTGlrZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51bmxpa2VDb21tZW50KGNvbW1lbnQuaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5saWtlQ29tbWVudChjb21tZW50LmlkKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHRvZ2dsZSBsaWtlOicsIGVycm9yKTtcbiAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkLCBpc0xpa2VkKTsgLy8gUmV2ZXJ0IG9wdGltaXN0aWMgdXBkYXRlXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnRJZDogc3RyaW5nLCB3aWxsQmVMaWtlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IGZpbmRBbmRUb2dnbGUgPSAoY29tbWVudHM6IEFYTUNvbW1lbnRbXSk6IEFYTUNvbW1lbnRbXSA9PiB7XG4gICAgICByZXR1cm4gY29tbWVudHMubWFwKChjKSA9PiB7XG4gICAgICAgIGlmIChjLmlkID09PSBjb21tZW50SWQpIHtcbiAgICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIGM7XG4gICAgICAgICAgbGV0IHJlYWN0aW9ucyA9IGMucmVhY3Rpb25zIHx8IFtdO1xuICAgICAgICAgIGlmICh3aWxsQmVMaWtlZCkge1xuICAgICAgICAgICAgcmVhY3Rpb25zLnB1c2goeyBhdXRob3I6IHVzZXIsIHR5cGU6ICdsaWtlJyB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVhY3Rpb25zID0gcmVhY3Rpb25zLmZpbHRlcigocikgPT4gci5hdXRob3IuaWQgIT09IHVzZXIuaWQgfHwgci50eXBlICE9PSAnbGlrZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyAuLi5jLCByZWFjdGlvbnMgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYy5yZXBsaWVzICYmIGMucmVwbGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYy5yZXBsaWVzID0gZmluZEFuZFRvZ2dsZShjLnJlcGxpZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLmNvbW1lbnRzLnVwZGF0ZSgoY29tbWVudHMpID0+IGZpbmRBbmRUb2dnbGUoY29tbWVudHMpKTtcbiAgfVxuICBwcml2YXRlIHJlbW92ZU1lc3NhZ2VCeUlkKGNvbW1lbnRJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZmlsdGVyT3V0ID0gKGNvbW1lbnRzOiBBWE1Db21tZW50W10pOiBBWE1Db21tZW50W10gPT4ge1xuICAgICAgcmV0dXJuIGNvbW1lbnRzXG4gICAgICAgIC5maWx0ZXIoKGMpID0+IGMuaWQgIT09IGNvbW1lbnRJZClcbiAgICAgICAgLm1hcCgoYykgPT4ge1xuICAgICAgICAgIGlmIChjLnJlcGxpZXMgJiYgYy5yZXBsaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGMucmVwbGllcyA9IGZpbHRlck91dChjLnJlcGxpZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLmNvbW1lbnRzLnVwZGF0ZSgoY29tbWVudHMpID0+IGZpbHRlck91dChjb21tZW50cykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHN1Ym1pdENvbW1lbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlQ29udGVudCh0aGlzLmNvbW1lbnRDb250ZW50KCkpLnJlc3VsdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldCh0cnVlKTtcblxuICAgIGNvbnNvbGUubG9nKHRoaXMuY29tbWVudENvbnRlbnQoKSk7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjdXJyZW50VGhyZWFkID0gdGhpcy50aHJlYWQoKTtcbiAgICAgIGlmICghY3VycmVudFRocmVhZCkge1xuICAgICAgICBjdXJyZW50VGhyZWFkID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5jcmVhdGVUaHJlYWQoXG4gICAgICAgICAgeyB0eXBlOiB0aGlzLnJlZnJlbmNlVHlwZSgpLCBpZDogdGhpcy5yZWZyZW5jZUlkKCkgfSxcbiAgICAgICAgICB0aGlzLnN1YmplY3QoKSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aHJlYWQuc2V0KGN1cnJlbnRUaHJlYWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0VkaXRpbmdNb2RlKCkgJiYgdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpPy5pZCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmVkaXRDb21tZW50KHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKSEuaWQsIHRoaXMuY29tbWVudENvbnRlbnQoKSk7XG4gICAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmlzRWRpdGluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuYWRkQ29tbWVudChjdXJyZW50VGhyZWFkLmlkLCB0aGlzLmNvbW1lbnRDb250ZW50KCksIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50KCk/LmlkKTtcbiAgICAgICAgdGhpcy5oYXNDb29sZG93bi5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbW1lbnRDb250ZW50LnNldCgnJyk7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1lZGl0b3InKVswXS5pbm5lckhUTUwgPSAnJztcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KGZhbHNlKTtcbiAgICAgIH0sIDEwMDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJtaXR0aW5nIGNvbW1lbnQ6JywgZXJyb3IpO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGNvbnRlbnQ6IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBlcnJvciA6ICdGYWlsZWQgdG8gc3VibWl0IGNvbW1lbnQuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsTWFpbigpIHtcbiAgICBjb25zdCBjb21tZW50ID0gdGhpcy5pc1JlcGx5aW5nTW9kZSgpID8gdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQoKSA6IHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKTtcbiAgICBpZiAoY29tbWVudCAmJiBjb21tZW50LmlkKSB7XG4gICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbW1lbnQuaWQpO1xuICAgICAgaWYgKGVsKSB7XG4gICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRDb21tZW50SWQuc2V0KGNvbW1lbnQuaWQpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmhpZ2hsaWdodGVkQ29tbWVudElkLnNldChudWxsKTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtc2l6ZS1mdWxsIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LXAtNCBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgPGF4LWNvbW1lbnQtY29udGFpbmVyIGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1weS0xMiBheC1iZy1saWdodGVzdCBheC1weC01XCI+XG4gICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LW1pbi13LTE2IGF4LWgtMTYgYXgtcm91bmRlZC1mdWxsIGF4LW1lLTRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC13LWZ1bGxcIj5cbiAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC02IGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctZnVsbCBheC1oLTIgYXgtcm91bmRlZC1mdWxsXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0yIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy04LzEyIGF4LWgtMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKCFpc0xvYWRpbmcoKSAmJiBjb21tZW50cygpLmxlbmd0aCA+IDApIHtcbiAgICAgIDxheC1jb21tZW50LXZpZXcgY2xhc3M9XCJheC1iZy1saWdodGVzdFwiPlxuICAgICAgICBAZm9yIChjb21tZW50IG9mIGNvbW1lbnRzKCk7IHRyYWNrIGNvbW1lbnQuaWQpIHtcbiAgICAgICAgICA8YXgtY29tbWVudC1pdGVtXG4gICAgICAgICAgICBbaWRdPVwiY29tbWVudC5pZCFcIlxuICAgICAgICAgICAgW3JlcGx5Q291bnRdPVwiY29tbWVudC5yZXBseUNvdW50XCJcbiAgICAgICAgICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJoaWdobGlnaHRlZENvbW1lbnRJZCgpID09PSBjb21tZW50LmlkXCJcbiAgICAgICAgICAgIFtAZmFkZUluXVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheHAtdXNlci1hdmF0YXIgI3VzZXIgW3NpemVdPVwiNDhcIiBbdXNlcklkXT1cImNvbW1lbnQuYXV0aG9yLmlkXCIgbmdQcm9qZWN0QXM9XCInYXgtYXZhdGFyJ1wiPjwvYXhwLXVzZXItYXZhdGFyPlxuICAgICAgICAgICAgPGF4LXRpdGxlPnt7IHVzZXIuZmlyc3ROYW1lKCkgKyAnICcgKyB1c2VyLmxhc3ROYW1lKCkgfX08L2F4LXRpdGxlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtZGF0ZT57eyBjb21tZW50LmNyZWF0ZWRBdCB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19IDwvYXgtY29tbWVudC1kYXRlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cIm5ldXRyYWxcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tbW9yZS1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgdGV4dD1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoY29tbWVudCwgdW5kZWZpbmVkLCB1c2VyLmZpcnN0TmFtZSgpICsgJyAnICsgdXNlci5sYXN0TmFtZSgpKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWVkaXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cblxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJEZWxldGVcIiBjb2xvcj1cImRhbmdlclwiIChjbGljayk9XCJkZWxldGVDb21tZW50KGNvbW1lbnQuaWQhKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS10cmFzaC1jYW5cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgPGF4LWNvbnRlbnQgW2lubmVySFRNTF09XCJzYW5pdGl6ZUh0bWwoY29tbWVudC5tZXNzYWdlLmNvbnRlbnQpXCI+PC9heC1jb250ZW50PlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShjb21tZW50KVwiIFtsaWtlZF09XCJpc0xpa2VkQnlVc2VyKGNvbW1lbnQpXCI+XG4gICAgICAgICAgICAgIHt7IGdldFJlYWN0aW9uc0NvdW50KGNvbW1lbnQpIH19XG4gICAgICAgICAgICA8L2F4LWNvbW1lbnQtbGlrZT5cbiAgICAgICAgICAgIDxheC1jb21tZW50LXJlcGx5LXRleHRcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcGx5TWVzc2FnZShjb21tZW50LCB1bmRlZmluZWQsIHVzZXIuZmlyc3ROYW1lKCkgKyAnICcgKyB1c2VyLmxhc3ROYW1lKCkpXCJcbiAgICAgICAgICAgID48L2F4LWNvbW1lbnQtcmVwbHktdGV4dD5cbiAgICAgICAgICAgIEBmb3IgKHJlcGx5IG9mIGNvbW1lbnQucmVwbGllczsgdHJhY2sgcmVwbHkuaWQpIHtcbiAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtaXRlbSBbaWRdPVwicmVwbHkuaWRcIiBbY2xhc3MuaGlnaGxpZ2h0ZWRdPVwiaGlnaGxpZ2h0ZWRDb21tZW50SWQoKSA9PT0gcmVwbHkuaWRcIiBbQGZhZGVJbl0+XG4gICAgICAgICAgICAgICAgPGF4cC11c2VyLWF2YXRhclxuICAgICAgICAgICAgICAgICAgI3VzZXIyXG4gICAgICAgICAgICAgICAgICBbc2l6ZV09XCI0OFwiXG4gICAgICAgICAgICAgICAgICBbdXNlcklkXT1cInJlcGx5LmF1dGhvci5pZFwiXG4gICAgICAgICAgICAgICAgICBuZ1Byb2plY3RBcz1cIidheC1hdmF0YXInXCJcbiAgICAgICAgICAgICAgICA+PC9heHAtdXNlci1hdmF0YXI+XG4gICAgICAgICAgICAgICAgPGF4LXRpdGxlPnt7IHVzZXIyLmZpcnN0TmFtZSgpICsgJyAnICsgdXNlcjIubGFzdE5hbWUoKSB9fTwvYXgtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtZGF0ZT57eyByZXBseS5jcmVhdGVkQXQgfCBmb3JtYXQ6ICd0aW1lbGVmdCcgfCBhc3luYyB9fSA8L2F4LWNvbW1lbnQtZGF0ZT5cbiAgICAgICAgICAgICAgICA8YXgtY29tbWVudC1tZW51LW9wdGlvbnM+XG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cIm5ldXRyYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1zb2xpZCBheC1pY29uLW1vcmUtaG9yaXpvbnRhbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0TWVzc2FnZShjb21tZW50LCByZXBseSwgdXNlcjIuZmlyc3ROYW1lKCkgKyAnICcgKyB1c2VyMi5sYXN0TmFtZSgpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWVkaXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRGVsZXRlXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiZGVsZXRlQ29tbWVudChyZXBseS5pZCEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICAgIDxheC1jb250ZW50IFtpbm5lckhUTUxdPVwic2FuaXRpemVIdG1sKHJlcGx5Lm1lc3NhZ2UuY29udGVudClcIj48L2F4LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShyZXBseSlcIiBbbGlrZWRdPVwiaXNMaWtlZEJ5VXNlcihyZXBseSlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldFJlYWN0aW9uc0NvdW50KHJlcGx5KSB9fVxuICAgICAgICAgICAgICAgIDwvYXgtY29tbWVudC1saWtlPlxuICAgICAgICAgICAgICAgIDxheC1jb21tZW50LXJlcGx5LXRleHRcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXBseU1lc3NhZ2UoY29tbWVudCwgcmVwbHksIHVzZXIyLmZpcnN0TmFtZSgpICsgJyAnICsgdXNlcjIubGFzdE5hbWUoKSlcIlxuICAgICAgICAgICAgICAgID48L2F4LWNvbW1lbnQtcmVwbHktdGV4dD5cbiAgICAgICAgICAgICAgPC9heC1jb21tZW50LWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9heC1jb21tZW50LWl0ZW0+XG4gICAgICAgIH1cbiAgICAgIDwvYXgtY29tbWVudC12aWV3PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgYXgtanVzdGlmeS1jZW50ZXIgYXgtaXRlbXMtY2VudGVyIGF4LXAtMTBcIj5cbiAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICBjbGFzcz1cImF4LW14LWF1dG9cIlxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICB3aWR0aD1cIjE1NFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCIxNjFcIlxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNTQgMTYxXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTAuMDYxNjQ1NSA4NC40MjY4QzAuMDYxNjQ1NSA0Mi4wMjEzIDM0LjQzNSA3LjgzNzY1IDc2LjY1MDcgNy44Mzc2NUMxMTguODAzIDcuODM3NjUgMTUzLjIyNCA0Mi4wMDU1IDE1My4yMjQgODQuNDI2OEMxNTMuMjI0IDEwMi40MiAxNDcuMDI2IDExOC45NzQgMTM2LjYyMiAxMzIuMDM0QzEyMi4yODIgMTUwLjEzOCAxMDAuMzY3IDE2MSA3Ni42NTA3IDE2MUM1Mi43NzU5IDE2MSAzMC45ODgyIDE1MC4wNTkgMTYuNjYzMyAxMzIuMDM0QzYuMjU5NjEgMTE4Ljk3NCAwLjA2MTY0NTUgMTAyLjQyIDAuMDYxNjQ1NSA4NC40MjY4WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjRUVGMkZGXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTk2LjgxODkgMC42MzI0OThMOTYuODE4OSAwLjYzMjM4NEw5Ni44MDgzIDAuNjMwOTU0Qzk2LjIwMzQgMC41NDk1ODEgOTUuNTkzMSAwLjUgOTQuOTc4NyAwLjVIMjkuMzM4QzIyLjcxMTIgMC41IDE3LjMzOTQgNS44NDQ1NSAxNy4zMzk0IDEyLjQ0NzNWMTQyLjcxNUMxNy4zMzk0IDE0OS4zMTggMjIuNzExMiAxNTQuNjYyIDI5LjMzOCAxNTQuNjYySDEyMy45NDhDMTMwLjU5MSAxNTQuNjYyIDEzNS45NDYgMTQ5LjMxNyAxMzUuOTQ2IDE0Mi43MTVWMzguOTMwOUMxMzUuOTQ2IDM4LjAyNDQgMTM1Ljg0NyAzNy4xMzM0IDEzNS42NDggMzYuMjU4NkwxMzUuNjQ4IDM2LjI1ODRDMTM1LjExNyAzMy45MzA5IDEzMy44NzQgMzEuNzY4NiAxMzIuMDY2IDMwLjEzMzNDMTMyLjA2NiAzMC4xMzMxIDEzMi4wNjUgMzAuMTMyOSAxMzIuMDY1IDMwLjEzMjdMMTAzLjA2OCAzLjY1MjAzQzEwMy4wNjggMy42NTE5IDEwMy4wNjcgMy42NTE3NyAxMDMuMDY3IDMuNjUxNjRDMTAxLjMxMSAyLjAzNTI2IDk5LjEzOTYgMC45OTU1NTIgOTYuODE4OSAwLjYzMjQ5OFpcIlxuICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjRTVFN0VCXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZWxsaXBzZSBjeD1cIjgwLjA2MThcIiBjeT1cIjgxXCIgcng9XCIyOC4wMzQyXCIgcnk9XCIyOC4wMzQyXCIgZmlsbD1cIiNFRUYyRkZcIiAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk05OS4yMzkzIDYxLjMwNjFMOTkuMjM5MSA2MS4zMDU4Qzg4LjQ5OCA1MC41ODA4IDcxLjEwOTIgNTAuNTgwNCA2MC4zODM1IDYxLjMwNjFDNDkuNjQyMyA3Mi4wMzE2IDQ5LjY0MjIgODkuNDM2MSA2MC4zODMyIDEwMC4xNjJDNzEuMTA5IDExMC45MDMgODguNDk4MiAxMTAuOTAzIDk5LjIzOTMgMTAwLjE2MkMxMDkuOTY1IDg5LjQzNjMgMTA5Ljk2NSA3Mi4wMzE3IDk5LjIzOTMgNjEuMzA2MVpNMTA1Ljg2MyA1NC42ODMyQzEyMC4yNDkgNjkuMDY5NSAxMjAuMjQ5IDkyLjM5ODUgMTA1Ljg2MyAxMDYuNzg1QzkxLjQ2MDUgMTIxLjE3MSA2OC4xNDY4IDEyMS4xNzEgNTMuNzQ0NiAxMDYuNzg1QzM5LjM1ODIgOTIuMzk4NyAzOS4zNTgyIDY5LjA2OTMgNTMuNzQ0NiA1NC42ODNDNjguMTQ2OCA0MC4yOTY1IDkxLjQ2MDUgNDAuMjk2NiAxMDUuODYzIDU0LjY4MzJaXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiI0U1RTdFQlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk0xMTAuNzgyIDExOS4yNjdMMTAyLjAxNiAxMTAuNDkyQzEwNC44ODggMTA4LjI2NyAxMDcuNDc2IDEwNS42NTEgMTA5LjU2NCAxMDIuOTU1TDExOC4zMjkgMTExLjcyOUwxMTAuNzgyIDExOS4yNjdaXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiI0U1RTdFQlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk0xMzkuMTIyIDEyNS43ODFMMTM5LjEyMiAxMjUuNzhMMTIzLjMxMyAxMDkuOTg4QzEyMy4zMTMgMTA5Ljk4NyAxMjMuMzEzIDEwOS45ODcgMTIzLjMxMiAxMDkuOTg2QzEyMS45OTYgMTA4LjY1MyAxMTkuODQ5IDEwOC42NTcgMTE4LjUyMSAxMDkuOTg1TDExOC44NzEgMTEwLjMzNUwxMTguNTIxIDEwOS45ODVMMTA5LjA0NyAxMTkuNDU5QzEwNy43MzEgMTIwLjc3NSAxMDcuNzM1IDEyMi45MTggMTA5LjA0NCAxMjQuMjQ3TDEwOS4wNDcgMTI0LjI0OUwxMjQuODU4IDE0MC4wNkMxMjguNzg5IDE0My45OTIgMTM1LjE5MSAxNDMuOTkyIDEzOS4xMjIgMTQwLjA2QzE0My4wNjkgMTM2LjExMyAxNDMuMDY5IDEyOS43MjggMTM5LjEyMiAxMjUuNzgxWlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjQTVCNEZDXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiIzgxOENGOFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk04My4xODUgODcuMjI4NUM4Mi41Mzg3IDg3LjIyODUgODIuMDAyNyA4Ni42OTI2IDgyLjAwMjcgODYuMDMwNUM4Mi4wMDI3IDgzLjM4MjEgNzcuOTk4NyA4My4zODIxIDc3Ljk5ODcgODYuMDMwNUM3Ny45OTg3IDg2LjY5MjYgNzcuNDYyNyA4Ny4yMjg1IDc2LjgwMDYgODcuMjI4NUM3Ni4xNTQzIDg3LjIyODUgNzUuNjE4MyA4Ni42OTI2IDc1LjYxODMgODYuMDMwNUM3NS42MTgzIDgwLjIyOTQgODQuMzgzMSA4MC4yNDUxIDg0LjM4MzEgODYuMDMwNUM4NC4zODMxIDg2LjY5MjYgODMuODQ3MSA4Ny4yMjg1IDgzLjE4NSA4Ny4yMjg1WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjNEY0NkU1XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTkzLjM1MjggNzcuMDkyNkg4OC40MDNDODcuNzQwOSA3Ny4wOTI2IDg3LjIwNDkgNzYuNTU2NyA4Ny4yMDQ5IDc1Ljg5NDZDODcuMjA0OSA3NS4yNDgzIDg3Ljc0MDkgNzQuNzEyMyA4OC40MDMgNzQuNzEyM0g5My4zNTI4Qzk0LjAxNDkgNzQuNzEyMyA5NC41NTA5IDc1LjI0ODMgOTQuNTUwOSA3NS44OTQ2Qzk0LjU1MDkgNzYuNTU2NyA5NC4wMTQ5IDc3LjA5MjYgOTMuMzUyOCA3Ny4wOTI2WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjNEY0NkU1XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTcxLjU5ODcgNzcuMDkyNUg2Ni42NDg4QzY1Ljk4NjcgNzcuMDkyNSA2NS40NTA3IDc2LjU1NjUgNjUuNDUwNyA3NS44OTQ1QzY1LjQ1MDcgNzUuMjQ4MSA2NS45ODY3IDc0LjcxMjIgNjYuNjQ4OCA3NC43MTIySDcxLjU5ODdDNzIuMjQ1IDc0LjcxMjIgNzIuNzgxIDc1LjI0ODEgNzIuNzgxIDc1Ljg5NDVDNzIuNzgxIDc2LjU1NjUgNzIuMjQ1IDc3LjA5MjUgNzEuNTk4NyA3Ny4wOTI1WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjNEY0NkU1XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMzguMzUyMlwiIHk9XCIyMS41MTI4XCIgd2lkdGg9XCI0MS4wMjU2XCIgaGVpZ2h0PVwiMi43MzUwNFwiIHJ4PVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjEzMy42NVwiIHdpZHRoPVwiNTQuNzAwOVwiIGhlaWdodD1cIjUuNDcwMDlcIiByeD1cIjIuNzM1MDRcIiBmaWxsPVwiI0E1QjRGQ1wiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMzguMzUyMlwiIHk9XCIyOS43MTc5XCIgd2lkdGg9XCIxMy42NzUyXCIgaGVpZ2h0PVwiMi43MzUwNFwiIHJ4PVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI1Ni4xM1wiIGN5PVwiMzEuMDg1NFwiIHI9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjYxLjYwMDFcIiBjeT1cIjMxLjA4NTRcIiByPVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI2Ny4wNzAyXCIgY3k9XCIzMS4wODU0XCIgcj1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cImF4LXRleHQtY2VudGVyIGF4LXRleHQtbmV1dHJhbC02MDAgYXgtZm9udC1zZW1pYm9sZCBheC1sZWFkaW5nLWxvb3NlIGF4LXBiLTJcIj5cbiAgICAgICAgICAgICAgVGhlcmUgaXMgbm8gQ29tbWVudCFcbiAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2F4LWNvbW1lbnQtY29udGFpbmVyPlxuICA8YXgtZm9ybT5cbiAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgIDxkaXY+XG4gICAgICAgIEBpZiAoaXNSZXBseWluZ01vZGUoKSB8fCBpc0VkaXRpbmdNb2RlKCkpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LXJvdW5kZWQtYi1ub25lIGF4LWJvcmRlciBheC1ib3JkZXItYi0wIGF4LXJvdW5kZWQtbGcgYXgtcHgtNiBheC1weS0zIGF4LXctZnVsbCBheC1pdGVtcy1jZW50ZXIgYXgtb3ZlcmZsb3ctaGlkZGVuIGF4LXRleHQtc20gYXgtbGVhZGluZy1ub25lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzY3JvbGxNYWluKClcIiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1zdGFydCBheC1pdGVtcy1jZW50ZXIgYXgtY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXNSZXBseWluZ01vZGUoKSA/ICdmYS1yZXBseScgOiAnZmEtcGVuJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBheC10ZXh0LXByaW1hcnktNTAwIGRhcms6YXgtdGV4dC1wcmltYXJ5LTMwMCBheC10ZXh0LTJ4bCBheC1tZS00XCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC1qdXN0aWZ5LWJldHdlZW4gYXgtYWxpZ24tbWlkZGxlIGF4LWxlYWRpbmctNCBheC1vdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LXByaW1hcnktNTAwIGRhcms6YXgtdGV4dC1wcmltYXJ5LTMwMFwiPlxuICAgICAgICAgICAgICAgICAge3sgaXNSZXBseWluZ01vZGUoKSA/ICdSZXBseSB0byAnIDogJ0VkaXQgTWVzc2FnZScgfX1cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGlzUmVwbHlpbmdNb2RlKCkgPyBhY3RpdmVSZXBseUNvbW1lbnQoKT8udXNlck5hbWUgOiAnJyB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgIGlzUmVwbHlpbmdNb2RlKClcbiAgICAgICAgICAgICAgICAgICAgICA/IHNhbml0aXplSHRtbChhY3RpdmVSZXBseUNvbW1lbnQoKT8ubWVzc2FnZT8uY29udGVudCA/PyAnJylcbiAgICAgICAgICAgICAgICAgICAgICA6IHNhbml0aXplSHRtbChhY3RpdmVFZGl0Q29tbWVudCgpPy5tZXNzYWdlPy5jb250ZW50ID8/ICcnKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PjxpIChjbGljayk9XCJyZXNldFJlcGx5RWRpdFN0YXRlKClcIiBjbGFzcz1cImZhLXNvbGlkIGF4LXRleHQtMnhsIGZhLXhtYXJrIGF4LWN1cnNvci1wb2ludGVyXCI+PC9pPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxheC13eXNpd3lnLWNvbnRhaW5lciAjdyBbbG9va109XCJ3eXNpd3lnT3B0aW9ucygpLmxvb2tcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRDb250ZW50XCI+XG4gICAgICAgICAgPGF4LXd5c2l3eWctdmlldyBjbGFzcz1cImF4LW1pbi1oLTI4XCI+PC9heC13eXNpd3lnLXZpZXc+XG4gICAgICAgICAgPGF4LXRvb2xiYXI+XG4gICAgICAgICAgICA8YXgtY29udGVudD5cbiAgICAgICAgICAgICAgPGF4LXd5c2l3eWctaGlzdG9yeT48L2F4LXd5c2l3eWctaGlzdG9yeT5cbiAgICAgICAgICAgICAgPGF4LXd5c2l3eWctZm9udC1zdHlsZT48L2F4LXd5c2l3eWctZm9udC1zdHlsZT5cbiAgICAgICAgICAgICAgPGF4LXd5c2l3eWctY29sb3JzPjwvYXgtd3lzaXd5Zy1jb2xvcnM+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWxpc3Q+PC9heC13eXNpd3lnLWxpc3Q+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWFsaWdubWVudD48L2F4LXd5c2l3eWctYWxpZ25tZW50PlxuICAgICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgPGF4LWRyb3Bkb3duLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJoYXNDb29sZG93bigpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIG1vZGU9XCJzcGxpdFwiXG4gICAgICAgICAgICAgICAgdGV4dD1cIlNlbmRcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInN1Ym1pdENvbW1lbnQoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGlzU3VibWl0dGluZygpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIChjbGljayk9XCJzdWJtaXRDb21tZW50KClcIiB0ZXh0PVwiU2VuZCBQcml2YXRlIC4uLlwiIG5hbWU9XCJwcml2YXRlXCIgZGF0YT1cInByaXZhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtcmVndWxhciBmYS11c2VyLXNlY3JldFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICA8L2F4LXRvb2xiYXI+XG4gICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSBydWxlPVwiY2FsbGJhY2tcIiBbb3B0aW9uc109XCJ7IHZhbGlkYXRlOiB2YWxpZGF0ZUNvbnRlbnQgfVwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICA8L2F4LXd5c2l3eWctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9heC1mb3JtLWZpZWxkPlxuICA8L2F4LWZvcm0+XG48L2Rpdj5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { Component, ViewEncapsulation, input } from '@angular/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXMCommentComponent } from '../comment.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/button\";\nimport * as i4 from \"@acorex/core/translation\";\nexport class AXMCommentPopupComponent extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.refrenceType = input.required();\n this.refrenceId = input.required();\n this.subject = input.required();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.7\", type: AXMCommentPopupComponent, isStandalone: true, selector: \"axm-comment-popup\", inputs: { refrenceType: { classPropertyName: \"refrenceType\", publicName: \"refrenceType\", isSignal: true, isRequired: true, transformFunction: null }, refrenceId: { classPropertyName: \"refrenceId\", publicName: \"refrenceId\", isSignal: true, isRequired: true, transformFunction: null }, subject: { classPropertyName: \"subject\", publicName: \"subject\", isSignal: true, isRequired: true, transformFunction: null } }, providers: [], usesInheritance: true, ngImport: i0, template: \"<ax-content>\\n <div class=\\\"ax-p-6 ax-min-h-[30vh] ax-overflow-y-auto\\\">\\n <axm-comment [refrenceType]=\\\"refrenceType()\\\" [refrenceId]=\\\"refrenceId()\\\" [subject]=\\\"subject()\\\"></axm-comment>\\n </div>\\n</ax-content>\\n<ax-footer>\\n <ax-prefix></ax-prefix>\\n <ax-suffix>\\n <ax-button [text]=\\\"'close' | translate | async\\\" look=\\\"solid\\\" color=\\\"primary\\\" (onClick)=\\\"close()\\\"> </ax-button>\\n </ax-suffix>\\n</ax-footer>\\n\", dependencies: [{ kind: \"ngmodule\", type: \n // Angular\n CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: \n // ACoreX\n AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }, { kind: \"component\", type: \n // Comment\n AXMCommentComponent, selector: \"axm-comment\", inputs: [\"refrenceType\", \"refrenceId\", \"subject\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentPopupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-comment-popup', standalone: true, imports: [\n // Angular\n CommonModule,\n // ACoreX\n AXDecoratorModule,\n AXButtonModule,\n AXTranslationModule,\n // Comment\n AXMCommentComponent,\n ], encapsulation: ViewEncapsulation.None, providers: [], template: \"<ax-content>\\n <div class=\\\"ax-p-6 ax-min-h-[30vh] ax-overflow-y-auto\\\">\\n <axm-comment [refrenceType]=\\\"refrenceType()\\\" [refrenceId]=\\\"refrenceId()\\\" [subject]=\\\"subject()\\\"></axm-comment>\\n </div>\\n</ax-content>\\n<ax-footer>\\n <ax-prefix></ax-prefix>\\n <ax-suffix>\\n <ax-button [text]=\\\"'close' | translate | async\\\" look=\\\"solid\\\" color=\\\"primary\\\" (onClick)=\\\"close()\\\"> </ax-button>\\n </ax-suffix>\\n</ax-footer>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY29tbWVudC9wb3B1cC9jb21tZW50LXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jb21tZW50L3BvcHVwL2NvbW1lbnQtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBbUIzRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsbUJBQW1CO0lBakJqRTs7UUFrQkUsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDeEMsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUN0QyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0tBQ3BDOzhHQUpZLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDJkQUZ4QixFQUFFLGlEQ3hCZixnYkFXQTtnQkRFSSxVQUFVO2dCQUNWLFlBQVk7Z0JBQ1osU0FBUztnQkFDVCxpQkFBaUIscVBBQ2pCLGNBQWMsNlhBQ2QsbUJBQW1CO2dCQUNuQixVQUFVO2dCQUNWLG1CQUFtQjs7MkZBTVYsd0JBQXdCO2tCQWpCcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFVBQVU7d0JBQ1YsbUJBQW1CO3FCQUNwQixpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhNQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1lbnQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLWNvbW1lbnQtcG9wdXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgLy8gQW5ndWxhclxuICAgIENvbW1vbk1vZHVsZSxcbiAgICAvLyBBQ29yZVhcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIC8vIENvbW1lbnRcbiAgICBBWE1Db21tZW50Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNvbW1lbnRQb3B1cENvbXBvbmVudCBleHRlbmRzIEFYQmFzZVBhZ2VDb21wb25lbnQge1xuICByZWZyZW5jZVR5cGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHJlZnJlbmNlSWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHN1YmplY3QgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG59XG4iLCI8YXgtY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImF4LXAtNiBheC1taW4taC1bMzB2aF0gYXgtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgPGF4bS1jb21tZW50IFtyZWZyZW5jZVR5cGVdPVwicmVmcmVuY2VUeXBlKClcIiBbcmVmcmVuY2VJZF09XCJyZWZyZW5jZUlkKClcIiBbc3ViamVjdF09XCJzdWJqZWN0KClcIj48L2F4bS1jb21tZW50PlxuICA8L2Rpdj5cbjwvYXgtY29udGVudD5cbjxheC1mb290ZXI+XG4gIDxheC1wcmVmaXg+PC9heC1wcmVmaXg+XG4gIDxheC1zdWZmaXg+XG4gICAgPGF4LWJ1dHRvbiBbdGV4dF09XCInY2xvc2UnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiAob25DbGljayk9XCJjbG9zZSgpXCI+IDwvYXgtYnV0dG9uPlxuICA8L2F4LXN1ZmZpeD5cbjwvYXgtZm9vdGVyPlxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { Component, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/platform/layout/builder\";\nimport * as i3 from \"@acorex/components/button\";\nexport class AXMUserLookupPopup extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.lookupNode = {\n name: 'form-field',\n path: 'form-field',\n type: 'form-field',\n children: [\n {\n name: 'lookup',\n path: 'lookup',\n type: 'lookup-editor',\n options: {\n entity: 'SecurityManagement.users',\n multiple: true,\n },\n },\n ],\n options: {\n label: 'Select users:',\n },\n };\n this.titleNode = {\n name: 'form-field',\n path: 'form-field',\n type: 'form-field',\n children: [\n {\n name: 'title',\n path: 'title',\n type: 'text-editor',\n options: {\n placeholder: 'Enter title',\n required: true,\n },\n },\n ],\n options: {\n label: 'Title:',\n },\n };\n this.context = signal({});\n }\n handleClose() {\n this.close({\n lookup: this.context()?.lookup,\n title: this.context()?.title,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMUserLookupPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: AXMUserLookupPopup, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: `<axp-widgets-container [context]=\"context()\" (onContextChanged)=\"context.set($event.data)\">\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-4\">\n <ng-container axp-widget-renderer [node]=\"lookupNode\" [mode]=\"'edit'\"> </ng-container>\n @if (context()?.lookup?.length > 1) {\n <ng-container axp-widget-renderer [node]=\"titleNode\" [mode]=\"'edit'\"> </ng-container>\n }\n </div>\n </axp-widgets-container>\n\n <ax-footer>\n <ax-suffix>\n <ax-button\n text=\"Accept & Send\"\n color=\"primary\"\n [disabled]=\"context()?.lookup?.length > 1 && !context()?.title\"\n (onClick)=\"handleClose()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i2.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i2.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMUserLookupPopup, decorators: [{\n type: Component,\n args: [{\n template: `<axp-widgets-container [context]=\"context()\" (onContextChanged)=\"context.set($event.data)\">\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-4\">\n <ng-container axp-widget-renderer [node]=\"lookupNode\" [mode]=\"'edit'\"> </ng-container>\n @if (context()?.lookup?.length > 1) {\n <ng-container axp-widget-renderer [node]=\"titleNode\" [mode]=\"'edit'\"> </ng-container>\n }\n </div>\n </axp-widgets-container>\n\n <ax-footer>\n <ax-suffix>\n <ax-button\n text=\"Accept & Send\"\n color=\"primary\"\n [disabled]=\"context()?.lookup?.length > 1 && !context()?.title\"\n (onClick)=\"handleClose()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>`,\n imports: [AXDecoratorModule, AXPLayoutBuilderModule, AXButtonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1sb29rdXAtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvdXNlci1sb29rdXAtcG9wdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWlCLE1BQU0saUNBQWlDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBd0JsRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsbUJBQW1CO0lBdEIzRDs7UUF1QlksZUFBVSxHQUFrQjtZQUNwQyxJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsWUFBWTtZQUNsQixRQUFRLEVBQUU7Z0JBQ1I7b0JBQ0UsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsMEJBQTBCO3dCQUNsQyxRQUFRLEVBQUUsSUFBSTtxQkFDZjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxlQUFlO2FBQ3ZCO1NBQ0YsQ0FBQztRQUNRLGNBQVMsR0FBa0I7WUFDbkMsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLElBQUksRUFBRSxPQUFPO29CQUNiLElBQUksRUFBRSxhQUFhO29CQUNuQixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxFQUFFLGFBQWE7d0JBQzFCLFFBQVEsRUFBRSxJQUFJO3FCQUNmO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLFFBQVE7YUFDaEI7U0FDRixDQUFDO1FBRUYsWUFBTyxHQUFHLE1BQU0sQ0FBTSxFQUFFLENBQUMsQ0FBQztLQVEzQjtJQU5DLFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ1QsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNO1lBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSztTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQS9DVSxrQkFBa0I7a0dBQWxCLGtCQUFrQiwrRkFyQm5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBa0JLLDJEQUNMLGlCQUFpQixxUEFBRSxzQkFBc0IsOFpBQUUsY0FBYzs7MkZBRXhELGtCQUFrQjtrQkF0QjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBa0JLO29CQUNmLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsQ0FBQztpQkFDckUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEJhc2VQYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJjb250ZXh0KClcIiAob25Db250ZXh0Q2hhbmdlZCk9XCJjb250ZXh0LnNldCgkZXZlbnQuZGF0YSlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTQgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIGF4cC13aWRnZXQtcmVuZGVyZXIgW25vZGVdPVwibG9va3VwTm9kZVwiIFttb2RlXT1cIidlZGl0J1wiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgQGlmIChjb250ZXh0KCk/Lmxvb2t1cD8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgYXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJ0aXRsZU5vZGVcIiBbbW9kZV09XCInZWRpdCdcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuXG4gICAgPGF4LWZvb3Rlcj5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICB0ZXh0PVwiQWNjZXB0ICYgU2VuZFwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29udGV4dCgpPy5sb29rdXA/Lmxlbmd0aCA+IDEgJiYgIWNvbnRleHQoKT8udGl0bGVcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUNsb3NlKClcIlxuICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LWZvb3Rlcj5gLFxuICBpbXBvcnRzOiBbQVhEZWNvcmF0b3JNb2R1bGUsIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYQnV0dG9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVXNlckxvb2t1cFBvcHVwIGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBsb29rdXBOb2RlOiBBWFBXaWRnZXROb2RlID0ge1xuICAgIG5hbWU6ICdmb3JtLWZpZWxkJyxcbiAgICBwYXRoOiAnZm9ybS1maWVsZCcsXG4gICAgdHlwZTogJ2Zvcm0tZmllbGQnLFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdsb29rdXAnLFxuICAgICAgICBwYXRoOiAnbG9va3VwJyxcbiAgICAgICAgdHlwZTogJ2xvb2t1cC1lZGl0b3InLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZW50aXR5OiAnU2VjdXJpdHlNYW5hZ2VtZW50LnVzZXJzJyxcbiAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBsYWJlbDogJ1NlbGVjdCB1c2VyczonLFxuICAgIH0sXG4gIH07XG4gIHByb3RlY3RlZCB0aXRsZU5vZGU6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgbmFtZTogJ2Zvcm0tZmllbGQnLFxuICAgIHBhdGg6ICdmb3JtLWZpZWxkJyxcbiAgICB0eXBlOiAnZm9ybS1maWVsZCcsXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgcGF0aDogJ3RpdGxlJyxcbiAgICAgICAgdHlwZTogJ3RleHQtZWRpdG9yJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdGl0bGUnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGxhYmVsOiAnVGl0bGU6JyxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnRleHQgPSBzaWduYWw8YW55Pih7fSk7XG5cbiAgaGFuZGxlQ2xvc2UoKSB7XG4gICAgdGhpcy5jbG9zZSh7XG4gICAgICBsb29rdXA6IHRoaXMuY29udGV4dCgpPy5sb29rdXAsXG4gICAgICB0aXRsZTogdGhpcy5jb250ZXh0KCk/LnRpdGxlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { AXMCommentComponent } from '..';\nimport * as i0 from \"@angular/core\";\nexport class AXMCommentWidgetViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n this.refrenceType = computed(() => this.options().refrenceType);\n this.refrenceId = computed(() => this.options().refrenceId);\n this.subject = computed(() => this.options().subject);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.7\", type: AXMCommentWidgetViewComponent, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: `\n <axm-comment [refrenceId]=\"refrenceId()\" [refrenceType]=\"refrenceType()\" [subject]=\"subject()\"></axm-comment>\n `, isInline: true, dependencies: [{ kind: \"component\", type: AXMCommentComponent, selector: \"axm-comment\", inputs: [\"refrenceType\", \"refrenceId\", \"subject\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentWidgetViewComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n <axm-comment [refrenceId]=\"refrenceId()\" [refrenceType]=\"refrenceType()\" [subject]=\"subject()\"></axm-comment>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMCommentComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY29tbWVudC93aWRnZXQvY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sSUFBSSxDQUFDOztBQVN6QyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQWlFO0lBUHBIOztRQVFZLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzRCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM1RDs4R0FKWSw2QkFBNkI7a0dBQTdCLDZCQUE2QiwrRkFOOUI7O0dBRVQsNERBRVMsbUJBQW1COzsyRkFFbEIsNkJBQTZCO2tCQVB6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7R0FFVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRW50aXR5UmVmZXJlbmNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4uJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGF4bS1jb21tZW50IFtyZWZyZW5jZUlkXT1cInJlZnJlbmNlSWQoKVwiIFtyZWZyZW5jZVR5cGVdPVwicmVmcmVuY2VUeXBlKClcIiBbc3ViamVjdF09XCJzdWJqZWN0KClcIj48L2F4bS1jb21tZW50PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0FYTUNvbW1lbnRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Db21tZW50V2lkZ2V0Vmlld0NvbXBvbmVudCBleHRlbmRzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50PEFYUEVudGl0eVJlZmVyZW5jZSAmIHsgc3ViamVjdDogc3RyaW5nIH0+IHtcbiAgcHJvdGVjdGVkIHJlZnJlbmNlVHlwZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnJlZnJlbmNlVHlwZSk7XG4gIHByb3RlY3RlZCByZWZyZW5jZUlkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkucmVmcmVuY2VJZCk7XG4gIHByb3RlY3RlZCBzdWJqZWN0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuc3ViamVjdCk7XG59XG4iXX0=","import { AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nexport const AXPCommentWidget = {\n name: 'comment',\n title: 'Comments',\n description: 'Display and manage comments for entities',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.FormElement],\n icon: 'fa-solid fa-comments',\n properties: [],\n components: {\n view: {\n component: () => import('./comment-widget-view.component').then((c) => c.AXMCommentWidgetViewComponent),\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC13aWRnZXQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvd2lkZ2V0L2NvbW1lbnQtd2lkZ2V0LmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdEYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQW9CO0lBQy9DLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFVBQVU7SUFDakIsV0FBVyxFQUFFLDBDQUEwQztJQUN2RCxJQUFJLEVBQUUsTUFBTTtJQUNaLFVBQVUsRUFBRSxFQUFFO0lBQ2QsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDO0lBQ3hDLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsVUFBVSxFQUFFLEVBQUU7SUFDZCxVQUFVLEVBQUU7UUFDVixJQUFJLEVBQUU7WUFDSixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7U0FDeEc7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuXG5leHBvcnQgY29uc3QgQVhQQ29tbWVudFdpZGdldDogQVhQV2lkZ2V0Q29uZmlnID0ge1xuICBuYW1lOiAnY29tbWVudCcsXG4gIHRpdGxlOiAnQ29tbWVudHMnLFxuICBkZXNjcmlwdGlvbjogJ0Rpc3BsYXkgYW5kIG1hbmFnZSBjb21tZW50cyBmb3IgZW50aXRpZXMnLFxuICB0eXBlOiAndmlldycsXG4gIGNhdGVnb3JpZXM6IFtdLFxuICBncm91cHM6IFtBWFBXaWRnZXRHcm91cEVudW0uRm9ybUVsZW1lbnRdLFxuICBpY29uOiAnZmEtc29saWQgZmEtY29tbWVudHMnLFxuICBwcm9wZXJ0aWVzOiBbXSxcbiAgY29tcG9uZW50czoge1xuICAgIHZpZXc6IHtcbiAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2NvbW1lbnQtd2lkZ2V0LXZpZXcuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWE1Db21tZW50V2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflowAction } from '@acorex/platform/workflow';\nimport { inject, Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXMCommentPopupStartAction extends AXPWorkflowAction {\n constructor() {\n super(...arguments);\n this.popupService = inject(AXPopupService);\n this.translate = inject(AXTranslationService);\n }\n async execute(context) {\n const comp = (await import('../popup/comment-popup.component')).AXMCommentPopupComponent;\n this.popupService.open(comp, {\n title: await this.translate.translateAsync('Comments'),\n size: 'lg',\n data: {\n refrenceType: signal(context.getVariable('options.refType')),\n refrenceId: signal(context.getVariable('options.refId')),\n subject: signal(context.getVariable('options.subject')),\n },\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentPopupStartAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentPopupStartAction }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMCommentPopupStartAction, decorators: [{\n type: Injectable\n }] });\nexport const AXMCommentPopupWorkflow = {\n startStepId: 'start',\n steps: {\n start: {\n action: 'show-comment-popup-action',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC53b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jb21tZW50L3dvcmtmbG93L2NvbW1lbnQud29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBZSxpQkFBaUIsRUFBc0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFEakU7O1FBRVUsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBZWxEO0lBYlUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUNoRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztRQUV6RixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDM0IsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQ3RELElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFO2dCQUNKLFlBQVksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUM1RCxVQUFVLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3hEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoQlUsMEJBQTBCO2tIQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVU7O0FBb0JYLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFnQjtJQUNsRCxXQUFXLEVBQUUsT0FBTztJQUNwQixLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUU7WUFDTCxNQUFNLEVBQUUsMkJBQTJCO1NBQ3BDO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3csIEFYUFdvcmtmbG93QWN0aW9uLCBBWFBXb3JrZmxvd0NvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1Db21tZW50UG9wdXBTdGFydEFjdGlvbiBleHRlbmRzIEFYUFdvcmtmbG93QWN0aW9uIHtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHRyYW5zbGF0ZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZShjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb21wID0gKGF3YWl0IGltcG9ydCgnLi4vcG9wdXAvY29tbWVudC1wb3B1cC5jb21wb25lbnQnKSkuQVhNQ29tbWVudFBvcHVwQ29tcG9uZW50O1xuXG4gICAgdGhpcy5wb3B1cFNlcnZpY2Uub3Blbihjb21wLCB7XG4gICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGUudHJhbnNsYXRlQXN5bmMoJ0NvbW1lbnRzJyksXG4gICAgICBzaXplOiAnbGcnLFxuICAgICAgZGF0YToge1xuICAgICAgICByZWZyZW5jZVR5cGU6IHNpZ25hbChjb250ZXh0LmdldFZhcmlhYmxlKCdvcHRpb25zLnJlZlR5cGUnKSksXG4gICAgICAgIHJlZnJlbmNlSWQ6IHNpZ25hbChjb250ZXh0LmdldFZhcmlhYmxlKCdvcHRpb25zLnJlZklkJykpLFxuICAgICAgICBzdWJqZWN0OiBzaWduYWwoY29udGV4dC5nZXRWYXJpYWJsZSgnb3B0aW9ucy5zdWJqZWN0JykpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQVhNQ29tbWVudFBvcHVwV29ya2Zsb3c6IEFYUFdvcmtmbG93ID0ge1xuICBzdGFydFN0ZXBJZDogJ3N0YXJ0JyxcbiAgc3RlcHM6IHtcbiAgICBzdGFydDoge1xuICAgICAgYWN0aW9uOiAnc2hvdy1jb21tZW50LXBvcHVwLWFjdGlvbicsXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=","import { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXMMessageService } from '../../entities/message/message.service';\nimport { AXMRoomService } from '../../entities/room/room.service';\nimport * as i0 from \"@angular/core\";\n//#region ---- Abstract Chat Service ----\nexport class AXMChatService {\n}\n//#endregion\nexport class AXMChatServiceImpl {\n constructor() {\n this.roomService = inject(AXMRoomService);\n this.messageService = inject(AXMMessageService);\n this.sessionService = inject(AXPSessionService);\n this.usersService = inject(AXMUsersEntityService);\n this._messageSent$ = new Subject();\n this.messageSent$ = this._messageSent$.asObservable();\n this._messageRemoved$ = new Subject();\n this.messageRemoved$ = this._messageRemoved$.asObservable();\n this._messageSeen$ = new Subject();\n this.messageSeen$ = this._messageSeen$.asObservable();\n this._roomAdded$ = new Subject();\n this.roomAdded$ = this._roomAdded$.asObservable();\n this._roomRemoved$ = new Subject();\n this.roomRemoved$ = this._roomRemoved$.asObservable();\n this._roomSeen$ = new Subject();\n this.roomSeen$ = this._roomSeen$.asObservable();\n this._messageReacted$ = new Subject();\n this.messageReacted$ = this._messageReacted$.asObservable();\n this._typingStatus$ = new Subject();\n this.typingStatus$ = this._typingStatus$.asObservable();\n }\n //#region ---- Helper Methods ----\n getCurrentUser() {\n const user = this.sessionService.user;\n return {\n id: user?.id || 'guest-user',\n type: 'user',\n fullName: user?.title?.trim() || 'Guest User',\n username: user?.name?.trim() || 'guest-user',\n };\n }\n async getUserInfo(userId) {\n try {\n const user = await this.usersService.getOne(userId);\n return {\n id: user.id,\n type: 'user',\n fullName: `${user.firstName} ${user.lastName}`.trim(),\n username: user.username?.trim(),\n };\n }\n catch (error) {\n console.error(`Failed to get user info for ID: ${userId}`, error);\n return {\n id: userId,\n type: 'user',\n fullName: 'Unknown User',\n username: 'Unknown User',\n };\n }\n }\n async formatMessage(message) {\n if (message.author && !message.author.fullName) {\n const authorInfo = await this.getUserInfo(message.author.id);\n return {\n ...message,\n author: authorInfo,\n };\n }\n return message;\n }\n async getUnreadCount(roomId) {\n const { items } = await this.messageService.query({\n skip: 0,\n take: 99,\n filter: { field: 'roomId', value: roomId, operator: { type: 'equal' } },\n });\n const currentUserId = this.getCurrentUser().id;\n const unreadMessages = items.filter((message) => {\n const isFromCurrentUser = message.author.id === currentUserId;\n const isReadByCurrentUser = (message.seen || []).some((seen) => seen.author.id === currentUserId);\n return !isFromCurrentUser && !isReadByCurrentUser;\n });\n return unreadMessages.length;\n }\n //#endregion\n //#region ---- ChatRoomService Implementations ----\n async createRoom(memberIds, title) {\n if (memberIds.length === 0) {\n throw new Error('At least one member is required to create a room');\n }\n const currentUser = this.getCurrentUser();\n const allMemberIds = [...new Set([...memberIds, currentUser.id])];\n const memberReferences = await Promise.all(allMemberIds.map((id) => this.getUserInfo(id)));\n const room = {\n members: memberReferences,\n title: title,\n topic: memberIds.length > 1 ? 'group' : 'personal',\n createdAt: new Date(),\n updatedAt: new Date(),\n type: 'chat',\n createdBy: this.getCurrentUser().id,\n updatedBy: this.getCurrentUser().id,\n };\n const roomId = await this.roomService.insertOne(room);\n const newRoom = await this.getRoom(roomId);\n this._roomAdded$.next(newRoom);\n return newRoom;\n }\n async getRoom(roomId) {\n const room = await this.roomService.getOne(roomId);\n if (!room || room.type !== 'chat') {\n throw new Error(`Chat room with ID ${roomId} not found.`);\n }\n const messages = await this.getMessages(roomId, 0, 1);\n const lastMessage = messages.items.length > 0 ? messages.items[0] : undefined;\n const unreadCount = await this.getUnreadCount(roomId);\n const currentUserId = this.getCurrentUser().id;\n const members = await Promise.all(room.members.map(async (member) => {\n if (member.fullName) {\n return member;\n }\n return this.getUserInfo(member.id);\n }));\n return {\n ...room,\n lastMessage,\n unreadCount,\n members: members.filter((m) => m.id !== currentUserId),\n };\n }\n async listRooms(skip = 0, take = 100) {\n const { items, total } = await this.roomService.query({\n skip,\n take,\n filter: { field: 'type', value: 'chat', operator: { type: 'equal' } },\n });\n const settledRooms = await Promise.allSettled(items.map((room) => this.getRoom(room.id)));\n const chatRooms = settledRooms\n .filter((result) => {\n if (result.status === 'rejected') {\n console.error('Failed to fetch room details:', result.reason);\n return false;\n }\n return true;\n })\n .map((result) => result.value);\n return { items: chatRooms, total: chatRooms.length };\n }\n async updateRoom(roomId, data) {\n const update = { ...data, updatedAt: new Date(), updatedBy: this.getCurrentUser().id };\n return this.roomService.updateOne(roomId, update);\n }\n async deleteRoom(roomId) {\n try {\n await this.roomService.deleteOne(roomId);\n this._roomRemoved$.next(roomId);\n return true;\n }\n catch (error) {\n return false;\n }\n }\n async addParticipant(roomId, userId) {\n const room = await this.roomService.getOne(roomId);\n if (room.members.some((m) => m.id === userId))\n return room;\n const userRef = await this.getUserInfo(userId);\n const updatedMembers = [...room.members, userRef];\n return this.roomService.updateOne(roomId, {\n members: updatedMembers,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async removeParticipant(roomId, userId) {\n const room = await this.roomService.getOne(roomId);\n const updatedMembers = room.members.filter((member) => member.id !== userId);\n return this.roomService.updateOne(roomId, {\n members: updatedMembers,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n //#endregion\n //#region ---- ChatMessageService Implementations ----\n async sendMessage(roomId, content, contentType = 'text', replyId, userId) {\n const author = userId ? await this.getUserInfo(userId) : this.getCurrentUser();\n const messageContent = { content, contentType };\n const message = {\n roomId,\n message: messageContent,\n author,\n replyId,\n createdAt: new Date(),\n updatedAt: new Date(),\n createdBy: this.getCurrentUser().id,\n updatedBy: this.getCurrentUser().id,\n reactions: [],\n seen: [],\n };\n const messageId = await this.messageService.insertOne({ ...message });\n const newMessage = await this.messageService.getOne(messageId);\n const formattedMessage = await this.formatMessage(newMessage);\n this._messageSent$.next(formattedMessage);\n return formattedMessage;\n }\n async getMessages(roomId, skip = 0, take = 99) {\n const result = await this.messageService.query({\n skip,\n take,\n filter: { field: 'roomId', value: roomId, operator: { type: 'equal' } },\n sort: [{ field: 'createdAt', dir: 'desc' }],\n });\n const formattedMessages = await Promise.all(result.items.map((m) => this.formatMessage(m)));\n return { items: formattedMessages, total: result.total };\n }\n async getMessage(messageId) {\n const message = await this.messageService.getOne(messageId);\n return this.formatMessage(message);\n }\n async editMessage(messageId, content, contentType = 'text') {\n const messageContent = { content, contentType };\n return this.messageService.updateOne(messageId, {\n message: messageContent,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async deleteMessage(messageId) {\n try {\n await this.messageService.deleteOne(messageId);\n this._messageRemoved$.next(messageId);\n return true;\n }\n catch (error) {\n return false;\n }\n }\n async replyMessage(replyToMessageId, content, contentType = 'text') {\n const originalMessage = await this.messageService.getOne(replyToMessageId);\n return this.sendMessage(originalMessage.roomId, content, contentType, replyToMessageId);\n }\n async pinMessage(messageId) {\n return this.messageService.updateOne(messageId, {\n isPinned: true,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async unpinMessage(messageId) {\n return this.messageService.updateOne(messageId, {\n isPinned: false,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n //#endregion\n //#region ---- ChatReactionService Implementations ----\n async addReaction(messageId, type) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const reactions = message.reactions || [];\n if (reactions.some((r) => r.author.id === author.id && r.type === type)) {\n return message;\n }\n const updatedReactions = [...reactions, { author, type }];\n const res = await this.messageService.updateOne(messageId, {\n reactions: updatedReactions,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n this._messageReacted$.next(res);\n return res;\n }\n async removeReaction(messageId, type) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const updatedReactions = (message.reactions || []).filter((r) => !(r.author.id === author.id && r.type === type));\n const res = await this.messageService.updateOne(messageId, {\n reactions: updatedReactions,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n this._messageReacted$.next(res);\n return res;\n }\n async getReactions(messageId) {\n const message = await this.messageService.getOne(messageId);\n return message.reactions || [];\n }\n //#endregion\n //#region ---- ChatSeenService Implementations ----\n async markSeen(messageId) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const seen = message.seen || [];\n if (seen.some((s) => s.author.id === author.id)) {\n return message;\n }\n const updatedSeen = [...seen, { author, type: 'read' }];\n const updatedMessage = await this.messageService.updateOne(messageId, {\n seen: updatedSeen,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n this._messageSeen$.next(await this.formatMessage(updatedMessage));\n return updatedMessage;\n }\n async getSeenBy(messageId) {\n const message = await this.messageService.getOne(messageId);\n return message.seen || [];\n }\n async markRoomSeen(roomId) {\n try {\n if (!roomId) {\n return true;\n }\n const { items } = await this.getMessages(roomId, 0, 99);\n const currentUserId = this.getCurrentUser().id;\n const unreadMessages = items.filter((message) => message.author.id !== currentUserId && !message.seen?.some((s) => s.author.id === currentUserId));\n if (unreadMessages.length > 0) {\n await Promise.all(unreadMessages.map((message) => this.markSeen(message.id)));\n }\n this._roomSeen$.next(roomId);\n return true;\n }\n catch (error) {\n console.error(`Error marking room ${roomId} as seen:`, error);\n return false;\n }\n }\n //#endregion\n //#region ---- Typing Status Implementations ----\n async startTyping(roomId, userId) {\n const user = userId ? await this.getUserInfo(userId) : this.getCurrentUser();\n this._typingStatus$.next({ roomId, user, isTyping: true });\n }\n async stopTyping(roomId, userId) {\n const user = userId ? await this.getUserInfo(userId) : this.getCurrentUser();\n this._typingStatus$.next({ roomId, user, isTyping: false });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMChatServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMChatServiceImpl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMChatServiceImpl, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NoYXQvY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFRM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUlsRSw2Q0FBNkM7QUFFN0MsTUFBTSxPQUFnQixjQUFjO0NBMkRuQztBQUVELFlBQVk7QUFLWixNQUFNLE9BQU8sa0JBQWtCO0lBSC9CO1FBSW1CLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTdDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDdEQsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXpDLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDakQsb0JBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFL0Msa0JBQWEsR0FB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L0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBYyxFQUFFLE1BQWU7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs4R0FuWlUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTVVzZXJzRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9zZWN1cml0eS1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUENvbnRlbnQsIEFYUENvbnRlbnRUeXBlLCBBWFBVc2VyUmVmZXJlbmNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhNTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBBWE1Db252ZXJzYXRpb25NZXNzYWdlLFxuICBBWE1Db252ZXJzYXRpb25SZWFjdGlvbixcbiAgQVhNQ29udmVyc2F0aW9uU2VlbixcbiAgQVhNUmVhY3Rpb25UeXBlLFxuICBBWE1TZWVuVHlwZSxcbn0gZnJvbSAnLi4vLi4vZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLnR5cGVzJztcbmltcG9ydCB7IEFYTVJvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvcm9vbS9yb29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uUm9vbSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3Jvb20vcm9vbS50eXBlcyc7XG5pbXBvcnQgeyBBWE1DaGF0TWVzc2FnZSwgQVhNQ2hhdFJvb20gfSBmcm9tICcuL2NoYXQudHlwZSc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgQWJzdHJhY3QgQ2hhdCBTZXJ2aWNlICAgLS0tLVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNQ2hhdFNlcnZpY2Uge1xuICAvLyBDaGF0Um9vbVNlcnZpY2UgTWV0aG9kc1xuICBhYnN0cmFjdCBjcmVhdGVSb29tKG1lbWJlcklkczogc3RyaW5nW10sIHRpdGxlPzogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0Um9vbT47XG4gIGFic3RyYWN0IGdldFJvb20ocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRSb29tPjtcbiAgYWJzdHJhY3QgbGlzdFJvb21zKHNraXA/OiBudW1iZXIsIHRha2U/OiBudW1iZXIpOiBQcm9taXNlPHsgaXRlbXM6IEFYTUNoYXRSb29tW107IHRvdGFsOiBudW1iZXIgfT47XG4gIGFic3RyYWN0IHVwZGF0ZVJvb20ocm9vbUlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8QVhNQ29udmVyc2F0aW9uUm9vbT4pOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvblJvb20+O1xuICBhYnN0cmFjdCBkZWxldGVSb29tKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgYWRkUGFydGljaXBhbnQocm9vbUlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPjtcbiAgYWJzdHJhY3QgcmVtb3ZlUGFydGljaXBhbnQocm9vbUlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPjtcblxuICAvLyBDaGF0TWVzc2FnZVNlcnZpY2UgTWV0aG9kc1xuICBhYnN0cmFjdCBzZW5kTWVzc2FnZShcbiAgICByb29tSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU/OiBBWFBDb250ZW50VHlwZSxcbiAgICByZXBseUlkPzogc3RyaW5nLFxuICAgIHVzZXJJZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBWE1DaGF0TWVzc2FnZT47XG4gIGFic3RyYWN0IGdldE1lc3NhZ2VzKFxuICAgIHJvb21JZDogc3RyaW5nLFxuICAgIHNraXA/OiBudW1iZXIsXG4gICAgdGFrZT86IG51bWJlcixcbiAgKTogUHJvbWlzZTx7IGl0ZW1zOiBBWE1DaGF0TWVzc2FnZVtdOyB0b3RhbDogbnVtYmVyIH0+O1xuICBhYnN0cmFjdCBnZXRNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0TWVzc2FnZT47XG4gIGFic3RyYWN0IGVkaXRNZXNzYWdlKFxuICAgIG1lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBjb250ZW50VHlwZT86IEFYUENvbnRlbnRUeXBlLFxuICApOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuICBhYnN0cmFjdCBkZWxldGVNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgcmVwbHlNZXNzYWdlKFxuICAgIHJlcGx5VG9NZXNzYWdlSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU/OiBBWFBDb250ZW50VHlwZSxcbiAgKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPjtcbiAgYWJzdHJhY3QgcGluTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT47XG4gIGFic3RyYWN0IHVucGluTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT47XG5cbiAgLy8gQ2hhdFJlYWN0aW9uU2VydmljZSBNZXRob2RzXG4gIGFic3RyYWN0IGFkZFJlYWN0aW9uKG1lc3NhZ2VJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuICBhYnN0cmFjdCByZW1vdmVSZWFjdGlvbihtZXNzYWdlSWQ6IHN0cmluZywgdHlwZTogQVhNUmVhY3Rpb25UeXBlKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPjtcbiAgYWJzdHJhY3QgZ2V0UmVhY3Rpb25zKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdPjtcblxuICAvLyBDaGF0U2VlblNlcnZpY2UgTWV0aG9kc1xuICBhYnN0cmFjdCBtYXJrU2VlbihtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT47XG4gIGFic3RyYWN0IGdldFNlZW5CeShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uU2VlbltdPjtcbiAgYWJzdHJhY3QgbWFya1Jvb21TZWVuKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcblxuICBhYnN0cmFjdCByZWFkb25seSBtZXNzYWdlU2VudCQ6IE9ic2VydmFibGU8QVhNQ2hhdE1lc3NhZ2U+O1xuICBhYnN0cmFjdCByZWFkb25seSBtZXNzYWdlUmVtb3ZlZCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbWVzc2FnZVNlZW4kOiBPYnNlcnZhYmxlPEFYTUNoYXRNZXNzYWdlPjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgcm9vbUFkZGVkJDogT2JzZXJ2YWJsZTxBWE1DaGF0Um9vbT47XG4gIGFic3RyYWN0IHJlYWRvbmx5IHJvb21SZW1vdmVkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBhYnN0cmFjdCByZWFkb25seSByb29tU2VlbiQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbWVzc2FnZVJlYWN0ZWQkOiBPYnNlcnZhYmxlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuXG4gIGFic3RyYWN0IHJlYWRvbmx5IHR5cGluZ1N0YXR1cyQ6IE9ic2VydmFibGU8eyByb29tSWQ6IHN0cmluZzsgdXNlcjogQVhQVXNlclJlZmVyZW5jZTsgaXNUeXBpbmc6IGJvb2xlYW4gfT47XG4gIGFic3RyYWN0IHN0YXJ0VHlwaW5nKHJvb21JZDogc3RyaW5nLCB1c2VySWQ/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICBhYnN0cmFjdCBzdG9wVHlwaW5nKHJvb21JZDogc3RyaW5nLCB1c2VySWQ/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vLyNlbmRyZWdpb25cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNoYXRTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEFYTUNoYXRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSByb29tU2VydmljZSA9IGluamVjdChBWE1Sb29tU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoQVhNTWVzc2FnZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB1c2Vyc1NlcnZpY2UgPSBpbmplY3QoQVhNVXNlcnNFbnRpdHlTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlU2VudCQgPSBuZXcgU3ViamVjdDxBWE1DaGF0TWVzc2FnZT4oKTtcbiAgcmVhZG9ubHkgbWVzc2FnZVNlbnQkID0gdGhpcy5fbWVzc2FnZVNlbnQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VSZW1vdmVkJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgbWVzc2FnZVJlbW92ZWQkID0gdGhpcy5fbWVzc2FnZVJlbW92ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VTZWVuJCA9IG5ldyBTdWJqZWN0PEFYTUNoYXRNZXNzYWdlPigpO1xuICByZWFkb25seSBtZXNzYWdlU2VlbiQgPSB0aGlzLl9tZXNzYWdlU2VlbiQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcm9vbUFkZGVkJCA9IG5ldyBTdWJqZWN0PEFYTUNoYXRSb29tPigpO1xuICByZWFkb25seSByb29tQWRkZWQkID0gdGhpcy5fcm9vbUFkZGVkJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yb29tUmVtb3ZlZCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHJvb21SZW1vdmVkJCA9IHRoaXMuX3Jvb21SZW1vdmVkJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yb29tU2VlbiQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHJvb21TZWVuJCA9IHRoaXMuX3Jvb21TZWVuJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlUmVhY3RlZCQgPSBuZXcgU3ViamVjdDxBWE1Db252ZXJzYXRpb25NZXNzYWdlPigpO1xuICByZWFkb25seSBtZXNzYWdlUmVhY3RlZCQgPSB0aGlzLl9tZXNzYWdlUmVhY3RlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwaW5nU3RhdHVzJCA9IG5ldyBTdWJqZWN0PHsgcm9vbUlkOiBzdHJpbmc7IHVzZXI6IEFYUFVzZXJSZWZlcmVuY2U7IGlzVHlwaW5nOiBib29sZWFuIH0+KCk7XG4gIHJlYWRvbmx5IHR5cGluZ1N0YXR1cyQgPSB0aGlzLl90eXBpbmdTdGF0dXMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIE1ldGhvZHMgICAtLS0tXG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50VXNlcigpOiBBWFBVc2VyUmVmZXJlbmNlIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdXNlcj8uaWQgfHwgJ2d1ZXN0LXVzZXInLFxuICAgICAgdHlwZTogJ3VzZXInLFxuICAgICAgZnVsbE5hbWU6IHVzZXI/LnRpdGxlPy50cmltKCkgfHwgJ0d1ZXN0IFVzZXInLFxuICAgICAgdXNlcm5hbWU6IHVzZXI/Lm5hbWU/LnRyaW0oKSB8fCAnZ3Vlc3QtdXNlcicsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VXNlckluZm8odXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFVzZXJSZWZlcmVuY2U+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMudXNlcnNTZXJ2aWNlLmdldE9uZSh1c2VySWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHVzZXIuaWQsXG4gICAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICAgICAgZnVsbE5hbWU6IGAke3VzZXIuZmlyc3ROYW1lfSAke3VzZXIubGFzdE5hbWV9YC50cmltKCksXG4gICAgICAgIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lPy50cmltKCksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZ2V0IHVzZXIgaW5mbyBmb3IgSUQ6ICR7dXNlcklkfWAsIGVycm9yKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiB1c2VySWQsXG4gICAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICAgICAgZnVsbE5hbWU6ICdVbmtub3duIFVzZXInLFxuICAgICAgICB1c2VybmFtZTogJ1Vua25vd24gVXNlcicsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZm9ybWF0TWVzc2FnZShtZXNzYWdlOiBBWE1Db252ZXJzYXRpb25NZXNzYWdlKTogUHJvbWlzZTxBWE1DaGF0TWVzc2FnZT4ge1xuICAgIGlmIChtZXNzYWdlLmF1dGhvciAmJiAhbWVzc2FnZS5hdXRob3IuZnVsbE5hbWUpIHtcbiAgICAgIGNvbnN0IGF1dGhvckluZm8gPSBhd2FpdCB0aGlzLmdldFVzZXJJbmZvKG1lc3NhZ2UuYXV0aG9yLmlkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICAgIGF1dGhvcjogYXV0aG9ySW5mbyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRVbnJlYWRDb3VudChyb29tSWQ6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwOiAwLFxuICAgICAgdGFrZTogOTksXG4gICAgICBmaWx0ZXI6IHsgZmllbGQ6ICdyb29tSWQnLCB2YWx1ZTogcm9vbUlkLCBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0gfSxcbiAgICB9KTtcbiAgICBjb25zdCBjdXJyZW50VXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkO1xuXG4gICAgY29uc3QgdW5yZWFkTWVzc2FnZXMgPSBpdGVtcy5maWx0ZXIoKG1lc3NhZ2UpID0+IHtcbiAgICAgIGNvbnN0IGlzRnJvbUN1cnJlbnRVc2VyID0gbWVzc2FnZS5hdXRob3IuaWQgPT09IGN1cnJlbnRVc2VySWQ7XG4gICAgICBjb25zdCBpc1JlYWRCeUN1cnJlbnRVc2VyID0gKG1lc3NhZ2Uuc2VlbiB8fCBbXSkuc29tZSgoc2VlbikgPT4gc2Vlbi5hdXRob3IuaWQgPT09IGN1cnJlbnRVc2VySWQpO1xuICAgICAgcmV0dXJuICFpc0Zyb21DdXJyZW50VXNlciAmJiAhaXNSZWFkQnlDdXJyZW50VXNlcjtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5yZWFkTWVzc2FnZXMubGVuZ3RoO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDaGF0Um9vbVNlcnZpY2UgSW1wbGVtZW50YXRpb25zICAgLS0tLVxuXG4gIGFzeW5jIGNyZWF0ZVJvb20obWVtYmVySWRzOiBzdHJpbmdbXSwgdGl0bGU/OiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRSb29tPiB7XG4gICAgaWYgKG1lbWJlcklkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIG1lbWJlciBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSByb29tJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgYWxsTWVtYmVySWRzID0gWy4uLm5ldyBTZXQoWy4uLm1lbWJlcklkcywgY3VycmVudFVzZXIuaWRdKV07XG5cbiAgICBjb25zdCBtZW1iZXJSZWZlcmVuY2VzID0gYXdhaXQgUHJvbWlzZS5hbGwoYWxsTWVtYmVySWRzLm1hcCgoaWQpID0+IHRoaXMuZ2V0VXNlckluZm8oaWQpKSk7XG5cbiAgICBjb25zdCByb29tOiBPbWl0PEFYTUNvbnZlcnNhdGlvblJvb20sICdpZCc+ID0ge1xuICAgICAgbWVtYmVyczogbWVtYmVyUmVmZXJlbmNlcyxcbiAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgIHRvcGljOiBtZW1iZXJJZHMubGVuZ3RoID4gMSA/ICdncm91cCcgOiAncGVyc29uYWwnLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2NoYXQnLFxuICAgICAgY3JlYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9O1xuICAgIGNvbnN0IHJvb21JZCA9IGF3YWl0IHRoaXMucm9vbVNlcnZpY2UuaW5zZXJ0T25lKHJvb20pO1xuICAgIGNvbnN0IG5ld1Jvb20gPSBhd2FpdCB0aGlzLmdldFJvb20ocm9vbUlkKTtcbiAgICB0aGlzLl9yb29tQWRkZWQkLm5leHQobmV3Um9vbSk7XG4gICAgcmV0dXJuIG5ld1Jvb207XG4gIH1cblxuICBhc3luYyBnZXRSb29tKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0Um9vbT4ge1xuICAgIGNvbnN0IHJvb20gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmdldE9uZShyb29tSWQpO1xuICAgIGlmICghcm9vbSB8fCByb29tLnR5cGUgIT09ICdjaGF0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDaGF0IHJvb20gd2l0aCBJRCAke3Jvb21JZH0gbm90IGZvdW5kLmApO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMuZ2V0TWVzc2FnZXMocm9vbUlkLCAwLCAxKTtcbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzLml0ZW1zLmxlbmd0aCA+IDAgPyBtZXNzYWdlcy5pdGVtc1swXSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB1bnJlYWRDb3VudCA9IGF3YWl0IHRoaXMuZ2V0VW5yZWFkQ291bnQocm9vbUlkKTtcbiAgICBjb25zdCBjdXJyZW50VXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkO1xuXG4gICAgY29uc3QgbWVtYmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcm9vbS5tZW1iZXJzLm1hcChhc3luYyAobWVtYmVyKSA9PiB7XG4gICAgICAgIGlmIChtZW1iZXIuZnVsbE5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gbWVtYmVyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmdldFVzZXJJbmZvKG1lbWJlci5pZCk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJvb20sXG4gICAgICBsYXN0TWVzc2FnZSxcbiAgICAgIHVucmVhZENvdW50LFxuICAgICAgbWVtYmVyczogbWVtYmVycy5maWx0ZXIoKG0pID0+IG0uaWQgIT09IGN1cnJlbnRVc2VySWQpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBsaXN0Um9vbXMoc2tpcCA9IDAsIHRha2UgPSAxMDApOiBQcm9taXNlPHsgaXRlbXM6IEFYTUNoYXRSb29tW107IHRvdGFsOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IHsgaXRlbXMsIHRvdGFsIH0gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXAsXG4gICAgICB0YWtlLFxuICAgICAgZmlsdGVyOiB7IGZpZWxkOiAndHlwZScsIHZhbHVlOiAnY2hhdCcsIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSB9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2V0dGxlZFJvb21zID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGl0ZW1zLm1hcCgocm9vbSkgPT4gdGhpcy5nZXRSb29tKHJvb20uaWQpKSk7XG5cbiAgICBjb25zdCBjaGF0Um9vbXMgPSBzZXR0bGVkUm9vbXNcbiAgICAgIC5maWx0ZXIoKHJlc3VsdCk6IHJlc3VsdCBpcyBQcm9taXNlRnVsZmlsbGVkUmVzdWx0PEFYTUNoYXRSb29tPiA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIHJvb20gZGV0YWlsczonLCByZXN1bHQucmVhc29uKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICAgLm1hcCgocmVzdWx0KSA9PiByZXN1bHQudmFsdWUpO1xuXG4gICAgcmV0dXJuIHsgaXRlbXM6IGNoYXRSb29tcywgdG90YWw6IGNoYXRSb29tcy5sZW5ndGggfTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVJvb20ocm9vbUlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8QVhNQ29udmVyc2F0aW9uUm9vbT4pOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvblJvb20+IHtcbiAgICBjb25zdCB1cGRhdGUgPSB7IC4uLmRhdGEsIHVwZGF0ZWRBdDogbmV3IERhdGUoKSwgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQgfTtcbiAgICByZXR1cm4gdGhpcy5yb29tU2VydmljZS51cGRhdGVPbmUocm9vbUlkLCB1cGRhdGUpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlUm9vbShyb29tSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmRlbGV0ZU9uZShyb29tSWQpO1xuICAgICAgdGhpcy5fcm9vbVJlbW92ZWQkLm5leHQocm9vbUlkKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYWRkUGFydGljaXBhbnQocm9vbUlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPiB7XG4gICAgY29uc3Qgcm9vbSA9IGF3YWl0IHRoaXMucm9vbVNlcnZpY2UuZ2V0T25lKHJvb21JZCk7XG4gICAgaWYgKHJvb20ubWVtYmVycy5zb21lKChtKSA9PiBtLmlkID09PSB1c2VySWQpKSByZXR1cm4gcm9vbTtcbiAgICBjb25zdCB1c2VyUmVmID0gYXdhaXQgdGhpcy5nZXRVc2VySW5mbyh1c2VySWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRNZW1iZXJzID0gWy4uLnJvb20ubWVtYmVycywgdXNlclJlZl07XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHJvb21JZCwge1xuICAgICAgbWVtYmVyczogdXBkYXRlZE1lbWJlcnMsXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVBhcnRpY2lwYW50KHJvb21JZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uUm9vbT4ge1xuICAgIGNvbnN0IHJvb20gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmdldE9uZShyb29tSWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRNZW1iZXJzID0gcm9vbS5tZW1iZXJzLmZpbHRlcigobWVtYmVyKSA9PiBtZW1iZXIuaWQgIT09IHVzZXJJZCk7XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHJvb21JZCwge1xuICAgICAgbWVtYmVyczogdXBkYXRlZE1lbWJlcnMsXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ2hhdE1lc3NhZ2VTZXJ2aWNlIEltcGxlbWVudGF0aW9ucyAgIC0tLS1cblxuICBhc3luYyBzZW5kTWVzc2FnZShcbiAgICByb29tSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU6IEFYUENvbnRlbnRUeXBlID0gJ3RleHQnLFxuICAgIHJlcGx5SWQ/OiBzdHJpbmcsXG4gICAgdXNlcklkPzogc3RyaW5nLFxuICApOiBQcm9taXNlPEFYTUNoYXRNZXNzYWdlPiB7XG4gICAgY29uc3QgYXV0aG9yID0gdXNlcklkID8gYXdhaXQgdGhpcy5nZXRVc2VySW5mbyh1c2VySWQpIDogdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2VDb250ZW50OiBBWFBDb250ZW50ID0geyBjb250ZW50LCBjb250ZW50VHlwZSB9O1xuICAgIGNvbnN0IG1lc3NhZ2U6IE9taXQ8QVhNQ29udmVyc2F0aW9uTWVzc2FnZSwgJ2lkJz4gPSB7XG4gICAgICByb29tSWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlQ29udGVudCxcbiAgICAgIGF1dGhvcixcbiAgICAgIHJlcGx5SWQsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBjcmVhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICAgIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgICAgcmVhY3Rpb25zOiBbXSxcbiAgICAgIHNlZW46IFtdLFxuICAgIH07XG4gICAgY29uc3QgbWVzc2FnZUlkID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5pbnNlcnRPbmUoeyAuLi5tZXNzYWdlIH0pO1xuICAgIGNvbnN0IG5ld01lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuICAgIGNvbnN0IGZvcm1hdHRlZE1lc3NhZ2UgPSBhd2FpdCB0aGlzLmZvcm1hdE1lc3NhZ2UobmV3TWVzc2FnZSk7XG5cbiAgICB0aGlzLl9tZXNzYWdlU2VudCQubmV4dChmb3JtYXR0ZWRNZXNzYWdlKTtcblxuICAgIHJldHVybiBmb3JtYXR0ZWRNZXNzYWdlO1xuICB9XG5cbiAgYXN5bmMgZ2V0TWVzc2FnZXMocm9vbUlkOiBzdHJpbmcsIHNraXAgPSAwLCB0YWtlID0gOTkpOiBQcm9taXNlPHsgaXRlbXM6IEFYTUNoYXRNZXNzYWdlW107IHRvdGFsOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UucXVlcnkoe1xuICAgICAgc2tpcCxcbiAgICAgIHRha2UsXG4gICAgICBmaWx0ZXI6IHsgZmllbGQ6ICdyb29tSWQnLCB2YWx1ZTogcm9vbUlkLCBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0gfSxcbiAgICAgIHNvcnQ6IFt7IGZpZWxkOiAnY3JlYXRlZEF0JywgZGlyOiAnZGVzYycgfV0sXG4gICAgfSk7XG4gICAgY29uc3QgZm9ybWF0dGVkTWVzc2FnZXMgPSBhd2FpdCBQcm9taXNlLmFsbChyZXN1bHQuaXRlbXMubWFwKChtKSA9PiB0aGlzLmZvcm1hdE1lc3NhZ2UobSkpKTtcbiAgICByZXR1cm4geyBpdGVtczogZm9ybWF0dGVkTWVzc2FnZXMsIHRvdGFsOiByZXN1bHQudG90YWwgfTtcbiAgfVxuXG4gIGFzeW5jIGdldE1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRNZXNzYWdlPiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0TWVzc2FnZShtZXNzYWdlKTtcbiAgfVxuXG4gIGFzeW5jIGVkaXRNZXNzYWdlKFxuICAgIG1lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBjb250ZW50VHlwZTogQVhQQ29udGVudFR5cGUgPSAndGV4dCcsXG4gICk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VDb250ZW50OiBBWFBDb250ZW50ID0geyBjb250ZW50LCBjb250ZW50VHlwZSB9O1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShtZXNzYWdlSWQsIHtcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VDb250ZW50LFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZGVsZXRlT25lKG1lc3NhZ2VJZCk7XG4gICAgICB0aGlzLl9tZXNzYWdlUmVtb3ZlZCQubmV4dChtZXNzYWdlSWQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXBseU1lc3NhZ2UoXG4gICAgcmVwbHlUb01lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBjb250ZW50VHlwZTogQVhQQ29udGVudFR5cGUgPSAndGV4dCcsXG4gICk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsTWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKHJlcGx5VG9NZXNzYWdlSWQpO1xuICAgIHJldHVybiB0aGlzLnNlbmRNZXNzYWdlKG9yaWdpbmFsTWVzc2FnZS5yb29tSWQsIGNvbnRlbnQsIGNvbnRlbnRUeXBlLCByZXBseVRvTWVzc2FnZUlkKTtcbiAgfVxuXG4gIGFzeW5jIHBpbk1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUobWVzc2FnZUlkLCB7XG4gICAgICBpc1Bpbm5lZDogdHJ1ZSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5waW5NZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKG1lc3NhZ2VJZCwge1xuICAgICAgaXNQaW5uZWQ6IGZhbHNlLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENoYXRSZWFjdGlvblNlcnZpY2UgSW1wbGVtZW50YXRpb25zICAgLS0tLVxuXG4gIGFzeW5jIGFkZFJlYWN0aW9uKG1lc3NhZ2VJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+IHtcbiAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgY29uc3QgcmVhY3Rpb25zID0gbWVzc2FnZS5yZWFjdGlvbnMgfHwgW107XG4gICAgaWYgKHJlYWN0aW9ucy5zb21lKChyKSA9PiByLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkICYmIHIudHlwZSA9PT0gdHlwZSkpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGVkUmVhY3Rpb25zOiBBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdID0gWy4uLnJlYWN0aW9ucywgeyBhdXRob3IsIHR5cGUgfV07XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUobWVzc2FnZUlkLCB7XG4gICAgICByZWFjdGlvbnM6IHVwZGF0ZWRSZWFjdGlvbnMsXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9KTtcbiAgICB0aGlzLl9tZXNzYWdlUmVhY3RlZCQubmV4dChyZXMpO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBhc3luYyByZW1vdmVSZWFjdGlvbihtZXNzYWdlSWQ6IHN0cmluZywgdHlwZTogQVhNUmVhY3Rpb25UeXBlKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiB7XG4gICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRSZWFjdGlvbnMgPSAobWVzc2FnZS5yZWFjdGlvbnMgfHwgW10pLmZpbHRlcigocikgPT4gIShyLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkICYmIHIudHlwZSA9PT0gdHlwZSkpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKG1lc3NhZ2VJZCwge1xuICAgICAgcmVhY3Rpb25zOiB1cGRhdGVkUmVhY3Rpb25zLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gICAgdGhpcy5fbWVzc2FnZVJlYWN0ZWQkLm5leHQocmVzKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmVhY3Rpb25zKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdPiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgcmV0dXJuIG1lc3NhZ2UucmVhY3Rpb25zIHx8IFtdO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDaGF0U2VlblNlcnZpY2UgSW1wbGVtZW50YXRpb25zICAgLS0tLVxuXG4gIGFzeW5jIG1hcmtTZWVuKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiB7XG4gICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuICAgIGNvbnN0IHNlZW4gPSBtZXNzYWdlLnNlZW4gfHwgW107XG4gICAgaWYgKHNlZW4uc29tZSgocykgPT4gcy5hdXRob3IuaWQgPT09IGF1dGhvci5pZCkpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGVkU2VlbjogQVhNQ29udmVyc2F0aW9uU2VlbltdID0gWy4uLnNlZW4sIHsgYXV0aG9yLCB0eXBlOiAncmVhZCcgYXMgQVhNU2VlblR5cGUgfV07XG4gICAgY29uc3QgdXBkYXRlZE1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShtZXNzYWdlSWQsIHtcbiAgICAgIHNlZW46IHVwZGF0ZWRTZWVuLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gICAgdGhpcy5fbWVzc2FnZVNlZW4kLm5leHQoYXdhaXQgdGhpcy5mb3JtYXRNZXNzYWdlKHVwZGF0ZWRNZXNzYWdlKSk7XG4gICAgcmV0dXJuIHVwZGF0ZWRNZXNzYWdlO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2VlbkJ5KG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25TZWVuW10+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUobWVzc2FnZUlkKTtcbiAgICByZXR1cm4gbWVzc2FnZS5zZWVuIHx8IFtdO1xuICB9XG5cbiAgYXN5bmMgbWFya1Jvb21TZWVuKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghcm9vbUlkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBpdGVtcyB9ID0gYXdhaXQgdGhpcy5nZXRNZXNzYWdlcyhyb29tSWQsIDAsIDk5KTtcbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VySWQgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQ7XG5cbiAgICAgIGNvbnN0IHVucmVhZE1lc3NhZ2VzID0gaXRlbXMuZmlsdGVyKFxuICAgICAgICAobWVzc2FnZSkgPT4gbWVzc2FnZS5hdXRob3IuaWQgIT09IGN1cnJlbnRVc2VySWQgJiYgIW1lc3NhZ2Uuc2Vlbj8uc29tZSgocykgPT4gcy5hdXRob3IuaWQgPT09IGN1cnJlbnRVc2VySWQpLFxuICAgICAgKTtcblxuICAgICAgaWYgKHVucmVhZE1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodW5yZWFkTWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB0aGlzLm1hcmtTZWVuKG1lc3NhZ2UuaWQpKSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9yb29tU2VlbiQubmV4dChyb29tSWQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIG1hcmtpbmcgcm9vbSAke3Jvb21JZH0gYXMgc2VlbjpgLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBUeXBpbmcgU3RhdHVzIEltcGxlbWVudGF0aW9ucyAgIC0tLS1cblxuICBhc3luYyBzdGFydFR5cGluZyhyb29tSWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJJZCA/IGF3YWl0IHRoaXMuZ2V0VXNlckluZm8odXNlcklkKSA6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICB0aGlzLl90eXBpbmdTdGF0dXMkLm5leHQoeyByb29tSWQsIHVzZXIsIGlzVHlwaW5nOiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RvcFR5cGluZyhyb29tSWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJJZCA/IGF3YWl0IHRoaXMuZ2V0VXNlckluZm8odXNlcklkKSA6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICB0aGlzLl90eXBpbmdTdGF0dXMkLm5leHQoeyByb29tSWQsIHVzZXIsIGlzVHlwaW5nOiBmYWxzZSB9KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe, DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/badge\";\nimport * as i3 from \"@acorex/components/avatar\";\nimport * as i4 from \"@acorex/core/translation\";\nexport class AXMChatItemComponent {\n constructor() {\n // Input\n this.data = input.required();\n this.typing = input(null);\n this.lastMessageReaction = input(null);\n // Output\n this.pressChatItem = output();\n // Services\n this.sessionService = inject(AXPSessionService);\n this.datePipe = inject(DatePipe);\n this.chatName = signal({\n fullName: 'Loading...',\n id: '',\n isPrivate: false,\n });\n this.#chatInfoEffect = effect(async () => {\n const { members, title, id } = this.data();\n if (members.length > 1) {\n this.chatName.set({\n fullName: title || 'Group Chat',\n id,\n isPrivate: false,\n });\n return;\n }\n const member = members[0];\n if (!member) {\n this.chatName.set({ fullName: 'Unknown User', id: '', isPrivate: true });\n return;\n }\n this.chatName.set({\n fullName: member.fullName || 'Unknown User',\n id: member.id,\n isPrivate: true,\n });\n });\n this.formattedLastMessageDate = computed(() => {\n const lastMessage = this.data().lastMessage;\n if (!lastMessage?.createdAt) {\n return '';\n }\n const messageDate = new Date(lastMessage.createdAt);\n const today = new Date();\n const isToday = messageDate.getFullYear() === today.getFullYear() &&\n messageDate.getMonth() === today.getMonth() &&\n messageDate.getDate() === today.getDate();\n if (isToday) {\n return this.datePipe.transform(messageDate, 'shortTime');\n }\n else {\n return this.datePipe.transform(messageDate, 'mediumDate');\n }\n });\n this.lastMessage = computed(() => {\n const message = this.data().lastMessage;\n if (!message)\n return { content: 'No messages yet', contentType: 'text', reactions: [] };\n return {\n content: message.message.contentType === 'text' ? message.message.content : message.message.contentType,\n contentType: message.message.contentType,\n reactions: message.reactions || [],\n author: message.author,\n };\n });\n this.hasUnread = computed(() => {\n return this.data().unreadCount > 0;\n });\n this.unreadCount = computed(() => {\n return this.data().unreadCount.toString();\n });\n }\n #chatInfoEffect;\n onPressChatItem(id) {\n this.pressChatItem.emit(id);\n }\n messageSeenStatus() {\n const lastMessage = this.data().lastMessage;\n if (!lastMessage)\n return '';\n // Check if current user is the author\n if (this.sessionService.user?.id === lastMessage.author?.id) {\n // Check if message has been seen by anyone\n return lastMessage.seen.length > 0 ? 'ax-icon-dobble-check' : 'ax-icon-check';\n }\n return '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMChatItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: AXMChatItemComponent, isStandalone: true, selector: \"axm-chat-item\", inputs: { data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: true, transformFunction: null }, typing: { classPropertyName: \"typing\", publicName: \"typing\", isSignal: true, isRequired: false, transformFunction: null }, lastMessageReaction: { classPropertyName: \"lastMessageReaction\", publicName: \"lastMessageReaction\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressChatItem: \"pressChatItem\" }, ngImport: i0, template: \"<div\\n [id]=\\\"data().id\\\"\\n class=\\\"ax-cursor-pointer ax-p-4 ax-flex ax-items-center ax-justify-between ax-gap-4 ax-border-b ax-border-divider\\\"\\n (click)=\\\"onPressChatItem(data().id)\\\"\\n>\\n <!-- Avatar and User Info Section -->\\n <div class=\\\"ax-flex ax-min-w-0 ax-gap-4 ax-flex-1\\\">\\n <!-- Avatar with Online Status -->\\n <div class=\\\"ax-flex-shrink-0\\\">\\n @if (chatName().isPrivate) {\\n <axp-user-avatar [size]=\\\"48\\\" [userId]=\\\"chatName().id\\\"></axp-user-avatar>\\n } @else {\\n <ax-avatar [size]=\\\"48\\\">\\n <ax-text class=\\\"ax-primary-lightest\\\">\\n <small class=\\\"ax-text-xs ax-font-semibold fas fa-users\\\"></small>\\n </ax-text>\\n </ax-avatar>\\n }\\n <!--Temp-->\\n </div>\\n\\n <!-- User Details and Last Message -->\\n <div class=\\\"ax-flex ax-flex-col ax-min-w-0 ax-flex-1 ax-gap-1\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2\\\">\\n <p class=\\\"ax-font-semibold ax-text-on-surface ax-truncate ax-py-1\\\" [title]=\\\"chatName().fullName\\\">\\n {{ chatName().fullName }}\\n </p>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (messageSeenStatus()) {\\n <ax-icon class=\\\"ax-icon ax-text-success ax-size-5\\\" [class]=\\\"messageSeenStatus()\\\"></ax-icon>\\n }\\n @if (this.data().lastMessage) {\\n <span class=\\\"ax-text-xs ax-whitespace-nowrap\\\">\\n {{ formattedLastMessageDate() }}\\n </span>\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2 ax-mt-1 ax-overflow-hidden\\\">\\n @if (typing()?.isTyping) {\\n <div class=\\\"ax-pb-1 ax-flex ax-justify-center ax-items-end ax-gap-1\\\">\\n <span class=\\\"ax-text-on-surface-light ax-font-semibold ax-capitalize ax-whitespace-nowrap ax-text-sm\\\">\\n @if (!chatName().isPrivate) {\\n {{ typing()?.user }}\\n }\\n {{ 'is-typing' | translate: { scope: 'conversation' } | async }}\\n </span>\\n <div class=\\\"typing-indicator\\\">\\n <span></span>\\n <span></span>\\n <span></span>\\n </div>\\n </div>\\n } @else {\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-sm ax-shrink ax-min-w-0\\\">\\n @if ((lastMessage().author?.fullName || lastMessage().author?.username) && !chatName().isPrivate) {\\n <span class=\\\"ax-text-on-surface-light ax-font-semibold ax-capitalize ax-whitespace-nowrap\\\">\\n {{ (lastMessage().author?.fullName || lastMessage().author?.username) + ': ' }}\\n </span>\\n }\\n @switch (lastMessage().contentType) {\\n @case ('image') {\\n <i class=\\\"fa-regular fa-image\\\"></i>\\n }\\n @case ('video') {\\n <i class=\\\"fa-regular fa-video\\\"></i>\\n }\\n @case ('file') {\\n <i class=\\\"fa-regular fa-file\\\"></i>\\n }\\n @case ('audio') {\\n <i class=\\\"fa-regular fa-microphone\\\"></i>\\n }\\n @case ('link') {\\n <i class=\\\"fa-regular fa-link\\\"></i>\\n }\\n }\\n\\n <span class=\\\"ax-truncate ax-capitalize\\\">\\n {{ lastMessage().content }}\\n </span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n @if (hasUnread()) {\\n <ax-badge color=\\\"primary\\\" [text]=\\\"unreadCount()\\\" class=\\\"ax-flex-shrink-0 ax-ml-auto\\\"></ax-badge>\\n }\\n <!-- @if (lastMessageReaction()) {\\n <div class=\\\"ax-flex ax-items-center ax-gap-1 ax-bg-surface ax-rounded-full ax-p-1 ax-px-2\\\">\\n <span class=\\\"ax-text-sm\\\">{{ lastMessageReaction() }}</span>\\n <span class=\\\"ax-text-xs\\\">{{ lastMessage().reactions.length }}</span>\\n </div>\\n } -->\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:block;width:100%}.typing-indicator{display:flex;align-items:center;padding-bottom:.3rem}.typing-indicator span{height:6px;width:6px;margin:0 1px;background-color:#9e9ea1;border-radius:50%;display:inline-block;animation:bounce 1.4s infinite ease-in-out both}.typing-indicator span:nth-child(1){animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i2.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"component\", type: AXPUserAvatarComponent, selector: \"axp-user-avatar\", inputs: [\"size\", \"userId\"] }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"component\", type: i3.AXAvatarComponent, selector: \"ax-avatar\", inputs: [\"color\", \"size\", \"shape\", \"look\"], outputs: [\"sizeChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMChatItemComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n AXDecoratorModule,\n AXBadgeModule,\n AXPUserAvatarComponent,\n AXAvatarModule,\n AXDecoratorModule,\n AXTranslationModule,\n AsyncPipe,\n ], template: \"<div\\n [id]=\\\"data().id\\\"\\n class=\\\"ax-cursor-pointer ax-p-4 ax-flex ax-items-center ax-justify-between ax-gap-4 ax-border-b ax-border-divider\\\"\\n (click)=\\\"onPressChatItem(data().id)\\\"\\n>\\n <!-- Avatar and User Info Section -->\\n <div class=\\\"ax-flex ax-min-w-0 ax-gap-4 ax-flex-1\\\">\\n <!-- Avatar with Online Status -->\\n <div class=\\\"ax-flex-shrink-0\\\">\\n @if (chatName().isPrivate) {\\n <axp-user-avatar [size]=\\\"48\\\" [userId]=\\\"chatName().id\\\"></axp-user-avatar>\\n } @else {\\n <ax-avatar [size]=\\\"48\\\">\\n <ax-text class=\\\"ax-primary-lightest\\\">\\n <small class=\\\"ax-text-xs ax-font-semibold fas fa-users\\\"></small>\\n </ax-text>\\n </ax-avatar>\\n }\\n <!--Temp-->\\n </div>\\n\\n <!-- User Details and Last Message -->\\n <div class=\\\"ax-flex ax-flex-col ax-min-w-0 ax-flex-1 ax-gap-1\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2\\\">\\n <p class=\\\"ax-font-semibold ax-text-on-surface ax-truncate ax-py-1\\\" [title]=\\\"chatName().fullName\\\">\\n {{ chatName().fullName }}\\n </p>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (messageSeenStatus()) {\\n <ax-icon class=\\\"ax-icon ax-text-success ax-size-5\\\" [class]=\\\"messageSeenStatus()\\\"></ax-icon>\\n }\\n @if (this.data().lastMessage) {\\n <span class=\\\"ax-text-xs ax-whitespace-nowrap\\\">\\n {{ formattedLastMessageDate() }}\\n </span>\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2 ax-mt-1 ax-overflow-hidden\\\">\\n @if (typing()?.isTyping) {\\n <div class=\\\"ax-pb-1 ax-flex ax-justify-center ax-items-end ax-gap-1\\\">\\n <span class=\\\"ax-text-on-surface-light ax-font-semibold ax-capitalize ax-whitespace-nowrap ax-text-sm\\\">\\n @if (!chatName().isPrivate) {\\n {{ typing()?.user }}\\n }\\n {{ 'is-typing' | translate: { scope: 'conversation' } | async }}\\n </span>\\n <div class=\\\"typing-indicator\\\">\\n <span></span>\\n <span></span>\\n <span></span>\\n </div>\\n </div>\\n } @else {\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-sm ax-shrink ax-min-w-0\\\">\\n @if ((lastMessage().author?.fullName || lastMessage().author?.username) && !chatName().isPrivate) {\\n <span class=\\\"ax-text-on-surface-light ax-font-semibold ax-capitalize ax-whitespace-nowrap\\\">\\n {{ (lastMessage().author?.fullName || lastMessage().author?.username) + ': ' }}\\n </span>\\n }\\n @switch (lastMessage().contentType) {\\n @case ('image') {\\n <i class=\\\"fa-regular fa-image\\\"></i>\\n }\\n @case ('video') {\\n <i class=\\\"fa-regular fa-video\\\"></i>\\n }\\n @case ('file') {\\n <i class=\\\"fa-regular fa-file\\\"></i>\\n }\\n @case ('audio') {\\n <i class=\\\"fa-regular fa-microphone\\\"></i>\\n }\\n @case ('link') {\\n <i class=\\\"fa-regular fa-link\\\"></i>\\n }\\n }\\n\\n <span class=\\\"ax-truncate ax-capitalize\\\">\\n {{ lastMessage().content }}\\n </span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n @if (hasUnread()) {\\n <ax-badge color=\\\"primary\\\" [text]=\\\"unreadCount()\\\" class=\\\"ax-flex-shrink-0 ax-ml-auto\\\"></ax-badge>\\n }\\n <!-- @if (lastMessageReaction()) {\\n <div class=\\\"ax-flex ax-items-center ax-gap-1 ax-bg-surface ax-rounded-full ax-p-1 ax-px-2\\\">\\n <span class=\\\"ax-text-sm\\\">{{ lastMessageReaction() }}</span>\\n <span class=\\\"ax-text-xs\\\">{{ lastMessage().reactions.length }}</span>\\n </div>\\n } -->\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:block;width:100%}.typing-indicator{display:flex;align-items:center;padding-bottom:.3rem}.typing-indicator span{height:6px;width:6px;margin:0 1px;background-color:#9e9ea1;border-radius:50%;display:inline-block;animation:bounce 1.4s infinite ease-in-out both}.typing-indicator span:nth-child(1){animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NvbXBvbmVudHMvY2hhdC1pdGVtL2NoYXQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jb21wb25lbnRzL2NoYXQtaXRlbS9jaGF0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWtCcEgsTUFBTSxPQUFPLG9CQUFvQjtJQWZqQztRQWdCRSxRQUFRO1FBQ1IsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWUsQ0FBQztRQUNyQyxXQUFNLEdBQUcsS0FBSyxDQUE2QyxJQUFJLENBQUMs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R0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFDaEYsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs4R0FqR1Usb0JBQW9CO2tHQUFwQixvQkFBb0IsbWhCQ3pCakMsdWdJQWtHQSxxZ0JEbEZJLGlCQUFpQixzVkFDakIsYUFBYSwwSUFDYixzQkFBc0IsdUZBQ3RCLGNBQWMsNktBRWQsbUJBQW1CLDBGQUNuQixTQUFTOzsyRkFHQSxvQkFBb0I7a0JBZmhDLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixzQkFBc0I7d0JBQ3RCLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLFNBQVM7cUJBQ1YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEF2YXRhck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNQ2hhdFJvb20gfSBmcm9tICcuLi8uLi9jaGF0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tY2hhdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgQVhQVXNlckF2YXRhckNvbXBvbmVudCxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ2hhdEl0ZW1Db21wb25lbnQge1xuICAvLyBJbnB1dFxuICBkYXRhID0gaW5wdXQucmVxdWlyZWQ8QVhNQ2hhdFJvb20+KCk7XG4gIHR5cGluZyA9IGlucHV0PHsgdXNlcjogc3RyaW5nOyBpc1R5cGluZzogYm9vbGVhbiB9IHwgbnVsbD4obnVsbCk7XG4gIGxhc3RNZXNzYWdlUmVhY3Rpb24gPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvLyBPdXRwdXRcbiAgcHJlc3NDaGF0SXRlbSA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgLy8gU2VydmljZXNcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG4gIHByaXZhdGUgZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xuXG4gIHByb3RlY3RlZCBjaGF0TmFtZSA9IHNpZ25hbDx7IGZ1bGxOYW1lOiBzdHJpbmc7IGlkOiBzdHJpbmc7IGlzUHJpdmF0ZTogYm9vbGVhbiB9Pih7XG4gICAgZnVsbE5hbWU6ICdMb2FkaW5nLi4uJyxcbiAgICBpZDogJycsXG4gICAgaXNQcml2YXRlOiBmYWxzZSxcbiAgfSk7XG5cbiAgI2NoYXRJbmZvRWZmZWN0ID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IG1lbWJlcnMsIHRpdGxlLCBpZCB9ID0gdGhpcy5kYXRhKCk7XG5cbiAgICBpZiAobWVtYmVycy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmNoYXROYW1lLnNldCh7XG4gICAgICAgIGZ1bGxOYW1lOiB0aXRsZSB8fCAnR3JvdXAgQ2hhdCcsXG4gICAgICAgIGlkLFxuICAgICAgICBpc1ByaXZhdGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWVtYmVyID0gbWVtYmVyc1swXTtcbiAgICBpZiAoIW1lbWJlcikge1xuICAgICAgdGhpcy5jaGF0TmFtZS5zZXQoeyBmdWxsTmFtZTogJ1Vua25vd24gVXNlcicsIGlkOiAnJywgaXNQcml2YXRlOiB0cnVlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2hhdE5hbWUuc2V0KHtcbiAgICAgIGZ1bGxOYW1lOiBtZW1iZXIuZnVsbE5hbWUgfHwgJ1Vua25vd24gVXNlcicsXG4gICAgICBpZDogbWVtYmVyLmlkLFxuICAgICAgaXNQcml2YXRlOiB0cnVlLFxuICAgIH0pO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgZm9ybWF0dGVkTGFzdE1lc3NhZ2VEYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gdGhpcy5kYXRhKCkubGFzdE1lc3NhZ2U7XG4gICAgaWYgKCFsYXN0TWVzc2FnZT8uY3JlYXRlZEF0KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2VEYXRlID0gbmV3IERhdGUobGFzdE1lc3NhZ2UuY3JlYXRlZEF0KTtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgaXNUb2RheSA9XG4gICAgICBtZXNzYWdlRGF0ZS5nZXRGdWxsWWVhcigpID09PSB0b2RheS5nZXRGdWxsWWVhcigpICYmXG4gICAgICBtZXNzYWdlRGF0ZS5nZXRNb250aCgpID09PSB0b2RheS5nZXRNb250aCgpICYmXG4gICAgICBtZXNzYWdlRGF0ZS5nZXREYXRlKCkgPT09IHRvZGF5LmdldERhdGUoKTtcblxuICAgIGlmIChpc1RvZGF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obWVzc2FnZURhdGUsICdzaG9ydFRpbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG1lc3NhZ2VEYXRlLCAnbWVkaXVtRGF0ZScpO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGxhc3RNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmRhdGEoKS5sYXN0TWVzc2FnZTtcbiAgICBpZiAoIW1lc3NhZ2UpIHJldHVybiB7IGNvbnRlbnQ6ICdObyBtZXNzYWdlcyB5ZXQnLCBjb250ZW50VHlwZTogJ3RleHQnLCByZWFjdGlvbnM6IFtdIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IG1lc3NhZ2UubWVzc2FnZS5jb250ZW50VHlwZSA9PT0gJ3RleHQnID8gbWVzc2FnZS5tZXNzYWdlLmNvbnRlbnQgOiBtZXNzYWdlLm1lc3NhZ2UuY29udGVudFR5cGUsXG4gICAgICBjb250ZW50VHlwZTogbWVzc2FnZS5tZXNzYWdlLmNvbnRlbnRUeXBlLFxuICAgICAgcmVhY3Rpb25zOiBtZXNzYWdlLnJlYWN0aW9ucyB8fCBbXSxcbiAgICAgIGF1dGhvcjogbWVzc2FnZS5hdXRob3IsXG4gICAgfTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGhhc1VucmVhZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhKCkudW5yZWFkQ291bnQgPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgdW5yZWFkQ291bnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSgpLnVucmVhZENvdW50LnRvU3RyaW5nKCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBvblByZXNzQ2hhdEl0ZW0oaWQ6IHN0cmluZykge1xuICAgIHRoaXMucHJlc3NDaGF0SXRlbS5lbWl0KGlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtZXNzYWdlU2VlblN0YXR1cygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gdGhpcy5kYXRhKCkubGFzdE1lc3NhZ2U7XG4gICAgaWYgKCFsYXN0TWVzc2FnZSkgcmV0dXJuICcnO1xuXG4gICAgLy8gQ2hlY2sgaWYgY3VycmVudCB1c2VyIGlzIHRoZSBhdXRob3JcbiAgICBpZiAodGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZCA9PT0gbGFzdE1lc3NhZ2UuYXV0aG9yPy5pZCkge1xuICAgICAgLy8gQ2hlY2sgaWYgbWVzc2FnZSBoYXMgYmVlbiBzZWVuIGJ5IGFueW9uZVxuICAgICAgcmV0dXJuIGxhc3RNZXNzYWdlLnNlZW4ubGVuZ3RoID4gMCA/ICdheC1pY29uLWRvYmJsZS1jaGVjaycgOiAnYXgtaWNvbi1jaGVjayc7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4iLCI8ZGl2XG4gIFtpZF09XCJkYXRhKCkuaWRcIlxuICBjbGFzcz1cImF4LWN1cnNvci1wb2ludGVyIGF4LXAtNCBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTQgYXgtYm9yZGVyLWIgYXgtYm9yZGVyLWRpdmlkZXJcIlxuICAoY2xpY2spPVwib25QcmVzc0NoYXRJdGVtKGRhdGEoKS5pZClcIlxuPlxuICA8IS0tIEF2YXRhciBhbmQgVXNlciBJbmZvIFNlY3Rpb24gLS0+XG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LW1pbi13LTAgYXgtZ2FwLTQgYXgtZmxleC0xXCI+XG4gICAgPCEtLSBBdmF0YXIgd2l0aCBPbmxpbmUgU3RhdHVzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LXNocmluay0wXCI+XG4gICAgICBAaWYgKGNoYXROYW1lKCkuaXNQcml2YXRlKSB7XG4gICAgICAgIDxheHAtdXNlci1hdmF0YXIgW3NpemVdPVwiNDhcIiBbdXNlcklkXT1cImNoYXROYW1lKCkuaWRcIj48L2F4cC11c2VyLWF2YXRhcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8YXgtYXZhdGFyIFtzaXplXT1cIjQ4XCI+XG4gICAgICAgICAgPGF4LXRleHQgY2xhc3M9XCJheC1wcmltYXJ5LWxpZ2h0ZXN0XCI+XG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJheC10ZXh0LXhzIGF4LWZvbnQtc2VtaWJvbGQgZmFzIGZhLXVzZXJzXCI+PC9zbWFsbD5cbiAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgIDwvYXgtYXZhdGFyPlxuICAgICAgfVxuICAgICAgPCEtLVRlbXAtLT5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVXNlciBEZXRhaWxzIGFuZCBMYXN0IE1lc3NhZ2UgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWluLXctMCBheC1mbGV4LTEgYXgtZ2FwLTFcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTJcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtb24tc3VyZmFjZSBheC10cnVuY2F0ZSBheC1weS0xXCIgW3RpdGxlXT1cImNoYXROYW1lKCkuZnVsbE5hbWVcIj5cbiAgICAgICAgICB7eyBjaGF0TmFtZSgpLmZ1bGxOYW1lIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0xXCI+XG4gICAgICAgICAgQGlmIChtZXNzYWdlU2VlblN0YXR1cygpKSB7XG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtdGV4dC1zdWNjZXNzIGF4LXNpemUtNVwiIFtjbGFzc109XCJtZXNzYWdlU2VlblN0YXR1cygpXCI+PC9heC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRoaXMuZGF0YSgpLmxhc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQteHMgYXgtd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFzdE1lc3NhZ2VEYXRlKCkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWdhcC0yIGF4LW10LTEgYXgtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgIEBpZiAodHlwaW5nKCk/LmlzVHlwaW5nKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXBiLTEgYXgtZmxleCBheC1qdXN0aWZ5LWNlbnRlciBheC1pdGVtcy1lbmQgYXgtZ2FwLTFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1vbi1zdXJmYWNlLWxpZ2h0IGF4LWZvbnQtc2VtaWJvbGQgYXgtY2FwaXRhbGl6ZSBheC13aGl0ZXNwYWNlLW5vd3JhcCBheC10ZXh0LXNtXCI+XG4gICAgICAgICAgICAgIEBpZiAoIWNoYXROYW1lKCkuaXNQcml2YXRlKSB7XG4gICAgICAgICAgICAgICAge3sgdHlwaW5nKCk/LnVzZXIgfX1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB7eyAnaXMtdHlwaW5nJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2NvbnZlcnNhdGlvbicgfSB8IGFzeW5jIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwaW5nLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMiBheC10ZXh0LXNtIGF4LXNocmluayBheC1taW4tdy0wXCI+XG4gICAgICAgICAgICBAaWYgKChsYXN0TWVzc2FnZSgpLmF1dGhvcj8uZnVsbE5hbWUgfHwgbGFzdE1lc3NhZ2UoKS5hdXRob3I/LnVzZXJuYW1lKSAmJiAhY2hhdE5hbWUoKS5pc1ByaXZhdGUpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LW9uLXN1cmZhY2UtbGlnaHQgYXgtZm9udC1zZW1pYm9sZCBheC1jYXBpdGFsaXplIGF4LXdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgICAge3sgKGxhc3RNZXNzYWdlKCkuYXV0aG9yPy5mdWxsTmFtZSB8fCBsYXN0TWVzc2FnZSgpLmF1dGhvcj8udXNlcm5hbWUpICsgJzogJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAc3dpdGNoIChsYXN0TWVzc2FnZSgpLmNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICAgIEBjYXNlICgnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLWltYWdlXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlICgndmlkZW8nKSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXZpZGVvXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlICgnZmlsZScpIHtcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtZmlsZVwiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAY2FzZSAoJ2F1ZGlvJykge1xuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtcmVndWxhciBmYS1taWNyb3Bob25lXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlICgnbGluaycpIHtcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtbGlua1wiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRydW5jYXRlIGF4LWNhcGl0YWxpemVcIj5cbiAgICAgICAgICAgICAge3sgbGFzdE1lc3NhZ2UoKS5jb250ZW50IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yXCI+XG4gICAgICAgICAgQGlmIChoYXNVbnJlYWQoKSkge1xuICAgICAgICAgICAgPGF4LWJhZGdlIGNvbG9yPVwicHJpbWFyeVwiIFt0ZXh0XT1cInVucmVhZENvdW50KClcIiBjbGFzcz1cImF4LWZsZXgtc2hyaW5rLTAgYXgtbWwtYXV0b1wiPjwvYXgtYmFkZ2U+XG4gICAgICAgICAgfVxuICAgICAgICAgIDwhLS0gQGlmIChsYXN0TWVzc2FnZVJlYWN0aW9uKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMSBheC1iZy1zdXJmYWNlIGF4LXJvdW5kZWQtZnVsbCBheC1wLTEgYXgtcHgtMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtc21cIj57eyBsYXN0TWVzc2FnZVJlYWN0aW9uKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC14c1wiPnt7IGxhc3RNZXNzYWdlKCkucmVhY3Rpb25zLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, HostListener, inject, signal, viewChild, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, startWith } from 'rxjs';\nimport { AXMUserLookupPopup } from '../comment';\nimport { AXMChatService } from './chat.service';\nimport { AXMChatItemComponent } from './components/chat-item/chat-item.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/router\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@acorex/components/badge\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/components/search-box\";\nimport * as i7 from \"@acorex/components/tabs\";\nimport * as i8 from \"@acorex/components/button\";\nimport * as i9 from \"@acorex/components/skeleton\";\nexport class AXMChatComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n this.activatedRoute = inject(ActivatedRoute);\n this.chatService = inject(AXMChatService);\n this.popupService = inject(AXPopupService);\n this.dialogService = inject(AXDialogService);\n this.router = inject(Router);\n this.unsubscribe = inject(AXUnsubscriber);\n // View Children\n this.tab = viewChild('tab');\n this.container = viewChild('container');\n // State signals\n this.rooms = signal([]);\n this.allRooms = signal([]);\n this.selectedRoom = signal(null);\n this.isLoading = signal(false);\n this.typingStatus = signal({});\n this.error = signal(null);\n this.activeTab = signal(0);\n this.isSearching = signal(false);\n this.searchQuery = signal('');\n this.showSearch = signal(true);\n this.placeholder = signal('Search chats...');\n // Computed signals\n // filteredRooms = computed(() => {\n // let chatRooms = this.rooms();\n // // Apply search filter\n // if (this.searchQuery()) {\n // const searchText = this.searchQuery().toLowerCase();\n // chatRooms = chatRooms.filter(async (room) => {\n // const user = await this.userService.getOne(room.members?.[0]?.id);\n // const roomName = `${user.firstName} ${user.lastName}` || '';\n // const lastMessage = room.lastMessage?.message?.content || '';\n // return roomName.toLowerCase().includes(searchText) || lastMessage.toLowerCase().includes(searchText);\n // });\n // }\n // // Apply tab filter\n // if (this.activeTab() === 1) {\n // return chatRooms.filter((room) => room.unreadCount > 0);\n // }\n // return chatRooms;\n // });\n this.filteredRooms = signal([]);\n this.searchEffect = effect(async () => {\n let chatRooms = this.allRooms();\n // Search filter\n const query = (this.searchQuery() || '').toLowerCase();\n if (query) {\n // Perform async enrichment for names\n const filtered = [];\n for (const room of chatRooms) {\n try {\n let roomName = '';\n // Handle group chats vs. single-user chats\n if (room.members && room.members.length > 1) {\n roomName = room.title || '';\n }\n else if (room.members && room.members.length === 1) {\n const member = room.members[0];\n if (member) {\n roomName = member.fullName || '';\n }\n }\n const lastMessage = room.lastMessage?.message?.content || '';\n if (roomName.toLowerCase().includes(query) || lastMessage.toLowerCase().includes(query)) {\n filtered.push(room);\n }\n }\n catch (error) {\n console.error(`Failed to process search for room ${room.id}`, error);\n }\n }\n chatRooms = filtered;\n }\n // Tab filter\n if (this.activeTab() === 1) {\n chatRooms = chatRooms.filter((room) => room.unreadCount > 0);\n }\n this.filteredRooms.set(chatRooms);\n });\n this.unreadCount = computed(() => this.allRooms().filter((i) => i.unreadCount > 0).length);\n this.allCount = computed(() => this.allRooms().length);\n this.hasUnread = computed(() => this.allRooms().filter((i) => i.unreadCount > 0).length > 0);\n this.totalCount = computed(() => this.allRooms().length || 0);\n //switch tab to unread if there is no unread\n this.autoSwitchTab = effect(() => {\n if (this.activeTab() === 1 && !this.hasUnread()) {\n this.activeTab.set(0);\n }\n });\n this.af = afterNextRender(() => {\n const tabComponent = this.tab();\n if (tabComponent) {\n tabComponent.onActiveTabChanged.subscribe((i) => {\n this.activeTab.set(i.index);\n });\n }\n //(window as any).a = this.container()?.startSideDrawer();\n });\n }\n onTabChange(event) {\n this.activeTab.set(event.index);\n }\n async ngOnInit() {\n super.ngOnInit();\n this.isLoading.set(true);\n this.error.set(null);\n await this.loadChats();\n this.isLoading.set(false);\n //\n this.router.events\n .pipe(this.unsubscribe.takeUntilDestroy, filter((event) => event instanceof NavigationEnd), startWith(null))\n .subscribe(async () => {\n await this.loadFromRoute();\n });\n //\n this.chatService.roomRemoved$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((roomId) => {\n this.allRooms.update((rooms) => rooms.filter((r) => r.id !== roomId));\n if (roomId === this.selectedRoom()?.id) {\n this.selectedRoom.set(null);\n this.router.navigate(['./'], { relativeTo: this.activatedRoute });\n }\n });\n this.chatService.roomSeen$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((roomId) => {\n const currentRooms = this.allRooms();\n const updatedRooms = currentRooms.map((room) => {\n if (room.id === roomId) {\n return { ...room, unreadCount: 0 };\n }\n return room;\n });\n this.allRooms.set(updatedRooms);\n });\n this.chatService.messageSeen$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((message) => {\n const currentRooms = this.allRooms();\n const updatedRooms = currentRooms.map((room) => {\n if (room.id === message.roomId) {\n return { ...room, unreadCount: room.unreadCount - 1 };\n }\n return room;\n });\n this.allRooms.set(updatedRooms);\n });\n this.chatService.typingStatus$.pipe(this.unsubscribe.takeUntilDestroy).subscribe(async (status) => {\n const currentUserId = this.sessionService.user?.id;\n if (status.user.id !== currentUserId) {\n if (status.isTyping) {\n this.typingStatus.update((value) => ({\n ...value,\n [status.roomId]: { user: status.user.fullName || '', isTyping: true },\n }));\n }\n else {\n this.typingStatus.update((value) => {\n const { [status.roomId]: _, ...rest } = value;\n return rest;\n });\n }\n }\n });\n this.chatService.messageSent$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((message) => {\n const rooms = this.allRooms();\n const roomIndex = rooms.findIndex((r) => r.id === message.roomId);\n if (roomIndex > -1) {\n const roomToUpdate = rooms[roomIndex];\n const updatedRoom = {\n ...roomToUpdate,\n lastMessage: message,\n unreadCount: message.author.id !== this.sessionService.user?.id\n ? (roomToUpdate.unreadCount || 0) + 1\n : roomToUpdate.unreadCount,\n };\n const newRooms = [updatedRoom, ...rooms.filter((r) => r.id !== message.roomId)];\n this.allRooms.set(newRooms);\n }\n else {\n // New room, fetch it and add it to the top.\n this.chatService.getRoom(message.roomId).then((newRoom) => {\n this.allRooms.update((currentRooms) => {\n // Prepending the new room\n return [newRoom, ...currentRooms];\n });\n });\n }\n });\n this.chatService.messageReacted$.pipe(this.unsubscribe.takeUntilDestroy).subscribe((message) => {\n this.allRooms.update((rooms) => {\n return rooms.map((room) => {\n if (room.lastMessage?.id === message.id) {\n return {\n ...room,\n lastMessage: {\n ...room.lastMessage,\n reactions: message.reactions,\n },\n };\n }\n return room;\n });\n });\n });\n }\n async loadFromRoute() {\n const chatId = this.activatedRoute.snapshot.firstChild?.paramMap.get('id');\n if (chatId) {\n this.openChat(chatId);\n }\n else {\n this.selectedRoom.set(null);\n }\n }\n // Page Interface Implementation\n async getPageTitle() {\n const room = this.selectedRoom();\n if (!room && this.layoutService.isMobileDevice()) {\n return await this.translateService.translateAsync('plural-title', { scope: 'conversation' });\n }\n if (!room) {\n return '';\n }\n const { members, title, id } = room;\n if (members.length > 1) {\n return title || 'Group Chat';\n }\n const member = members[0];\n if (!member) {\n return 'Unknown User';\n }\n return member.fullName || 'Unknown User';\n }\n getPageDescription() {\n const typing = this.typingStatus();\n const selectedRoomId = this.selectedRoom()?.id;\n if (selectedRoomId && typing[selectedRoomId]?.isTyping) {\n return `${typing[selectedRoomId].user} is typing...`;\n }\n const room = this.selectedRoom();\n return room?.topic || '';\n }\n async getBackButton() {\n if (this.selectedRoom()) {\n return {\n title: await this.translateService.translateAsync('back-to-chat-list', { scope: 'conversation' }),\n };\n }\n else\n return null;\n }\n async getSecondaryMenuItems() {\n return this.layoutService.isMobileDevice()\n ? []\n : [\n {\n title: await this.translateService.translateAsync('remove-chat', { scope: 'conversation' }),\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n command: {\n name: 'remove-chat',\n },\n },\n ];\n }\n async execute(command) {\n switch (command.name) {\n case 'remove-chat':\n const result = await this.dialogService.confirm('Remove Chat', 'Are you sure you want to remove this chat?');\n if (result) {\n await this.chatService.deleteRoom(this.selectedRoom()?.id);\n this.router.navigate(['./'], { relativeTo: this.activatedRoute });\n }\n break;\n }\n }\n onBackButtonClick() {\n this.selectedRoom.set(null);\n this.typingStatus.update((value) => {\n const { [this.selectedRoom()?.id]: _, ...rest } = value;\n return rest;\n });\n this.router.navigate(['./'], { relativeTo: this.activatedRoute });\n }\n onKeydownHandler(event) {\n if (this.selectedRoom()) {\n this.onBackButtonClick();\n }\n }\n // Methods\n async loadChats() {\n try {\n // Use the updated service method to get rooms with last messages\n const response = await this.chatService.listRooms();\n // Sort rooms by last message createdAt timestamp in descending order\n const sortedRooms = response.items.sort((a, b) => {\n const dateA = a.lastMessage?.createdAt || a.createdAt || 0;\n const dateB = b.lastMessage?.createdAt || b.createdAt || 0;\n return new Date(dateB).getTime() - new Date(dateA).getTime();\n });\n this.allRooms.set(sortedRooms);\n this.rooms.set(sortedRooms);\n }\n catch (error) {\n this.error.set('Failed to load chats. Please try again.');\n console.error('Error loading chats:', error);\n }\n }\n async refreshChat() {\n await this.loadChats();\n }\n async openChat(chatId) {\n try {\n this.typingStatus.update((value) => {\n const { [chatId]: _, ...rest } = value;\n return rest;\n });\n // Use the service method to mark chat as read\n await this.chatService.markRoomSeen(chatId);\n // Update local state without making another network request\n const currentRooms = this.allRooms();\n const updatedRooms = currentRooms.map((room) => {\n if (room.id === chatId) {\n // Reset unread count for the selected room\n return { ...room, unreadCount: 0 };\n }\n return room;\n });\n // Update the rooms signals\n this.allRooms.set(updatedRooms);\n this.rooms.set(updatedRooms);\n // Find the selected room\n const selectedRoom = updatedRooms.find((room) => room.id === chatId) || null;\n this.selectedRoom.set(selectedRoom);\n // Navigate to the chat details\n this.router.navigate([chatId], { relativeTo: this.activatedRoute });\n }\n catch (error) {\n console.error('Failed to mark chat as read:', error);\n }\n }\n searchChat(query) {\n this.searchQuery.set(query);\n this.isSearching.set(!!query);\n }\n // Header methods\n onSearch(query) {\n this.searchChat(query);\n }\n clearSearch() {\n this.searchQuery.set('');\n this.isSearching.set(false);\n }\n // Footer methods\n async onNewConversation() {\n const popupConfig = {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n closeButton: true,\n closeOnBackdropClick: false,\n };\n const popup = await this.popupService.open(AXMUserLookupPopup, popupConfig);\n const members = popup.data?.lookup;\n try {\n if (members) {\n const res = await this.chatService.createRoom(members, popup.data?.title);\n await this.refreshChat();\n this.router.navigate([res.id], { relativeTo: this.activatedRoute });\n }\n }\n catch (error) {\n this.toastService.danger('Failed to create room');\n }\n }\n ngOnDestroy() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMChatComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: AXMChatComponent, isStandalone: true, selector: \"axm-chat\", host: { listeners: { \"document:keydown.escape\": \"onKeydownHandler($event)\" } }, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMChatComponent,\n },\n AXUnsubscriber,\n ], viewQueries: [{ propertyName: \"tab\", first: true, predicate: [\"tab\"], descendants: true, isSignal: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout #container>\\n <axp-layout-start-side class=\\\"ax-border-e ax-lightest-surface ax-h-full\\\">\\n <axp-layout-header>\\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </axp-layout-toolbar>\\n </axp-layout-header>\\n <axp-layout-content class=\\\"ax-flex ax-flex-col ax-min-h-0 ax-max-w-80\\\">\\n @if (!layoutService.isMobileDevice()) {\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-layout-content>\\n </axp-layout-start-side>\\n\\n <axp-page-content style=\\\"height: calc(100vh - 22rem)\\\">\\n @if (selectedRoom()) {\\n <router-outlet></router-outlet>\\n } @else if (layoutService.isMobileDevice()) {\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<ng-template #template>\\n <!-- Tabs -->\\n <div class=\\\"ax-px-4\\\">\\n @if (hasUnread()) {\\n <ax-tabs\\n #tab\\n class=\\\"ax-text-neutral-400\\\"\\n [look]=\\\"'with-line'\\\"\\n [location]=\\\"'bottom'\\\"\\n [fitParent]=\\\"true\\\"\\n (onActiveTabChanged)=\\\"onTabChange($event)\\\"\\n >\\n <ax-tab-item text=\\\"All\\\" [active]=\\\"activeTab() === 0\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"totalCount().toString()\\\"\\n [color]=\\\"activeTab() === 0 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n <ax-tab-item text=\\\"Unread\\\" [active]=\\\"activeTab() === 1\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"unreadCount().toString()\\\"\\n [color]=\\\"activeTab() === 1 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n </ax-tabs>\\n }\\n </div>\\n\\n <!-- Chat List Content -->\\n <div\\n class=\\\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between ax-min-w-80\\\"\\n [class.ax-border-t]=\\\"hasUnread()\\\"\\n >\\n <!-- Loading State -->\\n @if (isLoading()) {\\n <div class=\\\"ax-p-4 ax-space-y-4\\\">\\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\\n <div class=\\\"ax-flex ax-items-center ax-space-x-3\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-12 ax-h-12 ax-rounded-full\\\"></ax-skeleton>\\n <div class=\\\"ax-flex-1 ax-space-y-2\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-3/4 ax-h-4 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-1/2 ax-h-3 ax-rounded-md\\\"></ax-skeleton>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Error State -->\\n @if (error()) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\\\">\\n <ax-icon class=\\\"ax-text-danger ax-text-5xl ax-mb-3\\\">\\n <i class=\\\"fa-light fa-circle-exclamation\\\"></i>\\n </ax-icon>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-text-secondary ax-mb-4\\\">{{ error() }}</p>\\n <ax-button\\n [text]=\\\"'try-again' | translate: { scope: 'conversation' } | async\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"refreshChat()\\\"\\n ></ax-button>\\n </div>\\n }\\n\\n <!-- Chat List -->\\n @if (!isLoading() && !error()) {\\n <div class=\\\"ax-flex-1 ax-overflow-y-auto\\\">\\n @for (i of filteredRooms(); track i.id) {\\n <axm-chat-item\\n [data]=\\\"i\\\"\\n [typing]=\\\"$any(typingStatus()[i.id])\\\"\\n [lastMessageReaction]=\\\"i.lastMessage?.reactions?.[0]?.type ?? null\\\"\\n [attr.data-id]=\\\"i.id\\\"\\n (click)=\\\"openChat(i.id)\\\"\\n [class.ax-bg-dark]=\\\"selectedRoom()?.id === i.id\\\"\\n class=\\\"ax-transition-all ax-duration-100 hover:ax-bg-surface\\\"\\n [@fadeIn]\\n tabindex=\\\"0\\\"\\n (keydown.enter)=\\\"openChat(i.id)\\\"\\n role=\\\"button\\\"\\n ></axm-chat-item>\\n }\\n\\n <!-- Empty State -->\\n @empty {\\n <div class=\\\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\\\">\\n @if (isSearching()) {\\n No chats found matching your search\\n } @else {\\n No chats available\\n }\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Footer Content -->\\n <div class=\\\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\\\">\\n <ax-button class=\\\"ax-w-full\\\" color=\\\"primary\\\" text=\\\"New Conversation\\\" (onClick)=\\\"onNewConversation()\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-plus\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: AXMChatItemComponent, selector: \"axm-chat-item\", inputs: [\"data\", \"typing\", \"lastMessageReaction\"], outputs: [\"pressChatItem\"] }, { kind: \"ngmodule\", type: \n // Common Modules\n CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i2.RouterOutlet, selector: \"router-outlet\", inputs: [\"name\", \"routerOutletData\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }, { kind: \"ngmodule\", type: \n // Acorex Core Modules\n AXFormatModule }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"ngmodule\", type: AXCommentModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }, { kind: \"ngmodule\", type: \n // Acorex Component Modules\n // AXResizableDirective,\n AXImageModule }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i4.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i6.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"component\", type: i7.AXTabsComponent, selector: \"ax-tabs\", inputs: [\"look\", \"location\", \"fitParent\", \"minWidth\", \"content\"], outputs: [\"onActiveTabChanged\"] }, { kind: \"component\", type: i7.AXTabItemComponent, selector: \"ax-tab-item\", inputs: [\"disabled\", \"text\", \"key\", \"headerTemplate\", \"active\"], outputs: [\"disabledChange\", \"onClick\", \"onBlur\", \"onFocus\", \"activeChange\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i8.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXWysiwygModule }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"ngmodule\", type: AXSelectBoxModule }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXToolBarModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i9.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPThemeLayoutStartSideComponent, selector: \"axp-layout-page-start-side, axp-layout-start-side\" }, { kind: \"component\", type: AXPThemeLayoutHeaderComponent, selector: \"axp-layout-header\" }, { kind: \"component\", type: AXPThemeLayoutToolbarComponent, selector: \"axp-layout-toolbar\" }], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n ]),\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMChatComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMChatComponent,\n },\n AXUnsubscriber,\n ], imports: [\n AXMChatItemComponent,\n // Common Modules\n CommonModule,\n FormsModule,\n RouterModule,\n // Acorex Core Modules\n AXFormatModule,\n AXConversationModule,\n AXCommentModule,\n AXTranslationModule,\n // Acorex Component Modules\n // AXResizableDirective,\n AXImageModule,\n AXAvatarModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTextBoxModule,\n AXSearchBoxModule,\n AXTabsModule,\n AXButtonModule,\n AXLoadingModule,\n AXWysiwygModule,\n AXLabelModule,\n AXSelectBoxModule,\n AXFormModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXToolBarModule,\n AXSkeletonModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutToolbarComponent,\n ], animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n ]),\n ], template: \"<axp-page-layout #container>\\n <axp-layout-start-side class=\\\"ax-border-e ax-lightest-surface ax-h-full\\\">\\n <axp-layout-header>\\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </axp-layout-toolbar>\\n </axp-layout-header>\\n <axp-layout-content class=\\\"ax-flex ax-flex-col ax-min-h-0 ax-max-w-80\\\">\\n @if (!layoutService.isMobileDevice()) {\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-layout-content>\\n </axp-layout-start-side>\\n\\n <axp-page-content style=\\\"height: calc(100vh - 22rem)\\\">\\n @if (selectedRoom()) {\\n <router-outlet></router-outlet>\\n } @else if (layoutService.isMobileDevice()) {\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<ng-template #template>\\n <!-- Tabs -->\\n <div class=\\\"ax-px-4\\\">\\n @if (hasUnread()) {\\n <ax-tabs\\n #tab\\n class=\\\"ax-text-neutral-400\\\"\\n [look]=\\\"'with-line'\\\"\\n [location]=\\\"'bottom'\\\"\\n [fitParent]=\\\"true\\\"\\n (onActiveTabChanged)=\\\"onTabChange($event)\\\"\\n >\\n <ax-tab-item text=\\\"All\\\" [active]=\\\"activeTab() === 0\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"totalCount().toString()\\\"\\n [color]=\\\"activeTab() === 0 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n <ax-tab-item text=\\\"Unread\\\" [active]=\\\"activeTab() === 1\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"unreadCount().toString()\\\"\\n [color]=\\\"activeTab() === 1 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n </ax-tabs>\\n }\\n </div>\\n\\n <!-- Chat List Content -->\\n <div\\n class=\\\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between ax-min-w-80\\\"\\n [class.ax-border-t]=\\\"hasUnread()\\\"\\n >\\n <!-- Loading State -->\\n @if (isLoading()) {\\n <div class=\\\"ax-p-4 ax-space-y-4\\\">\\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\\n <div class=\\\"ax-flex ax-items-center ax-space-x-3\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-12 ax-h-12 ax-rounded-full\\\"></ax-skeleton>\\n <div class=\\\"ax-flex-1 ax-space-y-2\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-3/4 ax-h-4 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-1/2 ax-h-3 ax-rounded-md\\\"></ax-skeleton>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Error State -->\\n @if (error()) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\\\">\\n <ax-icon class=\\\"ax-text-danger ax-text-5xl ax-mb-3\\\">\\n <i class=\\\"fa-light fa-circle-exclamation\\\"></i>\\n </ax-icon>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-text-secondary ax-mb-4\\\">{{ error() }}</p>\\n <ax-button\\n [text]=\\\"'try-again' | translate: { scope: 'conversation' } | async\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"refreshChat()\\\"\\n ></ax-button>\\n </div>\\n }\\n\\n <!-- Chat List -->\\n @if (!isLoading() && !error()) {\\n <div class=\\\"ax-flex-1 ax-overflow-y-auto\\\">\\n @for (i of filteredRooms(); track i.id) {\\n <axm-chat-item\\n [data]=\\\"i\\\"\\n [typing]=\\\"$any(typingStatus()[i.id])\\\"\\n [lastMessageReaction]=\\\"i.lastMessage?.reactions?.[0]?.type ?? null\\\"\\n [attr.data-id]=\\\"i.id\\\"\\n (click)=\\\"openChat(i.id)\\\"\\n [class.ax-bg-dark]=\\\"selectedRoom()?.id === i.id\\\"\\n class=\\\"ax-transition-all ax-duration-100 hover:ax-bg-surface\\\"\\n [@fadeIn]\\n tabindex=\\\"0\\\"\\n (keydown.enter)=\\\"openChat(i.id)\\\"\\n role=\\\"button\\\"\\n ></axm-chat-item>\\n }\\n\\n <!-- Empty State -->\\n @empty {\\n <div class=\\\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\\\">\\n @if (isSearching()) {\\n No chats found matching your search\\n } @else {\\n No chats available\\n }\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Footer Content -->\\n <div class=\\\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\\\">\\n <ax-button class=\\\"ax-w-full\\\" color=\\\"primary\\\" text=\\\"New Conversation\\\" (onClick)=\\\"onNewConversation()\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-plus\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n</ng-template>\\n\" }]\n }], propDecorators: { onKeydownHandler: [{\n type: HostListener,\n args: ['document:keydown.escape', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jaGF0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NoYXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFpQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVB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TyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDcEQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7NkJBQzdFLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDs4QkFnVUQsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEF2YXRhck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDb21tZW50TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29udmVyc2F0aW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvaW1hZ2UnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcHVwQ29uZmlnLCBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFNlYXJjaEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWFyY2gtYm94JztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFRhYnNDb21wb25lbnQsIEFYVGFic01vZHVsZSwgQVhUYWJTdHJpcENoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWFRvb2xCYXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBBWFd5c2l3eWdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvd3lzaXd5Zyc7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBWFBBY3Rpb25NZW51SXRlbSwgQVhQQmFja0J1dHRvbiwgQVhQRXhlY3V0ZUNvbW1hbmQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRIZWFkZXJDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0U3RhcnRTaWRlQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dFRvb2xiYXJDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQUGFnZUxheW91dEJhc2UsIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50LCBBWFBQYWdlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvdmlld3MnO1xuaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTVVzZXJMb29rdXBQb3B1cCB9IGZyb20gJy4uL2NvbW1lbnQnO1xuaW1wb3J0IHsgQVhNQ2hhdFNlcnZpY2UgfSBmcm9tICcuL2NoYXQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1DaGF0TWVzc2FnZSwgQVhNQ2hhdFJvb20gfSBmcm9tICcuL2NoYXQudHlwZSc7XG5pbXBvcnQgeyBBWE1DaGF0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGF0LWl0ZW0vY2hhdC1pdGVtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1jaGF0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGF0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWE1DaGF0Q29tcG9uZW50LFxuICAgIH0sXG4gICAgQVhVbnN1YnNjcmliZXIsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBBWE1DaGF0SXRlbUNvbXBvbmVudCxcbiAgICAvLyBDb21tb24gTW9kdWxlc1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgLy8gQWNvcmV4IENvcmUgTW9kdWxlc1xuICAgIEFYRm9ybWF0TW9kdWxlLFxuICAgIEFYQ29udmVyc2F0aW9uTW9kdWxlLFxuICAgIEFYQ29tbWVudE1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIC8vIEFjb3JleCBDb21wb25lbnQgTW9kdWxlc1xuICAgIC8vIEFYUmVzaXphYmxlRGlyZWN0aXZlLFxuICAgIEFYSW1hZ2VNb2R1bGUsXG4gICAgQVhBdmF0YXJNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgQVhTZWFyY2hCb3hNb2R1bGUsXG4gICAgQVhUYWJzTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFd5c2l3eWdNb2R1bGUsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWFNlbGVjdEJveE1vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYVG9vbEJhck1vZHVsZSxcbiAgICBBWFNrZWxldG9uTW9kdWxlLFxuICAgIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dFN0YXJ0U2lkZUNvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dEhlYWRlckNvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dFRvb2xiYXJDb21wb25lbnQsXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlSW4nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMHB4KScgfSksXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ2hhdENvbXBvbmVudCBleHRlbmRzIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBjaGF0U2VydmljZSA9IGluamVjdChBWE1DaGF0U2VydmljZSk7XG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFYRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmUgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gIC8vIFZpZXcgQ2hpbGRyZW5cbiAgdGFiID0gdmlld0NoaWxkPEFYVGFic0NvbXBvbmVudD4oJ3RhYicpO1xuICBjb250YWluZXIgPSB2aWV3Q2hpbGQ8QVhQUGFnZUxheW91dENvbXBvbmVudD4oJ2NvbnRhaW5lcicpO1xuXG4gIC8vIFN0YXRlIHNpZ25hbHNcbiAgcm9vbXMgPSBzaWduYWw8QVhNQ2hhdFJvb21bXT4oW10pO1xuICBhbGxSb29tcyA9IHNpZ25hbDxBWE1DaGF0Um9vbVtdPihbXSk7XG4gIHNlbGVjdGVkUm9vbSA9IHNpZ25hbDxBWE1DaGF0Um9vbSB8IG51bGw+KG51bGwpO1xuICBpc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICB0eXBpbmdTdGF0dXMgPSBzaWduYWw8eyBba2V5OiBzdHJpbmddOiB7IHVzZXI6IHN0cmluZzsgaXNUeXBpbmc/OiBib29sZWFuIH0gfT4oe30pO1xuXG4gIGVycm9yID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBhY3RpdmVUYWIgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgaXNTZWFyY2hpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBzZWFyY2hRdWVyeSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgc2hvd1NlYXJjaCA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgcGxhY2Vob2xkZXIgPSBzaWduYWw8c3RyaW5nPignU2VhcmNoIGNoYXRzLi4uJyk7XG5cbiAgLy8gQ29tcHV0ZWQgc2lnbmFsc1xuICAvLyBmaWx0ZXJlZFJvb21zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAvLyAgIGxldCBjaGF0Um9vbXMgPSB0aGlzLnJvb21zKCk7XG5cbiAgLy8gICAvLyBBcHBseSBzZWFyY2ggZmlsdGVyXG4gIC8vICAgaWYgKHRoaXMuc2VhcmNoUXVlcnkoKSkge1xuICAvLyAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IHRoaXMuc2VhcmNoUXVlcnkoKS50b0xvd2VyQ2FzZSgpO1xuICAvLyAgICAgY2hhdFJvb21zID0gY2hhdFJvb21zLmZpbHRlcihhc3luYyAocm9vbSkgPT4ge1xuICAvLyAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5nZXRPbmUocm9vbS5tZW1iZXJzPy5bMF0/LmlkKTtcbiAgLy8gICAgICAgY29uc3Qgcm9vbU5hbWUgPSBgJHt1c2VyLmZpcnN0TmFtZX0gJHt1c2VyLmxhc3ROYW1lfWAgfHwgJyc7XG4gIC8vICAgICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gcm9vbS5sYXN0TWVzc2FnZT8ubWVzc2FnZT8uY29udGVudCB8fCAnJztcbiAgLy8gICAgICAgcmV0dXJuIHJvb21OYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dCkgfHwgbGFzdE1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0KTtcbiAgLy8gICAgIH0pO1xuICAvLyAgIH1cblxuICAvLyAgIC8vIEFwcGx5IHRhYiBmaWx0ZXJcbiAgLy8gICBpZiAodGhpcy5hY3RpdmVUYWIoKSA9PT0gMSkge1xuICAvLyAgICAgcmV0dXJuIGNoYXRSb29tcy5maWx0ZXIoKHJvb20pID0+IHJvb20udW5yZWFkQ291bnQgPiAwKTtcbiAgLy8gICB9XG5cbiAgLy8gICByZXR1cm4gY2hhdFJvb21zO1xuICAvLyB9KTtcblxuICBmaWx0ZXJlZFJvb21zID0gc2lnbmFsPEFYTUNoYXRSb29tW10+KFtdKTtcblxuICBzZWFyY2hFZmZlY3QgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjaGF0Um9vbXMgPSB0aGlzLmFsbFJvb21zKCk7XG5cbiAgICAvLyBTZWFyY2ggZmlsdGVyXG4gICAgY29uc3QgcXVlcnkgPSAodGhpcy5zZWFyY2hRdWVyeSgpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgLy8gUGVyZm9ybSBhc3luYyBlbnJpY2htZW50IGZvciBuYW1lc1xuICAgICAgY29uc3QgZmlsdGVyZWQgPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgcm9vbSBvZiBjaGF0Um9vbXMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgcm9vbU5hbWUgPSAnJztcbiAgICAgICAgICAvLyBIYW5kbGUgZ3JvdXAgY2hhdHMgdnMuIHNpbmdsZS11c2VyIGNoYXRzXG4gICAgICAgICAgaWYgKHJvb20ubWVtYmVycyAmJiByb29tLm1lbWJlcnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgcm9vbU5hbWUgPSByb29tLnRpdGxlIHx8ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAocm9vbS5tZW1iZXJzICYmIHJvb20ubWVtYmVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lbWJlciA9IHJvb20ubWVtYmVyc1swXTtcbiAgICAgICAgICAgIGlmIChtZW1iZXIpIHtcbiAgICAgICAgICAgICAgcm9vbU5hbWUgPSBtZW1iZXIuZnVsbE5hbWUgfHwgJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbGFzdE1lc3NhZ2UgPSByb29tLmxhc3RNZXNzYWdlPy5tZXNzYWdlPy5jb250ZW50IHx8ICcnO1xuICAgICAgICAgIGlmIChyb29tTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSB8fCBsYXN0TWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSkge1xuICAgICAgICAgICAgZmlsdGVyZWQucHVzaChyb29tKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHByb2Nlc3Mgc2VhcmNoIGZvciByb29tICR7cm9vbS5pZH1gLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNoYXRSb29tcyA9IGZpbHRlcmVkO1xuICAgIH1cblxuICAgIC8vIFRhYiBmaWx0ZXJcbiAgICBpZiAodGhpcy5hY3RpdmVUYWIoKSA9PT0gMSkge1xuICAgICAgY2hhdFJvb21zID0gY2hhdFJvb21zLmZpbHRlcigocm9vbSkgPT4gcm9vbS51bnJlYWRDb3VudCA+IDApO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRSb29tcy5zZXQoY2hhdFJvb21zKTtcbiAgfSk7XG5cbiAgdW5yZWFkQ291bnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFsbFJvb21zKCkuZmlsdGVyKChpKSA9PiBpLnVucmVhZENvdW50ID4gMCkubGVuZ3RoKTtcbiAgYWxsQ291bnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFsbFJvb21zKCkubGVuZ3RoKTtcbiAgaGFzVW5yZWFkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hbGxSb29tcygpLmZpbHRlcigoaSkgPT4gaS51bnJlYWRDb3VudCA+IDApLmxlbmd0aCA+IDApO1xuICB0b3RhbENvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hbGxSb29tcygpLmxlbmd0aCB8fCAwKTtcblxuICAvL3N3aXRjaCB0YWIgdG8gdW5yZWFkIGlmIHRoZXJlIGlzIG5vIHVucmVhZFxuICBwcml2YXRlIGF1dG9Td2l0Y2hUYWIgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLmFjdGl2ZVRhYigpID09PSAxICYmICF0aGlzLmhhc1VucmVhZCgpKSB7XG4gICAgICB0aGlzLmFjdGl2ZVRhYi5zZXQoMCk7XG4gICAgfVxuICB9KTtcblxuICBhZiA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgY29uc3QgdGFiQ29tcG9uZW50ID0gdGhpcy50YWIoKTtcbiAgICBpZiAodGFiQ29tcG9uZW50KSB7XG4gICAgICB0YWJDb21wb25lbnQub25BY3RpdmVUYWJDaGFuZ2VkLnN1YnNjcmliZSgoaSkgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZVRhYi5zZXQoaS5pbmRleCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8od2luZG93IGFzIGFueSkuYSA9IHRoaXMuY29udGFpbmVyKCk/LnN0YXJ0U2lkZURyYXdlcigpO1xuICB9KTtcblxuICBvblRhYkNoYW5nZShldmVudDogQVhUYWJTdHJpcENoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuYWN0aXZlVGFiLnNldChldmVudC5pbmRleCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRDaGF0cygpO1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgLy9cbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLnRha2VVbnRpbERlc3Ryb3ksXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRGcm9tUm91dGUoKTtcbiAgICAgIH0pO1xuICAgIC8vXG5cbiAgICB0aGlzLmNoYXRTZXJ2aWNlLnJvb21SZW1vdmVkJC5waXBlKHRoaXMudW5zdWJzY3JpYmUudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChyb29tSWQpID0+IHtcbiAgICAgIHRoaXMuYWxsUm9vbXMudXBkYXRlKChyb29tcykgPT4gcm9vbXMuZmlsdGVyKChyKSA9PiByLmlkICE9PSByb29tSWQpKTtcbiAgICAgIGlmIChyb29tSWQgPT09IHRoaXMuc2VsZWN0ZWRSb29tKCk/LmlkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb29tLnNldChudWxsKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYXRTZXJ2aWNlLnJvb21TZWVuJC5waXBlKHRoaXMudW5zdWJzY3JpYmUudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChyb29tSWQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFJvb21zID0gdGhpcy5hbGxSb29tcygpO1xuICAgICAgY29uc3QgdXBkYXRlZFJvb21zID0gY3VycmVudFJvb21zLm1hcCgocm9vbSkgPT4ge1xuICAgICAgICBpZiAocm9vbS5pZCA9PT0gcm9vbUlkKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ucm9vbSwgdW5yZWFkQ291bnQ6IDAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm9vbTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hbGxSb29tcy5zZXQodXBkYXRlZFJvb21zKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2hhdFNlcnZpY2UubWVzc2FnZVNlZW4kLnBpcGUodGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKG1lc3NhZ2U6IEFYTUNoYXRNZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50Um9vbXMgPSB0aGlzLmFsbFJvb21zKCk7XG4gICAgICBjb25zdCB1cGRhdGVkUm9vbXMgPSBjdXJyZW50Um9vbXMubWFwKChyb29tKSA9PiB7XG4gICAgICAgIGlmIChyb29tLmlkID09PSBtZXNzYWdlLnJvb21JZCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLnJvb20sIHVucmVhZENvdW50OiByb29tLnVucmVhZENvdW50IC0gMSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb29tO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFsbFJvb21zLnNldCh1cGRhdGVkUm9vbXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jaGF0U2VydmljZS50eXBpbmdTdGF0dXMkLnBpcGUodGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoYXN5bmMgKHN0YXR1cykgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFVzZXJJZCA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcj8uaWQ7XG4gICAgICBpZiAoc3RhdHVzLnVzZXIuaWQgIT09IGN1cnJlbnRVc2VySWQpIHtcbiAgICAgICAgaWYgKHN0YXR1cy5pc1R5cGluZykge1xuICAgICAgICAgIHRoaXMudHlwaW5nU3RhdHVzLnVwZGF0ZSgodmFsdWUpID0+ICh7XG4gICAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICAgIFtzdGF0dXMucm9vbUlkXTogeyB1c2VyOiBzdGF0dXMudXNlci5mdWxsTmFtZSB8fCAnJywgaXNUeXBpbmc6IHRydWUgfSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50eXBpbmdTdGF0dXMudXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBbc3RhdHVzLnJvb21JZF06IF8sIC4uLnJlc3QgfSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhdFNlcnZpY2UubWVzc2FnZVNlbnQkLnBpcGUodGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgIGNvbnN0IHJvb21zID0gdGhpcy5hbGxSb29tcygpO1xuICAgICAgY29uc3Qgcm9vbUluZGV4ID0gcm9vbXMuZmluZEluZGV4KChyKSA9PiByLmlkID09PSBtZXNzYWdlLnJvb21JZCk7XG5cbiAgICAgIGlmIChyb29tSW5kZXggPiAtMSkge1xuICAgICAgICBjb25zdCByb29tVG9VcGRhdGUgPSByb29tc1tyb29tSW5kZXhdO1xuICAgICAgICBjb25zdCB1cGRhdGVkUm9vbSA9IHtcbiAgICAgICAgICAuLi5yb29tVG9VcGRhdGUsXG4gICAgICAgICAgbGFzdE1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgdW5yZWFkQ291bnQ6XG4gICAgICAgICAgICBtZXNzYWdlLmF1dGhvci5pZCAhPT0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZFxuICAgICAgICAgICAgICA/IChyb29tVG9VcGRhdGUudW5yZWFkQ291bnQgfHwgMCkgKyAxXG4gICAgICAgICAgICAgIDogcm9vbVRvVXBkYXRlLnVucmVhZENvdW50LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdSb29tcyA9IFt1cGRhdGVkUm9vbSwgLi4ucm9vbXMuZmlsdGVyKChyKSA9PiByLmlkICE9PSBtZXNzYWdlLnJvb21JZCldO1xuICAgICAgICB0aGlzLmFsbFJvb21zLnNldChuZXdSb29tcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOZXcgcm9vbSwgZmV0Y2ggaXQgYW5kIGFkZCBpdCB0byB0aGUgdG9wLlxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldFJvb20obWVzc2FnZS5yb29tSWQpLnRoZW4oKG5ld1Jvb20pID0+IHtcbiAgICAgICAgICB0aGlzLmFsbFJvb21zLnVwZGF0ZSgoY3VycmVudFJvb21zKSA9PiB7XG4gICAgICAgICAgICAvLyBQcmVwZW5kaW5nIHRoZSBuZXcgcm9vbVxuICAgICAgICAgICAgcmV0dXJuIFtuZXdSb29tLCAuLi5jdXJyZW50Um9vbXNdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhdFNlcnZpY2UubWVzc2FnZVJlYWN0ZWQkLnBpcGUodGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgIHRoaXMuYWxsUm9vbXMudXBkYXRlKChyb29tcykgPT4ge1xuICAgICAgICByZXR1cm4gcm9vbXMubWFwKChyb29tKSA9PiB7XG4gICAgICAgICAgaWYgKHJvb20ubGFzdE1lc3NhZ2U/LmlkID09PSBtZXNzYWdlLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5yb29tLFxuICAgICAgICAgICAgICBsYXN0TWVzc2FnZToge1xuICAgICAgICAgICAgICAgIC4uLnJvb20ubGFzdE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgcmVhY3Rpb25zOiBtZXNzYWdlLnJlYWN0aW9ucyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByb29tO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRnJvbVJvdXRlKCkge1xuICAgIGNvbnN0IGNoYXRJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZmlyc3RDaGlsZD8ucGFyYW1NYXAuZ2V0KCdpZCcpO1xuICAgIGlmIChjaGF0SWQpIHtcbiAgICAgIHRoaXMub3BlbkNoYXQoY2hhdElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvb20uc2V0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhZ2UgSW50ZXJmYWNlIEltcGxlbWVudGF0aW9uXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJvb20gPSB0aGlzLnNlbGVjdGVkUm9vbSgpO1xuXG4gICAgaWYgKCFyb29tICYmIHRoaXMubGF5b3V0U2VydmljZS5pc01vYmlsZURldmljZSgpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdwbHVyYWwtdGl0bGUnLCB7IHNjb3BlOiAnY29udmVyc2F0aW9uJyB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXJvb20pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB7IG1lbWJlcnMsIHRpdGxlLCBpZCB9ID0gcm9vbTtcblxuICAgIGlmIChtZW1iZXJzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB0aXRsZSB8fCAnR3JvdXAgQ2hhdCc7XG4gICAgfVxuXG4gICAgY29uc3QgbWVtYmVyID0gbWVtYmVyc1swXTtcbiAgICBpZiAoIW1lbWJlcikge1xuICAgICAgcmV0dXJuICdVbmtub3duIFVzZXInO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1iZXIuZnVsbE5hbWUgfHwgJ1Vua25vd24gVXNlcic7XG4gIH1cblxuICBvdmVycmlkZSBnZXRQYWdlRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBpbmcgPSB0aGlzLnR5cGluZ1N0YXR1cygpO1xuICAgIGNvbnN0IHNlbGVjdGVkUm9vbUlkID0gdGhpcy5zZWxlY3RlZFJvb20oKT8uaWQ7XG4gICAgaWYgKHNlbGVjdGVkUm9vbUlkICYmIHR5cGluZ1tzZWxlY3RlZFJvb21JZF0/LmlzVHlwaW5nKSB7XG4gICAgICByZXR1cm4gYCR7dHlwaW5nW3NlbGVjdGVkUm9vbUlkXS51c2VyfSBpcyB0eXBpbmcuLi5gO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb20gPSB0aGlzLnNlbGVjdGVkUm9vbSgpO1xuICAgIHJldHVybiByb29tPy50b3BpYyB8fCAnJztcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldEJhY2tCdXR0b24oKTogUHJvbWlzZTxBWFBCYWNrQnV0dG9uIHwgbnVsbD4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUm9vbSgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdiYWNrLXRvLWNoYXQtbGlzdCcsIHsgc2NvcGU6ICdjb252ZXJzYXRpb24nIH0pLFxuICAgICAgfTtcbiAgICB9IGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRTZWNvbmRhcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5pc01vYmlsZURldmljZSgpXG4gICAgICA/IFtdXG4gICAgICA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdyZW1vdmUtY2hhdCcsIHsgc2NvcGU6ICdjb252ZXJzYXRpb24nIH0pLFxuICAgICAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXRyYXNoLWNhbicsXG4gICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgICAgIG5hbWU6ICdyZW1vdmUtY2hhdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBleGVjdXRlKGNvbW1hbmQ6IEFYUEV4ZWN1dGVDb21tYW5kKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoIChjb21tYW5kLm5hbWUpIHtcbiAgICAgIGNhc2UgJ3JlbW92ZS1jaGF0JzpcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ1JlbW92ZSBDaGF0JywgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBjaGF0PycpO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jaGF0U2VydmljZS5kZWxldGVSb29tKHRoaXMuc2VsZWN0ZWRSb29tKCk/LmlkISk7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgb25CYWNrQnV0dG9uQ2xpY2soKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2VsZWN0ZWRSb29tLnNldChudWxsKTtcbiAgICB0aGlzLnR5cGluZ1N0YXR1cy51cGRhdGUoKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCB7IFt0aGlzLnNlbGVjdGVkUm9vbSgpPy5pZCFdOiBfLCAuLi5yZXN0IH0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiByZXN0O1xuICAgIH0pO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb29tKCkpIHtcbiAgICAgIHRoaXMub25CYWNrQnV0dG9uQ2xpY2soKTtcbiAgICB9XG4gIH1cblxuICAvLyBNZXRob2RzXG4gIGFzeW5jIGxvYWRDaGF0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8gVXNlIHRoZSB1cGRhdGVkIHNlcnZpY2UgbWV0aG9kIHRvIGdldCByb29tcyB3aXRoIGxhc3QgbWVzc2FnZXNcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jaGF0U2VydmljZS5saXN0Um9vbXMoKTtcbiAgICAgIC8vIFNvcnQgcm9vbXMgYnkgbGFzdCBtZXNzYWdlIGNyZWF0ZWRBdCB0aW1lc3RhbXAgaW4gZGVzY2VuZGluZyBvcmRlclxuICAgICAgY29uc3Qgc29ydGVkUm9vbXMgPSByZXNwb25zZS5pdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGVBID0gYS5sYXN0TWVzc2FnZT8uY3JlYXRlZEF0IHx8IGEuY3JlYXRlZEF0IHx8IDA7XG4gICAgICAgIGNvbnN0IGRhdGVCID0gYi5sYXN0TWVzc2FnZT8uY3JlYXRlZEF0IHx8IGIuY3JlYXRlZEF0IHx8IDA7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlQikuZ2V0VGltZSgpIC0gbmV3IERhdGUoZGF0ZUEpLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hbGxSb29tcy5zZXQoc29ydGVkUm9vbXMpO1xuICAgICAgdGhpcy5yb29tcy5zZXQoc29ydGVkUm9vbXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yLnNldCgnRmFpbGVkIHRvIGxvYWQgY2hhdHMuIFBsZWFzZSB0cnkgYWdhaW4uJyk7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGNoYXRzOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWZyZXNoQ2hhdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvYWRDaGF0cygpO1xuICB9XG5cbiAgYXN5bmMgb3BlbkNoYXQoY2hhdElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy50eXBpbmdTdGF0dXMudXBkYXRlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB7IFtjaGF0SWRdOiBfLCAuLi5yZXN0IH0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgICB9KTtcbiAgICAgIC8vIFVzZSB0aGUgc2VydmljZSBtZXRob2QgdG8gbWFyayBjaGF0IGFzIHJlYWRcbiAgICAgIGF3YWl0IHRoaXMuY2hhdFNlcnZpY2UubWFya1Jvb21TZWVuKGNoYXRJZCk7XG5cbiAgICAgIC8vIFVwZGF0ZSBsb2NhbCBzdGF0ZSB3aXRob3V0IG1ha2luZyBhbm90aGVyIG5ldHdvcmsgcmVxdWVzdFxuICAgICAgY29uc3QgY3VycmVudFJvb21zID0gdGhpcy5hbGxSb29tcygpO1xuICAgICAgY29uc3QgdXBkYXRlZFJvb21zID0gY3VycmVudFJvb21zLm1hcCgocm9vbSkgPT4ge1xuICAgICAgICBpZiAocm9vbS5pZCA9PT0gY2hhdElkKSB7XG4gICAgICAgICAgLy8gUmVzZXQgdW5yZWFkIGNvdW50IGZvciB0aGUgc2VsZWN0ZWQgcm9vbVxuICAgICAgICAgIHJldHVybiB7IC4uLnJvb20sIHVucmVhZENvdW50OiAwIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvb207XG4gICAgICB9KTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSByb29tcyBzaWduYWxzXG4gICAgICB0aGlzLmFsbFJvb21zLnNldCh1cGRhdGVkUm9vbXMpO1xuICAgICAgdGhpcy5yb29tcy5zZXQodXBkYXRlZFJvb21zKTtcblxuICAgICAgLy8gRmluZCB0aGUgc2VsZWN0ZWQgcm9vbVxuICAgICAgY29uc3Qgc2VsZWN0ZWRSb29tID0gdXBkYXRlZFJvb21zLmZpbmQoKHJvb20pID0+IHJvb20uaWQgPT09IGNoYXRJZCkgfHwgbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb29tLnNldChzZWxlY3RlZFJvb20pO1xuXG4gICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgY2hhdCBkZXRhaWxzXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbY2hhdElkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbWFyayBjaGF0IGFzIHJlYWQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaENoYXQocXVlcnk6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KHF1ZXJ5KTtcbiAgICB0aGlzLmlzU2VhcmNoaW5nLnNldCghIXF1ZXJ5KTtcbiAgfVxuXG4gIC8vIEhlYWRlciBtZXRob2RzXG4gIG9uU2VhcmNoKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaENoYXQocXVlcnkpO1xuICB9XG5cbiAgY2xlYXJTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hRdWVyeS5zZXQoJycpO1xuICAgIHRoaXMuaXNTZWFyY2hpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8vIEZvb3RlciBtZXRob2RzXG4gIGFzeW5jIG9uTmV3Q29udmVyc2F0aW9uKCkge1xuICAgIGNvbnN0IHBvcHVwQ29uZmlnOiBBWFBvcHVwQ29uZmlnID0ge1xuICAgICAgaGVhZGVyOiB0cnVlLFxuICAgICAgc2l6ZTogJ3NtJyxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICBjbG9zZU9uQmFja2Ryb3BDbGljazogZmFsc2UsXG4gICAgfTtcbiAgICBjb25zdCBwb3B1cCA9IGF3YWl0IHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oQVhNVXNlckxvb2t1cFBvcHVwLCBwb3B1cENvbmZpZyk7XG4gICAgY29uc3QgbWVtYmVycyA9IHBvcHVwLmRhdGE/Lmxvb2t1cCBhcyBzdHJpbmdbXTtcbiAgICB0cnkge1xuICAgICAgaWYgKG1lbWJlcnMpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jaGF0U2VydmljZS5jcmVhdGVSb29tKG1lbWJlcnMsIHBvcHVwLmRhdGE/LnRpdGxlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ2hhdCgpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVzLmlkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0ZhaWxlZCB0byBjcmVhdGUgcm9vbScpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge31cbn1cbiIsIjxheHAtcGFnZS1sYXlvdXQgI2NvbnRhaW5lcj5cbiAgPGF4cC1sYXlvdXQtc3RhcnQtc2lkZSBjbGFzcz1cImF4LWJvcmRlci1lIGF4LWxpZ2h0ZXN0LXN1cmZhY2UgYXgtaC1mdWxsXCI+XG4gICAgPGF4cC1sYXlvdXQtaGVhZGVyPlxuICAgICAgPGF4cC1sYXlvdXQtdGl0bGU+e3sgJ21vZHVsZS1uYW1lJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2NvbnZlcnNhdGlvbicgfSB8IGFzeW5jIH19PC9heHAtbGF5b3V0LXRpdGxlPlxuICAgICAgPGF4cC1sYXlvdXQtdG9vbGJhcj5cbiAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoUXVlcnkoKVwiXG4gICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uU2VhcmNoKCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgIGNsYXNzPVwiYXgtdy1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b24+XG4gICAgICAgIDwvYXgtc2VhcmNoLWJveD5cbiAgICAgIDwvYXhwLWxheW91dC10b29sYmFyPlxuICAgIDwvYXhwLWxheW91dC1oZWFkZXI+XG4gICAgPGF4cC1sYXlvdXQtY29udGVudCBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWluLWgtMCBheC1tYXgtdy04MFwiPlxuICAgICAgQGlmICghbGF5b3V0U2VydmljZS5pc01vYmlsZURldmljZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICA8L2F4cC1sYXlvdXQtY29udGVudD5cbiAgPC9heHAtbGF5b3V0LXN0YXJ0LXNpZGU+XG5cbiAgPGF4cC1wYWdlLWNvbnRlbnQgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSAyMnJlbSlcIj5cbiAgICBAaWYgKHNlbGVjdGVkUm9vbSgpKSB7XG4gICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gICAgfSBAZWxzZSBpZiAobGF5b3V0U2VydmljZS5pc01vYmlsZURldmljZSgpKSB7XG4gICAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgbG9vaz1cInNvbGlkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoUXVlcnkoKVwiXG4gICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvblNlYXJjaCgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgY2xhc3M9XCJheC13LWZ1bGxcIlxuICAgICAgPlxuICAgICAgICA8YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPlxuICAgICAgPC9heC1zZWFyY2gtYm94PlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgPC9heHAtcGFnZS1jb250ZW50PlxuPC9heHAtcGFnZS1sYXlvdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDwhLS0gVGFicyAtLT5cbiAgPGRpdiBjbGFzcz1cImF4LXB4LTRcIj5cbiAgICBAaWYgKGhhc1VucmVhZCgpKSB7XG4gICAgICA8YXgtdGFic1xuICAgICAgICAjdGFiXG4gICAgICAgIGNsYXNzPVwiYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgIFtsb29rXT1cIid3aXRoLWxpbmUnXCJcbiAgICAgICAgW2xvY2F0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgW2ZpdFBhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgKG9uQWN0aXZlVGFiQ2hhbmdlZCk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGF4LXRhYi1pdGVtIHRleHQ9XCJBbGxcIiBbYWN0aXZlXT1cImFjdGl2ZVRhYigpID09PSAwXCI+XG4gICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgIDxheC1iYWRnZVxuICAgICAgICAgICAgICBbdGV4dF09XCJ0b3RhbENvdW50KCkudG9TdHJpbmcoKVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJhY3RpdmVUYWIoKSA9PT0gMCA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1taW4tdy1bMS41cmVtXSBheC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICA+PC9heC1iYWRnZT5cbiAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgPC9heC10YWItaXRlbT5cbiAgICAgICAgPGF4LXRhYi1pdGVtIHRleHQ9XCJVbnJlYWRcIiBbYWN0aXZlXT1cImFjdGl2ZVRhYigpID09PSAxXCI+XG4gICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgIDxheC1iYWRnZVxuICAgICAgICAgICAgICBbdGV4dF09XCJ1bnJlYWRDb3VudCgpLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICBbY29sb3JdPVwiYWN0aXZlVGFiKCkgPT09IDEgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtbWluLXctWzEuNXJlbV0gYXgtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgPjwvYXgtYmFkZ2U+XG4gICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgIDwvYXgtdGFiLWl0ZW0+XG4gICAgICA8L2F4LXRhYnM+XG4gICAgfVxuICA8L2Rpdj5cblxuICA8IS0tIENoYXQgTGlzdCBDb250ZW50IC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3ctaGlkZGVuIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LW1pbi13LTgwXCJcbiAgICBbY2xhc3MuYXgtYm9yZGVyLXRdPVwiaGFzVW5yZWFkKClcIlxuICA+XG4gICAgPCEtLSBMb2FkaW5nIFN0YXRlIC0tPlxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTQgYXgtc3BhY2UteS00XCI+XG4gICAgICAgIEBmb3IgKF8gb2YgWzEsIDIsIDMsIDQsIDUsIDZdOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtc3BhY2UteC0zXCI+XG4gICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cInRydWVcIiBjbGFzcz1cImF4LXctMTIgYXgtaC0xMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXgtMSBheC1zcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJ0cnVlXCIgY2xhc3M9XCJheC13LTMvNCBheC1oLTQgYXgtcm91bmRlZC1tZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwidHJ1ZVwiIGNsYXNzPVwiYXgtdy0xLzIgYXgtaC0zIGF4LXJvdW5kZWQtbWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gICAgQGlmIChlcnJvcigpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtaC1mdWxsIGF4LXAtNCBheC10ZXh0LWNlbnRlclwiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LXRleHQtZGFuZ2VyIGF4LXRleHQtNXhsIGF4LW1iLTNcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWNpcmNsZS1leGNsYW1hdGlvblwiPjwvaT5cbiAgICAgICAgPC9heC1pY29uPlxuICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1sZ1wiPlxuICAgICAgICAgIHt7ICdjaGF0LWVycm9yJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2NvbnZlcnNhdGlvbicgfSB8IGFzeW5jIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtbGdcIj5cbiAgICAgICAgICB7eyAnY2hhdC10cnktYWdhaW4nIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnY29udmVyc2F0aW9uJyB9IHwgYXN5bmMgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cCBjbGFzcz1cImF4LXRleHQtc2Vjb25kYXJ5IGF4LW1iLTRcIj57eyBlcnJvcigpIH19PC9wPlxuICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgW3RleHRdPVwiJ3RyeS1hZ2FpbicgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdjb252ZXJzYXRpb24nIH0gfCBhc3luY1wiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAob25DbGljayk9XCJyZWZyZXNoQ2hhdCgpXCJcbiAgICAgICAgPjwvYXgtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPCEtLSBDaGF0IExpc3QgLS0+XG4gICAgQGlmICghaXNMb2FkaW5nKCkgJiYgIWVycm9yKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgIEBmb3IgKGkgb2YgZmlsdGVyZWRSb29tcygpOyB0cmFjayBpLmlkKSB7XG4gICAgICAgICAgPGF4bS1jaGF0LWl0ZW1cbiAgICAgICAgICAgIFtkYXRhXT1cImlcIlxuICAgICAgICAgICAgW3R5cGluZ109XCIkYW55KHR5cGluZ1N0YXR1cygpW2kuaWRdKVwiXG4gICAgICAgICAgICBbbGFzdE1lc3NhZ2VSZWFjdGlvbl09XCJpLmxhc3RNZXNzYWdlPy5yZWFjdGlvbnM/LlswXT8udHlwZSA/PyBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtaWRdPVwiaS5pZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkNoYXQoaS5pZClcIlxuICAgICAgICAgICAgW2NsYXNzLmF4LWJnLWRhcmtdPVwic2VsZWN0ZWRSb29tKCk/LmlkID09PSBpLmlkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtdHJhbnNpdGlvbi1hbGwgYXgtZHVyYXRpb24tMTAwIGhvdmVyOmF4LWJnLXN1cmZhY2VcIlxuICAgICAgICAgICAgW0BmYWRlSW5dXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib3BlbkNoYXQoaS5pZClcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgPjwvYXhtLWNoYXQtaXRlbT5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gRW1wdHkgU3RhdGUgLS0+XG4gICAgICAgIEBlbXB0eSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1mb250LW1lZGl1bSBheC10ZXh0LWNlbnRlciBheC10ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgQGlmIChpc1NlYXJjaGluZygpKSB7XG4gICAgICAgICAgICAgIE5vIGNoYXRzIGZvdW5kIG1hdGNoaW5nIHlvdXIgc2VhcmNoXG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgTm8gY2hhdHMgYXZhaWxhYmxlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRm9vdGVyIENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWJvcmRlci10IGF4LWJvcmRlci1kaXZpZGVyIGF4LWJnLWxpZ2h0ZXN0IGF4LXAtNFwiPlxuICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXctZnVsbFwiIGNvbG9yPVwicHJpbWFyeVwiIHRleHQ9XCJOZXcgQ29udmVyc2F0aW9uXCIgKG9uQ2xpY2spPVwib25OZXdDb252ZXJzYXRpb24oKVwiPlxuICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgIDxheC1pY29uPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1wbHVzXCI+PC9pPlxuICAgICAgICAgIDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19","/**\n * Converts chat service response to chat preview format\n * @param chatResponse - The response from chat service containing items and total\n * @returns Array of formatted chat preview messages\n */\nexport function convertToChatPreview(currentUserId, chatResponse, userName) {\n if (!chatResponse || !chatResponse.items?.length) {\n return [];\n }\n // Map from AXMChatMessage to ChatPreviewMessage\n return chatResponse.items.map((message) => {\n // Determine message type based on content type\n let messageType = 'text';\n // Map contentType to preview type\n if (message.message?.contentType) {\n switch (message.message.contentType) {\n case 'text':\n messageType = 'text';\n break;\n case 'file':\n messageType = 'file';\n break;\n case 'image':\n messageType = 'image';\n break;\n case 'video':\n messageType = 'video';\n break;\n case 'link':\n // Determine if link is for audio or other content\n const content = message.message.content || '';\n if (content.includes('.mp3') || content.includes('.ogg') || content.includes('audio')) {\n messageType = 'audio';\n }\n else {\n messageType = 'text';\n }\n break;\n default:\n messageType = 'text';\n }\n }\n // Extract author name if available\n const name = message.author ? message.author.id : 'Unknown';\n // Create the chat preview message\n const previewMessage = {\n id: message.id,\n sendTime: new Date(message.createdAt || new Date()),\n readTime: new Date(), // Assuming \"read\" when converted\n type: messageType,\n content: message.message?.content || '',\n name: name,\n userName,\n };\n // Add fromId if the message is not from current user\n if (currentUserId !== message.author.id) {\n previewMessage.fromId = message.author?.id;\n }\n else {\n previewMessage.showActionButton = true;\n }\n // Note: Reply information would need to be looked up from the actual messages\n // This would typically be done by the service that has access to all messages\n return previewMessage;\n });\n}\n/**\n * Creates a ChatPreviewMessage from reply information\n * @param message - The original message that is being referenced\n * @returns A ChatPreviewMessage formatted for use as a replyTo\n */\nexport function createReplyPreview(currentUserId, message, userName) {\n if (!message)\n return undefined;\n return {\n id: message.id,\n sendTime: new Date(message.createdAt || new Date()),\n readTime: new Date(),\n type: message.message?.contentType === 'image'\n ? 'image'\n : message.message?.contentType === 'video'\n ? 'video'\n : message.message?.contentType === 'file'\n ? 'file'\n : 'text',\n content: message.message?.content || '',\n name: message.author?.id || 'Unknown',\n fromId: currentUserId !== message.author.id ? message.author?.id : undefined,\n showActionButton: true,\n userName,\n };\n}\n/**\n * Generate demo chat preview data with a variety of message types\n * @returns Array of sample chat preview messages\n */\nexport function generateDemoChatPreview() {\n return [\n {\n id: '0',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n {\n id: '1',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Hello',\n name: 'test name',\n replyTo: {\n id: '0',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n },\n {\n id: '2',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'voice',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfoEF34fJ`,\n },\n {\n id: '3',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Can i have your address information?',\n name: 'test name',\n replyTo: {\n id: '1',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Hello',\n name: 'test name',\n },\n },\n {\n id: '4',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'file',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfoEF34fJ`,\n },\n {\n id: '5',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/300/200`,\n },\n {\n id: '6',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'video',\n name: 'test name',\n content: `https://www.pexels.com/download/video/5495322/?fps=29.97&h=540&w=960`,\n },\n {\n id: '7',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n {\n id: '8',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'audio',\n name: 'kids',\n content: `https://actions.google.com/sounds/v1/ambiences/kids_playing.ogg`,\n },\n {\n id: '9',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/300/200`,\n },\n {\n id: '10',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/200/300`,\n },\n {\n id: '11',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'video',\n name: 'test name',\n content: `https://www.pexels.com/download/video/5495322/?fps=29.97&h=540&w=960`,\n },\n {\n id: '12',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'file',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfo59ChoE+u5BxHVL7ZAS1EF34fJ`,\n },\n {\n id: '13',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'audio',\n name: 'alarm',\n content: `https://actions.google.com/sounds/v1/alarms/digital_watch_alarm_long.ogg`,\n },\n ];\n}\n/**\n * Usage Examples:\n *\n * Example 1: Converting chat service response to chat preview format\n * ```typescript\n * import { AXMChatService } from '../chat.service';\n * import { convertToChatPreview } from './chat-preview.helper';\n *\n * export class ChatPreviewComponent {\n * constructor(private chatService: AXMChatService) {}\n *\n * async loadChatMessages(roomId: string) {\n * const response = await this.chatService.getChatMessages(roomId);\n *\n * // Convert to chat preview format\n * const previewMessages = convertToChatPreview(response);\n *\n * // Use the converted messages\n * this.conversationService.chats.set(previewMessages);\n * }\n * }\n * ```\n *\n * Example 2: Using demo data for development/testing\n * ```typescript\n * import { generateDemoChatPreview } from './chat-preview.helper';\n *\n * export class ChatPreviewDemoComponent {\n * ngOnInit() {\n * // Load demo messages\n * const demoMessages = generateDemoChatPreview();\n *\n * // Use the demo messages\n * this.conversationService.chats.set(demoMessages);\n * }\n * }\n */\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1wcmV2aWV3LmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NoYXQtcHJldmlldy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsYUFBcUIsRUFDckIsWUFBd0QsRUFDeEQsUUFBaUI7SUFFakIsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDakQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN4QywrQ0FBK0M7UUFDL0MsSUFBSSxXQUFXLEdBQStCLE1BQU0sQ0FBQztRQUVyRCxrQ0FBa0M7UUFDbEMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLFFBQVEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEMsS0FBSyxNQUFNO29CQUNULFdBQVcsR0FBRyxNQUFNLENBQUM7b0JBQ3JCLE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULFdBQVcsR0FBRyxNQUFNLENBQUM7b0JBQ3JCLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLFdBQVcsR0FBRyxPQUFPLENBQUM7b0JBQ3RCLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLFdBQVcsR0FBRyxPQUFPLENBQUM7b0JBQ3RCLE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULGtEQUFrRDtvQkFDbEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO29CQUM5QyxJ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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1DaGF0TWVzc2FnZSB9IGZyb20gJy4vY2hhdC50eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGF0UHJldmlld01lc3NhZ2Uge1xuICBpZDogc3RyaW5nO1xuICBmcm9tSWQ/OiBzdHJpbmc7XG4gIHNlbmRUaW1lOiBEYXRlO1xuICByZWFkVGltZTogRGF0ZTtcbiAgdHlwZTogJ3RleHQnIHwgJ3ZvaWNlJyB8ICdmaWxlJyB8ICdpbWFnZScgfCAndmlkZW8nIHwgJ2F1ZGlvJztcbiAgY29udGVudDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlcGx5VG8/OiBDaGF0UHJldmlld01lc3NhZ2U7XG4gIHNob3dBY3Rpb25CdXR0b24/OiBib29sZWFuO1xuICB1c2VyTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBjaGF0IHNlcnZpY2UgcmVzcG9uc2UgdG8gY2hhdCBwcmV2aWV3IGZvcm1hdFxuICogQHBhcmFtIGNoYXRSZXNwb25zZSAtIFRoZSByZXNwb25zZSBmcm9tIGNoYXQgc2VydmljZSBjb250YWluaW5nIGl0ZW1zIGFuZCB0b3RhbFxuICogQHJldHVybnMgQXJyYXkgb2YgZm9ybWF0dGVkIGNoYXQgcHJldmlldyBtZXNzYWdlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvQ2hhdFByZXZpZXcoXG4gIGN1cnJlbnRVc2VySWQ6IHN0cmluZyxcbiAgY2hhdFJlc3BvbnNlOiB7IGl0ZW1zOiBBWE1DaGF0TWVzc2FnZVtdOyB0b3RhbDogbnVtYmVyIH0sXG4gIHVzZXJOYW1lPzogc3RyaW5nLFxuKTogQ2hhdFByZXZpZXdNZXNzYWdlW10ge1xuICBpZiAoIWNoYXRSZXNwb25zZSB8fCAhY2hhdFJlc3BvbnNlLml0ZW1zPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBNYXAgZnJvbSBBWE1DaGF0TWVzc2FnZSB0byBDaGF0UHJldmlld01lc3NhZ2VcbiAgcmV0dXJuIGNoYXRSZXNwb25zZS5pdGVtcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAvLyBEZXRlcm1pbmUgbWVzc2FnZSB0eXBlIGJhc2VkIG9uIGNvbnRlbnQgdHlwZVxuICAgIGxldCBtZXNzYWdlVHlwZTogQ2hhdFByZXZpZXdNZXNzYWdlWyd0eXBlJ10gPSAndGV4dCc7XG5cbiAgICAvLyBNYXAgY29udGVudFR5cGUgdG8gcHJldmlldyB0eXBlXG4gICAgaWYgKG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUpIHtcbiAgICAgIHN3aXRjaCAobWVzc2FnZS5tZXNzYWdlLmNvbnRlbnRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ3RleHQnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmaWxlJzpcbiAgICAgICAgICBtZXNzYWdlVHlwZSA9ICdmaWxlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ2ltYWdlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ3ZpZGVvJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIGxpbmsgaXMgZm9yIGF1ZGlvIG9yIG90aGVyIGNvbnRlbnRcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gbWVzc2FnZS5tZXNzYWdlLmNvbnRlbnQgfHwgJyc7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoJy5tcDMnKSB8fCBjb250ZW50LmluY2x1ZGVzKCcub2dnJykgfHwgY29udGVudC5pbmNsdWRlcygnYXVkaW8nKSkge1xuICAgICAgICAgICAgbWVzc2FnZVR5cGUgPSAnYXVkaW8nO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZXNzYWdlVHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbWVzc2FnZVR5cGUgPSAndGV4dCc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCBhdXRob3IgbmFtZSBpZiBhdmFpbGFibGVcbiAgICBjb25zdCBuYW1lID0gbWVzc2FnZS5hdXRob3IgPyBtZXNzYWdlLmF1dGhvci5pZCA6ICdVbmtub3duJztcblxuICAgIC8vIENyZWF0ZSB0aGUgY2hhdCBwcmV2aWV3IG1lc3NhZ2VcbiAgICBjb25zdCBwcmV2aWV3TWVzc2FnZTogQ2hhdFByZXZpZXdNZXNzYWdlID0ge1xuICAgICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUobWVzc2FnZS5jcmVhdGVkQXQgfHwgbmV3IERhdGUoKSksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSwgLy8gQXNzdW1pbmcgXCJyZWFkXCIgd2hlbiBjb252ZXJ0ZWRcbiAgICAgIHR5cGU6IG1lc3NhZ2VUeXBlLFxuICAgICAgY29udGVudDogbWVzc2FnZS5tZXNzYWdlPy5jb250ZW50IHx8ICcnLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHVzZXJOYW1lLFxuICAgIH07XG5cbiAgICAvLyBBZGQgZnJvbUlkIGlmIHRoZSBtZXNzYWdlIGlzIG5vdCBmcm9tIGN1cnJlbnQgdXNlclxuICAgIGlmIChjdXJyZW50VXNlcklkICE9PSBtZXNzYWdlLmF1dGhvci5pZCkge1xuICAgICAgcHJldmlld01lc3NhZ2UuZnJvbUlkID0gbWVzc2FnZS5hdXRob3I/LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2aWV3TWVzc2FnZS5zaG93QWN0aW9uQnV0dG9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBSZXBseSBpbmZvcm1hdGlvbiB3b3VsZCBuZWVkIHRvIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBhY3R1YWwgbWVzc2FnZXNcbiAgICAvLyBUaGlzIHdvdWxkIHR5cGljYWxseSBiZSBkb25lIGJ5IHRoZSBzZXJ2aWNlIHRoYXQgaGFzIGFjY2VzcyB0byBhbGwgbWVzc2FnZXNcblxuICAgIHJldHVybiBwcmV2aWV3TWVzc2FnZTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIENoYXRQcmV2aWV3TWVzc2FnZSBmcm9tIHJlcGx5IGluZm9ybWF0aW9uXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBvcmlnaW5hbCBtZXNzYWdlIHRoYXQgaXMgYmVpbmcgcmVmZXJlbmNlZFxuICogQHJldHVybnMgQSBDaGF0UHJldmlld01lc3NhZ2UgZm9ybWF0dGVkIGZvciB1c2UgYXMgYSByZXBseVRvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZXBseVByZXZpZXcoXG4gIGN1cnJlbnRVc2VySWQ6IHN0cmluZyxcbiAgbWVzc2FnZTogQVhNQ2hhdE1lc3NhZ2UsXG4gIHVzZXJOYW1lPzogc3RyaW5nLFxuKTogQ2hhdFByZXZpZXdNZXNzYWdlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgc2VuZFRpbWU6IG5ldyBEYXRlKG1lc3NhZ2UuY3JlYXRlZEF0IHx8IG5ldyBEYXRlKCkpLFxuICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgIHR5cGU6XG4gICAgICBtZXNzYWdlLm1lc3NhZ2U/LmNvbnRlbnRUeXBlID09PSAnaW1hZ2UnXG4gICAgICAgID8gJ2ltYWdlJ1xuICAgICAgICA6IG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUgPT09ICd2aWRlbydcbiAgICAgICAgICA/ICd2aWRlbydcbiAgICAgICAgICA6IG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUgPT09ICdmaWxlJ1xuICAgICAgICAgICAgPyAnZmlsZSdcbiAgICAgICAgICAgIDogJ3RleHQnLFxuICAgIGNvbnRlbnQ6IG1lc3NhZ2UubWVzc2FnZT8uY29udGVudCB8fCAnJyxcbiAgICBuYW1lOiBtZXNzYWdlLmF1dGhvcj8uaWQgfHwgJ1Vua25vd24nLFxuICAgIGZyb21JZDogY3VycmVudFVzZXJJZCAhPT0gbWVzc2FnZS5hdXRob3IuaWQgPyBtZXNzYWdlLmF1dGhvcj8uaWQgOiB1bmRlZmluZWQsXG4gICAgc2hvd0FjdGlvbkJ1dHRvbjogdHJ1ZSxcbiAgICB1c2VyTmFtZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBkZW1vIGNoYXQgcHJldmlldyBkYXRhIHdpdGggYSB2YXJpZXR5IG9mIG1lc3NhZ2UgdHlwZXNcbiAqIEByZXR1cm5zIEFycmF5IG9mIHNhbXBsZSBjaGF0IHByZXZpZXcgbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRGVtb0NoYXRQcmV2aWV3KCk6IENoYXRQcmV2aWV3TWVzc2FnZVtdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBpZDogJzAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBKb2huLCBIb3cgYXJlIHlvdT8nLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzEnLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIHJlcGx5VG86IHtcbiAgICAgICAgaWQ6ICcwJyxcbiAgICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIGNvbnRlbnQ6ICdIZWxsbyBKb2huLCBIb3cgYXJlIHlvdT8nLFxuICAgICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzInLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd2b2ljZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBkYXRhOmF1ZGlvL3dlYm07Y29kZWNzPW9wdXM7YmFzZTY0LEdrWGZvRUYzNGZKYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnMycsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgY29udGVudDogJ0NhbiBpIGhhdmUgeW91ciBhZGRyZXNzIGluZm9ybWF0aW9uPycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIHJlcGx5VG86IHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgY29udGVudDogJ0hlbGxvJyxcbiAgICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICc0JyxcbiAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnZmlsZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBkYXRhOmF1ZGlvL3dlYm07Y29kZWNzPW9wdXM7YmFzZTY0LEdrWGZvRUYzNGZKYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNScsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vcGljc3VtLnBob3Rvcy8zMDAvMjAwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNicsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ3ZpZGVvJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vd3d3LnBleGVscy5jb20vZG93bmxvYWQvdmlkZW8vNTQ5NTMyMi8/ZnBzPTI5Ljk3Jmg9NTQwJnc9OTYwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNycsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgY29udGVudDogJ0hlbGxvIEpvaG4sIEhvdyBhcmUgeW91PycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnOCcsXG4gICAgICBmcm9tSWQ6ICcxMCcsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2F1ZGlvJyxcbiAgICAgIG5hbWU6ICdraWRzJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL2FjdGlvbnMuZ29vZ2xlLmNvbS9zb3VuZHMvdjEvYW1iaWVuY2VzL2tpZHNfcGxheWluZy5vZ2dgLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICc5JyxcbiAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICBjb250ZW50OiBgaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzMwMC8yMDBgLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcxMCcsXG4gICAgICBmcm9tSWQ6ICcxMCcsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMzAwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnMTEnLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd2aWRlbycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL3d3dy5wZXhlbHMuY29tL2Rvd25sb2FkL3ZpZGVvLzU0OTUzMjIvP2Zwcz0yOS45NyZoPTU0MCZ3PTk2MGAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzEyJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnZmlsZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBkYXRhOmF1ZGlvL3dlYm07Y29kZWNzPW9wdXM7YmFzZTY0LEdrWGZvNTlDaG9FK3U1QnhIVkw3WkFTMUVGMzRmSmAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzEzJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnYXVkaW8nLFxuICAgICAgbmFtZTogJ2FsYXJtJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL2FjdGlvbnMuZ29vZ2xlLmNvbS9zb3VuZHMvdjEvYWxhcm1zL2RpZ2l0YWxfd2F0Y2hfYWxhcm1fbG9uZy5vZ2dgLFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogVXNhZ2UgRXhhbXBsZXM6XG4gKlxuICogRXhhbXBsZSAxOiBDb252ZXJ0aW5nIGNoYXQgc2VydmljZSByZXNwb25zZSB0byBjaGF0IHByZXZpZXcgZm9ybWF0XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBBWE1DaGF0U2VydmljZSB9IGZyb20gJy4uL2NoYXQuc2VydmljZSc7XG4gKiBpbXBvcnQgeyBjb252ZXJ0VG9DaGF0UHJldmlldyB9IGZyb20gJy4vY2hhdC1wcmV2aWV3LmhlbHBlcic7XG4gKlxuICogZXhwb3J0IGNsYXNzIENoYXRQcmV2aWV3Q29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGF0U2VydmljZTogQVhNQ2hhdFNlcnZpY2UpIHt9XG4gKlxuICogICBhc3luYyBsb2FkQ2hhdE1lc3NhZ2VzKHJvb21JZDogc3RyaW5nKSB7XG4gKiAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYXRTZXJ2aWNlLmdldENoYXRNZXNzYWdlcyhyb29tSWQpO1xuICpcbiAqICAgICAvLyBDb252ZXJ0IHRvIGNoYXQgcHJldmlldyBmb3JtYXRcbiAqICAgICBjb25zdCBwcmV2aWV3TWVzc2FnZXMgPSBjb252ZXJ0VG9DaGF0UHJldmlldyhyZXNwb25zZSk7XG4gKlxuICogICAgIC8vIFVzZSB0aGUgY29udmVydGVkIG1lc3NhZ2VzXG4gKiAgICAgdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzLnNldChwcmV2aWV3TWVzc2FnZXMpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBFeGFtcGxlIDI6IFVzaW5nIGRlbW8gZGF0YSBmb3IgZGV2ZWxvcG1lbnQvdGVzdGluZ1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgZ2VuZXJhdGVEZW1vQ2hhdFByZXZpZXcgfSBmcm9tICcuL2NoYXQtcHJldmlldy5oZWxwZXInO1xuICpcbiAqIGV4cG9ydCBjbGFzcyBDaGF0UHJldmlld0RlbW9Db21wb25lbnQge1xuICogICBuZ09uSW5pdCgpIHtcbiAqICAgICAvLyBMb2FkIGRlbW8gbWVzc2FnZXNcbiAqICAgICBjb25zdCBkZW1vTWVzc2FnZXMgPSBnZW5lcmF0ZURlbW9DaGF0UHJldmlldygpO1xuICpcbiAqICAgICAvLyBVc2UgdGhlIGRlbW8gbWVzc2FnZXNcbiAqICAgICB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMuc2V0KGRlbW9NZXNzYWdlcyk7XG4gKiAgIH1cbiAqIH1cbiAqL1xuIl19","import { AXDomChangeDirective } from '@acorex/cdk/dom';\nimport { AXConversationInputComponent, AXConversationModule, } from '@acorex/components/conversation';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXFileService } from '@acorex/core/file';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { convertToChatPreview } from '../../chat-preview.helper';\nimport { AXMChatService } from '../../chat.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/conversation\";\nimport * as i3 from \"@acorex/components/loading\";\nexport class AXMChatPreviewComponent {\n constructor() {\n this.activatedRoute = inject(ActivatedRoute);\n this.fileService = inject(AXFileService);\n this.chatService = inject(AXMChatService);\n this.sessionService = inject(AXPSessionService);\n this.toastService = inject(AXToastService);\n this.inputRef = viewChild(AXConversationInputComponent);\n this.activeMessage = signal(null);\n this.typing$ = new Subject();\n this.chatData = signal([]);\n this.room = signal(null);\n this.isEditing = signal(false);\n this.editId = signal(null);\n this.height = signal(0);\n this.isLoading = signal(false);\n this.error = signal(null);\n this.isChannel = computed(() => this.room()?.topic === 'channel');\n this.options = signal({\n disabled: false,\n readonly: false,\n value: '',\n });\n this.roomId = '';\n }\n setHeight(height) {\n this.height.set(height);\n }\n ngOnInit() {\n this.activatedRoute.params.subscribe((params) => {\n this.roomId = params['id'];\n if (this.roomId) {\n this.loadMessages(this.roomId);\n this.loadRoomInfo(this.roomId);\n }\n });\n this.chatService.messageSent$.subscribe(async (message) => {\n // Only add messages that are not from the current user and belong to the current room\n if (message.author.id !== this.sessionService.user?.id && message.roomId === this.roomId) {\n await this.chatService.markSeen(message.id);\n this.chatData.update((values) => {\n const newMessage = convertToChatPreview(this.sessionService.user?.id || '', {\n items: [message],\n total: 1,\n })[0];\n return [...values, newMessage];\n });\n }\n });\n // this.typingSubscription = this.typing$.pipe(debounceTime(1000)).subscribe(() => {\n // if (this.roomId) {\n // this.chatService.stopTyping(this.roomId);\n // }\n // });\n }\n ngOnDestroy() {\n this.typingSubscription?.unsubscribe();\n }\n handleTyping(event) {\n if (this.roomId) {\n this.chatService.startTyping(this.roomId);\n this.typing$.next();\n }\n }\n handleFileChange(event) {\n console.log('File Changed:', event);\n }\n handleCancelRecord(event) {\n console.log('Recording Cancelled:', event);\n }\n handleEndRecord(event) {\n this.fileService.blobToBase64(event.data.value).then((base64Content) => {\n // Create a properly formatted chat preview message for voice\n const newVoiceMessage = {\n id: `${Math.floor(Math.random() * 10000)}`,\n content: base64Content,\n sendTime: new Date(),\n readTime: new Date(),\n type: 'voice',\n name: 'test name',\n };\n this.chatData.update((values) => [...values, newVoiceMessage]);\n });\n }\n handleOnSend(e) {\n if (this.isEditing() && this.editId()) {\n this.chatService\n .editMessage(this.editId(), e.data.value, e.data.type || 'text')\n .then((newMessage) => {\n const convertedNewMessage = convertToChatPreview(this.sessionService.user?.id || '', {\n items: [newMessage],\n total: 1,\n })[0];\n this.chatData.update((values) => values.map((item) => (item.id === this.editId() ? { ...convertedNewMessage } : item)));\n this.editId.set(null);\n this.options.update((prev) => ({ ...prev, value: '' }));\n this.isEditing.set(false);\n })\n .catch((error) => {\n this.toastService.danger('Failed to edit message');\n });\n }\n else {\n if (e.data.value && this.roomId) {\n const replyId = e.data.replyChat?.id;\n this.chatService\n .sendMessage(this.roomId, e.data.value, e.data.type || 'text', replyId)\n .then((newMessage) => {\n const convertedNewMessage = convertToChatPreview(this.sessionService.user?.id || '', {\n items: [newMessage],\n total: 1,\n })[0];\n this.chatData.update((values) => [...values, { ...convertedNewMessage, replyTo: replyId }]);\n this.options.update((prev) => ({ ...prev, value: '' }));\n this.scrollToEnd();\n })\n .catch((error) => {\n this.toastService.danger('Failed to send message');\n });\n }\n }\n }\n handleEnter() {\n if (this.options().value && this.roomId) {\n this.handleOnSend({ data: { value: this.options().value } });\n }\n }\n handleOnAction(e) {\n console.log('Action Triggered:', e);\n }\n scrollToEnd() {\n const conversationView = document.querySelector('ax-conversation-view');\n if (conversationView) {\n conversationView.scrollTo({\n top: conversationView.scrollHeight,\n behavior: 'smooth',\n });\n }\n }\n async loadMessages(roomId) {\n this.isLoading.set(true);\n this.error.set(null);\n try {\n // Get messages from the chat service\n const messageResponse = await this.chatService.getMessages(roomId);\n // Convert to chat preview format\n const chatPreviewMessages = convertToChatPreview(this.sessionService.user?.id || '', messageResponse).sort((a, b) => {\n return new Date(a.sendTime).getTime() - new Date(b.sendTime).getTime();\n });\n // Set the messages in the conversation service\n this.chatData.set(chatPreviewMessages);\n }\n catch (error) {\n this.error.set('Failed to load messages. Please try again.');\n console.error('Failed to load messages:', error);\n }\n finally {\n this.isLoading.set(false);\n }\n }\n async loadRoomInfo(roomId) {\n try {\n const roomData = await this.chatService.getRoom(roomId);\n this.room.set(roomData);\n }\n catch (error) {\n console.error('Failed to load room info:', error);\n }\n }\n addItemHandler(e) {\n this.activeMessage.set(e.data);\n if (e.data.fromId) {\n e.canceled = true;\n return;\n }\n const userItem = [];\n if (e.data.type === 'text') {\n userItem.push({\n text: 'Edit',\n color: 'primary',\n icon: 'fa-solid fa-pencil',\n onClick: (id) => {\n try {\n this.isEditing.set(true);\n this.editId.set(e.data.id);\n this.options.update((prev) => ({ ...prev, value: e.data.content }));\n this.addInputOverlay('edit', e.data);\n }\n catch (error) {\n this.toastService.danger('Failed to edit message');\n }\n },\n });\n }\n if (e.data.type === 'text') {\n userItem.push({\n text: 'Delete',\n color: 'danger',\n icon: 'fa-solid fa-trash-can',\n onClick: (id) => {\n try {\n this.chatService.deleteMessage(id).then((res) => {\n this.chatData.update((values) => values.filter((item) => item.id !== id));\n if (!res) {\n this.toastService.danger('Failed to delete message');\n }\n });\n }\n catch (error) {\n this.toastService.danger('Failed to delete message');\n }\n },\n });\n }\n e.items.push(...userItem);\n }\n addInputOverlay(type, message) {\n const input = this.inputRef();\n const icon = type === 'reply' ? 'fa-solid fa-reply' : 'fa-solid fa-pencil';\n if (input) {\n input.setActionBoxContainer(icon, message?.content || this.activeMessage()?.content || '');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMChatPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: AXMChatPreviewComponent, isStandalone: true, selector: \"axm-chat-preview\", viewQueries: [{ propertyName: \"inputRef\", first: true, predicate: AXConversationInputComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"@if (isLoading()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <ax-loading></ax-loading>\\n </div>\\n} @else if (error()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <div class=\\\"ax-text-center\\\">\\n <p class=\\\"ax-text-danger\\\">{{ error() }}</p>\\n <button (click)=\\\"loadMessages(roomId)\\\" class=\\\"ax-mt-2 ax-button ax-primary\\\">Retry</button>\\n </div>\\n </div>\\n} @else {\\n <div\\n axDomChange\\n (axResizeObserver)=\\\"setHeight($event[0].contentRect.height)\\\"\\n class=\\\"ax-bg-surface-container ax-h-full\\\"\\n >\\n <!-- Messages Container -->\\n <ax-conversation-container class=\\\"ax-overflow-hidden\\\" [chatData]=\\\"chatData()\\\">\\n <ax-conversation-view\\n (onActionMenuOpening)=\\\"addItemHandler($event)\\\"\\n (onAction)=\\\"handleOnAction($event)\\\"\\n (onReplyClick)=\\\"addInputOverlay('reply', $event.data)\\\"\\n [chatBoxHeight]=\\\"height() - 60 + 'px'\\\"\\n ></ax-conversation-view>\\n @if (!isChannel()) {\\n <ax-conversation-input\\n class=\\\"ax-p-1\\\"\\n placeholder=\\\"Type a message...\\\"\\n [(ngModel)]=\\\"options().value\\\"\\n (ngModelChange)=\\\"handleTyping($event)\\\"\\n (onSendClick)=\\\"handleOnSend($event)\\\"\\n (onFileChange)=\\\"handleFileChange($event)\\\"\\n (onStopRecording)=\\\"handleEndRecord($event)\\\"\\n (onCancelRecording)=\\\"handleCancelRecord($event)\\\"\\n (onEnterPressed)=\\\"handleEnter()\\\"\\n ></ax-conversation-input>\\n }\\n </ax-conversation-container>\\n </div>\\n}\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: AXDomChangeDirective, selector: \"[axDomChange]\", outputs: [\"axMutationObserver\", \"axResizeObserver\"] }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"component\", type: i2.AXConversationViewComponent, selector: \"ax-conversation-view\", inputs: [\"chatBoxHeight\", \"isReplyArrowShown\", \"avatar\"], outputs: [\"onScrollEnd\", \"onActionMenuOpening\", \"onAction\", \"onReplyClick\"] }, { kind: \"component\", type: i2.AXConversationInputComponent, selector: \"ax-conversation-input\", inputs: [\"look\", \"placeholder\", \"maxLength\", \"hasAttachment\", \"hasVoice\", \"hasEmoji\", \"isLoading\", \"acceptFileType\"], outputs: [\"onActionClose\", \"onSendClick\", \"onStartRecording\", \"onCancelRecording\", \"onEnterPressed\"] }, { kind: \"component\", type: i2.AXConversationContainerComponent, selector: \"ax-conversation-container\", inputs: [\"chatData\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i3.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMChatPreviewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat-preview', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormsModule, AXDomChangeDirective, AXConversationModule, AXLoadingModule], template: \"@if (isLoading()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <ax-loading></ax-loading>\\n </div>\\n} @else if (error()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <div class=\\\"ax-text-center\\\">\\n <p class=\\\"ax-text-danger\\\">{{ error() }}</p>\\n <button (click)=\\\"loadMessages(roomId)\\\" class=\\\"ax-mt-2 ax-button ax-primary\\\">Retry</button>\\n </div>\\n </div>\\n} @else {\\n <div\\n axDomChange\\n (axResizeObserver)=\\\"setHeight($event[0].contentRect.height)\\\"\\n class=\\\"ax-bg-surface-container ax-h-full\\\"\\n >\\n <!-- Messages Container -->\\n <ax-conversation-container class=\\\"ax-overflow-hidden\\\" [chatData]=\\\"chatData()\\\">\\n <ax-conversation-view\\n (onActionMenuOpening)=\\\"addItemHandler($event)\\\"\\n (onAction)=\\\"handleOnAction($event)\\\"\\n (onReplyClick)=\\\"addInputOverlay('reply', $event.data)\\\"\\n [chatBoxHeight]=\\\"height() - 60 + 'px'\\\"\\n ></ax-conversation-view>\\n @if (!isChannel()) {\\n <ax-conversation-input\\n class=\\\"ax-p-1\\\"\\n placeholder=\\\"Type a message...\\\"\\n [(ngModel)]=\\\"options().value\\\"\\n (ngModelChange)=\\\"handleTyping($event)\\\"\\n (onSendClick)=\\\"handleOnSend($event)\\\"\\n (onFileChange)=\\\"handleFileChange($event)\\\"\\n (onStopRecording)=\\\"handleEndRecord($event)\\\"\\n (onCancelRecording)=\\\"handleCancelRecord($event)\\\"\\n (onEnterPressed)=\\\"handleEnter()\\\"\\n ></ax-conversation-input>\\n }\\n </ax-conversation-container>\\n </div>\\n}\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NvbXBvbmVudHMvY2hhdC1wcmV2aWV3L2NoYXQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jb21wb25lbnRzL2NoYXQtcHJldmlldy9jaGF0LXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUVMLDRCQUE0QixFQUk1QixvQkFBb0IsR0FDckIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENB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LENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQXNCLEVBQUUsT0FBK0I7UUFDckUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztRQUMzRSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsS0FBSyxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0YsQ0FBQztJQUNILENBQUM7OEdBdFBVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHNIQU95Qiw0QkFBNEIsZ0VDOUN6Riw2a0RBeUNBLHNHREpZLFlBQVksOEJBQUUsV0FBVywrVkFBRSxvQkFBb0IsOEdBQUUsb0JBQW9CLGdzQkFBRSxlQUFlOzsyRkFFckYsdUJBQXVCO2tCQVJuQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEb21DaGFuZ2VEaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L2Nkay9kb20nO1xuaW1wb3J0IHtcbiAgQVhDb252ZXJzYXRpb25BY3Rpb25FdmVudCxcbiAgQVhDb252ZXJzYXRpb25JbnB1dENvbXBvbmVudCxcbiAgQVhDb252ZXJzYXRpb25NZW51T3BlbmluZ0V2ZW50LFxuICBBWENvbnZlcnNhdGlvbk1lc3NhZ2UsXG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZUFjdGlvbixcbiAgQVhDb252ZXJzYXRpb25Nb2R1bGUsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb252ZXJzYXRpb24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUb2FzdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9hc3QnO1xuaW1wb3J0IHsgQVhGaWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9maWxlJztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbnZlcnRUb0NoYXRQcmV2aWV3IH0gZnJvbSAnLi4vLi4vY2hhdC1wcmV2aWV3LmhlbHBlcic7XG5pbXBvcnQgeyBBWE1DaGF0U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1DaGF0Um9vbSB9IGZyb20gJy4uLy4uL2NoYXQudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1jaGF0LXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQVhEb21DaGFuZ2VEaXJlY3RpdmUsIEFYQ29udmVyc2F0aW9uTW9kdWxlLCBBWExvYWRpbmdNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1DaGF0UHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgZmlsZVNlcnZpY2UgPSBpbmplY3QoQVhGaWxlU2VydmljZSk7XG4gIHByaXZhdGUgY2hhdFNlcnZpY2UgPSBpbmplY3QoQVhNQ2hhdFNlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuXG4gIHByaXZhdGUgaW5wdXRSZWYgPSB2aWV3Q2hpbGQ8QVhDb252ZXJzYXRpb25JbnB1dENvbXBvbmVudD4oQVhDb252ZXJzYXRpb25JbnB1dENvbXBvbmVudCk7XG4gIHByaXZhdGUgYWN0aXZlTWVzc2FnZSA9IHNpZ25hbDxBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHR5cGluZyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHR5cGluZ1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBwcm90ZWN0ZWQgY2hhdERhdGEgPSBzaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlW10+KFtdKTtcbiAgcHJvdGVjdGVkIHJvb20gPSBzaWduYWw8QVhNQ2hhdFJvb20gfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIGlzRWRpdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBlZGl0SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBoZWlnaHQgPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgZXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIGlzQ2hhbm5lbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucm9vbSgpPy50b3BpYyA9PT0gJ2NoYW5uZWwnKTtcblxuICBwcm90ZWN0ZWQgc2V0SGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWlnaHQuc2V0KGhlaWdodCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3B0aW9ucyA9IHNpZ25hbCh7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHJlYWRvbmx5OiBmYWxzZSxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByb29tSWQ6IHN0cmluZyA9ICcnO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLnJvb21JZCA9IHBhcmFtc1snaWQnXTtcbiAgICAgIGlmICh0aGlzLnJvb21JZCkge1xuICAgICAgICB0aGlzLmxvYWRNZXNzYWdlcyh0aGlzLnJvb21JZCk7XG4gICAgICAgIHRoaXMubG9hZFJvb21JbmZvKHRoaXMucm9vbUlkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhdFNlcnZpY2UubWVzc2FnZVNlbnQkLnN1YnNjcmliZShhc3luYyAobWVzc2FnZSkgPT4ge1xuICAgICAgLy8gT25seSBhZGQgbWVzc2FnZXMgdGhhdCBhcmUgbm90IGZyb20gdGhlIGN1cnJlbnQgdXNlciBhbmQgYmVsb25nIHRvIHRoZSBjdXJyZW50IHJvb21cbiAgICAgIGlmIChtZXNzYWdlLmF1dGhvci5pZCAhPT0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZCAmJiBtZXNzYWdlLnJvb21JZCA9PT0gdGhpcy5yb29tSWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGF0U2VydmljZS5tYXJrU2VlbihtZXNzYWdlLmlkKTtcbiAgICAgICAgdGhpcy5jaGF0RGF0YS51cGRhdGUoKHZhbHVlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld01lc3NhZ2UgPSBjb252ZXJ0VG9DaGF0UHJldmlldyh0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI/LmlkIHx8ICcnLCB7XG4gICAgICAgICAgICBpdGVtczogW21lc3NhZ2VdLFxuICAgICAgICAgICAgdG90YWw6IDEsXG4gICAgICAgICAgfSlbMF07XG4gICAgICAgICAgcmV0dXJuIFsuLi52YWx1ZXMsIG5ld01lc3NhZ2VdO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHRoaXMudHlwaW5nU3Vic2NyaXB0aW9uID0gdGhpcy50eXBpbmckLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIC8vICAgaWYgKHRoaXMucm9vbUlkKSB7XG4gICAgLy8gICAgIHRoaXMuY2hhdFNlcnZpY2Uuc3RvcFR5cGluZyh0aGlzLnJvb21JZCk7XG4gICAgLy8gICB9XG4gICAgLy8gfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnR5cGluZ1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGhhbmRsZVR5cGluZyhldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm9vbUlkKSB7XG4gICAgICB0aGlzLmNoYXRTZXJ2aWNlLnN0YXJ0VHlwaW5nKHRoaXMucm9vbUlkKTtcbiAgICAgIHRoaXMudHlwaW5nJC5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRmlsZUNoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0ZpbGUgQ2hhbmdlZDonLCBldmVudCk7XG4gIH1cblxuICBoYW5kbGVDYW5jZWxSZWNvcmQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdSZWNvcmRpbmcgQ2FuY2VsbGVkOicsIGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUVuZFJlY29yZChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5maWxlU2VydmljZS5ibG9iVG9CYXNlNjQoZXZlbnQuZGF0YS52YWx1ZSkudGhlbigoYmFzZTY0Q29udGVudCkgPT4ge1xuICAgICAgLy8gQ3JlYXRlIGEgcHJvcGVybHkgZm9ybWF0dGVkIGNoYXQgcHJldmlldyBtZXNzYWdlIGZvciB2b2ljZVxuICAgICAgY29uc3QgbmV3Vm9pY2VNZXNzYWdlOiBBWENvbnZlcnNhdGlvbk1lc3NhZ2UgPSB7XG4gICAgICAgIGlkOiBgJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMCl9YCxcbiAgICAgICAgY29udGVudDogYmFzZTY0Q29udGVudCxcbiAgICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICB0eXBlOiAndm9pY2UnLFxuICAgICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2hhdERhdGEudXBkYXRlKCh2YWx1ZXMpID0+IFsuLi52YWx1ZXMsIG5ld1ZvaWNlTWVzc2FnZV0pO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlT25TZW5kKGU6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRWRpdGluZygpICYmIHRoaXMuZWRpdElkKCkpIHtcbiAgICAgIHRoaXMuY2hhdFNlcnZpY2VcbiAgICAgICAgLmVkaXRNZXNzYWdlKHRoaXMuZWRpdElkKCkhLCBlLmRhdGEudmFsdWUsIGUuZGF0YS50eXBlIHx8ICd0ZXh0JylcbiAgICAgICAgLnRoZW4oKG5ld01lc3NhZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjb252ZXJ0ZWROZXdNZXNzYWdlID0gY29udmVydFRvQ2hhdFByZXZpZXcodGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZCB8fCAnJywge1xuICAgICAgICAgICAgaXRlbXM6IFtuZXdNZXNzYWdlXSxcbiAgICAgICAgICAgIHRvdGFsOiAxLFxuICAgICAgICAgIH0pWzBdO1xuICAgICAgICAgIHRoaXMuY2hhdERhdGEudXBkYXRlKCh2YWx1ZXMpID0+XG4gICAgICAgICAgICB2YWx1ZXMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gdGhpcy5lZGl0SWQoKSA/IHsgLi4uY29udmVydGVkTmV3TWVzc2FnZSB9IDogaXRlbSkpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5lZGl0SWQuc2V0KG51bGwpO1xuICAgICAgICAgIHRoaXMub3B0aW9ucy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIHZhbHVlOiAnJyB9KSk7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcignRmFpbGVkIHRvIGVkaXQgbWVzc2FnZScpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGUuZGF0YS52YWx1ZSAmJiB0aGlzLnJvb21JZCkge1xuICAgICAgICBjb25zdCByZXBseUlkID0gZS5kYXRhLnJlcGx5Q2hhdD8uaWQ7XG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2VcbiAgICAgICAgICAuc2VuZE1lc3NhZ2UodGhpcy5yb29tSWQsIGUuZGF0YS52YWx1ZSwgZS5kYXRhLnR5cGUgfHwgJ3RleHQnLCByZXBseUlkKVxuICAgICAgICAgIC50aGVuKChuZXdNZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWROZXdNZXNzYWdlID0gY29udmVydFRvQ2hhdFByZXZpZXcodGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZCB8fCAnJywge1xuICAgICAgICAgICAgICBpdGVtczogW25ld01lc3NhZ2VdLFxuICAgICAgICAgICAgICB0b3RhbDogMSxcbiAgICAgICAgICAgIH0pWzBdO1xuICAgICAgICAgICAgdGhpcy5jaGF0RGF0YS51cGRhdGUoKHZhbHVlcykgPT4gWy4uLnZhbHVlcywgeyAuLi5jb252ZXJ0ZWROZXdNZXNzYWdlLCByZXBseVRvOiByZXBseUlkIH1dKTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIHZhbHVlOiAnJyB9KSk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0ZhaWxlZCB0byBzZW5kIG1lc3NhZ2UnKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zKCkudmFsdWUgJiYgdGhpcy5yb29tSWQpIHtcbiAgICAgIHRoaXMuaGFuZGxlT25TZW5kKHsgZGF0YTogeyB2YWx1ZTogdGhpcy5vcHRpb25zKCkudmFsdWUgfSB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPbkFjdGlvbihlOiBBWENvbnZlcnNhdGlvbkFjdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0FjdGlvbiBUcmlnZ2VyZWQ6JywgZSk7XG4gIH1cblxuICBzY3JvbGxUb0VuZCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb252ZXJzYXRpb25WaWV3ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXgtY29udmVyc2F0aW9uLXZpZXcnKTtcbiAgICBpZiAoY29udmVyc2F0aW9uVmlldykge1xuICAgICAgY29udmVyc2F0aW9uVmlldy5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogY29udmVyc2F0aW9uVmlldy5zY3JvbGxIZWlnaHQsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRNZXNzYWdlcyhyb29tSWQ6IHN0cmluZykge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICB0cnkge1xuICAgICAgLy8gR2V0IG1lc3NhZ2VzIGZyb20gdGhlIGNoYXQgc2VydmljZVxuICAgICAgY29uc3QgbWVzc2FnZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jaGF0U2VydmljZS5nZXRNZXNzYWdlcyhyb29tSWQpO1xuXG4gICAgICAvLyBDb252ZXJ0IHRvIGNoYXQgcHJldmlldyBmb3JtYXRcbiAgICAgIGNvbnN0IGNoYXRQcmV2aWV3TWVzc2FnZXMgPSBjb252ZXJ0VG9DaGF0UHJldmlldyh0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI/LmlkIHx8ICcnLCBtZXNzYWdlUmVzcG9uc2UpLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGEuc2VuZFRpbWUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuc2VuZFRpbWUpLmdldFRpbWUoKTtcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFNldCB0aGUgbWVzc2FnZXMgaW4gdGhlIGNvbnZlcnNhdGlvbiBzZXJ2aWNlXG4gICAgICB0aGlzLmNoYXREYXRhLnNldChjaGF0UHJldmlld01lc3NhZ2VzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5lcnJvci5zZXQoJ0ZhaWxlZCB0byBsb2FkIG1lc3NhZ2VzLiBQbGVhc2UgdHJ5IGFnYWluLicpO1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgbWVzc2FnZXM6JywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRSb29tSW5mbyhyb29tSWQ6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByb29tRGF0YSA9IGF3YWl0IHRoaXMuY2hhdFNlcnZpY2UuZ2V0Um9vbShyb29tSWQpO1xuICAgICAgdGhpcy5yb29tLnNldChyb29tRGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHJvb20gaW5mbzonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFkZEl0ZW1IYW5kbGVyKGU6IEFYQ29udmVyc2F0aW9uTWVudU9wZW5pbmdFdmVudCkge1xuICAgIHRoaXMuYWN0aXZlTWVzc2FnZS5zZXQoZS5kYXRhKTtcbiAgICBpZiAoZS5kYXRhLmZyb21JZCkge1xuICAgICAgZS5jYW5jZWxlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHVzZXJJdGVtOiBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBY3Rpb25bXSA9IFtdO1xuICAgIGlmIChlLmRhdGEudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICB1c2VySXRlbS5wdXNoKHtcbiAgICAgICAgdGV4dDogJ0VkaXQnLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtcGVuY2lsJyxcbiAgICAgICAgb25DbGljazogKGlkKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0aW5nLnNldCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdElkLnNldChlLmRhdGEuaWQpO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgdmFsdWU6IGUuZGF0YS5jb250ZW50IH0pKTtcbiAgICAgICAgICAgIHRoaXMuYWRkSW5wdXRPdmVybGF5KCdlZGl0JywgZS5kYXRhKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKCdGYWlsZWQgdG8gZWRpdCBtZXNzYWdlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlLmRhdGEudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICB1c2VySXRlbS5wdXNoKHtcbiAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgaWNvbjogJ2ZhLXNvbGlkIGZhLXRyYXNoLWNhbicsXG4gICAgICAgIG9uQ2xpY2s6IChpZCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmRlbGV0ZU1lc3NhZ2UoaWQpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoYXREYXRhLnVwZGF0ZSgodmFsdWVzKSA9PiB2YWx1ZXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBpZCkpO1xuICAgICAgICAgICAgICBpZiAoIXJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcignRmFpbGVkIHRvIGRlbGV0ZSBtZXNzYWdlJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0ZhaWxlZCB0byBkZWxldGUgbWVzc2FnZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGUuaXRlbXMucHVzaCguLi51c2VySXRlbSk7XG4gIH1cblxuICBhZGRJbnB1dE92ZXJsYXkodHlwZTogJ3JlcGx5JyB8ICdlZGl0JywgbWVzc2FnZT86IEFYQ29udmVyc2F0aW9uTWVzc2FnZSkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dFJlZigpO1xuICAgIGNvbnN0IGljb24gPSB0eXBlID09PSAncmVwbHknID8gJ2ZhLXNvbGlkIGZhLXJlcGx5JyA6ICdmYS1zb2xpZCBmYS1wZW5jaWwnO1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgaW5wdXQuc2V0QWN0aW9uQm94Q29udGFpbmVyKGljb24sIG1lc3NhZ2U/LmNvbnRlbnQgfHwgdGhpcy5hY3RpdmVNZXNzYWdlKCk/LmNvbnRlbnQgfHwgJycpO1xuICAgIH1cbiAgfVxufVxuIiwiQGlmIChpc0xvYWRpbmcoKSkge1xuICA8ZGl2IGNsYXNzPVwiYXgtaC1mdWxsIGF4LXctZnVsbCBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgPC9kaXY+XG59IEBlbHNlIGlmIChlcnJvcigpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1oLWZ1bGwgYXgtdy1mdWxsIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LXRleHQtY2VudGVyXCI+XG4gICAgICA8cCBjbGFzcz1cImF4LXRleHQtZGFuZ2VyXCI+e3sgZXJyb3IoKSB9fTwvcD5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNZXNzYWdlcyhyb29tSWQpXCIgY2xhc3M9XCJheC1tdC0yIGF4LWJ1dHRvbiBheC1wcmltYXJ5XCI+UmV0cnk8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdlxuICAgIGF4RG9tQ2hhbmdlXG4gICAgKGF4UmVzaXplT2JzZXJ2ZXIpPVwic2V0SGVpZ2h0KCRldmVudFswXS5jb250ZW50UmVjdC5oZWlnaHQpXCJcbiAgICBjbGFzcz1cImF4LWJnLXN1cmZhY2UtY29udGFpbmVyIGF4LWgtZnVsbFwiXG4gID5cbiAgICA8IS0tIE1lc3NhZ2VzIENvbnRhaW5lciAtLT5cbiAgICA8YXgtY29udmVyc2F0aW9uLWNvbnRhaW5lciBjbGFzcz1cImF4LW92ZXJmbG93LWhpZGRlblwiIFtjaGF0RGF0YV09XCJjaGF0RGF0YSgpXCI+XG4gICAgICA8YXgtY29udmVyc2F0aW9uLXZpZXdcbiAgICAgICAgKG9uQWN0aW9uTWVudU9wZW5pbmcpPVwiYWRkSXRlbUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgIChvbkFjdGlvbik9XCJoYW5kbGVPbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgKG9uUmVwbHlDbGljayk9XCJhZGRJbnB1dE92ZXJsYXkoJ3JlcGx5JywgJGV2ZW50LmRhdGEpXCJcbiAgICAgICAgW2NoYXRCb3hIZWlnaHRdPVwiaGVpZ2h0KCkgLSA2MCArICdweCdcIlxuICAgICAgPjwvYXgtY29udmVyc2F0aW9uLXZpZXc+XG4gICAgICBAaWYgKCFpc0NoYW5uZWwoKSkge1xuICAgICAgICA8YXgtY29udmVyc2F0aW9uLWlucHV0XG4gICAgICAgICAgY2xhc3M9XCJheC1wLTFcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSBhIG1lc3NhZ2UuLi5cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwib3B0aW9ucygpLnZhbHVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVUeXBpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uU2VuZENsaWNrKT1cImhhbmRsZU9uU2VuZCgkZXZlbnQpXCJcbiAgICAgICAgICAob25GaWxlQ2hhbmdlKT1cImhhbmRsZUZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uU3RvcFJlY29yZGluZyk9XCJoYW5kbGVFbmRSZWNvcmQoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uQ2FuY2VsUmVjb3JkaW5nKT1cImhhbmRsZUNhbmNlbFJlY29yZCgkZXZlbnQpXCJcbiAgICAgICAgICAob25FbnRlclByZXNzZWQpPVwiaGFuZGxlRW50ZXIoKVwiXG4gICAgICAgID48L2F4LWNvbnZlcnNhdGlvbi1pbnB1dD5cbiAgICAgIH1cbiAgICA8L2F4LWNvbnZlcnNhdGlvbi1jb250YWluZXI+XG4gIDwvZGl2PlxufVxuIl19","import { AXConversationModule } from '@acorex/components/conversation';\nimport { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { DatePipe } from '@angular/common';\nimport { importProvidersFrom, NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { AXMRoomService } from './entities';\nimport { AXMMessageService, AXMMessageServiceImpl } from './entities/message/message.service';\nimport { AXMRoomServiceImpl } from './entities/room/room.service';\nimport { AXMConversationModuleEntityProvider } from './entity.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { AXMChatService, AXMChatServiceImpl, AXMCommentPopupStartAction, AXMCommentPopupWorkflow, AXMCommentService, AXMCommentServiceImpl, AXPCommentWidget, } from './features';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/builder\";\nimport * as i2 from \"@acorex/platform/workflow\";\nfunction routesFactory() {\n const routes = [\n {\n path: ':app/chat',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n title: 'Chat',\n children: [\n {\n path: '',\n loadComponent: () => import('./features/chat/chat.component').then((c) => c.AXMChatComponent),\n data: { reuse: true },\n children: [\n {\n path: ':id',\n loadComponent: () => import('./features/chat/components/chat-preview/chat-preview.component').then((c) => c.AXMChatPreviewComponent),\n },\n ],\n },\n ],\n },\n {\n path: ':app/comments/t/:refrenceType/i/:refrenceId/s/:subject',\n title: 'Comments',\n canActivate: [AXPAuthGuard],\n loadComponent: () => AXPRootLayoutComponent,\n // resolve: {\n // refrenceType: {\n // resolve: refrenceTypeResolver,\n // },\n // refrenceId: {\n // resolve: refrenceIdResolver,\n // },\n // subject: {\n // resolve: subjectResolver,\n // },\n // },\n children: [\n {\n path: '',\n loadComponent: () => import('./features/comment/comment.component').then((c) => c.AXMCommentComponent),\n },\n ],\n },\n {\n path: ':app/comments/',\n title: 'Comments',\n canActivate: [AXPAuthGuard],\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./features/comment/comment.component').then((c) => c.AXMCommentComponent),\n },\n ],\n },\n ];\n return routes;\n}\nexport class AXMConversationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMConversationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMConversationModule, imports: [i1.AXPLayoutBuilderModule, i2.AXPWorkflowModule], exports: [\n // Modules\n RouterModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMConversationModule, providers: [\n // Services\n {\n provide: AXMMessageService,\n useClass: AXMMessageServiceImpl,\n },\n {\n provide: AXMRoomService,\n useClass: AXMRoomServiceImpl,\n },\n // Chat and Comment Services\n {\n provide: AXMChatService,\n useClass: AXMChatServiceImpl,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentServiceImpl,\n },\n // Entity Provider\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMConversationModuleEntityProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Menu Provider\n // {\n // provide: AXP_MENU_PROVIDER,\n // useClass: AXMConversationMenuProvider,\n // multi: true,\n // },\n // Conversation Module\n importProvidersFrom(AXConversationModule.forRoot()),\n DatePipe,\n ], imports: [AXPLayoutBuilderModule.forChild({\n widgets: [AXPCommentWidget],\n }),\n AXPWorkflowModule.forChild({\n actions: {\n 'show-comment-popup-action': AXMCommentPopupStartAction,\n },\n workflows: {\n 'show-comment-popup': AXMCommentPopupWorkflow,\n },\n }), \n // Modules\n RouterModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMConversationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [\n AXPLayoutBuilderModule.forChild({\n widgets: [AXPCommentWidget],\n }),\n AXPWorkflowModule.forChild({\n actions: {\n 'show-comment-popup-action': AXMCommentPopupStartAction,\n },\n workflows: {\n 'show-comment-popup': AXMCommentPopupWorkflow,\n },\n }),\n ],\n exports: [\n // Modules\n RouterModule,\n ],\n providers: [\n // Services\n {\n provide: AXMMessageService,\n useClass: AXMMessageServiceImpl,\n },\n {\n provide: AXMRoomService,\n useClass: AXMRoomServiceImpl,\n },\n // Chat and Comment Services\n {\n provide: AXMChatService,\n useClass: AXMChatServiceImpl,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentServiceImpl,\n },\n // Entity Provider\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMConversationModuleEntityProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Menu Provider\n // {\n // provide: AXP_MENU_PROVIDER,\n // useClass: AXMConversationMenuProvider,\n // multi: true,\n // },\n // Conversation Module\n importProvidersFrom(AXConversationModule.forRoot()),\n DatePipe,\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsa0JBQWtCLEVB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QUFTLEVBQUU7d0JBQ1QsV0FBVzt3QkFDWDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUscUJBQXFCO3lCQUNoQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsY0FBYzs0QkFDdkIsUUFBUSxFQUFFLGtCQUFrQjt5QkFDN0I7d0JBQ0QsNEJBQTRCO3dCQUM1Qjs0QkFDRSxPQUFPLEVBQUUsY0FBYzs0QkFDdkIsUUFBUSxFQUFFLGtCQUFrQjt5QkFDN0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLHFCQUFxQjt5QkFDaEM7d0JBQ0Qsa0JBQWtCO3dCQUNsQjs0QkFDRSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxRQUFRLEVBQUUsbUNBQW1DOzRCQUM3QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUsZUFBZTs0QkFDekIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLE1BQU07NEJBQ2YsS0FBSyxFQUFFLElBQUk7NEJBQ1gsVUFBVSxFQUFFLGFBQWE7eUJBQzFCO3dCQUNELGdCQUFnQjt3QkFDaEIsSUFBSTt3QkFDSixnQ0FBZ0M7d0JBQ2hDLDJDQUEyQzt3QkFDM0MsaUJBQWlCO3dCQUNqQixLQUFLO3dCQUNMLHNCQUFzQjt3QkFDdEIsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ25ELFFBQVE7cUJBQ1Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb252ZXJzYXRpb24nO1xuaW1wb3J0IHsgQVhQQXV0aEd1YXJkIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQUm9vdExheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW1wb3J0UHJvdmlkZXJzRnJvbSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhNUm9vbVNlcnZpY2UgfSBmcm9tICcuL2VudGl0aWVzJztcbmltcG9ydCB7IEFYTU1lc3NhZ2VTZXJ2aWNlLCBBWE1NZXNzYWdlU2VydmljZUltcGwgfSBmcm9tICcuL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTVJvb21TZXJ2aWNlSW1wbCB9IGZyb20gJy4vZW50aXRpZXMvcm9vbS9yb29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uTW9kdWxlRW50aXR5UHJvdmlkZXIgfSBmcm9tICcuL2VudGl0eS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWE1NZW51UHJvdmlkZXIgfSBmcm9tICcuL21lbnUucHJvdmlkZXInO1xuXG5pbXBvcnQgeyBBWFBfTUVOVV9QUk9WSURFUiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUFdvcmtmbG93TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQge1xuICBBWE1DaGF0U2VydmljZSxcbiAgQVhNQ2hhdFNlcnZpY2VJbXBsLFxuICBBWE1Db21tZW50UG9wdXBTdGFydEFjdGlvbixcbiAgQVhNQ29tbWVudFBvcHVwV29ya2Zsb3csXG4gIEFYTUNvbW1lbnRTZXJ2aWNlLFxuICBBWE1Db21tZW50U2VydmljZUltcGwsXG4gIEFYUENvbW1lbnRXaWRnZXQsXG59IGZyb20gJy4vZmVhdHVyZXMnO1xuXG5mdW5jdGlvbiByb3V0ZXNGYWN0b3J5KCk6IFJvdXRlcyB7XG4gIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICAgIHtcbiAgICAgIHBhdGg6ICc6YXBwL2NoYXQnLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gQVhQUm9vdExheW91dENvbXBvbmVudDtcbiAgICAgIH0sXG4gICAgICB0aXRsZTogJ0NoYXQnLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9mZWF0dXJlcy9jaGF0L2NoYXQuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWE1DaGF0Q29tcG9uZW50KSxcbiAgICAgICAgICBkYXRhOiB7IHJldXNlOiB0cnVlIH0sXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGF0aDogJzppZCcsXG4gICAgICAgICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL2NoYXQvY29tcG9uZW50cy9jaGF0LXByZXZpZXcvY2hhdC1wcmV2aWV3LmNvbXBvbmVudCcpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAoYykgPT4gYy5BWE1DaGF0UHJldmlld0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHBhdGg6ICc6YXBwL2NvbW1lbnRzL3QvOnJlZnJlbmNlVHlwZS9pLzpyZWZyZW5jZUlkL3MvOnN1YmplY3QnLFxuICAgICAgdGl0bGU6ICdDb21tZW50cycsXG4gICAgICBjYW5BY3RpdmF0ZTogW0FYUEF1dGhHdWFyZF0sXG4gICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBBWFBSb290TGF5b3V0Q29tcG9uZW50LFxuICAgICAgLy8gcmVzb2x2ZToge1xuICAgICAgLy8gICByZWZyZW5jZVR5cGU6IHtcbiAgICAgIC8vICAgICByZXNvbHZlOiByZWZyZW5jZVR5cGVSZXNvbHZlcixcbiAgICAgIC8vICAgfSxcbiAgICAgIC8vICAgcmVmcmVuY2VJZDoge1xuICAgICAgLy8gICAgIHJlc29sdmU6IHJlZnJlbmNlSWRSZXNvbHZlcixcbiAgICAgIC8vICAgfSxcbiAgICAgIC8vICAgc3ViamVjdDoge1xuICAgICAgLy8gICAgIHJlc29sdmU6IHN1YmplY3RSZXNvbHZlcixcbiAgICAgIC8vICAgfSxcbiAgICAgIC8vIH0sXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYTUNvbW1lbnRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHBhdGg6ICc6YXBwL2NvbW1lbnRzLycsXG4gICAgICB0aXRsZTogJ0NvbW1lbnRzJyxcbiAgICAgIGNhbkFjdGl2YXRlOiBbQVhQQXV0aEd1YXJkXSxcbiAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IEFYUFJvb3RMYXlvdXRDb21wb25lbnQsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYTUNvbW1lbnRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuICByZXR1cm4gcm91dGVzO1xufVxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICB3aWRnZXRzOiBbQVhQQ29tbWVudFdpZGdldF0sXG4gICAgfSksXG4gICAgQVhQV29ya2Zsb3dNb2R1bGUuZm9yQ2hpbGQoe1xuICAgICAgYWN0aW9uczoge1xuICAgICAgICAnc2hvdy1jb21tZW50LXBvcHVwLWFjdGlvbic6IEFYTUNvbW1lbnRQb3B1cFN0YXJ0QWN0aW9uLFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93czoge1xuICAgICAgICAnc2hvdy1jb21tZW50LXBvcHVwJzogQVhNQ29tbWVudFBvcHVwV29ya2Zsb3csXG4gICAgICB9LFxuICAgIH0pLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgLy8gTW9kdWxlc1xuICAgIFJvdXRlck1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gU2VydmljZXNcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWE1NZXNzYWdlU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBWE1NZXNzYWdlU2VydmljZUltcGwsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWE1Sb29tU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBWE1Sb29tU2VydmljZUltcGwsXG4gICAgfSxcbiAgICAvLyBDaGF0IGFuZCBDb21tZW50IFNlcnZpY2VzXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNQ2hhdFNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhNQ2hhdFNlcnZpY2VJbXBsLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNQ29tbWVudFNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhNQ29tbWVudFNlcnZpY2VJbXBsLFxuICAgIH0sXG4gICAgLy8gRW50aXR5IFByb3ZpZGVyXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1Db252ZXJzYXRpb25Nb2R1bGVFbnRpdHlQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX01FTlVfUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhNTWVudVByb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBST1VURVMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUZhY3Rvcnk6IHJvdXRlc0ZhY3RvcnksXG4gICAgfSxcbiAgICAvLyBNZW51IFByb3ZpZGVyXG4gICAgLy8ge1xuICAgIC8vICAgcHJvdmlkZTogQVhQX01FTlVfUFJPVklERVIsXG4gICAgLy8gICB1c2VDbGFzczogQVhNQ29udmVyc2F0aW9uTWVudVByb3ZpZGVyLFxuICAgIC8vICAgbXVsdGk6IHRydWUsXG4gICAgLy8gfSxcbiAgICAvLyBDb252ZXJzYXRpb24gTW9kdWxlXG4gICAgaW1wb3J0UHJvdmlkZXJzRnJvbShBWENvbnZlcnNhdGlvbk1vZHVsZS5mb3JSb290KCkpLFxuICAgIERhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Db252ZXJzYXRpb25Nb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvYWNvcmV4LW1vZHVsZXMtY29udmVyc2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i3","i1","i2","i4","i5","i6","i7","i8","i9"],"mappings":"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"}