@acorex/components 20.2.9 → 20.2.11

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 (213) hide show
  1. package/fesm2022/acorex-components-accordion.mjs +10 -10
  2. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-components-action-sheet.mjs +10 -10
  4. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  5. package/fesm2022/acorex-components-alert.mjs +7 -7
  6. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  7. package/fesm2022/acorex-components-aspect-ratio.mjs +3 -3
  8. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  9. package/fesm2022/acorex-components-audio-wave.mjs +7 -7
  10. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  11. package/fesm2022/acorex-components-autocomplete.mjs +7 -7
  12. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  13. package/fesm2022/acorex-components-avatar.mjs +10 -10
  14. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  15. package/fesm2022/acorex-components-badge.mjs +7 -7
  16. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  17. package/fesm2022/acorex-components-bottom-navigation.mjs +10 -10
  18. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  19. package/fesm2022/acorex-components-breadcrumbs.mjs +10 -10
  20. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  21. package/fesm2022/acorex-components-button-group.mjs +10 -10
  22. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  23. package/fesm2022/acorex-components-button.mjs +13 -13
  24. package/fesm2022/acorex-components-button.mjs.map +1 -1
  25. package/fesm2022/acorex-components-calendar.mjs +13 -13
  26. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  27. package/fesm2022/acorex-components-check-box.mjs +7 -7
  28. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  29. package/fesm2022/acorex-components-chips.mjs +7 -7
  30. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  31. package/fesm2022/acorex-components-circular-progress.mjs +7 -7
  32. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  33. package/fesm2022/acorex-components-code-editor.mjs +7 -7
  34. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  35. package/fesm2022/acorex-components-collapse.mjs +11 -26
  36. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  37. package/fesm2022/acorex-components-color-box.mjs +7 -7
  38. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  39. package/fesm2022/acorex-components-color-palette.mjs +28 -28
  40. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  41. package/fesm2022/acorex-components-command.mjs +7 -7
  42. package/fesm2022/acorex-components-command.mjs.map +1 -1
  43. package/fesm2022/acorex-components-comment.mjs +28 -28
  44. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  45. package/fesm2022/acorex-components-conversation.mjs +50 -59
  46. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  47. package/fesm2022/acorex-components-cron-job.mjs +46 -46
  48. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  49. package/fesm2022/acorex-components-data-list.mjs +3 -3
  50. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  51. package/fesm2022/acorex-components-data-pager.mjs +31 -31
  52. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  53. package/fesm2022/acorex-components-data-table.mjs +37 -37
  54. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  55. package/fesm2022/acorex-components-datetime-box.mjs +7 -7
  56. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  57. package/fesm2022/acorex-components-datetime-input.mjs +7 -7
  58. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  59. package/fesm2022/acorex-components-datetime-picker.mjs +7 -7
  60. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  61. package/fesm2022/acorex-components-decorators.mjs +25 -25
  62. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  63. package/fesm2022/acorex-components-dialog.mjs +10 -10
  64. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  65. package/fesm2022/acorex-components-drawer-2.mjs +10 -10
  66. package/fesm2022/acorex-components-drawer-2.mjs.map +1 -1
  67. package/fesm2022/acorex-components-drawer.mjs +13 -13
  68. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  69. package/fesm2022/acorex-components-dropdown-button.mjs +7 -7
  70. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  71. package/fesm2022/acorex-components-dropdown.mjs +13 -13
  72. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  73. package/fesm2022/acorex-components-file-explorer.mjs +25 -25
  74. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
  75. package/fesm2022/acorex-components-flow-chart.mjs +16 -16
  76. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  77. package/fesm2022/acorex-components-form.mjs +16 -16
  78. package/fesm2022/acorex-components-form.mjs.map +1 -1
  79. package/fesm2022/acorex-components-grid-layout-builder.mjs +10 -10
  80. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  81. package/fesm2022/acorex-components-image-editor.mjs +34 -34
  82. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  83. package/fesm2022/acorex-components-image.mjs +7 -7
  84. package/fesm2022/acorex-components-image.mjs.map +1 -1
  85. package/fesm2022/acorex-components-json-viewer.mjs +7 -7
  86. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  87. package/fesm2022/acorex-components-kanban.mjs +3 -3
  88. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  89. package/fesm2022/acorex-components-kbd.mjs +6 -6
  90. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  91. package/fesm2022/acorex-components-label.mjs +7 -7
  92. package/fesm2022/acorex-components-label.mjs.map +1 -1
  93. package/fesm2022/acorex-components-list.mjs +7 -7
  94. package/fesm2022/acorex-components-list.mjs.map +1 -1
  95. package/fesm2022/acorex-components-loading-dialog.mjs +10 -10
  96. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  97. package/fesm2022/acorex-components-loading.mjs +16 -16
  98. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  99. package/fesm2022/acorex-components-map.mjs +13 -13
  100. package/fesm2022/acorex-components-map.mjs.map +1 -1
  101. package/fesm2022/acorex-components-media-viewer.mjs +34 -34
  102. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  103. package/fesm2022/acorex-components-menu.mjs +16 -16
  104. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  105. package/fesm2022/{acorex-components-modal-acorex-components-modal-h5Y-qcbh.mjs → acorex-components-modal-acorex-components-modal-CBjZvGmq.mjs} +21 -21
  106. package/fesm2022/{acorex-components-modal-acorex-components-modal-h5Y-qcbh.mjs.map → acorex-components-modal-acorex-components-modal-CBjZvGmq.mjs.map} +1 -1
  107. package/fesm2022/{acorex-components-modal-modal-content.component-B6tyMLdU.mjs → acorex-components-modal-modal-content.component-CEMHSbv-.mjs} +6 -29
  108. package/fesm2022/acorex-components-modal-modal-content.component-CEMHSbv-.mjs.map +1 -0
  109. package/fesm2022/acorex-components-modal.mjs +1 -1
  110. package/fesm2022/acorex-components-navbar.mjs +7 -7
  111. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  112. package/fesm2022/acorex-components-notification.mjs +10 -10
  113. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  114. package/fesm2022/acorex-components-number-box-2.mjs +3 -3
  115. package/fesm2022/acorex-components-number-box-2.mjs.map +1 -1
  116. package/fesm2022/acorex-components-number-box.mjs +7 -7
  117. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  118. package/fesm2022/acorex-components-otp.mjs +7 -7
  119. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  120. package/fesm2022/acorex-components-page.mjs +10 -10
  121. package/fesm2022/acorex-components-page.mjs.map +1 -1
  122. package/fesm2022/acorex-components-paint.mjs +25 -25
  123. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  124. package/fesm2022/acorex-components-password-box.mjs +10 -10
  125. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  126. package/fesm2022/acorex-components-pdf-reader.mjs +7 -7
  127. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  128. package/fesm2022/acorex-components-phone-box.mjs +7 -7
  129. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  130. package/fesm2022/acorex-components-picker.mjs +13 -13
  131. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  132. package/fesm2022/acorex-components-popover.mjs +7 -7
  133. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  134. package/fesm2022/acorex-components-popup.mjs +10 -10
  135. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  136. package/fesm2022/acorex-components-progress-bar.mjs +7 -7
  137. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  138. package/fesm2022/acorex-components-qrcode.mjs +7 -7
  139. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  140. package/fesm2022/acorex-components-query-builder.mjs +7 -7
  141. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  142. package/fesm2022/acorex-components-radio.mjs +7 -7
  143. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  144. package/fesm2022/acorex-components-rail-navigation.mjs +13 -13
  145. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  146. package/fesm2022/acorex-components-range-slider.mjs +7 -7
  147. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  148. package/fesm2022/acorex-components-rate-picker.mjs +7 -7
  149. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  150. package/fesm2022/acorex-components-rest-api-generator.mjs +22 -22
  151. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  152. package/fesm2022/acorex-components-result.mjs +7 -7
  153. package/fesm2022/acorex-components-result.mjs.map +1 -1
  154. package/fesm2022/acorex-components-routing-progress.mjs +7 -7
  155. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  156. package/fesm2022/acorex-components-rrule.mjs +9 -9
  157. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  158. package/fesm2022/acorex-components-scheduler.mjs +34 -34
  159. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  160. package/fesm2022/acorex-components-scss.mjs +4 -4
  161. package/fesm2022/acorex-components-scss.mjs.map +1 -1
  162. package/fesm2022/acorex-components-search-box.mjs +7 -7
  163. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  164. package/fesm2022/acorex-components-select-box.mjs +7 -7
  165. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  166. package/fesm2022/acorex-components-selection-list-2.mjs +7 -7
  167. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  168. package/fesm2022/acorex-components-selection-list.mjs +7 -7
  169. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  170. package/fesm2022/acorex-components-side-menu.mjs +19 -34
  171. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  172. package/fesm2022/acorex-components-skeleton.mjs +7 -7
  173. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  174. package/fesm2022/acorex-components-slider.mjs +7 -7
  175. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  176. package/fesm2022/acorex-components-sliding-item.mjs +13 -13
  177. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  178. package/fesm2022/acorex-components-step-wizard.mjs +13 -13
  179. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  180. package/fesm2022/acorex-components-switch.mjs +10 -10
  181. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  182. package/fesm2022/acorex-components-tabs.mjs +13 -13
  183. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  184. package/fesm2022/acorex-components-tag-box.mjs +7 -7
  185. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  186. package/fesm2022/acorex-components-tag.mjs +7 -7
  187. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  188. package/fesm2022/acorex-components-text-area.mjs +7 -7
  189. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  190. package/fesm2022/acorex-components-text-box.mjs +10 -10
  191. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  192. package/fesm2022/acorex-components-time-duration.mjs +21 -10
  193. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  194. package/fesm2022/acorex-components-time-line.mjs +11 -26
  195. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  196. package/fesm2022/acorex-components-toast.mjs +10 -10
  197. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  198. package/fesm2022/acorex-components-toolbar.mjs +7 -7
  199. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  200. package/fesm2022/acorex-components-tooltip.mjs +10 -10
  201. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  202. package/fesm2022/acorex-components-tree-view.mjs +13 -42
  203. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  204. package/fesm2022/acorex-components-uploader.mjs +23 -38
  205. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  206. package/fesm2022/acorex-components-video-player.mjs +7 -7
  207. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  208. package/fesm2022/acorex-components-wysiwyg.mjs +34 -34
  209. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  210. package/package.json +11 -11
  211. package/side-menu/index.d.ts +2 -2
  212. package/time-duration/index.d.ts +3 -1
  213. package/fesm2022/acorex-components-modal-modal-content.component-B6tyMLdU.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-conversation.mjs","sources":["../tmp-esm2022/conversation/lib/classes/events.interface.js","../tmp-esm2022/conversation/lib/services/conversation.service.js","../tmp-esm2022/conversation/lib/services/recording.service.js","../tmp-esm2022/conversation/lib/conversation-container/conversation-container.component.js","../tmp-esm2022/conversation/lib/conversation-input/conversation-input.component.js","../tmp-esm2022/conversation/lib/services/conversation-message-type-registry.service.js","../tmp-esm2022/conversation/lib/conversation-message/conversation-message.component.js","../tmp-esm2022/conversation/lib/conversation.types.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.js","../tmp-esm2022/conversation/lib/conversation-view/conversation-view.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-file/conversation-message-file.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-image-popup/conversation-message-image-popup.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-image/conversation-message-image.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-text/conversation-message-text.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-video/conversation-message-video.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.js","../tmp-esm2022/conversation/lib/conversation.module.js","../tmp-esm2022/conversation/acorex-components-conversation.js"],"sourcesContent":["import { AXEvent } from '@acorex/cdk/common';\nexport class AXConversationActionEvent extends AXEvent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY2xhc3Nlcy9ldmVudHMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWUsTUFBTSxvQkFBb0IsQ0FBQztBQUsxRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsT0FBTztDQUVyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRXZlbnQsIEFYSHRtbEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBWElucHV0RmlsZUNoYW5nZSBleHRlbmRzIEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+IHtcbiAgZGF0YT86IGFueTtcbn1cbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbkFjdGlvbkV2ZW50IGV4dGVuZHMgQVhFdmVudCB7XG4gIGRhdGE6IGFueTtcbn1cbiJdfQ==","import { Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXConversationService {\n constructor() {\n this.replyId = signal('', ...(ngDevMode ? [{ debugName: \"replyId\" }] : []));\n this.chats = signal([], ...(ngDevMode ? [{ debugName: \"chats\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL3NlcnZpY2VzL2NvbnZlcnNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUluRCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBRUUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxFQUFFLG1EQUFDLENBQUM7UUFDckIsVUFBSyxHQUFHLE1BQU0sQ0FBMEIsRUFBRSxpREFBQyxDQUFDO0tBQzdDOzhHQUhZLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25TZXJ2aWNlIHtcbiAgcmVwbHlJZCA9IHNpZ25hbCgnJyk7XG4gIGNoYXRzID0gc2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZVtdPihbXSk7XG59XG4iXX0=","import { Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXRecordingService {\n constructor() {\n this.audioBlobs = [];\n this.streamBeingCaptured = null;\n this.timer = signal('00:0', ...(ngDevMode ? [{ debugName: \"timer\" }] : []));\n this.time = {\n seconds: 0,\n minutes: 0,\n hours: 0,\n };\n }\n /**\n * Starts audio recording using the browser's MediaRecorder API.\n *\n * @returns Promise<void> - Resolves when recording starts successfully, rejects if not supported.\n */\n startRecording() {\n if (!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia)) {\n return Promise.reject(new Error('mediaDevices API or getUserMedia method is not supported in this browser.'));\n }\n else {\n return navigator.mediaDevices.getUserMedia({ audio: true }).then((stream) => {\n this.streamBeingCaptured = stream;\n this.mediaRecorder = new MediaRecorder(stream);\n this.audioBlobs = [];\n this.mediaRecorder.addEventListener('dataavailable', (event) => {\n this.audioBlobs.push(event.data);\n });\n this.mediaRecorder.start();\n this.timerInterval = setInterval(() => {\n this.calculateTime();\n }, 1000);\n });\n }\n }\n /**\n * Ends the current recording session and returns the recorded audio blob.\n *\n * @returns Promise<Blob> - Resolves with the recorded audio blob.\n */\n endRecording() {\n return new Promise((resolve) => {\n const mimeType = this.mediaRecorder?.mimeType;\n this.mediaRecorder?.addEventListener('stop', () => {\n const audioBlob = new Blob(this.audioBlobs, { type: mimeType });\n resolve(audioBlob);\n });\n this.mediaRecorder?.stop();\n this.streamBeingCaptured.getTracks().forEach((track) => track.stop());\n this.mediaRecorder = null;\n this.streamBeingCaptured = null;\n this.resetTimer();\n });\n }\n /**\n * Calculates and updates the recording time, incrementing seconds, minutes, and hours as needed.\n */\n calculateTime() {\n this.time.seconds++;\n if (this.time.seconds >= 60) {\n this.time.seconds = 0;\n this.time.minutes++;\n if (this.time.minutes >= 60) {\n this.time.minutes = 0;\n this.time.hours++;\n }\n }\n const formattedTime = (this.time.hours > 0 ? this.time.hours + ':' : '') +\n (this.time.minutes < 10 ? '0' + this.time.minutes : this.time.minutes) +\n ':' +\n (this.time.seconds < 10 ? '0' + this.time.seconds : this.time.seconds);\n this.timer.set(formattedTime);\n }\n /**\n * Resets the recording timer to zero and clears the timer interval.\n */\n resetTimer() {\n clearInterval(this.timerInterval);\n this.time.seconds = 0;\n this.time.minutes = 0;\n this.time.hours = 0;\n this.timer.set('00:0');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRecordingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRecordingService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRecordingService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL3NlcnZpY2VzL3JlY29yZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVFLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFFdkIsd0JBQW1CLEdBQVEsSUFBSSxDQUFDO1FBRWhDLFVBQUssR0FBMkIsTUFBTSxDQUFDLE1BQU0saURBQUMsQ0FBQztRQUVyQyxTQUFJLEdBQUc7WUFDZixPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxDQUFDO1lBQ1YsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO0tBaUZIO0lBN0VDOzs7O09BSUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDckUsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUMsQ0FBQztRQUNoSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDMUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLElBQUks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QUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDOzhHQTNGVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFdyaXRhYmxlU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYUmVjb3JkaW5nU2VydmljZSB7XG4gIGF1ZGlvQmxvYnM6IGFueVtdID0gW107XG4gIG1lZGlhUmVjb3JkZXI6IE1lZGlhUmVjb3JkZXIgfCBudWxsO1xuICBzdHJlYW1CZWluZ0NhcHR1cmVkOiBhbnkgPSBudWxsO1xuXG4gIHRpbWVyOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+ID0gc2lnbmFsKCcwMDowJyk7XG5cbiAgcHJvdGVjdGVkIHRpbWUgPSB7XG4gICAgc2Vjb25kczogMCxcbiAgICBtaW51dGVzOiAwLFxuICAgIGhvdXJzOiAwLFxuICB9O1xuXG4gIHByb3RlY3RlZCB0aW1lckludGVydmFsO1xuXG4gIC8qKlxuICAgKiBTdGFydHMgYXVkaW8gcmVjb3JkaW5nIHVzaW5nIHRoZSBicm93c2VyJ3MgTWVkaWFSZWNvcmRlciBBUEkuXG4gICAqXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD4gLSBSZXNvbHZlcyB3aGVuIHJlY29yZGluZyBzdGFydHMgc3VjY2Vzc2Z1bGx5LCByZWplY3RzIGlmIG5vdCBzdXBwb3J0ZWQuXG4gICAqL1xuICBzdGFydFJlY29yZGluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIShuYXZpZ2F0b3IubWVkaWFEZXZpY2VzICYmIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignbWVkaWFEZXZpY2VzIEFQSSBvciBnZXRVc2VyTWVkaWEgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLicpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSkudGhlbigoc3RyZWFtKSA9PiB7XG4gICAgICAgIHRoaXMuc3RyZWFtQmVpbmdDYXB0dXJlZCA9IHN0cmVhbTtcbiAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtKTtcbiAgICAgICAgdGhpcy5hdWRpb0Jsb2JzID0gW107XG4gICAgICAgIHRoaXMubWVkaWFSZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5hdWRpb0Jsb2JzLnB1c2goZXZlbnQuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1lZGlhUmVjb3JkZXIuc3RhcnQoKTtcbiAgICAgICAgdGhpcy50aW1lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlVGltZSgpO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmRzIHRoZSBjdXJyZW50IHJlY29yZGluZyBzZXNzaW9uIGFuZCByZXR1cm5zIHRoZSByZWNvcmRlZCBhdWRpbyBibG9iLlxuICAgKlxuICAgKiBAcmV0dXJucyBQcm9taXNlPEJsb2I+IC0gUmVzb2x2ZXMgd2l0aCB0aGUgcmVjb3JkZWQgYXVkaW8gYmxvYi5cbiAgICovXG4gIGVuZFJlY29yZGluZygpOiBQcm9taXNlPEJsb2I+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG1pbWVUeXBlID0gdGhpcy5tZWRpYVJlY29yZGVyPy5taW1lVHlwZTtcbiAgICAgIHRoaXMubWVkaWFSZWNvcmRlcj8uYWRkRXZlbnRMaXN0ZW5lcignc3RvcCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgYXVkaW9CbG9iID0gbmV3IEJsb2IodGhpcy5hdWRpb0Jsb2JzLCB7IHR5cGU6IG1pbWVUeXBlIH0pO1xuICAgICAgICByZXNvbHZlKGF1ZGlvQmxvYik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubWVkaWFSZWNvcmRlcj8uc3RvcCgpO1xuICAgICAgdGhpcy5zdHJlYW1CZWluZ0NhcHR1cmVkLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrKSA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgdGhpcy5tZWRpYVJlY29yZGVyID0gbnVsbDtcbiAgICAgIHRoaXMuc3RyZWFtQmVpbmdDYXB0dXJlZCA9IG51bGw7XG4gICAgICB0aGlzLnJlc2V0VGltZXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIGFuZCB1cGRhdGVzIHRoZSByZWNvcmRpbmcgdGltZSwgaW5jcmVtZW50aW5nIHNlY29uZHMsIG1pbnV0ZXMsIGFuZCBob3VycyBhcyBuZWVkZWQuXG4gICAqL1xuICBjYWxjdWxhdGVUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMudGltZS5zZWNvbmRzKys7XG4gICAgaWYgKHRoaXMudGltZS5zZWNvbmRzID49IDYwKSB7XG4gICAgICB0aGlzLnRpbWUuc2Vjb25kcyA9IDA7XG4gICAgICB0aGlzLnRpbWUubWludXRlcysrO1xuICAgICAgaWYgKHRoaXMudGltZS5taW51dGVzID49IDYwKSB7XG4gICAgICAgIHRoaXMudGltZS5taW51dGVzID0gMDtcbiAgICAgICAgdGhpcy50aW1lLmhvdXJzKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVkVGltZSA9XG4gICAgICAodGhpcy50aW1lLmhvdXJzID4gMCA/IHRoaXMudGltZS5ob3VycyArICc6JyA6ICcnKSArXG4gICAgICAodGhpcy50aW1lLm1pbnV0ZXMgPCAxMCA/ICcwJyArIHRoaXMudGltZS5taW51dGVzIDogdGhpcy50aW1lLm1pbnV0ZXMpICtcbiAgICAgICc6JyArXG4gICAgICAodGhpcy50aW1lLnNlY29uZHMgPCAxMCA/ICcwJyArIHRoaXMudGltZS5zZWNvbmRzIDogdGhpcy50aW1lLnNlY29uZHMpO1xuXG4gICAgdGhpcy50aW1lci5zZXQoZm9ybWF0dGVkVGltZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSByZWNvcmRpbmcgdGltZXIgdG8gemVybyBhbmQgY2xlYXJzIHRoZSB0aW1lciBpbnRlcnZhbC5cbiAgICovXG4gIHJlc2V0VGltZXIoKTogdm9pZCB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVySW50ZXJ2YWwpO1xuICAgIHRoaXMudGltZS5zZWNvbmRzID0gMDtcbiAgICB0aGlzLnRpbWUubWludXRlcyA9IDA7XG4gICAgdGhpcy50aW1lLmhvdXJzID0gMDtcbiAgICB0aGlzLnRpbWVyLnNldCgnMDA6MCcpO1xuICB9XG59XG4iXX0=","import { AXComponent, AXFocusableComponent, AXValuableComponent } from '@acorex/cdk/common';\nimport { Component, effect, forwardRef, inject, input, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AXConversationService } from '../services/conversation.service';\nimport { AXRecordingService } from '../services/recording.service';\nimport * as i0 from \"@angular/core\";\n/**\n * A container for displaying and managing conversations.\n * @category Components\n */\nexport class AXConversationContainerComponent {\n constructor() {\n this.chatData = input([], ...(ngDevMode ? [{ debugName: \"chatData\" }] : []));\n this.conversationService = inject(AXConversationService);\n this.#init = effect(() => {\n this.conversationService.chats.set(this.chatData());\n }, ...(ngDevMode ? [{ debugName: \"#init\" }] : []));\n }\n #init;\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.3\", type: AXConversationContainerComponent, isStandalone: true, selector: \"ax-conversation-container\", inputs: { chatData: { classPropertyName: \"chatData\", publicName: \"chatData\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [\n { provide: AXComponent, useExisting: AXConversationContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXConversationContainerComponent },\n { provide: AXValuableComponent, useExisting: AXConversationContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXConversationContainerComponent),\n multi: true,\n },\n AXConversationService,\n AXRecordingService,\n ], ngImport: i0, template: \"<div class=\\\"ax-conversation-container\\\">\\n <ng-content> </ng-content>\\n</div>\\n\", styles: [\"ax-conversation-container{--ax-comp-conversation-other-color: var(--ax-sys-color-surface);--ax-comp-conversation-other-color-fore: var(--ax-sys-color-on-surface);--ax-comp-conversation-status-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-conversation-other-bar-color: var(--ax-sys-color-primary-light-surface);--ax-comp-conversation-other-progress-color: var(--ax-sys-color-on-primary-light-surface);--ax-comp-conversation-own-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-conversation-own-color-fore: var(--ax-sys-color-primary-darkest-surface);--ax-comp-conversation-own-reply-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-conversation-own-reply-color-fore: var(--ax-sys-color-on-primary-dark-surface);--ax-comp-conversation-other-reply-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-conversation-other-reply-color-fore: var(--ax-sys-color-on-primary-lighter-surface);--ax-comp-conversation-border-color: var(--ax-sys-color-primary-darkest-surface);--ax-comp-conversation-own-bar-color: var(--ax-sys-color-primary-light-surface);--ax-comp-conversation-own-progress-color: var(--ax-sys-color-on-primary-light-surface)}ax-conversation-container{width:100%;display:block}ax-conversation-container>.ax-editor-container{display:block;height:100%!important}\\n\"], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-container', encapsulation: ViewEncapsulation.None, providers: [\n { provide: AXComponent, useExisting: AXConversationContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXConversationContainerComponent },\n { provide: AXValuableComponent, useExisting: AXConversationContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXConversationContainerComponent),\n multi: true,\n },\n AXConversationService,\n AXRecordingService,\n ], template: \"<div class=\\\"ax-conversation-container\\\">\\n <ng-content> </ng-content>\\n</div>\\n\", styles: [\"ax-conversation-container{--ax-comp-conversation-other-color: var(--ax-sys-color-surface);--ax-comp-conversation-other-color-fore: var(--ax-sys-color-on-surface);--ax-comp-conversation-status-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-conversation-other-bar-color: var(--ax-sys-color-primary-light-surface);--ax-comp-conversation-other-progress-color: var(--ax-sys-color-on-primary-light-surface);--ax-comp-conversation-own-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-conversation-own-color-fore: var(--ax-sys-color-primary-darkest-surface);--ax-comp-conversation-own-reply-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-conversation-own-reply-color-fore: var(--ax-sys-color-on-primary-dark-surface);--ax-comp-conversation-other-reply-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-conversation-other-reply-color-fore: var(--ax-sys-color-on-primary-lighter-surface);--ax-comp-conversation-border-color: var(--ax-sys-color-primary-darkest-surface);--ax-comp-conversation-own-bar-color: var(--ax-sys-color-primary-light-surface);--ax-comp-conversation-own-progress-color: var(--ax-sys-color-on-primary-light-surface)}ax-conversation-container{width:100%;display:block}ax-conversation-container>.ax-editor-container{display:block;height:100%!important}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1jb250YWluZXIvY29udmVyc2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1jb250YWluZXIvY29udmVyc2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBRW5FOzs7R0FHRztBQW1CSCxNQUFNLE9BQU8sZ0NBQWdDO0lBbEI3QztRQW1CRSxhQUFRLEdBQUcsS0FBSyxDQUEwQixFQUFFLG9EQUFDLENBQUM7UUFDdEMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFNUQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxpREFBQyxDQUFDO0tBQ0o7SUFIQyxLQUFLLENBRUY7OEdBTlEsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MscU5BYmhDO1lBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRTtZQUN2RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZ0NBQWdDLEVBQUU7WUFDaEYsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGdDQUFnQyxFQUFFO1lBQy9FO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7Z0JBQy9ELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxxQkFBcUI7WUFDckIsa0JBQWtCO1NBQ25CLDBCQzNCSCxtRkFHQTs7MkZEMEJhLGdDQUFnQztrQkFsQjVDLFNBQVM7K0JBQ0UsMkJBQTJCLGlCQUd0QixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLGtDQUFrQyxFQUFFO3dCQUN2RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLGtDQUFrQyxFQUFFO3dCQUNoRixFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLGtDQUFrQyxFQUFFO3dCQUMvRTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQ0FBaUMsQ0FBQzs0QkFDL0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QscUJBQXFCO3dCQUNyQixrQkFBa0I7cUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQsIEFYRm9jdXNhYmxlQ29tcG9uZW50LCBBWFZhbHVhYmxlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBmb3J3YXJkUmVmLCBpbmplY3QsIGlucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29udmVyc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhSZWNvcmRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVjb3JkaW5nLnNlcnZpY2UnO1xuXG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBkaXNwbGF5aW5nIGFuZCBtYW5hZ2luZyBjb252ZXJzYXRpb25zLlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25Db250YWluZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25Db250YWluZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENvbnZlcnNhdGlvbkNvbnRhaW5lckNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhDb252ZXJzYXRpb25Db250YWluZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICBBWENvbnZlcnNhdGlvblNlcnZpY2UsXG4gICAgQVhSZWNvcmRpbmdTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbkNvbnRhaW5lckNvbXBvbmVudCB7XG4gIGNoYXREYXRhID0gaW5wdXQ8QVhDb252ZXJzYXRpb25NZXNzYWdlW10+KFtdKTtcbiAgcHJpdmF0ZSBjb252ZXJzYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uU2VydmljZSk7XG5cbiAgI2luaXQgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5jaGF0cy5zZXQodGhpcy5jaGF0RGF0YSgpKTtcbiAgfSk7XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWNvbnRhaW5lclwiPlxuICA8bmctY29udGVudD4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=","import { AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, MXLookComponent, } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent, AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXLoadingSpinnerComponent } from '@acorex/components/loading';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, HostBinding, ViewChild, ViewEncapsulation, computed, contentChild, forwardRef, inject, input, output, signal, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { AXConversationService } from '../services/conversation.service';\nimport { AXRecordingService } from '../services/recording.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/decorators\";\n/**\n * An input component for entering conversation messages.\n *\n * @category Components\n */\nexport class AXConversationInputComponent extends classes((MXInputBaseValueComponent), MXLookComponent) {\n constructor() {\n super(...arguments);\n this.sendIcon = contentChild('ax-icon', ...(ngDevMode ? [{ debugName: \"sendIcon\" }] : []));\n this.onActionClose = output();\n this.conversationService = inject(AXConversationService);\n this.chats = computed(() => {\n return this.conversationService.chats();\n }, ...(ngDevMode ? [{ debugName: \"chats\" }] : []));\n this.actionIcon = signal(null, ...(ngDevMode ? [{ debugName: \"actionIcon\" }] : []));\n this.actionContent = signal(null, ...(ngDevMode ? [{ debugName: \"actionContent\" }] : []));\n this.actionShowState = signal(false, ...(ngDevMode ? [{ debugName: \"actionShowState\" }] : []));\n this.actionUser = signal(null, ...(ngDevMode ? [{ debugName: \"actionUser\" }] : []));\n this.actionCloseCallback = signal(() => {\n return;\n }, ...(ngDevMode ? [{ debugName: \"actionCloseCallback\" }] : []));\n this.replyChat = computed(() => {\n const findMessage = this.chats().find((item) => item.id === this.conversationService.replyId());\n return findMessage;\n }, ...(ngDevMode ? [{ debugName: \"replyChat\" }] : []));\n /** Maximum length of input text */\n this.maxLength = input(...(ngDevMode ? [undefined, { debugName: \"maxLength\" }] : []));\n /** Indicates if an attachment is present */\n this.hasAttachment = input(true, ...(ngDevMode ? [{ debugName: \"hasAttachment\" }] : []));\n /** Indicates if voice recording is enabled */\n this.hasVoice = input(true, ...(ngDevMode ? [{ debugName: \"hasVoice\" }] : []));\n this.hasEmoji = input(true, ...(ngDevMode ? [{ debugName: \"hasEmoji\" }] : []));\n this.isLoading = input(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /** Acceptable file types for attachment */\n this.acceptFileType = input('*', ...(ngDevMode ? [{ debugName: \"acceptFileType\" }] : []));\n /**\n * Emitted when the send button is clicked.\n *\n * @event\n */\n this.onSendClick = output();\n /**\n * Emitted when recording starts.\n *\n * @event\n */\n this.onStartRecording = output();\n /**\n * Emitted when recording is canceled.\n *\n * @event\n */\n this.onCancelRecording = output();\n this.onEnterPressed = output();\n /**\n * @ignore\n */\n this.recording = signal(false, ...(ngDevMode ? [{ debugName: \"recording\" }] : []));\n /**\n * @ignore\n */\n this.recordingService = inject(AXRecordingService);\n /**\n * @ignore\n */\n this._updateOn = 'change';\n this.shiftState = false;\n }\n setActionBoxContainer(icon, content, user, closeCallback) {\n this.actionIcon.set(icon);\n this.actionContent.set(content);\n this.actionShowState.set(true);\n this.actionUser.set(user);\n this.actionCloseCallback.set(closeCallback);\n }\n /**\n * @ignore\n */\n _handleModelChange(value) {\n this.commitValue(value, true);\n }\n /**\n * Initiates recording when the record button is clicked.\n * Emits an event when recording starts.\n * @ignore\n */\n handleRecordClick() {\n this.recording.set(true);\n this.recordingService\n ?.startRecording()\n .then(() => {\n this.onStartRecording.emit({\n component: this,\n data: { recording: true },\n isUserInteraction: true,\n });\n })\n .catch((e) => {\n throw e;\n });\n }\n /**\n * Cancels the recording and emits an event to indicate cancellation.\n * @ignore\n */\n handleCancelRecordingClick() {\n this.recording.set(false);\n this.onCancelRecording.emit({\n component: this,\n data: { value: null },\n });\n }\n keyDownHandler(e) {\n if (e.key === 'Shift') {\n this.shiftState = true;\n }\n this.onKeyDown.emit({\n component: this,\n nativeEvent: e,\n });\n }\n keyUpHandler(e) {\n if (e.key === 'Shift') {\n this.shiftState = false;\n }\n this.onKeyUp.emit({\n component: this,\n nativeEvent: e,\n });\n }\n keyPressHandler(e) {\n if (e.key === 'Enter' && !this.shiftState) {\n e.preventDefault();\n this.onEnterPressed.emit({ component: this });\n }\n this.onKeyPress.emit({\n component: this,\n nativeEvent: e,\n });\n }\n /**\n * Opens the file picker for attachment.\n * @ignore\n */\n handleAttachClick() {\n this.inputFile.nativeElement.click();\n }\n /**\n * Emits the selected files when the file input changes.\n * @ignore\n */\n handleChangeFile(event) {\n this.onSendClick.emit({\n component: this,\n data: { value: event.target.files, type: 'file' },\n });\n }\n /**\n * Emits the text value and optional replyChat when the send button is clicked.\n * @ignore\n */\n handleSendClick() {\n this.onSendClick.emit({\n component: this,\n data: { value: this.value, replyChat: this.replyChat() || null, type: 'text' },\n isUserInteraction: true,\n });\n this.actionShowState.set(false);\n }\n /**\n * Ends recording and emits the recorded voice data when the send voice button is clicked.\n * @ignore\n */\n handleSendVoiceClick() {\n this.recordingService.endRecording().then((c) => {\n this.recording.set(false);\n this.onSendClick.emit({\n component: this,\n data: { value: c, type: 'voice' },\n isUserInteraction: true,\n });\n });\n }\n /**\n * Clears the reply ID when closing a reply.\n * @ignore\n */\n closeReplyHandler() {\n this.actionShowState.set(false);\n this.actionCloseCallback();\n this.onActionClose.emit();\n }\n get __hostName() {\n return this.name;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationInputComponent, isStandalone: true, selector: \"ax-conversation-input\", inputs: { look: { classPropertyName: \"look\", publicName: \"look\", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: false, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: \"maxLength\", publicName: \"maxLength\", isSignal: true, isRequired: false, transformFunction: null }, hasAttachment: { classPropertyName: \"hasAttachment\", publicName: \"hasAttachment\", isSignal: true, isRequired: false, transformFunction: null }, hasVoice: { classPropertyName: \"hasVoice\", publicName: \"hasVoice\", isSignal: true, isRequired: false, transformFunction: null }, hasEmoji: { classPropertyName: \"hasEmoji\", publicName: \"hasEmoji\", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: \"isLoading\", publicName: \"isLoading\", isSignal: true, isRequired: false, transformFunction: null }, acceptFileType: { classPropertyName: \"acceptFileType\", publicName: \"acceptFileType\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onActionClose: \"onActionClose\", onSendClick: \"onSendClick\", onStartRecording: \"onStartRecording\", onCancelRecording: \"onCancelRecording\", onEnterPressed: \"onEnterPressed\" }, host: { properties: { \"attr.name\": \"this.__hostName\" } }, providers: [\n { provide: AXComponent, useExisting: AXConversationInputComponent },\n { provide: AXFocusableComponent, useExisting: AXConversationInputComponent },\n { provide: AXValuableComponent, useExisting: AXConversationInputComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXConversationInputComponent),\n multi: true,\n },\n ], queries: [{ propertyName: \"sendIcon\", first: true, predicate: [\"ax-icon\"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: \"inputFile\", first: true, predicate: [\"inputFile\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"@if (actionShowState()) {\\n <div class=\\\"ax-editor-reply-container ax-editor-container ax-{{ look }}\\\">\\n @if (actionUser()) {\\n <ax-text> {{ actionUser() }}</ax-text>\\n }\\n <div class=\\\"ax-reply-container\\\">\\n <div class=\\\"ax-reply-start\\\">\\n <i [class]=\\\"actionIcon()\\\"></i>\\n <p>{{ actionContent() }}</p>\\n </div>\\n <i (click)=\\\"closeReplyHandler()\\\" class=\\\"fa-solid fa-xmark ax-cursor-pointer\\\"></i>\\n </div>\\n </div>\\n}\\n\\n<div class=\\\"ax-conversation-input ax-editor-container ax-{{ look }}\\\" [class.ax-state-recording]=\\\"recording()\\\">\\n @if (recording()) {\\n <div class=\\\"ax-conversation-input-start-side\\\">\\n <span class=\\\"ax-record-dot\\\"></span>\\n <span>{{ recordingService.timer() }}</span>\\n </div>\\n <div class=\\\"ax-conversation-input-main-side\\\">\\n <ax-button\\n class=\\\"ax-sm\\\"\\n look=\\\"blank\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"'@acorex:common.actions.cancel' | translate | async\\\"\\n (onClick)=\\\"handleCancelRecordingClick()\\\"\\n ></ax-button>\\n </div>\\n <div class=\\\"ax-conversation-input-end-side\\\">\\n <ax-button look=\\\"solid\\\" color=\\\"danger\\\" class=\\\"ax-blob ax-sm\\\" (onClick)=\\\"handleSendVoiceClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-send\\\"></i>\\n </ax-icon>\\n </ax-button>\\n </div>\\n } @else {\\n @if (hasEmoji()) {\\n <div class=\\\"ax-conversation-input-start-side\\\">\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-emoji\\\"></i>\\n </ax-icon>\\n <ax-dropdown-panel>\\n <ng-container>\\n <div class=\\\"ax-emoji-container\\\">\\n <div>\\u26A0\\uFE0F</div>\\n <div>\\u27A1\\uFE0F</div>\\n <div>\\uD83D\\uDD03</div>\\n <div>\\uD83D\\uDD37</div>\\n <div>\\uD83E\\uDD1A</div>\\n <div>\\uD83D\\uDE02</div>\\n <div>\\uD83D\\uDE0A</div>\\n </div>\\n </ng-container>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n }\\n\\n <textarea\\n class=\\\"ax-conversation-input-main-side\\\"\\n oninput='this.style.height = \\\"\\\";this.style.height = this.scrollHeight + \\\"px\\\"'\\n type=\\\"text\\\"\\n rows=\\\"1\\\"\\n [id]=\\\"id\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [attr.maxlength]=\\\"maxLength()\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n [ngModel]=\\\"value\\\"\\n (ngModelChange)=\\\"_handleModelChange($event)\\\"\\n [ngModelOptions]=\\\"{ updateOn: _updateOn }\\\"\\n (keydown)=\\\"keyDownHandler($event)\\\"\\n (keyup)=\\\"keyUpHandler($event)\\\"\\n (keypress)=\\\"keyPressHandler($event)\\\"\\n (focus)=\\\"emitOnFocusEvent($event)\\\"\\n (blur)=\\\"emitOnBlurEvent($event)\\\"\\n >\\n </textarea>\\n\\n <div class=\\\"ax-conversation-input-end-side\\\">\\n @if (!value) {\\n @if (hasAttachment()) {\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleAttachClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-attach\\\"></i>\\n </ax-icon>\\n </ax-button>\\n <input\\n multiple\\n #inputFile\\n [accept]=\\\"acceptFileType()\\\"\\n type=\\\"file\\\"\\n class=\\\"ax-attach-input\\\"\\n (change)=\\\"handleChangeFile($event)\\\"\\n />\\n }\\n @if (hasVoice()) {\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleRecordClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-mic\\\"></i>\\n </ax-icon>\\n </ax-button>\\n }\\n } @else {\\n <ax-button [disabled]=\\\"isLoading()\\\" look=\\\"solid\\\" color=\\\"primary\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleSendClick()\\\">\\n @if (isLoading()) {\\n <ax-loading-spinner color=\\\"primary\\\"></ax-loading-spinner>\\n } @else {\\n @if (sendIcon()) {\\n <ng-content select=\\\"ax-icon\\\"></ng-content>\\n } @else {\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-arrow-long-up\\\"></i>\\n </ax-icon>\\n }\\n }\\n </ax-button>\\n }\\n </div>\\n }\\n</div>\\n\", styles: [\"ax-conversation-input{width:100%;display:block}ax-conversation-input .ax-conversation-input{display:flex;align-items:center;position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem}ax-conversation-input .ax-conversation-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-start-side{justify-content:flex-start}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-end-side{justify-content:flex-end}ax-conversation-input .ax-conversation-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}ax-conversation-input .ax-conversation-input>textarea:focus,ax-conversation-input .ax-conversation-input>textarea:focus-visible{outline:unset}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side,ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side{padding-inline-end:.75rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side::placeholder{font-size:1rem;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{padding-inline-start:.75rem;gap:.5rem}ax-conversation-input .ax-conversation-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-sys-color-danger-surface));border-radius:999rem;margin-inline-end:.5rem}ax-conversation-input .ax-conversation-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-surface),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-sys-color-danger-surface),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-surface),0)}}ax-conversation-input .ax-conversation-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}ax-conversation-input .ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}ax-conversation-input .ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-sys-border-radius)}ax-conversation-input .ax-emoji-container>div:hover{background-color:rgba(var(--ax-sys-color-surface))}ax-conversation-input .ax-editor-reply-container{--ax-comp-editor-height: 100%;display:flex;flex-direction:column;align-items:flex-start;padding:.5rem}ax-conversation-input .ax-editor-reply-container .ax-reply-container{display:flex;justify-content:space-between;align-items:center;width:100%}ax-conversation-input .ax-reply-start{display:flex;align-items:center}ax-conversation-input .ax-cursor-pointer{cursor:pointer}ax-conversation-input .ax-reply-types{display:flex;align-items:center}ax-conversation-input .ax-reply-start i{margin-inline-end:1rem}ax-conversation-input .ax-reply-start img,ax-conversation-input .ax-reply-start video{margin-inline-end:.5rem;height:1.75rem;width:1.75rem}\\n\"], dependencies: [{ kind: \"component\", type: 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: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: 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: \"component\", type: AXLoadingSpinnerComponent, selector: \"ax-loading-spinner\", inputs: [\"text\", \"color\", \"size\", \"stroke\"] }, { kind: \"ngmodule\", type: 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: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-input', inputs: ['look', 'placeholder'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n { provide: AXComponent, useExisting: AXConversationInputComponent },\n { provide: AXFocusableComponent, useExisting: AXConversationInputComponent },\n { provide: AXValuableComponent, useExisting: AXConversationInputComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXConversationInputComponent),\n multi: true,\n },\n ], imports: [\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n FormsModule,\n AXLoadingSpinnerComponent,\n AsyncPipe,\n AXTranslatorPipe,\n AXDecoratorModule,\n ], template: \"@if (actionShowState()) {\\n <div class=\\\"ax-editor-reply-container ax-editor-container ax-{{ look }}\\\">\\n @if (actionUser()) {\\n <ax-text> {{ actionUser() }}</ax-text>\\n }\\n <div class=\\\"ax-reply-container\\\">\\n <div class=\\\"ax-reply-start\\\">\\n <i [class]=\\\"actionIcon()\\\"></i>\\n <p>{{ actionContent() }}</p>\\n </div>\\n <i (click)=\\\"closeReplyHandler()\\\" class=\\\"fa-solid fa-xmark ax-cursor-pointer\\\"></i>\\n </div>\\n </div>\\n}\\n\\n<div class=\\\"ax-conversation-input ax-editor-container ax-{{ look }}\\\" [class.ax-state-recording]=\\\"recording()\\\">\\n @if (recording()) {\\n <div class=\\\"ax-conversation-input-start-side\\\">\\n <span class=\\\"ax-record-dot\\\"></span>\\n <span>{{ recordingService.timer() }}</span>\\n </div>\\n <div class=\\\"ax-conversation-input-main-side\\\">\\n <ax-button\\n class=\\\"ax-sm\\\"\\n look=\\\"blank\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"'@acorex:common.actions.cancel' | translate | async\\\"\\n (onClick)=\\\"handleCancelRecordingClick()\\\"\\n ></ax-button>\\n </div>\\n <div class=\\\"ax-conversation-input-end-side\\\">\\n <ax-button look=\\\"solid\\\" color=\\\"danger\\\" class=\\\"ax-blob ax-sm\\\" (onClick)=\\\"handleSendVoiceClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-send\\\"></i>\\n </ax-icon>\\n </ax-button>\\n </div>\\n } @else {\\n @if (hasEmoji()) {\\n <div class=\\\"ax-conversation-input-start-side\\\">\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-emoji\\\"></i>\\n </ax-icon>\\n <ax-dropdown-panel>\\n <ng-container>\\n <div class=\\\"ax-emoji-container\\\">\\n <div>\\u26A0\\uFE0F</div>\\n <div>\\u27A1\\uFE0F</div>\\n <div>\\uD83D\\uDD03</div>\\n <div>\\uD83D\\uDD37</div>\\n <div>\\uD83E\\uDD1A</div>\\n <div>\\uD83D\\uDE02</div>\\n <div>\\uD83D\\uDE0A</div>\\n </div>\\n </ng-container>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n }\\n\\n <textarea\\n class=\\\"ax-conversation-input-main-side\\\"\\n oninput='this.style.height = \\\"\\\";this.style.height = this.scrollHeight + \\\"px\\\"'\\n type=\\\"text\\\"\\n rows=\\\"1\\\"\\n [id]=\\\"id\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [attr.maxlength]=\\\"maxLength()\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n [ngModel]=\\\"value\\\"\\n (ngModelChange)=\\\"_handleModelChange($event)\\\"\\n [ngModelOptions]=\\\"{ updateOn: _updateOn }\\\"\\n (keydown)=\\\"keyDownHandler($event)\\\"\\n (keyup)=\\\"keyUpHandler($event)\\\"\\n (keypress)=\\\"keyPressHandler($event)\\\"\\n (focus)=\\\"emitOnFocusEvent($event)\\\"\\n (blur)=\\\"emitOnBlurEvent($event)\\\"\\n >\\n </textarea>\\n\\n <div class=\\\"ax-conversation-input-end-side\\\">\\n @if (!value) {\\n @if (hasAttachment()) {\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleAttachClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-attach\\\"></i>\\n </ax-icon>\\n </ax-button>\\n <input\\n multiple\\n #inputFile\\n [accept]=\\\"acceptFileType()\\\"\\n type=\\\"file\\\"\\n class=\\\"ax-attach-input\\\"\\n (change)=\\\"handleChangeFile($event)\\\"\\n />\\n }\\n @if (hasVoice()) {\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleRecordClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-mic\\\"></i>\\n </ax-icon>\\n </ax-button>\\n }\\n } @else {\\n <ax-button [disabled]=\\\"isLoading()\\\" look=\\\"solid\\\" color=\\\"primary\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleSendClick()\\\">\\n @if (isLoading()) {\\n <ax-loading-spinner color=\\\"primary\\\"></ax-loading-spinner>\\n } @else {\\n @if (sendIcon()) {\\n <ng-content select=\\\"ax-icon\\\"></ng-content>\\n } @else {\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-arrow-long-up\\\"></i>\\n </ax-icon>\\n }\\n }\\n </ax-button>\\n }\\n </div>\\n }\\n</div>\\n\", styles: [\"ax-conversation-input{width:100%;display:block}ax-conversation-input .ax-conversation-input{display:flex;align-items:center;position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem}ax-conversation-input .ax-conversation-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-start-side{justify-content:flex-start}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-end-side{justify-content:flex-end}ax-conversation-input .ax-conversation-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}ax-conversation-input .ax-conversation-input>textarea:focus,ax-conversation-input .ax-conversation-input>textarea:focus-visible{outline:unset}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side,ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side{padding-inline-end:.75rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side::placeholder{font-size:1rem;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{padding-inline-start:.75rem;gap:.5rem}ax-conversation-input .ax-conversation-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-sys-color-danger-surface));border-radius:999rem;margin-inline-end:.5rem}ax-conversation-input .ax-conversation-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-surface),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-sys-color-danger-surface),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-surface),0)}}ax-conversation-input .ax-conversation-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}ax-conversation-input .ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}ax-conversation-input .ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-sys-border-radius)}ax-conversation-input .ax-emoji-container>div:hover{background-color:rgba(var(--ax-sys-color-surface))}ax-conversation-input .ax-editor-reply-container{--ax-comp-editor-height: 100%;display:flex;flex-direction:column;align-items:flex-start;padding:.5rem}ax-conversation-input .ax-editor-reply-container .ax-reply-container{display:flex;justify-content:space-between;align-items:center;width:100%}ax-conversation-input .ax-reply-start{display:flex;align-items:center}ax-conversation-input .ax-cursor-pointer{cursor:pointer}ax-conversation-input .ax-reply-types{display:flex;align-items:center}ax-conversation-input .ax-reply-start i{margin-inline-end:1rem}ax-conversation-input .ax-reply-start img,ax-conversation-input .ax-reply-start video{margin-inline-end:.5rem;height:1.75rem;width:1.75rem}\\n\"] }]\n }], propDecorators: { inputFile: [{\n type: ViewChild,\n args: ['inputFile']\n }], __hostName: [{\n type: HostBinding,\n args: ['attr.name']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLWlucHV0L2NvbnZlcnNhdGlvbi1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1pbnB1dC9jb252ZXJzYXRpb24taW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFdBQVcsRUFFWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBRVgsU0FBUyxFQUNULGlCQUFpQixFQUVqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFB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cUJBQ2xCOzhCQUdpQyxTQUFTO3NCQUExQyxTQUFTO3VCQUFDLFdBQVc7Z0JBdU5WLFVBQVU7c0JBRHJCLFdBQVc7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ2xpY2tFdmVudCxcbiAgQVhDb21wb25lbnQsXG4gIEFYRXZlbnQsXG4gIEFYRm9jdXNhYmxlQ29tcG9uZW50LFxuICBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICBNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50LFxuICBNWExvb2tDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LCBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWExvYWRpbmdTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIFNpZ25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBjb250ZW50Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29udmVyc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhSZWNvcmRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVjb3JkaW5nLnNlcnZpY2UnO1xuXG4vKipcbiAqIEFuIGlucHV0IGNvbXBvbmVudCBmb3IgZW50ZXJpbmcgY29udmVyc2F0aW9uIG1lc3NhZ2VzLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb252ZXJzYXRpb24taW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBbJ2xvb2snLCAncGxhY2Vob2xkZXInXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENvbnZlcnNhdGlvbklucHV0Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWEZvY3VzYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29udmVyc2F0aW9uSW5wdXRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENvbnZlcnNhdGlvbklucHV0Q29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWENvbnZlcnNhdGlvbklucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBWERlY29yYXRvckljb25Db21wb25lbnQsXG4gICAgQVhEcm9wZG93blBhbmVsQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYTG9hZGluZ1NwaW5uZXJDb21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIEFYVHJhbnNsYXRvclBpcGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQ8c3RyaW5nPiwgTVhMb29rQ29tcG9uZW50KSB7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RmlsZScpIHByb3RlY3RlZCBpbnB1dEZpbGU6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgcHJvdGVjdGVkIHNlbmRJY29uID0gY29udGVudENoaWxkKCdheC1pY29uJyk7XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uQ2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgY29udmVyc2F0aW9uU2VydmljZSA9IGluamVjdChBWENvbnZlcnNhdGlvblNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBjaGF0czogU2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZVtdPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzKCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBhY3Rpb25JY29uID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XG4gIHByb3RlY3RlZCBhY3Rpb25Db250ZW50ID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XG4gIHByb3RlY3RlZCBhY3Rpb25TaG93U3RhdGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgYWN0aW9uVXNlciA9IHNpZ25hbDxzdHJpbmc+KG51bGwpO1xuICBwcm90ZWN0ZWQgYWN0aW9uQ2xvc2VDYWxsYmFjayA9IHNpZ25hbDwoKSA9PiB2b2lkPigoKSA9PiB7XG4gICAgcmV0dXJuO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVwbHlDaGF0OiBTaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmaW5kTWVzc2FnZSA9IHRoaXMuY2hhdHMoKS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UucmVwbHlJZCgpKTtcbiAgICByZXR1cm4gZmluZE1lc3NhZ2U7XG4gIH0pO1xuXG4gIHB1YmxpYyBzZXRBY3Rpb25Cb3hDb250YWluZXIoaWNvbjogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIHVzZXI/OiBzdHJpbmcsIGNsb3NlQ2FsbGJhY2s/OiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hY3Rpb25JY29uLnNldChpY29uKTtcbiAgICB0aGlzLmFjdGlvbkNvbnRlbnQuc2V0KGNvbnRlbnQpO1xuICAgIHRoaXMuYWN0aW9uU2hvd1N0YXRlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGlvblVzZXIuc2V0KHVzZXIpO1xuICAgIHRoaXMuYWN0aW9uQ2xvc2VDYWxsYmFjay5zZXQoY2xvc2VDYWxsYmFjayk7XG4gIH1cblxuICAvKiogTWF4aW11bSBsZW5ndGggb2YgaW5wdXQgdGV4dCAqL1xuICByZWFkb25seSBtYXhMZW5ndGggPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgLyoqIEluZGljYXRlcyBpZiBhbiBhdHRhY2htZW50IGlzIHByZXNlbnQgKi9cbiAgcmVhZG9ubHkgaGFzQXR0YWNobWVudCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIC8qKiBJbmRpY2F0ZXMgaWYgdm9pY2UgcmVjb3JkaW5nIGlzIGVuYWJsZWQgKi9cbiAgcmVhZG9ubHkgaGFzVm9pY2UgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBoYXNFbW9qaSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKiogQWNjZXB0YWJsZSBmaWxlIHR5cGVzIGZvciBhdHRhY2htZW50ICovXG4gIHJlYWRvbmx5IGFjY2VwdEZpbGVUeXBlID0gaW5wdXQ8c3RyaW5nPignKicpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNlbmQgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgb25TZW5kQ2xpY2sgPSBvdXRwdXQ8QVhDbGlja0V2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gcmVjb3JkaW5nIHN0YXJ0cy5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBvblN0YXJ0UmVjb3JkaW5nID0gb3V0cHV0PEFYQ2xpY2tFdmVudD4oKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHJlY29yZGluZyBpcyBjYW5jZWxlZC5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBvbkNhbmNlbFJlY29yZGluZyA9IG91dHB1dDxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgb25FbnRlclByZXNzZWQgPSBvdXRwdXQ8QVhFdmVudD4oKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCByZWNvcmRpbmc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCByZWNvcmRpbmdTZXJ2aWNlOiBBWFJlY29yZGluZ1NlcnZpY2UgPSBpbmplY3QoQVhSZWNvcmRpbmdTZXJ2aWNlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfdXBkYXRlT246ICdjaGFuZ2UnIHwgJ2JsdXInIHwgJ3N1Ym1pdCcgPSAnY2hhbmdlJztcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfaGFuZGxlTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuY29tbWl0VmFsdWUodmFsdWUsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYXRlcyByZWNvcmRpbmcgd2hlbiB0aGUgcmVjb3JkIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHJlY29yZGluZyBzdGFydHMuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVSZWNvcmRDbGljaygpIHtcbiAgICB0aGlzLnJlY29yZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZWNvcmRpbmdTZXJ2aWNlXG4gICAgICA/LnN0YXJ0UmVjb3JkaW5nKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5vblN0YXJ0UmVjb3JkaW5nLmVtaXQoe1xuICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICBkYXRhOiB7IHJlY29yZGluZzogdHJ1ZSB9LFxuICAgICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgdGhlIHJlY29yZGluZyBhbmQgZW1pdHMgYW4gZXZlbnQgdG8gaW5kaWNhdGUgY2FuY2VsbGF0aW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ2FuY2VsUmVjb3JkaW5nQ2xpY2soKSB7XG4gICAgdGhpcy5yZWNvcmRpbmcuc2V0KGZhbHNlKTtcblxuICAgIHRoaXMub25DYW5jZWxSZWNvcmRpbmcuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hpZnRTdGF0ZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQga2V5RG93bkhhbmRsZXIoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChlLmtleSA9PT0gJ1NoaWZ0Jykge1xuICAgICAgdGhpcy5zaGlmdFN0YXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5vbktleURvd24uZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgfVxuICBwcm90ZWN0ZWQga2V5VXBIYW5kbGVyKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZS5rZXkgPT09ICdTaGlmdCcpIHtcbiAgICAgIHRoaXMuc2hpZnRTdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLm9uS2V5VXAuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgfVxuICBwcm90ZWN0ZWQga2V5UHJlc3NIYW5kbGVyKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgIXRoaXMuc2hpZnRTdGF0ZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5vbkVudGVyUHJlc3NlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzIH0pO1xuICAgIH1cbiAgICB0aGlzLm9uS2V5UHJlc3MuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogT3BlbnMgdGhlIGZpbGUgcGlja2VyIGZvciBhdHRhY2htZW50LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQXR0YWNoQ2xpY2soKSB7XG4gICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBzZWxlY3RlZCBmaWxlcyB3aGVuIHRoZSBmaWxlIGlucHV0IGNoYW5nZXMuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDaGFuZ2VGaWxlKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMub25TZW5kQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiB7IHZhbHVlOiAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzLCB0eXBlOiAnZmlsZScgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgdGV4dCB2YWx1ZSBhbmQgb3B0aW9uYWwgcmVwbHlDaGF0IHdoZW4gdGhlIHNlbmQgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVTZW5kQ2xpY2soKSB7XG4gICAgdGhpcy5vblNlbmRDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGRhdGE6IHsgdmFsdWU6IHRoaXMudmFsdWUsIHJlcGx5Q2hhdDogdGhpcy5yZXBseUNoYXQoKSB8fCBudWxsLCB0eXBlOiAndGV4dCcgfSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuYWN0aW9uU2hvd1N0YXRlLnNldChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogRW5kcyByZWNvcmRpbmcgYW5kIGVtaXRzIHRoZSByZWNvcmRlZCB2b2ljZSBkYXRhIHdoZW4gdGhlIHNlbmQgdm9pY2UgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVTZW5kVm9pY2VDbGljaygpIHtcbiAgICB0aGlzLnJlY29yZGluZ1NlcnZpY2UuZW5kUmVjb3JkaW5nKCkudGhlbigoYykgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub25TZW5kQ2xpY2suZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgZGF0YTogeyB2YWx1ZTogYywgdHlwZTogJ3ZvaWNlJyB9LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgcmVwbHkgSUQgd2hlbiBjbG9zaW5nIGEgcmVwbHkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjbG9zZVJlcGx5SGFuZGxlcigpIHtcbiAgICB0aGlzLmFjdGlvblNob3dTdGF0ZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aW9uQ2xvc2VDYWxsYmFjaygpO1xuICAgIHRoaXMub25BY3Rpb25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIubmFtZScpXG4gIHByaXZhdGUgZ2V0IF9faG9zdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG59XG4iLCJAaWYgKGFjdGlvblNob3dTdGF0ZSgpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1lZGl0b3ItcmVwbHktY29udGFpbmVyIGF4LWVkaXRvci1jb250YWluZXIgYXgte3sgbG9vayB9fVwiPlxuICAgIEBpZiAoYWN0aW9uVXNlcigpKSB7XG4gICAgICA8YXgtdGV4dD4ge3sgYWN0aW9uVXNlcigpIH19PC9heC10ZXh0PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiYXgtcmVwbHktY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtcmVwbHktc3RhcnRcIj5cbiAgICAgICAgPGkgW2NsYXNzXT1cImFjdGlvbkljb24oKVwiPjwvaT5cbiAgICAgICAgPHA+e3sgYWN0aW9uQ29udGVudCgpIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8aSAoY2xpY2spPVwiY2xvc2VSZXBseUhhbmRsZXIoKVwiIGNsYXNzPVwiZmEtc29saWQgZmEteG1hcmsgYXgtY3Vyc29yLXBvaW50ZXJcIj48L2k+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufVxuXG48ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWlucHV0IGF4LWVkaXRvci1jb250YWluZXIgYXgte3sgbG9vayB9fVwiIFtjbGFzcy5heC1zdGF0ZS1yZWNvcmRpbmddPVwicmVjb3JkaW5nKClcIj5cbiAgQGlmIChyZWNvcmRpbmcoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24taW5wdXQtc3RhcnQtc2lkZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJheC1yZWNvcmQtZG90XCI+PC9zcGFuPlxuICAgICAgPHNwYW4+e3sgcmVjb3JkaW5nU2VydmljZS50aW1lcigpIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24taW5wdXQtbWFpbi1zaWRlXCI+XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICBsb29rPVwiYmxhbmtcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbdGV4dF09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5jYW5jZWwnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVDYW5jZWxSZWNvcmRpbmdDbGljaygpXCJcbiAgICAgID48L2F4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWlucHV0LWVuZC1zaWRlXCI+XG4gICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJheC1ibG9iIGF4LXNtXCIgKG9uQ2xpY2spPVwiaGFuZGxlU2VuZFZvaWNlQ2xpY2soKVwiPlxuICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1zZW5kXCI+PC9pPlxuICAgICAgICA8L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgQGlmIChoYXNFbW9qaSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWlucHV0LXN0YXJ0LXNpZGVcIj5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiBjbGFzcz1cImF4LXNtXCI+XG4gICAgICAgICAgPGF4LWljb24+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1lbW9qaVwiPjwvaT5cbiAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWVtb2ppLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+4pqg77iPPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj7inqHvuI88L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCflIM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCflLc8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCfpJo8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCfmII8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCfmIo8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDx0ZXh0YXJlYVxuICAgICAgY2xhc3M9XCJheC1jb252ZXJzYXRpb24taW5wdXQtbWFpbi1zaWRlXCJcbiAgICAgIG9uaW5wdXQ9J3RoaXMuc3R5bGUuaGVpZ2h0ID0gXCJcIjt0aGlzLnN0eWxlLmhlaWdodCA9IHRoaXMuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiJ1xuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgcm93cz1cIjFcIlxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhMZW5ndGgoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4gICAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJfaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyB1cGRhdGVPbjogX3VwZGF0ZU9uIH1cIlxuICAgICAgKGtleWRvd24pPVwia2V5RG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAoa2V5dXApPVwia2V5VXBIYW5kbGVyKCRldmVudClcIlxuICAgICAgKGtleXByZXNzKT1cImtleVByZXNzSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJlbWl0T25Gb2N1c0V2ZW50KCRldmVudClcIlxuICAgICAgKGJsdXIpPVwiZW1pdE9uQmx1ckV2ZW50KCRldmVudClcIlxuICAgID5cbiAgICA8L3RleHRhcmVhPlxuXG4gICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1pbnB1dC1lbmQtc2lkZVwiPlxuICAgICAgQGlmICghdmFsdWUpIHtcbiAgICAgICAgQGlmIChoYXNBdHRhY2htZW50KCkpIHtcbiAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIGNsYXNzPVwiYXgtc21cIiAob25DbGljayk9XCJoYW5kbGVBdHRhY2hDbGljaygpXCI+XG4gICAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tYXR0YWNoXCI+PC9pPlxuICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICNpbnB1dEZpbGVcbiAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0RmlsZVR5cGUoKVwiXG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWF0dGFjaC1pbnB1dFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZUZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGhhc1ZvaWNlKCkpIHtcbiAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIGNsYXNzPVwiYXgtc21cIiAob25DbGljayk9XCJoYW5kbGVSZWNvcmRDbGljaygpXCI+XG4gICAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tbWljXCI+PC9pPlxuICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGF4LWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKClcIiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImF4LXNtXCIgKG9uQ2xpY2spPVwiaGFuZGxlU2VuZENsaWNrKClcIj5cbiAgICAgICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICA8YXgtbG9hZGluZy1zcGlubmVyIGNvbG9yPVwicHJpbWFyeVwiPjwvYXgtbG9hZGluZy1zcGlubmVyPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChzZW5kSWNvbigpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWljb25cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGF4LWljb24+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tYXJyb3ctbG9uZy11cFwiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXConversationMessageTypeRegistryService {\n constructor() {\n this.plugins = new Map();\n }\n register(...plugins) {\n plugins.forEach((p) => this.plugins.set(p.name, p));\n }\n resolve(name) {\n return this.plugins.get(name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageTypeRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageTypeRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageTypeRegistryService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtdHlwZS1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9zZXJ2aWNlcy9jb252ZXJzYXRpb24tbWVzc2FnZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFPLHdDQUF3QztJQURyRDtRQUVVLFlBQU8sR0FBMkMsSUFBSSxHQUFHLEVBQXFDLENBQUM7S0FTeEc7SUFQQyxRQUFRLENBQUMsR0FBRyxPQUFvQztRQUM5QyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs4R0FUVSx3Q0FBd0M7a0hBQXhDLHdDQUF3QyxjQUQzQixNQUFNOzsyRkFDbkIsd0NBQXdDO2tCQURwRCxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVSZWdpc3RyeVNlcnZpY2Uge1xuICBwcml2YXRlIHBsdWdpbnM6IE1hcDxzdHJpbmcsIEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGU+ID0gbmV3IE1hcDxzdHJpbmcsIEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGU+KCk7XG5cbiAgcmVnaXN0ZXIoLi4ucGx1Z2luczogQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZVtdKSB7XG4gICAgcGx1Z2lucy5mb3JFYWNoKChwKSA9PiB0aGlzLnBsdWdpbnMuc2V0KHAubmFtZSwgcCkpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUobmFtZTogc3RyaW5nKTogQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2lucy5nZXQobmFtZSk7XG4gIH1cbn1cbiJdfQ==","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXAvatarComponent } from '@acorex/components/avatar';\nimport { AXButtonComponent, AXButtonItemComponent, AXButtonItemListComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { isBrowser } from '@acorex/core/platform';\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { Component, HostBinding, ViewEncapsulation, computed, inject, input, output, signal, viewChild, } from '@angular/core';\nimport { AXConversationMessageTypeRegistryService } from '../services/conversation-message-type-registry.service';\nimport { AXConversationService } from '../services/conversation.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/menu\";\nimport * as i2 from \"@angular/common\";\n/**\n * A component for displaying individual conversation messages.\n *\n * @category Components\n */\nexport class AXConversationMessageComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.popover = viewChild('popover', ...(ngDevMode ? [{ debugName: \"popover\" }] : []));\n this.isReplyArrowShown = input(true, ...(ngDevMode ? [{ debugName: \"isReplyArrowShown\" }] : []));\n this.chatMessage = input(...(ngDevMode ? [undefined, { debugName: \"chatMessage\" }] : []));\n this.avatar = input(null, ...(ngDevMode ? [{ debugName: \"avatar\" }] : []));\n this.conversationService = inject(AXConversationService);\n this.registryService = inject(AXConversationMessageTypeRegistryService);\n this.actionButtonItemsPrivate = signal([], ...(ngDevMode ? [{ debugName: \"actionButtonItemsPrivate\" }] : []));\n this.actionButtonItemsPublic = {\n items: [],\n canceled: false,\n data: this.chatMessage(),\n };\n this.onActionMenuOpening = output();\n this.onReplyClick = output();\n this.portal = computed(() => {\n return new ComponentPortal(this.registryService.resolve(this.chatMessage().type).component);\n }, ...(ngDevMode ? [{ debugName: \"portal\" }] : []));\n this.messageType = computed(() => {\n return this.chatMessage().type;\n }, ...(ngDevMode ? [{ debugName: \"messageType\" }] : []));\n }\n get isOwn() {\n return !this.chatMessage().fromId;\n }\n /**\n * Handles the action button click and opens the action menu.\n */\n handleActionClick() {\n this.actionButtonItemsPublic = {\n items: [],\n canceled: false,\n data: this.chatMessage(),\n };\n this.onActionMenuOpening.emit(this.actionButtonItemsPublic);\n if (this.actionButtonItemsPublic.canceled)\n return;\n this.actionButtonItemsPrivate.set(this.actionButtonItemsPublic.items);\n }\n _handleAttached(ref) {\n ref = ref;\n if (ref.instance && isBrowser()) {\n Object.assign(ref.instance, { message: this.chatMessage() });\n const prefixContainer = this.getHostElement().querySelector('.ax-message-prefix');\n const suffixContainer = this.getHostElement().querySelector('.ax-message-suffix');\n prefixContainer.innerHTML = '';\n suffixContainer.innerHTML = '';\n const prefix = this.getHostElement().querySelector('ax-prefix');\n const suffix = this.getHostElement().querySelector('ax-suffix');\n if (prefix && prefixContainer) {\n prefix.style.display = 'flex';\n prefixContainer.append(prefix);\n }\n if (suffix && suffixContainer) {\n suffix.style.display = 'flex';\n suffixContainer.append(suffix);\n }\n }\n }\n /**\n * Handles the resend button click and closes the popover.\n */\n handleResendClick() {\n this.popover()?.close();\n this.chatMessage().onResendClick();\n }\n /**\n * Handles the delete button click and closes the popover.\n */\n handleDeleteClick() {\n this.popover()?.close();\n this.chatMessage().onDeleteClick();\n }\n /**\n * Handles reply functionality by setting the reply ID and emitting the reply click event.\n *\n * @param e - The conversation message to reply to.\n */\n replyHandler(e) {\n this.conversationService.replyId.set(e.id);\n this.onReplyClick.emit({ data: e, component: this });\n }\n get __hostClass() {\n return `${this.isOwn ? 'ax-state-own' : ''} ${!this.isOwn ? 'ax-state-other' : ''}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationMessageComponent, isStandalone: true, selector: \"ax-conversation-message\", inputs: { isReplyArrowShown: { classPropertyName: \"isReplyArrowShown\", publicName: \"isReplyArrowShown\", isSignal: true, isRequired: false, transformFunction: null }, chatMessage: { classPropertyName: \"chatMessage\", publicName: \"chatMessage\", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: \"avatar\", publicName: \"avatar\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onActionMenuOpening: \"onActionMenuOpening\", onReplyClick: \"onReplyClick\" }, host: { properties: { \"class\": \"this.__hostClass\" } }, providers: [{ provide: AXComponent, useExisting: AXConversationMessageComponent }], viewQueries: [{ propertyName: \"popover\", first: true, predicate: [\"popover\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"@if (chatMessage().fromId) {\\n @if (avatar()) {\\n <ng-container [ngTemplateOutlet]=\\\"avatar()\\\"></ng-container>\\n } @else {\\n <ax-avatar color=\\\"primary\\\" [size]=\\\"36\\\"> </ax-avatar>\\n }\\n}\\n\\n@if (isOwn && isReplyArrowShown()) {\\n <i (click)=\\\"replyHandler(chatMessage())\\\" class=\\\"fa-solid fa-reply ax-cursor-pointer\\\"></i>\\n}\\n\\n<div\\n class=\\\"ax-message-content\\\"\\n [class]=\\\"'ax-type-' + messageType()\\\"\\n [class.ax-state-own]=\\\"!chatMessage().fromId\\\"\\n [class.ax-state-other]=\\\"chatMessage().fromId\\\"\\n>\\n <div class=\\\"ax-action-button\\\">\\n @if (chatMessage()?.userName) {\\n <div class=\\\"ax-message-user-name\\\">\\n <ax-text>{{ chatMessage().userName }}</ax-text>\\n </div>\\n }\\n\\n @if (chatMessage()?.showActionButton) {\\n <div class=\\\"ax-message-action-button\\\">\\n <ax-menu openOn=\\\"click\\\" [hasArrow]=\\\"false\\\">\\n <ax-menu-item class=\\\"ax-parent-menu-item\\\">\\n <ax-text (click)=\\\"handleActionClick()\\\">...</ax-text>\\n\\n @for (item of actionButtonItemsPrivate(); track item.text) {\\n <ax-menu-item [color]=\\\"item.color\\\" (onClick)=\\\"item.onClick(chatMessage().id)\\\">\\n <ax-text>{{ item.text }}</ax-text>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n\\n @for (innerItem of item.items; track innerItem.text) {\\n <ax-menu-item [color]=\\\"innerItem.color\\\" (onClick)=\\\"innerItem.onClick(chatMessage().id)\\\">\\n <ax-text>{{ innerItem.text }}</ax-text>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"innerItem.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n </ax-menu>\\n </div>\\n }\\n </div>\\n\\n <ng-template [cdkPortalOutlet]=\\\"portal()\\\" (attached)=\\\"_handleAttached($event)\\\"></ng-template>\\n\\n <div class=\\\"ax-chat-message-status\\\">\\n <div class=\\\"ax-message-prefix\\\"></div>\\n <div>\\n <div class=\\\"ax-message-suffix\\\"></div>\\n <span>\\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\\n </span>\\n <span>\\n @if (isOwn) {\\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\\n <i class=\\\"ax-icon ax-icon-check ax-message-status\\\"></i>\\n }\\n @if (chatMessage().readTime && chatMessage().sendTime) {\\n <i class=\\\"ax-icon ax-icon-dobble-check ax-message-status\\\"></i>\\n }\\n }\\n </span>\\n </div>\\n </div>\\n</div>\\n\\n@if (!chatMessage().sendTime) {\\n <ax-button class=\\\"ax-resend-button ax-xs\\\" color=\\\"danger\\\" #b>\\n <ax-icon class=\\\"ax-icon ax-icon-error\\\"></ax-icon>\\n\\n <ax-popover [target]=\\\"b\\\" placement=\\\"bottom-end\\\" #popover>\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-content> </ax-content>\\n <ax-button-item-list>\\n @if (chatMessage().onResendClick) {\\n <ax-button-item text=\\\"Resend\\\" (onClick)=\\\"handleResendClick()\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-reload ax-bold\\\"></ax-icon>\\n </ax-button-item>\\n }\\n @if (chatMessage().onDeleteClick) {\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (onClick)=\\\"handleDeleteClick()\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-clear ax-bold\\\"></ax-icon>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </div>\\n </ax-popover>\\n </ax-button>\\n}\\n\\n@if (!isOwn && isReplyArrowShown()) {\\n <i (click)=\\\"replyHandler(chatMessage())\\\" class=\\\"fa-solid fa-reply ax-rotate ax-cursor-pointer\\\"></i>\\n}\\n\", styles: [\"ax-conversation-message{display:flex;align-items:flex-end;margin:.5rem}ax-conversation-message .ax-message-reply-container{padding:.75rem}ax-conversation-message .ax-message-reply-container,ax-conversation-message .ax-image-reply-container,ax-conversation-message .ax-video-reply-container{border-left:.3rem solid rgb(var(--ax-comp-conversation-border-color));border-radius:.75rem;margin-bottom:.25rem;overflow:hidden}ax-conversation-message .ax-message-reply-container .file,ax-conversation-message .ax-image-reply-container .file,ax-conversation-message .ax-video-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i,ax-conversation-message .ax-image-reply-container .file i,ax-conversation-message .ax-video-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video,ax-conversation-message .ax-image-reply-container img,ax-conversation-message .ax-image-reply-container video,ax-conversation-message .ax-video-reply-container img,ax-conversation-message .ax-video-reply-container video{max-width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-own-color-fore));color:rgb(var(--ax-comp-conversation-own-color))}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-own-reply-color));color:rgb(var(--ax-comp-conversation-own-reply-color-fore))}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-other-color-fore));color:rgb(var(--ax-comp-conversation-other-color))}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-other-reply-color));color:rgb(var(--ax-comp-conversation-other-reply-color-fore))}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgb(var(--ax-sys-color-danger-surface));color:rgb(var(--ax-sys-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:flex;flex-direction:column;gap:.25rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:var(--ax-sys-border-radius);overflow:hidden;width:fit-content;max-width:50%;margin-inline-start:.5rem}ax-conversation-message .ax-message-content .ax-action-button{display:grid;grid-template-columns:repeat(2,1fr)}ax-conversation-message .ax-message-content .ax-action-button .ax-message-user-name{justify-self:start;grid-column:1}ax-conversation-message .ax-message-content .ax-action-button .ax-message-action-button{justify-self:end;grid-column:2}ax-conversation-message .ax-message-content .ax-action-button ax-menu.ax-action-list-horizontal{min-width:0;gap:0}ax-conversation-message .ax-message-content .ax-action-button .ax-parent-menu-item{height:auto!important;padding:0!important}ax-conversation-message .ax-message-content.ax-type-video{padding:0}ax-conversation-message .ax-message-content.ax-type-image{padding:0}ax-conversation-message .ax-message-content .ax-chat-message-status{padding:.25rem .5rem}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:rgb(var(--ax-comp-conversation-own-color));color:rgb(var(--ax-comp-conversation-own-color-fore));justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-own-color-fore))}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:rgb(var(--ax-comp-conversation-other-color));color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:rgb(var(--ax-comp-conversation-status-color))}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgb(var(--ax-sys-color-danger-surface))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-sys-color-on-primary))}ax-conversation-message .ax-rotate{transform:scaleX(-1);margin-inline-start:.5rem}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\\n\"], dependencies: [{ kind: \"component\", type: AXAvatarComponent, selector: \"ax-avatar\", inputs: [\"color\", \"size\", \"shape\", \"look\"], outputs: [\"sizeChange\"] }, { kind: \"directive\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { kind: \"component\", type: 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: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXPopoverComponent, selector: \"ax-popover\", inputs: [\"width\", \"disabled\", \"offsetX\", \"offsetY\", \"target\", \"placement\", \"content\", \"openOn\", \"closeOn\", \"hasBackdrop\", \"openAfter\", \"closeAfter\", \"backdropClass\", \"panelClass\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: 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: \"component\", type: AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"ngmodule\", type: AXMenuModule }, { kind: \"component\", type: i1.AXMenuItemComponent, selector: \"ax-menu-item\", inputs: [\"name\", \"data\", \"disabled\", \"color\"], outputs: [\"onClick\"] }, { kind: \"component\", type: i1.AXMenuComponent, selector: \"ax-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"hasArrow\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message', encapsulation: ViewEncapsulation.None, imports: [\n AXAvatarComponent,\n CdkPortalOutlet,\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXPopoverComponent,\n AXDecoratorGenericComponent,\n AXButtonItemListComponent,\n AXButtonItemComponent,\n AsyncPipe,\n AXFormatPipe,\n AXMenuModule,\n CommonModule,\n ], providers: [{ provide: AXComponent, useExisting: AXConversationMessageComponent }], template: \"@if (chatMessage().fromId) {\\n @if (avatar()) {\\n <ng-container [ngTemplateOutlet]=\\\"avatar()\\\"></ng-container>\\n } @else {\\n <ax-avatar color=\\\"primary\\\" [size]=\\\"36\\\"> </ax-avatar>\\n }\\n}\\n\\n@if (isOwn && isReplyArrowShown()) {\\n <i (click)=\\\"replyHandler(chatMessage())\\\" class=\\\"fa-solid fa-reply ax-cursor-pointer\\\"></i>\\n}\\n\\n<div\\n class=\\\"ax-message-content\\\"\\n [class]=\\\"'ax-type-' + messageType()\\\"\\n [class.ax-state-own]=\\\"!chatMessage().fromId\\\"\\n [class.ax-state-other]=\\\"chatMessage().fromId\\\"\\n>\\n <div class=\\\"ax-action-button\\\">\\n @if (chatMessage()?.userName) {\\n <div class=\\\"ax-message-user-name\\\">\\n <ax-text>{{ chatMessage().userName }}</ax-text>\\n </div>\\n }\\n\\n @if (chatMessage()?.showActionButton) {\\n <div class=\\\"ax-message-action-button\\\">\\n <ax-menu openOn=\\\"click\\\" [hasArrow]=\\\"false\\\">\\n <ax-menu-item class=\\\"ax-parent-menu-item\\\">\\n <ax-text (click)=\\\"handleActionClick()\\\">...</ax-text>\\n\\n @for (item of actionButtonItemsPrivate(); track item.text) {\\n <ax-menu-item [color]=\\\"item.color\\\" (onClick)=\\\"item.onClick(chatMessage().id)\\\">\\n <ax-text>{{ item.text }}</ax-text>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n\\n @for (innerItem of item.items; track innerItem.text) {\\n <ax-menu-item [color]=\\\"innerItem.color\\\" (onClick)=\\\"innerItem.onClick(chatMessage().id)\\\">\\n <ax-text>{{ innerItem.text }}</ax-text>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"innerItem.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n </ax-menu>\\n </div>\\n }\\n </div>\\n\\n <ng-template [cdkPortalOutlet]=\\\"portal()\\\" (attached)=\\\"_handleAttached($event)\\\"></ng-template>\\n\\n <div class=\\\"ax-chat-message-status\\\">\\n <div class=\\\"ax-message-prefix\\\"></div>\\n <div>\\n <div class=\\\"ax-message-suffix\\\"></div>\\n <span>\\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\\n </span>\\n <span>\\n @if (isOwn) {\\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\\n <i class=\\\"ax-icon ax-icon-check ax-message-status\\\"></i>\\n }\\n @if (chatMessage().readTime && chatMessage().sendTime) {\\n <i class=\\\"ax-icon ax-icon-dobble-check ax-message-status\\\"></i>\\n }\\n }\\n </span>\\n </div>\\n </div>\\n</div>\\n\\n@if (!chatMessage().sendTime) {\\n <ax-button class=\\\"ax-resend-button ax-xs\\\" color=\\\"danger\\\" #b>\\n <ax-icon class=\\\"ax-icon ax-icon-error\\\"></ax-icon>\\n\\n <ax-popover [target]=\\\"b\\\" placement=\\\"bottom-end\\\" #popover>\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-content> </ax-content>\\n <ax-button-item-list>\\n @if (chatMessage().onResendClick) {\\n <ax-button-item text=\\\"Resend\\\" (onClick)=\\\"handleResendClick()\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-reload ax-bold\\\"></ax-icon>\\n </ax-button-item>\\n }\\n @if (chatMessage().onDeleteClick) {\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (onClick)=\\\"handleDeleteClick()\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-clear ax-bold\\\"></ax-icon>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </div>\\n </ax-popover>\\n </ax-button>\\n}\\n\\n@if (!isOwn && isReplyArrowShown()) {\\n <i (click)=\\\"replyHandler(chatMessage())\\\" class=\\\"fa-solid fa-reply ax-rotate ax-cursor-pointer\\\"></i>\\n}\\n\", styles: [\"ax-conversation-message{display:flex;align-items:flex-end;margin:.5rem}ax-conversation-message .ax-message-reply-container{padding:.75rem}ax-conversation-message .ax-message-reply-container,ax-conversation-message .ax-image-reply-container,ax-conversation-message .ax-video-reply-container{border-left:.3rem solid rgb(var(--ax-comp-conversation-border-color));border-radius:.75rem;margin-bottom:.25rem;overflow:hidden}ax-conversation-message .ax-message-reply-container .file,ax-conversation-message .ax-image-reply-container .file,ax-conversation-message .ax-video-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i,ax-conversation-message .ax-image-reply-container .file i,ax-conversation-message .ax-video-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video,ax-conversation-message .ax-image-reply-container img,ax-conversation-message .ax-image-reply-container video,ax-conversation-message .ax-video-reply-container img,ax-conversation-message .ax-video-reply-container video{max-width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-own-color-fore));color:rgb(var(--ax-comp-conversation-own-color))}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-own-reply-color));color:rgb(var(--ax-comp-conversation-own-reply-color-fore))}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-other-color-fore));color:rgb(var(--ax-comp-conversation-other-color))}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-other-reply-color));color:rgb(var(--ax-comp-conversation-other-reply-color-fore))}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgb(var(--ax-sys-color-danger-surface));color:rgb(var(--ax-sys-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:flex;flex-direction:column;gap:.25rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:var(--ax-sys-border-radius);overflow:hidden;width:fit-content;max-width:50%;margin-inline-start:.5rem}ax-conversation-message .ax-message-content .ax-action-button{display:grid;grid-template-columns:repeat(2,1fr)}ax-conversation-message .ax-message-content .ax-action-button .ax-message-user-name{justify-self:start;grid-column:1}ax-conversation-message .ax-message-content .ax-action-button .ax-message-action-button{justify-self:end;grid-column:2}ax-conversation-message .ax-message-content .ax-action-button ax-menu.ax-action-list-horizontal{min-width:0;gap:0}ax-conversation-message .ax-message-content .ax-action-button .ax-parent-menu-item{height:auto!important;padding:0!important}ax-conversation-message .ax-message-content.ax-type-video{padding:0}ax-conversation-message .ax-message-content.ax-type-image{padding:0}ax-conversation-message .ax-message-content .ax-chat-message-status{padding:.25rem .5rem}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:rgb(var(--ax-comp-conversation-own-color));color:rgb(var(--ax-comp-conversation-own-color-fore));justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-own-color-fore))}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:rgb(var(--ax-comp-conversation-other-color));color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:rgb(var(--ax-comp-conversation-status-color))}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgb(var(--ax-sys-color-danger-surface))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-sys-color-on-primary))}ax-conversation-message .ax-rotate{transform:scaleX(-1);margin-inline-start:.5rem}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\\n\"] }]\n }], propDecorators: { __hostClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZS9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlL2NvbnZlcnNhdGlvbi1tZXNzYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQThCLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUNMLFNBQVMsRUFFVCxXQUFXLEVBRVgsaUJBQWlCLEVBQ2pC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RCxJQUNJLFdBQVc7UUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDdEYsQ0FBQzs4R0F2R1UsOEJBQThCO2tHQUE5Qiw4QkFBOEIsaW9CQUY5QixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsQ0FBQyxxS0N2RHBGLG9xSEF3R0EsbW5MRDlESSxpQkFBaUIsMkhBQ2pCLGVBQWUsaUpBQ2YsaUJBQWlCLDJVQUNqQix3QkFBd0Isc0VBQ3hCLGtCQUFrQixvU0FDbEIsMkJBQTJCLHlMQUMzQix5QkFBeUIsNkdBQ3pCLHFCQUFxQixxTUFHckIsWUFBWSxxVkFDWixZQUFZLGlNQUhaLFNBQVMseUNBQ1QsWUFBWTs7MkZBTUgsOEJBQThCO2tCQXJCMUMsU0FBUzsrQkFDRSx5QkFBeUIsaUJBR3BCLGlCQUFpQixDQUFDLElBQUksV0FDNUI7d0JBQ1AsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0IseUJBQXlCO3dCQUN6QixxQkFBcUI7d0JBQ3JCLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFlBQVk7cUJBQ2IsYUFDVSxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLGdDQUFnQyxFQUFFLENBQUM7OEJBdUc5RSxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2xpY2tFdmVudCwgQVhDb21wb25lbnQsIE1YQmFzZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhCdXR0b25Db21wb25lbnQsIEFYQnV0dG9uSXRlbUNvbXBvbmVudCwgQVhCdXR0b25JdGVtTGlzdENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LCBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWE1lbnVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXQsIENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmLCBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWENvbnZlcnNhdGlvbk1lbnVPcGVuaW5nRXZlbnQsXG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZSxcbiAgQVhDb252ZXJzYXRpb25NZXNzYWdlQWN0aW9uLFxufSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZVJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXR5cGUtcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb252ZXJzYXRpb24uc2VydmljZSc7XG5cbi8qKlxuICogQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgaW5kaXZpZHVhbCBjb252ZXJzYXRpb24gbWVzc2FnZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udmVyc2F0aW9uLW1lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgQVhBdmF0YXJDb21wb25lbnQsXG4gICAgQ2RrUG9ydGFsT3V0bGV0LFxuICAgIEFYQnV0dG9uQ29tcG9uZW50LFxuICAgIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCxcbiAgICBBWFBvcG92ZXJDb21wb25lbnQsXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYQnV0dG9uSXRlbUxpc3RDb21wb25lbnQsXG4gICAgQVhCdXR0b25JdGVtQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWEZvcm1hdFBpcGUsXG4gICAgQVhNZW51TW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29udmVyc2F0aW9uTWVzc2FnZUNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25NZXNzYWdlQ29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHBvcG92ZXIgPSB2aWV3Q2hpbGQ8QVhQb3BvdmVyQ29tcG9uZW50PigncG9wb3ZlcicpO1xuXG4gIHJlYWRvbmx5IGlzUmVwbHlBcnJvd1Nob3duID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IGNoYXRNZXNzYWdlID0gaW5wdXQ8QVhDb252ZXJzYXRpb25NZXNzYWdlPigpO1xuICByZWFkb25seSBhdmF0YXIgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PihudWxsKTtcblxuICBwcm90ZWN0ZWQgY29udmVyc2F0aW9uU2VydmljZSA9IGluamVjdChBWENvbnZlcnNhdGlvblNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVnaXN0cnlTZXJ2aWNlID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVSZWdpc3RyeVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBhY3Rpb25CdXR0b25JdGVtc1ByaXZhdGUgPSBzaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlQWN0aW9uW10+KFtdKTtcbiAgcHJpdmF0ZSBhY3Rpb25CdXR0b25JdGVtc1B1YmxpYzogQVhDb252ZXJzYXRpb25NZW51T3BlbmluZ0V2ZW50ID0ge1xuICAgIGl0ZW1zOiBbXSxcbiAgICBjYW5jZWxlZDogZmFsc2UsXG4gICAgZGF0YTogdGhpcy5jaGF0TWVzc2FnZSgpLFxuICB9O1xuXG4gIG9uQWN0aW9uTWVudU9wZW5pbmcgPSBvdXRwdXQ8QVhDb252ZXJzYXRpb25NZW51T3BlbmluZ0V2ZW50PigpO1xuXG4gIG9uUmVwbHlDbGljayA9IG91dHB1dDxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIHBvcnRhbCA9IGNvbXB1dGVkPENvbXBvbmVudFBvcnRhbDxhbnk+IHwgbnVsbD4oKCkgPT4ge1xuICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMucmVnaXN0cnlTZXJ2aWNlLnJlc29sdmUodGhpcy5jaGF0TWVzc2FnZSgpLnR5cGUpLmNvbXBvbmVudCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBtZXNzYWdlVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jaGF0TWVzc2FnZSgpLnR5cGU7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBnZXQgaXNPd24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmNoYXRNZXNzYWdlKCkuZnJvbUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGFjdGlvbiBidXR0b24gY2xpY2sgYW5kIG9wZW5zIHRoZSBhY3Rpb24gbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVBY3Rpb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbkJ1dHRvbkl0ZW1zUHVibGljID0ge1xuICAgICAgaXRlbXM6IFtdLFxuICAgICAgY2FuY2VsZWQ6IGZhbHNlLFxuICAgICAgZGF0YTogdGhpcy5jaGF0TWVzc2FnZSgpLFxuICAgIH07XG5cbiAgICB0aGlzLm9uQWN0aW9uTWVudU9wZW5pbmcuZW1pdCh0aGlzLmFjdGlvbkJ1dHRvbkl0ZW1zUHVibGljKTtcblxuICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbkl0ZW1zUHVibGljLmNhbmNlbGVkKSByZXR1cm47XG5cbiAgICB0aGlzLmFjdGlvbkJ1dHRvbkl0ZW1zUHJpdmF0ZS5zZXQodGhpcy5hY3Rpb25CdXR0b25JdGVtc1B1YmxpYy5pdGVtcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZUF0dGFjaGVkKHJlZjogQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYpIHtcbiAgICByZWYgPSByZWYgYXMgQ29tcG9uZW50UmVmPHVua25vd24+O1xuICAgIGlmIChyZWYuaW5zdGFuY2UgJiYgaXNCcm93c2VyKCkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVmLmluc3RhbmNlLCB7IG1lc3NhZ2U6IHRoaXMuY2hhdE1lc3NhZ2UoKSB9KTtcblxuICAgICAgY29uc3QgcHJlZml4Q29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1tZXNzYWdlLXByZWZpeCcpO1xuICAgICAgY29uc3Qgc3VmZml4Q29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1tZXNzYWdlLXN1ZmZpeCcpO1xuICAgICAgcHJlZml4Q29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgICAgc3VmZml4Q29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuXG4gICAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignYXgtcHJlZml4JykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBjb25zdCBzdWZmaXggPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignYXgtc3VmZml4JykgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgICAgIGlmIChwcmVmaXggJiYgcHJlZml4Q29udGFpbmVyKSB7XG4gICAgICAgIHByZWZpeC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBwcmVmaXhDb250YWluZXIuYXBwZW5kKHByZWZpeCk7XG4gICAgICB9XG4gICAgICBpZiAoc3VmZml4ICYmIHN1ZmZpeENvbnRhaW5lcikge1xuICAgICAgICBzdWZmaXguc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgc3VmZml4Q29udGFpbmVyLmFwcGVuZChzdWZmaXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSByZXNlbmQgYnV0dG9uIGNsaWNrIGFuZCBjbG9zZXMgdGhlIHBvcG92ZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUmVzZW5kQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyKCk/LmNsb3NlKCk7XG4gICAgdGhpcy5jaGF0TWVzc2FnZSgpLm9uUmVzZW5kQ2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBkZWxldGUgYnV0dG9uIGNsaWNrIGFuZCBjbG9zZXMgdGhlIHBvcG92ZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRGVsZXRlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyKCk/LmNsb3NlKCk7XG4gICAgdGhpcy5jaGF0TWVzc2FnZSgpLm9uRGVsZXRlQ2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHJlcGx5IGZ1bmN0aW9uYWxpdHkgYnkgc2V0dGluZyB0aGUgcmVwbHkgSUQgYW5kIGVtaXR0aW5nIHRoZSByZXBseSBjbGljayBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIGUgLSBUaGUgY29udmVyc2F0aW9uIG1lc3NhZ2UgdG8gcmVwbHkgdG8uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVwbHlIYW5kbGVyKGU6IEFYQ29udmVyc2F0aW9uTWVzc2FnZSk6IHZvaWQge1xuICAgIHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5yZXBseUlkLnNldChlLmlkKTtcbiAgICB0aGlzLm9uUmVwbHlDbGljay5lbWl0KHsgZGF0YTogZSwgY29tcG9uZW50OiB0aGlzIH0pO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmlzT3duID8gJ2F4LXN0YXRlLW93bicgOiAnJ30gJHshdGhpcy5pc093biA/ICdheC1zdGF0ZS1vdGhlcicgOiAnJ31gO1xuICB9XG59XG4iLCJAaWYgKGNoYXRNZXNzYWdlKCkuZnJvbUlkKSB7XG4gIEBpZiAoYXZhdGFyKCkpIHtcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF2YXRhcigpXCI+PC9uZy1jb250YWluZXI+XG4gIH0gQGVsc2Uge1xuICAgIDxheC1hdmF0YXIgY29sb3I9XCJwcmltYXJ5XCIgW3NpemVdPVwiMzZcIj4gPC9heC1hdmF0YXI+XG4gIH1cbn1cblxuQGlmIChpc093biAmJiBpc1JlcGx5QXJyb3dTaG93bigpKSB7XG4gIDxpIChjbGljayk9XCJyZXBseUhhbmRsZXIoY2hhdE1lc3NhZ2UoKSlcIiBjbGFzcz1cImZhLXNvbGlkIGZhLXJlcGx5IGF4LWN1cnNvci1wb2ludGVyXCI+PC9pPlxufVxuXG48ZGl2XG4gIGNsYXNzPVwiYXgtbWVzc2FnZS1jb250ZW50XCJcbiAgW2NsYXNzXT1cIidheC10eXBlLScgKyBtZXNzYWdlVHlwZSgpXCJcbiAgW2NsYXNzLmF4LXN0YXRlLW93bl09XCIhY2hhdE1lc3NhZ2UoKS5mcm9tSWRcIlxuICBbY2xhc3MuYXgtc3RhdGUtb3RoZXJdPVwiY2hhdE1lc3NhZ2UoKS5mcm9tSWRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiYXgtYWN0aW9uLWJ1dHRvblwiPlxuICAgIEBpZiAoY2hhdE1lc3NhZ2UoKT8udXNlck5hbWUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1tZXNzYWdlLXVzZXItbmFtZVwiPlxuICAgICAgICA8YXgtdGV4dD57eyBjaGF0TWVzc2FnZSgpLnVzZXJOYW1lIH19PC9heC10ZXh0PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChjaGF0TWVzc2FnZSgpPy5zaG93QWN0aW9uQnV0dG9uKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1hY3Rpb24tYnV0dG9uXCI+XG4gICAgICAgIDxheC1tZW51IG9wZW5Pbj1cImNsaWNrXCIgW2hhc0Fycm93XT1cImZhbHNlXCI+XG4gICAgICAgICAgPGF4LW1lbnUtaXRlbSBjbGFzcz1cImF4LXBhcmVudC1tZW51LWl0ZW1cIj5cbiAgICAgICAgICAgIDxheC10ZXh0IChjbGljayk9XCJoYW5kbGVBY3Rpb25DbGljaygpXCI+Li4uPC9heC10ZXh0PlxuXG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGFjdGlvbkJ1dHRvbkl0ZW1zUHJpdmF0ZSgpOyB0cmFjayBpdGVtLnRleHQpIHtcbiAgICAgICAgICAgICAgPGF4LW1lbnUtaXRlbSBbY29sb3JdPVwiaXRlbS5jb2xvclwiIChvbkNsaWNrKT1cIml0ZW0ub25DbGljayhjaGF0TWVzc2FnZSgpLmlkKVwiPlxuICAgICAgICAgICAgICAgIDxheC10ZXh0Pnt7IGl0ZW0udGV4dCB9fTwvYXgtdGV4dD5cbiAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwiaXRlbS5pY29uXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuXG4gICAgICAgICAgICAgICAgQGZvciAoaW5uZXJJdGVtIG9mIGl0ZW0uaXRlbXM7IHRyYWNrIGlubmVySXRlbS50ZXh0KSB7XG4gICAgICAgICAgICAgICAgICA8YXgtbWVudS1pdGVtIFtjb2xvcl09XCJpbm5lckl0ZW0uY29sb3JcIiAob25DbGljayk9XCJpbm5lckl0ZW0ub25DbGljayhjaGF0TWVzc2FnZSgpLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtdGV4dD57eyBpbm5lckl0ZW0udGV4dCB9fTwvYXgtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJpbm5lckl0ZW0uaWNvblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvYXgtbWVudS1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtbWVudS1pdGVtPlxuICAgICAgICA8L2F4LW1lbnU+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInBvcnRhbCgpXCIgKGF0dGFjaGVkKT1cIl9oYW5kbGVBdHRhY2hlZCgkZXZlbnQpXCI+PC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2IGNsYXNzPVwiYXgtY2hhdC1tZXNzYWdlLXN0YXR1c1wiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1tZXNzYWdlLXByZWZpeFwiPjwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1zdWZmaXhcIj48L2Rpdj5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7eyBjaGF0TWVzc2FnZSgpLnNlbmRUaW1lIHwgZm9ybWF0OiAnZGF0ZXRpbWUnIDogJ0hIOm1tJyB8IGFzeW5jIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3Bhbj5cbiAgICAgICAgQGlmIChpc093bikge1xuICAgICAgICAgIEBpZiAoY2hhdE1lc3NhZ2UoKS5kZWxpdmVyVGltZSAmJiBjaGF0TWVzc2FnZSgpLnNlbmRUaW1lKSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGVjayBheC1tZXNzYWdlLXN0YXR1c1wiPjwvaT5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjaGF0TWVzc2FnZSgpLnJlYWRUaW1lICYmIGNoYXRNZXNzYWdlKCkuc2VuZFRpbWUpIHtcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWRvYmJsZS1jaGVjayBheC1tZXNzYWdlLXN0YXR1c1wiPjwvaT5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuQGlmICghY2hhdE1lc3NhZ2UoKS5zZW5kVGltZSkge1xuICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtcmVzZW5kLWJ1dHRvbiBheC14c1wiIGNvbG9yPVwiZGFuZ2VyXCIgI2I+XG4gICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tZXJyb3JcIj48L2F4LWljb24+XG5cbiAgICA8YXgtcG9wb3ZlciBbdGFyZ2V0XT1cImJcIiBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCIgI3BvcG92ZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmxheS1wYW5lXCI+XG4gICAgICAgIDxheC1jb250ZW50PiA8L2F4LWNvbnRlbnQ+XG4gICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgIEBpZiAoY2hhdE1lc3NhZ2UoKS5vblJlc2VuZENsaWNrKSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIlJlc2VuZFwiIChvbkNsaWNrKT1cImhhbmRsZVJlc2VuZENsaWNrKClcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tcmVsb2FkIGF4LWJvbGRcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGNoYXRNZXNzYWdlKCkub25EZWxldGVDbGljaykge1xuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJEZWxldGVcIiBjb2xvcj1cImRhbmdlclwiIChvbkNsaWNrKT1cImhhbmRsZURlbGV0ZUNsaWNrKClcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2xlYXIgYXgtYm9sZFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LXBvcG92ZXI+XG4gIDwvYXgtYnV0dG9uPlxufVxuXG5AaWYgKCFpc093biAmJiBpc1JlcGx5QXJyb3dTaG93bigpKSB7XG4gIDxpIChjbGljayk9XCJyZXBseUhhbmRsZXIoY2hhdE1lc3NhZ2UoKSlcIiBjbGFzcz1cImZhLXNvbGlkIGZhLXJlcGx5IGF4LXJvdGF0ZSBheC1jdXJzb3ItcG9pbnRlclwiPjwvaT5cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXConversationMessageAction {\n}\nexport class AXConversationMenuOpeningEvent {\n constructor() {\n this.canceled = false;\n }\n}\nexport class AXConversationMessageBaseComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageBaseComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageBaseComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQzs7QUEyQmpELE1BQU0sT0FBZ0IsMkJBQTJCO0NBTWhEO0FBRUQsTUFBTSxPQUFPLDhCQUE4QjtJQUEzQztRQUVFLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFFbkIsQ0FBQztDQUFBO0FBR0QsTUFBTSxPQUFPLGtDQUFrQzs4R0FBbEMsa0NBQWtDO2tIQUFsQyxrQ0FBa0M7OzJGQUFsQyxrQ0FBa0M7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFN0eWxlQ29sb3JUeXBlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWENvbnZlcnNhdGlvbk1lc3NhZ2VUeXBlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb21wb25lbnQ6IFR5cGU8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWENvbnZlcnNhdGlvbk1lc3NhZ2Uge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIHNlbmRUaW1lOiBEYXRlIHwgbnVsbDtcbiAgZGVsaXZlclRpbWU/OiBEYXRlO1xuICByZWFkVGltZT86IERhdGU7XG4gIHJlcGx5VG8/OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgfTtcbiAgY29udGVudDogYW55O1xuICBmcm9tSWQ/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb25SZXNlbmRDbGljaz86ICgpID0+IHZvaWQ7XG4gIG9uRGVsZXRlQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBvbkRvd25sb2FkQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbENsaWNrPzogKCkgPT4gdm9pZDtcbiAgc2hvd0FjdGlvbkJ1dHRvbj86IGJvb2xlYW47XG4gIHVzZXJOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhDb252ZXJzYXRpb25NZXNzYWdlQWN0aW9uIHtcbiAgY29sb3I/OiBBWFN0eWxlQ29sb3JUeXBlO1xuICB0ZXh0OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIG9uQ2xpY2s6IChpZDogc3RyaW5nKSA9PiB2b2lkO1xuICBpdGVtcz86IEFYQ29udmVyc2F0aW9uTWVzc2FnZUFjdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25NZW51T3BlbmluZ0V2ZW50IHtcbiAgaXRlbXM6IEFYQ29udmVyc2F0aW9uTWVzc2FnZUFjdGlvbltdO1xuICBjYW5jZWxlZCA9IGZhbHNlO1xuICBkYXRhOiBBWENvbnZlcnNhdGlvbk1lc3NhZ2U7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50IHtcbiAgbWVzc2FnZTogQVhDb252ZXJzYXRpb25NZXNzYWdlO1xufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXRangeSliderComponent } from '@acorex/components/range-slider';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, Renderer2, ViewEncapsulation, afterNextRender, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * Component for displaying audio messages in a conversation.\n *\n * @category Components\n */\nexport class AXConversationMessageAudioComponent extends AXConversationMessageBaseComponent {\n /**\n * @ignore\n */\n constructor() {\n super();\n this.render = inject(Renderer2);\n /**\n * @ignore\n */\n this.audioState = signal('paused', ...(ngDevMode ? [{ debugName: \"audioState\" }] : []));\n /**\n * @ignore\n */\n // audioTag = viewChild<ElementRef<HTMLAudioElement>>('a');\n this.audioTag = signal(new Audio(), ...(ngDevMode ? [{ debugName: \"audioTag\" }] : []));\n /**\n * @ignore\n */\n this.audioRate = signal(1, ...(ngDevMode ? [{ debugName: \"audioRate\" }] : []));\n /**\n * @ignore\n */\n this.currentTime = signal(0, ...(ngDevMode ? [{ debugName: \"currentTime\" }] : []));\n /**\n * @ignore\n */\n this.duration = signal(0, ...(ngDevMode ? [{ debugName: \"duration\" }] : []));\n /**\n * @ignore\n */\n this.currentTimeFormat = signal(0, ...(ngDevMode ? [{ debugName: \"currentTimeFormat\" }] : []));\n /**\n * @ignore\n */\n this.durationFormat = signal(0, ...(ngDevMode ? [{ debugName: \"durationFormat\" }] : []));\n afterNextRender(() => {\n this.audioTag().autoplay = false;\n this.audioTag().src = this.message.content;\n this.render.listen(this.audioTag(), 'ended', this.endedFunction.bind(this));\n this.render.listen(this.audioTag(), 'durationchange', this.durationchangeFunction.bind(this));\n this.render.listen(this.audioTag(), 'timeupdate', this.timeupdateFunction.bind(this));\n });\n }\n /**\n * @ignore\n */\n ngOnDestroy() {\n if (this.endedEvent) {\n this.endedEvent();\n }\n if (this.durationchangeEvent) {\n this.durationchangeEvent();\n }\n if (this.timeupdateEvent) {\n this.timeupdateEvent();\n }\n }\n /**\n * @ignore\n */\n endedFunction() {\n this.audioState.set('paused');\n this.audioTag().pause();\n this.audioTag().currentTime = 0;\n this.currentTime.set(0);\n }\n /**\n * @ignore\n */\n durationchangeFunction() {\n if (this.audioTag().duration === Infinity)\n return;\n this.duration.set(this.audioTag().duration);\n this.durationFormat.set(Math.ceil(this.audioTag().duration) * 1000);\n }\n /**\n * @ignore\n */\n timeupdateFunction() {\n this.currentTime.set(this.audioTag().currentTime);\n this.currentTimeFormat.set(Math.ceil(this.audioTag().currentTime * 1000));\n }\n /**\n * Seeks to the specified time and resumes audio playback.\n *\n * @param e - Time in seconds to seek to.\n * @ignore\n */\n clickHandler(e) {\n this.audioTag().currentTime = e;\n }\n /**\n * Pauses the audio and updates the state to 'paused'.\n * @ignore\n */\n handlePauseClick() {\n this.audioState.set('paused');\n this.audioTag().pause();\n }\n /**\n * Plays the audio and updates the state to 'playing'.\\\n * @ignore\n */\n handlePlayClick() {\n this.audioState.set('playing');\n this.audioTag().play();\n }\n /**\n * Toggles the playback rate of the audio between 1x, 1.5x, and 2x.\n * @ignore\n */\n handleRateClick() {\n if (this.audioRate() === 1) {\n this.audioRate.set(1.5);\n this.audioTag().playbackRate = 1.5;\n }\n else if (this.audioRate() === 1.5) {\n this.audioRate.set(2);\n this.audioTag().playbackRate = 2;\n }\n else if (this.audioRate() === 2) {\n this.audioRate.set(1);\n this.audioTag().playbackRate = 1;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationMessageAudioComponent, isStandalone: true, selector: \"ax-conversation-message-audio\", providers: [{ provide: AXComponent, useExisting: AXConversationMessageAudioComponent }], usesInheritance: true, ngImport: i0, template: \"<ax-prefix>\\n <div class=\\\"ax-time-rate\\\">\\n @switch (audioState()) {\\n @case ('paused') {\\n {{ currentTimeFormat() | format: 'time-duration' | async }}\\n }\\n @case ('playing') {\\n {{ currentTimeFormat() | format: 'time-duration' | async }}\\n }\\n @default {\\n {{ durationFormat() | format: 'time-duration' | async }}\\n }\\n }\\n <ax-button\\n color=\\\"primary\\\"\\n look=\\\"solid\\\"\\n text=\\\"{{ audioRate() }}X\\\"\\n class=\\\"ax-audio-speed\\\"\\n (click)=\\\"handleRateClick()\\\"\\n ></ax-button>\\n </div>\\n</ax-prefix>\\n<div class=\\\"ax-conversation-controller\\\">\\n @switch (audioState()) {\\n @case ('playing') {\\n <button (click)=\\\"handlePauseClick()\\\">\\n <i class=\\\"ax-icon ax-icon-pause\\\"></i>\\n </button>\\n }\\n @case ('paused') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n }\\n</div>\\n<ax-range-slider\\n class=\\\"ax-modify-bgSlider\\\"\\n (ngModelChange)=\\\"clickHandler($event)\\\"\\n [max]=\\\"duration()\\\"\\n [min]=\\\"0\\\"\\n mode=\\\"single\\\"\\n [ngModel]=\\\"currentTime()\\\"\\n color=\\\"primary\\\"\\n>\\n</ax-range-slider>\\n\", styles: [\"ax-conversation-message-audio{display:flex}ax-conversation-message-audio .ax-time-rate .ax-audio-speed{margin-inline-start:.3rem;border-radius:.2rem;min-width:2rem}ax-conversation-message-audio .ax-modify-bgSlider{width:14rem;margin:0 1rem;padding:0}.ax-time-rate{display:flex;align-items:center}.ax-audio-speed{--ax-comp-button-font-size: .6rem;--ax-comp-button-padding-x: .1rem;--ax-comp-button-padding-y: .1rem;--ax-comp-button-height: auto;--ax-comp-button-text-padding-x: .5rem;margin-inline-start:.5rem}\\n\"], dependencies: [{ kind: \"component\", type: 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: \"component\", type: 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: AXRangeSliderComponent, selector: \"ax-range-slider\", inputs: [\"disabled\", \"readonly\", \"orientation\", \"color\", \"values\", \"mode\", \"min\", \"max\", \"step\", \"snap\", \"tooltipMode\", \"snapMode\", \"hasStep\", \"hasSnap\", \"hasLable\", \"hasTooltip\"], outputs: [\"valuesChange\"] }, { 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: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageAudioComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, imports: [\n AXDecoratorGenericComponent,\n AXButtonComponent,\n AXRangeSliderComponent,\n FormsModule,\n AsyncPipe,\n AXFormatPipe,\n ], providers: [{ provide: AXComponent, useExisting: AXConversationMessageAudioComponent }], template: \"<ax-prefix>\\n <div class=\\\"ax-time-rate\\\">\\n @switch (audioState()) {\\n @case ('paused') {\\n {{ currentTimeFormat() | format: 'time-duration' | async }}\\n }\\n @case ('playing') {\\n {{ currentTimeFormat() | format: 'time-duration' | async }}\\n }\\n @default {\\n {{ durationFormat() | format: 'time-duration' | async }}\\n }\\n }\\n <ax-button\\n color=\\\"primary\\\"\\n look=\\\"solid\\\"\\n text=\\\"{{ audioRate() }}X\\\"\\n class=\\\"ax-audio-speed\\\"\\n (click)=\\\"handleRateClick()\\\"\\n ></ax-button>\\n </div>\\n</ax-prefix>\\n<div class=\\\"ax-conversation-controller\\\">\\n @switch (audioState()) {\\n @case ('playing') {\\n <button (click)=\\\"handlePauseClick()\\\">\\n <i class=\\\"ax-icon ax-icon-pause\\\"></i>\\n </button>\\n }\\n @case ('paused') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n }\\n</div>\\n<ax-range-slider\\n class=\\\"ax-modify-bgSlider\\\"\\n (ngModelChange)=\\\"clickHandler($event)\\\"\\n [max]=\\\"duration()\\\"\\n [min]=\\\"0\\\"\\n mode=\\\"single\\\"\\n [ngModel]=\\\"currentTime()\\\"\\n color=\\\"primary\\\"\\n>\\n</ax-range-slider>\\n\", styles: [\"ax-conversation-message-audio{display:flex}ax-conversation-message-audio .ax-time-rate .ax-audio-speed{margin-inline-start:.3rem;border-radius:.2rem;min-width:2rem}ax-conversation-message-audio .ax-modify-bgSlider{width:14rem;margin:0 1rem;padding:0}.ax-time-rate{display:flex;align-items:center}.ax-audio-speed{--ax-comp-button-font-size: .6rem;--ax-comp-button-padding-x: .1rem;--ax-comp-button-padding-y: .1rem;--ax-comp-button-height: auto;--ax-comp-button-text-padding-x: .5rem;margin-inline-start:.5rem}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8vY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8vY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBYSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFFOUU7Ozs7R0FJRztBQWdCSCxNQUFNLE9BQU8sbUNBQW9DLFNBQVEsa0NBQWtDO0lBcUR6Rjs7T0FFRztJQUNIO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUF4REYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQzs7V0FFRztRQUNPLGVBQVUsR0FBRyxNQUFNLENBQXVCLFFBQVEsc0RBQUMsQ0FBQztRQUU5RDs7V0FFRztRQUNILDJEQUEyRDtRQUNqRCxhQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLG9EQUFDLENBQUM7UUFFekM7O1dBRUc7UUFDTyxjQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMscURBQUMsQ0FBQztRQUVoQzs7V0FFRztRQUNPLGdCQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsdURBQUMsQ0FBQztRQUVsQzs7V0FFRztRQUNPLGFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxvREFBQyxDQUFDO1FBRS9COztXQUVHO1FBQ08sc0JBQWlCLEdBQUcsTUFBTSxDQUFDLENBQUMsNkRBQUMsQ0FBQztRQUV4Qzs7V0FFRztRQUNPLG1CQUFjLEdBQUcsTUFBTSxDQUFDLENBQUMsMERBQUMsQ0FBQztRQXNCbkMsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzlGLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxhQUFhO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxzQkFBc0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVE7WUFBRSxPQUFPO1FBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7O09BRUc7SUFDTyxrQkFBa0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ08sWUFBWSxDQUFDLENBQU07UUFDM0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsR0FBRyxDQUFXLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNPLGdCQUFnQjtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLGVBQWU7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDTyxlQUFlO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7OEdBdkpVLG1DQUFtQztrR0FBbkMsbUNBQW1DLDRFQUZuQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQyxpREM1QnpGLDJxQ0E4Q0EseWpCRHpCSSwyQkFBMkIseUxBQzNCLGlCQUFpQiwyVUFDakIsc0JBQXNCLDJRQUN0QixXQUFXLDBWQUNYLFNBQVMseUNBQ1QsWUFBWTs7MkZBSUgsbUNBQW1DO2tCQWYvQyxTQUFTOytCQUNFLCtCQUErQixpQkFHMUIsaUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDUCwyQkFBMkI7d0JBQzNCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QixXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsWUFBWTtxQkFDYixhQUNVLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcscUNBQXFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3JhbmdlLXNsaWRlcic7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBWaWV3RW5jYXBzdWxhdGlvbiwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLnR5cGVzJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYXVkaW8gbWVzc2FnZXMgaW4gYSBjb252ZXJzYXRpb24uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYQnV0dG9uQ29tcG9uZW50LFxuICAgIEFYUmFuZ2VTbGlkZXJDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIEFYRm9ybWF0UGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29udmVyc2F0aW9uTWVzc2FnZUF1ZGlvQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBdWRpb0NvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlbmRlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhdWRpb1N0YXRlID0gc2lnbmFsPCdwbGF5aW5nJyB8ICdwYXVzZWQnPigncGF1c2VkJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICAvLyBhdWRpb1RhZyA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxBdWRpb0VsZW1lbnQ+PignYScpO1xuICBwcm90ZWN0ZWQgYXVkaW9UYWcgPSBzaWduYWwobmV3IEF1ZGlvKCkpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGF1ZGlvUmF0ZSA9IHNpZ25hbCgxKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjdXJyZW50VGltZSA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBkdXJhdGlvbiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjdXJyZW50VGltZUZvcm1hdCA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBkdXJhdGlvbkZvcm1hdCA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBlbmRlZEV2ZW50O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGR1cmF0aW9uY2hhbmdlRXZlbnQ7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgdGltZXVwZGF0ZUV2ZW50O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgdGhpcy5hdWRpb1RhZygpLmF1dG9wbGF5ID0gZmFsc2U7XG4gICAgICB0aGlzLmF1ZGlvVGFnKCkuc3JjID0gdGhpcy5tZXNzYWdlLmNvbnRlbnQ7XG4gICAgICB0aGlzLnJlbmRlci5saXN0ZW4odGhpcy5hdWRpb1RhZygpLCAnZW5kZWQnLCB0aGlzLmVuZGVkRnVuY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLnJlbmRlci5saXN0ZW4odGhpcy5hdWRpb1RhZygpLCAnZHVyYXRpb25jaGFuZ2UnLCB0aGlzLmR1cmF0aW9uY2hhbmdlRnVuY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLnJlbmRlci5saXN0ZW4odGhpcy5hdWRpb1RhZygpLCAndGltZXVwZGF0ZScsIHRoaXMudGltZXVwZGF0ZUZ1bmN0aW9uLmJpbmQodGhpcykpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbmRlZEV2ZW50KSB7XG4gICAgICB0aGlzLmVuZGVkRXZlbnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHVyYXRpb25jaGFuZ2VFdmVudCkge1xuICAgICAgdGhpcy5kdXJhdGlvbmNoYW5nZUV2ZW50KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRpbWV1cGRhdGVFdmVudCkge1xuICAgICAgdGhpcy50aW1ldXBkYXRlRXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBlbmRlZEZ1bmN0aW9uKCkge1xuICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BhdXNlZCcpO1xuICAgIHRoaXMuYXVkaW9UYWcoKS5wYXVzZSgpO1xuICAgIHRoaXMuYXVkaW9UYWcoKS5jdXJyZW50VGltZSA9IDA7XG4gICAgdGhpcy5jdXJyZW50VGltZS5zZXQoMCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBkdXJhdGlvbmNoYW5nZUZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmF1ZGlvVGFnKCkuZHVyYXRpb24gPT09IEluZmluaXR5KSByZXR1cm47XG4gICAgdGhpcy5kdXJhdGlvbi5zZXQodGhpcy5hdWRpb1RhZygpLmR1cmF0aW9uKTtcbiAgICB0aGlzLmR1cmF0aW9uRm9ybWF0LnNldChNYXRoLmNlaWwodGhpcy5hdWRpb1RhZygpLmR1cmF0aW9uKSAqIDEwMDApO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgdGltZXVwZGF0ZUZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudFRpbWUuc2V0KHRoaXMuYXVkaW9UYWcoKS5jdXJyZW50VGltZSk7XG4gICAgdGhpcy5jdXJyZW50VGltZUZvcm1hdC5zZXQoTWF0aC5jZWlsKHRoaXMuYXVkaW9UYWcoKS5jdXJyZW50VGltZSAqIDEwMDApKTtcbiAgfVxuICAvKipcbiAgICogU2Vla3MgdG8gdGhlIHNwZWNpZmllZCB0aW1lIGFuZCByZXN1bWVzIGF1ZGlvIHBsYXliYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gZSAtIFRpbWUgaW4gc2Vjb25kcyB0byBzZWVrIHRvLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2xpY2tIYW5kbGVyKGU6IGFueSkge1xuICAgIHRoaXMuYXVkaW9UYWcoKS5jdXJyZW50VGltZSA9IGUgYXMgbnVtYmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdXNlcyB0aGUgYXVkaW8gYW5kIHVwZGF0ZXMgdGhlIHN0YXRlIHRvICdwYXVzZWQnLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUGF1c2VDbGljaygpIHtcbiAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdwYXVzZWQnKTtcbiAgICB0aGlzLmF1ZGlvVGFnKCkucGF1c2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGF5cyB0aGUgYXVkaW8gYW5kIHVwZGF0ZXMgdGhlIHN0YXRlIHRvICdwbGF5aW5nJy5cXFxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUGxheUNsaWNrKCkge1xuICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BsYXlpbmcnKTtcbiAgICB0aGlzLmF1ZGlvVGFnKCkucGxheSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHBsYXliYWNrIHJhdGUgb2YgdGhlIGF1ZGlvIGJldHdlZW4gMXgsIDEuNXgsIGFuZCAyeC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJhdGVDbGljaygpIHtcbiAgICBpZiAodGhpcy5hdWRpb1JhdGUoKSA9PT0gMSkge1xuICAgICAgdGhpcy5hdWRpb1JhdGUuc2V0KDEuNSk7XG4gICAgICB0aGlzLmF1ZGlvVGFnKCkucGxheWJhY2tSYXRlID0gMS41O1xuICAgIH0gZWxzZSBpZiAodGhpcy5hdWRpb1JhdGUoKSA9PT0gMS41KSB7XG4gICAgICB0aGlzLmF1ZGlvUmF0ZS5zZXQoMik7XG4gICAgICB0aGlzLmF1ZGlvVGFnKCkucGxheWJhY2tSYXRlID0gMjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXVkaW9SYXRlKCkgPT09IDIpIHtcbiAgICAgIHRoaXMuYXVkaW9SYXRlLnNldCgxKTtcbiAgICAgIHRoaXMuYXVkaW9UYWcoKS5wbGF5YmFja1JhdGUgPSAxO1xuICAgIH1cbiAgfVxufVxuIiwiPGF4LXByZWZpeD5cbiAgPGRpdiBjbGFzcz1cImF4LXRpbWUtcmF0ZVwiPlxuICAgIEBzd2l0Y2ggKGF1ZGlvU3RhdGUoKSkge1xuICAgICAgQGNhc2UgKCdwYXVzZWQnKSB7XG4gICAgICAgIHt7IGN1cnJlbnRUaW1lRm9ybWF0KCkgfCBmb3JtYXQ6ICd0aW1lLWR1cmF0aW9uJyB8IGFzeW5jIH19XG4gICAgICB9XG4gICAgICBAY2FzZSAoJ3BsYXlpbmcnKSB7XG4gICAgICAgIHt7IGN1cnJlbnRUaW1lRm9ybWF0KCkgfCBmb3JtYXQ6ICd0aW1lLWR1cmF0aW9uJyB8IGFzeW5jIH19XG4gICAgICB9XG4gICAgICBAZGVmYXVsdCB7XG4gICAgICAgIHt7IGR1cmF0aW9uRm9ybWF0KCkgfCBmb3JtYXQ6ICd0aW1lLWR1cmF0aW9uJyB8IGFzeW5jIH19XG4gICAgICB9XG4gICAgfVxuICAgIDxheC1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBsb29rPVwic29saWRcIlxuICAgICAgdGV4dD1cInt7IGF1ZGlvUmF0ZSgpIH19WFwiXG4gICAgICBjbGFzcz1cImF4LWF1ZGlvLXNwZWVkXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVSYXRlQ2xpY2soKVwiXG4gICAgPjwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cbjwvYXgtcHJlZml4PlxuPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1jb250cm9sbGVyXCI+XG4gIEBzd2l0Y2ggKGF1ZGlvU3RhdGUoKSkge1xuICAgIEBjYXNlICgncGxheWluZycpIHtcbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZVBhdXNlQ2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1wYXVzZVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICBAY2FzZSAoJ3BhdXNlZCcpIHtcbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZVBsYXlDbGljaygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXBsYXlcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIH1cbjwvZGl2PlxuPGF4LXJhbmdlLXNsaWRlclxuICBjbGFzcz1cImF4LW1vZGlmeS1iZ1NsaWRlclwiXG4gIChuZ01vZGVsQ2hhbmdlKT1cImNsaWNrSGFuZGxlcigkZXZlbnQpXCJcbiAgW21heF09XCJkdXJhdGlvbigpXCJcbiAgW21pbl09XCIwXCJcbiAgbW9kZT1cInNpbmdsZVwiXG4gIFtuZ01vZGVsXT1cImN1cnJlbnRUaW1lKClcIlxuICBjb2xvcj1cInByaW1hcnlcIlxuPlxuPC9heC1yYW5nZS1zbGlkZXI+XG4iXX0=","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXVirtualScrollingContainerDirective, AXVirtualScrollingItemDirective } from '@acorex/cdk/virtual-scroll';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject, input, output, } from '@angular/core';\nimport { AXConversationMessageComponent } from '../conversation-message/conversation-message.component';\nimport { AXConversationService } from '../services/conversation.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Displays the conversation view with messages and interactions.\n *\n * @category Components\n */\nexport class AXConversationViewComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.conversationService = inject(AXConversationService);\n this.chatBoxHeight = input('30vh', ...(ngDevMode ? [{ debugName: \"chatBoxHeight\" }] : []));\n this.isReplyArrowShown = input(true, ...(ngDevMode ? [{ debugName: \"isReplyArrowShown\" }] : []));\n this.avatar = input(null, ...(ngDevMode ? [{ debugName: \"avatar\" }] : []));\n this.onActionMenuOpening = output();\n this.onAction = output();\n this.onReplyClick = output();\n this.onScrollEnd = output();\n }\n /**\n * Updates the previous items in the conversation by prepending new items to the beginning of the chat list.\n *\n * @param item - Array of items to prepend to the conversation.\n */\n updatePrevItems(item) {\n this.conversationService.chats.update((prev) => [...item, ...prev]);\n }\n /**\n * Calls for an update by emitting the onScrollEnd event.\n */\n callForUpdate() {\n this.onScrollEnd.emit({ component: this });\n }\n /**\n * Adds a new item to the end of the conversation chat list.\n *\n * @param item - The item to add to the conversation.\n */\n addNewItem(item) {\n this.conversationService.chats.update((prev) => [...prev, item]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationViewComponent, isStandalone: true, selector: \"ax-conversation-view\", inputs: { chatBoxHeight: { classPropertyName: \"chatBoxHeight\", publicName: \"chatBoxHeight\", isSignal: true, isRequired: false, transformFunction: null }, isReplyArrowShown: { classPropertyName: \"isReplyArrowShown\", publicName: \"isReplyArrowShown\", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: \"avatar\", publicName: \"avatar\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onActionMenuOpening: \"onActionMenuOpening\", onAction: \"onAction\", onReplyClick: \"onReplyClick\", onScrollEnd: \"onScrollEnd\" }, providers: [{ provide: AXComponent, useExisting: AXConversationViewComponent }], usesInheritance: true, ngImport: i0, template: \"<div axVirtualScrollingContainer (ScrollEnd)=\\\"callForUpdate()\\\" [height]=\\\"chatBoxHeight()\\\">\\n @for (item of conversationService.chats(); track item.id) {\\n <ax-conversation-message\\n [@fadeIn]\\n (onReplyClick)=\\\"onReplyClick.emit($event)\\\"\\n [avatar]=\\\"avatar()\\\"\\n (onActionMenuOpening)=\\\"onActionMenuOpening.emit($event)\\\"\\n [isReplyArrowShown]=\\\"isReplyArrowShown()\\\"\\n axVirtualScrollingItem\\n [chatMessage]=\\\"item\\\"\\n ></ax-conversation-message>\\n }\\n</div>\\n\", styles: [\"ax-conversation-view{display:block}ax-conversation-view .ax-conversation-container{overflow-y:auto;height:100%}\\n\"], dependencies: [{ kind: \"directive\", type: AXVirtualScrollingContainerDirective, selector: \"[axVirtualScrollingContainer]\", inputs: [\"height\"], outputs: [\"ScrollEnd\"] }, { kind: \"component\", type: AXConversationMessageComponent, selector: \"ax-conversation-message\", inputs: [\"isReplyArrowShown\", \"chatMessage\", \"avatar\"], outputs: [\"onActionMenuOpening\", \"onReplyClick\"] }, { kind: \"directive\", type: AXVirtualScrollingItemDirective, selector: \"[axVirtualScrollingItem]\" }], animations: [\n trigger('fadeIn', [\n transition(':enter', [style({ opacity: 0 }), animate('300ms ease-out', style({ opacity: 1 }))]),\n ]),\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXVirtualScrollingContainerDirective, AXConversationMessageComponent, AXVirtualScrollingItemDirective], providers: [{ provide: AXComponent, useExisting: AXConversationViewComponent }], animations: [\n trigger('fadeIn', [\n transition(':enter', [style({ opacity: 0 }), animate('300ms ease-out', style({ opacity: 1 }))]),\n ]),\n ], template: \"<div axVirtualScrollingContainer (ScrollEnd)=\\\"callForUpdate()\\\" [height]=\\\"chatBoxHeight()\\\">\\n @for (item of conversationService.chats(); track item.id) {\\n <ax-conversation-message\\n [@fadeIn]\\n (onReplyClick)=\\\"onReplyClick.emit($event)\\\"\\n [avatar]=\\\"avatar()\\\"\\n (onActionMenuOpening)=\\\"onActionMenuOpening.emit($event)\\\"\\n [isReplyArrowShown]=\\\"isReplyArrowShown()\\\"\\n axVirtualScrollingItem\\n [chatMessage]=\\\"item\\\"\\n ></ax-conversation-message>\\n }\\n</div>\\n\", styles: [\"ax-conversation-view{display:block}ax-conversation-view .ax-conversation-container{overflow-y:auto;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tdmlldy9jb252ZXJzYXRpb24tdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi12aWV3L2NvbnZlcnNhdGlvbi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsV0FBVyxFQUFXLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25ILE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFeEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBRXpFOzs7O0dBSUc7QUFlSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsZUFBZTtJQWRoRTs7UUFlWSx3QkFBbUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUVyRCxrQkFBYSxHQUFHLEtBQUssQ0FBUyxNQUFNLHlEQUFDLENBQUM7UUFFdEMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDLElBQUksNkRBQUMsQ0FBQztRQUVoQyxXQUFNLEdBQUcsS0FBSyxDQUFtQixJQUFJLGtEQUFDLENBQUM7UUFFaEQsd0JBQW1CLEdBQUcsTUFBTSxFQUFrQyxDQUFDO1FBRS9ELGFBQVEsR0FBRyxNQUFNLEVBQTZCLENBQUM7UUFFL0MsaUJBQVksR0FBRyxNQUFNLEVBQWdCLENBQUM7UUFFdEMsZ0JBQVcsR0FBRyxNQUFNLEVBQVcsQ0FBQztLQTBCakM7SUF4QkM7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxJQUFXO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQzs4R0F4Q1UsMkJBQTJCO2tHQUEzQiwyQkFBMkIsK25CQVAzQixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQyxpREM3QmpGLGdnQkFhQSwyS0RlWSxvQ0FBb0Msc0hBQUUsOEJBQThCLDhLQUFFLCtCQUErQix1REFFbkc7WUFDVixPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUNoQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoRyxDQUFDO1NBQ0g7OzJGQUVVLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1QixDQUFDLG9DQUFvQyxFQUFFLDhCQUE4QixFQUFFLCtCQUErQixDQUFDLGFBQ3JHLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsNkJBQTZCLEVBQUUsQ0FBQyxjQUNuRTt3QkFDVixPQUFPLENBQUMsUUFBUSxFQUFFOzRCQUNoQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDaEcsQ0FBQztxQkFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2xpY2tFdmVudCwgQVhDb21wb25lbnQsIEFYRXZlbnQsIE1YQmFzZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWFZpcnR1YWxTY3JvbGxpbmdDb250YWluZXJEaXJlY3RpdmUsIEFYVmlydHVhbFNjcm9sbGluZ0l0ZW1EaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L2Nkay92aXJ0dWFsLXNjcm9sbCc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25BY3Rpb25FdmVudCB9IGZyb20gJy4uL2NsYXNzZXMvZXZlbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb252ZXJzYXRpb24tbWVzc2FnZS9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZW51T3BlbmluZ0V2ZW50IH0gZnJvbSAnLi4vY29udmVyc2F0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnZlcnNhdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBEaXNwbGF5cyB0aGUgY29udmVyc2F0aW9uIHZpZXcgd2l0aCBtZXNzYWdlcyBhbmQgaW50ZXJhY3Rpb25zLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnZlcnNhdGlvbi12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udmVyc2F0aW9uLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtBWFZpcnR1YWxTY3JvbGxpbmdDb250YWluZXJEaXJlY3RpdmUsIEFYQ29udmVyc2F0aW9uTWVzc2FnZUNvbXBvbmVudCwgQVhWaXJ0dWFsU2Nyb2xsaW5nSXRlbURpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENvbnZlcnNhdGlvblZpZXdDb21wb25lbnQgfV0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlSW4nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbc3R5bGUoeyBvcGFjaXR5OiAwIH0pLCBhbmltYXRlKCczMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSldKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGNvbnZlcnNhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhDb252ZXJzYXRpb25TZXJ2aWNlKTtcblxuICByZWFkb25seSBjaGF0Qm94SGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMzB2aCcpO1xuXG4gIHJlYWRvbmx5IGlzUmVwbHlBcnJvd1Nob3duID0gaW5wdXQodHJ1ZSk7XG5cbiAgcmVhZG9ubHkgYXZhdGFyID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4obnVsbCk7XG5cbiAgb25BY3Rpb25NZW51T3BlbmluZyA9IG91dHB1dDxBWENvbnZlcnNhdGlvbk1lbnVPcGVuaW5nRXZlbnQ+KCk7XG5cbiAgb25BY3Rpb24gPSBvdXRwdXQ8QVhDb252ZXJzYXRpb25BY3Rpb25FdmVudD4oKTtcblxuICBvblJlcGx5Q2xpY2sgPSBvdXRwdXQ8QVhDbGlja0V2ZW50PigpO1xuXG4gIG9uU2Nyb2xsRW5kID0gb3V0cHV0PEFYRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHByZXZpb3VzIGl0ZW1zIGluIHRoZSBjb252ZXJzYXRpb24gYnkgcHJlcGVuZGluZyBuZXcgaXRlbXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY2hhdCBsaXN0LlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIEFycmF5IG9mIGl0ZW1zIHRvIHByZXBlbmQgdG8gdGhlIGNvbnZlcnNhdGlvbi5cbiAgICovXG4gIHVwZGF0ZVByZXZJdGVtcyhpdGVtOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5jaGF0cy51cGRhdGUoKHByZXYpID0+IFsuLi5pdGVtLCAuLi5wcmV2XSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgZm9yIGFuIHVwZGF0ZSBieSBlbWl0dGluZyB0aGUgb25TY3JvbGxFbmQgZXZlbnQuXG4gICAqL1xuICBjYWxsRm9yVXBkYXRlKCk6IHZvaWQge1xuICAgIHRoaXMub25TY3JvbGxFbmQuZW1pdCh7IGNvbXBvbmVudDogdGhpcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGl0ZW0gdG8gdGhlIGVuZCBvZiB0aGUgY29udmVyc2F0aW9uIGNoYXQgbGlzdC5cbiAgICpcbiAgICogQHBhcmFtIGl0ZW0gLSBUaGUgaXRlbSB0byBhZGQgdG8gdGhlIGNvbnZlcnNhdGlvbi5cbiAgICovXG4gIGFkZE5ld0l0ZW0oaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzLnVwZGF0ZSgocHJldikgPT4gWy4uLnByZXYsIGl0ZW1dKTtcbiAgfVxufVxuIiwiPGRpdiBheFZpcnR1YWxTY3JvbGxpbmdDb250YWluZXIgKFNjcm9sbEVuZCk9XCJjYWxsRm9yVXBkYXRlKClcIiBbaGVpZ2h0XT1cImNoYXRCb3hIZWlnaHQoKVwiPlxuICBAZm9yIChpdGVtIG9mIGNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgIDxheC1jb252ZXJzYXRpb24tbWVzc2FnZVxuICAgICAgW0BmYWRlSW5dXG4gICAgICAob25SZXBseUNsaWNrKT1cIm9uUmVwbHlDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgW2F2YXRhcl09XCJhdmF0YXIoKVwiXG4gICAgICAob25BY3Rpb25NZW51T3BlbmluZyk9XCJvbkFjdGlvbk1lbnVPcGVuaW5nLmVtaXQoJGV2ZW50KVwiXG4gICAgICBbaXNSZXBseUFycm93U2hvd25dPVwiaXNSZXBseUFycm93U2hvd24oKVwiXG4gICAgICBheFZpcnR1YWxTY3JvbGxpbmdJdGVtXG4gICAgICBbY2hhdE1lc3NhZ2VdPVwiaXRlbVwiXG4gICAgPjwvYXgtY29udmVyc2F0aW9uLW1lc3NhZ2U+XG4gIH1cbjwvZGl2PlxuIl19","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXLoadingSpinnerComponent } from '@acorex/components/loading';\nimport { AXFileService } from '@acorex/core/file';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, ViewEncapsulation, afterNextRender, inject, signal } from '@angular/core';\nimport { AXConversationViewComponent } from '../../conversation-view/conversation-view.component';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying file messages in a conversation.\n *\n * @category Components\n */\nexport class AXConversationFileMessageComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n this.#init = afterNextRender(() => {\n if (this.message.name) {\n this.fileName.set(this.message.name);\n this.fileSize.set(this.fileService.getSize(this.message.content));\n }\n else {\n this.fileName.set(this.message.content[0].name);\n this.fileSize.set(this.message.content[0].size);\n }\n });\n /**\n * @ignore\n */\n this.fileState = signal('ready', ...(ngDevMode ? [{ debugName: \"fileState\" }] : []));\n /**\n * @ignore\n */\n this.fileSize = signal(null, ...(ngDevMode ? [{ debugName: \"fileSize\" }] : []));\n /**\n * @ignore\n */\n this.fileName = signal('', ...(ngDevMode ? [{ debugName: \"fileName\" }] : []));\n /**\n * @ignore\n */\n this.fileService = inject(AXFileService);\n /**\n * @ignore\n */\n this.parent = inject(AXConversationViewComponent);\n }\n #init;\n /**\n * Emits a download action event for the file.\n * @ignore\n */\n handleDownloadFile() {\n this.parent.onAction.emit({ component: this, data: this.message, isUserInteraction: true });\n }\n /**\n * Emits a cancel action event for the file loading.\n * @ignore\n */\n handleCancelLoading() {\n this.parent.onAction.emit({ component: this, data: this.message, isUserInteraction: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationFileMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationFileMessageComponent, isStandalone: true, selector: \"ax-conversation-message-file\", providers: [{ provide: AXComponent, useExisting: AXConversationFileMessageComponent }], usesInheritance: true, ngImport: i0, template: \"<ax-prefix>\\n {{ fileSize() | format: 'filesize' | async }}\\n</ax-prefix>\\n<div class=\\\"ax-file-container\\\">\\n <div class=\\\"ax-conversation-controller\\\">\\n @switch (fileState()) {\\n @case ('ready') {\\n <button (click)=\\\"handleDownloadFile()\\\">\\n <i class=\\\"ax-icon ax-icon-download\\\"></i>\\n </button>\\n }\\n\\n @default {\\n <button (click)=\\\"handleCancelLoading()\\\">\\n <ax-loading-spinner\\n [size]=\\\"24\\\"\\n [stroke]=\\\"2\\\"\\n [color]=\\\"message.fromId ? 'white' : 'warning'\\\"\\n ></ax-loading-spinner>\\n </button>\\n }\\n }\\n </div>\\n\\n <div class=\\\"ax-file-name\\\">{{ fileName() }}</div>\\n</div>\\n\", styles: [\"ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\\n\"], dependencies: [{ kind: \"component\", type: 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: \"component\", type: AXLoadingSpinnerComponent, selector: \"ax-loading-spinner\", inputs: [\"text\", \"color\", \"size\", \"stroke\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationFileMessageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-file', encapsulation: ViewEncapsulation.None, imports: [AXDecoratorGenericComponent, AXLoadingSpinnerComponent, AsyncPipe, AXFormatPipe], providers: [{ provide: AXComponent, useExisting: AXConversationFileMessageComponent }], template: \"<ax-prefix>\\n {{ fileSize() | format: 'filesize' | async }}\\n</ax-prefix>\\n<div class=\\\"ax-file-container\\\">\\n <div class=\\\"ax-conversation-controller\\\">\\n @switch (fileState()) {\\n @case ('ready') {\\n <button (click)=\\\"handleDownloadFile()\\\">\\n <i class=\\\"ax-icon ax-icon-download\\\"></i>\\n </button>\\n }\\n\\n @default {\\n <button (click)=\\\"handleCancelLoading()\\\">\\n <ax-loading-spinner\\n [size]=\\\"24\\\"\\n [stroke]=\\\"2\\\"\\n [color]=\\\"message.fromId ? 'white' : 'warning'\\\"\\n ></ax-loading-spinner>\\n </button>\\n }\\n }\\n </div>\\n\\n <div class=\\\"ax-file-name\\\">{{ fileName() }}</div>\\n</div>\\n\", styles: [\"ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1maWxlL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS9jb252ZXJzYXRpb24tbWVzc2FnZS1maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFOUU7Ozs7R0FJRztBQVNILE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxrQ0FBa0M7SUFSMUY7O1FBU0UsVUFBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBVyxDQUFDLENBQUM7WUFDOUUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNPLGNBQVMsR0FBRyxNQUFNLENBQWdDLE9BQU8scURBQUMsQ0FBQztRQUNyRTs7V0FFRztRQUNPLGFBQVEsR0FBRyxNQUFNLENBQVMsSUFBSSxvREFBQyxDQUFDO1FBQzFDOztXQUVHO1FBQ08sYUFBUSxHQUFHLE1BQU0sQ0FBUyxFQUFFLG9EQUFDLENBQUM7UUFFeEM7O1dBRUc7UUFDSyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU1Qzs7V0FFRztRQUNLLFdBQU0sR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztLQWlCdEQ7SUFoREMsS0FBSyxDQVFGO0lBeUJIOzs7T0FHRztJQUNPLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVEOzs7T0FHRztJQUNPLG1CQUFtQjtRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQzs4R0FoRFUsa0NBQWtDO2tHQUFsQyxrQ0FBa0MsMkVBRmxDLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLGlEQ3RCeEYscXNCQTBCQSxxU0RMWSwyQkFBMkIseUxBQUUseUJBQXlCLHVHQUFFLFNBQVMseUNBQUUsWUFBWTs7MkZBRzlFLGtDQUFrQztrQkFSOUMsU0FBUzsrQkFDRSw4QkFBOEIsaUJBR3pCLGlCQUFpQixDQUFDLElBQUksV0FDNUIsQ0FBQywyQkFBMkIsRUFBRSx5QkFBeUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLGFBQy9FLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsb0NBQW9DLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYRmlsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZmlsZSc7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBhZnRlck5leHRSZW5kZXIsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblZpZXdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24tdmlldy9jb252ZXJzYXRpb24tdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnZlcnNhdGlvbi50eXBlcyc7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGZpbGUgbWVzc2FnZXMgaW4gYSBjb252ZXJzYXRpb24uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS1maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LCBBWExvYWRpbmdTcGlubmVyQ29tcG9uZW50LCBBc3luY1BpcGUsIEFYRm9ybWF0UGlwZV0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENvbnZlcnNhdGlvbkZpbGVNZXNzYWdlQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbkZpbGVNZXNzYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCB7XG4gICNpbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICBpZiAodGhpcy5tZXNzYWdlLm5hbWUpIHtcbiAgICAgIHRoaXMuZmlsZU5hbWUuc2V0KHRoaXMubWVzc2FnZS5uYW1lKTtcbiAgICAgIHRoaXMuZmlsZVNpemUuc2V0KHRoaXMuZmlsZVNlcnZpY2UuZ2V0U2l6ZSh0aGlzLm1lc3NhZ2UuY29udGVudCkgYXMgbnVtYmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlTmFtZS5zZXQodGhpcy5tZXNzYWdlLmNvbnRlbnRbMF0ubmFtZSk7XG4gICAgICB0aGlzLmZpbGVTaXplLnNldCh0aGlzLm1lc3NhZ2UuY29udGVudFswXS5zaXplKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpbGVTdGF0ZSA9IHNpZ25hbDwnbG9hZGluZycgfCAncmVhZHknIHwgJ2Vycm9yJz4oJ3JlYWR5Jyk7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpbGVTaXplID0gc2lnbmFsPG51bWJlcj4obnVsbCk7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpbGVOYW1lID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaWxlU2VydmljZSA9IGluamVjdChBWEZpbGVTZXJ2aWNlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcGFyZW50ID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uVmlld0NvbXBvbmVudCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgZG93bmxvYWQgYWN0aW9uIGV2ZW50IGZvciB0aGUgZmlsZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZURvd25sb2FkRmlsZSgpIHtcbiAgICB0aGlzLnBhcmVudC5vbkFjdGlvbi5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiB0aGlzLm1lc3NhZ2UsIGlzVXNlckludGVyYWN0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgY2FuY2VsIGFjdGlvbiBldmVudCBmb3IgdGhlIGZpbGUgbG9hZGluZy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNhbmNlbExvYWRpbmcoKSB7XG4gICAgdGhpcy5wYXJlbnQub25BY3Rpb24uZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogdGhpcy5tZXNzYWdlLCBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiPGF4LXByZWZpeD5cbiAge3sgZmlsZVNpemUoKSB8IGZvcm1hdDogJ2ZpbGVzaXplJyB8IGFzeW5jIH19XG48L2F4LXByZWZpeD5cbjxkaXYgY2xhc3M9XCJheC1maWxlLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWNvbnRyb2xsZXJcIj5cbiAgICBAc3dpdGNoIChmaWxlU3RhdGUoKSkge1xuICAgICAgQGNhc2UgKCdyZWFkeScpIHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlRG93bmxvYWRGaWxlKClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1kb3dubG9hZFwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG5cbiAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlQ2FuY2VsTG9hZGluZygpXCI+XG4gICAgICAgICAgPGF4LWxvYWRpbmctc3Bpbm5lclxuICAgICAgICAgICAgW3NpemVdPVwiMjRcIlxuICAgICAgICAgICAgW3N0cm9rZV09XCIyXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJtZXNzYWdlLmZyb21JZCA/ICd3aGl0ZScgOiAnd2FybmluZydcIlxuICAgICAgICAgID48L2F4LWxvYWRpbmctc3Bpbm5lcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgfVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYXgtZmlsZS1uYW1lXCI+e3sgZmlsZU5hbWUoKSB9fTwvZGl2PlxuPC9kaXY+XG4iXX0=","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * A popup component for displaying an image in full view.\n *\n * @category Components\n */\nexport class ConversationMessageImagePopupComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: ConversationMessageImagePopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.3\", type: ConversationMessageImagePopupComponent, isStandalone: true, selector: \"ax-conversation-message-image-popup\", providers: [{ provide: AXComponent, useExisting: ConversationMessageImagePopupComponent }], ngImport: i0, template: ` <img class=\"ax-image-popup\" [src]=\"url\" alt=\"\" />`, isInline: true, styles: [\"ax-conversation-message-image-popup{display:flex;justify-content:center;align-items:center}ax-conversation-message-image-popup .ax-image-popup{object-fit:fill;width:30vw}\\n\"], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: ConversationMessageImagePopupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-image-popup', template: ` <img class=\"ax-image-popup\" [src]=\"url\" alt=\"\" />`, encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: ConversationMessageImagePopupComponent }], styles: [\"ax-conversation-message-image-popup{display:flex;justify-content:center;align-items:center}ax-conversation-message-image-popup .ax-image-popup{object-fit:fill;width:30vw}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UtcG9wdXAvY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UtcG9wdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU3RDs7OztHQUlHO0FBUUgsTUFBTSxPQUFPLHNDQUFzQzs4R0FBdEMsc0NBQXNDO2tHQUF0QyxzQ0FBc0Msa0ZBRnRDLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzQ0FBc0MsRUFBRSxDQUFDLDBCQUhoRixvREFBb0Q7OzJGQUtuRCxzQ0FBc0M7a0JBUGxELFNBQVM7K0JBQ0UscUNBQXFDLFlBQ3JDLG9EQUFvRCxpQkFFL0MsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHdDQUF3QyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBwb3B1cCBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYW4gaW1hZ2UgaW4gZnVsbCB2aWV3LlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLWltYWdlLXBvcHVwJyxcbiAgdGVtcGxhdGU6IGAgPGltZyBjbGFzcz1cImF4LWltYWdlLXBvcHVwXCIgW3NyY109XCJ1cmxcIiBhbHQ9XCJcIiAvPmAsXG4gIHN0eWxlVXJsOiAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS1wb3B1cC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VQb3B1cENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uTWVzc2FnZUltYWdlUG9wdXBDb21wb25lbnQge1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB1cmw6IHN0cmluZztcbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { Component, afterNextRender, inject, signal } from '@angular/core';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport { ConversationMessageImagePopupComponent } from '../conversation-message-image-popup/conversation-message-image-popup.component';\nimport * as i0 from \"@angular/core\";\n/**\n * A component for displaying an image within a conversation message.\n *\n * @category Components\n */\nexport class AXConversationMessageImageComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this._imageUrl = signal('', ...(ngDevMode ? [{ debugName: \"_imageUrl\" }] : []));\n /**\n * @ignore\n */\n this.popup = inject(AXPopupService);\n /**\n * @ignore\n */\n this._options = {\n header: true,\n footer: false,\n size: 'md',\n draggable: true,\n hasBackdrop: true,\n closeButton: true,\n closeOnBackdropClick: false,\n };\n this.#init = afterNextRender(() => {\n this._imageUrl.set(this.message?.content);\n });\n }\n #init;\n /**\n * Opens a popup displaying the image with options for draggable, size, and backdrop.\n * @ignore\n */\n openPopup() {\n this.popup\n .open(ConversationMessageImagePopupComponent, {\n draggable: this._options.draggable,\n header: this._options.header,\n size: this._options.size,\n hasBackdrop: this._options.hasBackdrop,\n closeButton: this._options.closeButton,\n closeOnBackdropClick: this._options.closeOnBackdropClick,\n data: {\n url: this._imageUrl(),\n },\n })\n .then((c) => {\n console.log(c);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageImageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXConversationMessageImageComponent, isStandalone: true, selector: \"ax-conversation-message-image\", inputs: { message: \"message\" }, providers: [{ provide: AXComponent, useExisting: AXConversationMessageImageComponent }], usesInheritance: true, ngImport: i0, template: `<img (click)=\"openPopup()\" [src]=\"_imageUrl()\" alt=\"\" /> `, isInline: true, styles: [\"img{cursor:pointer;width:100%;height:100%}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageImageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-image', template: `<img (click)=\"openPopup()\" [src]=\"_imageUrl()\" alt=\"\" /> `, inputs: ['message'], providers: [{ provide: AXComponent, useExisting: AXConversationMessageImageComponent }], styles: [\"img{cursor:pointer;width:100%;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UvY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7O0FBRXhJOzs7O0dBSUc7QUFjSCxNQUFNLE9BQU8sbUNBQW9DLFNBQVEsa0NBQWtDO0lBYjNGOztRQWNFOztXQUVHO1FBQ08sY0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLHFEQUFDLENBQUM7UUFFakM7O1dBRUc7UUFDSyxVQUFLLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV2RDs7V0FFRztRQUNPLGFBQVEsR0FBRztZQUNuQixNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLG9CQUFvQixFQUFFLEtBQUs7U0FDNUIsQ0FBQztRQUVGLFVBQUssR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7S0F1Qko7SUF6QkMsS0FBSyxDQUVGO0lBRUg7OztPQUdHO0lBQ08sU0FBUztRQUNqQixJQUFJLENBQUMsS0FBSzthQUNQLElBQUksQ0FBQyxzQ0FBc0MsRUFBRTtZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBdUI7WUFDM0MsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVztZQUN0QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQ3RDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CO1lBQ3hELElBQUksRUFBRTtnQkFDSixHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTthQUN0QjtTQUNGLENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQWhEVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyw0R0FGbkMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsaURBVDdFLDJEQUEyRDs7MkZBVzFELG1DQUFtQztrQkFiL0MsU0FBUzsrQkFDRSwrQkFBK0IsWUFDL0IsMkRBQTJELFVBUTdELENBQUMsU0FBUyxDQUFDLGFBQ1IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxxQ0FBcUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UsIEFYUG9wdXBTaXplVHlwZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIGFmdGVyTmV4dFJlbmRlciwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uTWVzc2FnZUltYWdlUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS1wb3B1cC9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS1wb3B1cC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGFuIGltYWdlIHdpdGhpbiBhIGNvbnZlcnNhdGlvbiBtZXNzYWdlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLWltYWdlJyxcbiAgdGVtcGxhdGU6IGA8aW1nIChjbGljayk9XCJvcGVuUG9wdXAoKVwiIFtzcmNdPVwiX2ltYWdlVXJsKClcIiBhbHQ9XCJcIiAvPiBgLFxuICBzdHlsZXM6IGBcbiAgICBpbWcge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICBgLFxuICBpbnB1dHM6IFsnbWVzc2FnZSddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUltYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9pbWFnZVVybCA9IHNpZ25hbCgnJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHBvcHVwOiBBWFBvcHVwU2VydmljZSA9IGluamVjdChBWFBvcHVwU2VydmljZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX29wdGlvbnMgPSB7XG4gICAgaGVhZGVyOiB0cnVlLFxuICAgIGZvb3RlcjogZmFsc2UsXG4gICAgc2l6ZTogJ21kJyxcbiAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IGZhbHNlLFxuICB9O1xuXG4gICNpbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICB0aGlzLl9pbWFnZVVybC5zZXQodGhpcy5tZXNzYWdlPy5jb250ZW50KTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgcG9wdXAgZGlzcGxheWluZyB0aGUgaW1hZ2Ugd2l0aCBvcHRpb25zIGZvciBkcmFnZ2FibGUsIHNpemUsIGFuZCBiYWNrZHJvcC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9wZW5Qb3B1cCgpIHtcbiAgICB0aGlzLnBvcHVwXG4gICAgICAub3BlbihDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VQb3B1cENvbXBvbmVudCwge1xuICAgICAgICBkcmFnZ2FibGU6IHRoaXMuX29wdGlvbnMuZHJhZ2dhYmxlLFxuICAgICAgICBoZWFkZXI6IHRoaXMuX29wdGlvbnMuaGVhZGVyLFxuICAgICAgICBzaXplOiB0aGlzLl9vcHRpb25zLnNpemUgYXMgQVhQb3B1cFNpemVUeXBlLFxuICAgICAgICBoYXNCYWNrZHJvcDogdGhpcy5fb3B0aW9ucy5oYXNCYWNrZHJvcCxcbiAgICAgICAgY2xvc2VCdXR0b246IHRoaXMuX29wdGlvbnMuY2xvc2VCdXR0b24sXG4gICAgICAgIGNsb3NlT25CYWNrZHJvcENsaWNrOiB0aGlzLl9vcHRpb25zLmNsb3NlT25CYWNrZHJvcENsaWNrLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdXJsOiB0aGlzLl9pbWFnZVVybCgpLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC50aGVuKChjKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGMpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport { AXConversationService } from '../../services/conversation.service';\nimport * as i0 from \"@angular/core\";\n/**\n * A component for displaying a text message with optional reply content, including text, images, videos, files, and audio.\n *\n * @category Components\n */\nexport class AXConversationTextMessageComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this._text = signal('', ...(ngDevMode ? [{ debugName: \"_text\" }] : []));\n /**\n * @ignore\n */\n this.replyText = signal(null, ...(ngDevMode ? [{ debugName: \"replyText\" }] : []));\n /**\n * @ignore\n */\n this.replyImage = signal(null, ...(ngDevMode ? [{ debugName: \"replyImage\" }] : []));\n /**\n * @ignore\n */\n this.replyVideo = signal(null, ...(ngDevMode ? [{ debugName: \"replyVideo\" }] : []));\n /**\n * @ignore\n */\n this.replyAudio = signal(null, ...(ngDevMode ? [{ debugName: \"replyAudio\" }] : []));\n /**\n * @ignore\n */\n this.replyVoice = signal(null, ...(ngDevMode ? [{ debugName: \"replyVoice\" }] : []));\n /**\n * @ignore\n */\n this.replyFile = signal(null, ...(ngDevMode ? [{ debugName: \"replyFile\" }] : []));\n /**\n * @ignore\n */\n this.conversationService = inject(AXConversationService);\n }\n ngOnInit() {\n this._text.set(this.message?.content);\n if (!this.message?.replyTo)\n return;\n const replyMessage = this.conversationService.chats().find((chat) => chat.id === this.message?.replyTo?.id);\n switch (replyMessage.type) {\n case 'text':\n this.replyText.set(replyMessage);\n break;\n case 'image':\n this.replyImage.set(replyMessage);\n break;\n case 'video':\n this.replyVideo.set(replyMessage);\n break;\n case 'audio':\n this.replyAudio.set(replyMessage);\n break;\n case 'voice':\n this.replyVoice.set(replyMessage);\n break;\n case 'file':\n this.replyFile.set(replyMessage);\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationTextMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationTextMessageComponent, isStandalone: true, selector: \"ng-component\", inputs: { message: \"message\" }, providers: [{ provide: AXComponent, useExisting: AXConversationTextMessageComponent }], usesInheritance: true, ngImport: i0, template: `\n @if (replyText()) {\n <div class=\"ax-message-reply-container\">{{ replyText().content }}</div>\n }\n\n @if (replyImage()) {\n <div class=\"ax-image-reply-container\"><img [src]=\"replyImage().content\" alt=\"\" /></div>\n }\n\n @if (replyVideo()) {\n <div class=\"ax-video-reply-container\"><video [src]=\"replyVideo().content\"></video></div>\n }\n\n @if (replyFile()) {\n <div class=\"ax-message-reply-container\">\n <div class=\"file\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ replyFile().name }}\n </div>\n </div>\n }\n\n @if (replyAudio() || replyVoice()) {\n <div class=\"ax-message-reply-container\">{{ replyAudio().type }}</div>\n }\n\n <div class=\"ax-text-message\" [innerHtml]=\"_text()\"></div>\n `, isInline: true, styles: [\".ax-text-message{word-break:normal;white-space:break-spaces}\\n\"], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationTextMessageComponent, decorators: [{\n type: Component,\n args: [{ template: `\n @if (replyText()) {\n <div class=\"ax-message-reply-container\">{{ replyText().content }}</div>\n }\n\n @if (replyImage()) {\n <div class=\"ax-image-reply-container\"><img [src]=\"replyImage().content\" alt=\"\" /></div>\n }\n\n @if (replyVideo()) {\n <div class=\"ax-video-reply-container\"><video [src]=\"replyVideo().content\"></video></div>\n }\n\n @if (replyFile()) {\n <div class=\"ax-message-reply-container\">\n <div class=\"file\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ replyFile().name }}\n </div>\n </div>\n }\n\n @if (replyAudio() || replyVoice()) {\n <div class=\"ax-message-reply-container\">{{ replyAudio().type }}</div>\n }\n\n <div class=\"ax-text-message\" [innerHtml]=\"_text()\"></div>\n `, encapsulation: ViewEncapsulation.None, inputs: ['message'], providers: [{ provide: AXComponent, useExisting: AXConversationTextMessageComponent }], styles: [\".ax-text-message{word-break:normal;white-space:break-spaces}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS10ZXh0L2NvbnZlcnNhdGlvbi1tZXNzYWdlLXRleHQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUF5QixrQ0FBa0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUU1RTs7OztHQUlHO0FBbUNILE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxrQ0FBa0M7SUFsQzFGOztRQW1DRTs7V0FFRztRQUNPLFVBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxpREFBQyxDQUFDO1FBRTdCOztXQUVHO1FBQ08sY0FBUyxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxxREFBQyxDQUFDO1FBRWpFOztXQUVHO1FBQ08sZUFBVSxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxzREFBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ08sZUFBVSxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxzREFBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ08sZUFBVSxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxzREFBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ08sZUFBVSxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxzREFBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ08sY0FBUyxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxxREFBQyxDQUFDO1FBRWpFOztXQUVHO1FBQ0ssd0JBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7S0E4QjdEO0lBNUJDLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU87WUFBRSxPQUFPO1FBRW5DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFNUcsUUFBUSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7OEdBcEVVLGtDQUFrQztrR0FBbEMsa0NBQWtDLDJGQUZsQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQyxpREEvQjVFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQ7OzJGQU1VLGtDQUFrQztrQkFsQzlDLFNBQVM7K0JBQ0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVCxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLFVBQzdCLENBQUMsU0FBUyxDQUFDLGFBQ1IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxvQ0FBb0MsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlLCBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnZlcnNhdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhIHRleHQgbWVzc2FnZSB3aXRoIG9wdGlvbmFsIHJlcGx5IGNvbnRlbnQsIGluY2x1ZGluZyB0ZXh0LCBpbWFnZXMsIHZpZGVvcywgZmlsZXMsIGFuZCBhdWRpby5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHJlcGx5VGV4dCgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1yZXBseS1jb250YWluZXJcIj57eyByZXBseVRleHQoKS5jb250ZW50IH19PC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChyZXBseUltYWdlKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1pbWFnZS1yZXBseS1jb250YWluZXJcIj48aW1nIFtzcmNdPVwicmVwbHlJbWFnZSgpLmNvbnRlbnRcIiBhbHQ9XCJcIiAvPjwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAocmVwbHlWaWRlbygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtdmlkZW8tcmVwbHktY29udGFpbmVyXCI+PHZpZGVvIFtzcmNdPVwicmVwbHlWaWRlbygpLmNvbnRlbnRcIj48L3ZpZGVvPjwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAocmVwbHlGaWxlKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1tZXNzYWdlLXJlcGx5LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtcmVndWxhciBmYS1mb2xkZXItb3BlblwiPjwvaT5cbiAgICAgICAgICB7eyByZXBseUZpbGUoKS5uYW1lIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChyZXBseUF1ZGlvKCkgfHwgcmVwbHlWb2ljZSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1yZXBseS1jb250YWluZXJcIj57eyByZXBseUF1ZGlvKCkudHlwZSB9fTwvZGl2PlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LW1lc3NhZ2VcIiBbaW5uZXJIdG1sXT1cIl90ZXh0KClcIj48L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXRleHQuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbnB1dHM6IFsnbWVzc2FnZSddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25UZXh0TWVzc2FnZUNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25UZXh0TWVzc2FnZUNvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfdGV4dCA9IHNpZ25hbCgnJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVwbHlUZXh0ID0gc2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlcGx5SW1hZ2UgPSBzaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVwbHlWaWRlbyA9IHNpZ25hbDxBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCByZXBseUF1ZGlvID0gc2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlcGx5Vm9pY2UgPSBzaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVwbHlGaWxlID0gc2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJzYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdGV4dC5zZXQodGhpcy5tZXNzYWdlPy5jb250ZW50KTtcblxuICAgIGlmICghdGhpcy5tZXNzYWdlPy5yZXBseVRvKSByZXR1cm47XG5cbiAgICBjb25zdCByZXBseU1lc3NhZ2UgPSB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMoKS5maW5kKChjaGF0KSA9PiBjaGF0LmlkID09PSB0aGlzLm1lc3NhZ2U/LnJlcGx5VG8/LmlkKTtcblxuICAgIHN3aXRjaCAocmVwbHlNZXNzYWdlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICB0aGlzLnJlcGx5VGV4dC5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgIHRoaXMucmVwbHlJbWFnZS5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHRoaXMucmVwbHlWaWRlby5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHRoaXMucmVwbHlBdWRpby5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2b2ljZSc6XG4gICAgICAgIHRoaXMucmVwbHlWb2ljZS5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaWxlJzpcbiAgICAgICAgdGhpcy5yZXBseUZpbGUuc2V0KHJlcGx5TWVzc2FnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, signal } from '@angular/core';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport * as i0 from \"@angular/core\";\n/**\n * A component for displaying a video message with playback controls.\n *\n * @category Components\n */\nexport class AXConversationMessageVideoComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this._videoUrl = signal('', ...(ngDevMode ? [{ debugName: \"_videoUrl\" }] : []));\n }\n /**\n * @ignore\n */\n ngOnInit() {\n this._videoUrl.set(this.message?.content);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageVideoComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXConversationMessageVideoComponent, isStandalone: true, selector: \"ax-conversation-message-video\", providers: [{ provide: AXComponent, useExisting: AXConversationMessageVideoComponent }], usesInheritance: true, ngImport: i0, template: `<video controls [src]=\"_videoUrl()\"></video>`, isInline: true, styles: [\"video{width:100%;height:100%}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationMessageVideoComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-video', template: `<video controls [src]=\"_videoUrl()\"></video>`, providers: [{ provide: AXComponent, useExisting: AXConversationMessageVideoComponent }], styles: [\"video{width:100%;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtdmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtdmlkZW8vY29udmVyc2F0aW9uLW1lc3NhZ2UtdmlkZW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFOUU7Ozs7R0FJRztBQVlILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxrQ0FBa0M7SUFYM0Y7O1FBWUU7O1dBRUc7UUFDTyxjQUFTLEdBQUcsTUFBTSxDQUFDLEVBQUUscURBQUMsQ0FBQztLQVFsQztJQU5DOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs4R0FYVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyw0RUFGbkMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsaURBUDdFLDhDQUE4Qzs7MkZBUzdDLG1DQUFtQztrQkFYL0MsU0FBUzsrQkFDRSwrQkFBK0IsWUFDL0IsOENBQThDLGFBTzdDLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcscUNBQXFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGEgdmlkZW8gbWVzc2FnZSB3aXRoIHBsYXliYWNrIGNvbnRyb2xzLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLXZpZGVvJyxcbiAgdGVtcGxhdGU6IGA8dmlkZW8gY29udHJvbHMgW3NyY109XCJfdmlkZW9VcmwoKVwiPjwvdmlkZW8+YCxcbiAgc3R5bGVzOiBgXG4gICAgdmlkZW8ge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICBgLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25NZXNzYWdlVmlkZW9Db21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uTWVzc2FnZVZpZGVvQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF92aWRlb1VybCA9IHNpZ25hbCgnJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl92aWRlb1VybC5zZXQodGhpcy5tZXNzYWdlPy5jb250ZW50KTtcbiAgfVxufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { AXAudioWaveComponent } from '@acorex/components/audio-wave';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXLoadingSpinnerComponent } from '@acorex/components/loading';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport { Component, HostBinding, PLATFORM_ID, ViewChild, ViewEncapsulation, afterNextRender, inject, signal, } from '@angular/core';\nimport { AXConversationViewComponent } from '../../conversation-view/conversation-view.component';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport * as i0 from \"@angular/core\";\n/**\n * A component for displaying and handling audio messages in a conversation.\n *\n * @category Components\n */\nexport class AXConversationVoiceMessageComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this.config = { url: '' };\n /**\n * @ignore\n */\n this.audioState = signal('paused', ...(ngDevMode ? [{ debugName: \"audioState\" }] : []));\n /**\n * @ignore\n */\n this.parent = inject(AXConversationViewComponent);\n this.platformID = inject(PLATFORM_ID);\n /**\n * @ignore\n */\n this.selectedRate = signal(1, ...(ngDevMode ? [{ debugName: \"selectedRate\" }] : []));\n /**\n * @ignore\n */\n this.selectedRateIndex = signal(1, ...(ngDevMode ? [{ debugName: \"selectedRateIndex\" }] : []));\n /**\n * @ignore\n */\n this.audioProgress = signal(0, ...(ngDevMode ? [{ debugName: \"audioProgress\" }] : []));\n /**\n * @ignore\n */\n this.timeLeft = signal(0, ...(ngDevMode ? [{ debugName: \"timeLeft\" }] : []));\n /**\n * @ignore\n */\n this.currentTime = signal(0, ...(ngDevMode ? [{ debugName: \"currentTime\" }] : []));\n /**\n * @ignore\n */\n this.duration = signal(0, ...(ngDevMode ? [{ debugName: \"duration\" }] : []));\n this.#init = afterNextRender(() => {\n this.config.url = this.message?.content;\n this.config.audioRate = 0.25;\n this.setWaveColor();\n this.audio.onStatusChanged.subscribe((c) => {\n this.parent.onAction.emit(c);\n });\n this.handleLoadingProgress();\n });\n }\n #init;\n /**\n * @ignore\n */\n setWaveColor() {\n let waveColor = '';\n let progressColor = '';\n if (isPlatformBrowser(this.platformID)) {\n if (this.message.fromId) {\n waveColor = getComputedStyle(document.body).getPropertyValue('--ax-message-other-bar-color');\n progressColor = getComputedStyle(document.body).getPropertyValue('--ax-message-other-progress-color');\n }\n else {\n waveColor = getComputedStyle(document.body).getPropertyValue('--ax-message-own-bar-color');\n progressColor = getComputedStyle(document.body).getPropertyValue('--ax-message-own-progress-color');\n }\n }\n this.config.waveColor = waveColor;\n this.config.progressColor = progressColor;\n }\n /**\n * Pauses the audio playback and updates the audio state to 'paused'.\n * @ignore\n */\n handlePauseClick() {\n this.audio?.pause();\n this.audioState.set('paused');\n }\n /**\n * Plays the audio and updates the audio state to 'playing'.\n * @ignore\n */\n handlePlayClick() {\n this.audio?.play()?.then(() => {\n this.audioState.set('playing');\n });\n }\n /**\n * Updates audio state and progress based on status changes from the audio wave.\n * @param e - The event containing status and data related to the audio.\n * @ignore\n */\n handleOnStatusChanged(e) {\n if (e.status === 'load' || e.status === 'loading') {\n this.audioState.set('loading');\n }\n if (e.status === 'loading') {\n this.audioProgress.set(e.data.percent);\n this.duration.set(Math.ceil(e.data.duration * 1000));\n }\n if (e.status === 'ready') {\n this.audioState.set('ready');\n this.duration.set(Math.ceil(e.data.duration * 1000));\n }\n if (e.status === 'finish') {\n this.audioState.set('paused');\n }\n if (e.status === 'timeupdate') {\n this.timeLeft.set(this.duration() - e.data.currentTime * 1000);\n this.currentTime.set(e.data.currentTime * 1000);\n }\n if (e.status === 'error') {\n this.audioState.set('error');\n }\n }\n /**\n * @ignore\n */\n handleLoadingProgress() {\n // this.audioLoaderProgress?.nativeElement.style.cssText = `--ax-audio-progress: ${this.audioProgress()}`;\n }\n /**\n * Handles the cancellation of a loading operation.\n * @ignore\n */\n handleCancelLoading() {\n //\n }\n /**\n * Reloads the audio and updates the state to 'loading'.\n * @ignore\n */\n handleReloadClick() {\n //\n this.audioState.set('loading');\n this.audio.load();\n }\n /**\n * Cycles through predefined audio playback rates and updates the rate.\n * @ignore\n */\n handleRateClick() {\n const rates = [0.5, 1, 2, 4];\n if (this.selectedRateIndex() == rates.length - 1) {\n this.selectedRateIndex.set(0);\n }\n else {\n this.selectedRateIndex.set(this.selectedRateIndex() + 1);\n }\n this.selectedRate.set(rates[this.selectedRateIndex()]);\n this.audio.setRate(this.selectedRate());\n }\n /**\n * @ignore\n */\n get __hostClass() {\n return `${this.message.fromId ? 'ax-state-other' : 'ax-state-own'}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationVoiceMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXConversationVoiceMessageComponent, isStandalone: true, selector: \"ax-conversation-message-audio\", inputs: { message: \"message\" }, host: { properties: { \"class\": \"this.__hostClass\" } }, providers: [{ provide: AXComponent, useExisting: AXConversationVoiceMessageComponent }], viewQueries: [{ propertyName: \"audio\", first: true, predicate: [\"a\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"<ax-prefix>\\n @switch (audioState()) {\\n @case ('paused') {\\n {{ currentTime() | format: 'time-duration' | async }}\\n }\\n @case ('playing') {\\n {{ currentTime() | format: 'time-duration' | async }}\\n }\\n @default {\\n {{ duration() | format: 'time-duration' | async }}\\n }\\n }\\n <button class=\\\"ax-audio-speed\\\" (click)=\\\"handleRateClick()\\\"></button>\\n</ax-prefix>\\n<div class=\\\"ax-conversation-controller\\\">\\n @switch (audioState()) {\\n @case ('playing') {\\n <button (click)=\\\"handlePauseClick()\\\">\\n <i class=\\\"ax-icon ax-icon-pause\\\"></i>\\n </button>\\n }\\n\\n @case ('ready') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n\\n @case ('paused') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n\\n @case ('error') {\\n <button class=\\\"ax-state-error\\\" (click)=\\\"handleReloadClick()\\\">\\n <i class=\\\"ax-icon ax-icon-reload\\\"></i>\\n </button>\\n }\\n\\n @default {\\n <button (click)=\\\"handleCancelLoading()\\\">\\n <ax-loading-spinner\\n [size]=\\\"24\\\"\\n [stroke]=\\\"2\\\"\\n [color]=\\\"message.fromId ? 'white' : 'warning'\\\"\\n ></ax-loading-spinner>\\n </button>\\n }\\n }\\n</div>\\n<ax-audio-wave #a [config]=\\\"config\\\" (onStatusChanged)=\\\"handleOnStatusChanged($event)\\\"></ax-audio-wave>\\n<ax-suffix>\\n <div class=\\\"ax-audio-rate-button\\\" [class.ax-state-own]=\\\"!message?.fromId\\\" (click)=\\\"handleRateClick()\\\">\\n {{ selectedRate() }}X\\n </div>\\n</ax-suffix>\\n\", styles: [\"ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}ax-conversation-message-audio .ax-audio-rate-button{background-color:var(--ax-comp-conversation-other-color-fore);color:var(--ax-comp-conversation-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}ax-conversation-message-audio .ax-audio-rate-button.ax-state-own{background-color:var(--ax-comp-conversation-own-color-fore);color:var(--ax-comp-conversation-own-color)}ax-conversation-message-audio html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\\n\"], dependencies: [{ kind: \"component\", type: 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: \"component\", type: AXLoadingSpinnerComponent, selector: \"ax-loading-spinner\", inputs: [\"text\", \"color\", \"size\", \"stroke\"] }, { kind: \"component\", type: AXAudioWaveComponent, selector: \"ax-audio-wave\", inputs: [\"config\"], outputs: [\"onStatusChanged\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationVoiceMessageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, inputs: ['message'], imports: [AXDecoratorGenericComponent, AXLoadingSpinnerComponent, AXAudioWaveComponent, AsyncPipe, AXFormatPipe], providers: [{ provide: AXComponent, useExisting: AXConversationVoiceMessageComponent }], template: \"<ax-prefix>\\n @switch (audioState()) {\\n @case ('paused') {\\n {{ currentTime() | format: 'time-duration' | async }}\\n }\\n @case ('playing') {\\n {{ currentTime() | format: 'time-duration' | async }}\\n }\\n @default {\\n {{ duration() | format: 'time-duration' | async }}\\n }\\n }\\n <button class=\\\"ax-audio-speed\\\" (click)=\\\"handleRateClick()\\\"></button>\\n</ax-prefix>\\n<div class=\\\"ax-conversation-controller\\\">\\n @switch (audioState()) {\\n @case ('playing') {\\n <button (click)=\\\"handlePauseClick()\\\">\\n <i class=\\\"ax-icon ax-icon-pause\\\"></i>\\n </button>\\n }\\n\\n @case ('ready') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n\\n @case ('paused') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n\\n @case ('error') {\\n <button class=\\\"ax-state-error\\\" (click)=\\\"handleReloadClick()\\\">\\n <i class=\\\"ax-icon ax-icon-reload\\\"></i>\\n </button>\\n }\\n\\n @default {\\n <button (click)=\\\"handleCancelLoading()\\\">\\n <ax-loading-spinner\\n [size]=\\\"24\\\"\\n [stroke]=\\\"2\\\"\\n [color]=\\\"message.fromId ? 'white' : 'warning'\\\"\\n ></ax-loading-spinner>\\n </button>\\n }\\n }\\n</div>\\n<ax-audio-wave #a [config]=\\\"config\\\" (onStatusChanged)=\\\"handleOnStatusChanged($event)\\\"></ax-audio-wave>\\n<ax-suffix>\\n <div class=\\\"ax-audio-rate-button\\\" [class.ax-state-own]=\\\"!message?.fromId\\\" (click)=\\\"handleRateClick()\\\">\\n {{ selectedRate() }}X\\n </div>\\n</ax-suffix>\\n\", styles: [\"ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}ax-conversation-message-audio .ax-audio-rate-button{background-color:var(--ax-comp-conversation-other-color-fore);color:var(--ax-comp-conversation-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}ax-conversation-message-audio .ax-audio-rate-button.ax-state-own{background-color:var(--ax-comp-conversation-own-color-fore);color:var(--ax-comp-conversation-own-color)}ax-conversation-message-audio html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\\n\"] }]\n }], propDecorators: { audio: [{\n type: ViewChild,\n args: ['a']\n }], __hostClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UvY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UvY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBMEIsb0JBQW9CLEVBQWdCLE1BQU0sK0JBQStCLENBQUM7QUFDM0csT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFB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SSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLFdBQVc7UUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN0RSxDQUFDOzhHQTlLVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyxtS0FGbkMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsNklDL0J6Rix5bURBeURBLHd5QkQzQlksMkJBQTJCLHlMQUFFLHlCQUF5Qiw0R0FBRSxvQkFBb0IsdUdBQUUsU0FBUyx5Q0FBRSxZQUFZOzsyRkFHcEcsbUNBQW1DO2tCQVQvQyxTQUFTOytCQUNFLCtCQUErQixpQkFHMUIsaUJBQWlCLENBQUMsSUFBSSxVQUM3QixDQUFDLFNBQVMsQ0FBQyxXQUNWLENBQUMsMkJBQTJCLEVBQUUseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxhQUNyRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHFDQUFxQyxFQUFFLENBQUM7OEJBTXZFLEtBQUs7c0JBQXBCLFNBQVM7dUJBQUMsR0FBRztnQkF3S1YsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEF1ZGlvV2F2ZUNoYW5nZUV2ZW50LCBBWEF1ZGlvV2F2ZUNvbXBvbmVudCwgQVhXYXZlQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F1ZGlvLXdhdmUnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYRm9ybWF0UGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBQTEFURk9STV9JRCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblZpZXdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24tdmlldy9jb252ZXJzYXRpb24tdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnZlcnNhdGlvbi50eXBlcyc7XG5cbi8qKlxuICogQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYW5kIGhhbmRsaW5nIGF1ZGlvIG1lc3NhZ2VzIGluIGEgY29udmVyc2F0aW9uLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXZvaWNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6IGAuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXZvaWNlLmNvbXBvbmVudC5zY3NzYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW5wdXRzOiBbJ21lc3NhZ2UnXSxcbiAgaW1wb3J0czogW0FYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCwgQVhMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCwgQVhBdWRpb1dhdmVDb21wb25lbnQsIEFzeW5jUGlwZSwgQVhGb3JtYXRQaXBlXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29udmVyc2F0aW9uVm9pY2VNZXNzYWdlQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvblZvaWNlTWVzc2FnZUNvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQge1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2EnKSBhdWRpbzogQVhBdWRpb1dhdmVDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uZmlnOiBBWFdhdmVDb25maWcgPSB7IHVybDogJycgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhdWRpb1N0YXRlID0gc2lnbmFsPCdwbGF5aW5nJyB8ICdwYXVzZWQnIHwgJ2xvYWRpbmcnIHwgJ3JlYWR5JyB8ICdlcnJvcic+KCdwYXVzZWQnKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcGFyZW50ID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uVmlld0NvbXBvbmVudCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRSYXRlID0gc2lnbmFsKDEpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBzZWxlY3RlZFJhdGVJbmRleCA9IHNpZ25hbCgxKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhdWRpb1Byb2dyZXNzID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRpbWVMZWZ0ID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRUaW1lID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGR1cmF0aW9uID0gc2lnbmFsKDApO1xuXG4gICNpbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICB0aGlzLmNvbmZpZy51cmwgPSB0aGlzLm1lc3NhZ2U/LmNvbnRlbnQ7XG4gICAgdGhpcy5jb25maWcuYXVkaW9SYXRlID0gMC4yNTtcbiAgICB0aGlzLnNldFdhdmVDb2xvcigpO1xuICAgIHRoaXMuYXVkaW8ub25TdGF0dXNDaGFuZ2VkLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgdGhpcy5wYXJlbnQub25BY3Rpb24uZW1pdChjKTtcbiAgICB9KTtcbiAgICB0aGlzLmhhbmRsZUxvYWRpbmdQcm9ncmVzcygpO1xuICB9KTtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHNldFdhdmVDb2xvcigpIHtcbiAgICBsZXQgd2F2ZUNvbG9yID0gJyc7XG4gICAgbGV0IHByb2dyZXNzQ29sb3IgPSAnJztcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgaWYgKHRoaXMubWVzc2FnZS5mcm9tSWQpIHtcbiAgICAgICAgd2F2ZUNvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LW1lc3NhZ2Utb3RoZXItYmFyLWNvbG9yJyk7XG4gICAgICAgIHByb2dyZXNzQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJy0tYXgtbWVzc2FnZS1vdGhlci1wcm9ncmVzcy1jb2xvcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2F2ZUNvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LW1lc3NhZ2Utb3duLWJhci1jb2xvcicpO1xuICAgICAgICBwcm9ncmVzc0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LW1lc3NhZ2Utb3duLXByb2dyZXNzLWNvbG9yJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29uZmlnLndhdmVDb2xvciA9IHdhdmVDb2xvcjtcbiAgICB0aGlzLmNvbmZpZy5wcm9ncmVzc0NvbG9yID0gcHJvZ3Jlc3NDb2xvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXVzZXMgdGhlIGF1ZGlvIHBsYXliYWNrIGFuZCB1cGRhdGVzIHRoZSBhdWRpbyBzdGF0ZSB0byAncGF1c2VkJy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVBhdXNlQ2xpY2soKSB7XG4gICAgdGhpcy5hdWRpbz8ucGF1c2UoKTtcbiAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdwYXVzZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGF5cyB0aGUgYXVkaW8gYW5kIHVwZGF0ZXMgdGhlIGF1ZGlvIHN0YXRlIHRvICdwbGF5aW5nJy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVBsYXlDbGljaygpIHtcbiAgICB0aGlzLmF1ZGlvPy5wbGF5KCk/LnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncGxheWluZycpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYXVkaW8gc3RhdGUgYW5kIHByb2dyZXNzIGJhc2VkIG9uIHN0YXR1cyBjaGFuZ2VzIGZyb20gdGhlIGF1ZGlvIHdhdmUuXG4gICAqIEBwYXJhbSBlIC0gVGhlIGV2ZW50IGNvbnRhaW5pbmcgc3RhdHVzIGFuZCBkYXRhIHJlbGF0ZWQgdG8gdGhlIGF1ZGlvLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25TdGF0dXNDaGFuZ2VkKGU6IEFYQXVkaW9XYXZlQ2hhbmdlRXZlbnQpIHtcbiAgICBpZiAoZS5zdGF0dXMgPT09ICdsb2FkJyB8fCBlLnN0YXR1cyA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdsb2FkaW5nJyk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICB0aGlzLmF1ZGlvUHJvZ3Jlc3Muc2V0KGUuZGF0YS5wZXJjZW50KTtcbiAgICAgIHRoaXMuZHVyYXRpb24uc2V0KE1hdGguY2VpbChlLmRhdGEuZHVyYXRpb24gKiAxMDAwKSk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ3JlYWR5Jykge1xuICAgICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncmVhZHknKTtcbiAgICAgIHRoaXMuZHVyYXRpb24uc2V0KE1hdGguY2VpbChlLmRhdGEuZHVyYXRpb24gKiAxMDAwKSk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ2ZpbmlzaCcpIHtcbiAgICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BhdXNlZCcpO1xuICAgIH1cbiAgICBpZiAoZS5zdGF0dXMgPT09ICd0aW1ldXBkYXRlJykge1xuICAgICAgdGhpcy50aW1lTGVmdC5zZXQodGhpcy5kdXJhdGlvbigpIC0gZS5kYXRhLmN1cnJlbnRUaW1lICogMTAwMCk7XG4gICAgICB0aGlzLmN1cnJlbnRUaW1lLnNldChlLmRhdGEuY3VycmVudFRpbWUgKiAxMDAwKTtcbiAgICB9XG4gICAgaWYgKGUuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUxvYWRpbmdQcm9ncmVzcygpIHtcbiAgICAvLyB0aGlzLmF1ZGlvTG9hZGVyUHJvZ3Jlc3M/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGAtLWF4LWF1ZGlvLXByb2dyZXNzOiAke3RoaXMuYXVkaW9Qcm9ncmVzcygpfWA7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2FuY2VsbGF0aW9uIG9mIGEgbG9hZGluZyBvcGVyYXRpb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDYW5jZWxMb2FkaW5nKCkge1xuICAgIC8vXG4gIH1cblxuICAvKipcbiAgICogUmVsb2FkcyB0aGUgYXVkaW8gYW5kIHVwZGF0ZXMgdGhlIHN0YXRlIHRvICdsb2FkaW5nJy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJlbG9hZENsaWNrKCkge1xuICAgIC8vXG4gICAgdGhpcy5hdWRpb1N0YXRlLnNldCgnbG9hZGluZycpO1xuICAgIHRoaXMuYXVkaW8ubG9hZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEN5Y2xlcyB0aHJvdWdoIHByZWRlZmluZWQgYXVkaW8gcGxheWJhY2sgcmF0ZXMgYW5kIHVwZGF0ZXMgdGhlIHJhdGUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVSYXRlQ2xpY2soKSB7XG4gICAgY29uc3QgcmF0ZXMgPSBbMC41LCAxLCAyLCA0XTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJhdGVJbmRleCgpID09IHJhdGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSYXRlSW5kZXguc2V0KDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUmF0ZUluZGV4LnNldCh0aGlzLnNlbGVjdGVkUmF0ZUluZGV4KCkgKyAxKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFJhdGUuc2V0KHJhdGVzW3RoaXMuc2VsZWN0ZWRSYXRlSW5kZXgoKV0pO1xuICAgIHRoaXMuYXVkaW8uc2V0UmF0ZSh0aGlzLnNlbGVjdGVkUmF0ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm1lc3NhZ2UuZnJvbUlkID8gJ2F4LXN0YXRlLW90aGVyJyA6ICdheC1zdGF0ZS1vd24nfWA7XG4gIH1cbn1cbiIsIjxheC1wcmVmaXg+XG4gIEBzd2l0Y2ggKGF1ZGlvU3RhdGUoKSkge1xuICAgIEBjYXNlICgncGF1c2VkJykge1xuICAgICAge3sgY3VycmVudFRpbWUoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICB9XG4gICAgQGNhc2UgKCdwbGF5aW5nJykge1xuICAgICAge3sgY3VycmVudFRpbWUoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICB9XG4gICAgQGRlZmF1bHQge1xuICAgICAge3sgZHVyYXRpb24oKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICB9XG4gIH1cbiAgPGJ1dHRvbiBjbGFzcz1cImF4LWF1ZGlvLXNwZWVkXCIgKGNsaWNrKT1cImhhbmRsZVJhdGVDbGljaygpXCI+PC9idXR0b24+XG48L2F4LXByZWZpeD5cbjxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tY29udHJvbGxlclwiPlxuICBAc3dpdGNoIChhdWRpb1N0YXRlKCkpIHtcbiAgICBAY2FzZSAoJ3BsYXlpbmcnKSB7XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVQYXVzZUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGF1c2VcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ3JlYWR5Jykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGxheUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGxheVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBjYXNlICgncGF1c2VkJykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGxheUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGxheVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBjYXNlICgnZXJyb3InKSB7XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYXgtc3RhdGUtZXJyb3JcIiAoY2xpY2spPVwiaGFuZGxlUmVsb2FkQ2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1yZWxvYWRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAZGVmYXVsdCB7XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVDYW5jZWxMb2FkaW5nKClcIj5cbiAgICAgICAgPGF4LWxvYWRpbmctc3Bpbm5lclxuICAgICAgICAgIFtzaXplXT1cIjI0XCJcbiAgICAgICAgICBbc3Ryb2tlXT1cIjJcIlxuICAgICAgICAgIFtjb2xvcl09XCJtZXNzYWdlLmZyb21JZCA/ICd3aGl0ZScgOiAnd2FybmluZydcIlxuICAgICAgICA+PC9heC1sb2FkaW5nLXNwaW5uZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIH1cbjwvZGl2PlxuPGF4LWF1ZGlvLXdhdmUgI2EgW2NvbmZpZ109XCJjb25maWdcIiAob25TdGF0dXNDaGFuZ2VkKT1cImhhbmRsZU9uU3RhdHVzQ2hhbmdlZCgkZXZlbnQpXCI+PC9heC1hdWRpby13YXZlPlxuPGF4LXN1ZmZpeD5cbiAgPGRpdiBjbGFzcz1cImF4LWF1ZGlvLXJhdGUtYnV0dG9uXCIgW2NsYXNzLmF4LXN0YXRlLW93bl09XCIhbWVzc2FnZT8uZnJvbUlkXCIgKGNsaWNrKT1cImhhbmRsZVJhdGVDbGljaygpXCI+XG4gICAge3sgc2VsZWN0ZWRSYXRlKCkgfX1YXG4gIDwvZGl2PlxuPC9heC1zdWZmaXg+XG4iXX0=","import { AXRippleDirective } from '@acorex/cdk/common';\nimport { AXVirtualScrollModule } from '@acorex/cdk/virtual-scroll';\nimport { AXAudioWaveModule } from '@acorex/components/audio-wave';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCircularProgressModule } from '@acorex/components/circular-progress';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFileModule } from '@acorex/core/file';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { NgModule, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXConversationContainerComponent } from './conversation-container/conversation-container.component';\nimport { AXConversationInputComponent } from './conversation-input/conversation-input.component';\nimport { AXConversationMessageComponent } from './conversation-message/conversation-message.component';\nimport { AXConversationMessageAudioComponent } from './conversation-messages/conversation-message-audio/conversation-message-audio.component';\nimport { AXConversationFileMessageComponent } from './conversation-messages/conversation-message-file/conversation-message-file.component';\nimport { AXConversationMessageImageComponent } from './conversation-messages/conversation-message-image/conversation-message-image.component';\nimport { AXConversationTextMessageComponent } from './conversation-messages/conversation-message-text/conversation-message-text.component';\nimport { AXConversationMessageVideoComponent } from './conversation-messages/conversation-message-video/conversation-message-video.component';\nimport { AXConversationVoiceMessageComponent } from './conversation-messages/conversation-message-voice/conversation-message-voice.component';\nimport { AXConversationViewComponent } from './conversation-view/conversation-view.component';\nimport { AXConversationMessageTypeRegistryService } from './services/conversation-message-type-registry.service';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [\n AXConversationViewComponent,\n AXConversationInputComponent,\n AXConversationMessageComponent,\n AXConversationTextMessageComponent,\n AXConversationVoiceMessageComponent,\n AXConversationFileMessageComponent,\n AXConversationContainerComponent,\n AXConversationMessageAudioComponent,\n AXConversationMessageImageComponent,\n AXConversationMessageVideoComponent,\n];\nconst MODULES = [\n CommonModule,\n FormsModule,\n AsyncPipe,\n AXRippleDirective,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXDropdownModule,\n AXFormatModule,\n AXAudioWaveModule,\n AXCircularProgressModule,\n AXDateTimeModule,\n CdkPortalOutlet,\n AXLoadingModule,\n AXAvatarModule,\n AXPopoverModule,\n AXFileModule,\n AXRangeSliderModule,\n AXVirtualScrollModule,\n];\nexport class AXConversationModule {\n static forRoot(config) {\n return {\n ngModule: AXConversationModule,\n providers: [\n {\n provide: 'AXChatModuleFactory',\n useFactory: (registry) => () => {\n if (config?.types?.length) {\n registry.register(...config.types);\n }\n registry.register({\n name: 'text',\n component: AXConversationTextMessageComponent,\n });\n registry.register({\n name: 'voice',\n component: AXConversationVoiceMessageComponent,\n });\n registry.register({\n name: 'file',\n component: AXConversationFileMessageComponent,\n });\n registry.register({\n name: 'audio',\n component: AXConversationMessageAudioComponent,\n });\n registry.register({\n name: 'image',\n component: AXConversationMessageImageComponent,\n });\n registry.register({\n name: 'video',\n component: AXConversationMessageVideoComponent,\n });\n },\n deps: [AXConversationMessageTypeRegistryService],\n multi: true,\n },\n ],\n };\n }\n static forChild(config) {\n return {\n ngModule: AXConversationModule,\n providers: [\n {\n provide: 'AXChatModuleFactory',\n useFactory: (registry) => () => {\n if (config?.types?.length) {\n registry.register(...config.types);\n }\n },\n deps: [AXConversationMessageTypeRegistryService],\n multi: true,\n },\n ],\n };\n }\n /**\n * @ignore\n */\n constructor() {\n const instances = inject('AXChatModuleFactory', { optional: true });\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationModule, imports: [CommonModule,\n FormsModule,\n AsyncPipe,\n AXRippleDirective,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXDropdownModule,\n AXFormatModule,\n AXAudioWaveModule,\n AXCircularProgressModule,\n AXDateTimeModule,\n CdkPortalOutlet,\n AXLoadingModule,\n AXAvatarModule,\n AXPopoverModule,\n AXFileModule,\n AXRangeSliderModule,\n AXVirtualScrollModule, AXConversationViewComponent,\n AXConversationInputComponent,\n AXConversationMessageComponent,\n AXConversationTextMessageComponent,\n AXConversationVoiceMessageComponent,\n AXConversationFileMessageComponent,\n AXConversationContainerComponent,\n AXConversationMessageAudioComponent,\n AXConversationMessageImageComponent,\n AXConversationMessageVideoComponent], exports: [AXConversationViewComponent,\n AXConversationInputComponent,\n AXConversationMessageComponent,\n AXConversationTextMessageComponent,\n AXConversationVoiceMessageComponent,\n AXConversationFileMessageComponent,\n AXConversationContainerComponent,\n AXConversationMessageAudioComponent,\n AXConversationMessageImageComponent,\n AXConversationMessageVideoComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationModule, providers: [AXPopupService], imports: [CommonModule,\n FormsModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXDropdownModule,\n AXFormatModule,\n AXAudioWaveModule,\n AXCircularProgressModule,\n AXDateTimeModule,\n AXLoadingModule,\n AXAvatarModule,\n AXPopoverModule,\n AXFileModule,\n AXRangeSliderModule,\n AXVirtualScrollModule, AXConversationViewComponent,\n AXConversationInputComponent,\n AXConversationMessageComponent,\n AXConversationVoiceMessageComponent,\n AXConversationFileMessageComponent,\n AXConversationMessageAudioComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXConversationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [AXPopupService],\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFF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ZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWFZpcnR1YWxTY3JvbGxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2Nkay92aXJ0dWFsLXNjcm9sbCc7XG5pbXBvcnQgeyBBWEF1ZGlvV2F2ZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdWRpby13YXZlJztcbmltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDaXJjdWxhclByb2dyZXNzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NpcmN1bGFyLXByb2dyZXNzJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFJhbmdlU2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3JhbmdlLXNsaWRlcic7XG5pbXBvcnQgeyBBWERhdGVUaW1lTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBBWEZpbGVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZmlsZSc7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Db250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1jb250YWluZXIvY29udmVyc2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY29udmVyc2F0aW9uLWlucHV0L2NvbnZlcnNhdGlvbi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQXVkaW9Db21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25GaWxlTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUvY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25UZXh0TWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXRleHQvY29udmVyc2F0aW9uLW1lc3NhZ2UtdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlVmlkZW9Db21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS12aWRlby9jb252ZXJzYXRpb24tbWVzc2FnZS12aWRlby5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Wb2ljZU1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb252ZXJzYXRpb24tdmlldy9jb252ZXJzYXRpb24tdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZSB9IGZyb20gJy4vY29udmVyc2F0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXR5cGUtcmVnaXN0cnkuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhDaGF0TW9kdWxlQ29uZmlnIHtcbiAgdHlwZXM6IEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVbXTtcbn1cblxuY29uc3QgQ09NUE9ORU5UID0gW1xuICBBWENvbnZlcnNhdGlvblZpZXdDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uSW5wdXRDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgQVhDb252ZXJzYXRpb25UZXh0TWVzc2FnZUNvbXBvbmVudCxcbiAgQVhDb252ZXJzYXRpb25Wb2ljZU1lc3NhZ2VDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uRmlsZU1lc3NhZ2VDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uQ29udGFpbmVyQ29tcG9uZW50LFxuICBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBdWRpb0NvbXBvbmVudCxcbiAgQVhDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZVZpZGVvQ29tcG9uZW50LFxuXTtcbmNvbnN0IE1PRFVMRVMgPSBbXG4gIENvbW1vbk1vZHVsZSxcbiAgRm9ybXNNb2R1bGUsXG4gIEFzeW5jUGlwZSxcbiAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gIEFYQnV0dG9uTW9kdWxlLFxuICBBWERlY29yYXRvck1vZHVsZSxcbiAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgQVhEcm9wZG93bk1vZHVsZSxcbiAgQVhGb3JtYXRNb2R1bGUsXG4gIEFYQXVkaW9XYXZlTW9kdWxlLFxuICBBWENpcmN1bGFyUHJvZ3Jlc3NNb2R1bGUsXG4gIEFYRGF0ZVRpbWVNb2R1bGUsXG4gIENka1BvcnRhbE91dGxldCxcbiAgQVhMb2FkaW5nTW9kdWxlLFxuICBBWEF2YXRhck1vZHVsZSxcbiAgQVhQb3BvdmVyTW9kdWxlLFxuICBBWEZpbGVNb2R1bGUsXG4gIEFYUmFuZ2VTbGlkZXJNb2R1bGUsXG4gIEFYVmlydHVhbFNjcm9sbE1vZHVsZSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFsuLi5NT0RVTEVTLCAuLi5DT01QT05FTlRdLFxuICBleHBvcnRzOiBbLi4uQ09NUE9ORU5UXSxcbiAgcHJvdmlkZXJzOiBbQVhQb3B1cFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbk1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEFYQ2hhdE1vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhDb252ZXJzYXRpb25Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYQ29udmVyc2F0aW9uTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhDaGF0TW9kdWxlRmFjdG9yeScsXG4gICAgICAgICAgdXNlRmFjdG9yeTogKHJlZ2lzdHJ5OiBBWENvbnZlcnNhdGlvbk1lc3NhZ2VUeXBlUmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29uZmlnPy50eXBlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKC4uLmNvbmZpZy50eXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgICAgICAgICAgIG5hbWU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBBWENvbnZlcnNhdGlvblRleHRNZXNzYWdlQ29tcG9uZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgICAgICAgICAgIG5hbWU6ICd2b2ljZScsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogQVhDb252ZXJzYXRpb25Wb2ljZU1lc3NhZ2VDb21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogJ2ZpbGUnLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IEFYQ29udmVyc2F0aW9uRmlsZU1lc3NhZ2VDb21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogJ2F1ZGlvJyxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBdWRpb0NvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoe1xuICAgICAgICAgICAgICBuYW1lOiAnaW1hZ2UnLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IEFYQ29udmVyc2F0aW9uTWVzc2FnZUltYWdlQ29tcG9uZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgICAgICAgICAgIG5hbWU6ICd2aWRlbycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogQVhDb252ZXJzYXRpb25NZXNzYWdlVmlkZW9Db21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtBWENvbnZlcnNhdGlvbk1lc3NhZ2VUeXBlUmVnaXN0cnlTZXJ2aWNlXSxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JDaGlsZChjb25maWc/OiBBWENoYXRNb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYQ29udmVyc2F0aW9uTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBWENvbnZlcnNhdGlvbk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogJ0FYQ2hhdE1vZHVsZUZhY3RvcnknLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZVJlZ2lzdHJ5U2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbmZpZz8udHlwZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlciguLi5jb25maWcudHlwZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGluc3RhbmNlcyA9IGluamVjdDxhbnlbXT4oJ0FYQ2hhdE1vZHVsZUZhY3RvcnknIGFzIGFueSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIGluc3RhbmNlcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgZigpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2Fjb3JleC1jb21wb25lbnRzLWNvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-conversation.mjs","sources":["../tmp-esm2022/conversation/lib/classes/events.interface.js","../tmp-esm2022/conversation/lib/services/conversation.service.js","../tmp-esm2022/conversation/lib/services/recording.service.js","../tmp-esm2022/conversation/lib/conversation-container/conversation-container.component.js","../tmp-esm2022/conversation/lib/conversation-input/conversation-input.component.js","../tmp-esm2022/conversation/lib/services/conversation-message-type-registry.service.js","../tmp-esm2022/conversation/lib/conversation-message/conversation-message.component.js","../tmp-esm2022/conversation/lib/conversation.types.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.js","../tmp-esm2022/conversation/lib/conversation-view/conversation-view.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-file/conversation-message-file.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-image-popup/conversation-message-image-popup.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-image/conversation-message-image.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-text/conversation-message-text.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-video/conversation-message-video.component.js","../tmp-esm2022/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.js","../tmp-esm2022/conversation/lib/conversation.module.js","../tmp-esm2022/conversation/acorex-components-conversation.js"],"sourcesContent":["import { AXEvent } from '@acorex/cdk/common';\nexport class AXConversationActionEvent extends AXEvent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY2xhc3Nlcy9ldmVudHMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWUsTUFBTSxvQkFBb0IsQ0FBQztBQUsxRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsT0FBTztDQUVyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRXZlbnQsIEFYSHRtbEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBWElucHV0RmlsZUNoYW5nZSBleHRlbmRzIEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+IHtcbiAgZGF0YT86IGFueTtcbn1cbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbkFjdGlvbkV2ZW50IGV4dGVuZHMgQVhFdmVudCB7XG4gIGRhdGE6IGFueTtcbn1cbiJdfQ==","import { Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXConversationService {\n constructor() {\n this.replyId = signal('', ...(ngDevMode ? [{ debugName: \"replyId\" }] : []));\n this.chats = signal([], ...(ngDevMode ? [{ debugName: \"chats\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL3NlcnZpY2VzL2NvbnZlcnNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUluRCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBRUUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxFQUFFLG1EQUFDLENBQUM7UUFDckIsVUFBSyxHQUFHLE1BQU0sQ0FBMEIsRUFBRSxpREFBQyxDQUFDO0tBQzdDOzhHQUhZLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25TZXJ2aWNlIHtcbiAgcmVwbHlJZCA9IHNpZ25hbCgnJyk7XG4gIGNoYXRzID0gc2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZVtdPihbXSk7XG59XG4iXX0=","import { Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXRecordingService {\n constructor() {\n this.audioBlobs = [];\n this.streamBeingCaptured = null;\n this.timer = signal('00:0', ...(ngDevMode ? [{ debugName: \"timer\" }] : []));\n this.time = {\n seconds: 0,\n minutes: 0,\n hours: 0,\n };\n }\n /**\n * Starts audio recording using the browser's MediaRecorder API.\n *\n * @returns Promise<void> - Resolves when recording starts successfully, rejects if not supported.\n */\n startRecording() {\n if (!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia)) {\n return Promise.reject(new Error('mediaDevices API or getUserMedia method is not supported in this browser.'));\n }\n else {\n return navigator.mediaDevices.getUserMedia({ audio: true }).then((stream) => {\n this.streamBeingCaptured = stream;\n this.mediaRecorder = new MediaRecorder(stream);\n this.audioBlobs = [];\n this.mediaRecorder.addEventListener('dataavailable', (event) => {\n this.audioBlobs.push(event.data);\n });\n this.mediaRecorder.start();\n this.timerInterval = setInterval(() => {\n this.calculateTime();\n }, 1000);\n });\n }\n }\n /**\n * Ends the current recording session and returns the recorded audio blob.\n *\n * @returns Promise<Blob> - Resolves with the recorded audio blob.\n */\n endRecording() {\n return new Promise((resolve) => {\n const mimeType = this.mediaRecorder?.mimeType;\n this.mediaRecorder?.addEventListener('stop', () => {\n const audioBlob = new Blob(this.audioBlobs, { type: mimeType });\n resolve(audioBlob);\n });\n this.mediaRecorder?.stop();\n this.streamBeingCaptured.getTracks().forEach((track) => track.stop());\n this.mediaRecorder = null;\n this.streamBeingCaptured = null;\n this.resetTimer();\n });\n }\n /**\n * Calculates and updates the recording time, incrementing seconds, minutes, and hours as needed.\n */\n calculateTime() {\n this.time.seconds++;\n if (this.time.seconds >= 60) {\n this.time.seconds = 0;\n this.time.minutes++;\n if (this.time.minutes >= 60) {\n this.time.minutes = 0;\n this.time.hours++;\n }\n }\n const formattedTime = (this.time.hours > 0 ? this.time.hours + ':' : '') +\n (this.time.minutes < 10 ? '0' + this.time.minutes : this.time.minutes) +\n ':' +\n (this.time.seconds < 10 ? '0' + this.time.seconds : this.time.seconds);\n this.timer.set(formattedTime);\n }\n /**\n * Resets the recording timer to zero and clears the timer interval.\n */\n resetTimer() {\n clearInterval(this.timerInterval);\n this.time.seconds = 0;\n this.time.minutes = 0;\n this.time.hours = 0;\n this.timer.set('00:0');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXRecordingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXRecordingService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXRecordingService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL3NlcnZpY2VzL3JlY29yZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVFLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFFdkIsd0JBQW1CLEdBQVEsSUFBSSxDQUFDO1FBRWhDLFVBQUssR0FBMkIsTUFBTSxDQUFDLE1BQU0saURBQUMsQ0FBQztRQUVyQyxTQUFJLEdBQUc7WUFDZixPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxDQUFDO1lBQ1YsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO0tBaUZIO0lBN0VDOzs7O09BSUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDckUsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUMsQ0FBQztRQUNoSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDMUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLElBQUks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QUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDOzhHQTNGVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFdyaXRhYmxlU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYUmVjb3JkaW5nU2VydmljZSB7XG4gIGF1ZGlvQmxvYnM6IGFueVtdID0gW107XG4gIG1lZGlhUmVjb3JkZXI6IE1lZGlhUmVjb3JkZXIgfCBudWxsO1xuICBzdHJlYW1CZWluZ0NhcHR1cmVkOiBhbnkgPSBudWxsO1xuXG4gIHRpbWVyOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+ID0gc2lnbmFsKCcwMDowJyk7XG5cbiAgcHJvdGVjdGVkIHRpbWUgPSB7XG4gICAgc2Vjb25kczogMCxcbiAgICBtaW51dGVzOiAwLFxuICAgIGhvdXJzOiAwLFxuICB9O1xuXG4gIHByb3RlY3RlZCB0aW1lckludGVydmFsO1xuXG4gIC8qKlxuICAgKiBTdGFydHMgYXVkaW8gcmVjb3JkaW5nIHVzaW5nIHRoZSBicm93c2VyJ3MgTWVkaWFSZWNvcmRlciBBUEkuXG4gICAqXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD4gLSBSZXNvbHZlcyB3aGVuIHJlY29yZGluZyBzdGFydHMgc3VjY2Vzc2Z1bGx5LCByZWplY3RzIGlmIG5vdCBzdXBwb3J0ZWQuXG4gICAqL1xuICBzdGFydFJlY29yZGluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIShuYXZpZ2F0b3IubWVkaWFEZXZpY2VzICYmIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignbWVkaWFEZXZpY2VzIEFQSSBvciBnZXRVc2VyTWVkaWEgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLicpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSkudGhlbigoc3RyZWFtKSA9PiB7XG4gICAgICAgIHRoaXMuc3RyZWFtQmVpbmdDYXB0dXJlZCA9IHN0cmVhbTtcbiAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtKTtcbiAgICAgICAgdGhpcy5hdWRpb0Jsb2JzID0gW107XG4gICAgICAgIHRoaXMubWVkaWFSZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5hdWRpb0Jsb2JzLnB1c2goZXZlbnQuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1lZGlhUmVjb3JkZXIuc3RhcnQoKTtcbiAgICAgICAgdGhpcy50aW1lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlVGltZSgpO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmRzIHRoZSBjdXJyZW50IHJlY29yZGluZyBzZXNzaW9uIGFuZCByZXR1cm5zIHRoZSByZWNvcmRlZCBhdWRpbyBibG9iLlxuICAgKlxuICAgKiBAcmV0dXJucyBQcm9taXNlPEJsb2I+IC0gUmVzb2x2ZXMgd2l0aCB0aGUgcmVjb3JkZWQgYXVkaW8gYmxvYi5cbiAgICovXG4gIGVuZFJlY29yZGluZygpOiBQcm9taXNlPEJsb2I+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG1pbWVUeXBlID0gdGhpcy5tZWRpYVJlY29yZGVyPy5taW1lVHlwZTtcbiAgICAgIHRoaXMubWVkaWFSZWNvcmRlcj8uYWRkRXZlbnRMaXN0ZW5lcignc3RvcCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgYXVkaW9CbG9iID0gbmV3IEJsb2IodGhpcy5hdWRpb0Jsb2JzLCB7IHR5cGU6IG1pbWVUeXBlIH0pO1xuICAgICAgICByZXNvbHZlKGF1ZGlvQmxvYik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubWVkaWFSZWNvcmRlcj8uc3RvcCgpO1xuICAgICAgdGhpcy5zdHJlYW1CZWluZ0NhcHR1cmVkLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrKSA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgdGhpcy5tZWRpYVJlY29yZGVyID0gbnVsbDtcbiAgICAgIHRoaXMuc3RyZWFtQmVpbmdDYXB0dXJlZCA9IG51bGw7XG4gICAgICB0aGlzLnJlc2V0VGltZXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIGFuZCB1cGRhdGVzIHRoZSByZWNvcmRpbmcgdGltZSwgaW5jcmVtZW50aW5nIHNlY29uZHMsIG1pbnV0ZXMsIGFuZCBob3VycyBhcyBuZWVkZWQuXG4gICAqL1xuICBjYWxjdWxhdGVUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMudGltZS5zZWNvbmRzKys7XG4gICAgaWYgKHRoaXMudGltZS5zZWNvbmRzID49IDYwKSB7XG4gICAgICB0aGlzLnRpbWUuc2Vjb25kcyA9IDA7XG4gICAgICB0aGlzLnRpbWUubWludXRlcysrO1xuICAgICAgaWYgKHRoaXMudGltZS5taW51dGVzID49IDYwKSB7XG4gICAgICAgIHRoaXMudGltZS5taW51dGVzID0gMDtcbiAgICAgICAgdGhpcy50aW1lLmhvdXJzKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVkVGltZSA9XG4gICAgICAodGhpcy50aW1lLmhvdXJzID4gMCA/IHRoaXMudGltZS5ob3VycyArICc6JyA6ICcnKSArXG4gICAgICAodGhpcy50aW1lLm1pbnV0ZXMgPCAxMCA/ICcwJyArIHRoaXMudGltZS5taW51dGVzIDogdGhpcy50aW1lLm1pbnV0ZXMpICtcbiAgICAgICc6JyArXG4gICAgICAodGhpcy50aW1lLnNlY29uZHMgPCAxMCA/ICcwJyArIHRoaXMudGltZS5zZWNvbmRzIDogdGhpcy50aW1lLnNlY29uZHMpO1xuXG4gICAgdGhpcy50aW1lci5zZXQoZm9ybWF0dGVkVGltZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSByZWNvcmRpbmcgdGltZXIgdG8gemVybyBhbmQgY2xlYXJzIHRoZSB0aW1lciBpbnRlcnZhbC5cbiAgICovXG4gIHJlc2V0VGltZXIoKTogdm9pZCB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVySW50ZXJ2YWwpO1xuICAgIHRoaXMudGltZS5zZWNvbmRzID0gMDtcbiAgICB0aGlzLnRpbWUubWludXRlcyA9IDA7XG4gICAgdGhpcy50aW1lLmhvdXJzID0gMDtcbiAgICB0aGlzLnRpbWVyLnNldCgnMDA6MCcpO1xuICB9XG59XG4iXX0=","import { AXComponent, AXFocusableComponent, AXValuableComponent } from '@acorex/cdk/common';\nimport { Component, effect, forwardRef, inject, input, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AXConversationService } from '../services/conversation.service';\nimport { AXRecordingService } from '../services/recording.service';\nimport * as i0 from \"@angular/core\";\n/**\n * A container for displaying and managing conversations.\n * @category Components\n */\nexport class AXConversationContainerComponent {\n constructor() {\n this.chatData = input([], ...(ngDevMode ? [{ debugName: \"chatData\" }] : []));\n this.conversationService = inject(AXConversationService);\n this.#init = effect(() => {\n this.conversationService.chats.set(this.chatData());\n }, ...(ngDevMode ? [{ debugName: \"#init\" }] : []));\n }\n #init;\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.4\", type: AXConversationContainerComponent, isStandalone: true, selector: \"ax-conversation-container\", inputs: { chatData: { classPropertyName: \"chatData\", publicName: \"chatData\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [\n { provide: AXComponent, useExisting: AXConversationContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXConversationContainerComponent },\n { provide: AXValuableComponent, useExisting: AXConversationContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXConversationContainerComponent),\n multi: true,\n },\n AXConversationService,\n AXRecordingService,\n ], ngImport: i0, template: \"<div class=\\\"ax-conversation-container\\\">\\n <ng-content> </ng-content>\\n</div>\\n\", styles: [\"ax-conversation-container{--ax-comp-conversation-other-color: var(--ax-sys-color-surface);--ax-comp-conversation-other-color-fore: var(--ax-sys-color-on-surface);--ax-comp-conversation-status-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-conversation-other-bar-color: var(--ax-sys-color-primary-light-surface);--ax-comp-conversation-other-progress-color: var(--ax-sys-color-on-primary-light-surface);--ax-comp-conversation-own-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-conversation-own-color-fore: var(--ax-sys-color-primary-darkest-surface);--ax-comp-conversation-own-reply-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-conversation-own-reply-color-fore: var(--ax-sys-color-on-primary-dark-surface);--ax-comp-conversation-other-reply-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-conversation-other-reply-color-fore: var(--ax-sys-color-on-primary-lighter-surface);--ax-comp-conversation-border-color: var(--ax-sys-color-primary-darkest-surface);--ax-comp-conversation-own-bar-color: var(--ax-sys-color-primary-light-surface);--ax-comp-conversation-own-progress-color: var(--ax-sys-color-on-primary-light-surface)}ax-conversation-container{width:100%;display:block}ax-conversation-container>.ax-editor-container{display:block;height:100%!important}\\n\"], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-container', encapsulation: ViewEncapsulation.None, providers: [\n { provide: AXComponent, useExisting: AXConversationContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXConversationContainerComponent },\n { provide: AXValuableComponent, useExisting: AXConversationContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXConversationContainerComponent),\n multi: true,\n },\n AXConversationService,\n AXRecordingService,\n ], template: \"<div class=\\\"ax-conversation-container\\\">\\n <ng-content> </ng-content>\\n</div>\\n\", styles: [\"ax-conversation-container{--ax-comp-conversation-other-color: var(--ax-sys-color-surface);--ax-comp-conversation-other-color-fore: var(--ax-sys-color-on-surface);--ax-comp-conversation-status-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-conversation-other-bar-color: var(--ax-sys-color-primary-light-surface);--ax-comp-conversation-other-progress-color: var(--ax-sys-color-on-primary-light-surface);--ax-comp-conversation-own-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-conversation-own-color-fore: var(--ax-sys-color-primary-darkest-surface);--ax-comp-conversation-own-reply-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-conversation-own-reply-color-fore: var(--ax-sys-color-on-primary-dark-surface);--ax-comp-conversation-other-reply-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-conversation-other-reply-color-fore: var(--ax-sys-color-on-primary-lighter-surface);--ax-comp-conversation-border-color: var(--ax-sys-color-primary-darkest-surface);--ax-comp-conversation-own-bar-color: var(--ax-sys-color-primary-light-surface);--ax-comp-conversation-own-progress-color: var(--ax-sys-color-on-primary-light-surface)}ax-conversation-container{width:100%;display:block}ax-conversation-container>.ax-editor-container{display:block;height:100%!important}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1jb250YWluZXIvY29udmVyc2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1jb250YWluZXIvY29udmVyc2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBRW5FOzs7R0FHRztBQW1CSCxNQUFNLE9BQU8sZ0NBQWdDO0lBbEI3QztRQW1CRSxhQUFRLEdBQUcsS0FBSyxDQUEwQixFQUFFLG9EQUFDLENBQUM7UUFDdEMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFNUQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxpREFBQyxDQUFDO0tBQ0o7SUFIQyxLQUFLLENBRUY7OEdBTlEsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MscU5BYmhDO1lBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRTtZQUN2RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZ0NBQWdDLEVBQUU7WUFDaEYsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGdDQUFnQyxFQUFFO1lBQy9FO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7Z0JBQy9ELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxxQkFBcUI7WUFDckIsa0JBQWtCO1NBQ25CLDBCQzNCSCxtRkFHQTs7MkZEMEJhLGdDQUFnQztrQkFsQjVDLFNBQVM7K0JBQ0UsMkJBQTJCLGlCQUd0QixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLGtDQUFrQyxFQUFFO3dCQUN2RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLGtDQUFrQyxFQUFFO3dCQUNoRixFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLGtDQUFrQyxFQUFFO3dCQUMvRTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQ0FBaUMsQ0FBQzs0QkFDL0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QscUJBQXFCO3dCQUNyQixrQkFBa0I7cUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQsIEFYRm9jdXNhYmxlQ29tcG9uZW50LCBBWFZhbHVhYmxlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBmb3J3YXJkUmVmLCBpbmplY3QsIGlucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29udmVyc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhSZWNvcmRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVjb3JkaW5nLnNlcnZpY2UnO1xuXG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBkaXNwbGF5aW5nIGFuZCBtYW5hZ2luZyBjb252ZXJzYXRpb25zLlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25Db250YWluZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25Db250YWluZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENvbnZlcnNhdGlvbkNvbnRhaW5lckNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhDb252ZXJzYXRpb25Db250YWluZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICBBWENvbnZlcnNhdGlvblNlcnZpY2UsXG4gICAgQVhSZWNvcmRpbmdTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbkNvbnRhaW5lckNvbXBvbmVudCB7XG4gIGNoYXREYXRhID0gaW5wdXQ8QVhDb252ZXJzYXRpb25NZXNzYWdlW10+KFtdKTtcbiAgcHJpdmF0ZSBjb252ZXJzYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uU2VydmljZSk7XG5cbiAgI2luaXQgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5jaGF0cy5zZXQodGhpcy5jaGF0RGF0YSgpKTtcbiAgfSk7XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWNvbnRhaW5lclwiPlxuICA8bmctY29udGVudD4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=","import { AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, MXLookComponent, } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent, AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXLoadingSpinnerComponent } from '@acorex/components/loading';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, HostBinding, ViewChild, ViewEncapsulation, computed, contentChild, forwardRef, inject, input, output, signal, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { AXConversationService } from '../services/conversation.service';\nimport { AXRecordingService } from '../services/recording.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/decorators\";\n/**\n * An input component for entering conversation messages.\n *\n * @category Components\n */\nexport class AXConversationInputComponent extends classes((MXInputBaseValueComponent), MXLookComponent) {\n constructor() {\n super(...arguments);\n this.sendIcon = contentChild('ax-icon', ...(ngDevMode ? [{ debugName: \"sendIcon\" }] : []));\n this.onActionClose = output();\n this.conversationService = inject(AXConversationService);\n this.chats = computed(() => {\n return this.conversationService.chats();\n }, ...(ngDevMode ? [{ debugName: \"chats\" }] : []));\n this.actionIcon = signal(null, ...(ngDevMode ? [{ debugName: \"actionIcon\" }] : []));\n this.actionContent = signal(null, ...(ngDevMode ? [{ debugName: \"actionContent\" }] : []));\n this.actionShowState = signal(false, ...(ngDevMode ? [{ debugName: \"actionShowState\" }] : []));\n this.actionUser = signal(null, ...(ngDevMode ? [{ debugName: \"actionUser\" }] : []));\n this.actionCloseCallback = signal(() => {\n return;\n }, ...(ngDevMode ? [{ debugName: \"actionCloseCallback\" }] : []));\n this.replyChat = computed(() => {\n const findMessage = this.chats().find((item) => item.id === this.conversationService.replyId());\n return findMessage;\n }, ...(ngDevMode ? [{ debugName: \"replyChat\" }] : []));\n /** Maximum length of input text */\n this.maxLength = input(...(ngDevMode ? [undefined, { debugName: \"maxLength\" }] : []));\n /** Indicates if an attachment is present */\n this.hasAttachment = input(true, ...(ngDevMode ? [{ debugName: \"hasAttachment\" }] : []));\n /** Indicates if voice recording is enabled */\n this.hasVoice = input(true, ...(ngDevMode ? [{ debugName: \"hasVoice\" }] : []));\n this.hasEmoji = input(true, ...(ngDevMode ? [{ debugName: \"hasEmoji\" }] : []));\n this.isLoading = input(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /** Acceptable file types for attachment */\n this.acceptFileType = input('*', ...(ngDevMode ? [{ debugName: \"acceptFileType\" }] : []));\n /**\n * Emitted when the send button is clicked.\n *\n * @event\n */\n this.onSendClick = output();\n /**\n * Emitted when recording starts.\n *\n * @event\n */\n this.onStartRecording = output();\n /**\n * Emitted when recording is canceled.\n *\n * @event\n */\n this.onCancelRecording = output();\n this.onEnterPressed = output();\n /**\n * @ignore\n */\n this.recording = signal(false, ...(ngDevMode ? [{ debugName: \"recording\" }] : []));\n /**\n * @ignore\n */\n this.recordingService = inject(AXRecordingService);\n /**\n * @ignore\n */\n this._updateOn = 'change';\n this.shiftState = false;\n }\n setActionBoxContainer(icon, content, user, closeCallback) {\n this.actionIcon.set(icon);\n this.actionContent.set(content);\n this.actionShowState.set(true);\n this.actionUser.set(user);\n this.actionCloseCallback.set(closeCallback);\n }\n /**\n * @ignore\n */\n _handleModelChange(value) {\n this.commitValue(value, true);\n }\n /**\n * Initiates recording when the record button is clicked.\n * Emits an event when recording starts.\n * @ignore\n */\n handleRecordClick() {\n this.recording.set(true);\n this.recordingService\n ?.startRecording()\n .then(() => {\n this.onStartRecording.emit({\n component: this,\n data: { recording: true },\n isUserInteraction: true,\n });\n })\n .catch((e) => {\n throw e;\n });\n }\n /**\n * Cancels the recording and emits an event to indicate cancellation.\n * @ignore\n */\n handleCancelRecordingClick() {\n this.recording.set(false);\n this.onCancelRecording.emit({\n component: this,\n data: { value: null },\n });\n }\n keyDownHandler(e) {\n if (e.key === 'Shift') {\n this.shiftState = true;\n }\n this.onKeyDown.emit({\n component: this,\n nativeEvent: e,\n });\n }\n keyUpHandler(e) {\n if (e.key === 'Shift') {\n this.shiftState = false;\n }\n this.onKeyUp.emit({\n component: this,\n nativeEvent: e,\n });\n }\n keyPressHandler(e) {\n if (e.key === 'Enter' && !this.shiftState) {\n e.preventDefault();\n this.onEnterPressed.emit({ component: this });\n }\n this.onKeyPress.emit({\n component: this,\n nativeEvent: e,\n });\n }\n /**\n * Opens the file picker for attachment.\n * @ignore\n */\n handleAttachClick() {\n this.inputFile.nativeElement.click();\n }\n /**\n * Emits the selected files when the file input changes.\n * @ignore\n */\n handleChangeFile(event) {\n this.onSendClick.emit({\n component: this,\n data: { value: event.target.files, type: 'file' },\n });\n }\n /**\n * Emits the text value and optional replyChat when the send button is clicked.\n * @ignore\n */\n handleSendClick() {\n this.onSendClick.emit({\n component: this,\n data: { value: this.value, replyChat: this.replyChat() || null, type: 'text' },\n isUserInteraction: true,\n });\n this.actionShowState.set(false);\n }\n /**\n * Ends recording and emits the recorded voice data when the send voice button is clicked.\n * @ignore\n */\n handleSendVoiceClick() {\n this.recordingService.endRecording().then((c) => {\n this.recording.set(false);\n this.onSendClick.emit({\n component: this,\n data: { value: c, type: 'voice' },\n isUserInteraction: true,\n });\n });\n }\n /**\n * Clears the reply ID when closing a reply.\n * @ignore\n */\n closeReplyHandler() {\n this.actionShowState.set(false);\n this.actionCloseCallback();\n this.onActionClose.emit();\n }\n get __hostName() {\n return this.name;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXConversationInputComponent, isStandalone: true, selector: \"ax-conversation-input\", inputs: { look: { classPropertyName: \"look\", publicName: \"look\", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: false, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: \"maxLength\", publicName: \"maxLength\", isSignal: true, isRequired: false, transformFunction: null }, hasAttachment: { classPropertyName: \"hasAttachment\", publicName: \"hasAttachment\", isSignal: true, isRequired: false, transformFunction: null }, hasVoice: { classPropertyName: \"hasVoice\", publicName: \"hasVoice\", isSignal: true, isRequired: false, transformFunction: null }, hasEmoji: { classPropertyName: \"hasEmoji\", publicName: \"hasEmoji\", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: \"isLoading\", publicName: \"isLoading\", isSignal: true, isRequired: false, transformFunction: null }, acceptFileType: { classPropertyName: \"acceptFileType\", publicName: \"acceptFileType\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onActionClose: \"onActionClose\", onSendClick: \"onSendClick\", onStartRecording: \"onStartRecording\", onCancelRecording: \"onCancelRecording\", onEnterPressed: \"onEnterPressed\" }, host: { properties: { \"attr.name\": \"this.__hostName\" } }, providers: [\n { provide: AXComponent, useExisting: AXConversationInputComponent },\n { provide: AXFocusableComponent, useExisting: AXConversationInputComponent },\n { provide: AXValuableComponent, useExisting: AXConversationInputComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXConversationInputComponent),\n multi: true,\n },\n ], queries: [{ propertyName: \"sendIcon\", first: true, predicate: [\"ax-icon\"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: \"inputFile\", first: true, predicate: [\"inputFile\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"@if (actionShowState()) {\\n <div class=\\\"ax-editor-reply-container ax-editor-container ax-{{ look }}\\\">\\n @if (actionUser()) {\\n <ax-text> {{ actionUser() }}</ax-text>\\n }\\n <div class=\\\"ax-reply-container\\\">\\n <div class=\\\"ax-reply-start\\\">\\n <i [class]=\\\"actionIcon()\\\"></i>\\n <p>{{ actionContent() }}</p>\\n </div>\\n <i (click)=\\\"closeReplyHandler()\\\" class=\\\"fa-solid fa-xmark ax-cursor-pointer\\\"></i>\\n </div>\\n </div>\\n}\\n\\n<div class=\\\"ax-conversation-input ax-editor-container ax-{{ look }}\\\" [class.ax-state-recording]=\\\"recording()\\\">\\n @if (recording()) {\\n <div class=\\\"ax-conversation-input-start-side\\\">\\n <span class=\\\"ax-record-dot\\\"></span>\\n <span>{{ recordingService.timer() }}</span>\\n </div>\\n <div class=\\\"ax-conversation-input-main-side\\\">\\n <ax-button\\n class=\\\"ax-sm\\\"\\n look=\\\"blank\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"'@acorex:common.actions.cancel' | translate | async\\\"\\n (onClick)=\\\"handleCancelRecordingClick()\\\"\\n ></ax-button>\\n </div>\\n <div class=\\\"ax-conversation-input-end-side\\\">\\n <ax-button look=\\\"solid\\\" color=\\\"danger\\\" class=\\\"ax-blob ax-sm\\\" (onClick)=\\\"handleSendVoiceClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-send\\\"></i>\\n </ax-icon>\\n </ax-button>\\n </div>\\n } @else {\\n @if (hasEmoji()) {\\n <div class=\\\"ax-conversation-input-start-side\\\">\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-emoji\\\"></i>\\n </ax-icon>\\n <ax-dropdown-panel>\\n <ng-container>\\n <div class=\\\"ax-emoji-container\\\">\\n <div>\\u26A0\\uFE0F</div>\\n <div>\\u27A1\\uFE0F</div>\\n <div>\\uD83D\\uDD03</div>\\n <div>\\uD83D\\uDD37</div>\\n <div>\\uD83E\\uDD1A</div>\\n <div>\\uD83D\\uDE02</div>\\n <div>\\uD83D\\uDE0A</div>\\n </div>\\n </ng-container>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n }\\n\\n <textarea\\n class=\\\"ax-conversation-input-main-side\\\"\\n oninput='this.style.height = \\\"\\\";this.style.height = this.scrollHeight + \\\"px\\\"'\\n type=\\\"text\\\"\\n rows=\\\"1\\\"\\n [id]=\\\"id\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [attr.maxlength]=\\\"maxLength()\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n [ngModel]=\\\"value\\\"\\n (ngModelChange)=\\\"_handleModelChange($event)\\\"\\n [ngModelOptions]=\\\"{ updateOn: _updateOn }\\\"\\n (keydown)=\\\"keyDownHandler($event)\\\"\\n (keyup)=\\\"keyUpHandler($event)\\\"\\n (keypress)=\\\"keyPressHandler($event)\\\"\\n (focus)=\\\"emitOnFocusEvent($event)\\\"\\n (blur)=\\\"emitOnBlurEvent($event)\\\"\\n >\\n </textarea>\\n\\n <div class=\\\"ax-conversation-input-end-side\\\">\\n @if (!value) {\\n @if (hasAttachment()) {\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleAttachClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-attach\\\"></i>\\n </ax-icon>\\n </ax-button>\\n <input\\n multiple\\n #inputFile\\n [accept]=\\\"acceptFileType()\\\"\\n type=\\\"file\\\"\\n class=\\\"ax-attach-input\\\"\\n (change)=\\\"handleChangeFile($event)\\\"\\n />\\n }\\n @if (hasVoice()) {\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleRecordClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-mic\\\"></i>\\n </ax-icon>\\n </ax-button>\\n }\\n } @else {\\n <ax-button [disabled]=\\\"isLoading()\\\" look=\\\"solid\\\" color=\\\"primary\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleSendClick()\\\">\\n @if (isLoading()) {\\n <ax-loading-spinner color=\\\"primary\\\"></ax-loading-spinner>\\n } @else {\\n @if (sendIcon()) {\\n <ng-content select=\\\"ax-icon\\\"></ng-content>\\n } @else {\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-arrow-long-up\\\"></i>\\n </ax-icon>\\n }\\n }\\n </ax-button>\\n }\\n </div>\\n }\\n</div>\\n\", styles: [\"ax-conversation-input{width:100%;display:block}ax-conversation-input .ax-conversation-input{display:flex;align-items:center;position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem}ax-conversation-input .ax-conversation-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-start-side{justify-content:flex-start}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-end-side{justify-content:flex-end}ax-conversation-input .ax-conversation-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}ax-conversation-input .ax-conversation-input>textarea:focus,ax-conversation-input .ax-conversation-input>textarea:focus-visible{outline:unset}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side,ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side{padding-inline-end:.75rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side::placeholder{font-size:1rem;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{padding-inline-start:.75rem;gap:.5rem}ax-conversation-input .ax-conversation-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-sys-color-danger-surface));border-radius:999rem;margin-inline-end:.5rem}ax-conversation-input .ax-conversation-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-surface),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-sys-color-danger-surface),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-surface),0)}}ax-conversation-input .ax-conversation-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}ax-conversation-input .ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}ax-conversation-input .ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-sys-border-radius)}ax-conversation-input .ax-emoji-container>div:hover{background-color:rgba(var(--ax-sys-color-surface))}ax-conversation-input .ax-editor-reply-container{--ax-comp-editor-height: 100%;display:flex;flex-direction:column;align-items:flex-start;padding:.5rem}ax-conversation-input .ax-editor-reply-container .ax-reply-container{display:flex;justify-content:space-between;align-items:center;width:100%}ax-conversation-input .ax-reply-start{display:flex;align-items:center}ax-conversation-input .ax-cursor-pointer{cursor:pointer}ax-conversation-input .ax-reply-types{display:flex;align-items:center}ax-conversation-input .ax-reply-start i{margin-inline-end:1rem}ax-conversation-input .ax-reply-start img,ax-conversation-input .ax-reply-start video{margin-inline-end:.5rem;height:1.75rem;width:1.75rem}\\n\"], dependencies: [{ kind: \"component\", type: 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: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: 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: \"component\", type: AXLoadingSpinnerComponent, selector: \"ax-loading-spinner\", inputs: [\"text\", \"color\", \"size\", \"stroke\"] }, { kind: \"ngmodule\", type: 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: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-input', inputs: ['look', 'placeholder'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n { provide: AXComponent, useExisting: AXConversationInputComponent },\n { provide: AXFocusableComponent, useExisting: AXConversationInputComponent },\n { provide: AXValuableComponent, useExisting: AXConversationInputComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXConversationInputComponent),\n multi: true,\n },\n ], imports: [\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n FormsModule,\n AXLoadingSpinnerComponent,\n AsyncPipe,\n AXTranslatorPipe,\n AXDecoratorModule,\n ], template: \"@if (actionShowState()) {\\n <div class=\\\"ax-editor-reply-container ax-editor-container ax-{{ look }}\\\">\\n @if (actionUser()) {\\n <ax-text> {{ actionUser() }}</ax-text>\\n }\\n <div class=\\\"ax-reply-container\\\">\\n <div class=\\\"ax-reply-start\\\">\\n <i [class]=\\\"actionIcon()\\\"></i>\\n <p>{{ actionContent() }}</p>\\n </div>\\n <i (click)=\\\"closeReplyHandler()\\\" class=\\\"fa-solid fa-xmark ax-cursor-pointer\\\"></i>\\n </div>\\n </div>\\n}\\n\\n<div class=\\\"ax-conversation-input ax-editor-container ax-{{ look }}\\\" [class.ax-state-recording]=\\\"recording()\\\">\\n @if (recording()) {\\n <div class=\\\"ax-conversation-input-start-side\\\">\\n <span class=\\\"ax-record-dot\\\"></span>\\n <span>{{ recordingService.timer() }}</span>\\n </div>\\n <div class=\\\"ax-conversation-input-main-side\\\">\\n <ax-button\\n class=\\\"ax-sm\\\"\\n look=\\\"blank\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"'@acorex:common.actions.cancel' | translate | async\\\"\\n (onClick)=\\\"handleCancelRecordingClick()\\\"\\n ></ax-button>\\n </div>\\n <div class=\\\"ax-conversation-input-end-side\\\">\\n <ax-button look=\\\"solid\\\" color=\\\"danger\\\" class=\\\"ax-blob ax-sm\\\" (onClick)=\\\"handleSendVoiceClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-send\\\"></i>\\n </ax-icon>\\n </ax-button>\\n </div>\\n } @else {\\n @if (hasEmoji()) {\\n <div class=\\\"ax-conversation-input-start-side\\\">\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-emoji\\\"></i>\\n </ax-icon>\\n <ax-dropdown-panel>\\n <ng-container>\\n <div class=\\\"ax-emoji-container\\\">\\n <div>\\u26A0\\uFE0F</div>\\n <div>\\u27A1\\uFE0F</div>\\n <div>\\uD83D\\uDD03</div>\\n <div>\\uD83D\\uDD37</div>\\n <div>\\uD83E\\uDD1A</div>\\n <div>\\uD83D\\uDE02</div>\\n <div>\\uD83D\\uDE0A</div>\\n </div>\\n </ng-container>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n }\\n\\n <textarea\\n class=\\\"ax-conversation-input-main-side\\\"\\n oninput='this.style.height = \\\"\\\";this.style.height = this.scrollHeight + \\\"px\\\"'\\n type=\\\"text\\\"\\n rows=\\\"1\\\"\\n [id]=\\\"id\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [attr.maxlength]=\\\"maxLength()\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n [ngModel]=\\\"value\\\"\\n (ngModelChange)=\\\"_handleModelChange($event)\\\"\\n [ngModelOptions]=\\\"{ updateOn: _updateOn }\\\"\\n (keydown)=\\\"keyDownHandler($event)\\\"\\n (keyup)=\\\"keyUpHandler($event)\\\"\\n (keypress)=\\\"keyPressHandler($event)\\\"\\n (focus)=\\\"emitOnFocusEvent($event)\\\"\\n (blur)=\\\"emitOnBlurEvent($event)\\\"\\n >\\n </textarea>\\n\\n <div class=\\\"ax-conversation-input-end-side\\\">\\n @if (!value) {\\n @if (hasAttachment()) {\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleAttachClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-attach\\\"></i>\\n </ax-icon>\\n </ax-button>\\n <input\\n multiple\\n #inputFile\\n [accept]=\\\"acceptFileType()\\\"\\n type=\\\"file\\\"\\n class=\\\"ax-attach-input\\\"\\n (change)=\\\"handleChangeFile($event)\\\"\\n />\\n }\\n @if (hasVoice()) {\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleRecordClick()\\\">\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-mic\\\"></i>\\n </ax-icon>\\n </ax-button>\\n }\\n } @else {\\n <ax-button [disabled]=\\\"isLoading()\\\" look=\\\"solid\\\" color=\\\"primary\\\" class=\\\"ax-sm\\\" (onClick)=\\\"handleSendClick()\\\">\\n @if (isLoading()) {\\n <ax-loading-spinner color=\\\"primary\\\"></ax-loading-spinner>\\n } @else {\\n @if (sendIcon()) {\\n <ng-content select=\\\"ax-icon\\\"></ng-content>\\n } @else {\\n <ax-icon>\\n <i class=\\\"ax-icon ax-icon-arrow-long-up\\\"></i>\\n </ax-icon>\\n }\\n }\\n </ax-button>\\n }\\n </div>\\n }\\n</div>\\n\", styles: [\"ax-conversation-input{width:100%;display:block}ax-conversation-input .ax-conversation-input{display:flex;align-items:center;position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem}ax-conversation-input .ax-conversation-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-start-side{justify-content:flex-start}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-end-side{justify-content:flex-end}ax-conversation-input .ax-conversation-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}ax-conversation-input .ax-conversation-input>textarea:focus,ax-conversation-input .ax-conversation-input>textarea:focus-visible{outline:unset}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side,ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side{padding-inline-end:.75rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side::placeholder{font-size:1rem;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{padding-inline-start:.75rem;gap:.5rem}ax-conversation-input .ax-conversation-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-sys-color-danger-surface));border-radius:999rem;margin-inline-end:.5rem}ax-conversation-input .ax-conversation-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-surface),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-sys-color-danger-surface),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-surface),0)}}ax-conversation-input .ax-conversation-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}ax-conversation-input .ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}ax-conversation-input .ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-sys-border-radius)}ax-conversation-input .ax-emoji-container>div:hover{background-color:rgba(var(--ax-sys-color-surface))}ax-conversation-input .ax-editor-reply-container{--ax-comp-editor-height: 100%;display:flex;flex-direction:column;align-items:flex-start;padding:.5rem}ax-conversation-input .ax-editor-reply-container .ax-reply-container{display:flex;justify-content:space-between;align-items:center;width:100%}ax-conversation-input .ax-reply-start{display:flex;align-items:center}ax-conversation-input .ax-cursor-pointer{cursor:pointer}ax-conversation-input .ax-reply-types{display:flex;align-items:center}ax-conversation-input .ax-reply-start i{margin-inline-end:1rem}ax-conversation-input .ax-reply-start img,ax-conversation-input .ax-reply-start video{margin-inline-end:.5rem;height:1.75rem;width:1.75rem}\\n\"] }]\n }], propDecorators: { inputFile: [{\n type: ViewChild,\n args: ['inputFile']\n }], __hostName: [{\n type: HostBinding,\n args: ['attr.name']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLWlucHV0L2NvbnZlcnNhdGlvbi1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1pbnB1dC9jb252ZXJzYXRpb24taW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFdBQVcsRUFFWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBRVgsU0FBUyxFQUNULGlCQUFpQixFQUVqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFB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cUJBQ2xCOzhCQUdpQyxTQUFTO3NCQUExQyxTQUFTO3VCQUFDLFdBQVc7Z0JBdU5WLFVBQVU7c0JBRHJCLFdBQVc7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ2xpY2tFdmVudCxcbiAgQVhDb21wb25lbnQsXG4gIEFYRXZlbnQsXG4gIEFYRm9jdXNhYmxlQ29tcG9uZW50LFxuICBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICBNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50LFxuICBNWExvb2tDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LCBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWExvYWRpbmdTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIFNpZ25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBjb250ZW50Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29udmVyc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhSZWNvcmRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVjb3JkaW5nLnNlcnZpY2UnO1xuXG4vKipcbiAqIEFuIGlucHV0IGNvbXBvbmVudCBmb3IgZW50ZXJpbmcgY29udmVyc2F0aW9uIG1lc3NhZ2VzLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb252ZXJzYXRpb24taW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBbJ2xvb2snLCAncGxhY2Vob2xkZXInXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENvbnZlcnNhdGlvbklucHV0Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWEZvY3VzYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29udmVyc2F0aW9uSW5wdXRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENvbnZlcnNhdGlvbklucHV0Q29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWENvbnZlcnNhdGlvbklucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBWERlY29yYXRvckljb25Db21wb25lbnQsXG4gICAgQVhEcm9wZG93blBhbmVsQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYTG9hZGluZ1NwaW5uZXJDb21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIEFYVHJhbnNsYXRvclBpcGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQ8c3RyaW5nPiwgTVhMb29rQ29tcG9uZW50KSB7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RmlsZScpIHByb3RlY3RlZCBpbnB1dEZpbGU6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgcHJvdGVjdGVkIHNlbmRJY29uID0gY29udGVudENoaWxkKCdheC1pY29uJyk7XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uQ2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgY29udmVyc2F0aW9uU2VydmljZSA9IGluamVjdChBWENvbnZlcnNhdGlvblNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBjaGF0czogU2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZVtdPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzKCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBhY3Rpb25JY29uID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XG4gIHByb3RlY3RlZCBhY3Rpb25Db250ZW50ID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XG4gIHByb3RlY3RlZCBhY3Rpb25TaG93U3RhdGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgYWN0aW9uVXNlciA9IHNpZ25hbDxzdHJpbmc+KG51bGwpO1xuICBwcm90ZWN0ZWQgYWN0aW9uQ2xvc2VDYWxsYmFjayA9IHNpZ25hbDwoKSA9PiB2b2lkPigoKSA9PiB7XG4gICAgcmV0dXJuO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVwbHlDaGF0OiBTaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmaW5kTWVzc2FnZSA9IHRoaXMuY2hhdHMoKS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UucmVwbHlJZCgpKTtcbiAgICByZXR1cm4gZmluZE1lc3NhZ2U7XG4gIH0pO1xuXG4gIHB1YmxpYyBzZXRBY3Rpb25Cb3hDb250YWluZXIoaWNvbjogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIHVzZXI/OiBzdHJpbmcsIGNsb3NlQ2FsbGJhY2s/OiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hY3Rpb25JY29uLnNldChpY29uKTtcbiAgICB0aGlzLmFjdGlvbkNvbnRlbnQuc2V0KGNvbnRlbnQpO1xuICAgIHRoaXMuYWN0aW9uU2hvd1N0YXRlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGlvblVzZXIuc2V0KHVzZXIpO1xuICAgIHRoaXMuYWN0aW9uQ2xvc2VDYWxsYmFjay5zZXQoY2xvc2VDYWxsYmFjayk7XG4gIH1cblxuICAvKiogTWF4aW11bSBsZW5ndGggb2YgaW5wdXQgdGV4dCAqL1xuICByZWFkb25seSBtYXhMZW5ndGggPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgLyoqIEluZGljYXRlcyBpZiBhbiBhdHRhY2htZW50IGlzIHByZXNlbnQgKi9cbiAgcmVhZG9ubHkgaGFzQXR0YWNobWVudCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIC8qKiBJbmRpY2F0ZXMgaWYgdm9pY2UgcmVjb3JkaW5nIGlzIGVuYWJsZWQgKi9cbiAgcmVhZG9ubHkgaGFzVm9pY2UgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBoYXNFbW9qaSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKiogQWNjZXB0YWJsZSBmaWxlIHR5cGVzIGZvciBhdHRhY2htZW50ICovXG4gIHJlYWRvbmx5IGFjY2VwdEZpbGVUeXBlID0gaW5wdXQ8c3RyaW5nPignKicpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNlbmQgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgb25TZW5kQ2xpY2sgPSBvdXRwdXQ8QVhDbGlja0V2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gcmVjb3JkaW5nIHN0YXJ0cy5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBvblN0YXJ0UmVjb3JkaW5nID0gb3V0cHV0PEFYQ2xpY2tFdmVudD4oKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHJlY29yZGluZyBpcyBjYW5jZWxlZC5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBvbkNhbmNlbFJlY29yZGluZyA9IG91dHB1dDxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgb25FbnRlclByZXNzZWQgPSBvdXRwdXQ8QVhFdmVudD4oKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCByZWNvcmRpbmc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCByZWNvcmRpbmdTZXJ2aWNlOiBBWFJlY29yZGluZ1NlcnZpY2UgPSBpbmplY3QoQVhSZWNvcmRpbmdTZXJ2aWNlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfdXBkYXRlT246ICdjaGFuZ2UnIHwgJ2JsdXInIHwgJ3N1Ym1pdCcgPSAnY2hhbmdlJztcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfaGFuZGxlTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuY29tbWl0VmFsdWUodmFsdWUsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYXRlcyByZWNvcmRpbmcgd2hlbiB0aGUgcmVjb3JkIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHJlY29yZGluZyBzdGFydHMuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVSZWNvcmRDbGljaygpIHtcbiAgICB0aGlzLnJlY29yZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZWNvcmRpbmdTZXJ2aWNlXG4gICAgICA/LnN0YXJ0UmVjb3JkaW5nKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5vblN0YXJ0UmVjb3JkaW5nLmVtaXQoe1xuICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICBkYXRhOiB7IHJlY29yZGluZzogdHJ1ZSB9LFxuICAgICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgdGhlIHJlY29yZGluZyBhbmQgZW1pdHMgYW4gZXZlbnQgdG8gaW5kaWNhdGUgY2FuY2VsbGF0aW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ2FuY2VsUmVjb3JkaW5nQ2xpY2soKSB7XG4gICAgdGhpcy5yZWNvcmRpbmcuc2V0KGZhbHNlKTtcblxuICAgIHRoaXMub25DYW5jZWxSZWNvcmRpbmcuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hpZnRTdGF0ZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQga2V5RG93bkhhbmRsZXIoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChlLmtleSA9PT0gJ1NoaWZ0Jykge1xuICAgICAgdGhpcy5zaGlmdFN0YXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5vbktleURvd24uZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgfVxuICBwcm90ZWN0ZWQga2V5VXBIYW5kbGVyKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZS5rZXkgPT09ICdTaGlmdCcpIHtcbiAgICAgIHRoaXMuc2hpZnRTdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLm9uS2V5VXAuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgfVxuICBwcm90ZWN0ZWQga2V5UHJlc3NIYW5kbGVyKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgIXRoaXMuc2hpZnRTdGF0ZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5vbkVudGVyUHJlc3NlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzIH0pO1xuICAgIH1cbiAgICB0aGlzLm9uS2V5UHJlc3MuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogT3BlbnMgdGhlIGZpbGUgcGlja2VyIGZvciBhdHRhY2htZW50LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQXR0YWNoQ2xpY2soKSB7XG4gICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBzZWxlY3RlZCBmaWxlcyB3aGVuIHRoZSBmaWxlIGlucHV0IGNoYW5nZXMuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDaGFuZ2VGaWxlKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMub25TZW5kQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiB7IHZhbHVlOiAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzLCB0eXBlOiAnZmlsZScgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgdGV4dCB2YWx1ZSBhbmQgb3B0aW9uYWwgcmVwbHlDaGF0IHdoZW4gdGhlIHNlbmQgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVTZW5kQ2xpY2soKSB7XG4gICAgdGhpcy5vblNlbmRDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGRhdGE6IHsgdmFsdWU6IHRoaXMudmFsdWUsIHJlcGx5Q2hhdDogdGhpcy5yZXBseUNoYXQoKSB8fCBudWxsLCB0eXBlOiAndGV4dCcgfSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuYWN0aW9uU2hvd1N0YXRlLnNldChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogRW5kcyByZWNvcmRpbmcgYW5kIGVtaXRzIHRoZSByZWNvcmRlZCB2b2ljZSBkYXRhIHdoZW4gdGhlIHNlbmQgdm9pY2UgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVTZW5kVm9pY2VDbGljaygpIHtcbiAgICB0aGlzLnJlY29yZGluZ1NlcnZpY2UuZW5kUmVjb3JkaW5nKCkudGhlbigoYykgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub25TZW5kQ2xpY2suZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgZGF0YTogeyB2YWx1ZTogYywgdHlwZTogJ3ZvaWNlJyB9LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgcmVwbHkgSUQgd2hlbiBjbG9zaW5nIGEgcmVwbHkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjbG9zZVJlcGx5SGFuZGxlcigpIHtcbiAgICB0aGlzLmFjdGlvblNob3dTdGF0ZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aW9uQ2xvc2VDYWxsYmFjaygpO1xuICAgIHRoaXMub25BY3Rpb25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIubmFtZScpXG4gIHByaXZhdGUgZ2V0IF9faG9zdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG59XG4iLCJAaWYgKGFjdGlvblNob3dTdGF0ZSgpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1lZGl0b3ItcmVwbHktY29udGFpbmVyIGF4LWVkaXRvci1jb250YWluZXIgYXgte3sgbG9vayB9fVwiPlxuICAgIEBpZiAoYWN0aW9uVXNlcigpKSB7XG4gICAgICA8YXgtdGV4dD4ge3sgYWN0aW9uVXNlcigpIH19PC9heC10ZXh0PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiYXgtcmVwbHktY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtcmVwbHktc3RhcnRcIj5cbiAgICAgICAgPGkgW2NsYXNzXT1cImFjdGlvbkljb24oKVwiPjwvaT5cbiAgICAgICAgPHA+e3sgYWN0aW9uQ29udGVudCgpIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8aSAoY2xpY2spPVwiY2xvc2VSZXBseUhhbmRsZXIoKVwiIGNsYXNzPVwiZmEtc29saWQgZmEteG1hcmsgYXgtY3Vyc29yLXBvaW50ZXJcIj48L2k+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufVxuXG48ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWlucHV0IGF4LWVkaXRvci1jb250YWluZXIgYXgte3sgbG9vayB9fVwiIFtjbGFzcy5heC1zdGF0ZS1yZWNvcmRpbmddPVwicmVjb3JkaW5nKClcIj5cbiAgQGlmIChyZWNvcmRpbmcoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24taW5wdXQtc3RhcnQtc2lkZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJheC1yZWNvcmQtZG90XCI+PC9zcGFuPlxuICAgICAgPHNwYW4+e3sgcmVjb3JkaW5nU2VydmljZS50aW1lcigpIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24taW5wdXQtbWFpbi1zaWRlXCI+XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICBsb29rPVwiYmxhbmtcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbdGV4dF09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5jYW5jZWwnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVDYW5jZWxSZWNvcmRpbmdDbGljaygpXCJcbiAgICAgID48L2F4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWlucHV0LWVuZC1zaWRlXCI+XG4gICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJheC1ibG9iIGF4LXNtXCIgKG9uQ2xpY2spPVwiaGFuZGxlU2VuZFZvaWNlQ2xpY2soKVwiPlxuICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1zZW5kXCI+PC9pPlxuICAgICAgICA8L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgQGlmIChoYXNFbW9qaSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWlucHV0LXN0YXJ0LXNpZGVcIj5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiBjbGFzcz1cImF4LXNtXCI+XG4gICAgICAgICAgPGF4LWljb24+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1lbW9qaVwiPjwvaT5cbiAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWVtb2ppLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+4pqg77iPPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj7inqHvuI88L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCflIM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCflLc8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCfpJo8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCfmII8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PvCfmIo8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDx0ZXh0YXJlYVxuICAgICAgY2xhc3M9XCJheC1jb252ZXJzYXRpb24taW5wdXQtbWFpbi1zaWRlXCJcbiAgICAgIG9uaW5wdXQ9J3RoaXMuc3R5bGUuaGVpZ2h0ID0gXCJcIjt0aGlzLnN0eWxlLmhlaWdodCA9IHRoaXMuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiJ1xuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgcm93cz1cIjFcIlxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhMZW5ndGgoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4gICAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJfaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyB1cGRhdGVPbjogX3VwZGF0ZU9uIH1cIlxuICAgICAgKGtleWRvd24pPVwia2V5RG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAoa2V5dXApPVwia2V5VXBIYW5kbGVyKCRldmVudClcIlxuICAgICAgKGtleXByZXNzKT1cImtleVByZXNzSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJlbWl0T25Gb2N1c0V2ZW50KCRldmVudClcIlxuICAgICAgKGJsdXIpPVwiZW1pdE9uQmx1ckV2ZW50KCRldmVudClcIlxuICAgID5cbiAgICA8L3RleHRhcmVhPlxuXG4gICAgPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1pbnB1dC1lbmQtc2lkZVwiPlxuICAgICAgQGlmICghdmFsdWUpIHtcbiAgICAgICAgQGlmIChoYXNBdHRhY2htZW50KCkpIHtcbiAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIGNsYXNzPVwiYXgtc21cIiAob25DbGljayk9XCJoYW5kbGVBdHRhY2hDbGljaygpXCI+XG4gICAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tYXR0YWNoXCI+PC9pPlxuICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICNpbnB1dEZpbGVcbiAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0RmlsZVR5cGUoKVwiXG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWF0dGFjaC1pbnB1dFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZUZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGhhc1ZvaWNlKCkpIHtcbiAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIGNsYXNzPVwiYXgtc21cIiAob25DbGljayk9XCJoYW5kbGVSZWNvcmRDbGljaygpXCI+XG4gICAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tbWljXCI+PC9pPlxuICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGF4LWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKClcIiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImF4LXNtXCIgKG9uQ2xpY2spPVwiaGFuZGxlU2VuZENsaWNrKClcIj5cbiAgICAgICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICA8YXgtbG9hZGluZy1zcGlubmVyIGNvbG9yPVwicHJpbWFyeVwiPjwvYXgtbG9hZGluZy1zcGlubmVyPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChzZW5kSWNvbigpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWljb25cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGF4LWljb24+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tYXJyb3ctbG9uZy11cFwiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXConversationMessageTypeRegistryService {\n constructor() {\n this.plugins = new Map();\n }\n register(...plugins) {\n plugins.forEach((p) => this.plugins.set(p.name, p));\n }\n resolve(name) {\n return this.plugins.get(name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageTypeRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageTypeRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageTypeRegistryService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtdHlwZS1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9zZXJ2aWNlcy9jb252ZXJzYXRpb24tbWVzc2FnZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFPLHdDQUF3QztJQURyRDtRQUVVLFlBQU8sR0FBMkMsSUFBSSxHQUFHLEVBQXFDLENBQUM7S0FTeEc7SUFQQyxRQUFRLENBQUMsR0FBRyxPQUFvQztRQUM5QyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs4R0FUVSx3Q0FBd0M7a0hBQXhDLHdDQUF3QyxjQUQzQixNQUFNOzsyRkFDbkIsd0NBQXdDO2tCQURwRCxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVSZWdpc3RyeVNlcnZpY2Uge1xuICBwcml2YXRlIHBsdWdpbnM6IE1hcDxzdHJpbmcsIEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGU+ID0gbmV3IE1hcDxzdHJpbmcsIEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGU+KCk7XG5cbiAgcmVnaXN0ZXIoLi4ucGx1Z2luczogQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZVtdKSB7XG4gICAgcGx1Z2lucy5mb3JFYWNoKChwKSA9PiB0aGlzLnBsdWdpbnMuc2V0KHAubmFtZSwgcCkpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUobmFtZTogc3RyaW5nKTogQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2lucy5nZXQobmFtZSk7XG4gIH1cbn1cbiJdfQ==","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXAvatarComponent } from '@acorex/components/avatar';\nimport { AXButtonComponent, AXButtonItemComponent, AXButtonItemListComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { isBrowser } from '@acorex/core/platform';\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { Component, HostBinding, ViewEncapsulation, computed, inject, input, output, signal, viewChild, } from '@angular/core';\nimport { AXConversationMessageTypeRegistryService } from '../services/conversation-message-type-registry.service';\nimport { AXConversationService } from '../services/conversation.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/menu\";\nimport * as i2 from \"@angular/common\";\n/**\n * A component for displaying individual conversation messages.\n *\n * @category Components\n */\nexport class AXConversationMessageComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.popover = viewChild('popover', ...(ngDevMode ? [{ debugName: \"popover\" }] : []));\n this.isReplyArrowShown = input(true, ...(ngDevMode ? [{ debugName: \"isReplyArrowShown\" }] : []));\n this.chatMessage = input(...(ngDevMode ? [undefined, { debugName: \"chatMessage\" }] : []));\n this.avatar = input(null, ...(ngDevMode ? [{ debugName: \"avatar\" }] : []));\n this.conversationService = inject(AXConversationService);\n this.registryService = inject(AXConversationMessageTypeRegistryService);\n this.actionButtonItemsPrivate = signal([], ...(ngDevMode ? [{ debugName: \"actionButtonItemsPrivate\" }] : []));\n this.actionButtonItemsPublic = {\n items: [],\n canceled: false,\n data: this.chatMessage(),\n };\n this.onActionMenuOpening = output();\n this.onReplyClick = output();\n this.portal = computed(() => {\n return new ComponentPortal(this.registryService.resolve(this.chatMessage().type).component);\n }, ...(ngDevMode ? [{ debugName: \"portal\" }] : []));\n this.messageType = computed(() => {\n return this.chatMessage().type;\n }, ...(ngDevMode ? [{ debugName: \"messageType\" }] : []));\n }\n get isOwn() {\n return !this.chatMessage().fromId;\n }\n /**\n * Handles the action button click and opens the action menu.\n */\n handleActionClick() {\n this.actionButtonItemsPublic = {\n items: [],\n canceled: false,\n data: this.chatMessage(),\n };\n this.onActionMenuOpening.emit(this.actionButtonItemsPublic);\n if (this.actionButtonItemsPublic.canceled)\n return;\n this.actionButtonItemsPrivate.set(this.actionButtonItemsPublic.items);\n }\n _handleAttached(ref) {\n ref = ref;\n if (ref.instance && isBrowser()) {\n Object.assign(ref.instance, { message: this.chatMessage() });\n const prefixContainer = this.getHostElement().querySelector('.ax-message-prefix');\n const suffixContainer = this.getHostElement().querySelector('.ax-message-suffix');\n prefixContainer.innerHTML = '';\n suffixContainer.innerHTML = '';\n const prefix = this.getHostElement().querySelector('ax-prefix');\n const suffix = this.getHostElement().querySelector('ax-suffix');\n if (prefix && prefixContainer) {\n prefix.style.display = 'flex';\n prefixContainer.append(prefix);\n }\n if (suffix && suffixContainer) {\n suffix.style.display = 'flex';\n suffixContainer.append(suffix);\n }\n }\n }\n /**\n * Handles the resend button click and closes the popover.\n */\n handleResendClick() {\n this.popover()?.close();\n this.chatMessage().onResendClick();\n }\n /**\n * Handles the delete button click and closes the popover.\n */\n handleDeleteClick() {\n this.popover()?.close();\n this.chatMessage().onDeleteClick();\n }\n /**\n * Handles reply functionality by setting the reply ID and emitting the reply click event.\n *\n * @param e - The conversation message to reply to.\n */\n replyHandler(e) {\n this.conversationService.replyId.set(e.id);\n this.onReplyClick.emit({ data: e, component: this });\n }\n get __hostClass() {\n return `${this.isOwn ? 'ax-state-own' : ''} ${!this.isOwn ? 'ax-state-other' : ''}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXConversationMessageComponent, isStandalone: true, selector: \"ax-conversation-message\", inputs: { isReplyArrowShown: { classPropertyName: \"isReplyArrowShown\", publicName: \"isReplyArrowShown\", isSignal: true, isRequired: false, transformFunction: null }, chatMessage: { classPropertyName: \"chatMessage\", publicName: \"chatMessage\", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: \"avatar\", publicName: \"avatar\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onActionMenuOpening: \"onActionMenuOpening\", onReplyClick: \"onReplyClick\" }, host: { properties: { \"class\": \"this.__hostClass\" } }, providers: [{ provide: AXComponent, useExisting: AXConversationMessageComponent }], viewQueries: [{ propertyName: \"popover\", first: true, predicate: [\"popover\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"@if (chatMessage().fromId) {\\n @if (avatar()) {\\n <ng-container [ngTemplateOutlet]=\\\"avatar()\\\"></ng-container>\\n } @else {\\n <ax-avatar color=\\\"primary\\\" [size]=\\\"36\\\"> </ax-avatar>\\n }\\n}\\n\\n@if (isOwn && isReplyArrowShown()) {\\n <i (click)=\\\"replyHandler(chatMessage())\\\" class=\\\"fa-solid fa-reply ax-cursor-pointer\\\"></i>\\n}\\n\\n<div\\n class=\\\"ax-message-content\\\"\\n [class]=\\\"'ax-type-' + messageType()\\\"\\n [class.ax-state-own]=\\\"!chatMessage().fromId\\\"\\n [class.ax-state-other]=\\\"chatMessage().fromId\\\"\\n>\\n <div class=\\\"ax-action-button\\\">\\n @if (chatMessage()?.userName) {\\n <div class=\\\"ax-message-user-name\\\">\\n <ax-text>{{ chatMessage().userName }}</ax-text>\\n </div>\\n }\\n\\n @if (chatMessage()?.showActionButton) {\\n <div class=\\\"ax-message-action-button\\\">\\n <ax-menu openOn=\\\"click\\\" [hasArrow]=\\\"false\\\">\\n <ax-menu-item class=\\\"ax-parent-menu-item\\\">\\n <ax-text (click)=\\\"handleActionClick()\\\">...</ax-text>\\n\\n @for (item of actionButtonItemsPrivate(); track item.text) {\\n <ax-menu-item [color]=\\\"item.color\\\" (onClick)=\\\"item.onClick(chatMessage().id)\\\">\\n <ax-text>{{ item.text }}</ax-text>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n\\n @for (innerItem of item.items; track innerItem.text) {\\n <ax-menu-item [color]=\\\"innerItem.color\\\" (onClick)=\\\"innerItem.onClick(chatMessage().id)\\\">\\n <ax-text>{{ innerItem.text }}</ax-text>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"innerItem.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n </ax-menu>\\n </div>\\n }\\n </div>\\n\\n <ng-template [cdkPortalOutlet]=\\\"portal()\\\" (attached)=\\\"_handleAttached($event)\\\"></ng-template>\\n\\n <div class=\\\"ax-chat-message-status\\\">\\n <div class=\\\"ax-message-prefix\\\"></div>\\n <div>\\n <div class=\\\"ax-message-suffix\\\"></div>\\n <span>\\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\\n </span>\\n <span>\\n @if (isOwn) {\\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\\n <i class=\\\"ax-icon ax-icon-check ax-message-status\\\"></i>\\n }\\n @if (chatMessage().readTime && chatMessage().sendTime) {\\n <i class=\\\"ax-icon ax-icon-dobble-check ax-message-status\\\"></i>\\n }\\n }\\n </span>\\n </div>\\n </div>\\n</div>\\n\\n@if (!chatMessage().sendTime) {\\n <ax-button class=\\\"ax-resend-button ax-xs\\\" color=\\\"danger\\\" #b>\\n <ax-icon class=\\\"ax-icon ax-icon-error\\\"></ax-icon>\\n\\n <ax-popover [target]=\\\"b\\\" placement=\\\"bottom-end\\\" #popover>\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-content> </ax-content>\\n <ax-button-item-list>\\n @if (chatMessage().onResendClick) {\\n <ax-button-item text=\\\"Resend\\\" (onClick)=\\\"handleResendClick()\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-reload ax-bold\\\"></ax-icon>\\n </ax-button-item>\\n }\\n @if (chatMessage().onDeleteClick) {\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (onClick)=\\\"handleDeleteClick()\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-clear ax-bold\\\"></ax-icon>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </div>\\n </ax-popover>\\n </ax-button>\\n}\\n\\n@if (!isOwn && isReplyArrowShown()) {\\n <i (click)=\\\"replyHandler(chatMessage())\\\" class=\\\"fa-solid fa-reply ax-rotate ax-cursor-pointer\\\"></i>\\n}\\n\", styles: [\"ax-conversation-message{display:flex;align-items:flex-end;margin:.5rem}ax-conversation-message .ax-message-reply-container{padding:.75rem}ax-conversation-message .ax-message-reply-container,ax-conversation-message .ax-image-reply-container,ax-conversation-message .ax-video-reply-container{border-left:.3rem solid rgb(var(--ax-comp-conversation-border-color));border-radius:.75rem;margin-bottom:.25rem;overflow:hidden}ax-conversation-message .ax-message-reply-container .file,ax-conversation-message .ax-image-reply-container .file,ax-conversation-message .ax-video-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i,ax-conversation-message .ax-image-reply-container .file i,ax-conversation-message .ax-video-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video,ax-conversation-message .ax-image-reply-container img,ax-conversation-message .ax-image-reply-container video,ax-conversation-message .ax-video-reply-container img,ax-conversation-message .ax-video-reply-container video{max-width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-own-color-fore));color:rgb(var(--ax-comp-conversation-own-color))}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-own-reply-color));color:rgb(var(--ax-comp-conversation-own-reply-color-fore))}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-other-color-fore));color:rgb(var(--ax-comp-conversation-other-color))}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-other-reply-color));color:rgb(var(--ax-comp-conversation-other-reply-color-fore))}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgb(var(--ax-sys-color-danger-surface));color:rgb(var(--ax-sys-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:flex;flex-direction:column;gap:.25rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:var(--ax-sys-border-radius);overflow:hidden;width:fit-content;max-width:50%;margin-inline-start:.5rem}ax-conversation-message .ax-message-content .ax-action-button{display:grid;grid-template-columns:repeat(2,1fr)}ax-conversation-message .ax-message-content .ax-action-button .ax-message-user-name{justify-self:start;grid-column:1}ax-conversation-message .ax-message-content .ax-action-button .ax-message-action-button{justify-self:end;grid-column:2}ax-conversation-message .ax-message-content .ax-action-button ax-menu.ax-action-list-horizontal{min-width:0;gap:0}ax-conversation-message .ax-message-content .ax-action-button .ax-parent-menu-item{height:auto!important;padding:0!important}ax-conversation-message .ax-message-content.ax-type-video{padding:0}ax-conversation-message .ax-message-content.ax-type-image{padding:0}ax-conversation-message .ax-message-content .ax-chat-message-status{padding:.25rem .5rem}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:rgb(var(--ax-comp-conversation-own-color));color:rgb(var(--ax-comp-conversation-own-color-fore));justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-own-color-fore))}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:rgb(var(--ax-comp-conversation-other-color));color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:rgb(var(--ax-comp-conversation-status-color))}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgb(var(--ax-sys-color-danger-surface))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-sys-color-on-primary))}ax-conversation-message .ax-rotate{transform:scaleX(-1);margin-inline-start:.5rem}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\\n\"], dependencies: [{ kind: \"component\", type: AXAvatarComponent, selector: \"ax-avatar\", inputs: [\"color\", \"size\", \"shape\", \"look\"], outputs: [\"sizeChange\"] }, { kind: \"directive\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { kind: \"component\", type: 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: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXPopoverComponent, selector: \"ax-popover\", inputs: [\"width\", \"disabled\", \"offsetX\", \"offsetY\", \"target\", \"placement\", \"content\", \"openOn\", \"closeOn\", \"hasBackdrop\", \"openAfter\", \"closeAfter\", \"backdropClass\", \"panelClass\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: 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: \"component\", type: AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"ngmodule\", type: AXMenuModule }, { kind: \"component\", type: i1.AXMenuItemComponent, selector: \"ax-menu-item\", inputs: [\"name\", \"data\", \"disabled\", \"color\"], outputs: [\"onClick\"] }, { kind: \"component\", type: i1.AXMenuComponent, selector: \"ax-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"hasArrow\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message', encapsulation: ViewEncapsulation.None, imports: [\n AXAvatarComponent,\n CdkPortalOutlet,\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXPopoverComponent,\n AXDecoratorGenericComponent,\n AXButtonItemListComponent,\n AXButtonItemComponent,\n AsyncPipe,\n AXFormatPipe,\n AXMenuModule,\n CommonModule,\n ], providers: [{ provide: AXComponent, useExisting: AXConversationMessageComponent }], template: \"@if (chatMessage().fromId) {\\n @if (avatar()) {\\n <ng-container [ngTemplateOutlet]=\\\"avatar()\\\"></ng-container>\\n } @else {\\n <ax-avatar color=\\\"primary\\\" [size]=\\\"36\\\"> </ax-avatar>\\n }\\n}\\n\\n@if (isOwn && isReplyArrowShown()) {\\n <i (click)=\\\"replyHandler(chatMessage())\\\" class=\\\"fa-solid fa-reply ax-cursor-pointer\\\"></i>\\n}\\n\\n<div\\n class=\\\"ax-message-content\\\"\\n [class]=\\\"'ax-type-' + messageType()\\\"\\n [class.ax-state-own]=\\\"!chatMessage().fromId\\\"\\n [class.ax-state-other]=\\\"chatMessage().fromId\\\"\\n>\\n <div class=\\\"ax-action-button\\\">\\n @if (chatMessage()?.userName) {\\n <div class=\\\"ax-message-user-name\\\">\\n <ax-text>{{ chatMessage().userName }}</ax-text>\\n </div>\\n }\\n\\n @if (chatMessage()?.showActionButton) {\\n <div class=\\\"ax-message-action-button\\\">\\n <ax-menu openOn=\\\"click\\\" [hasArrow]=\\\"false\\\">\\n <ax-menu-item class=\\\"ax-parent-menu-item\\\">\\n <ax-text (click)=\\\"handleActionClick()\\\">...</ax-text>\\n\\n @for (item of actionButtonItemsPrivate(); track item.text) {\\n <ax-menu-item [color]=\\\"item.color\\\" (onClick)=\\\"item.onClick(chatMessage().id)\\\">\\n <ax-text>{{ item.text }}</ax-text>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n\\n @for (innerItem of item.items; track innerItem.text) {\\n <ax-menu-item [color]=\\\"innerItem.color\\\" (onClick)=\\\"innerItem.onClick(chatMessage().id)\\\">\\n <ax-text>{{ innerItem.text }}</ax-text>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"innerItem.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n </ax-menu>\\n </div>\\n }\\n </div>\\n\\n <ng-template [cdkPortalOutlet]=\\\"portal()\\\" (attached)=\\\"_handleAttached($event)\\\"></ng-template>\\n\\n <div class=\\\"ax-chat-message-status\\\">\\n <div class=\\\"ax-message-prefix\\\"></div>\\n <div>\\n <div class=\\\"ax-message-suffix\\\"></div>\\n <span>\\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\\n </span>\\n <span>\\n @if (isOwn) {\\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\\n <i class=\\\"ax-icon ax-icon-check ax-message-status\\\"></i>\\n }\\n @if (chatMessage().readTime && chatMessage().sendTime) {\\n <i class=\\\"ax-icon ax-icon-dobble-check ax-message-status\\\"></i>\\n }\\n }\\n </span>\\n </div>\\n </div>\\n</div>\\n\\n@if (!chatMessage().sendTime) {\\n <ax-button class=\\\"ax-resend-button ax-xs\\\" color=\\\"danger\\\" #b>\\n <ax-icon class=\\\"ax-icon ax-icon-error\\\"></ax-icon>\\n\\n <ax-popover [target]=\\\"b\\\" placement=\\\"bottom-end\\\" #popover>\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-content> </ax-content>\\n <ax-button-item-list>\\n @if (chatMessage().onResendClick) {\\n <ax-button-item text=\\\"Resend\\\" (onClick)=\\\"handleResendClick()\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-reload ax-bold\\\"></ax-icon>\\n </ax-button-item>\\n }\\n @if (chatMessage().onDeleteClick) {\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (onClick)=\\\"handleDeleteClick()\\\">\\n <ax-icon class=\\\"ax-icon ax-icon-clear ax-bold\\\"></ax-icon>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </div>\\n </ax-popover>\\n </ax-button>\\n}\\n\\n@if (!isOwn && isReplyArrowShown()) {\\n <i (click)=\\\"replyHandler(chatMessage())\\\" class=\\\"fa-solid fa-reply ax-rotate ax-cursor-pointer\\\"></i>\\n}\\n\", styles: [\"ax-conversation-message{display:flex;align-items:flex-end;margin:.5rem}ax-conversation-message .ax-message-reply-container{padding:.75rem}ax-conversation-message .ax-message-reply-container,ax-conversation-message .ax-image-reply-container,ax-conversation-message .ax-video-reply-container{border-left:.3rem solid rgb(var(--ax-comp-conversation-border-color));border-radius:.75rem;margin-bottom:.25rem;overflow:hidden}ax-conversation-message .ax-message-reply-container .file,ax-conversation-message .ax-image-reply-container .file,ax-conversation-message .ax-video-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i,ax-conversation-message .ax-image-reply-container .file i,ax-conversation-message .ax-video-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video,ax-conversation-message .ax-image-reply-container img,ax-conversation-message .ax-image-reply-container video,ax-conversation-message .ax-video-reply-container img,ax-conversation-message .ax-video-reply-container video{max-width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-own-color-fore));color:rgb(var(--ax-comp-conversation-own-color))}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-own-reply-color));color:rgb(var(--ax-comp-conversation-own-reply-color-fore))}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-other-color-fore));color:rgb(var(--ax-comp-conversation-other-color))}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-other-reply-color));color:rgb(var(--ax-comp-conversation-other-reply-color-fore))}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgb(var(--ax-sys-color-danger-surface));color:rgb(var(--ax-sys-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:flex;flex-direction:column;gap:.25rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:var(--ax-sys-border-radius);overflow:hidden;width:fit-content;max-width:50%;margin-inline-start:.5rem}ax-conversation-message .ax-message-content .ax-action-button{display:grid;grid-template-columns:repeat(2,1fr)}ax-conversation-message .ax-message-content .ax-action-button .ax-message-user-name{justify-self:start;grid-column:1}ax-conversation-message .ax-message-content .ax-action-button .ax-message-action-button{justify-self:end;grid-column:2}ax-conversation-message .ax-message-content .ax-action-button ax-menu.ax-action-list-horizontal{min-width:0;gap:0}ax-conversation-message .ax-message-content .ax-action-button .ax-parent-menu-item{height:auto!important;padding:0!important}ax-conversation-message .ax-message-content.ax-type-video{padding:0}ax-conversation-message .ax-message-content.ax-type-image{padding:0}ax-conversation-message .ax-message-content .ax-chat-message-status{padding:.25rem .5rem}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:rgb(var(--ax-comp-conversation-own-color));color:rgb(var(--ax-comp-conversation-own-color-fore));justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-own-color-fore))}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:rgb(var(--ax-comp-conversation-other-color));color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:rgb(var(--ax-comp-conversation-status-color))}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgb(var(--ax-sys-color-danger-surface))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-sys-color-on-primary))}ax-conversation-message .ax-rotate{transform:scaleX(-1);margin-inline-start:.5rem}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\\n\"] }]\n }], propDecorators: { __hostClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZS9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlL2NvbnZlcnNhdGlvbi1tZXNzYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQThCLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUNMLFNBQVMsRUFFVCxXQUFXLEVBRVgsaUJBQWlCLEVBQ2pC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RCxJQUNJLFdBQVc7UUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDdEYsQ0FBQzs4R0F2R1UsOEJBQThCO2tHQUE5Qiw4QkFBOEIsaW9CQUY5QixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsQ0FBQyxxS0N2RHBGLG9xSEF3R0EsbW5MRDlESSxpQkFBaUIsMkhBQ2pCLGVBQWUsaUpBQ2YsaUJBQWlCLDJVQUNqQix3QkFBd0Isc0VBQ3hCLGtCQUFrQixvU0FDbEIsMkJBQTJCLHlMQUMzQix5QkFBeUIsNkdBQ3pCLHFCQUFxQixxTUFHckIsWUFBWSxxVkFDWixZQUFZLGlNQUhaLFNBQVMseUNBQ1QsWUFBWTs7MkZBTUgsOEJBQThCO2tCQXJCMUMsU0FBUzsrQkFDRSx5QkFBeUIsaUJBR3BCLGlCQUFpQixDQUFDLElBQUksV0FDNUI7d0JBQ1AsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0IseUJBQXlCO3dCQUN6QixxQkFBcUI7d0JBQ3JCLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFlBQVk7cUJBQ2IsYUFDVSxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLGdDQUFnQyxFQUFFLENBQUM7OEJBdUc5RSxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2xpY2tFdmVudCwgQVhDb21wb25lbnQsIE1YQmFzZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhCdXR0b25Db21wb25lbnQsIEFYQnV0dG9uSXRlbUNvbXBvbmVudCwgQVhCdXR0b25JdGVtTGlzdENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LCBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWE1lbnVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXQsIENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmLCBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWENvbnZlcnNhdGlvbk1lbnVPcGVuaW5nRXZlbnQsXG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZSxcbiAgQVhDb252ZXJzYXRpb25NZXNzYWdlQWN0aW9uLFxufSBmcm9tICcuLi9jb252ZXJzYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZVJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXR5cGUtcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb252ZXJzYXRpb24uc2VydmljZSc7XG5cbi8qKlxuICogQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgaW5kaXZpZHVhbCBjb252ZXJzYXRpb24gbWVzc2FnZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udmVyc2F0aW9uLW1lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgQVhBdmF0YXJDb21wb25lbnQsXG4gICAgQ2RrUG9ydGFsT3V0bGV0LFxuICAgIEFYQnV0dG9uQ29tcG9uZW50LFxuICAgIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCxcbiAgICBBWFBvcG92ZXJDb21wb25lbnQsXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYQnV0dG9uSXRlbUxpc3RDb21wb25lbnQsXG4gICAgQVhCdXR0b25JdGVtQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWEZvcm1hdFBpcGUsXG4gICAgQVhNZW51TW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29udmVyc2F0aW9uTWVzc2FnZUNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25NZXNzYWdlQ29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHBvcG92ZXIgPSB2aWV3Q2hpbGQ8QVhQb3BvdmVyQ29tcG9uZW50PigncG9wb3ZlcicpO1xuXG4gIHJlYWRvbmx5IGlzUmVwbHlBcnJvd1Nob3duID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IGNoYXRNZXNzYWdlID0gaW5wdXQ8QVhDb252ZXJzYXRpb25NZXNzYWdlPigpO1xuICByZWFkb25seSBhdmF0YXIgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PihudWxsKTtcblxuICBwcm90ZWN0ZWQgY29udmVyc2F0aW9uU2VydmljZSA9IGluamVjdChBWENvbnZlcnNhdGlvblNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVnaXN0cnlTZXJ2aWNlID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVSZWdpc3RyeVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBhY3Rpb25CdXR0b25JdGVtc1ByaXZhdGUgPSBzaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlQWN0aW9uW10+KFtdKTtcbiAgcHJpdmF0ZSBhY3Rpb25CdXR0b25JdGVtc1B1YmxpYzogQVhDb252ZXJzYXRpb25NZW51T3BlbmluZ0V2ZW50ID0ge1xuICAgIGl0ZW1zOiBbXSxcbiAgICBjYW5jZWxlZDogZmFsc2UsXG4gICAgZGF0YTogdGhpcy5jaGF0TWVzc2FnZSgpLFxuICB9O1xuXG4gIG9uQWN0aW9uTWVudU9wZW5pbmcgPSBvdXRwdXQ8QVhDb252ZXJzYXRpb25NZW51T3BlbmluZ0V2ZW50PigpO1xuXG4gIG9uUmVwbHlDbGljayA9IG91dHB1dDxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIHBvcnRhbCA9IGNvbXB1dGVkPENvbXBvbmVudFBvcnRhbDxhbnk+IHwgbnVsbD4oKCkgPT4ge1xuICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMucmVnaXN0cnlTZXJ2aWNlLnJlc29sdmUodGhpcy5jaGF0TWVzc2FnZSgpLnR5cGUpLmNvbXBvbmVudCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBtZXNzYWdlVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jaGF0TWVzc2FnZSgpLnR5cGU7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBnZXQgaXNPd24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmNoYXRNZXNzYWdlKCkuZnJvbUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGFjdGlvbiBidXR0b24gY2xpY2sgYW5kIG9wZW5zIHRoZSBhY3Rpb24gbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVBY3Rpb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbkJ1dHRvbkl0ZW1zUHVibGljID0ge1xuICAgICAgaXRlbXM6IFtdLFxuICAgICAgY2FuY2VsZWQ6IGZhbHNlLFxuICAgICAgZGF0YTogdGhpcy5jaGF0TWVzc2FnZSgpLFxuICAgIH07XG5cbiAgICB0aGlzLm9uQWN0aW9uTWVudU9wZW5pbmcuZW1pdCh0aGlzLmFjdGlvbkJ1dHRvbkl0ZW1zUHVibGljKTtcblxuICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbkl0ZW1zUHVibGljLmNhbmNlbGVkKSByZXR1cm47XG5cbiAgICB0aGlzLmFjdGlvbkJ1dHRvbkl0ZW1zUHJpdmF0ZS5zZXQodGhpcy5hY3Rpb25CdXR0b25JdGVtc1B1YmxpYy5pdGVtcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZUF0dGFjaGVkKHJlZjogQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYpIHtcbiAgICByZWYgPSByZWYgYXMgQ29tcG9uZW50UmVmPHVua25vd24+O1xuICAgIGlmIChyZWYuaW5zdGFuY2UgJiYgaXNCcm93c2VyKCkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVmLmluc3RhbmNlLCB7IG1lc3NhZ2U6IHRoaXMuY2hhdE1lc3NhZ2UoKSB9KTtcblxuICAgICAgY29uc3QgcHJlZml4Q29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1tZXNzYWdlLXByZWZpeCcpO1xuICAgICAgY29uc3Qgc3VmZml4Q29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1tZXNzYWdlLXN1ZmZpeCcpO1xuICAgICAgcHJlZml4Q29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgICAgc3VmZml4Q29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuXG4gICAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignYXgtcHJlZml4JykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBjb25zdCBzdWZmaXggPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignYXgtc3VmZml4JykgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgICAgIGlmIChwcmVmaXggJiYgcHJlZml4Q29udGFpbmVyKSB7XG4gICAgICAgIHByZWZpeC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBwcmVmaXhDb250YWluZXIuYXBwZW5kKHByZWZpeCk7XG4gICAgICB9XG4gICAgICBpZiAoc3VmZml4ICYmIHN1ZmZpeENvbnRhaW5lcikge1xuICAgICAgICBzdWZmaXguc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgc3VmZml4Q29udGFpbmVyLmFwcGVuZChzdWZmaXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSByZXNlbmQgYnV0dG9uIGNsaWNrIGFuZCBjbG9zZXMgdGhlIHBvcG92ZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUmVzZW5kQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyKCk/LmNsb3NlKCk7XG4gICAgdGhpcy5jaGF0TWVzc2FnZSgpLm9uUmVzZW5kQ2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBkZWxldGUgYnV0dG9uIGNsaWNrIGFuZCBjbG9zZXMgdGhlIHBvcG92ZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRGVsZXRlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyKCk/LmNsb3NlKCk7XG4gICAgdGhpcy5jaGF0TWVzc2FnZSgpLm9uRGVsZXRlQ2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHJlcGx5IGZ1bmN0aW9uYWxpdHkgYnkgc2V0dGluZyB0aGUgcmVwbHkgSUQgYW5kIGVtaXR0aW5nIHRoZSByZXBseSBjbGljayBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIGUgLSBUaGUgY29udmVyc2F0aW9uIG1lc3NhZ2UgdG8gcmVwbHkgdG8uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVwbHlIYW5kbGVyKGU6IEFYQ29udmVyc2F0aW9uTWVzc2FnZSk6IHZvaWQge1xuICAgIHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5yZXBseUlkLnNldChlLmlkKTtcbiAgICB0aGlzLm9uUmVwbHlDbGljay5lbWl0KHsgZGF0YTogZSwgY29tcG9uZW50OiB0aGlzIH0pO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmlzT3duID8gJ2F4LXN0YXRlLW93bicgOiAnJ30gJHshdGhpcy5pc093biA/ICdheC1zdGF0ZS1vdGhlcicgOiAnJ31gO1xuICB9XG59XG4iLCJAaWYgKGNoYXRNZXNzYWdlKCkuZnJvbUlkKSB7XG4gIEBpZiAoYXZhdGFyKCkpIHtcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF2YXRhcigpXCI+PC9uZy1jb250YWluZXI+XG4gIH0gQGVsc2Uge1xuICAgIDxheC1hdmF0YXIgY29sb3I9XCJwcmltYXJ5XCIgW3NpemVdPVwiMzZcIj4gPC9heC1hdmF0YXI+XG4gIH1cbn1cblxuQGlmIChpc093biAmJiBpc1JlcGx5QXJyb3dTaG93bigpKSB7XG4gIDxpIChjbGljayk9XCJyZXBseUhhbmRsZXIoY2hhdE1lc3NhZ2UoKSlcIiBjbGFzcz1cImZhLXNvbGlkIGZhLXJlcGx5IGF4LWN1cnNvci1wb2ludGVyXCI+PC9pPlxufVxuXG48ZGl2XG4gIGNsYXNzPVwiYXgtbWVzc2FnZS1jb250ZW50XCJcbiAgW2NsYXNzXT1cIidheC10eXBlLScgKyBtZXNzYWdlVHlwZSgpXCJcbiAgW2NsYXNzLmF4LXN0YXRlLW93bl09XCIhY2hhdE1lc3NhZ2UoKS5mcm9tSWRcIlxuICBbY2xhc3MuYXgtc3RhdGUtb3RoZXJdPVwiY2hhdE1lc3NhZ2UoKS5mcm9tSWRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiYXgtYWN0aW9uLWJ1dHRvblwiPlxuICAgIEBpZiAoY2hhdE1lc3NhZ2UoKT8udXNlck5hbWUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1tZXNzYWdlLXVzZXItbmFtZVwiPlxuICAgICAgICA8YXgtdGV4dD57eyBjaGF0TWVzc2FnZSgpLnVzZXJOYW1lIH19PC9heC10ZXh0PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChjaGF0TWVzc2FnZSgpPy5zaG93QWN0aW9uQnV0dG9uKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1hY3Rpb24tYnV0dG9uXCI+XG4gICAgICAgIDxheC1tZW51IG9wZW5Pbj1cImNsaWNrXCIgW2hhc0Fycm93XT1cImZhbHNlXCI+XG4gICAgICAgICAgPGF4LW1lbnUtaXRlbSBjbGFzcz1cImF4LXBhcmVudC1tZW51LWl0ZW1cIj5cbiAgICAgICAgICAgIDxheC10ZXh0IChjbGljayk9XCJoYW5kbGVBY3Rpb25DbGljaygpXCI+Li4uPC9heC10ZXh0PlxuXG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGFjdGlvbkJ1dHRvbkl0ZW1zUHJpdmF0ZSgpOyB0cmFjayBpdGVtLnRleHQpIHtcbiAgICAgICAgICAgICAgPGF4LW1lbnUtaXRlbSBbY29sb3JdPVwiaXRlbS5jb2xvclwiIChvbkNsaWNrKT1cIml0ZW0ub25DbGljayhjaGF0TWVzc2FnZSgpLmlkKVwiPlxuICAgICAgICAgICAgICAgIDxheC10ZXh0Pnt7IGl0ZW0udGV4dCB9fTwvYXgtdGV4dD5cbiAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwiaXRlbS5pY29uXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuXG4gICAgICAgICAgICAgICAgQGZvciAoaW5uZXJJdGVtIG9mIGl0ZW0uaXRlbXM7IHRyYWNrIGlubmVySXRlbS50ZXh0KSB7XG4gICAgICAgICAgICAgICAgICA8YXgtbWVudS1pdGVtIFtjb2xvcl09XCJpbm5lckl0ZW0uY29sb3JcIiAob25DbGljayk9XCJpbm5lckl0ZW0ub25DbGljayhjaGF0TWVzc2FnZSgpLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtdGV4dD57eyBpbm5lckl0ZW0udGV4dCB9fTwvYXgtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJpbm5lckl0ZW0uaWNvblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvYXgtbWVudS1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtbWVudS1pdGVtPlxuICAgICAgICA8L2F4LW1lbnU+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInBvcnRhbCgpXCIgKGF0dGFjaGVkKT1cIl9oYW5kbGVBdHRhY2hlZCgkZXZlbnQpXCI+PC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2IGNsYXNzPVwiYXgtY2hhdC1tZXNzYWdlLXN0YXR1c1wiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1tZXNzYWdlLXByZWZpeFwiPjwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1zdWZmaXhcIj48L2Rpdj5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7eyBjaGF0TWVzc2FnZSgpLnNlbmRUaW1lIHwgZm9ybWF0OiAnZGF0ZXRpbWUnIDogJ0hIOm1tJyB8IGFzeW5jIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3Bhbj5cbiAgICAgICAgQGlmIChpc093bikge1xuICAgICAgICAgIEBpZiAoY2hhdE1lc3NhZ2UoKS5kZWxpdmVyVGltZSAmJiBjaGF0TWVzc2FnZSgpLnNlbmRUaW1lKSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGVjayBheC1tZXNzYWdlLXN0YXR1c1wiPjwvaT5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjaGF0TWVzc2FnZSgpLnJlYWRUaW1lICYmIGNoYXRNZXNzYWdlKCkuc2VuZFRpbWUpIHtcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWRvYmJsZS1jaGVjayBheC1tZXNzYWdlLXN0YXR1c1wiPjwvaT5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuQGlmICghY2hhdE1lc3NhZ2UoKS5zZW5kVGltZSkge1xuICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtcmVzZW5kLWJ1dHRvbiBheC14c1wiIGNvbG9yPVwiZGFuZ2VyXCIgI2I+XG4gICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tZXJyb3JcIj48L2F4LWljb24+XG5cbiAgICA8YXgtcG9wb3ZlciBbdGFyZ2V0XT1cImJcIiBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCIgI3BvcG92ZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmxheS1wYW5lXCI+XG4gICAgICAgIDxheC1jb250ZW50PiA8L2F4LWNvbnRlbnQ+XG4gICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgIEBpZiAoY2hhdE1lc3NhZ2UoKS5vblJlc2VuZENsaWNrKSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIlJlc2VuZFwiIChvbkNsaWNrKT1cImhhbmRsZVJlc2VuZENsaWNrKClcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tcmVsb2FkIGF4LWJvbGRcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGNoYXRNZXNzYWdlKCkub25EZWxldGVDbGljaykge1xuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJEZWxldGVcIiBjb2xvcj1cImRhbmdlclwiIChvbkNsaWNrKT1cImhhbmRsZURlbGV0ZUNsaWNrKClcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2xlYXIgYXgtYm9sZFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LXBvcG92ZXI+XG4gIDwvYXgtYnV0dG9uPlxufVxuXG5AaWYgKCFpc093biAmJiBpc1JlcGx5QXJyb3dTaG93bigpKSB7XG4gIDxpIChjbGljayk9XCJyZXBseUhhbmRsZXIoY2hhdE1lc3NhZ2UoKSlcIiBjbGFzcz1cImZhLXNvbGlkIGZhLXJlcGx5IGF4LXJvdGF0ZSBheC1jdXJzb3ItcG9pbnRlclwiPjwvaT5cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXConversationMessageAction {\n}\nexport class AXConversationMenuOpeningEvent {\n constructor() {\n this.canceled = false;\n }\n}\nexport class AXConversationMessageBaseComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageBaseComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageBaseComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQzs7QUEyQmpELE1BQU0sT0FBZ0IsMkJBQTJCO0NBTWhEO0FBRUQsTUFBTSxPQUFPLDhCQUE4QjtJQUEzQztRQUVFLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFFbkIsQ0FBQztDQUFBO0FBR0QsTUFBTSxPQUFPLGtDQUFrQzs4R0FBbEMsa0NBQWtDO2tIQUFsQyxrQ0FBa0M7OzJGQUFsQyxrQ0FBa0M7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFN0eWxlQ29sb3JUeXBlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWENvbnZlcnNhdGlvbk1lc3NhZ2VUeXBlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb21wb25lbnQ6IFR5cGU8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWENvbnZlcnNhdGlvbk1lc3NhZ2Uge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIHNlbmRUaW1lOiBEYXRlIHwgbnVsbDtcbiAgZGVsaXZlclRpbWU/OiBEYXRlO1xuICByZWFkVGltZT86IERhdGU7XG4gIHJlcGx5VG8/OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgfTtcbiAgY29udGVudDogYW55O1xuICBmcm9tSWQ/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb25SZXNlbmRDbGljaz86ICgpID0+IHZvaWQ7XG4gIG9uRGVsZXRlQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBvbkRvd25sb2FkQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbENsaWNrPzogKCkgPT4gdm9pZDtcbiAgc2hvd0FjdGlvbkJ1dHRvbj86IGJvb2xlYW47XG4gIHVzZXJOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhDb252ZXJzYXRpb25NZXNzYWdlQWN0aW9uIHtcbiAgY29sb3I/OiBBWFN0eWxlQ29sb3JUeXBlO1xuICB0ZXh0OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIG9uQ2xpY2s6IChpZDogc3RyaW5nKSA9PiB2b2lkO1xuICBpdGVtcz86IEFYQ29udmVyc2F0aW9uTWVzc2FnZUFjdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25NZW51T3BlbmluZ0V2ZW50IHtcbiAgaXRlbXM6IEFYQ29udmVyc2F0aW9uTWVzc2FnZUFjdGlvbltdO1xuICBjYW5jZWxlZCA9IGZhbHNlO1xuICBkYXRhOiBBWENvbnZlcnNhdGlvbk1lc3NhZ2U7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50IHtcbiAgbWVzc2FnZTogQVhDb252ZXJzYXRpb25NZXNzYWdlO1xufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXRangeSliderComponent } from '@acorex/components/range-slider';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, Renderer2, ViewEncapsulation, afterNextRender, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * Component for displaying audio messages in a conversation.\n *\n * @category Components\n */\nexport class AXConversationMessageAudioComponent extends AXConversationMessageBaseComponent {\n /**\n * @ignore\n */\n constructor() {\n super();\n this.render = inject(Renderer2);\n /**\n * @ignore\n */\n this.audioState = signal('paused', ...(ngDevMode ? [{ debugName: \"audioState\" }] : []));\n /**\n * @ignore\n */\n // audioTag = viewChild<ElementRef<HTMLAudioElement>>('a');\n this.audioTag = signal(new Audio(), ...(ngDevMode ? [{ debugName: \"audioTag\" }] : []));\n /**\n * @ignore\n */\n this.audioRate = signal(1, ...(ngDevMode ? [{ debugName: \"audioRate\" }] : []));\n /**\n * @ignore\n */\n this.currentTime = signal(0, ...(ngDevMode ? [{ debugName: \"currentTime\" }] : []));\n /**\n * @ignore\n */\n this.duration = signal(0, ...(ngDevMode ? [{ debugName: \"duration\" }] : []));\n /**\n * @ignore\n */\n this.currentTimeFormat = signal(0, ...(ngDevMode ? [{ debugName: \"currentTimeFormat\" }] : []));\n /**\n * @ignore\n */\n this.durationFormat = signal(0, ...(ngDevMode ? [{ debugName: \"durationFormat\" }] : []));\n afterNextRender(() => {\n this.audioTag().autoplay = false;\n this.audioTag().src = this.message.content;\n this.render.listen(this.audioTag(), 'ended', this.endedFunction.bind(this));\n this.render.listen(this.audioTag(), 'durationchange', this.durationchangeFunction.bind(this));\n this.render.listen(this.audioTag(), 'timeupdate', this.timeupdateFunction.bind(this));\n });\n }\n /**\n * @ignore\n */\n ngOnDestroy() {\n if (this.endedEvent) {\n this.endedEvent();\n }\n if (this.durationchangeEvent) {\n this.durationchangeEvent();\n }\n if (this.timeupdateEvent) {\n this.timeupdateEvent();\n }\n }\n /**\n * @ignore\n */\n endedFunction() {\n this.audioState.set('paused');\n this.audioTag().pause();\n this.audioTag().currentTime = 0;\n this.currentTime.set(0);\n }\n /**\n * @ignore\n */\n durationchangeFunction() {\n if (this.audioTag().duration === Infinity)\n return;\n this.duration.set(this.audioTag().duration);\n this.durationFormat.set(Math.ceil(this.audioTag().duration) * 1000);\n }\n /**\n * @ignore\n */\n timeupdateFunction() {\n this.currentTime.set(this.audioTag().currentTime);\n this.currentTimeFormat.set(Math.ceil(this.audioTag().currentTime * 1000));\n }\n /**\n * Seeks to the specified time and resumes audio playback.\n *\n * @param e - Time in seconds to seek to.\n * @ignore\n */\n clickHandler(e) {\n this.audioTag().currentTime = e;\n }\n /**\n * Pauses the audio and updates the state to 'paused'.\n * @ignore\n */\n handlePauseClick() {\n this.audioState.set('paused');\n this.audioTag().pause();\n }\n /**\n * Plays the audio and updates the state to 'playing'.\\\n * @ignore\n */\n handlePlayClick() {\n this.audioState.set('playing');\n this.audioTag().play();\n }\n /**\n * Toggles the playback rate of the audio between 1x, 1.5x, and 2x.\n * @ignore\n */\n handleRateClick() {\n if (this.audioRate() === 1) {\n this.audioRate.set(1.5);\n this.audioTag().playbackRate = 1.5;\n }\n else if (this.audioRate() === 1.5) {\n this.audioRate.set(2);\n this.audioTag().playbackRate = 2;\n }\n else if (this.audioRate() === 2) {\n this.audioRate.set(1);\n this.audioTag().playbackRate = 1;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXConversationMessageAudioComponent, isStandalone: true, selector: \"ax-conversation-message-audio\", providers: [{ provide: AXComponent, useExisting: AXConversationMessageAudioComponent }], usesInheritance: true, ngImport: i0, template: \"<ax-prefix>\\n <div class=\\\"ax-time-rate\\\">\\n @switch (audioState()) {\\n @case ('paused') {\\n {{ currentTimeFormat() | format: 'time-duration' | async }}\\n }\\n @case ('playing') {\\n {{ currentTimeFormat() | format: 'time-duration' | async }}\\n }\\n @default {\\n {{ durationFormat() | format: 'time-duration' | async }}\\n }\\n }\\n <ax-button\\n color=\\\"primary\\\"\\n look=\\\"solid\\\"\\n text=\\\"{{ audioRate() }}X\\\"\\n class=\\\"ax-audio-speed\\\"\\n (click)=\\\"handleRateClick()\\\"\\n ></ax-button>\\n </div>\\n</ax-prefix>\\n<div class=\\\"ax-conversation-controller\\\">\\n @switch (audioState()) {\\n @case ('playing') {\\n <button (click)=\\\"handlePauseClick()\\\">\\n <i class=\\\"ax-icon ax-icon-pause\\\"></i>\\n </button>\\n }\\n @case ('paused') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n }\\n</div>\\n<ax-range-slider\\n class=\\\"ax-modify-bgSlider\\\"\\n (ngModelChange)=\\\"clickHandler($event)\\\"\\n [max]=\\\"duration()\\\"\\n [min]=\\\"0\\\"\\n mode=\\\"single\\\"\\n [ngModel]=\\\"currentTime()\\\"\\n color=\\\"primary\\\"\\n>\\n</ax-range-slider>\\n\", styles: [\"ax-conversation-message-audio{display:flex}ax-conversation-message-audio .ax-time-rate .ax-audio-speed{margin-inline-start:.3rem;border-radius:.2rem;min-width:2rem}ax-conversation-message-audio .ax-modify-bgSlider{width:14rem;margin:0 1rem;padding:0}.ax-time-rate{display:flex;align-items:center}.ax-audio-speed{--ax-comp-button-font-size: .6rem;--ax-comp-button-padding-x: .1rem;--ax-comp-button-padding-y: .1rem;--ax-comp-button-height: auto;--ax-comp-button-text-padding-x: .5rem;margin-inline-start:.5rem}\\n\"], dependencies: [{ kind: \"component\", type: 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: \"component\", type: 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: AXRangeSliderComponent, selector: \"ax-range-slider\", inputs: [\"disabled\", \"readonly\", \"orientation\", \"color\", \"values\", \"mode\", \"min\", \"max\", \"step\", \"snap\", \"tooltipMode\", \"snapMode\", \"hasStep\", \"hasSnap\", \"hasLable\", \"hasTooltip\"], outputs: [\"valuesChange\"] }, { 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: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageAudioComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, imports: [\n AXDecoratorGenericComponent,\n AXButtonComponent,\n AXRangeSliderComponent,\n FormsModule,\n AsyncPipe,\n AXFormatPipe,\n ], providers: [{ provide: AXComponent, useExisting: AXConversationMessageAudioComponent }], template: \"<ax-prefix>\\n <div class=\\\"ax-time-rate\\\">\\n @switch (audioState()) {\\n @case ('paused') {\\n {{ currentTimeFormat() | format: 'time-duration' | async }}\\n }\\n @case ('playing') {\\n {{ currentTimeFormat() | format: 'time-duration' | async }}\\n }\\n @default {\\n {{ durationFormat() | format: 'time-duration' | async }}\\n }\\n }\\n <ax-button\\n color=\\\"primary\\\"\\n look=\\\"solid\\\"\\n text=\\\"{{ audioRate() }}X\\\"\\n class=\\\"ax-audio-speed\\\"\\n (click)=\\\"handleRateClick()\\\"\\n ></ax-button>\\n </div>\\n</ax-prefix>\\n<div class=\\\"ax-conversation-controller\\\">\\n @switch (audioState()) {\\n @case ('playing') {\\n <button (click)=\\\"handlePauseClick()\\\">\\n <i class=\\\"ax-icon ax-icon-pause\\\"></i>\\n </button>\\n }\\n @case ('paused') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n }\\n</div>\\n<ax-range-slider\\n class=\\\"ax-modify-bgSlider\\\"\\n (ngModelChange)=\\\"clickHandler($event)\\\"\\n [max]=\\\"duration()\\\"\\n [min]=\\\"0\\\"\\n mode=\\\"single\\\"\\n [ngModel]=\\\"currentTime()\\\"\\n color=\\\"primary\\\"\\n>\\n</ax-range-slider>\\n\", styles: [\"ax-conversation-message-audio{display:flex}ax-conversation-message-audio .ax-time-rate .ax-audio-speed{margin-inline-start:.3rem;border-radius:.2rem;min-width:2rem}ax-conversation-message-audio .ax-modify-bgSlider{width:14rem;margin:0 1rem;padding:0}.ax-time-rate{display:flex;align-items:center}.ax-audio-speed{--ax-comp-button-font-size: .6rem;--ax-comp-button-padding-x: .1rem;--ax-comp-button-padding-y: .1rem;--ax-comp-button-height: auto;--ax-comp-button-text-padding-x: .5rem;margin-inline-start:.5rem}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8vY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8vY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBYSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFFOUU7Ozs7R0FJRztBQWdCSCxNQUFNLE9B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QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7OEdBdkpVLG1DQUFtQztrR0FBbkMsbUNBQW1DLDRFQUZuQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQyxpREM1QnpGLDJxQ0E4Q0EseWpCRHpCSSwyQkFBMkIseUxBQzNCLGlCQUFpQiwyVUFDakIsc0JBQXNCLDJRQUN0QixXQUFXLDBWQUNYLFNBQVMseUNBQ1QsWUFBWTs7MkZBSUgsbUNBQW1DO2tCQWYvQyxTQUFTOytCQUNFLCtCQUErQixpQkFHMUIsaUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDUCwyQkFBMkI7d0JBQzNCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QixXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsWUFBWTtxQkFDYixhQUNVLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcscUNBQXFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3JhbmdlLXNsaWRlcic7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBWaWV3RW5jYXBzdWxhdGlvbiwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLnR5cGVzJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYXVkaW8gbWVzc2FnZXMgaW4gYSBjb252ZXJzYXRpb24uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udmVyc2F0aW9uLW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYQnV0dG9uQ29tcG9uZW50LFxuICAgIEFYUmFuZ2VTbGlkZXJDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIEFYRm9ybWF0UGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29udmVyc2F0aW9uTWVzc2FnZUF1ZGlvQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBdWRpb0NvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlbmRlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhdWRpb1N0YXRlID0gc2lnbmFsPCdwbGF5aW5nJyB8ICdwYXVzZWQnPigncGF1c2VkJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICAvLyBhdWRpb1RhZyA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxBdWRpb0VsZW1lbnQ+PignYScpO1xuICBwcm90ZWN0ZWQgYXVkaW9UYWcgPSBzaWduYWwobmV3IEF1ZGlvKCkpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGF1ZGlvUmF0ZSA9IHNpZ25hbCgxKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjdXJyZW50VGltZSA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBkdXJhdGlvbiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjdXJyZW50VGltZUZvcm1hdCA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBkdXJhdGlvbkZvcm1hdCA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBlbmRlZEV2ZW50O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGR1cmF0aW9uY2hhbmdlRXZlbnQ7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgdGltZXVwZGF0ZUV2ZW50O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgdGhpcy5hdWRpb1RhZygpLmF1dG9wbGF5ID0gZmFsc2U7XG4gICAgICB0aGlzLmF1ZGlvVGFnKCkuc3JjID0gdGhpcy5tZXNzYWdlLmNvbnRlbnQ7XG4gICAgICB0aGlzLnJlbmRlci5saXN0ZW4odGhpcy5hdWRpb1RhZygpLCAnZW5kZWQnLCB0aGlzLmVuZGVkRnVuY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLnJlbmRlci5saXN0ZW4odGhpcy5hdWRpb1RhZygpLCAnZHVyYXRpb25jaGFuZ2UnLCB0aGlzLmR1cmF0aW9uY2hhbmdlRnVuY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLnJlbmRlci5saXN0ZW4odGhpcy5hdWRpb1RhZygpLCAndGltZXVwZGF0ZScsIHRoaXMudGltZXVwZGF0ZUZ1bmN0aW9uLmJpbmQodGhpcykpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbmRlZEV2ZW50KSB7XG4gICAgICB0aGlzLmVuZGVkRXZlbnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHVyYXRpb25jaGFuZ2VFdmVudCkge1xuICAgICAgdGhpcy5kdXJhdGlvbmNoYW5nZUV2ZW50KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRpbWV1cGRhdGVFdmVudCkge1xuICAgICAgdGhpcy50aW1ldXBkYXRlRXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBlbmRlZEZ1bmN0aW9uKCkge1xuICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BhdXNlZCcpO1xuICAgIHRoaXMuYXVkaW9UYWcoKS5wYXVzZSgpO1xuICAgIHRoaXMuYXVkaW9UYWcoKS5jdXJyZW50VGltZSA9IDA7XG4gICAgdGhpcy5jdXJyZW50VGltZS5zZXQoMCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBkdXJhdGlvbmNoYW5nZUZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmF1ZGlvVGFnKCkuZHVyYXRpb24gPT09IEluZmluaXR5KSByZXR1cm47XG4gICAgdGhpcy5kdXJhdGlvbi5zZXQodGhpcy5hdWRpb1RhZygpLmR1cmF0aW9uKTtcbiAgICB0aGlzLmR1cmF0aW9uRm9ybWF0LnNldChNYXRoLmNlaWwodGhpcy5hdWRpb1RhZygpLmR1cmF0aW9uKSAqIDEwMDApO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgdGltZXVwZGF0ZUZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudFRpbWUuc2V0KHRoaXMuYXVkaW9UYWcoKS5jdXJyZW50VGltZSk7XG4gICAgdGhpcy5jdXJyZW50VGltZUZvcm1hdC5zZXQoTWF0aC5jZWlsKHRoaXMuYXVkaW9UYWcoKS5jdXJyZW50VGltZSAqIDEwMDApKTtcbiAgfVxuICAvKipcbiAgICogU2Vla3MgdG8gdGhlIHNwZWNpZmllZCB0aW1lIGFuZCByZXN1bWVzIGF1ZGlvIHBsYXliYWNrLlxuICAgKlxuICAgKiBAcGFyYW0gZSAtIFRpbWUgaW4gc2Vjb25kcyB0byBzZWVrIHRvLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2xpY2tIYW5kbGVyKGU6IGFueSkge1xuICAgIHRoaXMuYXVkaW9UYWcoKS5jdXJyZW50VGltZSA9IGUgYXMgbnVtYmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdXNlcyB0aGUgYXVkaW8gYW5kIHVwZGF0ZXMgdGhlIHN0YXRlIHRvICdwYXVzZWQnLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUGF1c2VDbGljaygpIHtcbiAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdwYXVzZWQnKTtcbiAgICB0aGlzLmF1ZGlvVGFnKCkucGF1c2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGF5cyB0aGUgYXVkaW8gYW5kIHVwZGF0ZXMgdGhlIHN0YXRlIHRvICdwbGF5aW5nJy5cXFxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUGxheUNsaWNrKCkge1xuICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BsYXlpbmcnKTtcbiAgICB0aGlzLmF1ZGlvVGFnKCkucGxheSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHBsYXliYWNrIHJhdGUgb2YgdGhlIGF1ZGlvIGJldHdlZW4gMXgsIDEuNXgsIGFuZCAyeC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJhdGVDbGljaygpIHtcbiAgICBpZiAodGhpcy5hdWRpb1JhdGUoKSA9PT0gMSkge1xuICAgICAgdGhpcy5hdWRpb1JhdGUuc2V0KDEuNSk7XG4gICAgICB0aGlzLmF1ZGlvVGFnKCkucGxheWJhY2tSYXRlID0gMS41O1xuICAgIH0gZWxzZSBpZiAodGhpcy5hdWRpb1JhdGUoKSA9PT0gMS41KSB7XG4gICAgICB0aGlzLmF1ZGlvUmF0ZS5zZXQoMik7XG4gICAgICB0aGlzLmF1ZGlvVGFnKCkucGxheWJhY2tSYXRlID0gMjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXVkaW9SYXRlKCkgPT09IDIpIHtcbiAgICAgIHRoaXMuYXVkaW9SYXRlLnNldCgxKTtcbiAgICAgIHRoaXMuYXVkaW9UYWcoKS5wbGF5YmFja1JhdGUgPSAxO1xuICAgIH1cbiAgfVxufVxuIiwiPGF4LXByZWZpeD5cbiAgPGRpdiBjbGFzcz1cImF4LXRpbWUtcmF0ZVwiPlxuICAgIEBzd2l0Y2ggKGF1ZGlvU3RhdGUoKSkge1xuICAgICAgQGNhc2UgKCdwYXVzZWQnKSB7XG4gICAgICAgIHt7IGN1cnJlbnRUaW1lRm9ybWF0KCkgfCBmb3JtYXQ6ICd0aW1lLWR1cmF0aW9uJyB8IGFzeW5jIH19XG4gICAgICB9XG4gICAgICBAY2FzZSAoJ3BsYXlpbmcnKSB7XG4gICAgICAgIHt7IGN1cnJlbnRUaW1lRm9ybWF0KCkgfCBmb3JtYXQ6ICd0aW1lLWR1cmF0aW9uJyB8IGFzeW5jIH19XG4gICAgICB9XG4gICAgICBAZGVmYXVsdCB7XG4gICAgICAgIHt7IGR1cmF0aW9uRm9ybWF0KCkgfCBmb3JtYXQ6ICd0aW1lLWR1cmF0aW9uJyB8IGFzeW5jIH19XG4gICAgICB9XG4gICAgfVxuICAgIDxheC1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBsb29rPVwic29saWRcIlxuICAgICAgdGV4dD1cInt7IGF1ZGlvUmF0ZSgpIH19WFwiXG4gICAgICBjbGFzcz1cImF4LWF1ZGlvLXNwZWVkXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVSYXRlQ2xpY2soKVwiXG4gICAgPjwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cbjwvYXgtcHJlZml4PlxuPGRpdiBjbGFzcz1cImF4LWNvbnZlcnNhdGlvbi1jb250cm9sbGVyXCI+XG4gIEBzd2l0Y2ggKGF1ZGlvU3RhdGUoKSkge1xuICAgIEBjYXNlICgncGxheWluZycpIHtcbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZVBhdXNlQ2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1wYXVzZVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICBAY2FzZSAoJ3BhdXNlZCcpIHtcbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZVBsYXlDbGljaygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXBsYXlcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIH1cbjwvZGl2PlxuPGF4LXJhbmdlLXNsaWRlclxuICBjbGFzcz1cImF4LW1vZGlmeS1iZ1NsaWRlclwiXG4gIChuZ01vZGVsQ2hhbmdlKT1cImNsaWNrSGFuZGxlcigkZXZlbnQpXCJcbiAgW21heF09XCJkdXJhdGlvbigpXCJcbiAgW21pbl09XCIwXCJcbiAgbW9kZT1cInNpbmdsZVwiXG4gIFtuZ01vZGVsXT1cImN1cnJlbnRUaW1lKClcIlxuICBjb2xvcj1cInByaW1hcnlcIlxuPlxuPC9heC1yYW5nZS1zbGlkZXI+XG4iXX0=","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXVirtualScrollingContainerDirective, AXVirtualScrollingItemDirective } from '@acorex/cdk/virtual-scroll';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject, input, output, } from '@angular/core';\nimport { AXConversationMessageComponent } from '../conversation-message/conversation-message.component';\nimport { AXConversationService } from '../services/conversation.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Displays the conversation view with messages and interactions.\n *\n * @category Components\n */\nexport class AXConversationViewComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.conversationService = inject(AXConversationService);\n this.chatBoxHeight = input('30vh', ...(ngDevMode ? [{ debugName: \"chatBoxHeight\" }] : []));\n this.isReplyArrowShown = input(true, ...(ngDevMode ? [{ debugName: \"isReplyArrowShown\" }] : []));\n this.avatar = input(null, ...(ngDevMode ? [{ debugName: \"avatar\" }] : []));\n this.onActionMenuOpening = output();\n this.onAction = output();\n this.onReplyClick = output();\n this.onScrollEnd = output();\n }\n /**\n * Updates the previous items in the conversation by prepending new items to the beginning of the chat list.\n *\n * @param item - Array of items to prepend to the conversation.\n */\n updatePrevItems(item) {\n this.conversationService.chats.update((prev) => [...item, ...prev]);\n }\n /**\n * Calls for an update by emitting the onScrollEnd event.\n */\n callForUpdate() {\n this.onScrollEnd.emit({ component: this });\n }\n /**\n * Adds a new item to the end of the conversation chat list.\n *\n * @param item - The item to add to the conversation.\n */\n addNewItem(item) {\n this.conversationService.chats.update((prev) => [...prev, item]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXConversationViewComponent, isStandalone: true, selector: \"ax-conversation-view\", inputs: { chatBoxHeight: { classPropertyName: \"chatBoxHeight\", publicName: \"chatBoxHeight\", isSignal: true, isRequired: false, transformFunction: null }, isReplyArrowShown: { classPropertyName: \"isReplyArrowShown\", publicName: \"isReplyArrowShown\", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: \"avatar\", publicName: \"avatar\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onActionMenuOpening: \"onActionMenuOpening\", onAction: \"onAction\", onReplyClick: \"onReplyClick\", onScrollEnd: \"onScrollEnd\" }, providers: [{ provide: AXComponent, useExisting: AXConversationViewComponent }], usesInheritance: true, ngImport: i0, template: \"<div axVirtualScrollingContainer (ScrollEnd)=\\\"callForUpdate()\\\" [height]=\\\"chatBoxHeight()\\\">\\n @for (item of conversationService.chats(); track item.id) {\\n <ax-conversation-message\\n animate.enter=\\\"ax-fade-slide-in\\\"\\n (onReplyClick)=\\\"onReplyClick.emit($event)\\\"\\n [avatar]=\\\"avatar()\\\"\\n (onActionMenuOpening)=\\\"onActionMenuOpening.emit($event)\\\"\\n [isReplyArrowShown]=\\\"isReplyArrowShown()\\\"\\n axVirtualScrollingItem\\n [chatMessage]=\\\"item\\\"\\n ></ax-conversation-message>\\n }\\n</div>\\n\", styles: [\"ax-conversation-view{display:block}ax-conversation-view .ax-conversation-container{overflow-y:auto;height:100%}@keyframes fadeSlideIn{0%{opacity:0}to{opacity:1}}ax-conversation-view .ax-fade-slide-in{animation:fadeSlideIn var(--ax-sys-transition-duration) var(--ax-sys-transition-timing-function)}\\n\"], dependencies: [{ kind: \"directive\", type: AXVirtualScrollingContainerDirective, selector: \"[axVirtualScrollingContainer]\", inputs: [\"height\"], outputs: [\"ScrollEnd\"] }, { kind: \"component\", type: AXConversationMessageComponent, selector: \"ax-conversation-message\", inputs: [\"isReplyArrowShown\", \"chatMessage\", \"avatar\"], outputs: [\"onActionMenuOpening\", \"onReplyClick\"] }, { kind: \"directive\", type: AXVirtualScrollingItemDirective, selector: \"[axVirtualScrollingItem]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXVirtualScrollingContainerDirective, AXConversationMessageComponent, AXVirtualScrollingItemDirective], providers: [{ provide: AXComponent, useExisting: AXConversationViewComponent }], template: \"<div axVirtualScrollingContainer (ScrollEnd)=\\\"callForUpdate()\\\" [height]=\\\"chatBoxHeight()\\\">\\n @for (item of conversationService.chats(); track item.id) {\\n <ax-conversation-message\\n animate.enter=\\\"ax-fade-slide-in\\\"\\n (onReplyClick)=\\\"onReplyClick.emit($event)\\\"\\n [avatar]=\\\"avatar()\\\"\\n (onActionMenuOpening)=\\\"onActionMenuOpening.emit($event)\\\"\\n [isReplyArrowShown]=\\\"isReplyArrowShown()\\\"\\n axVirtualScrollingItem\\n [chatMessage]=\\\"item\\\"\\n ></ax-conversation-message>\\n }\\n</div>\\n\", styles: [\"ax-conversation-view{display:block}ax-conversation-view .ax-conversation-container{overflow-y:auto;height:100%}@keyframes fadeSlideIn{0%{opacity:0}to{opacity:1}}ax-conversation-view .ax-fade-slide-in{animation:fadeSlideIn var(--ax-sys-transition-duration) var(--ax-sys-transition-timing-function)}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tdmlldy9jb252ZXJzYXRpb24tdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi12aWV3L2NvbnZlcnNhdGlvbi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsV0FBVyxFQUFXLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25ILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUV4RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFFekU7Ozs7R0FJRztBQVVILE1BQU0sT0FBTywyQkFBNEIsU0FBUSxlQUFlO0lBVGhFOztRQVVZLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXJELGtCQUFhLEdBQUcsS0FBSyxDQUFTLE1BQU0seURBQUMsQ0FBQztRQUV0QyxzQkFBaUIsR0FBRyxLQUFLLENBQUMsSUFBSSw2REFBQyxDQUFDO1FBRWhDLFdBQU0sR0FBRyxLQUFLLENBQW1CLElBQUksa0RBQUMsQ0FBQztRQUVoRCx3QkFBbUIsR0FBRyxNQUFNLEVBQWtDLENBQUM7UUFFL0QsYUFBUSxHQUFHLE1BQU0sRUFBNkIsQ0FBQztRQUUvQyxpQkFBWSxHQUFHLE1BQU0sRUFBZ0IsQ0FBQztRQUV0QyxnQkFBVyxHQUFHLE1BQU0sRUFBVyxDQUFDO0tBMEJqQztJQXhCQzs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLElBQVc7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDOzhHQXhDVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiwrbkJBRjNCLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSwyQkFBMkIsRUFBRSxDQUFDLGlEQzVCakYseWhCQWFBLHFXRGNZLG9DQUFvQyxzSEFBRSw4QkFBOEIsOEtBQUUsK0JBQStCOzsyRkFHcEcsMkJBQTJCO2tCQVR2QyxTQUFTOytCQUNFLHNCQUFzQixtQkFHZix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsb0NBQW9DLEVBQUUsOEJBQThCLEVBQUUsK0JBQStCLENBQUMsYUFDckcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyw2QkFBNkIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDbGlja0V2ZW50LCBBWENvbXBvbmVudCwgQVhFdmVudCwgTVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYVmlydHVhbFNjcm9sbGluZ0NvbnRhaW5lckRpcmVjdGl2ZSwgQVhWaXJ0dWFsU2Nyb2xsaW5nSXRlbURpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvY2RrL3ZpcnR1YWwtc2Nyb2xsJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uQWN0aW9uRXZlbnQgfSBmcm9tICcuLi9jbGFzc2VzL2V2ZW50cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29udmVyc2F0aW9uLW1lc3NhZ2UvY29udmVyc2F0aW9uLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVudU9wZW5pbmdFdmVudCB9IGZyb20gJy4uL2NvbnZlcnNhdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb252ZXJzYXRpb24uc2VydmljZSc7XG5cbi8qKlxuICogRGlzcGxheXMgdGhlIGNvbnZlcnNhdGlvbiB2aWV3IHdpdGggbWVzc2FnZXMgYW5kIGludGVyYWN0aW9ucy5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jb252ZXJzYXRpb24tdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24tdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnZlcnNhdGlvbi12aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbQVhWaXJ0dWFsU2Nyb2xsaW5nQ29udGFpbmVyRGlyZWN0aXZlLCBBWENvbnZlcnNhdGlvbk1lc3NhZ2VDb21wb25lbnQsIEFYVmlydHVhbFNjcm9sbGluZ0l0ZW1EaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvblZpZXdDb21wb25lbnQgZXh0ZW5kcyBNWEJhc2VDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgY29udmVyc2F0aW9uU2VydmljZSA9IGluamVjdChBWENvbnZlcnNhdGlvblNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IGNoYXRCb3hIZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCczMHZoJyk7XG5cbiAgcmVhZG9ubHkgaXNSZXBseUFycm93U2hvd24gPSBpbnB1dCh0cnVlKTtcblxuICByZWFkb25seSBhdmF0YXIgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PihudWxsKTtcblxuICBvbkFjdGlvbk1lbnVPcGVuaW5nID0gb3V0cHV0PEFYQ29udmVyc2F0aW9uTWVudU9wZW5pbmdFdmVudD4oKTtcblxuICBvbkFjdGlvbiA9IG91dHB1dDxBWENvbnZlcnNhdGlvbkFjdGlvbkV2ZW50PigpO1xuXG4gIG9uUmVwbHlDbGljayA9IG91dHB1dDxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgb25TY3JvbGxFbmQgPSBvdXRwdXQ8QVhFdmVudD4oKTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcHJldmlvdXMgaXRlbXMgaW4gdGhlIGNvbnZlcnNhdGlvbiBieSBwcmVwZW5kaW5nIG5ldyBpdGVtcyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjaGF0IGxpc3QuXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIC0gQXJyYXkgb2YgaXRlbXMgdG8gcHJlcGVuZCB0byB0aGUgY29udmVyc2F0aW9uLlxuICAgKi9cbiAgdXBkYXRlUHJldkl0ZW1zKGl0ZW06IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzLnVwZGF0ZSgocHJldikgPT4gWy4uLml0ZW0sIC4uLnByZXZdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBmb3IgYW4gdXBkYXRlIGJ5IGVtaXR0aW5nIHRoZSBvblNjcm9sbEVuZCBldmVudC5cbiAgICovXG4gIGNhbGxGb3JVcGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5vblNjcm9sbEVuZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBjb252ZXJzYXRpb24gY2hhdCBsaXN0LlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBpdGVtIHRvIGFkZCB0byB0aGUgY29udmVyc2F0aW9uLlxuICAgKi9cbiAgYWRkTmV3SXRlbShpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMudXBkYXRlKChwcmV2KSA9PiBbLi4ucHJldiwgaXRlbV0pO1xuICB9XG59XG4iLCI8ZGl2IGF4VmlydHVhbFNjcm9sbGluZ0NvbnRhaW5lciAoU2Nyb2xsRW5kKT1cImNhbGxGb3JVcGRhdGUoKVwiIFtoZWlnaHRdPVwiY2hhdEJveEhlaWdodCgpXCI+XG4gIEBmb3IgKGl0ZW0gb2YgY29udmVyc2F0aW9uU2VydmljZS5jaGF0cygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgPGF4LWNvbnZlcnNhdGlvbi1tZXNzYWdlXG4gICAgICBhbmltYXRlLmVudGVyPVwiYXgtZmFkZS1zbGlkZS1pblwiXG4gICAgICAob25SZXBseUNsaWNrKT1cIm9uUmVwbHlDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgW2F2YXRhcl09XCJhdmF0YXIoKVwiXG4gICAgICAob25BY3Rpb25NZW51T3BlbmluZyk9XCJvbkFjdGlvbk1lbnVPcGVuaW5nLmVtaXQoJGV2ZW50KVwiXG4gICAgICBbaXNSZXBseUFycm93U2hvd25dPVwiaXNSZXBseUFycm93U2hvd24oKVwiXG4gICAgICBheFZpcnR1YWxTY3JvbGxpbmdJdGVtXG4gICAgICBbY2hhdE1lc3NhZ2VdPVwiaXRlbVwiXG4gICAgPjwvYXgtY29udmVyc2F0aW9uLW1lc3NhZ2U+XG4gIH1cbjwvZGl2PlxuIl19","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXLoadingSpinnerComponent } from '@acorex/components/loading';\nimport { AXFileService } from '@acorex/core/file';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, ViewEncapsulation, afterNextRender, inject, signal } from '@angular/core';\nimport { AXConversationViewComponent } from '../../conversation-view/conversation-view.component';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying file messages in a conversation.\n *\n * @category Components\n */\nexport class AXConversationFileMessageComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n this.#init = afterNextRender(() => {\n if (this.message.name) {\n this.fileName.set(this.message.name);\n this.fileSize.set(this.fileService.getSize(this.message.content));\n }\n else {\n this.fileName.set(this.message.content[0].name);\n this.fileSize.set(this.message.content[0].size);\n }\n });\n /**\n * @ignore\n */\n this.fileState = signal('ready', ...(ngDevMode ? [{ debugName: \"fileState\" }] : []));\n /**\n * @ignore\n */\n this.fileSize = signal(null, ...(ngDevMode ? [{ debugName: \"fileSize\" }] : []));\n /**\n * @ignore\n */\n this.fileName = signal('', ...(ngDevMode ? [{ debugName: \"fileName\" }] : []));\n /**\n * @ignore\n */\n this.fileService = inject(AXFileService);\n /**\n * @ignore\n */\n this.parent = inject(AXConversationViewComponent);\n }\n #init;\n /**\n * Emits a download action event for the file.\n * @ignore\n */\n handleDownloadFile() {\n this.parent.onAction.emit({ component: this, data: this.message, isUserInteraction: true });\n }\n /**\n * Emits a cancel action event for the file loading.\n * @ignore\n */\n handleCancelLoading() {\n this.parent.onAction.emit({ component: this, data: this.message, isUserInteraction: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationFileMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXConversationFileMessageComponent, isStandalone: true, selector: \"ax-conversation-message-file\", providers: [{ provide: AXComponent, useExisting: AXConversationFileMessageComponent }], usesInheritance: true, ngImport: i0, template: \"<ax-prefix>\\n {{ fileSize() | format: 'filesize' | async }}\\n</ax-prefix>\\n<div class=\\\"ax-file-container\\\">\\n <div class=\\\"ax-conversation-controller\\\">\\n @switch (fileState()) {\\n @case ('ready') {\\n <button (click)=\\\"handleDownloadFile()\\\">\\n <i class=\\\"ax-icon ax-icon-download\\\"></i>\\n </button>\\n }\\n\\n @default {\\n <button (click)=\\\"handleCancelLoading()\\\">\\n <ax-loading-spinner\\n [size]=\\\"24\\\"\\n [stroke]=\\\"2\\\"\\n [color]=\\\"message.fromId ? 'white' : 'warning'\\\"\\n ></ax-loading-spinner>\\n </button>\\n }\\n }\\n </div>\\n\\n <div class=\\\"ax-file-name\\\">{{ fileName() }}</div>\\n</div>\\n\", styles: [\"ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\\n\"], dependencies: [{ kind: \"component\", type: 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: \"component\", type: AXLoadingSpinnerComponent, selector: \"ax-loading-spinner\", inputs: [\"text\", \"color\", \"size\", \"stroke\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationFileMessageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-file', encapsulation: ViewEncapsulation.None, imports: [AXDecoratorGenericComponent, AXLoadingSpinnerComponent, AsyncPipe, AXFormatPipe], providers: [{ provide: AXComponent, useExisting: AXConversationFileMessageComponent }], template: \"<ax-prefix>\\n {{ fileSize() | format: 'filesize' | async }}\\n</ax-prefix>\\n<div class=\\\"ax-file-container\\\">\\n <div class=\\\"ax-conversation-controller\\\">\\n @switch (fileState()) {\\n @case ('ready') {\\n <button (click)=\\\"handleDownloadFile()\\\">\\n <i class=\\\"ax-icon ax-icon-download\\\"></i>\\n </button>\\n }\\n\\n @default {\\n <button (click)=\\\"handleCancelLoading()\\\">\\n <ax-loading-spinner\\n [size]=\\\"24\\\"\\n [stroke]=\\\"2\\\"\\n [color]=\\\"message.fromId ? 'white' : 'warning'\\\"\\n ></ax-loading-spinner>\\n </button>\\n }\\n }\\n </div>\\n\\n <div class=\\\"ax-file-name\\\">{{ fileName() }}</div>\\n</div>\\n\", styles: [\"ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1maWxlL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS9jb252ZXJzYXRpb24tbWVzc2FnZS1maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFOUU7Ozs7R0FJRztBQVNILE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxrQ0FBa0M7SUFSMUY7O1FBU0UsVUFBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBVyxDQUFDLENBQUM7WUFDOUUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNPLGNBQVMsR0FBRyxNQUFNLENBQWdDLE9BQU8scURBQUMsQ0FBQztRQUNyRTs7V0FFRztRQUNPLGFBQVEsR0FBRyxNQUFNLENBQVMsSUFBSSxvREFBQyxDQUFDO1FBQzFDOztXQUVHO1FBQ08sYUFBUSxHQUFHLE1BQU0sQ0FBUyxFQUFFLG9EQUFDLENBQUM7UUFFeEM7O1dBRUc7UUFDSyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU1Qzs7V0FFRztRQUNLLFdBQU0sR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztLQWlCdEQ7SUFoREMsS0FBSyxDQVFGO0lBeUJIOzs7T0FHRztJQUNPLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVEOzs7T0FHRztJQUNPLG1CQUFtQjtRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQzs4R0FoRFUsa0NBQWtDO2tHQUFsQyxrQ0FBa0MsMkVBRmxDLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLGlEQ3RCeEYscXNCQTBCQSxxU0RMWSwyQkFBMkIseUxBQUUseUJBQXlCLHVHQUFFLFNBQVMseUNBQUUsWUFBWTs7MkZBRzlFLGtDQUFrQztrQkFSOUMsU0FBUzsrQkFDRSw4QkFBOEIsaUJBR3pCLGlCQUFpQixDQUFDLElBQUksV0FDNUIsQ0FBQywyQkFBMkIsRUFBRSx5QkFBeUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLGFBQy9FLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsb0NBQW9DLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYRmlsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZmlsZSc7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBhZnRlck5leHRSZW5kZXIsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblZpZXdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24tdmlldy9jb252ZXJzYXRpb24tdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnZlcnNhdGlvbi50eXBlcyc7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGZpbGUgbWVzc2FnZXMgaW4gYSBjb252ZXJzYXRpb24uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS1maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LCBBWExvYWRpbmdTcGlubmVyQ29tcG9uZW50LCBBc3luY1BpcGUsIEFYRm9ybWF0UGlwZV0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENvbnZlcnNhdGlvbkZpbGVNZXNzYWdlQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbkZpbGVNZXNzYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCB7XG4gICNpbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICBpZiAodGhpcy5tZXNzYWdlLm5hbWUpIHtcbiAgICAgIHRoaXMuZmlsZU5hbWUuc2V0KHRoaXMubWVzc2FnZS5uYW1lKTtcbiAgICAgIHRoaXMuZmlsZVNpemUuc2V0KHRoaXMuZmlsZVNlcnZpY2UuZ2V0U2l6ZSh0aGlzLm1lc3NhZ2UuY29udGVudCkgYXMgbnVtYmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlTmFtZS5zZXQodGhpcy5tZXNzYWdlLmNvbnRlbnRbMF0ubmFtZSk7XG4gICAgICB0aGlzLmZpbGVTaXplLnNldCh0aGlzLm1lc3NhZ2UuY29udGVudFswXS5zaXplKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpbGVTdGF0ZSA9IHNpZ25hbDwnbG9hZGluZycgfCAncmVhZHknIHwgJ2Vycm9yJz4oJ3JlYWR5Jyk7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpbGVTaXplID0gc2lnbmFsPG51bWJlcj4obnVsbCk7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpbGVOYW1lID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaWxlU2VydmljZSA9IGluamVjdChBWEZpbGVTZXJ2aWNlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcGFyZW50ID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uVmlld0NvbXBvbmVudCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgZG93bmxvYWQgYWN0aW9uIGV2ZW50IGZvciB0aGUgZmlsZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZURvd25sb2FkRmlsZSgpIHtcbiAgICB0aGlzLnBhcmVudC5vbkFjdGlvbi5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiB0aGlzLm1lc3NhZ2UsIGlzVXNlckludGVyYWN0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgY2FuY2VsIGFjdGlvbiBldmVudCBmb3IgdGhlIGZpbGUgbG9hZGluZy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNhbmNlbExvYWRpbmcoKSB7XG4gICAgdGhpcy5wYXJlbnQub25BY3Rpb24uZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogdGhpcy5tZXNzYWdlLCBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiPGF4LXByZWZpeD5cbiAge3sgZmlsZVNpemUoKSB8IGZvcm1hdDogJ2ZpbGVzaXplJyB8IGFzeW5jIH19XG48L2F4LXByZWZpeD5cbjxkaXYgY2xhc3M9XCJheC1maWxlLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiYXgtY29udmVyc2F0aW9uLWNvbnRyb2xsZXJcIj5cbiAgICBAc3dpdGNoIChmaWxlU3RhdGUoKSkge1xuICAgICAgQGNhc2UgKCdyZWFkeScpIHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlRG93bmxvYWRGaWxlKClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1kb3dubG9hZFwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG5cbiAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlQ2FuY2VsTG9hZGluZygpXCI+XG4gICAgICAgICAgPGF4LWxvYWRpbmctc3Bpbm5lclxuICAgICAgICAgICAgW3NpemVdPVwiMjRcIlxuICAgICAgICAgICAgW3N0cm9rZV09XCIyXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJtZXNzYWdlLmZyb21JZCA/ICd3aGl0ZScgOiAnd2FybmluZydcIlxuICAgICAgICAgID48L2F4LWxvYWRpbmctc3Bpbm5lcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgfVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYXgtZmlsZS1uYW1lXCI+e3sgZmlsZU5hbWUoKSB9fTwvZGl2PlxuPC9kaXY+XG4iXX0=","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * A popup component for displaying an image in full view.\n *\n * @category Components\n */\nexport class ConversationMessageImagePopupComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ConversationMessageImagePopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.4\", type: ConversationMessageImagePopupComponent, isStandalone: true, selector: \"ax-conversation-message-image-popup\", providers: [{ provide: AXComponent, useExisting: ConversationMessageImagePopupComponent }], ngImport: i0, template: ` <img class=\"ax-image-popup\" [src]=\"url\" alt=\"\" />`, isInline: true, styles: [\"ax-conversation-message-image-popup{display:flex;justify-content:center;align-items:center}ax-conversation-message-image-popup .ax-image-popup{object-fit:fill;width:30vw}\\n\"], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ConversationMessageImagePopupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-image-popup', template: ` <img class=\"ax-image-popup\" [src]=\"url\" alt=\"\" />`, encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: ConversationMessageImagePopupComponent }], styles: [\"ax-conversation-message-image-popup{display:flex;justify-content:center;align-items:center}ax-conversation-message-image-popup .ax-image-popup{object-fit:fill;width:30vw}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UtcG9wdXAvY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UtcG9wdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU3RDs7OztHQUlHO0FBUUgsTUFBTSxPQUFPLHNDQUFzQzs4R0FBdEMsc0NBQXNDO2tHQUF0QyxzQ0FBc0Msa0ZBRnRDLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzQ0FBc0MsRUFBRSxDQUFDLDBCQUhoRixvREFBb0Q7OzJGQUtuRCxzQ0FBc0M7a0JBUGxELFNBQVM7K0JBQ0UscUNBQXFDLFlBQ3JDLG9EQUFvRCxpQkFFL0MsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHdDQUF3QyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBwb3B1cCBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYW4gaW1hZ2UgaW4gZnVsbCB2aWV3LlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLWltYWdlLXBvcHVwJyxcbiAgdGVtcGxhdGU6IGAgPGltZyBjbGFzcz1cImF4LWltYWdlLXBvcHVwXCIgW3NyY109XCJ1cmxcIiBhbHQ9XCJcIiAvPmAsXG4gIHN0eWxlVXJsOiAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS1wb3B1cC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VQb3B1cENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uTWVzc2FnZUltYWdlUG9wdXBDb21wb25lbnQge1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB1cmw6IHN0cmluZztcbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { Component, afterNextRender, inject, signal } from '@angular/core';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport { ConversationMessageImagePopupComponent } from '../conversation-message-image-popup/conversation-message-image-popup.component';\nimport * as i0 from \"@angular/core\";\n/**\n * A component for displaying an image within a conversation message.\n *\n * @category Components\n */\nexport class AXConversationMessageImageComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this._imageUrl = signal('', ...(ngDevMode ? [{ debugName: \"_imageUrl\" }] : []));\n /**\n * @ignore\n */\n this.popup = inject(AXPopupService);\n /**\n * @ignore\n */\n this._options = {\n header: true,\n footer: false,\n size: 'md',\n draggable: true,\n hasBackdrop: true,\n closeButton: true,\n closeOnBackdropClick: false,\n };\n this.#init = afterNextRender(() => {\n this._imageUrl.set(this.message?.content);\n });\n }\n #init;\n /**\n * Opens a popup displaying the image with options for draggable, size, and backdrop.\n * @ignore\n */\n openPopup() {\n this.popup\n .open(ConversationMessageImagePopupComponent, {\n draggable: this._options.draggable,\n header: this._options.header,\n size: this._options.size,\n hasBackdrop: this._options.hasBackdrop,\n closeButton: this._options.closeButton,\n closeOnBackdropClick: this._options.closeOnBackdropClick,\n data: {\n url: this._imageUrl(),\n },\n })\n .then((c) => {\n console.log(c);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageImageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.4\", type: AXConversationMessageImageComponent, isStandalone: true, selector: \"ax-conversation-message-image\", inputs: { message: \"message\" }, providers: [{ provide: AXComponent, useExisting: AXConversationMessageImageComponent }], usesInheritance: true, ngImport: i0, template: `<img (click)=\"openPopup()\" [src]=\"_imageUrl()\" alt=\"\" /> `, isInline: true, styles: [\"img{cursor:pointer;width:100%;height:100%}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageImageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-image', template: `<img (click)=\"openPopup()\" [src]=\"_imageUrl()\" alt=\"\" /> `, inputs: ['message'], providers: [{ provide: AXComponent, useExisting: AXConversationMessageImageComponent }], styles: [\"img{cursor:pointer;width:100%;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UvY29udmVyc2F0aW9uLW1lc3NhZ2UtaW1hZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7O0FBRXhJOzs7O0dBSUc7QUFjSCxNQUFNLE9BQU8sbUNBQW9DLFNBQVEsa0NBQWtDO0lBYjNGOztRQWNFOztXQUVHO1FBQ08sY0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLHFEQUFDLENBQUM7UUFFakM7O1dBRUc7UUFDSyxVQUFLLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV2RDs7V0FFRztRQUNPLGFBQVEsR0FBRztZQUNuQixNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLG9CQUFvQixFQUFFLEtBQUs7U0FDNUIsQ0FBQztRQUVGLFVBQUssR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7S0F1Qko7SUF6QkMsS0FBSyxDQUVGO0lBRUg7OztPQUdHO0lBQ08sU0FBUztRQUNqQixJQUFJLENBQUMsS0FBSzthQUNQLElBQUksQ0FBQyxzQ0FBc0MsRUFBRTtZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBdUI7WUFDM0MsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVztZQUN0QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQ3RDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CO1lBQ3hELElBQUksRUFBRTtnQkFDSixHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTthQUN0QjtTQUNGLENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQWhEVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyw0R0FGbkMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsaURBVDdFLDJEQUEyRDs7MkZBVzFELG1DQUFtQztrQkFiL0MsU0FBUzsrQkFDRSwrQkFBK0IsWUFDL0IsMkRBQTJELFVBUTdELENBQUMsU0FBUyxDQUFDLGFBQ1IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxxQ0FBcUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UsIEFYUG9wdXBTaXplVHlwZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIGFmdGVyTmV4dFJlbmRlciwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uTWVzc2FnZUltYWdlUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS1wb3B1cC9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS1wb3B1cC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGFuIGltYWdlIHdpdGhpbiBhIGNvbnZlcnNhdGlvbiBtZXNzYWdlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLWltYWdlJyxcbiAgdGVtcGxhdGU6IGA8aW1nIChjbGljayk9XCJvcGVuUG9wdXAoKVwiIFtzcmNdPVwiX2ltYWdlVXJsKClcIiBhbHQ9XCJcIiAvPiBgLFxuICBzdHlsZXM6IGBcbiAgICBpbWcge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICBgLFxuICBpbnB1dHM6IFsnbWVzc2FnZSddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUltYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9pbWFnZVVybCA9IHNpZ25hbCgnJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHBvcHVwOiBBWFBvcHVwU2VydmljZSA9IGluamVjdChBWFBvcHVwU2VydmljZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX29wdGlvbnMgPSB7XG4gICAgaGVhZGVyOiB0cnVlLFxuICAgIGZvb3RlcjogZmFsc2UsXG4gICAgc2l6ZTogJ21kJyxcbiAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IGZhbHNlLFxuICB9O1xuXG4gICNpbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICB0aGlzLl9pbWFnZVVybC5zZXQodGhpcy5tZXNzYWdlPy5jb250ZW50KTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgcG9wdXAgZGlzcGxheWluZyB0aGUgaW1hZ2Ugd2l0aCBvcHRpb25zIGZvciBkcmFnZ2FibGUsIHNpemUsIGFuZCBiYWNrZHJvcC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9wZW5Qb3B1cCgpIHtcbiAgICB0aGlzLnBvcHVwXG4gICAgICAub3BlbihDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VQb3B1cENvbXBvbmVudCwge1xuICAgICAgICBkcmFnZ2FibGU6IHRoaXMuX29wdGlvbnMuZHJhZ2dhYmxlLFxuICAgICAgICBoZWFkZXI6IHRoaXMuX29wdGlvbnMuaGVhZGVyLFxuICAgICAgICBzaXplOiB0aGlzLl9vcHRpb25zLnNpemUgYXMgQVhQb3B1cFNpemVUeXBlLFxuICAgICAgICBoYXNCYWNrZHJvcDogdGhpcy5fb3B0aW9ucy5oYXNCYWNrZHJvcCxcbiAgICAgICAgY2xvc2VCdXR0b246IHRoaXMuX29wdGlvbnMuY2xvc2VCdXR0b24sXG4gICAgICAgIGNsb3NlT25CYWNrZHJvcENsaWNrOiB0aGlzLl9vcHRpb25zLmNsb3NlT25CYWNrZHJvcENsaWNrLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdXJsOiB0aGlzLl9pbWFnZVVybCgpLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC50aGVuKChjKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGMpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport { AXConversationService } from '../../services/conversation.service';\nimport * as i0 from \"@angular/core\";\n/**\n * A component for displaying a text message with optional reply content, including text, images, videos, files, and audio.\n *\n * @category Components\n */\nexport class AXConversationTextMessageComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this._text = signal('', ...(ngDevMode ? [{ debugName: \"_text\" }] : []));\n /**\n * @ignore\n */\n this.replyText = signal(null, ...(ngDevMode ? [{ debugName: \"replyText\" }] : []));\n /**\n * @ignore\n */\n this.replyImage = signal(null, ...(ngDevMode ? [{ debugName: \"replyImage\" }] : []));\n /**\n * @ignore\n */\n this.replyVideo = signal(null, ...(ngDevMode ? [{ debugName: \"replyVideo\" }] : []));\n /**\n * @ignore\n */\n this.replyAudio = signal(null, ...(ngDevMode ? [{ debugName: \"replyAudio\" }] : []));\n /**\n * @ignore\n */\n this.replyVoice = signal(null, ...(ngDevMode ? [{ debugName: \"replyVoice\" }] : []));\n /**\n * @ignore\n */\n this.replyFile = signal(null, ...(ngDevMode ? [{ debugName: \"replyFile\" }] : []));\n /**\n * @ignore\n */\n this.conversationService = inject(AXConversationService);\n }\n ngOnInit() {\n this._text.set(this.message?.content);\n if (!this.message?.replyTo)\n return;\n const replyMessage = this.conversationService.chats().find((chat) => chat.id === this.message?.replyTo?.id);\n switch (replyMessage.type) {\n case 'text':\n this.replyText.set(replyMessage);\n break;\n case 'image':\n this.replyImage.set(replyMessage);\n break;\n case 'video':\n this.replyVideo.set(replyMessage);\n break;\n case 'audio':\n this.replyAudio.set(replyMessage);\n break;\n case 'voice':\n this.replyVoice.set(replyMessage);\n break;\n case 'file':\n this.replyFile.set(replyMessage);\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationTextMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXConversationTextMessageComponent, isStandalone: true, selector: \"ng-component\", inputs: { message: \"message\" }, providers: [{ provide: AXComponent, useExisting: AXConversationTextMessageComponent }], usesInheritance: true, ngImport: i0, template: `\n @if (replyText()) {\n <div class=\"ax-message-reply-container\">{{ replyText().content }}</div>\n }\n\n @if (replyImage()) {\n <div class=\"ax-image-reply-container\"><img [src]=\"replyImage().content\" alt=\"\" /></div>\n }\n\n @if (replyVideo()) {\n <div class=\"ax-video-reply-container\"><video [src]=\"replyVideo().content\"></video></div>\n }\n\n @if (replyFile()) {\n <div class=\"ax-message-reply-container\">\n <div class=\"file\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ replyFile().name }}\n </div>\n </div>\n }\n\n @if (replyAudio() || replyVoice()) {\n <div class=\"ax-message-reply-container\">{{ replyAudio().type }}</div>\n }\n\n <div class=\"ax-text-message\" [innerHtml]=\"_text()\"></div>\n `, isInline: true, styles: [\".ax-text-message{word-break:normal;white-space:break-spaces}\\n\"], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationTextMessageComponent, decorators: [{\n type: Component,\n args: [{ template: `\n @if (replyText()) {\n <div class=\"ax-message-reply-container\">{{ replyText().content }}</div>\n }\n\n @if (replyImage()) {\n <div class=\"ax-image-reply-container\"><img [src]=\"replyImage().content\" alt=\"\" /></div>\n }\n\n @if (replyVideo()) {\n <div class=\"ax-video-reply-container\"><video [src]=\"replyVideo().content\"></video></div>\n }\n\n @if (replyFile()) {\n <div class=\"ax-message-reply-container\">\n <div class=\"file\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ replyFile().name }}\n </div>\n </div>\n }\n\n @if (replyAudio() || replyVoice()) {\n <div class=\"ax-message-reply-container\">{{ replyAudio().type }}</div>\n }\n\n <div class=\"ax-text-message\" [innerHtml]=\"_text()\"></div>\n `, encapsulation: ViewEncapsulation.None, inputs: ['message'], providers: [{ provide: AXComponent, useExisting: AXConversationTextMessageComponent }], styles: [\".ax-text-message{word-break:normal;white-space:break-spaces}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS10ZXh0L2NvbnZlcnNhdGlvbi1tZXNzYWdlLXRleHQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUF5QixrQ0FBa0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUU1RTs7OztHQUlHO0FBbUNILE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxrQ0FBa0M7SUFsQzFGOztRQW1DRTs7V0FFRztRQUNPLFVBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxpREFBQyxDQUFDO1FBRTdCOztXQUVHO1FBQ08sY0FBUyxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxxREFBQyxDQUFDO1FBRWpFOztXQUVHO1FBQ08sZUFBVSxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxzREFBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ08sZUFBVSxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxzREFBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ08sZUFBVSxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxzREFBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ08sZUFBVSxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxzREFBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ08sY0FBUyxHQUFHLE1BQU0sQ0FBK0IsSUFBSSxxREFBQyxDQUFDO1FBRWpFOztXQUVHO1FBQ0ssd0JBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7S0E4QjdEO0lBNUJDLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU87WUFBRSxPQUFPO1FBRW5DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFNUcsUUFBUSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7OEdBcEVVLGtDQUFrQztrR0FBbEMsa0NBQWtDLDJGQUZsQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQyxpREEvQjVFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQ7OzJGQU1VLGtDQUFrQztrQkFsQzlDLFNBQVM7K0JBQ0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVCxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLFVBQzdCLENBQUMsU0FBUyxDQUFDLGFBQ1IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxvQ0FBb0MsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlLCBBWENvbnZlcnNhdGlvbk1lc3NhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udmVyc2F0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnZlcnNhdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhIHRleHQgbWVzc2FnZSB3aXRoIG9wdGlvbmFsIHJlcGx5IGNvbnRlbnQsIGluY2x1ZGluZyB0ZXh0LCBpbWFnZXMsIHZpZGVvcywgZmlsZXMsIGFuZCBhdWRpby5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHJlcGx5VGV4dCgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1yZXBseS1jb250YWluZXJcIj57eyByZXBseVRleHQoKS5jb250ZW50IH19PC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChyZXBseUltYWdlKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1pbWFnZS1yZXBseS1jb250YWluZXJcIj48aW1nIFtzcmNdPVwicmVwbHlJbWFnZSgpLmNvbnRlbnRcIiBhbHQ9XCJcIiAvPjwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAocmVwbHlWaWRlbygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtdmlkZW8tcmVwbHktY29udGFpbmVyXCI+PHZpZGVvIFtzcmNdPVwicmVwbHlWaWRlbygpLmNvbnRlbnRcIj48L3ZpZGVvPjwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAocmVwbHlGaWxlKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1tZXNzYWdlLXJlcGx5LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtcmVndWxhciBmYS1mb2xkZXItb3BlblwiPjwvaT5cbiAgICAgICAgICB7eyByZXBseUZpbGUoKS5uYW1lIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChyZXBseUF1ZGlvKCkgfHwgcmVwbHlWb2ljZSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVzc2FnZS1yZXBseS1jb250YWluZXJcIj57eyByZXBseUF1ZGlvKCkudHlwZSB9fTwvZGl2PlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LW1lc3NhZ2VcIiBbaW5uZXJIdG1sXT1cIl90ZXh0KClcIj48L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXRleHQuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbnB1dHM6IFsnbWVzc2FnZSddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25UZXh0TWVzc2FnZUNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb252ZXJzYXRpb25UZXh0TWVzc2FnZUNvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfdGV4dCA9IHNpZ25hbCgnJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVwbHlUZXh0ID0gc2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlcGx5SW1hZ2UgPSBzaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVwbHlWaWRlbyA9IHNpZ25hbDxBWENvbnZlcnNhdGlvbk1lc3NhZ2UgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCByZXBseUF1ZGlvID0gc2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlcGx5Vm9pY2UgPSBzaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVwbHlGaWxlID0gc2lnbmFsPEFYQ29udmVyc2F0aW9uTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJzYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdGV4dC5zZXQodGhpcy5tZXNzYWdlPy5jb250ZW50KTtcblxuICAgIGlmICghdGhpcy5tZXNzYWdlPy5yZXBseVRvKSByZXR1cm47XG5cbiAgICBjb25zdCByZXBseU1lc3NhZ2UgPSB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMoKS5maW5kKChjaGF0KSA9PiBjaGF0LmlkID09PSB0aGlzLm1lc3NhZ2U/LnJlcGx5VG8/LmlkKTtcblxuICAgIHN3aXRjaCAocmVwbHlNZXNzYWdlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICB0aGlzLnJlcGx5VGV4dC5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgIHRoaXMucmVwbHlJbWFnZS5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHRoaXMucmVwbHlWaWRlby5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHRoaXMucmVwbHlBdWRpby5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2b2ljZSc6XG4gICAgICAgIHRoaXMucmVwbHlWb2ljZS5zZXQocmVwbHlNZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaWxlJzpcbiAgICAgICAgdGhpcy5yZXBseUZpbGUuc2V0KHJlcGx5TWVzc2FnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, signal } from '@angular/core';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport * as i0 from \"@angular/core\";\n/**\n * A component for displaying a video message with playback controls.\n *\n * @category Components\n */\nexport class AXConversationMessageVideoComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this._videoUrl = signal('', ...(ngDevMode ? [{ debugName: \"_videoUrl\" }] : []));\n }\n /**\n * @ignore\n */\n ngOnInit() {\n this._videoUrl.set(this.message?.content);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageVideoComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.4\", type: AXConversationMessageVideoComponent, isStandalone: true, selector: \"ax-conversation-message-video\", providers: [{ provide: AXComponent, useExisting: AXConversationMessageVideoComponent }], usesInheritance: true, ngImport: i0, template: `<video controls [src]=\"_videoUrl()\"></video>`, isInline: true, styles: [\"video{width:100%;height:100%}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationMessageVideoComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-video', template: `<video controls [src]=\"_videoUrl()\"></video>`, providers: [{ provide: AXComponent, useExisting: AXConversationMessageVideoComponent }], styles: [\"video{width:100%;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2UtdmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2UtdmlkZW8vY29udmVyc2F0aW9uLW1lc3NhZ2UtdmlkZW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFOUU7Ozs7R0FJRztBQVlILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxrQ0FBa0M7SUFYM0Y7O1FBWUU7O1dBRUc7UUFDTyxjQUFTLEdBQUcsTUFBTSxDQUFDLEVBQUUscURBQUMsQ0FBQztLQVFsQztJQU5DOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs4R0FYVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyw0RUFGbkMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsaURBUDdFLDhDQUE4Qzs7MkZBUzdDLG1DQUFtQztrQkFYL0MsU0FBUzsrQkFDRSwrQkFBK0IsWUFDL0IsOENBQThDLGFBTzdDLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcscUNBQXFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24udHlwZXMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGEgdmlkZW8gbWVzc2FnZSB3aXRoIHBsYXliYWNrIGNvbnRyb2xzLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLXZpZGVvJyxcbiAgdGVtcGxhdGU6IGA8dmlkZW8gY29udHJvbHMgW3NyY109XCJfdmlkZW9VcmwoKVwiPjwvdmlkZW8+YCxcbiAgc3R5bGVzOiBgXG4gICAgdmlkZW8ge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICBgLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDb252ZXJzYXRpb25NZXNzYWdlVmlkZW9Db21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29udmVyc2F0aW9uTWVzc2FnZVZpZGVvQ29tcG9uZW50IGV4dGVuZHMgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF92aWRlb1VybCA9IHNpZ25hbCgnJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl92aWRlb1VybC5zZXQodGhpcy5tZXNzYWdlPy5jb250ZW50KTtcbiAgfVxufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { AXAudioWaveComponent } from '@acorex/components/audio-wave';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXLoadingSpinnerComponent } from '@acorex/components/loading';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport { Component, HostBinding, PLATFORM_ID, ViewChild, ViewEncapsulation, afterNextRender, inject, signal, } from '@angular/core';\nimport { AXConversationViewComponent } from '../../conversation-view/conversation-view.component';\nimport { AXConversationMessageBaseComponent } from '../../conversation.types';\nimport * as i0 from \"@angular/core\";\n/**\n * A component for displaying and handling audio messages in a conversation.\n *\n * @category Components\n */\nexport class AXConversationVoiceMessageComponent extends AXConversationMessageBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this.config = { url: '' };\n /**\n * @ignore\n */\n this.audioState = signal('paused', ...(ngDevMode ? [{ debugName: \"audioState\" }] : []));\n /**\n * @ignore\n */\n this.parent = inject(AXConversationViewComponent);\n this.platformID = inject(PLATFORM_ID);\n /**\n * @ignore\n */\n this.selectedRate = signal(1, ...(ngDevMode ? [{ debugName: \"selectedRate\" }] : []));\n /**\n * @ignore\n */\n this.selectedRateIndex = signal(1, ...(ngDevMode ? [{ debugName: \"selectedRateIndex\" }] : []));\n /**\n * @ignore\n */\n this.audioProgress = signal(0, ...(ngDevMode ? [{ debugName: \"audioProgress\" }] : []));\n /**\n * @ignore\n */\n this.timeLeft = signal(0, ...(ngDevMode ? [{ debugName: \"timeLeft\" }] : []));\n /**\n * @ignore\n */\n this.currentTime = signal(0, ...(ngDevMode ? [{ debugName: \"currentTime\" }] : []));\n /**\n * @ignore\n */\n this.duration = signal(0, ...(ngDevMode ? [{ debugName: \"duration\" }] : []));\n this.#init = afterNextRender(() => {\n this.config.url = this.message?.content;\n this.config.audioRate = 0.25;\n this.setWaveColor();\n this.audio.onStatusChanged.subscribe((c) => {\n this.parent.onAction.emit(c);\n });\n this.handleLoadingProgress();\n });\n }\n #init;\n /**\n * @ignore\n */\n setWaveColor() {\n let waveColor = '';\n let progressColor = '';\n if (isPlatformBrowser(this.platformID)) {\n if (this.message.fromId) {\n waveColor = getComputedStyle(document.body).getPropertyValue('--ax-message-other-bar-color');\n progressColor = getComputedStyle(document.body).getPropertyValue('--ax-message-other-progress-color');\n }\n else {\n waveColor = getComputedStyle(document.body).getPropertyValue('--ax-message-own-bar-color');\n progressColor = getComputedStyle(document.body).getPropertyValue('--ax-message-own-progress-color');\n }\n }\n this.config.waveColor = waveColor;\n this.config.progressColor = progressColor;\n }\n /**\n * Pauses the audio playback and updates the audio state to 'paused'.\n * @ignore\n */\n handlePauseClick() {\n this.audio?.pause();\n this.audioState.set('paused');\n }\n /**\n * Plays the audio and updates the audio state to 'playing'.\n * @ignore\n */\n handlePlayClick() {\n this.audio?.play()?.then(() => {\n this.audioState.set('playing');\n });\n }\n /**\n * Updates audio state and progress based on status changes from the audio wave.\n * @param e - The event containing status and data related to the audio.\n * @ignore\n */\n handleOnStatusChanged(e) {\n if (e.status === 'load' || e.status === 'loading') {\n this.audioState.set('loading');\n }\n if (e.status === 'loading') {\n this.audioProgress.set(e.data.percent);\n this.duration.set(Math.ceil(e.data.duration * 1000));\n }\n if (e.status === 'ready') {\n this.audioState.set('ready');\n this.duration.set(Math.ceil(e.data.duration * 1000));\n }\n if (e.status === 'finish') {\n this.audioState.set('paused');\n }\n if (e.status === 'timeupdate') {\n this.timeLeft.set(this.duration() - e.data.currentTime * 1000);\n this.currentTime.set(e.data.currentTime * 1000);\n }\n if (e.status === 'error') {\n this.audioState.set('error');\n }\n }\n /**\n * @ignore\n */\n handleLoadingProgress() {\n // this.audioLoaderProgress?.nativeElement.style.cssText = `--ax-audio-progress: ${this.audioProgress()}`;\n }\n /**\n * Handles the cancellation of a loading operation.\n * @ignore\n */\n handleCancelLoading() {\n //\n }\n /**\n * Reloads the audio and updates the state to 'loading'.\n * @ignore\n */\n handleReloadClick() {\n //\n this.audioState.set('loading');\n this.audio.load();\n }\n /**\n * Cycles through predefined audio playback rates and updates the rate.\n * @ignore\n */\n handleRateClick() {\n const rates = [0.5, 1, 2, 4];\n if (this.selectedRateIndex() == rates.length - 1) {\n this.selectedRateIndex.set(0);\n }\n else {\n this.selectedRateIndex.set(this.selectedRateIndex() + 1);\n }\n this.selectedRate.set(rates[this.selectedRateIndex()]);\n this.audio.setRate(this.selectedRate());\n }\n /**\n * @ignore\n */\n get __hostClass() {\n return `${this.message.fromId ? 'ax-state-other' : 'ax-state-own'}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationVoiceMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXConversationVoiceMessageComponent, isStandalone: true, selector: \"ax-conversation-message-audio\", inputs: { message: \"message\" }, host: { properties: { \"class\": \"this.__hostClass\" } }, providers: [{ provide: AXComponent, useExisting: AXConversationVoiceMessageComponent }], viewQueries: [{ propertyName: \"audio\", first: true, predicate: [\"a\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"<ax-prefix>\\n @switch (audioState()) {\\n @case ('paused') {\\n {{ currentTime() | format: 'time-duration' | async }}\\n }\\n @case ('playing') {\\n {{ currentTime() | format: 'time-duration' | async }}\\n }\\n @default {\\n {{ duration() | format: 'time-duration' | async }}\\n }\\n }\\n <button class=\\\"ax-audio-speed\\\" (click)=\\\"handleRateClick()\\\"></button>\\n</ax-prefix>\\n<div class=\\\"ax-conversation-controller\\\">\\n @switch (audioState()) {\\n @case ('playing') {\\n <button (click)=\\\"handlePauseClick()\\\">\\n <i class=\\\"ax-icon ax-icon-pause\\\"></i>\\n </button>\\n }\\n\\n @case ('ready') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n\\n @case ('paused') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n\\n @case ('error') {\\n <button class=\\\"ax-state-error\\\" (click)=\\\"handleReloadClick()\\\">\\n <i class=\\\"ax-icon ax-icon-reload\\\"></i>\\n </button>\\n }\\n\\n @default {\\n <button (click)=\\\"handleCancelLoading()\\\">\\n <ax-loading-spinner\\n [size]=\\\"24\\\"\\n [stroke]=\\\"2\\\"\\n [color]=\\\"message.fromId ? 'white' : 'warning'\\\"\\n ></ax-loading-spinner>\\n </button>\\n }\\n }\\n</div>\\n<ax-audio-wave #a [config]=\\\"config\\\" (onStatusChanged)=\\\"handleOnStatusChanged($event)\\\"></ax-audio-wave>\\n<ax-suffix>\\n <div class=\\\"ax-audio-rate-button\\\" [class.ax-state-own]=\\\"!message?.fromId\\\" (click)=\\\"handleRateClick()\\\">\\n {{ selectedRate() }}X\\n </div>\\n</ax-suffix>\\n\", styles: [\"ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}ax-conversation-message-audio .ax-audio-rate-button{background-color:var(--ax-comp-conversation-other-color-fore);color:var(--ax-comp-conversation-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}ax-conversation-message-audio .ax-audio-rate-button.ax-state-own{background-color:var(--ax-comp-conversation-own-color-fore);color:var(--ax-comp-conversation-own-color)}ax-conversation-message-audio html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\\n\"], dependencies: [{ kind: \"component\", type: 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: \"component\", type: AXLoadingSpinnerComponent, selector: \"ax-loading-spinner\", inputs: [\"text\", \"color\", \"size\", \"stroke\"] }, { kind: \"component\", type: AXAudioWaveComponent, selector: \"ax-audio-wave\", inputs: [\"config\"], outputs: [\"onStatusChanged\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationVoiceMessageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, inputs: ['message'], imports: [AXDecoratorGenericComponent, AXLoadingSpinnerComponent, AXAudioWaveComponent, AsyncPipe, AXFormatPipe], providers: [{ provide: AXComponent, useExisting: AXConversationVoiceMessageComponent }], template: \"<ax-prefix>\\n @switch (audioState()) {\\n @case ('paused') {\\n {{ currentTime() | format: 'time-duration' | async }}\\n }\\n @case ('playing') {\\n {{ currentTime() | format: 'time-duration' | async }}\\n }\\n @default {\\n {{ duration() | format: 'time-duration' | async }}\\n }\\n }\\n <button class=\\\"ax-audio-speed\\\" (click)=\\\"handleRateClick()\\\"></button>\\n</ax-prefix>\\n<div class=\\\"ax-conversation-controller\\\">\\n @switch (audioState()) {\\n @case ('playing') {\\n <button (click)=\\\"handlePauseClick()\\\">\\n <i class=\\\"ax-icon ax-icon-pause\\\"></i>\\n </button>\\n }\\n\\n @case ('ready') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n\\n @case ('paused') {\\n <button (click)=\\\"handlePlayClick()\\\">\\n <i class=\\\"ax-icon ax-icon-play\\\"></i>\\n </button>\\n }\\n\\n @case ('error') {\\n <button class=\\\"ax-state-error\\\" (click)=\\\"handleReloadClick()\\\">\\n <i class=\\\"ax-icon ax-icon-reload\\\"></i>\\n </button>\\n }\\n\\n @default {\\n <button (click)=\\\"handleCancelLoading()\\\">\\n <ax-loading-spinner\\n [size]=\\\"24\\\"\\n [stroke]=\\\"2\\\"\\n [color]=\\\"message.fromId ? 'white' : 'warning'\\\"\\n ></ax-loading-spinner>\\n </button>\\n }\\n }\\n</div>\\n<ax-audio-wave #a [config]=\\\"config\\\" (onStatusChanged)=\\\"handleOnStatusChanged($event)\\\"></ax-audio-wave>\\n<ax-suffix>\\n <div class=\\\"ax-audio-rate-button\\\" [class.ax-state-own]=\\\"!message?.fromId\\\" (click)=\\\"handleRateClick()\\\">\\n {{ selectedRate() }}X\\n </div>\\n</ax-suffix>\\n\", styles: [\"ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}ax-conversation-message-audio .ax-audio-rate-button{background-color:var(--ax-comp-conversation-other-color-fore);color:var(--ax-comp-conversation-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}ax-conversation-message-audio .ax-audio-rate-button.ax-state-own{background-color:var(--ax-comp-conversation-own-color-fore);color:var(--ax-comp-conversation-own-color)}ax-conversation-message-audio html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\\n\"] }]\n }], propDecorators: { audio: [{\n type: ViewChild,\n args: ['a']\n }], __hostClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UvY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24tbWVzc2FnZXMvY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UvY29udmVyc2F0aW9uLW1lc3NhZ2Utdm9pY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBMEIsb0JBQW9CLEVBQWdCLE1BQU0sK0JBQStCLENBQUM7QUFDM0csT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQkFB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SSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLFdBQVc7UUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN0RSxDQUFDOzhHQTlLVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyxtS0FGbkMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsNklDL0J6Rix5bURBeURBLHd5QkQzQlksMkJBQTJCLHlMQUFFLHlCQUF5Qiw0R0FBRSxvQkFBb0IsdUdBQUUsU0FBUyx5Q0FBRSxZQUFZOzsyRkFHcEcsbUNBQW1DO2tCQVQvQyxTQUFTOytCQUNFLCtCQUErQixpQkFHMUIsaUJBQWlCLENBQUMsSUFBSSxVQUM3QixDQUFDLFNBQVMsQ0FBQyxXQUNWLENBQUMsMkJBQTJCLEVBQUUseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxhQUNyRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHFDQUFxQyxFQUFFLENBQUM7OEJBTXZFLEtBQUs7c0JBQXBCLFNBQVM7dUJBQUMsR0FBRztnQkF3S1YsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEF1ZGlvV2F2ZUNoYW5nZUV2ZW50LCBBWEF1ZGlvV2F2ZUNvbXBvbmVudCwgQVhXYXZlQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F1ZGlvLXdhdmUnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYRm9ybWF0UGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBQTEFURk9STV9JRCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvblZpZXdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb252ZXJzYXRpb24tdmlldy9jb252ZXJzYXRpb24tdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnZlcnNhdGlvbi50eXBlcyc7XG5cbi8qKlxuICogQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYW5kIGhhbmRsaW5nIGF1ZGlvIG1lc3NhZ2VzIGluIGEgY29udmVyc2F0aW9uLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnZlcnNhdGlvbi1tZXNzYWdlLWF1ZGlvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXZvaWNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6IGAuL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXZvaWNlLmNvbXBvbmVudC5zY3NzYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW5wdXRzOiBbJ21lc3NhZ2UnXSxcbiAgaW1wb3J0czogW0FYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCwgQVhMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCwgQVhBdWRpb1dhdmVDb21wb25lbnQsIEFzeW5jUGlwZSwgQVhGb3JtYXRQaXBlXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29udmVyc2F0aW9uVm9pY2VNZXNzYWdlQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvblZvaWNlTWVzc2FnZUNvbXBvbmVudCBleHRlbmRzIEFYQ29udmVyc2F0aW9uTWVzc2FnZUJhc2VDb21wb25lbnQge1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2EnKSBhdWRpbzogQVhBdWRpb1dhdmVDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uZmlnOiBBWFdhdmVDb25maWcgPSB7IHVybDogJycgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhdWRpb1N0YXRlID0gc2lnbmFsPCdwbGF5aW5nJyB8ICdwYXVzZWQnIHwgJ2xvYWRpbmcnIHwgJ3JlYWR5JyB8ICdlcnJvcic+KCdwYXVzZWQnKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcGFyZW50ID0gaW5qZWN0KEFYQ29udmVyc2F0aW9uVmlld0NvbXBvbmVudCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRSYXRlID0gc2lnbmFsKDEpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBzZWxlY3RlZFJhdGVJbmRleCA9IHNpZ25hbCgxKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhdWRpb1Byb2dyZXNzID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRpbWVMZWZ0ID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRUaW1lID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGR1cmF0aW9uID0gc2lnbmFsKDApO1xuXG4gICNpbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICB0aGlzLmNvbmZpZy51cmwgPSB0aGlzLm1lc3NhZ2U/LmNvbnRlbnQ7XG4gICAgdGhpcy5jb25maWcuYXVkaW9SYXRlID0gMC4yNTtcbiAgICB0aGlzLnNldFdhdmVDb2xvcigpO1xuICAgIHRoaXMuYXVkaW8ub25TdGF0dXNDaGFuZ2VkLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgdGhpcy5wYXJlbnQub25BY3Rpb24uZW1pdChjKTtcbiAgICB9KTtcbiAgICB0aGlzLmhhbmRsZUxvYWRpbmdQcm9ncmVzcygpO1xuICB9KTtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHNldFdhdmVDb2xvcigpIHtcbiAgICBsZXQgd2F2ZUNvbG9yID0gJyc7XG4gICAgbGV0IHByb2dyZXNzQ29sb3IgPSAnJztcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgaWYgKHRoaXMubWVzc2FnZS5mcm9tSWQpIHtcbiAgICAgICAgd2F2ZUNvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LW1lc3NhZ2Utb3RoZXItYmFyLWNvbG9yJyk7XG4gICAgICAgIHByb2dyZXNzQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJy0tYXgtbWVzc2FnZS1vdGhlci1wcm9ncmVzcy1jb2xvcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2F2ZUNvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LW1lc3NhZ2Utb3duLWJhci1jb2xvcicpO1xuICAgICAgICBwcm9ncmVzc0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LW1lc3NhZ2Utb3duLXByb2dyZXNzLWNvbG9yJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29uZmlnLndhdmVDb2xvciA9IHdhdmVDb2xvcjtcbiAgICB0aGlzLmNvbmZpZy5wcm9ncmVzc0NvbG9yID0gcHJvZ3Jlc3NDb2xvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXVzZXMgdGhlIGF1ZGlvIHBsYXliYWNrIGFuZCB1cGRhdGVzIHRoZSBhdWRpbyBzdGF0ZSB0byAncGF1c2VkJy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVBhdXNlQ2xpY2soKSB7XG4gICAgdGhpcy5hdWRpbz8ucGF1c2UoKTtcbiAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdwYXVzZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGF5cyB0aGUgYXVkaW8gYW5kIHVwZGF0ZXMgdGhlIGF1ZGlvIHN0YXRlIHRvICdwbGF5aW5nJy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVBsYXlDbGljaygpIHtcbiAgICB0aGlzLmF1ZGlvPy5wbGF5KCk/LnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncGxheWluZycpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYXVkaW8gc3RhdGUgYW5kIHByb2dyZXNzIGJhc2VkIG9uIHN0YXR1cyBjaGFuZ2VzIGZyb20gdGhlIGF1ZGlvIHdhdmUuXG4gICAqIEBwYXJhbSBlIC0gVGhlIGV2ZW50IGNvbnRhaW5pbmcgc3RhdHVzIGFuZCBkYXRhIHJlbGF0ZWQgdG8gdGhlIGF1ZGlvLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25TdGF0dXNDaGFuZ2VkKGU6IEFYQXVkaW9XYXZlQ2hhbmdlRXZlbnQpIHtcbiAgICBpZiAoZS5zdGF0dXMgPT09ICdsb2FkJyB8fCBlLnN0YXR1cyA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdsb2FkaW5nJyk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICB0aGlzLmF1ZGlvUHJvZ3Jlc3Muc2V0KGUuZGF0YS5wZXJjZW50KTtcbiAgICAgIHRoaXMuZHVyYXRpb24uc2V0KE1hdGguY2VpbChlLmRhdGEuZHVyYXRpb24gKiAxMDAwKSk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ3JlYWR5Jykge1xuICAgICAgdGhpcy5hdWRpb1N0YXRlLnNldCgncmVhZHknKTtcbiAgICAgIHRoaXMuZHVyYXRpb24uc2V0KE1hdGguY2VpbChlLmRhdGEuZHVyYXRpb24gKiAxMDAwKSk7XG4gICAgfVxuICAgIGlmIChlLnN0YXR1cyA9PT0gJ2ZpbmlzaCcpIHtcbiAgICAgIHRoaXMuYXVkaW9TdGF0ZS5zZXQoJ3BhdXNlZCcpO1xuICAgIH1cbiAgICBpZiAoZS5zdGF0dXMgPT09ICd0aW1ldXBkYXRlJykge1xuICAgICAgdGhpcy50aW1lTGVmdC5zZXQodGhpcy5kdXJhdGlvbigpIC0gZS5kYXRhLmN1cnJlbnRUaW1lICogMTAwMCk7XG4gICAgICB0aGlzLmN1cnJlbnRUaW1lLnNldChlLmRhdGEuY3VycmVudFRpbWUgKiAxMDAwKTtcbiAgICB9XG4gICAgaWYgKGUuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgICB0aGlzLmF1ZGlvU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUxvYWRpbmdQcm9ncmVzcygpIHtcbiAgICAvLyB0aGlzLmF1ZGlvTG9hZGVyUHJvZ3Jlc3M/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGAtLWF4LWF1ZGlvLXByb2dyZXNzOiAke3RoaXMuYXVkaW9Qcm9ncmVzcygpfWA7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2FuY2VsbGF0aW9uIG9mIGEgbG9hZGluZyBvcGVyYXRpb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDYW5jZWxMb2FkaW5nKCkge1xuICAgIC8vXG4gIH1cblxuICAvKipcbiAgICogUmVsb2FkcyB0aGUgYXVkaW8gYW5kIHVwZGF0ZXMgdGhlIHN0YXRlIHRvICdsb2FkaW5nJy5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJlbG9hZENsaWNrKCkge1xuICAgIC8vXG4gICAgdGhpcy5hdWRpb1N0YXRlLnNldCgnbG9hZGluZycpO1xuICAgIHRoaXMuYXVkaW8ubG9hZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEN5Y2xlcyB0aHJvdWdoIHByZWRlZmluZWQgYXVkaW8gcGxheWJhY2sgcmF0ZXMgYW5kIHVwZGF0ZXMgdGhlIHJhdGUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVSYXRlQ2xpY2soKSB7XG4gICAgY29uc3QgcmF0ZXMgPSBbMC41LCAxLCAyLCA0XTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJhdGVJbmRleCgpID09IHJhdGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSYXRlSW5kZXguc2V0KDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUmF0ZUluZGV4LnNldCh0aGlzLnNlbGVjdGVkUmF0ZUluZGV4KCkgKyAxKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFJhdGUuc2V0KHJhdGVzW3RoaXMuc2VsZWN0ZWRSYXRlSW5kZXgoKV0pO1xuICAgIHRoaXMuYXVkaW8uc2V0UmF0ZSh0aGlzLnNlbGVjdGVkUmF0ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm1lc3NhZ2UuZnJvbUlkID8gJ2F4LXN0YXRlLW90aGVyJyA6ICdheC1zdGF0ZS1vd24nfWA7XG4gIH1cbn1cbiIsIjxheC1wcmVmaXg+XG4gIEBzd2l0Y2ggKGF1ZGlvU3RhdGUoKSkge1xuICAgIEBjYXNlICgncGF1c2VkJykge1xuICAgICAge3sgY3VycmVudFRpbWUoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICB9XG4gICAgQGNhc2UgKCdwbGF5aW5nJykge1xuICAgICAge3sgY3VycmVudFRpbWUoKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICB9XG4gICAgQGRlZmF1bHQge1xuICAgICAge3sgZHVyYXRpb24oKSB8IGZvcm1hdDogJ3RpbWUtZHVyYXRpb24nIHwgYXN5bmMgfX1cbiAgICB9XG4gIH1cbiAgPGJ1dHRvbiBjbGFzcz1cImF4LWF1ZGlvLXNwZWVkXCIgKGNsaWNrKT1cImhhbmRsZVJhdGVDbGljaygpXCI+PC9idXR0b24+XG48L2F4LXByZWZpeD5cbjxkaXYgY2xhc3M9XCJheC1jb252ZXJzYXRpb24tY29udHJvbGxlclwiPlxuICBAc3dpdGNoIChhdWRpb1N0YXRlKCkpIHtcbiAgICBAY2FzZSAoJ3BsYXlpbmcnKSB7XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVQYXVzZUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGF1c2VcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ3JlYWR5Jykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGxheUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGxheVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBjYXNlICgncGF1c2VkJykge1xuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUGxheUNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tcGxheVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBjYXNlICgnZXJyb3InKSB7XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYXgtc3RhdGUtZXJyb3JcIiAoY2xpY2spPVwiaGFuZGxlUmVsb2FkQ2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1yZWxvYWRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAZGVmYXVsdCB7XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVDYW5jZWxMb2FkaW5nKClcIj5cbiAgICAgICAgPGF4LWxvYWRpbmctc3Bpbm5lclxuICAgICAgICAgIFtzaXplXT1cIjI0XCJcbiAgICAgICAgICBbc3Ryb2tlXT1cIjJcIlxuICAgICAgICAgIFtjb2xvcl09XCJtZXNzYWdlLmZyb21JZCA/ICd3aGl0ZScgOiAnd2FybmluZydcIlxuICAgICAgICA+PC9heC1sb2FkaW5nLXNwaW5uZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIH1cbjwvZGl2PlxuPGF4LWF1ZGlvLXdhdmUgI2EgW2NvbmZpZ109XCJjb25maWdcIiAob25TdGF0dXNDaGFuZ2VkKT1cImhhbmRsZU9uU3RhdHVzQ2hhbmdlZCgkZXZlbnQpXCI+PC9heC1hdWRpby13YXZlPlxuPGF4LXN1ZmZpeD5cbiAgPGRpdiBjbGFzcz1cImF4LWF1ZGlvLXJhdGUtYnV0dG9uXCIgW2NsYXNzLmF4LXN0YXRlLW93bl09XCIhbWVzc2FnZT8uZnJvbUlkXCIgKGNsaWNrKT1cImhhbmRsZVJhdGVDbGljaygpXCI+XG4gICAge3sgc2VsZWN0ZWRSYXRlKCkgfX1YXG4gIDwvZGl2PlxuPC9heC1zdWZmaXg+XG4iXX0=","import { AXRippleDirective } from '@acorex/cdk/common';\nimport { AXVirtualScrollModule } from '@acorex/cdk/virtual-scroll';\nimport { AXAudioWaveModule } from '@acorex/components/audio-wave';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCircularProgressModule } from '@acorex/components/circular-progress';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFileModule } from '@acorex/core/file';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { NgModule, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXConversationContainerComponent } from './conversation-container/conversation-container.component';\nimport { AXConversationInputComponent } from './conversation-input/conversation-input.component';\nimport { AXConversationMessageComponent } from './conversation-message/conversation-message.component';\nimport { AXConversationMessageAudioComponent } from './conversation-messages/conversation-message-audio/conversation-message-audio.component';\nimport { AXConversationFileMessageComponent } from './conversation-messages/conversation-message-file/conversation-message-file.component';\nimport { AXConversationMessageImageComponent } from './conversation-messages/conversation-message-image/conversation-message-image.component';\nimport { AXConversationTextMessageComponent } from './conversation-messages/conversation-message-text/conversation-message-text.component';\nimport { AXConversationMessageVideoComponent } from './conversation-messages/conversation-message-video/conversation-message-video.component';\nimport { AXConversationVoiceMessageComponent } from './conversation-messages/conversation-message-voice/conversation-message-voice.component';\nimport { AXConversationViewComponent } from './conversation-view/conversation-view.component';\nimport { AXConversationMessageTypeRegistryService } from './services/conversation-message-type-registry.service';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [\n AXConversationViewComponent,\n AXConversationInputComponent,\n AXConversationMessageComponent,\n AXConversationTextMessageComponent,\n AXConversationVoiceMessageComponent,\n AXConversationFileMessageComponent,\n AXConversationContainerComponent,\n AXConversationMessageAudioComponent,\n AXConversationMessageImageComponent,\n AXConversationMessageVideoComponent,\n];\nconst MODULES = [\n CommonModule,\n FormsModule,\n AsyncPipe,\n AXRippleDirective,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXDropdownModule,\n AXFormatModule,\n AXAudioWaveModule,\n AXCircularProgressModule,\n AXDateTimeModule,\n CdkPortalOutlet,\n AXLoadingModule,\n AXAvatarModule,\n AXPopoverModule,\n AXFileModule,\n AXRangeSliderModule,\n AXVirtualScrollModule,\n];\nexport class AXConversationModule {\n static forRoot(config) {\n return {\n ngModule: AXConversationModule,\n providers: [\n {\n provide: 'AXChatModuleFactory',\n useFactory: (registry) => () => {\n if (config?.types?.length) {\n registry.register(...config.types);\n }\n registry.register({\n name: 'text',\n component: AXConversationTextMessageComponent,\n });\n registry.register({\n name: 'voice',\n component: AXConversationVoiceMessageComponent,\n });\n registry.register({\n name: 'file',\n component: AXConversationFileMessageComponent,\n });\n registry.register({\n name: 'audio',\n component: AXConversationMessageAudioComponent,\n });\n registry.register({\n name: 'image',\n component: AXConversationMessageImageComponent,\n });\n registry.register({\n name: 'video',\n component: AXConversationMessageVideoComponent,\n });\n },\n deps: [AXConversationMessageTypeRegistryService],\n multi: true,\n },\n ],\n };\n }\n static forChild(config) {\n return {\n ngModule: AXConversationModule,\n providers: [\n {\n provide: 'AXChatModuleFactory',\n useFactory: (registry) => () => {\n if (config?.types?.length) {\n registry.register(...config.types);\n }\n },\n deps: [AXConversationMessageTypeRegistryService],\n multi: true,\n },\n ],\n };\n }\n /**\n * @ignore\n */\n constructor() {\n const instances = inject('AXChatModuleFactory', { optional: true });\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationModule, imports: [CommonModule,\n FormsModule,\n AsyncPipe,\n AXRippleDirective,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXDropdownModule,\n AXFormatModule,\n AXAudioWaveModule,\n AXCircularProgressModule,\n AXDateTimeModule,\n CdkPortalOutlet,\n AXLoadingModule,\n AXAvatarModule,\n AXPopoverModule,\n AXFileModule,\n AXRangeSliderModule,\n AXVirtualScrollModule, AXConversationViewComponent,\n AXConversationInputComponent,\n AXConversationMessageComponent,\n AXConversationTextMessageComponent,\n AXConversationVoiceMessageComponent,\n AXConversationFileMessageComponent,\n AXConversationContainerComponent,\n AXConversationMessageAudioComponent,\n AXConversationMessageImageComponent,\n AXConversationMessageVideoComponent], exports: [AXConversationViewComponent,\n AXConversationInputComponent,\n AXConversationMessageComponent,\n AXConversationTextMessageComponent,\n AXConversationVoiceMessageComponent,\n AXConversationFileMessageComponent,\n AXConversationContainerComponent,\n AXConversationMessageAudioComponent,\n AXConversationMessageImageComponent,\n AXConversationMessageVideoComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationModule, providers: [AXPopupService], imports: [CommonModule,\n FormsModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXDropdownModule,\n AXFormatModule,\n AXAudioWaveModule,\n AXCircularProgressModule,\n AXDateTimeModule,\n AXLoadingModule,\n AXAvatarModule,\n AXPopoverModule,\n AXFileModule,\n AXRangeSliderModule,\n AXVirtualScrollModule, AXConversationViewComponent,\n AXConversationInputComponent,\n AXConversationMessageComponent,\n AXConversationVoiceMessageComponent,\n AXConversationFileMessageComponent,\n AXConversationMessageAudioComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXConversationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [AXPopupService],\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29udmVyc2F0aW9uL3NyYy9saWIvY29udmVyc2F0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFF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ZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWFZpcnR1YWxTY3JvbGxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2Nkay92aXJ0dWFsLXNjcm9sbCc7XG5pbXBvcnQgeyBBWEF1ZGlvV2F2ZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdWRpby13YXZlJztcbmltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDaXJjdWxhclByb2dyZXNzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NpcmN1bGFyLXByb2dyZXNzJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFJhbmdlU2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3JhbmdlLXNsaWRlcic7XG5pbXBvcnQgeyBBWERhdGVUaW1lTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBBWEZpbGVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZmlsZSc7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Db250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1jb250YWluZXIvY29udmVyc2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY29udmVyc2F0aW9uLWlucHV0L2NvbnZlcnNhdGlvbi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb252ZXJzYXRpb24tbWVzc2FnZS9jb252ZXJzYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlQXVkaW9Db21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby9jb252ZXJzYXRpb24tbWVzc2FnZS1hdWRpby5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25GaWxlTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLWZpbGUvY29udmVyc2F0aW9uLW1lc3NhZ2UtZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS9jb252ZXJzYXRpb24tbWVzc2FnZS1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25UZXh0TWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vY29udmVyc2F0aW9uLW1lc3NhZ2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXRleHQvY29udmVyc2F0aW9uLW1lc3NhZ2UtdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlVmlkZW9Db21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS12aWRlby9jb252ZXJzYXRpb24tbWVzc2FnZS12aWRlby5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Wb2ljZU1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi1tZXNzYWdlcy9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS9jb252ZXJzYXRpb24tbWVzc2FnZS12b2ljZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb252ZXJzYXRpb24tdmlldy9jb252ZXJzYXRpb24tdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZSB9IGZyb20gJy4vY29udmVyc2F0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbnZlcnNhdGlvbi1tZXNzYWdlLXR5cGUtcmVnaXN0cnkuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhDaGF0TW9kdWxlQ29uZmlnIHtcbiAgdHlwZXM6IEFYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVbXTtcbn1cblxuY29uc3QgQ09NUE9ORU5UID0gW1xuICBBWENvbnZlcnNhdGlvblZpZXdDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uSW5wdXRDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgQVhDb252ZXJzYXRpb25UZXh0TWVzc2FnZUNvbXBvbmVudCxcbiAgQVhDb252ZXJzYXRpb25Wb2ljZU1lc3NhZ2VDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uRmlsZU1lc3NhZ2VDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uQ29udGFpbmVyQ29tcG9uZW50LFxuICBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBdWRpb0NvbXBvbmVudCxcbiAgQVhDb252ZXJzYXRpb25NZXNzYWdlSW1hZ2VDb21wb25lbnQsXG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZVZpZGVvQ29tcG9uZW50LFxuXTtcbmNvbnN0IE1PRFVMRVMgPSBbXG4gIENvbW1vbk1vZHVsZSxcbiAgRm9ybXNNb2R1bGUsXG4gIEFzeW5jUGlwZSxcbiAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gIEFYQnV0dG9uTW9kdWxlLFxuICBBWERlY29yYXRvck1vZHVsZSxcbiAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgQVhEcm9wZG93bk1vZHVsZSxcbiAgQVhGb3JtYXRNb2R1bGUsXG4gIEFYQXVkaW9XYXZlTW9kdWxlLFxuICBBWENpcmN1bGFyUHJvZ3Jlc3NNb2R1bGUsXG4gIEFYRGF0ZVRpbWVNb2R1bGUsXG4gIENka1BvcnRhbE91dGxldCxcbiAgQVhMb2FkaW5nTW9kdWxlLFxuICBBWEF2YXRhck1vZHVsZSxcbiAgQVhQb3BvdmVyTW9kdWxlLFxuICBBWEZpbGVNb2R1bGUsXG4gIEFYUmFuZ2VTbGlkZXJNb2R1bGUsXG4gIEFYVmlydHVhbFNjcm9sbE1vZHVsZSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFsuLi5NT0RVTEVTLCAuLi5DT01QT05FTlRdLFxuICBleHBvcnRzOiBbLi4uQ09NUE9ORU5UXSxcbiAgcHJvdmlkZXJzOiBbQVhQb3B1cFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnZlcnNhdGlvbk1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEFYQ2hhdE1vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhDb252ZXJzYXRpb25Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYQ29udmVyc2F0aW9uTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhDaGF0TW9kdWxlRmFjdG9yeScsXG4gICAgICAgICAgdXNlRmFjdG9yeTogKHJlZ2lzdHJ5OiBBWENvbnZlcnNhdGlvbk1lc3NhZ2VUeXBlUmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29uZmlnPy50eXBlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKC4uLmNvbmZpZy50eXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgICAgICAgICAgIG5hbWU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBBWENvbnZlcnNhdGlvblRleHRNZXNzYWdlQ29tcG9uZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgICAgICAgICAgIG5hbWU6ICd2b2ljZScsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogQVhDb252ZXJzYXRpb25Wb2ljZU1lc3NhZ2VDb21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogJ2ZpbGUnLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IEFYQ29udmVyc2F0aW9uRmlsZU1lc3NhZ2VDb21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogJ2F1ZGlvJyxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBBWENvbnZlcnNhdGlvbk1lc3NhZ2VBdWRpb0NvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoe1xuICAgICAgICAgICAgICBuYW1lOiAnaW1hZ2UnLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IEFYQ29udmVyc2F0aW9uTWVzc2FnZUltYWdlQ29tcG9uZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgICAgICAgICAgIG5hbWU6ICd2aWRlbycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogQVhDb252ZXJzYXRpb25NZXNzYWdlVmlkZW9Db21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtBWENvbnZlcnNhdGlvbk1lc3NhZ2VUeXBlUmVnaXN0cnlTZXJ2aWNlXSxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JDaGlsZChjb25maWc/OiBBWENoYXRNb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYQ29udmVyc2F0aW9uTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBWENvbnZlcnNhdGlvbk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogJ0FYQ2hhdE1vZHVsZUZhY3RvcnknLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhDb252ZXJzYXRpb25NZXNzYWdlVHlwZVJlZ2lzdHJ5U2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbmZpZz8udHlwZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlciguLi5jb25maWcudHlwZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYQ29udmVyc2F0aW9uTWVzc2FnZVR5cGVSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGluc3RhbmNlcyA9IGluamVjdDxhbnlbXT4oJ0FYQ2hhdE1vZHVsZUZhY3RvcnknIGFzIGFueSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIGluc3RhbmNlcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgZigpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb252ZXJzYXRpb24vc3JjL2Fjb3JleC1jb21wb25lbnRzLWNvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,MAAM,yBAAyB,SAAS,OAAO,CAAC;AACvD;;ACAO,MAAM,qBAAqB,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/E,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACxL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAC3I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC;AAC/H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACVN,MAAM,kBAAkB,CAAC;AAChC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,IAAI,GAAG;AACpB,YAAY,OAAO,EAAE,CAAC;AACtB,YAAY,OAAO,EAAE,CAAC;AACtB,YAAY,KAAK,EAAE,CAAC;AACpB,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,EAAE,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;AAC9E,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;AACzH,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AACzF,gBAAgB,IAAI,CAAC,mBAAmB,GAAG,MAAM;AACjD,gBAAgB,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC;AAC9D,gBAAgB,IAAI,CAAC,UAAU,GAAG,EAAE;AACpC,gBAAgB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,KAAK,KAAK;AAChF,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACpD,gBAAgB,CAAC,CAAC;AAClB,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1C,gBAAgB,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,MAAM;AACvD,oBAAoB,IAAI,CAAC,aAAa,EAAE;AACxC,gBAAgB,CAAC,EAAE,IAAI,CAAC;AACxB,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACxC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ;AACzD,YAAY,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM;AAC/D,gBAAgB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC/E,gBAAgB,OAAO,CAAC,SAAS,CAAC;AAClC,YAAY,CAAC,CAAC;AACd,YAAY,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE;AACtC,YAAY,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;AACjF,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI;AACrC,YAAY,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC3C,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC;AACjC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE;AACzC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC;AACrC,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjC,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE;AAC/E,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClF,YAAY,GAAG;AACf,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClF,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACrL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACxI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACpFb;AACA;AACA;AACA;AACO,MAAM,gCAAgC,CAAC;AAC9C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpF,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAChE,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM;AAClC,YAAY,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/D,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1D,IAAI;AACJ,IAAI,KAAK;AACT,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAClM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE;AACvV,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gCAAgC,EAAE;AACnF,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,gCAAgC,EAAE;AAC5F,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gCAAgC,EAAE;AAC3F,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,gCAAgC,CAAC;AAC/E,gBAAgB,KAAK,EAAE,IAAI;AAC3B,aAAa;AACb,YAAY,qBAAqB;AACjC,YAAY,kBAAkB;AAC9B,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,mFAAmF,EAAE,MAAM,EAAE,CAAC,syCAAsyC,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACt9C;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,UAAU,EAAE,CAAC;AAC1I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;AAC9G,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gCAAgC,EAAE;AAC/F,wBAAwB,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,gCAAgC,EAAE;AACxG,wBAAwB,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gCAAgC,EAAE;AACvG,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,UAAU,CAAC,MAAM,gCAAgC,CAAC;AAC3F,4BAA4B,KAAK,EAAE,IAAI;AACvC,yBAAyB;AACzB,wBAAwB,qBAAqB;AAC7C,wBAAwB,kBAAkB;AAC1C,qBAAqB,EAAE,QAAQ,EAAE,mFAAmF,EAAE,MAAM,EAAE,CAAC,syCAAsyC,CAAC,EAAE;AACx6C,SAAS,CAAC,EAAE,CAAC;;AChCb;AACA;AACA;AACA;AACA;AACO,MAAM,4BAA4B,SAAS,OAAO,EAAE,yBAAyB,GAAG,eAAe,CAAC,CAAC;AACxG,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAChE,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM;AACpC,YAAY,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AACnD,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjG,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtG,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM;AAChD,YAAY;AACZ,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM;AACxC,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC3G,YAAY,OAAO,WAAW;AAC9B,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9D;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtF,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtF,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjG;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,EAAE;AACzC,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE;AACtC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC1D;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B,IAAI;AACJ,IAAI,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;AAC9D,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;AACvC,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAQ,IAAI,CAAC;AACb,cAAc,cAAc;AAC5B,aAAa,IAAI,CAAC,MAAM;AACxB,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvC,gBAAgB,SAAS,EAAE,IAAI;AAC/B,gBAAgB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;AACzC,gBAAgB,iBAAiB,EAAE,IAAI;AACvC,aAAa,CAAC;AACd,QAAQ,CAAC;AACT,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK;AAC1B,YAAY,MAAM,CAAC;AACnB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,0BAA0B,GAAG;AACjC,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACpC,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACjC,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,cAAc,CAAC,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;AAC/B,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI;AAClC,QAAQ;AACR,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC5B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,WAAW,EAAE,CAAC;AAC1B,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,YAAY,CAAC,CAAC,EAAE;AACpB,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;AAC/B,YAAY,IAAI,CAAC,UAAU,GAAG,KAAK;AACnC,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,WAAW,EAAE,CAAC;AAC1B,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,eAAe,CAAC,CAAC,EAAE;AACvB,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACnD,YAAY,CAAC,CAAC,cAAc,EAAE;AAC9B,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACzD,QAAQ;AACR,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,WAAW,EAAE,CAAC;AAC1B,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;AAC5C,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC9B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7D,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC9B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;AAC1F,YAAY,iBAAiB,EAAE,IAAI;AACnC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACvC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AACzD,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAClC,gBAAgB,SAAS,EAAE,IAAI;AAC/B,gBAAgB,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,gBAAgB,iBAAiB,EAAE,IAAI;AACvC,aAAa,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACvC,QAAQ,IAAI,CAAC,mBAAmB,EAAE;AAClC,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACjC,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,IAAI;AACxB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAChM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,4BAA4B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,EAAE,SAAS,EAAE;AAC/+C,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,4BAA4B,EAAE;AAC/E,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,4BAA4B,EAAE;AACxF,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,4BAA4B,EAAE;AACvF,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AAC3E,gBAAgB,KAAK,EAAE,IAAI;AAC3B,aAAa;AACb,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,+sIAA+sI,EAAE,MAAM,EAAE,CAAC,qwGAAqwG,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,8MAA8M,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACtnT;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;AACtI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;AAC5L,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,4BAA4B,EAAE;AAC3F,wBAAwB,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,4BAA4B,EAAE;AACpG,wBAAwB,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,4BAA4B,EAAE;AACnG,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AACvF,4BAA4B,KAAK,EAAE,IAAI;AACvC,yBAAyB;AACzB,qBAAqB,EAAE,OAAO,EAAE;AAChC,wBAAwB,iBAAiB;AACzC,wBAAwB,wBAAwB;AAChD,wBAAwB,wBAAwB;AAChD,wBAAwB,WAAW;AACnC,wBAAwB,yBAAyB;AACjD,wBAAwB,SAAS;AACjC,wBAAwB,gBAAgB;AACxC,wBAAwB,iBAAiB;AACzC,qBAAqB,EAAE,QAAQ,EAAE,+sIAA+sI,EAAE,MAAM,EAAE,CAAC,qwGAAqwG,CAAC,EAAE;AACngP,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC;AAC1C,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,WAAW;AAClC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,IAAI,EAAE,CAAC,WAAW;AAClC,aAAa,CAAC,EAAE,EAAE,CAAC;;ACvPZ,MAAM,wCAAwC,CAAC;AACtD,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE;AAChC,IAAI;AACJ,IAAI,QAAQ,CAAC,GAAG,OAAO,EAAE;AACzB,QAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3D,IAAI;AACJ,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wCAAwC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3M,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wCAAwC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAClL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wCAAwC,EAAE,UAAU,EAAE,CAAC;AAClJ,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;AACzC,SAAS,CAAC,EAAE,CAAC;;ACFb;AACA;AACA;AACA;AACA;AACO,MAAM,8BAA8B,SAAS,eAAe,CAAC;AACpE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxG,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjG,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAChE,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,wCAAwC,CAAC;AAC/E,QAAQ,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrH,QAAQ,IAAI,CAAC,uBAAuB,GAAG;AACvC,YAAY,KAAK,EAAE,EAAE;AACrB,YAAY,QAAQ,EAAE,KAAK;AAC3B,YAAY,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AACpC,SAAS;AACT,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,EAAE;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,EAAE;AACpC,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;AACrC,YAAY,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACvG,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3D,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM;AAC1C,YAAY,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI;AAC1C,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChE,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;AACzC,IAAI;AACJ;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,uBAAuB,GAAG;AACvC,YAAY,KAAK,EAAE,EAAE;AACrB,YAAY,QAAQ,EAAE,KAAK;AAC3B,YAAY,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AACpC,SAAS;AACT,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;AACnE,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ;AACjD,YAAY;AACZ,QAAQ,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AAC7E,IAAI;AACJ,IAAI,eAAe,CAAC,GAAG,EAAE;AACzB,QAAQ,GAAG,GAAG,GAAG;AACjB,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,SAAS,EAAE,EAAE;AACzC,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AACxE,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC;AAC7F,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC;AAC7F,YAAY,eAAe,CAAC,SAAS,GAAG,EAAE;AAC1C,YAAY,eAAe,CAAC,SAAS,GAAG,EAAE;AAC1C,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC;AAC3E,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC;AAC3E,YAAY,IAAI,MAAM,IAAI,eAAe,EAAE;AAC3C,gBAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAC7C,gBAAgB,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,YAAY;AACZ,YAAY,IAAI,MAAM,IAAI,eAAe,EAAE;AAC3C,gBAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAC7C,gBAAgB,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE;AAC1C,IAAI;AACJ;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE;AAC1C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,CAAC,EAAE;AACpB,QAAQ,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC5D,IAAI;AACJ,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,cAAc,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,GAAG,EAAE,CAAC,CAAC;AAC3F,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAClM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,8BAA8B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,oqHAAoqH,EAAE,MAAM,EAAE,CAAC,2jLAA2jL,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,IAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACjgZ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,CAAC;AACxI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1G,wBAAwB,iBAAiB;AACzC,wBAAwB,eAAe;AACvC,wBAAwB,iBAAiB;AACzC,wBAAwB,wBAAwB;AAChD,wBAAwB,kBAAkB;AAC1C,wBAAwB,2BAA2B;AACnD,wBAAwB,yBAAyB;AACjD,wBAAwB,qBAAqB;AAC7C,wBAAwB,SAAS;AACjC,wBAAwB,YAAY;AACpC,wBAAwB,YAAY;AACpC,wBAAwB,YAAY;AACpC,qBAAqB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC,EAAE,QAAQ,EAAE,oqHAAoqH,EAAE,MAAM,EAAE,CAAC,2jLAA2jL,CAAC,EAAE;AACl2S,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC;AAC5C,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,IAAI,EAAE,CAAC,OAAO;AAC9B,aAAa,CAAC,EAAE,EAAE,CAAC;;AChIZ,MAAM,2BAA2B,CAAC;AACzC;AACO,MAAM,8BAA8B,CAAC;AAC5C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,IAAI;AACJ;AACO,MAAM,kCAAkC,CAAC;AAChD,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACrM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC,CAAC;AACxJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,CAAC;AAC5I,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACJb;AACA;AACA;AACA;AACA;AACO,MAAM,mCAAmC,SAAS,kCAAkC,CAAC;AAC5F;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AACvC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/F;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtG;AACA;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG,QAAQ,eAAe,CAAC,MAAM;AAC9B,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,KAAK;AAC5C,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AACtD,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvF,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzG,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjG,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AAClC,YAAY,IAAI,CAAC,eAAe,EAAE;AAClC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,GAAG,CAAC;AACvC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,IAAI;AACJ;AACA;AACA;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,KAAK,QAAQ;AACjD,YAAY;AACZ,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AACnD,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;AAC3E,IAAI;AACJ;AACA;AACA;AACA,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC;AACzD,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AACjF,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,CAAC,EAAE;AACpB,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,GAAG,CAAC;AACvC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;AAC/B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AACtC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;AAC9B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AACpC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,GAAG,GAAG;AAC9C,QAAQ;AACR,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,EAAE;AAC3C,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,GAAG,CAAC;AAC5C,QAAQ;AACR,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AACzC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,GAAG,CAAC;AAC5C,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACrM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,mCAAmC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,2qCAA2qC,EAAE,MAAM,EAAE,CAAC,igBAAigB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACv2G;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,UAAU,EAAE,CAAC;AAC7I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;AAChH,wBAAwB,2BAA2B;AACnD,wBAAwB,iBAAiB;AACzC,wBAAwB,sBAAsB;AAC9C,wBAAwB,WAAW;AACnC,wBAAwB,SAAS;AACjC,wBAAwB,YAAY;AACpC,qBAAqB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,EAAE,QAAQ,EAAE,2qCAA2qC,EAAE,MAAM,EAAE,CAAC,igBAAigB,CAAC,EAAE;AACpzD,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;ACrJvC;AACA;AACA;AACA;AACA;AACO,MAAM,2BAA2B,SAAS,eAAe,CAAC;AACjE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAChE,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxG,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,EAAE;AAC3C,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE;AAChC,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,EAAE;AACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE;AACnC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAC3E,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAClD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;AACxE,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC/L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,yhBAAyhB,EAAE,MAAM,EAAE,CAAC,6SAA6S,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,oCAAoC,EAAE,QAAQ,EAAE,+BAA+B,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,8BAA8B,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,EAAE,CAAC,mBAAmB,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,qBAAqB,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,+BAA+B,EAAE,QAAQ,EAAE,0BAA0B,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/vE;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,oCAAoC,EAAE,8BAA8B,EAAE,+BAA+B,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC,EAAE,QAAQ,EAAE,yhBAAyhB,EAAE,MAAM,EAAE,CAAC,6SAA6S,CAAC,EAAE;AAChrC,SAAS,CAAC,EAAE,CAAC;;ACnDb;AAWA;AACA;AACA;AACA;AACA;AACO,MAAM,kCAAkC,SAAS,kCAAkC,CAAC;AAC3F,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,MAAM;AAC3C,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACpD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjF,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AAChD;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,2BAA2B,CAAC;AACzD,IAAI;AACJ,IAAI,KAAK;AACT;AACA;AACA;AACA;AACA,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACnG,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACnG,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACtM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,kCAAkC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,8BAA8B,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,qsBAAqsB,EAAE,MAAM,EAAE,CAAC,6OAA6O,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACxwD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,CAAC;AAC5I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,8BAA8B,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,2BAA2B,EAAE,yBAAyB,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC,EAAE,QAAQ,EAAE,qsBAAqsB,EAAE,MAAM,EAAE,CAAC,6OAA6O,CAAC,EAAE;AACpuC,SAAS,CAAC,EAAE,CAAC;;ACpEb;AACA;AACA;AACA;AACA;AACO,MAAM,sCAAsC,CAAC;AACpD,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACxM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,sCAAsC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,qCAAqC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,kDAAkD,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,8KAA8K,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/mB;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE,UAAU,EAAE,CAAC;AAChJ,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,qCAAqC,EAAE,QAAQ,EAAE,CAAC,kDAAkD,CAAC,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,8KAA8K,CAAC,EAAE;AACnc,SAAS,CAAC,EAAE,CAAC;;ACTb;AACA;AACA;AACA;AACA;AACO,MAAM,mCAAmC,SAAS,kCAAkC,CAAC;AAC5F,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC3C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG;AACxB,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,MAAM,EAAE,KAAK;AACzB,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,oBAAoB,EAAE,KAAK;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,MAAM;AAC3C,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AACrD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,KAAK;AACT;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC;AACb,aAAa,IAAI,CAAC,sCAAsC,EAAE;AAC1D,YAAY,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;AAC9C,YAAY,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;AACxC,YAAY,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;AACpC,YAAY,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;AAClD,YAAY,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;AAClD,YAAY,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB;AACpE,YAAY,IAAI,EAAE;AAClB,gBAAgB,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE;AACrC,aAAa;AACb,SAAS;AACT,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK;AACzB,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACvM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,mCAAmC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,yDAAyD,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,8CAA8C,CAAC,EAAE,CAAC,CAAC;AACvf;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,UAAU,EAAE,CAAC;AAC7I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE,QAAQ,EAAE,CAAC,yDAAyD,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,8CAA8C,CAAC,EAAE;AAC/S,SAAS,CAAC,EAAE,CAAC;;AC7Db;AACA;AACA;AACA;AACA;AACO,MAAM,kCAAkC,SAAS,kCAAkC,CAAC;AAC3F,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/E;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAChE,IAAI;AACJ,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7C,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;AAClC,YAAY;AACZ,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;AACnH,QAAQ,QAAQ,YAAY,CAAC,IAAI;AACjC,YAAY,KAAK,MAAM;AACvB,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;AAChD,gBAAgB;AAChB,YAAY,KAAK,OAAO;AACxB,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;AACjD,gBAAgB;AAChB,YAAY,KAAK,OAAO;AACxB,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;AACjD,gBAAgB;AAChB,YAAY,KAAK,OAAO;AACxB,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;AACjD,gBAAgB;AAChB,YAAY,KAAK,OAAO;AACxB,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;AACjD,gBAAgB;AAChB,YAAY,KAAK,MAAM;AACvB,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;AAChD,gBAAgB;AAChB;AACA,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACtM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,kCAAkC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AAC3V;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,gEAAgE,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,CAAC;AAC5I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE,CAAC,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,gEAAgE,CAAC,EAAE;AACrO,SAAS,CAAC,EAAE,CAAC;;AChIb;AACA;AACA;AACA;AACA;AACO,MAAM,mCAAmC,SAAS,kCAAkC,CAAC;AAC5F,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvF,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AACjD,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACvM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,mCAAmC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,4CAA4C,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;AAC7b;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,UAAU,EAAE,CAAC;AAC7I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE,QAAQ,EAAE,CAAC,4CAA4C,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,iCAAiC,CAAC,EAAE;AAChQ,SAAS,CAAC,EAAE,CAAC;;ACnBb;AACA;AACA;AACA;AACA;AACO,MAAM,mCAAmC,SAAS,kCAAkC,CAAC;AAC5F,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;AACjC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,2BAA2B,CAAC;AACzD,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtG;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpF,QAAQ,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,MAAM;AAC3C,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO;AACnD,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI;AACxC,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;AACxD,gBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,YAAY,CAAC,CAAC;AACd,YAAY,IAAI,CAAC,qBAAqB,EAAE;AACxC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,KAAK;AACT;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,SAAS,GAAG,EAAE;AAC1B,QAAQ,IAAI,aAAa,GAAG,EAAE;AAC9B,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChD,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACrC,gBAAgB,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,8BAA8B,CAAC;AAC5G,gBAAgB,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,mCAAmC,CAAC;AACrH,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,4BAA4B,CAAC;AAC1G,gBAAgB,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,iCAAiC,CAAC;AACnH,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS;AACzC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,aAAa;AACjD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM;AACvC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1C,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,CAAC,EAAE;AAC7B,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3D,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1C,QAAQ;AACR,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AACpC,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,YAAY,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAChE,QAAQ;AACR,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE;AAClC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;AACxC,YAAY,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAChE,QAAQ;AACR,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE;AACnC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzC,QAAQ;AACR,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,EAAE;AACvC,YAAY,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1E,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3D,QAAQ;AACR,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE;AAClC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;AACxC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AACtC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACzB,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1D,YAAY,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AACpE,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC/C,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,gBAAgB,GAAG,cAAc,CAAC,CAAC;AAC3E,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACvM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,mCAAmC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,+BAA+B,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,ymDAAymD,EAAE,MAAM,EAAE,CAAC,gvBAAgvB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACr+G;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,UAAU,EAAE,CAAC;AAC7I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,2BAA2B,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,EAAE,QAAQ,EAAE,ymDAAymD,EAAE,MAAM,EAAE,CAAC,gvBAAgvB,CAAC,EAAE;AACxrF,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC;AACtC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,GAAG;AAC1B,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,IAAI,EAAE,CAAC,OAAO;AAC9B,aAAa,CAAC,EAAE,EAAE,CAAC;;ACzJnB,MAAM,SAAS,GAAG;AAClB,IAAI,2BAA2B;AAC/B,IAAI,4BAA4B;AAChC,IAAI,8BAA8B;AAClC,IAAI,kCAAkC;AACtC,IAAI,mCAAmC;AACvC,IAAI,kCAAkC;AACtC,IAAI,gCAAgC;AACpC,IAAI,mCAAmC;AACvC,IAAI,mCAAmC;AACvC,IAAI,mCAAmC;AACvC,CAAC;AACD,MAAM,OAAO,GAAG;AAChB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,SAAS;AACb,IAAI,iBAAiB;AACrB,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,wBAAwB;AAC5B,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI,eAAe;AACnB,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,YAAY;AAChB,IAAI,mBAAmB;AACvB,IAAI,qBAAqB;AACzB,CAAC;AACM,MAAM,oBAAoB,CAAC;AAClC,IAAI,OAAO,OAAO,CAAC,MAAM,EAAE;AAC3B,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,oBAAoB;AAC1C,YAAY,SAAS,EAAE;AACvB,gBAAgB;AAChB,oBAAoB,OAAO,EAAE,qBAAqB;AAClD,oBAAoB,UAAU,EAAE,CAAC,QAAQ,KAAK,MAAM;AACpD,wBAAwB,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AACnD,4BAA4B,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9D,wBAAwB;AACxB,wBAAwB,QAAQ,CAAC,QAAQ,CAAC;AAC1C,4BAA4B,IAAI,EAAE,MAAM;AACxC,4BAA4B,SAAS,EAAE,kCAAkC;AACzE,yBAAyB,CAAC;AAC1B,wBAAwB,QAAQ,CAAC,QAAQ,CAAC;AAC1C,4BAA4B,IAAI,EAAE,OAAO;AACzC,4BAA4B,SAAS,EAAE,mCAAmC;AAC1E,yBAAyB,CAAC;AAC1B,wBAAwB,QAAQ,CAAC,QAAQ,CAAC;AAC1C,4BAA4B,IAAI,EAAE,MAAM;AACxC,4BAA4B,SAAS,EAAE,kCAAkC;AACzE,yBAAyB,CAAC;AAC1B,wBAAwB,QAAQ,CAAC,QAAQ,CAAC;AAC1C,4BAA4B,IAAI,EAAE,OAAO;AACzC,4BAA4B,SAAS,EAAE,mCAAmC;AAC1E,yBAAyB,CAAC;AAC1B,wBAAwB,QAAQ,CAAC,QAAQ,CAAC;AAC1C,4BAA4B,IAAI,EAAE,OAAO;AACzC,4BAA4B,SAAS,EAAE,mCAAmC;AAC1E,yBAAyB,CAAC;AAC1B,wBAAwB,QAAQ,CAAC,QAAQ,CAAC;AAC1C,4BAA4B,IAAI,EAAE,OAAO;AACzC,4BAA4B,SAAS,EAAE,mCAAmC;AAC1E,yBAAyB,CAAC;AAC1B,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,EAAE,CAAC,wCAAwC,CAAC;AACpE,oBAAoB,KAAK,EAAE,IAAI;AAC/B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,QAAQ,CAAC,MAAM,EAAE;AAC5B,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,oBAAoB;AAC1C,YAAY,SAAS,EAAE;AACvB,gBAAgB;AAChB,oBAAoB,OAAO,EAAE,qBAAqB;AAClD,oBAAoB,UAAU,EAAE,CAAC,QAAQ,KAAK,MAAM;AACpD,wBAAwB,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AACnD,4BAA4B,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9D,wBAAwB;AACxB,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,EAAE,CAAC,wCAAwC,CAAC;AACpE,oBAAoB,KAAK,EAAE,IAAI;AAC/B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3E,QAAQ,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK;AAClC,YAAY,CAAC,EAAE;AACf,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,CAAC,YAAY;AAC3J,YAAY,WAAW;AACvB,YAAY,SAAS;AACrB,YAAY,iBAAiB;AAC7B,YAAY,cAAc;AAC1B,YAAY,iBAAiB;AAC7B,YAAY,mBAAmB;AAC/B,YAAY,gBAAgB;AAC5B,YAAY,cAAc;AAC1B,YAAY,iBAAiB;AAC7B,YAAY,wBAAwB;AACpC,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,eAAe;AAC3B,YAAY,cAAc;AAC1B,YAAY,eAAe;AAC3B,YAAY,YAAY;AACxB,YAAY,mBAAmB;AAC/B,YAAY,qBAAqB,EAAE,2BAA2B;AAC9D,YAAY,4BAA4B;AACxC,YAAY,8BAA8B;AAC1C,YAAY,kCAAkC;AAC9C,YAAY,mCAAmC;AAC/C,YAAY,kCAAkC;AAC9C,YAAY,gCAAgC;AAC5C,YAAY,mCAAmC;AAC/C,YAAY,mCAAmC;AAC/C,YAAY,mCAAmC,CAAC,EAAE,OAAO,EAAE,CAAC,2BAA2B;AACvF,YAAY,4BAA4B;AACxC,YAAY,8BAA8B;AAC1C,YAAY,kCAAkC;AAC9C,YAAY,mCAAmC;AAC/C,YAAY,kCAAkC;AAC9C,YAAY,gCAAgC;AAC5C,YAAY,mCAAmC;AAC/C,YAAY,mCAAmC;AAC/C,YAAY,mCAAmC,CAAC,EAAE,CAAC,CAAC;AACpD,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY;AACxL,YAAY,WAAW;AACvB,YAAY,cAAc;AAC1B,YAAY,iBAAiB;AAC7B,YAAY,mBAAmB;AAC/B,YAAY,gBAAgB;AAC5B,YAAY,cAAc;AAC1B,YAAY,iBAAiB;AAC7B,YAAY,wBAAwB;AACpC,YAAY,gBAAgB;AAC5B,YAAY,eAAe;AAC3B,YAAY,cAAc;AAC1B,YAAY,eAAe;AAC3B,YAAY,YAAY;AACxB,YAAY,mBAAmB;AAC/B,YAAY,qBAAqB,EAAE,2BAA2B;AAC9D,YAAY,4BAA4B;AACxC,YAAY,8BAA8B;AAC1C,YAAY,mCAAmC;AAC/C,YAAY,kCAAkC;AAC9C,YAAY,mCAAmC,CAAC,EAAE,CAAC,CAAC;AACpD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;AACvD,oBAAoB,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;AAC3C,oBAAoB,SAAS,EAAE,CAAC,cAAc,CAAC;AAC/C,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;ACxMvC;AACA;AACA;;;;"}