@acorex/modules 20.0.5 → 20.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/conversation/index.d.ts +157 -217
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs → acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs} +2 -2
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs.map → acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs.map} +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs → acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs} +9 -9
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs.map → acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs → acorex-modules-auth-app-chooser.component-C60idNYx.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs.map → acorex-modules-auth-app-chooser.component-C60idNYx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-eC1_ukrb.mjs → acorex-modules-auth-login.module-siRdi16m.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-eC1_ukrb.mjs.map → acorex-modules-auth-login.module-siRdi16m.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-DpfqRgAl.mjs → acorex-modules-auth-master.layout-BJCAe5Ai.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-DpfqRgAl.mjs.map → acorex-modules-auth-master.layout-BJCAe5Ai.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-DAB9dWB8.mjs → acorex-modules-auth-password.component-6-EEsfc2.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-DAB9dWB8.mjs.map → acorex-modules-auth-password.component-6-EEsfc2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-rE9yrcGW.mjs → acorex-modules-auth-password.component-VhDUmkMc.mjs} +3 -3
- package/fesm2022/acorex-modules-auth-password.component-VhDUmkMc.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-EGvejNu9.mjs → acorex-modules-auth-routes-BwBn4o81.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-EGvejNu9.mjs.map → acorex-modules-auth-routes-BwBn4o81.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-DF3_fgzH.mjs → acorex-modules-auth-two-factor.module-D7NgZHmC.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-DF3_fgzH.mjs.map → acorex-modules-auth-two-factor.module-D7NgZHmC.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs → acorex-modules-auth-user-sessions.component-DhlBCxly.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs.map → acorex-modules-auth-user-sessions.component-DhlBCxly.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1762 -1568
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +9 -9
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +3 -3
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs → acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs} +6 -6
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-list-version.component-DidjxkmH.mjs → acorex-modules-platform-management-list-version.component-CSNKxghv.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-list-version.component-DidjxkmH.mjs.map → acorex-modules-platform-management-list-version.component-CSNKxghv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs → acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs} +35 -25
- package/fesm2022/acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs +589 -0
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +208 -0
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-security-management.mjs +582 -72
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs → acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs} +2 -2
- package/fesm2022/acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -1
- package/package.json +5 -1
- package/report-management/README.md +356 -0
- package/report-management/index.d.ts +39 -0
- package/security-management/index.d.ts +162 -2
- package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs +0 -218
- package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs +0 -41
- package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs +0 -20
- package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs +0 -51
- package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs +0 -21
- package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs +0 -20
- package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-conversation.mjs","sources":["../tmp-esm2022/conversation/lib/const.js","../tmp-esm2022/conversation/lib/entities/message/message.service.js","../tmp-esm2022/conversation/lib/entities/message/message.entity.js","../tmp-esm2022/conversation/lib/entities/message/message.types.js","../tmp-esm2022/conversation/lib/entities/room/room.service.js","../tmp-esm2022/conversation/lib/entities/room/room.entity.js","../tmp-esm2022/conversation/lib/entity.provider.js","../tmp-esm2022/conversation/lib/features/chat/chat.service.js","../tmp-esm2022/conversation/lib/features/chat/components/chat-item/chat-item.component.js","../tmp-esm2022/conversation/lib/features/chat/chat.component.js","../tmp-esm2022/conversation/lib/features/chat/chat-preview.helper.js","../tmp-esm2022/conversation/lib/features/chat/components/chat-preview/chat-preview.component.js","../tmp-esm2022/conversation/lib/features/comment/comment.service.js","../tmp-esm2022/conversation/lib/features/comment/comment-lookup-popup.component.js","../tmp-esm2022/conversation/lib/features/comment/comment-list-view.component.js","../tmp-esm2022/conversation/lib/features/widget/share/comment/comment-widget-view.component.js","../tmp-esm2022/conversation/lib/features/widget/share/comment/comment-widget.config.js","../tmp-esm2022/conversation/lib/conversation.module.js","../tmp-esm2022/conversation/acorex-modules-conversation.js"],"sourcesContent":["const config = {\n i18n: 'conversation',\n module: 'Conversation',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'conversation',\n name: config.module,\n title: `t('module-name', {scope:\"${config.i18n}\"})`,\n icon: 'fa-light fa-comments',\n },\n entities: {\n room: {\n name: 'room',\n title: `t(\"room.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Room`,\n icon: 'fa-light fa-comments',\n },\n message: {\n name: 'message',\n title: `t(\"message.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Message`,\n icon: 'fa-light fa-message',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxNQUFNLEdBQUc7SUFDYixJQUFJLEVBQUUsY0FBYztJQUNwQixNQUFNLEVBQUUsY0FBYztDQUN2QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLE1BQU07SUFDTixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsY0FBYztRQUNyQixJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDbkIsS0FBSyxFQUFFLDRCQUE0QixNQUFNLENBQUMsSUFBSSxLQUFLO1FBQ25ELElBQUksRUFBRSxzQkFBc0I7S0FDN0I7SUFDRCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxvQ0FBb0MsTUFBTSxDQUFDLElBQUksTUFBTTtZQUM1RCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxPQUFPO1lBQy9CLElBQUksRUFBRSxzQkFBc0I7U0FDN0I7UUFDRCxPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSx1Q0FBdUMsTUFBTSxDQUFDLElBQUksTUFBTTtZQUMvRCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxVQUFVO1lBQ2xDLElBQUksRUFBRSxxQkFBcUI7U0FDNUI7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb25maWcgPSB7XG4gIGkxOG46ICdjb252ZXJzYXRpb24nLFxuICBtb2R1bGU6ICdDb252ZXJzYXRpb24nLFxufTtcblxuZXhwb3J0IGNvbnN0IFJvb3RDb25maWcgPSB7XG4gIGNvbmZpZyxcbiAgbW9kdWxlOiB7XG4gICAgcm91dGU6ICdjb252ZXJzYXRpb24nLFxuICAgIG5hbWU6IGNvbmZpZy5tb2R1bGUsXG4gICAgdGl0bGU6IGB0KCdtb2R1bGUtbmFtZScsIHtzY29wZTpcIiR7Y29uZmlnLmkxOG59XCJ9KWAsXG4gICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNvbW1lbnRzJyxcbiAgfSxcbiAgZW50aXRpZXM6IHtcbiAgICByb29tOiB7XG4gICAgICBuYW1lOiAncm9vbScsXG4gICAgICB0aXRsZTogYHQoXCJyb29tLnBsdXJhbC10aXRsZVwiLCB7IHNjb3BlOiBcIiR7Y29uZmlnLmkxOG59XCIgfSlgLFxuICAgICAgc291cmNlOiBgJHtjb25maWcubW9kdWxlfS5Sb29tYCxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS1jb21tZW50cycsXG4gICAgfSxcbiAgICBtZXNzYWdlOiB7XG4gICAgICBuYW1lOiAnbWVzc2FnZScsXG4gICAgICB0aXRsZTogYHQoXCJtZXNzYWdlLnBsdXJhbC10aXRsZVwiLCB7IHNjb3BlOiBcIiR7Y29uZmlnLmkxOG59XCIgfSlgLFxuICAgICAgc291cmNlOiBgJHtjb25maWcubW9kdWxlfS5NZXNzYWdlYCxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS1tZXNzYWdlJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMMessageService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMMessageServiceImpl extends AXMMessageService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.message.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMMessageServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMMessageServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMMessageServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHekMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSx3QkFBd0Q7Q0FBRztBQUczRyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsaUJBQWlCO0lBQzFEO1FBQ0UsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDOzhHQUhVLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Db252ZXJzYXRpb25NZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlLnR5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYTU1lc3NhZ2VTZXJ2aWNlIGV4dGVuZHMgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPHN0cmluZywgQVhNQ29udmVyc2F0aW9uTWVzc2FnZT4ge31cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTU1lc3NhZ2VTZXJ2aWNlSW1wbCBleHRlbmRzIEFYTU1lc3NhZ2VTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLm1lc3NhZ2UubmFtZX1gKTtcbiAgfVxufVxuIl19","import { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMMessageService } from './message.service';\nexport async function messageFactory(injector) {\n const dataService = injector.get(AXMMessageService);\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.message.name,\n source: '',\n title: RootConfig.entities.message.title,\n formats: {\n individual: RootConfig.entities.message.title,\n plural: RootConfig.entities.message.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.message.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLFFBQWtCO0lBQ3JELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUVwQyxNQUFNLFNBQVMsR0FBYztRQUMzQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQzlCLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1FBQ3RDLE1BQU0sRUFBRSxFQUFFO1FBQ1YsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7UUFDeEMsT0FBTyxFQUFFO1lBQ1AsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDN0MsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDekMsWUFBWSxFQUFFO2dCQUNaLEtBQUssRUFBRSxhQUFhO2dCQUNwQixXQUFXLEVBQUUsVUFBVSxDQUFD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T0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsTUFBTTs0QkFDWixLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLGtDQUFrQzs0QkFDekMsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7cUJBQ0Y7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMLGtCQUFrQixDQUFDOzRCQUNqQixLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO3lCQUN0QyxDQUFDO3FCQUNIO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRW50aXR5LCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVF1ZXJ5VHlwZSwgY3JlYXRlQWxsUXVlcnlWaWV3IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2Uuc2VydmljZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtZXNzYWdlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPEFYUEVudGl0eSB8IG51bGw+IHtcbiAgY29uc3QgZGF0YVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQVhNTWVzc2FnZVNlcnZpY2UpO1xuICBjb25zdCBpMThuID0gUm9vdENvbmZpZy5jb25maWcuaTE4bjtcblxuICBjb25zdCBlbnRpdHlEZWY6IEFYUEVudGl0eSA9IHtcbiAgICBtb2R1bGU6IFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gICAgbmFtZTogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLm5hbWUsXG4gICAgc291cmNlOiAnJyxcbiAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLnRpdGxlLFxuICAgIGZvcm1hdHM6IHtcbiAgICAgIGluZGl2aWR1YWw6IFJvb3RDb25maWcuZW50aXRpZXMubWVzc2FnZS50aXRsZSxcbiAgICAgIHBsdXJhbDogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLnRpdGxlLFxuICAgICAgc2VhcmNoUmVzdWx0OiB7XG4gICAgICAgIHRpdGxlOiAne3sgdGl0bGUgfX0nLFxuICAgICAgICBkZXNjcmlwdGlvbjogUm9vdENvbmZpZy5tb2R1bGUudGl0bGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVsYXRlZEVudGl0aWVzOiBbXSxcbiAgICBncm91cHM6IFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgdGl0bGU6IFJvb3RDb25maWcuZW50aXRpZXMubWVzc2FnZS50aXRsZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgdGl0bGU6IGB0KFwibmFtZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdGl0bGU6IGB0KFwidGl0bGVcIiwgeyBzY29wZTogXCJjb21tb25cIiB9KWAsXG4gICAgICAgIGdyb3VwSWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGFkdmFuY2U6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmxpbmU6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW3sgbmFtZTogJ25hbWUnIH0sIHsgbmFtZTogJ3RpdGxlJyB9XSxcbiAgICBjb21tYW5kczoge1xuICAgICAgY3JlYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBkYXRhU2VydmljZS5pbnNlcnRPbmUoZGF0YSk7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlcyB9O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRlbGV0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5kZWxldGVPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHVwZGF0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZU9uZShkYXRhLmlkLCBkYXRhKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBxdWVyaWVzOiB7XG4gICAgICBieUtleToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5nZXRPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuU2luZ2xlLFxuICAgICAgfSxcbiAgICAgIGxpc3Q6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5xdWVyeSh7IHNraXA6IGUuc2tpcCwgdGFrZTogZS50YWtlLCBmaWx0ZXI6IGUuZmlsdGVyIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuTGlzdCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnRlcmZhY2VzOiB7XG4gICAgICBtYXN0ZXI6IHtcbiAgICAgICAgY3JlYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgc2luZ2xlOiB7XG4gICAgICAgICAgdGl0bGU6ICd7e3RpdGxlfX0nLFxuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnc2VjdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYWN0aW9uczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIGxpc3Q6IHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiBgdChcImNyZWF0ZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5UeXBlTGV2ZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ3QoXCJkZWxldGVJdGVtc1wiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRldGFpbFwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ29wZW4tZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdzZWNvbmRhcnknLFxuICAgICAgICAgICAgICB0eXBlOiAndmlldycsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRlbGV0ZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdmlld3M6IFtcbiAgICAgICAgICAgIGNyZWF0ZUFsbFF1ZXJ5Vmlldyh7XG4gICAgICAgICAgICAgIHNvcnRzOiBbeyBuYW1lOiAnbmFtZScsIGRpcjogJ2FzYycgfV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBlbnRpdHlEZWY7XG59XG4iXX0=","// === Shared Types ===\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2UudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gPT09IFNoYXJlZCBUeXBlcyA9PT1cblxuaW1wb3J0IHsgQVhQQ29udGVudCwgQVhQVXNlclJlZmVyZW5jZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5cbmV4cG9ydCB0eXBlIEFYTVNlZW5UeXBlID0gJ2RlbGl2ZXJlZCcgfCAncmVhZCc7XG5leHBvcnQgdHlwZSBBWE1SZWFjdGlvblR5cGUgPSAnbGlrZScgfCAnbG92ZScgfCAnbGF1Z2gnIHwgJ2FuZ3J5JyB8ICdzYWQnIHwgc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uIHtcbiAgYXV0aG9yOiBBWFBVc2VyUmVmZXJlbmNlO1xuICB0eXBlOiBBWE1SZWFjdGlvblR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhNQ29udmVyc2F0aW9uU2VlbiB7XG4gIGF1dGhvcjogQVhQVXNlclJlZmVyZW5jZTtcbiAgdHlwZTogQVhNU2VlblR5cGU7XG59XG5cbi8vID09PSBDb3JlIE1vZGVscyA9PT1cblxuZXhwb3J0IGludGVyZmFjZSBBWE1Db252ZXJzYXRpb25NZXNzYWdlIGV4dGVuZHMgQVhQRW50aXR5TW9kZWw8c3RyaW5nPiB7XG4gIHJvb21JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBBWFBDb250ZW50O1xuICBhdXRob3I6IEFYUFVzZXJSZWZlcmVuY2U7XG4gIHJlcGx5SWQ/OiBzdHJpbmcgfCBudWxsO1xuICByZWFjdGlvbnM/OiBBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdO1xuICBzZWVuPzogQVhNQ29udmVyc2F0aW9uU2VlbltdO1xufVxuIl19","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMRoomService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMRoomServiceImpl extends AXMRoomService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.room.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMRoomServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMRoomServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMRoomServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0aWVzL3Jvb20vcm9vbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHekMsTUFBTSxPQUFnQixjQUFlLFNBQVEsd0JBQXFEO0NBQUc7QUFHckcsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFDcEQ7UUFDRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBSFUsa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTUNvbnZlcnNhdGlvblJvb20gfSBmcm9tICcuL3Jvb20udHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNUm9vbVNlcnZpY2UgZXh0ZW5kcyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGw8c3RyaW5nLCBBWE1Db252ZXJzYXRpb25Sb29tPiB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUm9vbVNlcnZpY2VJbXBsIGV4dGVuZHMgQVhNUm9vbVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMucm9vbS5uYW1lfWApO1xuICB9XG59XG4iXX0=","import { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMRoomService } from './room.service';\nexport async function roomFactory(injector) {\n const dataService = injector.get(AXMRoomService);\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.room.name,\n source: '',\n title: RootConfig.entities.room.title,\n formats: {\n individual: RootConfig.entities.room.title,\n plural: RootConfig.entities.room.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.room.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZW50aXRpZXMvcm9vbS9yb29tLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxRQUFrQjtJQUNsRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRXBDLE1BQU0sU0FBUyxHQUFjO1FBQzNCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUk7UUFDbkMsTUFBTSxFQUFFLEVBQUU7UUFDVixLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztRQUNyQyxPQUFPLEVBQUU7WUFDUCxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUMxQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN0QyxZQUFZLEVBQUU7Z0JBQ1osS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLFdBQVcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEtB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YTs0QkFDdEIsUUFBUSxFQUFFLFdBQVc7NEJBQ3JCLElBQUksRUFBRSxNQUFNOzRCQUNaLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO3lCQUN4Qzt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsa0NBQWtDOzRCQUN6QyxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFdBQVc7NEJBQ3JCLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO3lCQUN4QztxQkFDRjtvQkFDRCxLQUFLLEVBQUU7d0JBQ0wsa0JBQWtCLENBQUM7NEJBQ2pCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7eUJBQ3RDLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBFbnRpdHksIEFYUEVudGl0eUNvbW1hbmRTY29wZSwgQVhQRW50aXR5UXVlcnlUeXBlLCBjcmVhdGVBbGxRdWVyeVZpZXcgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Sb29tU2VydmljZSB9IGZyb20gJy4vcm9vbS5zZXJ2aWNlJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJvb21GYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdG9yLmdldChBWE1Sb29tU2VydmljZSk7XG4gIGNvbnN0IGkxOG4gPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuXG4gIGNvbnN0IGVudGl0eURlZjogQVhQRW50aXR5ID0ge1xuICAgIG1vZHVsZTogUm9vdENvbmZpZy5tb2R1bGUubmFtZSxcbiAgICBuYW1lOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20ubmFtZSxcbiAgICBzb3VyY2U6ICcnLFxuICAgIHRpdGxlOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20udGl0bGUsXG4gICAgZm9ybWF0czoge1xuICAgICAgaW5kaXZpZHVhbDogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLnRpdGxlLFxuICAgICAgcGx1cmFsOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20udGl0bGUsXG4gICAgICBzZWFyY2hSZXN1bHQ6IHtcbiAgICAgICAgdGl0bGU6ICd7eyB0aXRsZSB9fScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLnRpdGxlLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHByb3BlcnRpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICB0aXRsZTogYHQoXCJuYW1lXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSlgLFxuICAgICAgICBncm91cElkOiAnc2VjdGlvbicsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBzb3J0OiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICBhZHZhbmNlOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5saW5lOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcnVsZTogJ3JlcXVpcmVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICB0aXRsZTogYHQoXCJ0aXRsZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjb2x1bW5zOiBbeyBuYW1lOiAnbmFtZScgfSwgeyBuYW1lOiAndGl0bGUnIH1dLFxuICAgIGNvbW1hbmRzOiB7XG4gICAgICBjcmVhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGRhdGFTZXJ2aWNlLmluc2VydE9uZShkYXRhKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogcmVzIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVsZXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmdldE9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5TaW5nbGUsXG4gICAgICB9LFxuICAgICAgbGlzdDoge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnF1ZXJ5KHsgc2tpcDogZS5za2lwLCB0YWtlOiBlLnRha2UsIGZpbHRlcjogZS5maWx0ZXIgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5MaXN0LFxuICAgICAgfSxcbiAgICB9LFxuICAgIGludGVyZmFjZXM6IHtcbiAgICAgIG1hc3Rlcjoge1xuICAgICAgICBjcmVhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBzaW5nbGU6IHtcbiAgICAgICAgICB0aXRsZTogJ3t7dGl0bGV9fScsXG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6IGB0KFwiY3JlYXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSlgLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnY3JlYXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRlbGV0ZUl0ZW1zXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGV0YWlsXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnb3Blbi1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICd2aWV3JyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGVsZXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB2aWV3czogW1xuICAgICAgICAgICAgY3JlYXRlQWxsUXVlcnlWaWV3KHtcbiAgICAgICAgICAgICAgc29ydHM6IFt7IG5hbWU6ICduYW1lJywgZGlyOiAnYXNjJyB9XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIGVudGl0eURlZjtcbn1cbiJdfQ==","import { Injectable, Injector } from '@angular/core';\nimport { RootConfig } from './const';\nimport { messageFactory, roomFactory } from './entities';\nimport * as i0 from \"@angular/core\";\nexport class AXMConversationModuleEntityProvider {\n constructor(injector) {\n this.injector = injector;\n }\n preload() {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity) => ({\n module: module,\n entity: entity.name,\n }));\n }\n async get(moduleName, entityName) {\n switch (entityName) {\n case 'room':\n return roomFactory(this.injector);\n case 'message':\n return messageFactory(this.injector);\n default:\n return null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModuleEntityProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModuleEntityProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModuleEntityProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0eS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUd6RCxNQUFNLE9BQU8sbUNBQW1DO0lBQzlDLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRW5DLE9BQU87UUFDWixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUUsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7U0FDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO1FBQ3JELFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDbkIsS0FBSyxNQUFNO2dCQUNULE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDOzhHQXBCVSxtQ0FBbUM7a0hBQW5DLG1DQUFtQzs7MkZBQW5DLG1DQUFtQztrQkFEL0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEVudGl0eSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUEVudGl0eURlZmluaXRpb25Mb2FkZXIsIEFYUEVudGl0eVByZWxvYWRFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IG1lc3NhZ2VGYWN0b3J5LCByb29tRmFjdG9yeSB9IGZyb20gJy4vZW50aXRpZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNQ29udmVyc2F0aW9uTW9kdWxlRW50aXR5UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBFbnRpdHlEZWZpbml0aW9uTG9hZGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgcHVibGljIHByZWxvYWQoKTogQVhQRW50aXR5UHJlbG9hZEVudGl0eVtdIHtcbiAgICBjb25zdCBtb2R1bGUgPSBSb290Q29uZmlnLm1vZHVsZS5uYW1lO1xuICAgIHJldHVybiBBcnJheS5mcm9tKE9iamVjdC52YWx1ZXMoUm9vdENvbmZpZy5lbnRpdGllcykpLm1hcCgoZW50aXR5OiBhbnkpID0+ICh7XG4gICAgICBtb2R1bGU6IG1vZHVsZSxcbiAgICAgIGVudGl0eTogZW50aXR5Lm5hbWUsXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldChtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICAgIHN3aXRjaCAoZW50aXR5TmFtZSkge1xuICAgICAgY2FzZSAncm9vbSc6XG4gICAgICAgIHJldHVybiByb29tRmFjdG9yeSh0aGlzLmluamVjdG9yKTtcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICByZXR1cm4gbWVzc2FnZUZhY3RvcnkodGhpcy5pbmplY3Rvcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMMessageService } from '../../entities/message/message.service';\nimport { AXMRoomService } from '../../entities/room/room.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Abstract Chat Service defining the contract for chat functionality\n */\nexport class AXMChatService {\n}\nexport class AXMChatServiceImpl {\n constructor() {\n this.roomService = inject(AXMRoomService);\n this.messageService = inject(AXMMessageService);\n this.sessionService = inject(AXPSessionService);\n this.usersService = inject(AXMUsersEntityService);\n }\n // === Helper Methods ===\n getCurrentUser() {\n const user = this.sessionService.user;\n return {\n id: user?.id || 'guest-user',\n type: 'user',\n };\n }\n async getUserInfo(userId) {\n try {\n const user = await this.usersService.getOne(userId);\n return {\n id: user.id,\n type: 'user',\n };\n }\n catch (error) {\n console.error(`Failed to get user info for ID: ${userId}`, error);\n return {\n id: userId,\n type: 'user',\n };\n }\n }\n formatMessage(message) {\n const currentUserId = this.getCurrentUser().id;\n return {\n ...message,\n isFromCurrentUser: message.author.id === currentUserId,\n formattedDate: new Date(message.createdAt || new Date()).toLocaleString(),\n hasSeen: (message.seen || []).length > 0,\n };\n }\n async formatMember(userRef) {\n try {\n const user = await this.usersService.getOne(userRef.id);\n return {\n id: user.id,\n firstName: user.firstName || '',\n lastName: user.lastName || '',\n fullName: `${user.firstName || ''} ${user.lastName || ''}`.trim(),\n avatar: '', // Default empty string since avatar doesn't exist in the model\n isOnline: Math.random() > 0.5, // Mockup for demo\n };\n }\n catch (error) {\n console.error(`Failed to format member for ID: ${userRef.id}`, error);\n return {\n id: userRef.id,\n firstName: 'Unknown',\n lastName: 'User',\n fullName: 'Unknown User',\n avatar: '',\n isOnline: false,\n };\n }\n }\n // === Room Operations ===\n async getRoomList(skip = 0, take = 100) {\n return this.roomService.query({ skip, take });\n }\n async getRoomDetails(roomId) {\n return this.roomService.getOne(roomId);\n }\n async createRoom(roomData) {\n return this.roomService.insertOne(roomData);\n }\n async addRoomMember(roomId, userId) {\n const room = await this.getRoomDetails(roomId);\n const userRef = await this.getUserInfo(userId);\n const updatedMembers = [...room.members, userRef];\n return this.roomService.updateOne(roomId, { members: updatedMembers });\n }\n async removeRoomMember(roomId, memberId) {\n const room = await this.getRoomDetails(roomId);\n const updatedMembers = room.members.filter((member) => member.id !== memberId);\n return this.roomService.updateOne(roomId, { members: updatedMembers });\n }\n async deleteRoom(roomId) {\n return this.roomService.deleteOne(roomId);\n }\n // === Message Operations ===\n async listMessages(roomId, skip = 0, take = 100) {\n return this.messageService.query({\n skip,\n take,\n filter: {\n field: 'roomId',\n value: roomId,\n operator: { type: 'equal' },\n },\n });\n }\n async sendMessage(roomId, content, contentType = 'text', replyId) {\n const author = this.getCurrentUser();\n const messageContent = {\n content,\n contentType,\n };\n const message = {\n roomId,\n message: messageContent,\n author,\n replyId,\n };\n const messageId = await this.messageService.insertOne(message);\n return this.messageService.getOne(messageId);\n }\n async editMessage(messageId, content, contentType = 'text') {\n const messageContent = {\n content,\n contentType,\n };\n return this.messageService.updateOne(messageId, { message: messageContent });\n }\n async deleteMessage(messageId) {\n try {\n await this.messageService.deleteOne(messageId);\n return true;\n }\n catch (error) {\n console.error('Failed to delete message:', error);\n return false;\n }\n }\n async markAsSeen(messageId) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n // Check if this user has already seen the message\n const alreadySeen = (message.seen || []).some((seen) => seen.author.id === author.id);\n if (alreadySeen) {\n return message;\n }\n const seen = message.seen || [];\n const updatedSeen = [...seen, { author, type: 'read' }];\n return this.messageService.updateOne(messageId, { seen: updatedSeen });\n }\n async addReaction(messageId, type) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n // Check if this user has already added this reaction\n const existingReaction = (message.reactions || []).find((reaction) => reaction.author.id === author.id && reaction.type === type);\n if (existingReaction) {\n // If the reaction already exists, remove it (toggle behavior)\n return this.removeReaction(messageId, type);\n }\n const reactions = message.reactions || [];\n const updatedReactions = [...reactions, { author, type }];\n return this.messageService.updateOne(messageId, { reactions: updatedReactions });\n }\n async removeReaction(messageId, type) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const reactions = message.reactions || [];\n const updatedReactions = reactions.filter((reaction) => !(reaction.author.id === author.id && reaction.type === type));\n return this.messageService.updateOne(messageId, { reactions: updatedReactions });\n }\n // === UI-specific Operations ===\n async markChatAsRead(roomId) {\n try {\n // Get all unread messages for this room\n const messages = await this.listMessages(roomId);\n const currentUserId = this.getCurrentUser().id;\n // Mark each unread message as seen\n const markPromises = messages.items\n .filter((message) => {\n // Only mark messages that are not from the current user and not already seen by them\n const isFromCurrentUser = message.author.id === currentUserId;\n const isAlreadySeen = (message.seen || []).some((seen) => seen.author.id === currentUserId);\n return !isFromCurrentUser && !isAlreadySeen;\n })\n .map((message) => this.markAsSeen(message.id));\n await Promise.all(markPromises);\n return true;\n }\n catch (error) {\n console.error('Failed to mark chat as read:', error);\n return false;\n }\n }\n async getUnreadCount(roomId) {\n const messages = await this.listMessages(roomId);\n const currentUserId = this.getCurrentUser().id;\n return messages.items.filter((message) => {\n // Count messages that are not from the current user and not already seen by them\n const isFromCurrentUser = message.author.id === currentUserId;\n const isAlreadySeen = (message.seen || []).some((seen) => seen.author.id === currentUserId);\n return !isFromCurrentUser && !isAlreadySeen;\n }).length;\n }\n async getChatRoom(roomId) {\n const room = await this.getRoomDetails(roomId);\n const messages = await this.listMessages(roomId, 0, 1);\n const lastMessage = messages.items.length > 0 ? this.formatMessage(messages.items[0]) : undefined;\n const unreadCount = await this.getUnreadCount(roomId);\n const roomMembers = await Promise.all(room.members.map((member) => this.formatMember(member)));\n return {\n ...room,\n lastMessage,\n unreadCount,\n roomMembers,\n };\n }\n async getAllChatRooms(skip = 0, take = 100) {\n const rooms = await this.getRoomList(skip, take);\n const chatRooms = await Promise.all(rooms.items.map(async (room) => {\n const messages = await this.listMessages(room.id, 0, 1);\n const lastMessage = messages.items.length > 0 ? this.formatMessage(messages.items[0]) : undefined;\n const unreadCount = await this.getUnreadCount(room.id);\n const roomMembers = await Promise.all(room.members.map((member) => this.formatMember(member)));\n return {\n ...room,\n lastMessage,\n unreadCount,\n roomMembers,\n };\n }));\n return {\n items: chatRooms,\n total: rooms.total,\n };\n }\n async getChatMessages(roomId, skip = 0, take = 20) {\n const result = await this.listMessages(roomId, skip, take);\n const formattedMessages = result.items.map((message) => this.formatMessage(message));\n return {\n items: formattedMessages,\n total: result.total,\n };\n }\n async createNewConversation(memberIds) {\n // Add current user if not already included\n const currentUser = this.getCurrentUser();\n const hasCurrentUser = memberIds.includes(currentUser.id);\n const allMemberIds = hasCurrentUser ? memberIds : [...memberIds, currentUser.id];\n try {\n // Get user info for all members\n const memberReferences = await Promise.all(allMemberIds.map((id) => this.getUserInfo(id)));\n // Get user names for title\n const userNames = await Promise.all(memberReferences.map(async (ref) => {\n try {\n const user = await this.usersService.getOne(ref.id);\n return `${user.firstName} ${user.lastName}`.trim();\n }\n catch (error) {\n return ref.id;\n }\n }));\n // Create a new room - this returns just the ID as a string\n const roomId = await this.createRoom({\n members: memberReferences,\n title: userNames.join(', '),\n });\n // Get the full room data with the ID\n return this.getChatRoom(roomId);\n }\n catch (error) {\n console.error('Failed to create conversation:', error);\n throw error;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatServiceImpl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatServiceImpl, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NoYXQvY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBUTNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFJbEU7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGNBQWM7Q0F5RW5DO0FBS0QsTUFBTSxPQUFPLGtCQUFrQjtJQUgvQjtRQUltQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsaUJBQVksR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztLQWdVL0Q7SUE5VEMseUJBQXlCO0lBRWpCLGNBQWM7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDdEMsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLFlBQVk7WUFDNUIsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYztRQUN0QyxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELE9BQU87Z0JBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxNQUFNO2FBQ2IsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEUsT0FBTztnQkFDTCxFQUFFLEVBQUUsTUFBTTtnQkFDVixJQUFJLEVBQUUsTUFBTTthQUNiLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxPQUErQjtRQUNuRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRS9DLE9BQU87WUFDTCxHQUFHLE9BQU87WUFDVixpQkFBaUIsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxhQUFhO1lBQ3RELGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUU7WUFDekUsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztTQUN6QyxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBeUI7UUFDbEQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFeEQsT0FBTztnQkFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRTtnQkFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRTtnQkFDN0IsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pFLE1BQU0sRUFBRSxFQUFFLEVBQUUsK0RBQStEO2dCQUMzRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsRUFBRSxrQkFBa0I7YUFDbEQsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLE1BQU0sRUFBRSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELDBCQUEwQjtJQUUxQixLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEdBQUc7UUFDcEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQWM7UUFDakMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUF5QztRQUN4RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQWMsRUFBRSxNQUFjO1FBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUNyRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELDZCQUE2QjtJQUU3QixLQUFLLENBQUMsWUFBWSxDQUFDLE1BQWMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxHQUFHO1FBQ3JELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDL0IsSUFBSTtZQUNKLElBQUk7WUFDSixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTthQUM1QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsY0FBOEIsTUFBTSxFQUFFLE9BQWdCO1FBQ3ZHLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVyQyxNQUFNLGNBQWMsR0FBZTtZQUNqQyxPQUFPO1lBQ1AsV0FBVztTQUNaLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBdUM7WUFDbEQsTUFBTTtZQUNOLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLE1BQU07WUFDTixPQUFPO1NBQ1IsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFpQixFQUFFLE9BQWUsRUFBRSxjQUE4QixNQUFNO1FBQ3hGLE1BQU0sY0FBYyxHQUFlO1lBQ2pDLE9BQU87WUFDUCxXQUFXO1NBQ1osQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBaUI7UUFDbkMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFpQjtRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RCxrREFBa0Q7UUFDbEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hDLE1BQU0sV0FBVyxHQUEwQixDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFxQixFQUFFLENBQUMsQ0FBQztRQUM5RixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQWlCLEVBQUUsSUFBcUI7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUQscURBQXFEO1FBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDckQsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQ3pFLENBQUM7UUFFRixJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsOERBQThEO1lBQzlELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQzFDLE1BQU0sZ0JBQWdCLEdBQThCLENBQUMsR0FBRyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBaUIsRUFBRSxJQUFxQjtRQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQ3ZDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUM1RSxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxpQ0FBaUM7SUFFakMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFjO1FBQ2pDLElBQUksQ0FBQztZQUNILHdDQUF3QztZQUN4QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUUvQyxtQ0FBbUM7WUFDbkMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEtBQUs7aUJBQ2hDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNsQixxRkFBcUY7Z0JBQ3JGLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssYUFBYSxDQUFDO2dCQUM5RCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxhQUFhLENBQUMsQ0FBQztnQkFDNUYsT0FBTyxDQUFDLGlCQUFpQixJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzlDLENBQUMsQ0FBQztpQkFDRCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFakQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQWM7UUFDakMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFL0MsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLGlGQUFpRjtZQUNqRixNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQztZQUM5RCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxhQUFhLENBQUMsQ0FBQztZQUM1RixPQUFPLENBQUMsaUJBQWlCLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ1osQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYztRQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2xHLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0RCxNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9GLE9BQU87WUFDTCxHQUFHLElBQUk7WUFDUCxXQUFXO1lBQ1gsV0FBVztZQUNYLFdBQVc7U0FDWixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsR0FBRztRQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpELE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbEcsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV2RCxNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRS9GLE9BQU87Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLFdBQVc7Z0JBQ1gsV0FBVztnQkFDWCxXQUFXO2FBQ1osQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPO1lBQ0wsS0FBSyxFQUFFLFNBQVM7WUFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFjLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUN2RCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFckYsT0FBTztZQUNMLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1NBQ3BCLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFNBQW1CO1FBQzdDLDJDQUEyQztRQUMzQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFMUQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWpGLElBQUksQ0FBQztZQUNILGdDQUFnQztZQUNoQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzRiwyQkFBMkI7WUFDM0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNqQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNqQyxJQUFJLENBQUM7b0JBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3BELE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckQsQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNmLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUNILENBQUM7WUFFRiwyREFBMkQ7WUFDM0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDNUIsQ0FBQyxDQUFDO1lBRUgscUNBQXFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzs4R0FuVVUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTVVzZXJzRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9zZWN1cml0eS1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUENvbnRlbnQsIEFYUENvbnRlbnRUeXBlLCBBWFBVc2VyUmVmZXJlbmNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBBWE1Db252ZXJzYXRpb25NZXNzYWdlLFxuICBBWE1Db252ZXJzYXRpb25SZWFjdGlvbixcbiAgQVhNQ29udmVyc2F0aW9uU2VlbixcbiAgQVhNUmVhY3Rpb25UeXBlLFxuICBBWE1TZWVuVHlwZSxcbn0gZnJvbSAnLi4vLi4vZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLnR5cGVzJztcbmltcG9ydCB7IEFYTVJvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvcm9vbS9yb29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uUm9vbSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3Jvb20vcm9vbS50eXBlcyc7XG5pbXBvcnQgeyBBWE1DaGF0TWVtYmVyLCBBWE1DaGF0TWVzc2FnZSwgQVhNQ2hhdFJvb20gfSBmcm9tICcuL2NoYXQudHlwZSc7XG5cbi8qKlxuICogQWJzdHJhY3QgQ2hhdCBTZXJ2aWNlIGRlZmluaW5nIHRoZSBjb250cmFjdCBmb3IgY2hhdCBmdW5jdGlvbmFsaXR5XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWE1DaGF0U2VydmljZSB7XG4gIC8qKlxuICAgKiBHZXQgYWxsIGNoYXQgcm9vbXMgYXZhaWxhYmxlIHRvIHRoZSBjdXJyZW50IHVzZXJcbiAgICovXG4gIGFic3RyYWN0IGdldEFsbENoYXRSb29tcyhza2lwPzogbnVtYmVyLCB0YWtlPzogbnVtYmVyKTogUHJvbWlzZTx7IGl0ZW1zOiBBWE1DaGF0Um9vbVtdOyB0b3RhbDogbnVtYmVyIH0+O1xuXG4gIC8qKlxuICAgKiBHZXQgZGV0YWlscyBvZiBhIHNwZWNpZmljIGNoYXQgcm9vbVxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0Q2hhdFJvb20ocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRSb29tPjtcblxuICAvKipcbiAgICogR2V0IG1lc3NhZ2VzIGZvciBhIHNwZWNpZmljIGNoYXQgcm9vbVxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0Q2hhdE1lc3NhZ2VzKFxuICAgIHJvb21JZDogc3RyaW5nLFxuICAgIHNraXA/OiBudW1iZXIsXG4gICAgdGFrZT86IG51bWJlcixcbiAgKTogUHJvbWlzZTx7IGl0ZW1zOiBBWE1DaGF0TWVzc2FnZVtdOyB0b3RhbDogbnVtYmVyIH0+O1xuXG4gIC8qKlxuICAgKiBTZW5kIGEgbWVzc2FnZSB0byBhIGNoYXQgcm9vbVxuICAgKi9cbiAgYWJzdHJhY3Qgc2VuZE1lc3NhZ2UoXG4gICAgcm9vbUlkOiBzdHJpbmcsXG4gICAgY29udGVudDogc3RyaW5nLFxuICAgIGNvbnRlbnRUeXBlPzogQVhQQ29udGVudFR5cGUsXG4gICAgcmVwbHlJZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPjtcblxuICAvKipcbiAgICogTWFyayBhbGwgbWVzc2FnZXMgaW4gYSBjaGF0IHJvb20gYXMgcmVhZFxuICAgKi9cbiAgYWJzdHJhY3QgbWFya0NoYXRBc1JlYWQocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBFZGl0IGFuIGV4aXN0aW5nIG1lc3NhZ2VcbiAgICovXG4gIGFic3RyYWN0IGVkaXRNZXNzYWdlKFxuICAgIG1lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBjb250ZW50VHlwZT86IEFYUENvbnRlbnRUeXBlLFxuICApOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBtZXNzYWdlXG4gICAqL1xuICBhYnN0cmFjdCBkZWxldGVNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNvbnZlcnNhdGlvbiB3aXRoIHNwZWNpZmllZCBtZW1iZXJzXG4gICAqL1xuICBhYnN0cmFjdCBjcmVhdGVOZXdDb252ZXJzYXRpb24obWVtYmVySWRzOiBzdHJpbmdbXSk6IFByb21pc2U8QVhNQ2hhdFJvb20+O1xuXG4gIC8qKlxuICAgKiBBZGQgYSByZWFjdGlvbiB0byBhIG1lc3NhZ2VcbiAgICovXG4gIGFic3RyYWN0IGFkZFJlYWN0aW9uKG1lc3NhZ2VJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSByZWFjdGlvbiBmcm9tIGEgbWVzc2FnZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVtb3ZlUmVhY3Rpb24obWVzc2FnZUlkOiBzdHJpbmcsIHR5cGU6IEFYTVJlYWN0aW9uVHlwZSk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT47XG5cbiAgLyoqXG4gICAqIEFkZCBhIG1lbWJlciB0byBhIGNoYXQgcm9vbVxuICAgKi9cbiAgYWJzdHJhY3QgYWRkUm9vbU1lbWJlcihyb29tSWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvblJvb20+O1xuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBtZW1iZXIgZnJvbSBhIGNoYXQgcm9vbVxuICAgKi9cbiAgYWJzdHJhY3QgcmVtb3ZlUm9vbU1lbWJlcihyb29tSWQ6IHN0cmluZywgbWVtYmVySWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uUm9vbT47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1DaGF0U2VydmljZUltcGwgaW1wbGVtZW50cyBBWE1DaGF0U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm9vbVNlcnZpY2UgPSBpbmplY3QoQVhNUm9vbVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KEFYTU1lc3NhZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcnNTZXJ2aWNlID0gaW5qZWN0KEFYTVVzZXJzRW50aXR5U2VydmljZSk7XG5cbiAgLy8gPT09IEhlbHBlciBNZXRob2RzID09PVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogQVhQVXNlclJlZmVyZW5jZSB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHVzZXI/LmlkIHx8ICdndWVzdC11c2VyJyxcbiAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRVc2VySW5mbyh1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8QVhQVXNlclJlZmVyZW5jZT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2Vyc1NlcnZpY2UuZ2V0T25lKHVzZXJJZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdXNlci5pZCxcbiAgICAgICAgdHlwZTogJ3VzZXInLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGdldCB1c2VyIGluZm8gZm9yIElEOiAke3VzZXJJZH1gLCBlcnJvcik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB0eXBlOiAndXNlcicsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TWVzc2FnZShtZXNzYWdlOiBBWE1Db252ZXJzYXRpb25NZXNzYWdlKTogQVhNQ2hhdE1lc3NhZ2Uge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VySWQgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWVzc2FnZSxcbiAgICAgIGlzRnJvbUN1cnJlbnRVc2VyOiBtZXNzYWdlLmF1dGhvci5pZCA9PT0gY3VycmVudFVzZXJJZCxcbiAgICAgIGZvcm1hdHRlZERhdGU6IG5ldyBEYXRlKG1lc3NhZ2UuY3JlYXRlZEF0IHx8IG5ldyBEYXRlKCkpLnRvTG9jYWxlU3RyaW5nKCksXG4gICAgICBoYXNTZWVuOiAobWVzc2FnZS5zZWVuIHx8IFtdKS5sZW5ndGggPiAwLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZvcm1hdE1lbWJlcih1c2VyUmVmOiBBWFBVc2VyUmVmZXJlbmNlKTogUHJvbWlzZTxBWE1DaGF0TWVtYmVyPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLnVzZXJzU2VydmljZS5nZXRPbmUodXNlclJlZi5pZCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgICBmaXJzdE5hbWU6IHVzZXIuZmlyc3ROYW1lIHx8ICcnLFxuICAgICAgICBsYXN0TmFtZTogdXNlci5sYXN0TmFtZSB8fCAnJyxcbiAgICAgICAgZnVsbE5hbWU6IGAke3VzZXIuZmlyc3ROYW1lIHx8ICcnfSAke3VzZXIubGFzdE5hbWUgfHwgJyd9YC50cmltKCksXG4gICAgICAgIGF2YXRhcjogJycsIC8vIERlZmF1bHQgZW1wdHkgc3RyaW5nIHNpbmNlIGF2YXRhciBkb2Vzbid0IGV4aXN0IGluIHRoZSBtb2RlbFxuICAgICAgICBpc09ubGluZTogTWF0aC5yYW5kb20oKSA+IDAuNSwgLy8gTW9ja3VwIGZvciBkZW1vXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZm9ybWF0IG1lbWJlciBmb3IgSUQ6ICR7dXNlclJlZi5pZH1gLCBlcnJvcik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdXNlclJlZi5pZCxcbiAgICAgICAgZmlyc3ROYW1lOiAnVW5rbm93bicsXG4gICAgICAgIGxhc3ROYW1lOiAnVXNlcicsXG4gICAgICAgIGZ1bGxOYW1lOiAnVW5rbm93biBVc2VyJyxcbiAgICAgICAgYXZhdGFyOiAnJyxcbiAgICAgICAgaXNPbmxpbmU6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT0gUm9vbSBPcGVyYXRpb25zID09PVxuXG4gIGFzeW5jIGdldFJvb21MaXN0KHNraXAgPSAwLCB0YWtlID0gMTAwKSB7XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UucXVlcnkoeyBza2lwLCB0YWtlIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0Um9vbURldGFpbHMocm9vbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yb29tU2VydmljZS5nZXRPbmUocm9vbUlkKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVJvb20ocm9vbURhdGE6IE9taXQ8QVhNQ29udmVyc2F0aW9uUm9vbSwgJ2lkJz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnJvb21TZXJ2aWNlLmluc2VydE9uZShyb29tRGF0YSk7XG4gIH1cblxuICBhc3luYyBhZGRSb29tTWVtYmVyKHJvb21JZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJvb20gPSBhd2FpdCB0aGlzLmdldFJvb21EZXRhaWxzKHJvb21JZCk7XG4gICAgY29uc3QgdXNlclJlZiA9IGF3YWl0IHRoaXMuZ2V0VXNlckluZm8odXNlcklkKTtcbiAgICBjb25zdCB1cGRhdGVkTWVtYmVycyA9IFsuLi5yb29tLm1lbWJlcnMsIHVzZXJSZWZdO1xuICAgIHJldHVybiB0aGlzLnJvb21TZXJ2aWNlLnVwZGF0ZU9uZShyb29tSWQsIHsgbWVtYmVyczogdXBkYXRlZE1lbWJlcnMgfSk7XG4gIH1cblxuICBhc3luYyByZW1vdmVSb29tTWVtYmVyKHJvb21JZDogc3RyaW5nLCBtZW1iZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgcm9vbSA9IGF3YWl0IHRoaXMuZ2V0Um9vbURldGFpbHMocm9vbUlkKTtcbiAgICBjb25zdCB1cGRhdGVkTWVtYmVycyA9IHJvb20ubWVtYmVycy5maWx0ZXIoKG1lbWJlcikgPT4gbWVtYmVyLmlkICE9PSBtZW1iZXJJZCk7XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHJvb21JZCwgeyBtZW1iZXJzOiB1cGRhdGVkTWVtYmVycyB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVJvb20ocm9vbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yb29tU2VydmljZS5kZWxldGVPbmUocm9vbUlkKTtcbiAgfVxuXG4gIC8vID09PSBNZXNzYWdlIE9wZXJhdGlvbnMgPT09XG5cbiAgYXN5bmMgbGlzdE1lc3NhZ2VzKHJvb21JZDogc3RyaW5nLCBza2lwID0gMCwgdGFrZSA9IDEwMCkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgIHNraXAsXG4gICAgICB0YWtlLFxuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGZpZWxkOiAncm9vbUlkJyxcbiAgICAgICAgdmFsdWU6IHJvb21JZCxcbiAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRNZXNzYWdlKHJvb21JZDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGNvbnRlbnRUeXBlOiBBWFBDb250ZW50VHlwZSA9ICd0ZXh0JywgcmVwbHlJZD86IHN0cmluZykge1xuICAgIGNvbnN0IGF1dGhvciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcblxuICAgIGNvbnN0IG1lc3NhZ2VDb250ZW50OiBBWFBDb250ZW50ID0ge1xuICAgICAgY29udGVudCxcbiAgICAgIGNvbnRlbnRUeXBlLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXNzYWdlOiBPbWl0PEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2UsICdpZCc+ID0ge1xuICAgICAgcm9vbUlkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZUNvbnRlbnQsXG4gICAgICBhdXRob3IsXG4gICAgICByZXBseUlkLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXNzYWdlSWQgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluc2VydE9uZShtZXNzYWdlKTtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUobWVzc2FnZUlkKTtcbiAgfVxuXG4gIGFzeW5jIGVkaXRNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGNvbnRlbnRUeXBlOiBBWFBDb250ZW50VHlwZSA9ICd0ZXh0Jykge1xuICAgIGNvbnN0IG1lc3NhZ2VDb250ZW50OiBBWFBDb250ZW50ID0ge1xuICAgICAgY29udGVudCxcbiAgICAgIGNvbnRlbnRUeXBlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUobWVzc2FnZUlkLCB7IG1lc3NhZ2U6IG1lc3NhZ2VDb250ZW50IH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmRlbGV0ZU9uZShtZXNzYWdlSWQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgbWVzc2FnZTonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWFya0FzU2VlbihtZXNzYWdlSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGF1dGhvciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUobWVzc2FnZUlkKTtcblxuICAgIC8vIENoZWNrIGlmIHRoaXMgdXNlciBoYXMgYWxyZWFkeSBzZWVuIHRoZSBtZXNzYWdlXG4gICAgY29uc3QgYWxyZWFkeVNlZW4gPSAobWVzc2FnZS5zZWVuIHx8IFtdKS5zb21lKChzZWVuKSA9PiBzZWVuLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkKTtcbiAgICBpZiAoYWxyZWFkeVNlZW4pIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlZW4gPSBtZXNzYWdlLnNlZW4gfHwgW107XG4gICAgY29uc3QgdXBkYXRlZFNlZW46IEFYTUNvbnZlcnNhdGlvblNlZW5bXSA9IFsuLi5zZWVuLCB7IGF1dGhvciwgdHlwZTogJ3JlYWQnIGFzIEFYTVNlZW5UeXBlIH1dO1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShtZXNzYWdlSWQsIHsgc2VlbjogdXBkYXRlZFNlZW4gfSk7XG4gIH1cblxuICBhc3luYyBhZGRSZWFjdGlvbihtZXNzYWdlSWQ6IHN0cmluZywgdHlwZTogQVhNUmVhY3Rpb25UeXBlKSB7XG4gICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyB1c2VyIGhhcyBhbHJlYWR5IGFkZGVkIHRoaXMgcmVhY3Rpb25cbiAgICBjb25zdCBleGlzdGluZ1JlYWN0aW9uID0gKG1lc3NhZ2UucmVhY3Rpb25zIHx8IFtdKS5maW5kKFxuICAgICAgKHJlYWN0aW9uKSA9PiByZWFjdGlvbi5hdXRob3IuaWQgPT09IGF1dGhvci5pZCAmJiByZWFjdGlvbi50eXBlID09PSB0eXBlLFxuICAgICk7XG5cbiAgICBpZiAoZXhpc3RpbmdSZWFjdGlvbikge1xuICAgICAgLy8gSWYgdGhlIHJlYWN0aW9uIGFscmVhZHkgZXhpc3RzLCByZW1vdmUgaXQgKHRvZ2dsZSBiZWhhdmlvcilcbiAgICAgIHJldHVybiB0aGlzLnJlbW92ZVJlYWN0aW9uKG1lc3NhZ2VJZCwgdHlwZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVhY3Rpb25zID0gbWVzc2FnZS5yZWFjdGlvbnMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlZFJlYWN0aW9uczogQVhNQ29udmVyc2F0aW9uUmVhY3Rpb25bXSA9IFsuLi5yZWFjdGlvbnMsIHsgYXV0aG9yLCB0eXBlIH1dO1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShtZXNzYWdlSWQsIHsgcmVhY3Rpb25zOiB1cGRhdGVkUmVhY3Rpb25zIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlUmVhY3Rpb24obWVzc2FnZUlkOiBzdHJpbmcsIHR5cGU6IEFYTVJlYWN0aW9uVHlwZSkge1xuICAgIGNvbnN0IGF1dGhvciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUobWVzc2FnZUlkKTtcblxuICAgIGNvbnN0IHJlYWN0aW9ucyA9IG1lc3NhZ2UucmVhY3Rpb25zIHx8IFtdO1xuICAgIGNvbnN0IHVwZGF0ZWRSZWFjdGlvbnMgPSByZWFjdGlvbnMuZmlsdGVyKFxuICAgICAgKHJlYWN0aW9uKSA9PiAhKHJlYWN0aW9uLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkICYmIHJlYWN0aW9uLnR5cGUgPT09IHR5cGUpLFxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUobWVzc2FnZUlkLCB7IHJlYWN0aW9uczogdXBkYXRlZFJlYWN0aW9ucyB9KTtcbiAgfVxuXG4gIC8vID09PSBVSS1zcGVjaWZpYyBPcGVyYXRpb25zID09PVxuXG4gIGFzeW5jIG1hcmtDaGF0QXNSZWFkKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCBhbGwgdW5yZWFkIG1lc3NhZ2VzIGZvciB0aGlzIHJvb21cbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5saXN0TWVzc2FnZXMocm9vbUlkKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VySWQgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQ7XG5cbiAgICAgIC8vIE1hcmsgZWFjaCB1bnJlYWQgbWVzc2FnZSBhcyBzZWVuXG4gICAgICBjb25zdCBtYXJrUHJvbWlzZXMgPSBtZXNzYWdlcy5pdGVtc1xuICAgICAgICAuZmlsdGVyKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgLy8gT25seSBtYXJrIG1lc3NhZ2VzIHRoYXQgYXJlIG5vdCBmcm9tIHRoZSBjdXJyZW50IHVzZXIgYW5kIG5vdCBhbHJlYWR5IHNlZW4gYnkgdGhlbVxuICAgICAgICAgIGNvbnN0IGlzRnJvbUN1cnJlbnRVc2VyID0gbWVzc2FnZS5hdXRob3IuaWQgPT09IGN1cnJlbnRVc2VySWQ7XG4gICAgICAgICAgY29uc3QgaXNBbHJlYWR5U2VlbiA9IChtZXNzYWdlLnNlZW4gfHwgW10pLnNvbWUoKHNlZW4pID0+IHNlZW4uYXV0aG9yLmlkID09PSBjdXJyZW50VXNlcklkKTtcbiAgICAgICAgICByZXR1cm4gIWlzRnJvbUN1cnJlbnRVc2VyICYmICFpc0FscmVhZHlTZWVuO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKChtZXNzYWdlKSA9PiB0aGlzLm1hcmtBc1NlZW4obWVzc2FnZS5pZCkpO1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChtYXJrUHJvbWlzZXMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBtYXJrIGNoYXQgYXMgcmVhZDonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VW5yZWFkQ291bnQocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5saXN0TWVzc2FnZXMocm9vbUlkKTtcbiAgICBjb25zdCBjdXJyZW50VXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2VzLml0ZW1zLmZpbHRlcigobWVzc2FnZSkgPT4ge1xuICAgICAgLy8gQ291bnQgbWVzc2FnZXMgdGhhdCBhcmUgbm90IGZyb20gdGhlIGN1cnJlbnQgdXNlciBhbmQgbm90IGFscmVhZHkgc2VlbiBieSB0aGVtXG4gICAgICBjb25zdCBpc0Zyb21DdXJyZW50VXNlciA9IG1lc3NhZ2UuYXV0aG9yLmlkID09PSBjdXJyZW50VXNlcklkO1xuICAgICAgY29uc3QgaXNBbHJlYWR5U2VlbiA9IChtZXNzYWdlLnNlZW4gfHwgW10pLnNvbWUoKHNlZW4pID0+IHNlZW4uYXV0aG9yLmlkID09PSBjdXJyZW50VXNlcklkKTtcbiAgICAgIHJldHVybiAhaXNGcm9tQ3VycmVudFVzZXIgJiYgIWlzQWxyZWFkeVNlZW47XG4gICAgfSkubGVuZ3RoO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q2hhdFJvb20ocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRSb29tPiB7XG4gICAgY29uc3Qgcm9vbSA9IGF3YWl0IHRoaXMuZ2V0Um9vbURldGFpbHMocm9vbUlkKTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMubGlzdE1lc3NhZ2VzKHJvb21JZCwgMCwgMSk7XG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlcy5pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLml0ZW1zWzBdKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB1bnJlYWRDb3VudCA9IGF3YWl0IHRoaXMuZ2V0VW5yZWFkQ291bnQocm9vbUlkKTtcblxuICAgIGNvbnN0IHJvb21NZW1iZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwocm9vbS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiB0aGlzLmZvcm1hdE1lbWJlcihtZW1iZXIpKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucm9vbSxcbiAgICAgIGxhc3RNZXNzYWdlLFxuICAgICAgdW5yZWFkQ291bnQsXG4gICAgICByb29tTWVtYmVycyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ2V0QWxsQ2hhdFJvb21zKHNraXAgPSAwLCB0YWtlID0gMTAwKTogUHJvbWlzZTx7IGl0ZW1zOiBBWE1DaGF0Um9vbVtdOyB0b3RhbDogbnVtYmVyIH0+IHtcbiAgICBjb25zdCByb29tcyA9IGF3YWl0IHRoaXMuZ2V0Um9vbUxpc3Qoc2tpcCwgdGFrZSk7XG5cbiAgICBjb25zdCBjaGF0Um9vbXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHJvb21zLml0ZW1zLm1hcChhc3luYyAocm9vbSkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMubGlzdE1lc3NhZ2VzKHJvb20uaWQsIDAsIDEpO1xuICAgICAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzLml0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuaXRlbXNbMF0pIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB1bnJlYWRDb3VudCA9IGF3YWl0IHRoaXMuZ2V0VW5yZWFkQ291bnQocm9vbS5pZCk7XG5cbiAgICAgICAgY29uc3Qgcm9vbU1lbWJlcnMgPSBhd2FpdCBQcm9taXNlLmFsbChyb29tLm1lbWJlcnMubWFwKChtZW1iZXIpID0+IHRoaXMuZm9ybWF0TWVtYmVyKG1lbWJlcikpKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJvb20sXG4gICAgICAgICAgbGFzdE1lc3NhZ2UsXG4gICAgICAgICAgdW5yZWFkQ291bnQsXG4gICAgICAgICAgcm9vbU1lbWJlcnMsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zOiBjaGF0Um9vbXMsXG4gICAgICB0b3RhbDogcm9vbXMudG90YWwsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdldENoYXRNZXNzYWdlcyhyb29tSWQ6IHN0cmluZywgc2tpcCA9IDAsIHRha2UgPSAyMCk6IFByb21pc2U8eyBpdGVtczogQVhNQ2hhdE1lc3NhZ2VbXTsgdG90YWw6IG51bWJlciB9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5saXN0TWVzc2FnZXMocm9vbUlkLCBza2lwLCB0YWtlKTtcblxuICAgIGNvbnN0IGZvcm1hdHRlZE1lc3NhZ2VzID0gcmVzdWx0Lml0ZW1zLm1hcCgobWVzc2FnZSkgPT4gdGhpcy5mb3JtYXRNZXNzYWdlKG1lc3NhZ2UpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtczogZm9ybWF0dGVkTWVzc2FnZXMsXG4gICAgICB0b3RhbDogcmVzdWx0LnRvdGFsLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBjcmVhdGVOZXdDb252ZXJzYXRpb24obWVtYmVySWRzOiBzdHJpbmdbXSk6IFByb21pc2U8QVhNQ2hhdFJvb20+IHtcbiAgICAvLyBBZGQgY3VycmVudCB1c2VyIGlmIG5vdCBhbHJlYWR5IGluY2x1ZGVkXG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgaGFzQ3VycmVudFVzZXIgPSBtZW1iZXJJZHMuaW5jbHVkZXMoY3VycmVudFVzZXIuaWQpO1xuXG4gICAgY29uc3QgYWxsTWVtYmVySWRzID0gaGFzQ3VycmVudFVzZXIgPyBtZW1iZXJJZHMgOiBbLi4ubWVtYmVySWRzLCBjdXJyZW50VXNlci5pZF07XG5cbiAgICB0cnkge1xuICAgICAgLy8gR2V0IHVzZXIgaW5mbyBmb3IgYWxsIG1lbWJlcnNcbiAgICAgIGNvbnN0IG1lbWJlclJlZmVyZW5jZXMgPSBhd2FpdCBQcm9taXNlLmFsbChhbGxNZW1iZXJJZHMubWFwKChpZCkgPT4gdGhpcy5nZXRVc2VySW5mbyhpZCkpKTtcblxuICAgICAgLy8gR2V0IHVzZXIgbmFtZXMgZm9yIHRpdGxlXG4gICAgICBjb25zdCB1c2VyTmFtZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgbWVtYmVyUmVmZXJlbmNlcy5tYXAoYXN5bmMgKHJlZikgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2Vyc1NlcnZpY2UuZ2V0T25lKHJlZi5pZCk7XG4gICAgICAgICAgICByZXR1cm4gYCR7dXNlci5maXJzdE5hbWV9ICR7dXNlci5sYXN0TmFtZX1gLnRyaW0oKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZi5pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IHJvb20gLSB0aGlzIHJldHVybnMganVzdCB0aGUgSUQgYXMgYSBzdHJpbmdcbiAgICAgIGNvbnN0IHJvb21JZCA9IGF3YWl0IHRoaXMuY3JlYXRlUm9vbSh7XG4gICAgICAgIG1lbWJlcnM6IG1lbWJlclJlZmVyZW5jZXMsXG4gICAgICAgIHRpdGxlOiB1c2VyTmFtZXMuam9pbignLCAnKSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBHZXQgdGhlIGZ1bGwgcm9vbSBkYXRhIHdpdGggdGhlIElEXG4gICAgICByZXR1cm4gdGhpcy5nZXRDaGF0Um9vbShyb29tSWQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gY3JlYXRlIGNvbnZlcnNhdGlvbjonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { AXPSessionService } from '@acorex/platform/auth';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/image\";\nimport * as i2 from \"@acorex/components/avatar\";\nimport * as i3 from \"@acorex/components/badge\";\nimport * as i4 from \"@acorex/components/decorators\";\nimport * as i5 from \"@acorex/components/loading\";\nexport class AXMChatItemComponent {\n constructor() {\n // Input\n this.data = input.required();\n // Output\n this.pressChatItem = output();\n // Services\n this.sessionService = inject(AXPSessionService);\n this.router = inject(Router);\n this.activatedRoute = inject(ActivatedRoute);\n // Computed values\n this.fullName = computed(() => {\n const member = this.data().roomMembers?.[0];\n return member ? member.fullName : 'Unknown User';\n });\n this.lastMessage = computed(() => {\n return this.data().lastMessage?.message?.content || 'No messages yet';\n });\n this.lastMessageDate = computed(() => {\n const message = this.data().lastMessage;\n if (!message)\n return '';\n return message.formattedDate || '';\n });\n this.hasUnread = computed(() => {\n return this.data().unreadCount > 0;\n });\n this.unreadCount = computed(() => {\n return this.data().unreadCount.toString();\n });\n this.isOnline = computed(() => {\n const member = this.data().roomMembers?.[0];\n return member?.isOnline || false;\n });\n this.myId = this.sessionService.user?.id;\n }\n // Methods\n extractInitials(name) {\n if (!name)\n return '?';\n const words = name.split(' ');\n const initials = words.map((word) => word.charAt(0).toUpperCase());\n return initials.join('');\n }\n onPressChatItem(id) {\n this.pressChatItem.emit(id);\n }\n messageSeenStatus() {\n const lastMessage = this.data().lastMessage;\n if (!lastMessage)\n return '';\n // Check if current user is the author\n if (this.myId === lastMessage.author?.id) {\n // Check if message has been seen by anyone\n return lastMessage.hasSeen ? 'ax-icon-dobble-check' : 'ax-icon-check';\n }\n return '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMChatItemComponent, isStandalone: false, selector: \"axm-chat-item\", inputs: { data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { pressChatItem: \"pressChatItem\" }, ngImport: i0, template: \"<div\\n [id]=\\\"data().id\\\"\\n class=\\\"ax-cursor-pointer ax-p-4 ax-flex ax-items-center ax-justify-between ax-gap-4 ax-transition-all ax-duration-200 hover:ax-bg-surface-hover ax-rounded-lg ax-border-b ax-border-divider\\\"\\n (click)=\\\"onPressChatItem(data().id)\\\"\\n>\\n <!-- Avatar and User Info Section -->\\n <div class=\\\"ax-flex ax-min-w-0 ax-gap-4 ax-flex-1\\\">\\n <!-- Avatar with Online Status -->\\n <div class=\\\"ax-flex-shrink-0\\\">\\n <ax-avatar class=\\\"ax-relative\\\" color=\\\"primary\\\" shape=\\\"rounded\\\" [size]=\\\"48\\\">\\n @if (data().roomMembers && data().roomMembers.length > 0 && data().roomMembers[0].avatar) {\\n <ax-image [src]=\\\"data().roomMembers[0].avatar\\\" class=\\\"ax-rounded-lg\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-font-medium\\\">{{ extractInitials(fullName()) }}</span>\\n </ax-text>\\n }\\n\\n <!-- Online Status Indicator -->\\n @if (isOnline()) {\\n <ax-badge class=\\\"ax-absolute ax-bottom-1 ax-end-1 !ax-size-3 !ax-border-2 !ax-border-surface\\\" color=\\\"success\\\">\\n </ax-badge>\\n }\\n </ax-avatar>\\n </div>\\n\\n <!-- User Details and Last Message -->\\n <div class=\\\"ax-flex ax-flex-col ax-min-w-0 ax-flex-1\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2\\\">\\n <p class=\\\"ax-font-semibold ax-text-on-surface ax-truncate\\\">{{ fullName() }}</p>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (messageSeenStatus()) {\\n <ax-icon class=\\\"ax-icon ax-text-success ax-size-5\\\" [class]=\\\"messageSeenStatus()\\\"></ax-icon>\\n }\\n @if (lastMessageDate()) {\\n <span class=\\\"ax-text-xs ax-text-on-surface-variant ax-whitespace-nowrap\\\">\\n {{ lastMessageDate() }}\\n </span>\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-mt-1\\\">\\n <p class=\\\"ax-text-sm ax-text-on-surface-variant ax-truncate\\\">\\n {{ lastMessage() }}\\n </p>\\n @if (hasUnread()) {\\n <ax-badge color=\\\"primary\\\" [text]=\\\"unreadCount()\\\" class=\\\"ax-flex-shrink-0 ax-ml-auto\\\"></ax-badge>\\n }\\n </div>\\n </div>\\n </div>\\n</div>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: i1.AXImageComponent, selector: \"ax-image\", inputs: [\"width\", \"height\", \"overlayMode\", \"src\", \"alt\", \"priority\", \"lazy\"], outputs: [\"onLoad\", \"onError\"] }, { kind: \"component\", type: i2.AXAvatarComponent, selector: \"ax-avatar\", inputs: [\"color\", \"size\", \"shape\", \"look\"], outputs: [\"sizeChange\"] }, { kind: \"component\", type: i3.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"text\", \"look\"] }, { kind: \"component\", type: i4.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i4.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: i5.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatItemComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<div\\n [id]=\\\"data().id\\\"\\n class=\\\"ax-cursor-pointer ax-p-4 ax-flex ax-items-center ax-justify-between ax-gap-4 ax-transition-all ax-duration-200 hover:ax-bg-surface-hover ax-rounded-lg ax-border-b ax-border-divider\\\"\\n (click)=\\\"onPressChatItem(data().id)\\\"\\n>\\n <!-- Avatar and User Info Section -->\\n <div class=\\\"ax-flex ax-min-w-0 ax-gap-4 ax-flex-1\\\">\\n <!-- Avatar with Online Status -->\\n <div class=\\\"ax-flex-shrink-0\\\">\\n <ax-avatar class=\\\"ax-relative\\\" color=\\\"primary\\\" shape=\\\"rounded\\\" [size]=\\\"48\\\">\\n @if (data().roomMembers && data().roomMembers.length > 0 && data().roomMembers[0].avatar) {\\n <ax-image [src]=\\\"data().roomMembers[0].avatar\\\" class=\\\"ax-rounded-lg\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-font-medium\\\">{{ extractInitials(fullName()) }}</span>\\n </ax-text>\\n }\\n\\n <!-- Online Status Indicator -->\\n @if (isOnline()) {\\n <ax-badge class=\\\"ax-absolute ax-bottom-1 ax-end-1 !ax-size-3 !ax-border-2 !ax-border-surface\\\" color=\\\"success\\\">\\n </ax-badge>\\n }\\n </ax-avatar>\\n </div>\\n\\n <!-- User Details and Last Message -->\\n <div class=\\\"ax-flex ax-flex-col ax-min-w-0 ax-flex-1\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2\\\">\\n <p class=\\\"ax-font-semibold ax-text-on-surface ax-truncate\\\">{{ fullName() }}</p>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (messageSeenStatus()) {\\n <ax-icon class=\\\"ax-icon ax-text-success ax-size-5\\\" [class]=\\\"messageSeenStatus()\\\"></ax-icon>\\n }\\n @if (lastMessageDate()) {\\n <span class=\\\"ax-text-xs ax-text-on-surface-variant ax-whitespace-nowrap\\\">\\n {{ lastMessageDate() }}\\n </span>\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-mt-1\\\">\\n <p class=\\\"ax-text-sm ax-text-on-surface-variant ax-truncate\\\">\\n {{ lastMessage() }}\\n </p>\\n @if (hasUnread()) {\\n <ax-badge color=\\\"primary\\\" [text]=\\\"unreadCount()\\\" class=\\\"ax-flex-shrink-0 ax-ml-auto\\\"></ax-badge>\\n }\\n </div>\\n </div>\\n </div>\\n</div>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NvbXBvbmVudHMvY2hhdC1pdGVtL2NoYXQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jb21wb25lbnRzL2NoYXQtaXRlbS9jaGF0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQVV6RCxNQUFNLE9BQU8sb0JBQW9CO0lBUGpDO1FBUUUsUUFBUTtRQUNSLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFlLENBQUM7UUFFckMsU0FBUztRQUNULGtCQUFhLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFFakMsV0FBVztRQUNILG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVoRCxrQkFBa0I7UUFDUixhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxF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bS9hdXRoJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhNQ2hhdFJvb20gfSBmcm9tICcuLi8uLi9jaGF0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tY2hhdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNoYXRJdGVtQ29tcG9uZW50IHtcbiAgLy8gSW5wdXRcbiAgZGF0YSA9IGlucHV0LnJlcXVpcmVkPEFYTUNoYXRSb29tPigpO1xuXG4gIC8vIE91dHB1dFxuICBwcmVzc0NoYXRJdGVtID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICAvLyBTZXJ2aWNlc1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgLy8gQ29tcHV0ZWQgdmFsdWVzXG4gIHByb3RlY3RlZCBmdWxsTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtZW1iZXIgPSB0aGlzLmRhdGEoKS5yb29tTWVtYmVycz8uWzBdO1xuICAgIHJldHVybiBtZW1iZXIgPyBtZW1iZXIuZnVsbE5hbWUgOiAnVW5rbm93biBVc2VyJztcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGxhc3RNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEoKS5sYXN0TWVzc2FnZT8ubWVzc2FnZT8uY29udGVudCB8fCAnTm8gbWVzc2FnZXMgeWV0JztcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGxhc3RNZXNzYWdlRGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kYXRhKCkubGFzdE1lc3NhZ2U7XG4gICAgaWYgKCFtZXNzYWdlKSByZXR1cm4gJyc7XG5cbiAgICByZXR1cm4gbWVzc2FnZS5mb3JtYXR0ZWREYXRlIHx8ICcnO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaGFzVW5yZWFkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEoKS51bnJlYWRDb3VudCA+IDA7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCB1bnJlYWRDb3VudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhKCkudW5yZWFkQ291bnQudG9TdHJpbmcoKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGlzT25saW5lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1lbWJlciA9IHRoaXMuZGF0YSgpLnJvb21NZW1iZXJzPy5bMF07XG4gICAgcmV0dXJuIG1lbWJlcj8uaXNPbmxpbmUgfHwgZmFsc2U7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBteUlkID0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZDtcblxuICAvLyBNZXRob2RzXG4gIHByb3RlY3RlZCBleHRyYWN0SW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7XG4gICAgY29uc3Qgd29yZHMgPSBuYW1lLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSB3b3Jkcy5tYXAoKHdvcmQpID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkpO1xuICAgIHJldHVybiBpbml0aWFscy5qb2luKCcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblByZXNzQ2hhdEl0ZW0oaWQ6IHN0cmluZykge1xuICAgIHRoaXMucHJlc3NDaGF0SXRlbS5lbWl0KGlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtZXNzYWdlU2VlblN0YXR1cygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gdGhpcy5kYXRhKCkubGFzdE1lc3NhZ2U7XG4gICAgaWYgKCFsYXN0TWVzc2FnZSkgcmV0dXJuICcnO1xuXG4gICAgLy8gQ2hlY2sgaWYgY3VycmVudCB1c2VyIGlzIHRoZSBhdXRob3JcbiAgICBpZiAodGhpcy5teUlkID09PSBsYXN0TWVzc2FnZS5hdXRob3I/LmlkKSB7XG4gICAgICAvLyBDaGVjayBpZiBtZXNzYWdlIGhhcyBiZWVuIHNlZW4gYnkgYW55b25lXG4gICAgICByZXR1cm4gbGFzdE1lc3NhZ2UuaGFzU2VlbiA/ICdheC1pY29uLWRvYmJsZS1jaGVjaycgOiAnYXgtaWNvbi1jaGVjayc7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4iLCI8ZGl2XG4gIFtpZF09XCJkYXRhKCkuaWRcIlxuICBjbGFzcz1cImF4LWN1cnNvci1wb2ludGVyIGF4LXAtNCBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTQgYXgtdHJhbnNpdGlvbi1hbGwgYXgtZHVyYXRpb24tMjAwIGhvdmVyOmF4LWJnLXN1cmZhY2UtaG92ZXIgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItYiBheC1ib3JkZXItZGl2aWRlclwiXG4gIChjbGljayk9XCJvblByZXNzQ2hhdEl0ZW0oZGF0YSgpLmlkKVwiXG4+XG4gIDwhLS0gQXZhdGFyIGFuZCBVc2VyIEluZm8gU2VjdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtbWluLXctMCBheC1nYXAtNCBheC1mbGV4LTFcIj5cbiAgICA8IS0tIEF2YXRhciB3aXRoIE9ubGluZSBTdGF0dXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgIDxheC1hdmF0YXIgY2xhc3M9XCJheC1yZWxhdGl2ZVwiIGNvbG9yPVwicHJpbWFyeVwiIHNoYXBlPVwicm91bmRlZFwiIFtzaXplXT1cIjQ4XCI+XG4gICAgICAgIEBpZiAoZGF0YSgpLnJvb21NZW1iZXJzICYmIGRhdGEoKS5yb29tTWVtYmVycy5sZW5ndGggPiAwICYmIGRhdGEoKS5yb29tTWVtYmVyc1swXS5hdmF0YXIpIHtcbiAgICAgICAgICA8YXgtaW1hZ2UgW3NyY109XCJkYXRhKCkucm9vbU1lbWJlcnNbMF0uYXZhdGFyXCIgY2xhc3M9XCJheC1yb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgPC9heC1pbWFnZT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGF4LXRleHQ+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtYmFzZSBheC1mb250LW1lZGl1bVwiPnt7IGV4dHJhY3RJbml0aWFscyhmdWxsTmFtZSgpKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIE9ubGluZSBTdGF0dXMgSW5kaWNhdG9yIC0tPlxuICAgICAgICBAaWYgKGlzT25saW5lKCkpIHtcbiAgICAgICAgICA8YXgtYmFkZ2UgY2xhc3M9XCJheC1hYnNvbHV0ZSBheC1ib3R0b20tMSBheC1lbmQtMSAhYXgtc2l6ZS0zICFheC1ib3JkZXItMiAhYXgtYm9yZGVyLXN1cmZhY2VcIiBjb2xvcj1cInN1Y2Nlc3NcIj5cbiAgICAgICAgICA8L2F4LWJhZGdlPlxuICAgICAgICB9XG4gICAgICA8L2F4LWF2YXRhcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVXNlciBEZXRhaWxzIGFuZCBMYXN0IE1lc3NhZ2UgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWluLXctMCBheC1mbGV4LTFcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTJcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtb24tc3VyZmFjZSBheC10cnVuY2F0ZVwiPnt7IGZ1bGxOYW1lKCkgfX08L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMVwiPlxuICAgICAgICAgIEBpZiAobWVzc2FnZVNlZW5TdGF0dXMoKSkge1xuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LXRleHQtc3VjY2VzcyBheC1zaXplLTVcIiBbY2xhc3NdPVwibWVzc2FnZVNlZW5TdGF0dXMoKVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChsYXN0TWVzc2FnZURhdGUoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhzIGF4LXRleHQtb24tc3VyZmFjZS12YXJpYW50IGF4LXdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgIHt7IGxhc3RNZXNzYWdlRGF0ZSgpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yIGF4LW10LTFcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LXNtIGF4LXRleHQtb24tc3VyZmFjZS12YXJpYW50IGF4LXRydW5jYXRlXCI+XG4gICAgICAgICAge3sgbGFzdE1lc3NhZ2UoKSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIEBpZiAoaGFzVW5yZWFkKCkpIHtcbiAgICAgICAgICA8YXgtYmFkZ2UgY29sb3I9XCJwcmltYXJ5XCIgW3RleHRdPVwidW5yZWFkQ291bnQoKVwiIGNsYXNzPVwiYXgtZmxleC1zaHJpbmstMCBheC1tbC1hdXRvXCI+PC9heC1iYWRnZT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=","import { afterNextRender, ChangeDetectionStrategy, Component, computed, inject, signal, viewChild, } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXMChatService } from './chat.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@angular/router\";\nimport * as i3 from \"@acorex/cdk/resizable\";\nimport * as i4 from \"@acorex/components/badge\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/components/search-box\";\nimport * as i7 from \"@acorex/components/tabs\";\nimport * as i8 from \"@acorex/components/button\";\nimport * as i9 from \"@acorex/components/loading\";\nimport * as i10 from \"@acorex/platform/layout/views\";\nimport * as i11 from \"@acorex/platform/layout/components\";\nimport * as i12 from \"./components/chat-item/chat-item.component\";\nexport class AXMChatComponent {\n constructor() {\n this.route = inject(ActivatedRoute);\n this.router = inject(Router);\n this.chatService = inject(AXMChatService);\n // View Children\n this.tab = viewChild('tab');\n // State signals\n this.rooms = signal([]);\n this.allRooms = signal([]);\n this.selectedRoom = signal(null);\n this.isLoading = signal(false);\n this.error = signal(null);\n this.activeTab = signal(0);\n this.isSearching = signal(false);\n this.searchQuery = signal('');\n this.showSearch = signal(true);\n this.placeholder = signal('Search chats...');\n // Computed signals\n this.filteredRooms = computed(() => {\n let chatRooms = this.rooms();\n // Apply search filter\n if (this.searchQuery()) {\n const searchText = this.searchQuery().toLowerCase();\n chatRooms = chatRooms.filter((room) => {\n const roomName = room.roomMembers?.[0]?.fullName || '';\n const lastMessage = room.lastMessage?.message?.content || '';\n return roomName.toLowerCase().includes(searchText) || lastMessage.toLowerCase().includes(searchText);\n });\n }\n // Apply tab filter\n if (this.activeTab() === 1) {\n return chatRooms.filter((room) => room.unreadCount > 0);\n }\n return chatRooms;\n });\n this.unreadCount = computed(() => this.allRooms().filter((i) => i.unreadCount > 0).length);\n this.allCount = computed(() => this.allRooms().length);\n this.hasUnread = computed(() => this.allRooms().filter((i) => i.unreadCount > 0).length > 0);\n this.totalCount = computed(() => this.allRooms().length || 0);\n afterNextRender(() => {\n const tabComponent = this.tab();\n if (tabComponent) {\n tabComponent.onActiveTabChanged.subscribe((i) => {\n this.activeTab.set(i.index);\n });\n }\n });\n }\n async ngOnInit() {\n await this.loadChats();\n }\n // Page Interface Implementation\n getPageTitle() {\n return this.selectedRoom()\n ? this.selectedRoom()?.roomMembers?.[0]?.fullName || 'Unknown User'\n : 'Select A Chat First';\n }\n getPageDescription() {\n return this.selectedRoom() ? this.selectedRoom()?.title || '' : '';\n }\n getMenuItems() {\n return [];\n }\n // Methods\n async loadChats() {\n try {\n this.isLoading.set(true);\n this.error.set(null);\n // Use the updated service method to get rooms with last messages\n const response = await this.chatService.getAllChatRooms();\n this.allRooms.set(response.items);\n this.rooms.set(response.items);\n this.isLoading.set(false);\n }\n catch (error) {\n this.error.set('Failed to load chats. Please try again.');\n this.isLoading.set(false);\n console.error('Error loading chats:', error);\n }\n }\n async refreshChat() {\n await this.loadChats();\n }\n async markChatAsRead(chatId) {\n try {\n // Use the service method to mark chat as read\n await this.chatService.markChatAsRead(chatId);\n // Update local state without making another network request\n const currentRooms = this.allRooms();\n const updatedRooms = currentRooms.map((room) => {\n if (room.id === chatId) {\n // Reset unread count for the selected room\n return { ...room, unreadCount: 0 };\n }\n return room;\n });\n // Update the rooms signals\n this.allRooms.set(updatedRooms);\n this.rooms.set(updatedRooms);\n // Find the selected room\n const selectedRoom = updatedRooms.find((room) => room.id === chatId) || null;\n this.selectedRoom.set(selectedRoom);\n // Navigate to the chat details\n this.router.navigate([chatId], { relativeTo: this.route });\n }\n catch (error) {\n console.error('Failed to mark chat as read:', error);\n }\n }\n searchChat(query) {\n this.searchQuery.set(query);\n this.isSearching.set(!!query);\n }\n goBack() {\n this.selectedRoom.set(null);\n this.router.navigate(['./'], { relativeTo: this.route });\n }\n // Header methods\n onSearch(query) {\n this.searchChat(query);\n }\n clearSearch() {\n this.searchQuery.set('');\n this.isSearching.set(false);\n }\n // Footer methods\n onNewConversation() {\n // TODO: Implement new conversation logic\n console.log('New conversation clicked');\n }\n // Preview header methods\n emitBack() {\n this.goBack();\n }\n ngOnDestroy() {\n console.log('ngOnDestroy');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMChatComponent, isStandalone: false, selector: \"axm-chat\", viewQueries: [{ propertyName: \"tab\", first: true, predicate: [\"tab\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<axp-page-layout>\\n <axp-layout-start-side [axResizable]=\\\"true\\\" class=\\\"ax-border-e ax-lightest-surface ax-h-full\\\">\\n <axp-layout-header>\\n <axp-layout-title>Conversations</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [ngModel]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </axp-layout-toolbar>\\n </axp-layout-header>\\n <axp-layout-content class=\\\"ax-flex ax-flex-col ax-min-h-0\\\">\\n <!-- Tabs -->\\n <div class=\\\"ax-px-4\\\">\\n <ax-tabs #tab class=\\\"ax-text-neutral-400\\\" [look]=\\\"'with-line'\\\" [location]=\\\"'bottom'\\\" [fitParent]=\\\"true\\\">\\n <ax-tab-item text=\\\"All\\\" [active]=\\\"activeTab() === 0\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"totalCount().toString()\\\"\\n [color]=\\\"activeTab() === 0 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n @if (hasUnread()) {\\n <ax-tab-item text=\\\"Unread\\\" [active]=\\\"activeTab() === 1\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"unreadCount().toString()\\\"\\n [color]=\\\"activeTab() === 1 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n }\\n </ax-tabs>\\n </div>\\n\\n <!-- Chat List Content -->\\n <div class=\\\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col\\\">\\n <!-- Loading State -->\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-justify-center ax-p-4\\\">\\n <ax-loading></ax-loading>\\n </div>\\n }\\n\\n <!-- Error State -->\\n @if (error()) {\\n <div class=\\\"ax-p-4 ax-text-error ax-text-center\\\">\\n {{ error() }}\\n <button (click)=\\\"refreshChat()\\\" class=\\\"ax-mt-2 ax-text-primary hover:ax-text-primary-dark\\\">\\n Try Again\\n </button>\\n </div>\\n }\\n\\n <!-- Chat List -->\\n @if (!isLoading() && !error()) {\\n <div\\n class=\\\"ax-flex-1 ax-overflow-y-auto ax-space-y-2 ax-scrollbar-thin ax-scrollbar-thumb-gray-300 ax-scrollbar-track-transparent\\\"\\n >\\n @for (i of filteredRooms(); track i.id) {\\n <axm-chat-item\\n [data]=\\\"i\\\"\\n (click)=\\\"markChatAsRead(i.id)\\\"\\n [class.ax-bg-surface]=\\\"selectedRoom()?.id === i.id\\\"\\n class=\\\"ax-transition-all ax-duration-200 hover:ax-bg-surface ax-rounded-lg\\\"\\n ></axm-chat-item>\\n }\\n\\n <!-- Empty State -->\\n @empty {\\n <div class=\\\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\\\">\\n @if (isSearching()) {\\n No chats found matching your search\\n } @else {\\n No chats available\\n }\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Footer Content -->\\n <div class=\\\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\\\">\\n <ax-button class=\\\"ax-w-full\\\" color=\\\"primary\\\" text=\\\"New Conversation\\\" (onClick)=\\\"onNewConversation()\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-plus\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n </axp-layout-content>\\n </axp-layout-start-side>\\n\\n <axp-page-content>\\n <!-- Chat Content -->\\n <div class=\\\"ax-flex-1 ax-overflow-hidden\\\">\\n <router-outlet></router-outlet>\\n </div>\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"\"], dependencies: [{ kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: i2.RouterOutlet, selector: \"router-outlet\", inputs: [\"name\", \"routerOutletData\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }, { kind: \"directive\", type: i3.AXResizableDirective, selector: \"[axResizable]\", inputs: [\"axResizable\", \"minWidth\", \"maxWidth\", \"dblClickAction\", \"width\", \"defaultWidth\"], outputs: [\"axResizableChange\", \"minWidthChange\", \"maxWidthChange\", \"dblClickActionChange\", \"widthChange\", \"defaultWidthChange\", \"onResizingStarted\", \"onResizingEnded\", \"onResizingDblClick\"] }, { kind: \"component\", type: i4.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"text\", \"look\"] }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: i6.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"component\", type: i7.AXTabsComponent, selector: \"ax-tabs\", inputs: [\"look\", \"location\", \"fitParent\", \"minWidth\", \"content\"], outputs: [\"onActiveTabChanged\"] }, { kind: \"component\", type: i7.AXTabItemComponent, selector: \"ax-tab-item\", inputs: [\"disabled\", \"text\", \"key\", \"headerTemplate\", \"active\"], outputs: [\"disabledChange\", \"onClick\", \"onBlur\", \"onFocus\", \"activeChange\"] }, { kind: \"component\", type: i8.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i9.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"component\", type: i10.AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: i11.AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: i11.AXPThemeLayoutStartSideComponent, selector: \"axp-layout-page-start-side, axp-layout-start-side\" }, { kind: \"component\", type: i11.AXPThemeLayoutHeaderComponent, selector: \"axp-layout-header\" }, { kind: \"component\", type: i11.AXPThemeLayoutToolbarComponent, selector: \"axp-layout-toolbar\" }, { kind: \"component\", type: i12.AXMChatItemComponent, selector: \"axm-chat-item\", inputs: [\"data\"], outputs: [\"pressChatItem\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<axp-page-layout>\\n <axp-layout-start-side [axResizable]=\\\"true\\\" class=\\\"ax-border-e ax-lightest-surface ax-h-full\\\">\\n <axp-layout-header>\\n <axp-layout-title>Conversations</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [ngModel]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </axp-layout-toolbar>\\n </axp-layout-header>\\n <axp-layout-content class=\\\"ax-flex ax-flex-col ax-min-h-0\\\">\\n <!-- Tabs -->\\n <div class=\\\"ax-px-4\\\">\\n <ax-tabs #tab class=\\\"ax-text-neutral-400\\\" [look]=\\\"'with-line'\\\" [location]=\\\"'bottom'\\\" [fitParent]=\\\"true\\\">\\n <ax-tab-item text=\\\"All\\\" [active]=\\\"activeTab() === 0\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"totalCount().toString()\\\"\\n [color]=\\\"activeTab() === 0 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n @if (hasUnread()) {\\n <ax-tab-item text=\\\"Unread\\\" [active]=\\\"activeTab() === 1\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"unreadCount().toString()\\\"\\n [color]=\\\"activeTab() === 1 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n }\\n </ax-tabs>\\n </div>\\n\\n <!-- Chat List Content -->\\n <div class=\\\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col\\\">\\n <!-- Loading State -->\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-justify-center ax-p-4\\\">\\n <ax-loading></ax-loading>\\n </div>\\n }\\n\\n <!-- Error State -->\\n @if (error()) {\\n <div class=\\\"ax-p-4 ax-text-error ax-text-center\\\">\\n {{ error() }}\\n <button (click)=\\\"refreshChat()\\\" class=\\\"ax-mt-2 ax-text-primary hover:ax-text-primary-dark\\\">\\n Try Again\\n </button>\\n </div>\\n }\\n\\n <!-- Chat List -->\\n @if (!isLoading() && !error()) {\\n <div\\n class=\\\"ax-flex-1 ax-overflow-y-auto ax-space-y-2 ax-scrollbar-thin ax-scrollbar-thumb-gray-300 ax-scrollbar-track-transparent\\\"\\n >\\n @for (i of filteredRooms(); track i.id) {\\n <axm-chat-item\\n [data]=\\\"i\\\"\\n (click)=\\\"markChatAsRead(i.id)\\\"\\n [class.ax-bg-surface]=\\\"selectedRoom()?.id === i.id\\\"\\n class=\\\"ax-transition-all ax-duration-200 hover:ax-bg-surface ax-rounded-lg\\\"\\n ></axm-chat-item>\\n }\\n\\n <!-- Empty State -->\\n @empty {\\n <div class=\\\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\\\">\\n @if (isSearching()) {\\n No chats found matching your search\\n } @else {\\n No chats available\\n }\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Footer Content -->\\n <div class=\\\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\\\">\\n <ax-button class=\\\"ax-w-full\\\" color=\\\"primary\\\" text=\\\"New Conversation\\\" (onClick)=\\\"onNewConversation()\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-plus\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n </axp-layout-content>\\n </axp-layout-start-side>\\n\\n <axp-page-content>\\n <!-- Chat Content -->\\n <div class=\\\"ax-flex-1 ax-overflow-hidden\\\">\\n <router-outlet></router-outlet>\\n </div>\\n </axp-page-content>\\n</axp-page-layout>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jaGF0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NoYXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFVaEQsTUFBTSxPQUFPLGdCQUFnQjtJQStDM0I7UUE5Q1EsVUFBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTdDLGdCQUFnQjtRQUNoQixRQUFHLEdBQUcsU0FBUyxDQUFrQixLQUFLLENBQUMsQ0FBQztRQUV4QyxnQkFBZ0I7UUFDaEIsVUFBSyxHQUFHLE1BQU0sQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDbEMsYUFBUSxHQUFHLE1BQU0sQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDckMsaUJBQVksR0FBRyxNQUFNLENBQXFCLElBQUksQ0FBQyxDQUFDO1FBQ2hELGNBQVMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkMsVUFBSyxHQUFHLE1BQU0s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QUFDO0lBQzdCLENBQUM7OEdBbktVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLGlMQ3RCN0IsNitIQStHQTs7MkZEekZhLGdCQUFnQjtrQkFQNUIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVGFic0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7XG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFYTUNoYXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGF0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ2hhdFJvb20gfSBmcm9tICcuL2NoYXQudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1jaGF0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGF0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ2hhdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIGNoYXRTZXJ2aWNlID0gaW5qZWN0KEFYTUNoYXRTZXJ2aWNlKTtcblxuICAvLyBWaWV3IENoaWxkcmVuXG4gIHRhYiA9IHZpZXdDaGlsZDxBWFRhYnNDb21wb25lbnQ+KCd0YWInKTtcblxuICAvLyBTdGF0ZSBzaWduYWxzXG4gIHJvb21zID0gc2lnbmFsPEFYTUNoYXRSb29tW10+KFtdKTtcbiAgYWxsUm9vbXMgPSBzaWduYWw8QVhNQ2hhdFJvb21bXT4oW10pO1xuICBzZWxlY3RlZFJvb20gPSBzaWduYWw8QVhNQ2hhdFJvb20gfCBudWxsPihudWxsKTtcbiAgaXNMb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgZXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGFjdGl2ZVRhYiA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBpc1NlYXJjaGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHNlYXJjaFF1ZXJ5ID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBzaG93U2VhcmNoID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwbGFjZWhvbGRlciA9IHNpZ25hbDxzdHJpbmc+KCdTZWFyY2ggY2hhdHMuLi4nKTtcblxuICAvLyBDb21wdXRlZCBzaWduYWxzXG4gIGZpbHRlcmVkUm9vbXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IGNoYXRSb29tcyA9IHRoaXMucm9vbXMoKTtcblxuICAgIC8vIEFwcGx5IHNlYXJjaCBmaWx0ZXJcbiAgICBpZiAodGhpcy5zZWFyY2hRdWVyeSgpKSB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hRdWVyeSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjaGF0Um9vbXMgPSBjaGF0Um9vbXMuZmlsdGVyKChyb29tKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvb21OYW1lID0gcm9vbS5yb29tTWVtYmVycz8uWzBdPy5mdWxsTmFtZSB8fCAnJztcbiAgICAgICAgY29uc3QgbGFzdE1lc3NhZ2UgPSByb29tLmxhc3RNZXNzYWdlPy5tZXNzYWdlPy5jb250ZW50IHx8ICcnO1xuICAgICAgICByZXR1cm4gcm9vbU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0KSB8fCBsYXN0TWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgdGFiIGZpbHRlclxuICAgIGlmICh0aGlzLmFjdGl2ZVRhYigpID09PSAxKSB7XG4gICAgICByZXR1cm4gY2hhdFJvb21zLmZpbHRlcigocm9vbSkgPT4gcm9vbS51bnJlYWRDb3VudCA+IDApO1xuICAgIH1cblxuICAgIHJldHVybiBjaGF0Um9vbXM7XG4gIH0pO1xuXG4gIHVucmVhZENvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hbGxSb29tcygpLmZpbHRlcigoaSkgPT4gaS51bnJlYWRDb3VudCA+IDApLmxlbmd0aCk7XG4gIGFsbENvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hbGxSb29tcygpLmxlbmd0aCk7XG4gIGhhc1VucmVhZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWxsUm9vbXMoKS5maWx0ZXIoKGkpID0+IGkudW5yZWFkQ291bnQgPiAwKS5sZW5ndGggPiAwKTtcbiAgdG90YWxDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWxsUm9vbXMoKS5sZW5ndGggfHwgMCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IHRhYkNvbXBvbmVudCA9IHRoaXMudGFiKCk7XG4gICAgICBpZiAodGFiQ29tcG9uZW50KSB7XG4gICAgICAgIHRhYkNvbXBvbmVudC5vbkFjdGl2ZVRhYkNoYW5nZWQuc3Vic2NyaWJlKChpKSA9PiB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIuc2V0KGkuaW5kZXgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubG9hZENoYXRzKCk7XG4gIH1cblxuICAvLyBQYWdlIEludGVyZmFjZSBJbXBsZW1lbnRhdGlvblxuICBnZXRQYWdlVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvb20oKVxuICAgICAgPyB0aGlzLnNlbGVjdGVkUm9vbSgpPy5yb29tTWVtYmVycz8uWzBdPy5mdWxsTmFtZSB8fCAnVW5rbm93biBVc2VyJ1xuICAgICAgOiAnU2VsZWN0IEEgQ2hhdCBGaXJzdCc7XG4gIH1cblxuICBnZXRQYWdlRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvb20oKSA/IHRoaXMuc2VsZWN0ZWRSb29tKCk/LnRpdGxlIHx8ICcnIDogJyc7XG4gIH1cblxuICBnZXRNZW51SXRlbXMoKTogYW55W10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIE1ldGhvZHNcbiAgYXN5bmMgbG9hZENoYXRzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmVycm9yLnNldChudWxsKTtcblxuICAgICAgLy8gVXNlIHRoZSB1cGRhdGVkIHNlcnZpY2UgbWV0aG9kIHRvIGdldCByb29tcyB3aXRoIGxhc3QgbWVzc2FnZXNcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jaGF0U2VydmljZS5nZXRBbGxDaGF0Um9vbXMoKTtcblxuICAgICAgdGhpcy5hbGxSb29tcy5zZXQocmVzcG9uc2UuaXRlbXMpO1xuICAgICAgdGhpcy5yb29tcy5zZXQocmVzcG9uc2UuaXRlbXMpO1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5lcnJvci5zZXQoJ0ZhaWxlZCB0byBsb2FkIGNoYXRzLiBQbGVhc2UgdHJ5IGFnYWluLicpO1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY2hhdHM6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hDaGF0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubG9hZENoYXRzKCk7XG4gIH1cblxuICBhc3luYyBtYXJrQ2hhdEFzUmVhZChjaGF0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgdGhlIHNlcnZpY2UgbWV0aG9kIHRvIG1hcmsgY2hhdCBhcyByZWFkXG4gICAgICBhd2FpdCB0aGlzLmNoYXRTZXJ2aWNlLm1hcmtDaGF0QXNSZWFkKGNoYXRJZCk7XG5cbiAgICAgIC8vIFVwZGF0ZSBsb2NhbCBzdGF0ZSB3aXRob3V0IG1ha2luZyBhbm90aGVyIG5ldHdvcmsgcmVxdWVzdFxuICAgICAgY29uc3QgY3VycmVudFJvb21zID0gdGhpcy5hbGxSb29tcygpO1xuICAgICAgY29uc3QgdXBkYXRlZFJvb21zID0gY3VycmVudFJvb21zLm1hcCgocm9vbSkgPT4ge1xuICAgICAgICBpZiAocm9vbS5pZCA9PT0gY2hhdElkKSB7XG4gICAgICAgICAgLy8gUmVzZXQgdW5yZWFkIGNvdW50IGZvciB0aGUgc2VsZWN0ZWQgcm9vbVxuICAgICAgICAgIHJldHVybiB7IC4uLnJvb20sIHVucmVhZENvdW50OiAwIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvb207XG4gICAgICB9KTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSByb29tcyBzaWduYWxzXG4gICAgICB0aGlzLmFsbFJvb21zLnNldCh1cGRhdGVkUm9vbXMpO1xuICAgICAgdGhpcy5yb29tcy5zZXQodXBkYXRlZFJvb21zKTtcblxuICAgICAgLy8gRmluZCB0aGUgc2VsZWN0ZWQgcm9vbVxuICAgICAgY29uc3Qgc2VsZWN0ZWRSb29tID0gdXBkYXRlZFJvb21zLmZpbmQoKHJvb20pID0+IHJvb20uaWQgPT09IGNoYXRJZCkgfHwgbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb29tLnNldChzZWxlY3RlZFJvb20pO1xuXG4gICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgY2hhdCBkZXRhaWxzXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbY2hhdElkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbWFyayBjaGF0IGFzIHJlYWQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaENoYXQocXVlcnk6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KHF1ZXJ5KTtcbiAgICB0aGlzLmlzU2VhcmNoaW5nLnNldCghIXF1ZXJ5KTtcbiAgfVxuXG4gIGdvQmFjaygpIHtcbiAgICB0aGlzLnNlbGVjdGVkUm9vbS5zZXQobnVsbCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gIH1cblxuICAvLyBIZWFkZXIgbWV0aG9kc1xuICBvblNlYXJjaChxdWVyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hDaGF0KHF1ZXJ5KTtcbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KCcnKTtcbiAgICB0aGlzLmlzU2VhcmNoaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICAvLyBGb290ZXIgbWV0aG9kc1xuICBvbk5ld0NvbnZlcnNhdGlvbigpIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgbmV3IGNvbnZlcnNhdGlvbiBsb2dpY1xuICAgIGNvbnNvbGUubG9nKCdOZXcgY29udmVyc2F0aW9uIGNsaWNrZWQnKTtcbiAgfVxuXG4gIC8vIFByZXZpZXcgaGVhZGVyIG1ldGhvZHNcbiAgZW1pdEJhY2soKSB7XG4gICAgdGhpcy5nb0JhY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCduZ09uRGVzdHJveScpO1xuICB9XG59XG4iLCI8YXhwLXBhZ2UtbGF5b3V0PlxuICA8YXhwLWxheW91dC1zdGFydC1zaWRlIFtheFJlc2l6YWJsZV09XCJ0cnVlXCIgY2xhc3M9XCJheC1ib3JkZXItZSBheC1saWdodGVzdC1zdXJmYWNlIGF4LWgtZnVsbFwiPlxuICAgIDxheHAtbGF5b3V0LWhlYWRlcj5cbiAgICAgIDxheHAtbGF5b3V0LXRpdGxlPkNvbnZlcnNhdGlvbnM8L2F4cC1sYXlvdXQtdGl0bGU+XG4gICAgICA8YXhwLWxheW91dC10b29sYmFyPlxuICAgICAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICAgIGxvb2s9XCJzb2xpZFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFF1ZXJ5KClcIlxuICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvblNlYXJjaCgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPlxuICAgICAgICA8L2F4LXNlYXJjaC1ib3g+XG4gICAgICA8L2F4cC1sYXlvdXQtdG9vbGJhcj5cbiAgICA8L2F4cC1sYXlvdXQtaGVhZGVyPlxuICAgIDxheHAtbGF5b3V0LWNvbnRlbnQgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LW1pbi1oLTBcIj5cbiAgICAgIDwhLS0gVGFicyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1weC00XCI+XG4gICAgICAgIDxheC10YWJzICN0YWIgY2xhc3M9XCJheC10ZXh0LW5ldXRyYWwtNDAwXCIgW2xvb2tdPVwiJ3dpdGgtbGluZSdcIiBbbG9jYXRpb25dPVwiJ2JvdHRvbSdcIiBbZml0UGFyZW50XT1cInRydWVcIj5cbiAgICAgICAgICA8YXgtdGFiLWl0ZW0gdGV4dD1cIkFsbFwiIFthY3RpdmVdPVwiYWN0aXZlVGFiKCkgPT09IDBcIj5cbiAgICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICAgIDxheC1iYWRnZVxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRvdGFsQ291bnQoKS50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwiYWN0aXZlVGFiKCkgPT09IDAgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1taW4tdy1bMS41cmVtXSBheC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgID48L2F4LWJhZGdlPlxuICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgPC9heC10YWItaXRlbT5cbiAgICAgICAgICBAaWYgKGhhc1VucmVhZCgpKSB7XG4gICAgICAgICAgICA8YXgtdGFiLWl0ZW0gdGV4dD1cIlVucmVhZFwiIFthY3RpdmVdPVwiYWN0aXZlVGFiKCkgPT09IDFcIj5cbiAgICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgICA8YXgtYmFkZ2VcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInVucmVhZENvdW50KCkudG9TdHJpbmcoKVwiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwiYWN0aXZlVGFiKCkgPT09IDEgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LW1pbi13LVsxLjVyZW1dIGF4LWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+PC9heC1iYWRnZT5cbiAgICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgICA8L2F4LXRhYi1pdGVtPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9heC10YWJzPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ2hhdCBMaXN0IENvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0xIGF4LW92ZXJmbG93LWhpZGRlbiBheC1mbGV4IGF4LWZsZXgtY29sXCI+XG4gICAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1wLTRcIj5cbiAgICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gICAgICAgIEBpZiAoZXJyb3IoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTQgYXgtdGV4dC1lcnJvciBheC10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAge3sgZXJyb3IoKSB9fVxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVmcmVzaENoYXQoKVwiIGNsYXNzPVwiYXgtbXQtMiBheC10ZXh0LXByaW1hcnkgaG92ZXI6YXgtdGV4dC1wcmltYXJ5LWRhcmtcIj5cbiAgICAgICAgICAgICAgVHJ5IEFnYWluXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gQ2hhdCBMaXN0IC0tPlxuICAgICAgICBAaWYgKCFpc0xvYWRpbmcoKSAmJiAhZXJyb3IoKSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtZmxleC0xIGF4LW92ZXJmbG93LXktYXV0byBheC1zcGFjZS15LTIgYXgtc2Nyb2xsYmFyLXRoaW4gYXgtc2Nyb2xsYmFyLXRodW1iLWdyYXktMzAwIGF4LXNjcm9sbGJhci10cmFjay10cmFuc3BhcmVudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoaSBvZiBmaWx0ZXJlZFJvb21zKCk7IHRyYWNrIGkuaWQpIHtcbiAgICAgICAgICAgICAgPGF4bS1jaGF0LWl0ZW1cbiAgICAgICAgICAgICAgICBbZGF0YV09XCJpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibWFya0NoYXRBc1JlYWQoaS5pZClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5heC1iZy1zdXJmYWNlXT1cInNlbGVjdGVkUm9vbSgpPy5pZCA9PT0gaS5pZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC10cmFuc2l0aW9uLWFsbCBheC1kdXJhdGlvbi0yMDAgaG92ZXI6YXgtYmctc3VyZmFjZSBheC1yb3VuZGVkLWxnXCJcbiAgICAgICAgICAgICAgPjwvYXhtLWNoYXQtaXRlbT5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBFbXB0eSBTdGF0ZSAtLT5cbiAgICAgICAgICAgIEBlbXB0eSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTQgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1jZW50ZXIgYXgtdGV4dC1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGlzU2VhcmNoaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgIE5vIGNoYXRzIGZvdW5kIG1hdGNoaW5nIHlvdXIgc2VhcmNoXG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICBObyBjaGF0cyBhdmFpbGFibGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBGb290ZXIgQ29udGVudCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJvcmRlci10IGF4LWJvcmRlci1kaXZpZGVyIGF4LWJnLWxpZ2h0ZXN0IGF4LXAtNFwiPlxuICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC13LWZ1bGxcIiBjb2xvcj1cInByaW1hcnlcIiB0ZXh0PVwiTmV3IENvbnZlcnNhdGlvblwiIChvbkNsaWNrKT1cIm9uTmV3Q29udmVyc2F0aW9uKClcIj5cbiAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxheC1pY29uPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9heHAtbGF5b3V0LWNvbnRlbnQ+XG4gIDwvYXhwLWxheW91dC1zdGFydC1zaWRlPlxuXG4gIDxheHAtcGFnZS1jb250ZW50PlxuICAgIDwhLS0gQ2hhdCBDb250ZW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gICAgPC9kaXY+XG4gIDwvYXhwLXBhZ2UtY29udGVudD5cbjwvYXhwLXBhZ2UtbGF5b3V0PlxuIl19","/**\n * Converts chat service response to chat preview format\n * @param chatResponse - The response from chat service containing items and total\n * @returns Array of formatted chat preview messages\n */\nexport function convertToChatPreview(chatResponse) {\n if (!chatResponse || !chatResponse.items?.length) {\n return [];\n }\n // Map from AXMChatMessage to ChatPreviewMessage\n return chatResponse.items.map((message) => {\n // Determine message type based on content type\n let messageType = 'text';\n // Map contentType to preview type\n if (message.message?.contentType) {\n switch (message.message.contentType) {\n case 'text':\n messageType = 'text';\n break;\n case 'file':\n messageType = 'file';\n break;\n case 'image':\n messageType = 'image';\n break;\n case 'video':\n messageType = 'video';\n break;\n case 'link':\n // Determine if link is for audio or other content\n const content = message.message.content || '';\n if (content.includes('.mp3') || content.includes('.ogg') || content.includes('audio')) {\n messageType = 'audio';\n }\n else {\n messageType = 'text';\n }\n break;\n default:\n messageType = 'text';\n }\n }\n // Extract author name if available\n const name = message.author ? message.author.id : 'Unknown';\n // Create the chat preview message\n const previewMessage = {\n id: message.id,\n sendTime: new Date(message.createdAt || new Date()),\n readTime: new Date(), // Assuming \"read\" when converted\n type: messageType,\n content: message.message?.content || '',\n name: name,\n };\n // Add fromId if the message is not from current user\n if (!message.isFromCurrentUser) {\n previewMessage.fromId = message.author?.id;\n }\n // Note: Reply information would need to be looked up from the actual messages\n // This would typically be done by the service that has access to all messages\n return previewMessage;\n });\n}\n/**\n * Creates a ChatPreviewMessage from reply information\n * @param message - The original message that is being referenced\n * @returns A ChatPreviewMessage formatted for use as a replyTo\n */\nexport function createReplyPreview(message) {\n if (!message)\n return undefined;\n return {\n id: message.id,\n sendTime: new Date(message.createdAt || new Date()),\n readTime: new Date(),\n type: message.message?.contentType === 'image'\n ? 'image'\n : message.message?.contentType === 'video'\n ? 'video'\n : message.message?.contentType === 'file'\n ? 'file'\n : 'text',\n content: message.message?.content || '',\n name: message.author?.id || 'Unknown',\n fromId: !message.isFromCurrentUser ? message.author?.id : undefined,\n };\n}\n/**\n * Generate demo chat preview data with a variety of message types\n * @returns Array of sample chat preview messages\n */\nexport function generateDemoChatPreview() {\n return [\n {\n id: '0',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n {\n id: '1',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Hello',\n name: 'test name',\n replyTo: {\n id: '0',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n },\n {\n id: '2',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'voice',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfoEF34fJ`,\n },\n {\n id: '3',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Can i have your address information?',\n name: 'test name',\n replyTo: {\n id: '1',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Hello',\n name: 'test name',\n },\n },\n {\n id: '4',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'file',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfoEF34fJ`,\n },\n {\n id: '5',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/300/200`,\n },\n {\n id: '6',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'video',\n name: 'test name',\n content: `https://www.pexels.com/download/video/5495322/?fps=29.97&h=540&w=960`,\n },\n {\n id: '7',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n {\n id: '8',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'audio',\n name: 'kids',\n content: `https://actions.google.com/sounds/v1/ambiences/kids_playing.ogg`,\n },\n {\n id: '9',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/300/200`,\n },\n {\n id: '10',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/200/300`,\n },\n {\n id: '11',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'video',\n name: 'test name',\n content: `https://www.pexels.com/download/video/5495322/?fps=29.97&h=540&w=960`,\n },\n {\n id: '12',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'file',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfo59ChoE+u5BxHVL7ZAS1EF34fJ`,\n },\n {\n id: '13',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'audio',\n name: 'alarm',\n content: `https://actions.google.com/sounds/v1/alarms/digital_watch_alarm_long.ogg`,\n },\n ];\n}\n/**\n * Usage Examples:\n *\n * Example 1: Converting chat service response to chat preview format\n * ```typescript\n * import { AXMChatService } from '../chat.service';\n * import { convertToChatPreview } from './chat-preview.helper';\n *\n * export class ChatPreviewComponent {\n * constructor(private chatService: AXMChatService) {}\n *\n * async loadChatMessages(roomId: string) {\n * const response = await this.chatService.getChatMessages(roomId);\n *\n * // Convert to chat preview format\n * const previewMessages = convertToChatPreview(response);\n *\n * // Use the converted messages\n * this.conversationService.chats.set(previewMessages);\n * }\n * }\n * ```\n *\n * Example 2: Using demo data for development/testing\n * ```typescript\n * import { generateDemoChatPreview } from './chat-preview.helper';\n *\n * export class ChatPreviewDemoComponent {\n * ngOnInit() {\n * // Load demo messages\n * const demoMessages = generateDemoChatPreview();\n *\n * // Use the demo messages\n * this.conversationService.chats.set(demoMessages);\n * }\n * }\n */\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1wcmV2aWV3LmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NoYXQtcHJldmlldy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxZQUF3RDtJQUMzRixJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNqRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3hDLCtDQUErQztRQUMvQyxJQUFJLFdBQVcsR0FBK0IsTUFBTSxDQUFDO1FBRXJELGtDQUFrQztRQUNsQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDakMsUUFBUSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxLQUFLLE1BQU07b0JBQ1QsV0FBVyxHQUFHLE1BQU0sQ0FBQztvQkFDckIsTUFBTTtnQkFDUixLQUFLLE1BQU07b0JBQ1QsV0FBVyxHQUFHLE1BQU0sQ0FBQztvQkFDckIsTUFBTTtnQkFDUixLQUFLLE9BQU87b0JBQ1YsV0FBVyxHQUFHLE9BQU8sQ0FBQztvQkFDdEIsTUFBTTtnQkFDUixLQUFLLE9BQU87b0JBQ1YsV0FBVyxHQUFHLE9BQU8sQ0FBQztvQkFDdEIsTUFBTTtnQkFDUixLQUFLLE1BQU07b0JBQ1Qsa0RBQWtEO29CQUNsRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQzlDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxN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QUUsRUFBRSxJQUFJO1lBQ1IsTUFBTSxFQUFFLElBQUk7WUFDWixRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDcEIsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksRUFBRSxPQUFPO1lBQ2IsSUFBSSxFQUFFLFdBQVc7WUFDakIsT0FBTyxFQUFFLCtCQUErQjtTQUN6QztRQUNEO1lBQ0UsRUFBRSxFQUFFLElBQUk7WUFDUixNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNwQixRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsV0FBVztZQUNqQixPQUFPLEVBQUUsc0VBQXNFO1NBQ2hGO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsSUFBSTtZQUNSLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNwQixRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsV0FBVztZQUNqQixPQUFPLEVBQUUsbUVBQW1FO1NBQzdFO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsSUFBSTtZQUNSLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNwQixRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSwwRUFBMEU7U0FDcEY7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0ciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1DaGF0TWVzc2FnZSB9IGZyb20gJy4vY2hhdC50eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGF0UHJldmlld01lc3NhZ2Uge1xuICBpZDogc3RyaW5nO1xuICBmcm9tSWQ/OiBzdHJpbmc7XG4gIHNlbmRUaW1lOiBEYXRlO1xuICByZWFkVGltZTogRGF0ZTtcbiAgdHlwZTogJ3RleHQnIHwgJ3ZvaWNlJyB8ICdmaWxlJyB8ICdpbWFnZScgfCAndmlkZW8nIHwgJ2F1ZGlvJztcbiAgY29udGVudDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlcGx5VG8/OiBDaGF0UHJldmlld01lc3NhZ2U7XG59XG5cbi8qKlxuICogQ29udmVydHMgY2hhdCBzZXJ2aWNlIHJlc3BvbnNlIHRvIGNoYXQgcHJldmlldyBmb3JtYXRcbiAqIEBwYXJhbSBjaGF0UmVzcG9uc2UgLSBUaGUgcmVzcG9uc2UgZnJvbSBjaGF0IHNlcnZpY2UgY29udGFpbmluZyBpdGVtcyBhbmQgdG90YWxcbiAqIEByZXR1cm5zIEFycmF5IG9mIGZvcm1hdHRlZCBjaGF0IHByZXZpZXcgbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0NoYXRQcmV2aWV3KGNoYXRSZXNwb25zZTogeyBpdGVtczogQVhNQ2hhdE1lc3NhZ2VbXTsgdG90YWw6IG51bWJlciB9KTogQ2hhdFByZXZpZXdNZXNzYWdlW10ge1xuICBpZiAoIWNoYXRSZXNwb25zZSB8fCAhY2hhdFJlc3BvbnNlLml0ZW1zPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBNYXAgZnJvbSBBWE1DaGF0TWVzc2FnZSB0byBDaGF0UHJldmlld01lc3NhZ2VcbiAgcmV0dXJuIGNoYXRSZXNwb25zZS5pdGVtcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAvLyBEZXRlcm1pbmUgbWVzc2FnZSB0eXBlIGJhc2VkIG9uIGNvbnRlbnQgdHlwZVxuICAgIGxldCBtZXNzYWdlVHlwZTogQ2hhdFByZXZpZXdNZXNzYWdlWyd0eXBlJ10gPSAndGV4dCc7XG5cbiAgICAvLyBNYXAgY29udGVudFR5cGUgdG8gcHJldmlldyB0eXBlXG4gICAgaWYgKG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUpIHtcbiAgICAgIHN3aXRjaCAobWVzc2FnZS5tZXNzYWdlLmNvbnRlbnRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ3RleHQnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmaWxlJzpcbiAgICAgICAgICBtZXNzYWdlVHlwZSA9ICdmaWxlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ2ltYWdlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ3ZpZGVvJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIGxpbmsgaXMgZm9yIGF1ZGlvIG9yIG90aGVyIGNvbnRlbnRcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gbWVzc2FnZS5tZXNzYWdlLmNvbnRlbnQgfHwgJyc7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoJy5tcDMnKSB8fCBjb250ZW50LmluY2x1ZGVzKCcub2dnJykgfHwgY29udGVudC5pbmNsdWRlcygnYXVkaW8nKSkge1xuICAgICAgICAgICAgbWVzc2FnZVR5cGUgPSAnYXVkaW8nO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZXNzYWdlVHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbWVzc2FnZVR5cGUgPSAndGV4dCc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCBhdXRob3IgbmFtZSBpZiBhdmFpbGFibGVcbiAgICBjb25zdCBuYW1lID0gbWVzc2FnZS5hdXRob3IgPyBtZXNzYWdlLmF1dGhvci5pZCA6ICdVbmtub3duJztcblxuICAgIC8vIENyZWF0ZSB0aGUgY2hhdCBwcmV2aWV3IG1lc3NhZ2VcbiAgICBjb25zdCBwcmV2aWV3TWVzc2FnZTogQ2hhdFByZXZpZXdNZXNzYWdlID0ge1xuICAgICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUobWVzc2FnZS5jcmVhdGVkQXQgfHwgbmV3IERhdGUoKSksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSwgLy8gQXNzdW1pbmcgXCJyZWFkXCIgd2hlbiBjb252ZXJ0ZWRcbiAgICAgIHR5cGU6IG1lc3NhZ2VUeXBlLFxuICAgICAgY29udGVudDogbWVzc2FnZS5tZXNzYWdlPy5jb250ZW50IHx8ICcnLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIGZyb21JZCBpZiB0aGUgbWVzc2FnZSBpcyBub3QgZnJvbSBjdXJyZW50IHVzZXJcbiAgICBpZiAoIW1lc3NhZ2UuaXNGcm9tQ3VycmVudFVzZXIpIHtcbiAgICAgIHByZXZpZXdNZXNzYWdlLmZyb21JZCA9IG1lc3NhZ2UuYXV0aG9yPy5pZDtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBSZXBseSBpbmZvcm1hdGlvbiB3b3VsZCBuZWVkIHRvIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBhY3R1YWwgbWVzc2FnZXNcbiAgICAvLyBUaGlzIHdvdWxkIHR5cGljYWxseSBiZSBkb25lIGJ5IHRoZSBzZXJ2aWNlIHRoYXQgaGFzIGFjY2VzcyB0byBhbGwgbWVzc2FnZXNcblxuICAgIHJldHVybiBwcmV2aWV3TWVzc2FnZTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIENoYXRQcmV2aWV3TWVzc2FnZSBmcm9tIHJlcGx5IGluZm9ybWF0aW9uXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBvcmlnaW5hbCBtZXNzYWdlIHRoYXQgaXMgYmVpbmcgcmVmZXJlbmNlZFxuICogQHJldHVybnMgQSBDaGF0UHJldmlld01lc3NhZ2UgZm9ybWF0dGVkIGZvciB1c2UgYXMgYSByZXBseVRvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZXBseVByZXZpZXcobWVzc2FnZTogQVhNQ2hhdE1lc3NhZ2UpOiBDaGF0UHJldmlld01lc3NhZ2UgfCB1bmRlZmluZWQge1xuICBpZiAoIW1lc3NhZ2UpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICBpZDogbWVzc2FnZS5pZCxcbiAgICBzZW5kVGltZTogbmV3IERhdGUobWVzc2FnZS5jcmVhdGVkQXQgfHwgbmV3IERhdGUoKSksXG4gICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgdHlwZTpcbiAgICAgIG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUgPT09ICdpbWFnZSdcbiAgICAgICAgPyAnaW1hZ2UnXG4gICAgICAgIDogbWVzc2FnZS5tZXNzYWdlPy5jb250ZW50VHlwZSA9PT0gJ3ZpZGVvJ1xuICAgICAgICAgID8gJ3ZpZGVvJ1xuICAgICAgICAgIDogbWVzc2FnZS5tZXNzYWdlPy5jb250ZW50VHlwZSA9PT0gJ2ZpbGUnXG4gICAgICAgICAgICA/ICdmaWxlJ1xuICAgICAgICAgICAgOiAndGV4dCcsXG4gICAgY29udGVudDogbWVzc2FnZS5tZXNzYWdlPy5jb250ZW50IHx8ICcnLFxuICAgIG5hbWU6IG1lc3NhZ2UuYXV0aG9yPy5pZCB8fCAnVW5rbm93bicsXG4gICAgZnJvbUlkOiAhbWVzc2FnZS5pc0Zyb21DdXJyZW50VXNlciA/IG1lc3NhZ2UuYXV0aG9yPy5pZCA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBkZW1vIGNoYXQgcHJldmlldyBkYXRhIHdpdGggYSB2YXJpZXR5IG9mIG1lc3NhZ2UgdHlwZXNcbiAqIEByZXR1cm5zIEFycmF5IG9mIHNhbXBsZSBjaGF0IHByZXZpZXcgbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRGVtb0NoYXRQcmV2aWV3KCk6IENoYXRQcmV2aWV3TWVzc2FnZVtdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBpZDogJzAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBKb2huLCBIb3cgYXJlIHlvdT8nLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzEnLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIHJlcGx5VG86IHtcbiAgICAgICAgaWQ6ICcwJyxcbiAgICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIGNvbnRlbnQ6ICdIZWxsbyBKb2huLCBIb3cgYXJlIHlvdT8nLFxuICAgICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzInLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd2b2ljZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBkYXRhOmF1ZGlvL3dlYm07Y29kZWNzPW9wdXM7YmFzZTY0LEdrWGZvRUYzNGZKYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnMycsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgY29udGVudDogJ0NhbiBpIGhhdmUgeW91ciBhZGRyZXNzIGluZm9ybWF0aW9uPycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIHJlcGx5VG86IHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgY29udGVudDogJ0hlbGxvJyxcbiAgICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICc0JyxcbiAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnZmlsZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBkYXRhOmF1ZGlvL3dlYm07Y29kZWNzPW9wdXM7YmFzZTY0LEdrWGZvRUYzNGZKYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNScsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vcGljc3VtLnBob3Rvcy8zMDAvMjAwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNicsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ3ZpZGVvJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vd3d3LnBleGVscy5jb20vZG93bmxvYWQvdmlkZW8vNTQ5NTMyMi8/ZnBzPTI5Ljk3Jmg9NTQwJnc9OTYwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNycsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgY29udGVudDogJ0hlbGxvIEpvaG4sIEhvdyBhcmUgeW91PycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnOCcsXG4gICAgICBmcm9tSWQ6ICcxMCcsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2F1ZGlvJyxcbiAgICAgIG5hbWU6ICdraWRzJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL2FjdGlvbnMuZ29vZ2xlLmNvbS9zb3VuZHMvdjEvYW1iaWVuY2VzL2tpZHNfcGxheWluZy5vZ2dgLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICc5JyxcbiAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICBjb250ZW50OiBgaHR0cHM6Ly9waWNzdW0ucGhvdG9zLzMwMC8yMDBgLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcxMCcsXG4gICAgICBmcm9tSWQ6ICcxMCcsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vcGljc3VtLnBob3Rvcy8yMDAvMzAwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnMTEnLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd2aWRlbycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL3d3dy5wZXhlbHMuY29tL2Rvd25sb2FkL3ZpZGVvLzU0OTUzMjIvP2Zwcz0yOS45NyZoPTU0MCZ3PTk2MGAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzEyJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnZmlsZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBkYXRhOmF1ZGlvL3dlYm07Y29kZWNzPW9wdXM7YmFzZTY0LEdrWGZvNTlDaG9FK3U1QnhIVkw3WkFTMUVGMzRmSmAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzEzJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAnYXVkaW8nLFxuICAgICAgbmFtZTogJ2FsYXJtJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL2FjdGlvbnMuZ29vZ2xlLmNvbS9zb3VuZHMvdjEvYWxhcm1zL2RpZ2l0YWxfd2F0Y2hfYWxhcm1fbG9uZy5vZ2dgLFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogVXNhZ2UgRXhhbXBsZXM6XG4gKlxuICogRXhhbXBsZSAxOiBDb252ZXJ0aW5nIGNoYXQgc2VydmljZSByZXNwb25zZSB0byBjaGF0IHByZXZpZXcgZm9ybWF0XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBBWE1DaGF0U2VydmljZSB9IGZyb20gJy4uL2NoYXQuc2VydmljZSc7XG4gKiBpbXBvcnQgeyBjb252ZXJ0VG9DaGF0UHJldmlldyB9IGZyb20gJy4vY2hhdC1wcmV2aWV3LmhlbHBlcic7XG4gKlxuICogZXhwb3J0IGNsYXNzIENoYXRQcmV2aWV3Q29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGF0U2VydmljZTogQVhNQ2hhdFNlcnZpY2UpIHt9XG4gKlxuICogICBhc3luYyBsb2FkQ2hhdE1lc3NhZ2VzKHJvb21JZDogc3RyaW5nKSB7XG4gKiAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYXRTZXJ2aWNlLmdldENoYXRNZXNzYWdlcyhyb29tSWQpO1xuICpcbiAqICAgICAvLyBDb252ZXJ0IHRvIGNoYXQgcHJldmlldyBmb3JtYXRcbiAqICAgICBjb25zdCBwcmV2aWV3TWVzc2FnZXMgPSBjb252ZXJ0VG9DaGF0UHJldmlldyhyZXNwb25zZSk7XG4gKlxuICogICAgIC8vIFVzZSB0aGUgY29udmVydGVkIG1lc3NhZ2VzXG4gKiAgICAgdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzLnNldChwcmV2aWV3TWVzc2FnZXMpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBFeGFtcGxlIDI6IFVzaW5nIGRlbW8gZGF0YSBmb3IgZGV2ZWxvcG1lbnQvdGVzdGluZ1xuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgZ2VuZXJhdGVEZW1vQ2hhdFByZXZpZXcgfSBmcm9tICcuL2NoYXQtcHJldmlldy5oZWxwZXInO1xuICpcbiAqIGV4cG9ydCBjbGFzcyBDaGF0UHJldmlld0RlbW9Db21wb25lbnQge1xuICogICBuZ09uSW5pdCgpIHtcbiAqICAgICAvLyBMb2FkIGRlbW8gbWVzc2FnZXNcbiAqICAgICBjb25zdCBkZW1vTWVzc2FnZXMgPSBnZW5lcmF0ZURlbW9DaGF0UHJldmlldygpO1xuICpcbiAqICAgICAvLyBVc2UgdGhlIGRlbW8gbWVzc2FnZXNcbiAqICAgICB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMuc2V0KGRlbW9NZXNzYWdlcyk7XG4gKiAgIH1cbiAqIH1cbiAqL1xuIl19","import { AXFileService } from '@acorex/core/file';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, ElementRef, inject, signal, } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { convertToChatPreview } from '../../chat-preview.helper';\nimport { AXMChatService } from '../../chat.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/conversation\";\nexport class AXMChatPreviewComponent {\n constructor(elRef) {\n this.elRef = elRef;\n // Signal for dynamic max-height (using computed logic for real-time updates)\n this.activatedRoute = inject(ActivatedRoute);\n this.fileService = inject(AXFileService);\n // private conversationService = inject(AXConversationService);\n this.chatService = inject(AXMChatService);\n this.options = signal({\n disabled: false,\n readonly: false,\n value: '',\n });\n this.conversationViewMaxHeight = signal('');\n this.initialTextAreaHeight = 0;\n this.textareaHeight = signal(0);\n this.dynamicHeight = computed(() => {\n const baseOffset = 275;\n const currentHeight = this.textareaHeight();\n const dynamicOffset = baseOffset + (currentHeight - this.initialTextAreaHeight);\n return `calc(100vh - ${dynamicOffset}px) !important`;\n });\n afterNextRender(() => {\n const textareaContainer = this.elRef.nativeElement.querySelector('ax-conversation-input > div');\n if (textareaContainer) {\n this.initialTextAreaHeight = textareaContainer.offsetHeight;\n this.resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === textareaContainer) {\n const currentHeight = entry.contentRect.height;\n this.textareaHeight.set(currentHeight);\n }\n }\n });\n this.resizeObserver.observe(textareaContainer);\n }\n else {\n console.warn('Textarea Container element not found.');\n }\n this.activatedRoute.params.subscribe((params) => {\n console.log(params['id']);\n this.messageId = params['id'];\n this.loadMessages(this.messageId);\n });\n });\n }\n ngOnDestroy() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n handleFileChange(event) {\n console.log('File Changed:', event);\n }\n handleCancelRecord(event) {\n console.log('Recording Cancelled:', event);\n }\n handleEndRecord(event) {\n this.fileService.blobToBase64(event.data.value).then((base64Content) => {\n // Create a properly formatted chat preview message for voice\n const newVoiceMessage = {\n id: `${Math.floor(Math.random() * 10000)}`,\n content: base64Content,\n sendTime: new Date(),\n readTime: new Date(),\n type: 'voice',\n name: 'test name',\n };\n // this.conversationService.chats.update((values: any) => [...values, newVoiceMessage]);\n });\n }\n handleOnSend(e) {\n console.log('Message Sent:', e);\n if (e.data.value) {\n this.options.update((prev) => ({ ...prev, value: '' }));\n // Create a properly formatted chat preview message\n const newMessage = {\n id: `${Math.floor(Math.random() * 10000)}`,\n content: e.data.value,\n sendTime: new Date(),\n readTime: new Date(),\n type: e.data.type || 'text',\n name: 'test name',\n replyTo: e.data.replyChat,\n };\n // If it's a reply to another message, ensure it has the right format\n if (newMessage.replyTo) {\n // Ensure replyTo has the right format if it doesn't already\n if (!newMessage.replyTo.readTime) {\n newMessage.replyTo = {\n ...newMessage.replyTo,\n readTime: new Date(),\n };\n }\n }\n // this.conversationService.chats.update((values: any) => [...values, newMessage]);\n }\n this.scrollToEnd();\n }\n handleOnAction(e) {\n console.log('Action Triggered:', e);\n }\n scrollToEnd() {\n const conversationView = document.querySelector('ax-conversation-view');\n if (conversationView) {\n conversationView.scrollTo({\n top: conversationView.scrollHeight,\n behavior: 'smooth',\n });\n }\n }\n addMockMessage() { }\n async loadMessages(roomId) {\n try {\n // Get messages from the chat service\n const messageResponse = await this.chatService.getChatMessages(roomId);\n // Convert to chat preview format\n const chatPreviewMessages = convertToChatPreview(messageResponse);\n // Set the messages in the conversation service\n // this.conversationService.chats.set(chatPreviewMessages);\n }\n catch (error) {\n console.error('Failed to load messages:', error);\n // Fallback to demo data if there's an error\n // this.conversationService.chats.set(generateDemoChatPreview());\n }\n }\n loadDemoMessages() {\n // this.conversationService.chats.set(generateDemoChatPreview());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatPreviewComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXMChatPreviewComponent, isStandalone: false, selector: \"axm-chat-preview\", ngImport: i0, template: \"<div class=\\\"ax-flex ax-flex-col ax-bg-surface-container\\\">\\n <!-- Messages Container -->\\n <ax-conversation-container class=\\\"ax-flex-1 ax-overflow-hidden\\\">\\n <ax-conversation-view (onAction)=\\\"handleOnAction($event)\\\" [style.height]=\\\"dynamicHeight()\\\"></ax-conversation-view>\\n </ax-conversation-container>\\n\\n <!-- Input Area -->\\n <div class=\\\"ax-p-2\\\">\\n <ax-conversation-input\\n placeholder=\\\"Type a message...\\\"\\n [(ngModel)]=\\\"options().value\\\"\\n (onSendClick)=\\\"handleOnSend($event)\\\"\\n (onFileChange)=\\\"handleFileChange($event)\\\"\\n (onStopRecording)=\\\"handleEndRecord($event)\\\"\\n (onCancelRecording)=\\\"handleCancelRecord($event)\\\"\\n ></ax-conversation-input>\\n </div>\\n</div>\\n\", styles: [\":host{display:flex;flex-direction:column;height:100%;background-color:var(--ax-surface-container)}:host::ng-deep ax-conversation-view>div{height:50rem!important}\\n\"], dependencies: [{ 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: i2.AXConversationViewComponent, selector: \"ax-conversation-view\", inputs: [\"chatBoxHeight\", \"isReplyArrowShown\"], outputs: [\"onScrollEnd\", \"onAction\"] }, { kind: \"component\", type: i2.AXConversationInputComponent, selector: \"ax-conversation-input\", inputs: [\"look\", \"placeholder\", \"maxLength\", \"hasAttachment\", \"hasVoice\", \"hasEmoji\", \"isLoading\", \"acceptFileType\"], outputs: [\"onSendClick\", \"onStartRecording\", \"onCancelRecording\", \"onEnterPressed\"] }, { kind: \"component\", type: i2.AXConversationContainerComponent, selector: \"ax-conversation-container\", inputs: [\"chatData\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatPreviewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat-preview', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<div class=\\\"ax-flex ax-flex-col ax-bg-surface-container\\\">\\n <!-- Messages Container -->\\n <ax-conversation-container class=\\\"ax-flex-1 ax-overflow-hidden\\\">\\n <ax-conversation-view (onAction)=\\\"handleOnAction($event)\\\" [style.height]=\\\"dynamicHeight()\\\"></ax-conversation-view>\\n </ax-conversation-container>\\n\\n <!-- Input Area -->\\n <div class=\\\"ax-p-2\\\">\\n <ax-conversation-input\\n placeholder=\\\"Type a message...\\\"\\n [(ngModel)]=\\\"options().value\\\"\\n (onSendClick)=\\\"handleOnSend($event)\\\"\\n (onFileChange)=\\\"handleFileChange($event)\\\"\\n (onStopRecording)=\\\"handleEndRecord($event)\\\"\\n (onCancelRecording)=\\\"handleCancelRecord($event)\\\"\\n ></ax-conversation-input>\\n </div>\\n</div>\\n\", styles: [\":host{display:flex;flex-direction:column;height:100%;background-color:var(--ax-surface-container)}:host::ng-deep ax-conversation-view>div{height:50rem!important}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NvbXBvbmVudHMvY2hhdC1wcmV2aWV3L2NoYXQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jb21wb25lbnRzL2NoYXQtcHJldmlldy9jaGF0LXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFFTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQVNwRCxNQUFNLE9BQU8sdUJBQXVCO0lBcUJsQyxZQUFvQixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBcEJyQyw2RUFBNkU7UUFFckUsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNELCtEQUErRDtRQUN2RCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVuQyxZQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ3pCLFFBQVEs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Q0FBQzs4R0ExSlUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsNkVDdkJwQyxndUJBa0JBOzsyRkRLYSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29udmVyc2F0aW9uQWN0aW9uRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29udmVyc2F0aW9uJztcbmltcG9ydCB7IEFYRmlsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZmlsZSc7XG5pbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbnZlcnRUb0NoYXRQcmV2aWV3IH0gZnJvbSAnLi4vLi4vY2hhdC1wcmV2aWV3LmhlbHBlcic7XG5pbXBvcnQgeyBBWE1DaGF0U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1jaGF0LXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ2hhdFByZXZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvLyBTaWduYWwgZm9yIGR5bmFtaWMgbWF4LWhlaWdodCAodXNpbmcgY29tcHV0ZWQgbG9naWMgZm9yIHJlYWwtdGltZSB1cGRhdGVzKVxuXG4gIHByaXZhdGUgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIGZpbGVTZXJ2aWNlOiBBWEZpbGVTZXJ2aWNlID0gaW5qZWN0KEFYRmlsZVNlcnZpY2UpO1xuICAvLyBwcml2YXRlIGNvbnZlcnNhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhDb252ZXJzYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjaGF0U2VydmljZSA9IGluamVjdChBWE1DaGF0U2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIG9wdGlvbnMgPSBzaWduYWwoe1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICByZWFkb25seTogZmFsc2UsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgY29udmVyc2F0aW9uVmlld01heEhlaWdodCA9IHNpZ25hbCgnJyk7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBpbml0aWFsVGV4dEFyZWFIZWlnaHQgPSAwO1xuICBwcml2YXRlIHRleHRhcmVhSGVpZ2h0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IHRleHRhcmVhQ29udGFpbmVyID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F4LWNvbnZlcnNhdGlvbi1pbnB1dCA+IGRpdicpO1xuXG4gICAgICBpZiAodGV4dGFyZWFDb250YWluZXIpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsVGV4dEFyZWFIZWlnaHQgPSB0ZXh0YXJlYUNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeS50YXJnZXQgPT09IHRleHRhcmVhQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICAgIHRoaXMudGV4dGFyZWFIZWlnaHQuc2V0KGN1cnJlbnRIZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRleHRhcmVhQ29udGFpbmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignVGV4dGFyZWEgQ29udGFpbmVyIGVsZW1lbnQgbm90IGZvdW5kLicpO1xuICAgICAgfVxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocGFyYW1zWydpZCddKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlSWQgPSBwYXJhbXNbJ2lkJ107XG4gICAgICAgIHRoaXMubG9hZE1lc3NhZ2VzKHRoaXMubWVzc2FnZUlkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGR5bmFtaWNIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYmFzZU9mZnNldCA9IDI3NTtcbiAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gdGhpcy50ZXh0YXJlYUhlaWdodCgpO1xuICAgIGNvbnN0IGR5bmFtaWNPZmZzZXQgPSBiYXNlT2Zmc2V0ICsgKGN1cnJlbnRIZWlnaHQgLSB0aGlzLmluaXRpYWxUZXh0QXJlYUhlaWdodCk7XG4gICAgcmV0dXJuIGBjYWxjKDEwMHZoIC0gJHtkeW5hbWljT2Zmc2V0fXB4KSAhaW1wb3J0YW50YDtcbiAgfSk7XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUZpbGVDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdGaWxlIENoYW5nZWQ6JywgZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlQ2FuY2VsUmVjb3JkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnUmVjb3JkaW5nIENhbmNlbGxlZDonLCBldmVudCk7XG4gIH1cblxuICBoYW5kbGVFbmRSZWNvcmQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZmlsZVNlcnZpY2UuYmxvYlRvQmFzZTY0KGV2ZW50LmRhdGEudmFsdWUpLnRoZW4oKGJhc2U2NENvbnRlbnQpID0+IHtcbiAgICAgIC8vIENyZWF0ZSBhIHByb3Blcmx5IGZvcm1hdHRlZCBjaGF0IHByZXZpZXcgbWVzc2FnZSBmb3Igdm9pY2VcbiAgICAgIGNvbnN0IG5ld1ZvaWNlTWVzc2FnZSA9IHtcbiAgICAgICAgaWQ6IGAke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwKX1gLFxuICAgICAgICBjb250ZW50OiBiYXNlNjRDb250ZW50LFxuICAgICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6ICd2b2ljZScsXG4gICAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzLnVwZGF0ZSgodmFsdWVzOiBhbnkpID0+IFsuLi52YWx1ZXMsIG5ld1ZvaWNlTWVzc2FnZV0pO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlT25TZW5kKGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdNZXNzYWdlIFNlbnQ6JywgZSk7XG5cbiAgICBpZiAoZS5kYXRhLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCB2YWx1ZTogJycgfSkpO1xuXG4gICAgICAvLyBDcmVhdGUgYSBwcm9wZXJseSBmb3JtYXR0ZWQgY2hhdCBwcmV2aWV3IG1lc3NhZ2VcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2UgPSB7XG4gICAgICAgIGlkOiBgJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMCl9YCxcbiAgICAgICAgY29udGVudDogZS5kYXRhLnZhbHVlLFxuICAgICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6IGUuZGF0YS50eXBlIHx8ICd0ZXh0JyxcbiAgICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICAgIHJlcGx5VG86IGUuZGF0YS5yZXBseUNoYXQsXG4gICAgICB9O1xuXG4gICAgICAvLyBJZiBpdCdzIGEgcmVwbHkgdG8gYW5vdGhlciBtZXNzYWdlLCBlbnN1cmUgaXQgaGFzIHRoZSByaWdodCBmb3JtYXRcbiAgICAgIGlmIChuZXdNZXNzYWdlLnJlcGx5VG8pIHtcbiAgICAgICAgLy8gRW5zdXJlIHJlcGx5VG8gaGFzIHRoZSByaWdodCBmb3JtYXQgaWYgaXQgZG9lc24ndCBhbHJlYWR5XG4gICAgICAgIGlmICghbmV3TWVzc2FnZS5yZXBseVRvLnJlYWRUaW1lKSB7XG4gICAgICAgICAgbmV3TWVzc2FnZS5yZXBseVRvID0ge1xuICAgICAgICAgICAgLi4ubmV3TWVzc2FnZS5yZXBseVRvLFxuICAgICAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMudXBkYXRlKCh2YWx1ZXM6IGFueSkgPT4gWy4uLnZhbHVlcywgbmV3TWVzc2FnZV0pO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbFRvRW5kKCk7XG4gIH1cblxuICBoYW5kbGVPbkFjdGlvbihlOiBBWENvbnZlcnNhdGlvbkFjdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0FjdGlvbiBUcmlnZ2VyZWQ6JywgZSk7XG4gIH1cblxuICBzY3JvbGxUb0VuZCgpIHtcbiAgICBjb25zdCBjb252ZXJzYXRpb25WaWV3ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXgtY29udmVyc2F0aW9uLXZpZXcnKTtcbiAgICBpZiAoY29udmVyc2F0aW9uVmlldykge1xuICAgICAgY29udmVyc2F0aW9uVmlldy5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogY29udmVyc2F0aW9uVmlldy5zY3JvbGxIZWlnaHQsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZE1vY2tNZXNzYWdlKCkgeyB9XG5cbiAgYXN5bmMgbG9hZE1lc3NhZ2VzKHJvb21JZDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCBtZXNzYWdlcyBmcm9tIHRoZSBjaGF0IHNlcnZpY2VcbiAgICAgIGNvbnN0IG1lc3NhZ2VSZXNwb25zZSA9IGF3YWl0IHRoaXMuY2hhdFNlcnZpY2UuZ2V0Q2hhdE1lc3NhZ2VzKHJvb21JZCk7XG5cbiAgICAgIC8vIENvbnZlcnQgdG8gY2hhdCBwcmV2aWV3IGZvcm1hdFxuICAgICAgY29uc3QgY2hhdFByZXZpZXdNZXNzYWdlcyA9IGNvbnZlcnRUb0NoYXRQcmV2aWV3KG1lc3NhZ2VSZXNwb25zZSk7XG5cbiAgICAgIC8vIFNldCB0aGUgbWVzc2FnZXMgaW4gdGhlIGNvbnZlcnNhdGlvbiBzZXJ2aWNlXG4gICAgICAvLyB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMuc2V0KGNoYXRQcmV2aWV3TWVzc2FnZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBtZXNzYWdlczonLCBlcnJvcik7XG5cbiAgICAgIC8vIEZhbGxiYWNrIHRvIGRlbW8gZGF0YSBpZiB0aGVyZSdzIGFuIGVycm9yXG4gICAgICAvLyB0aGlzLmNvbnZlcnNhdGlvblNlcnZpY2UuY2hhdHMuc2V0KGdlbmVyYXRlRGVtb0NoYXRQcmV2aWV3KCkpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWREZW1vTWVzc2FnZXMoKSB7XG4gICAgLy8gdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzLnNldChnZW5lcmF0ZURlbW9DaGF0UHJldmlldygpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtYmctc3VyZmFjZS1jb250YWluZXJcIj5cbiAgPCEtLSBNZXNzYWdlcyBDb250YWluZXIgLS0+XG4gIDxheC1jb252ZXJzYXRpb24tY29udGFpbmVyIGNsYXNzPVwiYXgtZmxleC0xIGF4LW92ZXJmbG93LWhpZGRlblwiPlxuICAgIDxheC1jb252ZXJzYXRpb24tdmlldyAob25BY3Rpb24pPVwiaGFuZGxlT25BY3Rpb24oJGV2ZW50KVwiIFtzdHlsZS5oZWlnaHRdPVwiZHluYW1pY0hlaWdodCgpXCI+PC9heC1jb252ZXJzYXRpb24tdmlldz5cbiAgPC9heC1jb252ZXJzYXRpb24tY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgQXJlYSAtLT5cbiAgPGRpdiBjbGFzcz1cImF4LXAtMlwiPlxuICAgIDxheC1jb252ZXJzYXRpb24taW5wdXRcbiAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSBhIG1lc3NhZ2UuLi5cIlxuICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zKCkudmFsdWVcIlxuICAgICAgKG9uU2VuZENsaWNrKT1cImhhbmRsZU9uU2VuZCgkZXZlbnQpXCJcbiAgICAgIChvbkZpbGVDaGFuZ2UpPVwiaGFuZGxlRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChvblN0b3BSZWNvcmRpbmcpPVwiaGFuZGxlRW5kUmVjb3JkKCRldmVudClcIlxuICAgICAgKG9uQ2FuY2VsUmVjb3JkaW5nKT1cImhhbmRsZUNhbmNlbFJlY29yZCgkZXZlbnQpXCJcbiAgICA+PC9heC1jb252ZXJzYXRpb24taW5wdXQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=","import { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMMessageService } from '../../entities/message/message.service';\nimport { AXMRoomService } from '../../entities/room/room.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Abstract Comment Service defining the contract for comment functionality\n */\nexport class AXMCommentService {\n}\nexport class AXMCommentServiceImpl {\n constructor() {\n this.roomService = inject(AXMRoomService);\n this.messageService = inject(AXMMessageService);\n this.sessionService = inject(AXPSessionService);\n this.usersService = inject(AXMUsersEntityService);\n }\n // === Helper Methods ===\n getCurrentUser() {\n const user = this.sessionService.user;\n return {\n id: user?.id || 'guest-user',\n type: 'user',\n };\n }\n async getUserInfo(userId) {\n try {\n const user = await this.usersService.getOne(userId);\n return {\n id: user.id,\n userName: user.username || user.id,\n firstName: user.firstName || '',\n lastName: user.lastName || '',\n fullName: `${user.firstName || ''} ${user.lastName || ''}`.trim() || 'Unknown User',\n avatar: '',\n };\n }\n catch (error) {\n console.error(`Failed to get user info for ID: ${userId}`, error);\n return {\n id: userId,\n userName: userId,\n firstName: 'Unknown',\n lastName: 'User',\n fullName: 'Unknown User',\n avatar: '',\n };\n }\n }\n formatRoomId(entityId, instanceId, roomType = 'default') {\n return `${roomType}:${entityId}:${instanceId}`;\n }\n async formatComment(message) {\n const currentUserId = this.getCurrentUser().id;\n // Check if the current user has liked this message\n const isLiked = (message.reactions || []).some((reaction) => reaction.author.id === currentUserId && reaction.type === 'like');\n // Count total reactions\n const reactionsCount = (message.reactions || []).filter((r) => r.type === 'like').length;\n // Get the full user info for the author\n const userInfo = await this.getUserInfo(message.author.id);\n return {\n ...message,\n author: {\n ...message.author,\n ...userInfo,\n },\n isFromCurrentUser: message.author.id === currentUserId,\n formattedDate: new Date(message.createdAt || new Date()).toLocaleString(),\n isLiked,\n reactionsCount,\n replies: [],\n };\n }\n async buildCommentHierarchy(comments) {\n // Create a map for quick lookup of comments by ID\n const commentMap = new Map();\n const rootComments = [];\n // First pass: add all comments to the map\n for (const comment of comments) {\n commentMap.set(comment.id, comment);\n // Initialize the replies array if not already present\n if (!comment.replies) {\n comment.replies = [];\n }\n // If this is a root comment (no replyId), add it to the root comments array\n if (!comment.replyId) {\n rootComments.push(comment);\n }\n }\n // Second pass: build the hierarchy by adding replies to their parent comments\n for (const comment of comments) {\n if (comment.replyId) {\n const parentComment = commentMap.get(comment.replyId);\n if (parentComment && parentComment.replies) {\n parentComment.replies.push(comment);\n }\n else {\n // If parent not found (might be deleted), treat as a root comment\n rootComments.push(comment);\n }\n }\n }\n // Sort the root comments and their replies by creation date (newest first)\n const sortByDate = (a, b) => {\n const dateA = a.createdAt ? new Date(a.createdAt).getTime() : 0;\n const dateB = b.createdAt ? new Date(b.createdAt).getTime() : 0;\n return dateB - dateA;\n };\n rootComments.sort(sortByDate);\n // Sort the replies within each comment\n for (const comment of rootComments) {\n if (comment.replies && comment.replies.length > 0) {\n comment.replies.sort(sortByDate);\n }\n }\n return rootComments;\n }\n // === Room Operations ===\n async getRoomList(skip = 0, take = 100) {\n return this.roomService.query({ skip, take });\n }\n async getRoomDetails(roomId) {\n return this.roomService.getOne(roomId);\n }\n async createRoom(roomData) {\n return this.roomService.insertOne(roomData);\n }\n async ensureRoomExists(entityId, instanceId, roomType = 'default') {\n const roomId = this.formatRoomId(entityId, instanceId, roomType);\n try {\n // Check if room exists\n await this.getRoomDetails(roomId);\n return roomId;\n }\n catch (error) {\n // If room doesn't exist, create it\n const roomData = {\n id: roomId, // Provide the ID directly for comments\n title: `Comments for ${entityId}:${instanceId}`,\n members: [this.getCurrentUser()],\n };\n // Create a new room or return the ID if it already exists\n try {\n const result = await this.createRoom(roomData);\n return typeof result === 'string' ? result : roomId;\n }\n catch (e) {\n // If we get a duplicate error, the room was created by another request\n return roomId;\n }\n }\n }\n // === Comment Operations ===\n async query(queryRequest) {\n const { params, skip = 0, take = 20 } = queryRequest;\n const { entityId, instanceId, roomType = 'default' } = params || {};\n if (!entityId || !instanceId) {\n throw new Error('EntityId and InstanceId are required for querying comments');\n }\n const roomId = this.formatRoomId(entityId, instanceId, roomType);\n // Fetch messages for this room\n const result = await this.messageService.query({\n skip,\n take,\n filter: {\n field: 'roomId',\n value: roomId,\n operator: { type: 'equal' },\n },\n });\n // Transform messages to comments\n const comments = await Promise.all(result.items.map((message) => this.formatComment(message)));\n // Build comment hierarchy\n const hierarchicalComments = await this.buildCommentHierarchy(comments);\n return {\n items: hierarchicalComments,\n total: result.total,\n };\n }\n async getOne(id) {\n const message = await this.messageService.getOne(id);\n return this.formatComment(message);\n }\n async insertOne(commentData) {\n const { entityId, instanceId, roomType = 'default', content, contentType = 'text', replyId, isPrivate, } = commentData;\n // Ensure the room exists\n const roomId = await this.ensureRoomExists(entityId, instanceId, roomType);\n // Create the message content\n const messageContent = {\n content,\n contentType,\n };\n // Create the message object\n const message = {\n roomId,\n message: messageContent,\n author: this.getCurrentUser(),\n replyId: replyId || null,\n };\n // Insert the message\n const messageId = await this.messageService.insertOne(message);\n // Fetch the full message to return as a comment entity\n const insertedMessage = await this.messageService.getOne(messageId);\n return this.formatComment(insertedMessage);\n }\n async updateOne(id, update) {\n // If content is being updated, format it correctly\n let messageUpdate = {};\n if (update.message?.content) {\n messageUpdate.message = {\n content: update.message.content,\n contentType: update.message.contentType || 'text',\n };\n }\n // Apply the update\n const result = await this.messageService.updateOne(id, messageUpdate);\n // Return as a comment entity\n return this.formatComment(result);\n }\n async deleteOne(id) {\n try {\n await this.messageService.deleteOne(id);\n return true;\n }\n catch (error) {\n console.error('Failed to delete comment:', error);\n return false;\n }\n }\n // === Comment-Specific Operations ===\n async like(messageId) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n // Check if the user has already liked this message\n const reactions = message.reactions || [];\n const existingReaction = reactions.find((r) => r.author.id === author.id && r.type === 'like');\n let updatedReactions;\n if (existingReaction) {\n // If the reaction exists, remove it (unlike)\n updatedReactions = reactions.filter((r) => !(r.author.id === author.id && r.type === 'like'));\n }\n else {\n // If the reaction doesn't exist, add it (like)\n updatedReactions = [...reactions, { author, type: 'like' }];\n }\n // Update the message with the new reactions\n const updatedMessage = await this.messageService.updateOne(messageId, { reactions: updatedReactions });\n // Return as a comment entity\n return this.formatComment(updatedMessage);\n }\n async getCommentCount(entityId, instanceId, roomType = 'default') {\n const roomId = this.formatRoomId(entityId, instanceId, roomType);\n try {\n const result = await this.messageService.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'roomId',\n value: roomId,\n operator: { type: 'equal' },\n },\n });\n return result.total;\n }\n catch (error) {\n console.error('Failed to get comment count:', error);\n return 0;\n }\n }\n async getAllCommentsWithReplies(entityId, instanceId, roomType = 'default', skip = 0, take = 100) {\n const queryRequest = {\n params: { entityId, instanceId, roomType },\n skip,\n take,\n };\n return this.query(queryRequest);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentServiceImpl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentServiceImpl, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFJbEU7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlCQUFpQjtDQThDdEM7QUFLRCxNQUFNLE9BQU8scUJBQXFCO0lBSGxDO1FBSW1CLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBdVUvRDtJQXJVQyx5QkFBeUI7SUFFakIsY0FBYztRQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUN0QyxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksWUFBWTtZQUM1QixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFjO1FBQ3RDLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFH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USxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7WUFDMUMsSUFBSTtZQUNKLElBQUk7U0FDTCxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBMVVVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1Vc2Vyc0VudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvc2VjdXJpdHktbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQge1xuICBBWFBDb250ZW50LFxuICBBWFBDb250ZW50VHlwZSxcbiAgQVhQUGFnZWRMaXN0UmVzdWx0LFxuICBBWFBRdWVyeVJlcXVlc3QsXG4gIEFYUFVzZXJSZWZlcmVuY2UsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uTWVzc2FnZSwgQVhNQ29udmVyc2F0aW9uUmVhY3Rpb24gfSBmcm9tICcuLi8uLi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2UudHlwZXMnO1xuaW1wb3J0IHsgQVhNUm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9yb29tL3Jvb20uc2VydmljZSc7XG5pbXBvcnQgeyBBWE1Db252ZXJzYXRpb25Sb29tIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvcm9vbS9yb29tLnR5cGVzJztcbmltcG9ydCB7IEFYTUNvbW1lbnRNZXNzYWdlLCBBWE1Db21tZW50VXNlciwgQVhNQ3JlYXRlQ29tbWVudER0byB9IGZyb20gJy4vY29tbWVudC50eXBlJztcblxuLyoqXG4gKiBBYnN0cmFjdCBDb21tZW50IFNlcnZpY2UgZGVmaW5pbmcgdGhlIGNvbnRyYWN0IGZvciBjb21tZW50IGZ1bmN0aW9uYWxpdHlcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYTUNvbW1lbnRTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFF1ZXJpZXMgY29tbWVudHMgYmFzZWQgb24gcHJvdmlkZWQgcmVxdWVzdCBwYXJhbWV0ZXJzXG4gICAqL1xuICBhYnN0cmFjdCBxdWVyeShxdWVyeVJlcXVlc3Q6IEFYUFF1ZXJ5UmVxdWVzdCk6IFByb21pc2U8QVhQUGFnZWRMaXN0UmVzdWx0PEFYTUNvbW1lbnRNZXNzYWdlPj47XG5cbiAgLyoqXG4gICAqIEdldHMgYSBzaW5nbGUgY29tbWVudCBieSBJRFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0T25lKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlPjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjb21tZW50XG4gICAqL1xuICBhYnN0cmFjdCBpbnNlcnRPbmUoY29tbWVudERhdGE6IEFYTUNyZWF0ZUNvbW1lbnREdG8pOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlPjtcblxuICAvKipcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBjb21tZW50XG4gICAqL1xuICBhYnN0cmFjdCB1cGRhdGVPbmUoaWQ6IHN0cmluZywgdXBkYXRlOiBQYXJ0aWFsPEFYTUNvbW1lbnRNZXNzYWdlPik6IFByb21pc2U8QVhNQ29tbWVudE1lc3NhZ2U+O1xuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgY29tbWVudFxuICAgKi9cbiAgYWJzdHJhY3QgZGVsZXRlT25lKGlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGxpa2Ugc3RhdHVzIGZvciBhIGNvbW1lbnRcbiAgICovXG4gIGFic3RyYWN0IGxpa2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgY29tbWVudCBjb3VudCBmb3IgYW4gZW50aXR5XG4gICAqL1xuICBhYnN0cmFjdCBnZXRDb21tZW50Q291bnQoZW50aXR5SWQ6IHN0cmluZywgaW5zdGFuY2VJZDogc3RyaW5nLCByb29tVHlwZT86IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcblxuICAvKipcbiAgICogR2V0cyBhbGwgY29tbWVudHMgd2l0aCB0aGVpciByZXBsaWVzXG4gICAqL1xuICBhYnN0cmFjdCBnZXRBbGxDb21tZW50c1dpdGhSZXBsaWVzKFxuICAgIGVudGl0eUlkOiBzdHJpbmcsXG4gICAgaW5zdGFuY2VJZDogc3RyaW5nLFxuICAgIHJvb21UeXBlPzogc3RyaW5nLFxuICAgIHNraXA/OiBudW1iZXIsXG4gICAgdGFrZT86IG51bWJlcixcbiAgKTogUHJvbWlzZTxBWFBQYWdlZExpc3RSZXN1bHQ8QVhNQ29tbWVudE1lc3NhZ2U+Pjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNvbW1lbnRTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEFYTUNvbW1lbnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSByb29tU2VydmljZSA9IGluamVjdChBWE1Sb29tU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoQVhNTWVzc2FnZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB1c2Vyc1NlcnZpY2UgPSBpbmplY3QoQVhNVXNlcnNFbnRpdHlTZXJ2aWNlKTtcblxuICAvLyA9PT0gSGVscGVyIE1ldGhvZHMgPT09XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50VXNlcigpOiBBWFBVc2VyUmVmZXJlbmNlIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdXNlcj8uaWQgfHwgJ2d1ZXN0LXVzZXInLFxuICAgICAgdHlwZTogJ3VzZXInLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFVzZXJJbmZvKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50VXNlcj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2Vyc1NlcnZpY2UuZ2V0T25lKHVzZXJJZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdXNlci5pZCxcbiAgICAgICAgdXNlck5hbWU6IHVzZXIudXNlcm5hbWUgfHwgdXNlci5pZCxcbiAgICAgICAgZmlyc3ROYW1lOiB1c2VyLmZpcnN0TmFtZSB8fCAnJyxcbiAgICAgICAgbGFzdE5hbWU6IHVzZXIubGFzdE5hbWUgfHwgJycsXG4gICAgICAgIGZ1bGxOYW1lOiBgJHt1c2VyLmZpcnN0TmFtZSB8fCAnJ30gJHt1c2VyLmxhc3ROYW1lIHx8ICcnfWAudHJpbSgpIHx8ICdVbmtub3duIFVzZXInLFxuICAgICAgICBhdmF0YXI6ICcnLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGdldCB1c2VyIGluZm8gZm9yIElEOiAke3VzZXJJZH1gLCBlcnJvcik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdXNlcklkLFxuICAgICAgICB1c2VyTmFtZTogdXNlcklkLFxuICAgICAgICBmaXJzdE5hbWU6ICdVbmtub3duJyxcbiAgICAgICAgbGFzdE5hbWU6ICdVc2VyJyxcbiAgICAgICAgZnVsbE5hbWU6ICdVbmtub3duIFVzZXInLFxuICAgICAgICBhdmF0YXI6ICcnLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFJvb21JZChlbnRpdHlJZDogc3RyaW5nLCBpbnN0YW5jZUlkOiBzdHJpbmcsIHJvb21UeXBlOiBzdHJpbmcgPSAnZGVmYXVsdCcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtyb29tVHlwZX06JHtlbnRpdHlJZH06JHtpbnN0YW5jZUlkfWA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZvcm1hdENvbW1lbnQobWVzc2FnZTogQVhNQ29udmVyc2F0aW9uTWVzc2FnZSk6IFByb21pc2U8QVhNQ29tbWVudE1lc3NhZ2U+IHtcbiAgICBjb25zdCBjdXJyZW50VXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbGlrZWQgdGhpcyBtZXNzYWdlXG4gICAgY29uc3QgaXNMaWtlZCA9IChtZXNzYWdlLnJlYWN0aW9ucyB8fCBbXSkuc29tZShcbiAgICAgIChyZWFjdGlvbikgPT4gcmVhY3Rpb24uYXV0aG9yLmlkID09PSBjdXJyZW50VXNlcklkICYmIHJlYWN0aW9uLnR5cGUgPT09ICdsaWtlJyxcbiAgICApO1xuXG4gICAgLy8gQ291bnQgdG90YWwgcmVhY3Rpb25zXG4gICAgY29uc3QgcmVhY3Rpb25zQ291bnQgPSAobWVzc2FnZS5yZWFjdGlvbnMgfHwgW10pLmZpbHRlcigocikgPT4gci50eXBlID09PSAnbGlrZScpLmxlbmd0aDtcblxuICAgIC8vIEdldCB0aGUgZnVsbCB1c2VyIGluZm8gZm9yIHRoZSBhdXRob3JcbiAgICBjb25zdCB1c2VySW5mbyA9IGF3YWl0IHRoaXMuZ2V0VXNlckluZm8obWVzc2FnZS5hdXRob3IuaWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICBhdXRob3I6IHtcbiAgICAgICAgLi4ubWVzc2FnZS5hdXRob3IsXG4gICAgICAgIC4uLnVzZXJJbmZvLFxuICAgICAgfSxcbiAgICAgIGlzRnJvbUN1cnJlbnRVc2VyOiBtZXNzYWdlLmF1dGhvci5pZCA9PT0gY3VycmVudFVzZXJJZCxcbiAgICAgIGZvcm1hdHRlZERhdGU6IG5ldyBEYXRlKG1lc3NhZ2UuY3JlYXRlZEF0IHx8IG5ldyBEYXRlKCkpLnRvTG9jYWxlU3RyaW5nKCksXG4gICAgICBpc0xpa2VkLFxuICAgICAgcmVhY3Rpb25zQ291bnQsXG4gICAgICByZXBsaWVzOiBbXSxcbiAgICB9IGFzIEFYTUNvbW1lbnRNZXNzYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZENvbW1lbnRIaWVyYXJjaHkoY29tbWVudHM6IEFYTUNvbW1lbnRNZXNzYWdlW10pOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlW10+IHtcbiAgICAvLyBDcmVhdGUgYSBtYXAgZm9yIHF1aWNrIGxvb2t1cCBvZiBjb21tZW50cyBieSBJRFxuICAgIGNvbnN0IGNvbW1lbnRNYXAgPSBuZXcgTWFwPHN0cmluZywgQVhNQ29tbWVudE1lc3NhZ2U+KCk7XG4gICAgY29uc3Qgcm9vdENvbW1lbnRzOiBBWE1Db21tZW50TWVzc2FnZVtdID0gW107XG5cbiAgICAvLyBGaXJzdCBwYXNzOiBhZGQgYWxsIGNvbW1lbnRzIHRvIHRoZSBtYXBcbiAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgIGNvbW1lbnRNYXAuc2V0KGNvbW1lbnQuaWQsIGNvbW1lbnQpO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHRoZSByZXBsaWVzIGFycmF5IGlmIG5vdCBhbHJlYWR5IHByZXNlbnRcbiAgICAgIGlmICghY29tbWVudC5yZXBsaWVzKSB7XG4gICAgICAgIGNvbW1lbnQucmVwbGllcyA9IFtdO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgcm9vdCBjb21tZW50IChubyByZXBseUlkKSwgYWRkIGl0IHRvIHRoZSByb290IGNvbW1lbnRzIGFycmF5XG4gICAgICBpZiAoIWNvbW1lbnQucmVwbHlJZCkge1xuICAgICAgICByb290Q29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZWNvbmQgcGFzczogYnVpbGQgdGhlIGhpZXJhcmNoeSBieSBhZGRpbmcgcmVwbGllcyB0byB0aGVpciBwYXJlbnQgY29tbWVudHNcbiAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgIGlmIChjb21tZW50LnJlcGx5SWQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q29tbWVudCA9IGNvbW1lbnRNYXAuZ2V0KGNvbW1lbnQucmVwbHlJZCk7XG4gICAgICAgIGlmIChwYXJlbnRDb21tZW50ICYmIHBhcmVudENvbW1lbnQucmVwbGllcykge1xuICAgICAgICAgIHBhcmVudENvbW1lbnQucmVwbGllcy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIHBhcmVudCBub3QgZm91bmQgKG1pZ2h0IGJlIGRlbGV0ZWQpLCB0cmVhdCBhcyBhIHJvb3QgY29tbWVudFxuICAgICAgICAgIHJvb3RDb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU29ydCB0aGUgcm9vdCBjb21tZW50cyBhbmQgdGhlaXIgcmVwbGllcyBieSBjcmVhdGlvbiBkYXRlIChuZXdlc3QgZmlyc3QpXG4gICAgY29uc3Qgc29ydEJ5RGF0ZSA9IChhOiBBWE1Db21tZW50TWVzc2FnZSwgYjogQVhNQ29tbWVudE1lc3NhZ2UpID0+IHtcbiAgICAgIGNvbnN0IGRhdGVBID0gYS5jcmVhdGVkQXQgPyBuZXcgRGF0ZShhLmNyZWF0ZWRBdCkuZ2V0VGltZSgpIDogMDtcbiAgICAgIGNvbnN0IGRhdGVCID0gYi5jcmVhdGVkQXQgPyBuZXcgRGF0ZShiLmNyZWF0ZWRBdCkuZ2V0VGltZSgpIDogMDtcbiAgICAgIHJldHVybiBkYXRlQiAtIGRhdGVBO1xuICAgIH07XG5cbiAgICByb290Q29tbWVudHMuc29ydChzb3J0QnlEYXRlKTtcblxuICAgIC8vIFNvcnQgdGhlIHJlcGxpZXMgd2l0aGluIGVhY2ggY29tbWVudFxuICAgIGZvciAoY29uc3QgY29tbWVudCBvZiByb290Q29tbWVudHMpIHtcbiAgICAgIGlmIChjb21tZW50LnJlcGxpZXMgJiYgY29tbWVudC5yZXBsaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29tbWVudC5yZXBsaWVzLnNvcnQoc29ydEJ5RGF0ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3RDb21tZW50cztcbiAgfVxuXG4gIC8vID09PSBSb29tIE9wZXJhdGlvbnMgPT09XG5cbiAgYXN5bmMgZ2V0Um9vbUxpc3Qoc2tpcCA9IDAsIHRha2UgPSAxMDApIHtcbiAgICByZXR1cm4gdGhpcy5yb29tU2VydmljZS5xdWVyeSh7IHNraXAsIHRha2UgfSk7XG4gIH1cblxuICBhc3luYyBnZXRSb29tRGV0YWlscyhyb29tSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJvb21TZXJ2aWNlLmdldE9uZShyb29tSWQpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlUm9vbShyb29tRGF0YTogT21pdDxBWE1Db252ZXJzYXRpb25Sb29tLCAnaWQnPik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UuaW5zZXJ0T25lKHJvb21EYXRhKTtcbiAgfVxuXG4gIGFzeW5jIGVuc3VyZVJvb21FeGlzdHMoZW50aXR5SWQ6IHN0cmluZywgaW5zdGFuY2VJZDogc3RyaW5nLCByb29tVHlwZTogc3RyaW5nID0gJ2RlZmF1bHQnKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByb29tSWQgPSB0aGlzLmZvcm1hdFJvb21JZChlbnRpdHlJZCwgaW5zdGFuY2VJZCwgcm9vbVR5cGUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIENoZWNrIGlmIHJvb20gZXhpc3RzXG4gICAgICBhd2FpdCB0aGlzLmdldFJvb21EZXRhaWxzKHJvb21JZCk7XG4gICAgICByZXR1cm4gcm9vbUlkO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBJZiByb29tIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBpdFxuICAgICAgY29uc3Qgcm9vbURhdGEgPSB7XG4gICAgICAgIGlkOiByb29tSWQsIC8vIFByb3ZpZGUgdGhlIElEIGRpcmVjdGx5IGZvciBjb21tZW50c1xuICAgICAgICB0aXRsZTogYENvbW1lbnRzIGZvciAke2VudGl0eUlkfToke2luc3RhbmNlSWR9YCxcbiAgICAgICAgbWVtYmVyczogW3RoaXMuZ2V0Q3VycmVudFVzZXIoKV0sXG4gICAgICB9O1xuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgcm9vbSBvciByZXR1cm4gdGhlIElEIGlmIGl0IGFscmVhZHkgZXhpc3RzXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNyZWF0ZVJvb20ocm9vbURhdGEpO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiByb29tSWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElmIHdlIGdldCBhIGR1cGxpY2F0ZSBlcnJvciwgdGhlIHJvb20gd2FzIGNyZWF0ZWQgYnkgYW5vdGhlciByZXF1ZXN0XG4gICAgICAgIHJldHVybiByb29tSWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gPT09IENvbW1lbnQgT3BlcmF0aW9ucyA9PT1cblxuICBhc3luYyBxdWVyeShxdWVyeVJlcXVlc3Q6IEFYUFF1ZXJ5UmVxdWVzdCk6IFByb21pc2U8QVhQUGFnZWRMaXN0UmVzdWx0PEFYTUNvbW1lbnRNZXNzYWdlPj4ge1xuICAgIGNvbnN0IHsgcGFyYW1zLCBza2lwID0gMCwgdGFrZSA9IDIwIH0gPSBxdWVyeVJlcXVlc3Q7XG4gICAgY29uc3QgeyBlbnRpdHlJZCwgaW5zdGFuY2VJZCwgcm9vbVR5cGUgPSAnZGVmYXVsdCcgfSA9IHBhcmFtcyB8fCB7fTtcblxuICAgIGlmICghZW50aXR5SWQgfHwgIWluc3RhbmNlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW50aXR5SWQgYW5kIEluc3RhbmNlSWQgYXJlIHJlcXVpcmVkIGZvciBxdWVyeWluZyBjb21tZW50cycpO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb21JZCA9IHRoaXMuZm9ybWF0Um9vbUlkKGVudGl0eUlkLCBpbnN0YW5jZUlkLCByb29tVHlwZSk7XG5cbiAgICAvLyBGZXRjaCBtZXNzYWdlcyBmb3IgdGhpcyByb29tXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwLFxuICAgICAgdGFrZSxcbiAgICAgIGZpbHRlcjoge1xuICAgICAgICBmaWVsZDogJ3Jvb21JZCcsXG4gICAgICAgIHZhbHVlOiByb29tSWQsXG4gICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gbWVzc2FnZXMgdG8gY29tbWVudHNcbiAgICBjb25zdCBjb21tZW50cyA9IGF3YWl0IFByb21pc2UuYWxsKHJlc3VsdC5pdGVtcy5tYXAoKG1lc3NhZ2UpID0+IHRoaXMuZm9ybWF0Q29tbWVudChtZXNzYWdlKSkpO1xuXG4gICAgLy8gQnVpbGQgY29tbWVudCBoaWVyYXJjaHlcbiAgICBjb25zdCBoaWVyYXJjaGljYWxDb21tZW50cyA9IGF3YWl0IHRoaXMuYnVpbGRDb21tZW50SGllcmFyY2h5KGNvbW1lbnRzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpdGVtczogaGllcmFyY2hpY2FsQ29tbWVudHMsXG4gICAgICB0b3RhbDogcmVzdWx0LnRvdGFsLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBnZXRPbmUoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudE1lc3NhZ2U+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUoaWQpO1xuICAgIHJldHVybiB0aGlzLmZvcm1hdENvbW1lbnQobWVzc2FnZSk7XG4gIH1cblxuICBhc3luYyBpbnNlcnRPbmUoY29tbWVudERhdGE6IEFYTUNyZWF0ZUNvbW1lbnREdG8pOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlPiB7XG4gICAgY29uc3Qge1xuICAgICAgZW50aXR5SWQsXG4gICAgICBpbnN0YW5jZUlkLFxuICAgICAgcm9vbVR5cGUgPSAnZGVmYXVsdCcsXG4gICAgICBjb250ZW50LFxuICAgICAgY29udGVudFR5cGUgPSAndGV4dCcgYXMgQVhQQ29udGVudFR5cGUsXG4gICAgICByZXBseUlkLFxuICAgICAgaXNQcml2YXRlLFxuICAgIH0gPSBjb21tZW50RGF0YTtcblxuICAgIC8vIEVuc3VyZSB0aGUgcm9vbSBleGlzdHNcbiAgICBjb25zdCByb29tSWQgPSBhd2FpdCB0aGlzLmVuc3VyZVJvb21FeGlzdHMoZW50aXR5SWQsIGluc3RhbmNlSWQsIHJvb21UeXBlKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgbWVzc2FnZSBjb250ZW50XG4gICAgY29uc3QgbWVzc2FnZUNvbnRlbnQ6IEFYUENvbnRlbnQgPSB7XG4gICAgICBjb250ZW50LFxuICAgICAgY29udGVudFR5cGUsXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSB0aGUgbWVzc2FnZSBvYmplY3RcbiAgICBjb25zdCBtZXNzYWdlOiBPbWl0PEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2UsICdpZCc+ID0ge1xuICAgICAgcm9vbUlkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZUNvbnRlbnQsXG4gICAgICBhdXRob3I6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKSxcbiAgICAgIHJlcGx5SWQ6IHJlcGx5SWQgfHwgbnVsbCxcbiAgICB9O1xuXG4gICAgLy8gSW5zZXJ0IHRoZSBtZXNzYWdlXG4gICAgY29uc3QgbWVzc2FnZUlkID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5pbnNlcnRPbmUobWVzc2FnZSk7XG5cbiAgICAvLyBGZXRjaCB0aGUgZnVsbCBtZXNzYWdlIHRvIHJldHVybiBhcyBhIGNvbW1lbnQgZW50aXR5XG4gICAgY29uc3QgaW5zZXJ0ZWRNZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5nZXRPbmUobWVzc2FnZUlkKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRDb21tZW50KGluc2VydGVkTWVzc2FnZSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVPbmUoaWQ6IHN0cmluZywgdXBkYXRlOiBQYXJ0aWFsPEFYTUNvbW1lbnRNZXNzYWdlPik6IFByb21pc2U8QVhNQ29tbWVudE1lc3NhZ2U+IHtcbiAgICAvLyBJZiBjb250ZW50IGlzIGJlaW5nIHVwZGF0ZWQsIGZvcm1hdCBpdCBjb3JyZWN0bHlcbiAgICBsZXQgbWVzc2FnZVVwZGF0ZTogUGFydGlhbDxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiA9IHt9O1xuXG4gICAgaWYgKHVwZGF0ZS5tZXNzYWdlPy5jb250ZW50KSB7XG4gICAgICBtZXNzYWdlVXBkYXRlLm1lc3NhZ2UgPSB7XG4gICAgICAgIGNvbnRlbnQ6IHVwZGF0ZS5tZXNzYWdlLmNvbnRlbnQsXG4gICAgICAgIGNvbnRlbnRUeXBlOiB1cGRhdGUubWVzc2FnZS5jb250ZW50VHlwZSB8fCAndGV4dCcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEFwcGx5IHRoZSB1cGRhdGVcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShpZCwgbWVzc2FnZVVwZGF0ZSk7XG5cbiAgICAvLyBSZXR1cm4gYXMgYSBjb21tZW50IGVudGl0eVxuICAgIHJldHVybiB0aGlzLmZvcm1hdENvbW1lbnQocmVzdWx0KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZU9uZShpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZGVsZXRlT25lKGlkKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZGVsZXRlIGNvbW1lbnQ6JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PSBDb21tZW50LVNwZWNpZmljIE9wZXJhdGlvbnMgPT09XG5cbiAgYXN5bmMgbGlrZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudE1lc3NhZ2U+IHtcbiAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgdXNlciBoYXMgYWxyZWFkeSBsaWtlZCB0aGlzIG1lc3NhZ2VcbiAgICBjb25zdCByZWFjdGlvbnMgPSBtZXNzYWdlLnJlYWN0aW9ucyB8fCBbXTtcbiAgICBjb25zdCBleGlzdGluZ1JlYWN0aW9uID0gcmVhY3Rpb25zLmZpbmQoKHIpID0+IHIuYXV0aG9yLmlkID09PSBhdXRob3IuaWQgJiYgci50eXBlID09PSAnbGlrZScpO1xuXG4gICAgbGV0IHVwZGF0ZWRSZWFjdGlvbnM6IEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uW107XG5cbiAgICBpZiAoZXhpc3RpbmdSZWFjdGlvbikge1xuICAgICAgLy8gSWYgdGhlIHJlYWN0aW9uIGV4aXN0cywgcmVtb3ZlIGl0ICh1bmxpa2UpXG4gICAgICB1cGRhdGVkUmVhY3Rpb25zID0gcmVhY3Rpb25zLmZpbHRlcigocikgPT4gIShyLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkICYmIHIudHlwZSA9PT0gJ2xpa2UnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHRoZSByZWFjdGlvbiBkb2Vzbid0IGV4aXN0LCBhZGQgaXQgKGxpa2UpXG4gICAgICB1cGRhdGVkUmVhY3Rpb25zID0gWy4uLnJlYWN0aW9ucywgeyBhdXRob3IsIHR5cGU6ICdsaWtlJyB9XTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIG1lc3NhZ2Ugd2l0aCB0aGUgbmV3IHJlYWN0aW9uc1xuICAgIGNvbnN0IHVwZGF0ZWRNZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUobWVzc2FnZUlkLCB7IHJlYWN0aW9uczogdXBkYXRlZFJlYWN0aW9ucyB9KTtcblxuICAgIC8vIFJldHVybiBhcyBhIGNvbW1lbnQgZW50aXR5XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0Q29tbWVudCh1cGRhdGVkTWVzc2FnZSk7XG4gIH1cblxuICBhc3luYyBnZXRDb21tZW50Q291bnQoZW50aXR5SWQ6IHN0cmluZywgaW5zdGFuY2VJZDogc3RyaW5nLCByb29tVHlwZTogc3RyaW5nID0gJ2RlZmF1bHQnKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCByb29tSWQgPSB0aGlzLmZvcm1hdFJvb21JZChlbnRpdHlJZCwgaW5zdGFuY2VJZCwgcm9vbVR5cGUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UucXVlcnkoe1xuICAgICAgICBza2lwOiAwLFxuICAgICAgICB0YWtlOiAxLFxuICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICBmaWVsZDogJ3Jvb21JZCcsXG4gICAgICAgICAgdmFsdWU6IHJvb21JZCxcbiAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdC50b3RhbDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdldCBjb21tZW50IGNvdW50OicsIGVycm9yKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldEFsbENvbW1lbnRzV2l0aFJlcGxpZXMoXG4gICAgZW50aXR5SWQ6IHN0cmluZyxcbiAgICBpbnN0YW5jZUlkOiBzdHJpbmcsXG4gICAgcm9vbVR5cGU6IHN0cmluZyA9ICdkZWZhdWx0JyxcbiAgICBza2lwID0gMCxcbiAgICB0YWtlID0gMTAwLFxuICApOiBQcm9taXNlPEFYUFBhZ2VkTGlzdFJlc3VsdDxBWE1Db21tZW50TWVzc2FnZT4+IHtcbiAgICBjb25zdCBxdWVyeVJlcXVlc3Q6IEFYUFF1ZXJ5UmVxdWVzdCA9IHtcbiAgICAgIHBhcmFtczogeyBlbnRpdHlJZCwgaW5zdGFuY2VJZCwgcm9vbVR5cGUgfSxcbiAgICAgIHNraXAsXG4gICAgICB0YWtlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5xdWVyeShxdWVyeVJlcXVlc3QpO1xuICB9XG59XG4iXX0=","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { Component } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/platform/layout/builder\";\nimport * as i3 from \"@acorex/components/button\";\nexport class AXMCommentLookupPopup extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.lookupNode = {\n name: 'lookup',\n path: 'lookup',\n type: 'lookup-editor',\n options: {\n entity: 'axoidc.users',\n },\n };\n this.context = {};\n }\n handleClose() {\n this.close({\n result: true,\n data: this.context,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentLookupPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXMCommentLookupPopup, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: `<axp-widgets-container\n class=\"ax-flex ax-flex-col ax-gap-2 ax-p-4\"\n [context]=\"context\"\n (onContextChanged)=\"context = $event.data\"\n >\n <div class=\"ax-m-5\">\n <ng-container axp-widget-renderer [node]=\"lookupNode\" [mode]=\"'edit'\"> </ng-container>\n </div>\n </axp-widgets-container>\n\n <ax-footer>\n <ax-suffix>\n <ax-button text=\"Accept & Send\" color=\"primary\" (onClick)=\"handleClose()\"></ax-button>\n </ax-suffix>\n </ax-footer>`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i2.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i2.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentLookupPopup, decorators: [{\n type: Component,\n args: [{\n template: `<axp-widgets-container\n class=\"ax-flex ax-flex-col ax-gap-2 ax-p-4\"\n [context]=\"context\"\n (onContextChanged)=\"context = $event.data\"\n >\n <div class=\"ax-m-5\">\n <ng-container axp-widget-renderer [node]=\"lookupNode\" [mode]=\"'edit'\"> </ng-container>\n </div>\n </axp-widgets-container>\n\n <ax-footer>\n <ax-suffix>\n <ax-button text=\"Accept & Send\" color=\"primary\" (onClick)=\"handleClose()\"></ax-button>\n </ax-suffix>\n </ax-footer>`,\n imports: [AXDecoratorModule, AXPLayoutBuilderModule, AXButtonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1sb29rdXAtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC1sb29rdXAtcG9wdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWlCLE1BQU0saUNBQWlDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFvQjFDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxtQkFBbUI7SUFsQjlEOztRQW1CWSxlQUFVLEdBQWtCO1lBQ3BDLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsZUFBZTtZQUNyQixPQUFPLEVBQUU7Z0JBQ1AsTUFBTSxFQUFFLGNBQWM7YUFDdkI7U0FDRixDQUFDO1FBQ0YsWUFBTyxHQUFHLEVBQUUsQ0FBQztLQVFkO0lBTkMsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUM7WUFDVCxNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWhCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQiwrRkFqQnRCOzs7Ozs7Ozs7Ozs7OztpQkFjSywyREFDTCxpQkFBaUIscVBBQUUsc0JBQXNCLDhaQUFFLGNBQWM7OzJGQUV4RCxxQkFBcUI7a0JBbEJqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7aUJBY0s7b0JBQ2YsT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxDQUFDO2lCQUNyRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYQmFzZVBhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlLCBBWFBXaWRnZXROb2RlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgPGF4cC13aWRnZXRzLWNvbnRhaW5lclxuICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yIGF4LXAtNFwiXG4gICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgIChvbkNvbnRleHRDaGFuZ2VkKT1cImNvbnRleHQgPSAkZXZlbnQuZGF0YVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LW0tNVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIGF4cC13aWRnZXQtcmVuZGVyZXIgW25vZGVdPVwibG9va3VwTm9kZVwiIFttb2RlXT1cIidlZGl0J1wiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuXG4gICAgPGF4LWZvb3Rlcj5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC1idXR0b24gdGV4dD1cIkFjY2VwdCAmIFNlbmRcIiBjb2xvcj1cInByaW1hcnlcIiAob25DbGljayk9XCJoYW5kbGVDbG9zZSgpXCI+PC9heC1idXR0b24+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LWZvb3Rlcj5gLFxuICBpbXBvcnRzOiBbQVhEZWNvcmF0b3JNb2R1bGUsIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYQnV0dG9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ29tbWVudExvb2t1cFBvcHVwIGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBsb29rdXBOb2RlOiBBWFBXaWRnZXROb2RlID0ge1xuICAgIG5hbWU6ICdsb29rdXAnLFxuICAgIHBhdGg6ICdsb29rdXAnLFxuICAgIHR5cGU6ICdsb29rdXAtZWRpdG9yJyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBlbnRpdHk6ICdheG9pZGMudXNlcnMnLFxuICAgIH0sXG4gIH07XG4gIGNvbnRleHQgPSB7fTtcblxuICBoYW5kbGVDbG9zZSgpIHtcbiAgICB0aGlzLmNsb3NlKHtcbiAgICAgIHJlc3VsdDogdHJ1ZSxcbiAgICAgIGRhdGE6IHRoaXMuY29udGV4dCxcbiAgICB9KTtcbiAgfVxufVxuIl19","import { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXMCommentService } from './comment.service';\nimport { AXMCommentLookupPopup } from './comment-lookup-popup.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/comment\";\nimport * as i3 from \"@acorex/components/image\";\nimport * as i4 from \"@acorex/components/avatar\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/components/button\";\nimport * as i7 from \"@acorex/components/loading\";\nimport * as i8 from \"@acorex/components/wysiwyg\";\nimport * as i9 from \"@acorex/components/form\";\nimport * as i10 from \"@acorex/components/dropdown-button\";\nimport * as i11 from \"@acorex/components/dropdown\";\nimport * as i12 from \"@acorex/components/toolbar\";\nimport * as i13 from \"@acorex/components/skeleton\";\nimport * as i14 from \"@angular/common\";\nimport * as i15 from \"@acorex/core/format\";\nexport class AXMCommentListViewComponent {\n constructor() {\n this.hasCooldown = signal(false);\n this.commentContent = signal('');\n this.isSubmitting = signal(false);\n this.isReplyingMode = signal(false);\n this.isEditingMode = signal(false);\n this.isLoading = signal(true);\n this.failedImageIds = signal([]);\n this.activeReplyComment = signal(undefined);\n this.activeEditComment = signal(undefined);\n this.wysiwygEditor = viewChild.required('w');\n this.commentService = inject(AXMCommentService);\n this.platform = inject(AXPlatform);\n this.route = inject(ActivatedRoute);\n this.popupService = inject(AXPopupService);\n this.toastService = inject(AXToastService);\n this.dialogService = inject(AXDialogService);\n this.sanitize = inject(DomSanitizer);\n this.routeParams = this.route.snapshot;\n this.getPayload = computed(() => ({\n params: this.payload(),\n skip: 0,\n take: 10,\n }));\n this.payload = computed(() => ({\n roomType: 'default',\n entityId: this.routeParams.params?.['module'] + '.' + this.routeParams.params?.['entity'],\n instanceId: this.routeParams.params?.['id'],\n }));\n this.comments = signal([]);\n this.wysiwyg = viewChild('w');\n this.wysiwygOptions = signal({\n look: 'solid',\n });\n this.avatarConfig = signal({\n color: 'primary',\n look: 'rounded',\n type: 'solid', // 'image' | 'text' | 'icon' | 'default'\n });\n this.validateContent = (content) => {\n let isValid = true;\n if (!content || content === '<p><br></p>') {\n isValid = false;\n }\n return {\n rule: 'callback',\n result: isValid,\n message: isValid ? '' : 'Please fill the content',\n value: content,\n };\n };\n }\n ngOnInit() {\n this.loadComments();\n }\n sanitizeHtml(htmlContent) {\n if (!htmlContent)\n return this.sanitize.bypassSecurityTrustHtml('');\n return this.sanitize.bypassSecurityTrustHtml(htmlContent);\n }\n handleImageError(imageId) {\n this.failedImageIds.update((ids) => [...ids, imageId]);\n }\n checkImageExists(imageId) {\n return !this.failedImageIds().includes(imageId);\n }\n extractInitials(name) {\n if (!name)\n return '?';\n // Handle the case where name is an object with fullName property\n const nameStr = typeof name === 'object' && name.fullName ? name.fullName : String(name);\n const words = nameStr.split(' ');\n const initials = words.map((word) => word.charAt(0).toUpperCase());\n return initials.join('');\n }\n async loadComments() {\n this.isLoading.set(true);\n try {\n const response = await this.commentService.query(this.getPayload());\n this.comments.set(response.items);\n }\n catch (error) {\n console.error('Failed to load comments:', error);\n this.toastService.show({\n content: 'Failed to load comments. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.comments.set([]);\n }\n finally {\n setTimeout(() => {\n this.isLoading.set(false);\n }, 250);\n }\n }\n editMessage(comment, reply) {\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.isEditingMode.set(true);\n this.activeEditComment.set(comment);\n const contentToEdit = reply ? reply.message?.content : comment.message?.content;\n this.commentContent.set(contentToEdit || '');\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n replyMessage(comment, reply) {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(true);\n this.activeReplyComment.set(comment);\n if (reply) {\n const author = reply.author.fullName || reply.author.id;\n const mention = `<a data-id=\"${reply.id}\">@${author}</a> `;\n this.commentContent.set(mention);\n this.wysiwyg()?.focus();\n document.getElementsByClassName('ql-editor')[0].innerHTML = mention;\n }\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n async deleteComment(comment) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this comment?',\n title: 'Delete Comment',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n if (comment.id) {\n await this.commentService.deleteOne(comment.id);\n this.removeMessageById(comment.id);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n if (this.isEditingMode() && this.activeEditComment()?.id === comment.id) {\n this.resetReplyEditState();\n }\n dialog.close();\n }\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n async deleteReply(comment, reply) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this reply?',\n title: 'Delete Reply',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n if (reply.id) {\n await this.commentService.deleteOne(reply.id);\n this.removeMessageById(comment.id, reply.id);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n dialog.close();\n }\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n resetReplyEditState() {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n }\n async toggleLike(comment, reply) {\n try {\n if (reply) {\n if (reply.id) {\n this.updateLikeStatus(comment.id, reply.id);\n await this.commentService.like(reply.id);\n }\n }\n else {\n if (comment.id) {\n this.updateLikeStatus(comment.id);\n await this.commentService.like(comment.id);\n }\n }\n }\n catch (error) {\n console.error('Failed to toggle like:', error);\n // Revert the optimistic update if the server call fails\n if (reply && reply.id) {\n this.updateLikeStatus(comment.id, reply.id);\n }\n else if (comment.id) {\n this.updateLikeStatus(comment.id);\n }\n }\n }\n updateLikeStatus(commentId, replyId) {\n this.comments.update((commentsList) => {\n return commentsList.map((comment) => {\n if (comment.id === commentId) {\n if (replyId && comment.replies) {\n const updatedReplies = comment.replies.map((reply) => reply.id === replyId\n ? {\n ...reply,\n isLiked: !reply.isLiked,\n reactionsCount: reply.isLiked && reply.reactionsCount !== undefined\n ? reply.reactionsCount - 1\n : (reply.reactionsCount || 0) + 1,\n }\n : reply);\n return {\n ...comment,\n replies: updatedReplies,\n };\n }\n else {\n return {\n ...comment,\n isLiked: !comment.isLiked,\n reactionsCount: comment.isLiked && comment.reactionsCount !== undefined\n ? comment.reactionsCount - 1\n : (comment.reactionsCount || 0) + 1,\n };\n }\n }\n return comment;\n });\n });\n }\n removeMessageById(commentId, replyId) {\n if (replyId) {\n // Remove a reply from a comment\n this.comments.update((commentsList) => commentsList.map((comment) => {\n if (comment.id === commentId && comment.replies) {\n return {\n ...comment,\n replies: comment.replies.filter((reply) => reply.id !== replyId),\n };\n }\n return comment;\n }));\n }\n else {\n // Remove a whole comment\n this.comments.update((commentsList) => commentsList.filter((comment) => comment.id !== commentId));\n }\n }\n async submitComment(isPrivate = false) {\n if (!this.validateContent(this.commentContent()).result) {\n return;\n }\n this.isSubmitting.set(true);\n let memberLookup;\n if (isPrivate) {\n const popupConfig = {\n header: true,\n size: 'md',\n draggable: true,\n hasBackdrop: true,\n closeButton: true,\n closeOnBackdropClick: false,\n };\n const popup = await this.popupService.open(AXMCommentLookupPopup, popupConfig);\n memberLookup = popup.data?.data?.lookup;\n }\n try {\n if (this.isEditingMode() && this.activeEditComment()?.id) {\n const payload = {\n message: {\n content: this.commentContent(),\n contentType: 'text',\n },\n };\n await this.commentService.updateOne(this.activeEditComment().id, payload);\n this.hasCooldown.set(true);\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n }\n else {\n const payload = {\n ...this.payload(),\n content: this.commentContent(),\n contentType: 'text',\n isPrivate: isPrivate,\n replyId: this.activeReplyComment()?.id ?? null,\n };\n await this.commentService.insertOne(payload);\n this.hasCooldown.set(true);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n }\n // Reload comments to get the updated list with proper hierarchy\n const response = await this.commentService.query(this.getPayload());\n this.comments.set(response.items);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n setTimeout(() => {\n this.hasCooldown.set(false);\n }, 1000);\n }\n catch (error) {\n console.error('Error submitting comment:', error);\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to submit comment. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n scrollMain() {\n const comment = this.isReplyingMode() ? this.activeReplyComment() : this.activeEditComment();\n if (comment && comment.id) {\n const el = document.getElementById(comment.id);\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n const content = el?.firstElementChild?.children[1];\n if (content) {\n const prevBg = content.style.background;\n content.style.borderRadius = '0.25rem';\n content.style.transition = 'background 1s ease-in-out';\n content.style.background = `rgba(var(--ax-color-on-surface), var(--tw-bg-opacity))`;\n setTimeout(() => {\n content.style.background = prevBg || 'rgba(0, 0, 0, 0)';\n }, 1000);\n }\n }\n }\n }\n calcDefrenetTime(date) {\n return date ? Date.now() - date.getTime() : undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMCommentListViewComponent, isStandalone: false, selector: \"axm-comment-list-view\", viewQueries: [{ propertyName: \"wysiwygEditor\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }, { propertyName: \"wysiwyg\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"ax-mt-2\\\">\\n <ax-comment-container>\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item [id]=\\\"comment.id!\\\" [replyCount]=\\\"comment.replies?.length ?? 0\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (checkImageExists(comment.id!) && comment.author && extractInitials(comment.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(comment.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(comment.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(comment.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(comment.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"comment.isLiked!\\\">\\n {{ comment.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment)\\\"></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (reply && checkImageExists(reply.id!) && reply.author && extractInitials(reply.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(reply.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(reply.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(reply.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(reply.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteReply(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment, reply)\\\" [liked]=\\\"reply.isLiked!\\\">\\n {{ reply.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment, reply)\\\"></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? extractInitials(activeReplyComment()?.author) : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment(true)\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\"ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\\n\"], dependencies: [{ 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: i2.AXCommentViewComponent, selector: \"ax-comment-view\" }, { kind: \"component\", type: i2.AXCommentContainerComponent, selector: \"ax-comment-container\" }, { kind: \"component\", type: i2.AxCommentItemComponent, selector: \"ax-comment-item\", inputs: [\"replyCount\"] }, { kind: \"component\", type: i2.AXCommentLikeComponent, selector: \"ax-comment-like\", inputs: [\"liked\"], outputs: [\"likedChange\", \"onLiked\"] }, { kind: \"component\", type: i2.AXMenuOptionsComponent, selector: \"ax-comment-menu-options\" }, { kind: \"component\", type: i2.AXCommentReplyTextComponent, selector: \"ax-comment-reply-text\" }, { kind: \"component\", type: i2.AXCommentDateComponent, selector: \"ax-comment-date\" }, { kind: \"component\", type: i3.AXImageComponent, selector: \"ax-image\", inputs: [\"width\", \"height\", \"overlayMode\", \"src\", \"alt\", \"priority\", \"lazy\"], outputs: [\"onLoad\", \"onError\"] }, { kind: \"component\", type: i4.AXAvatarComponent, selector: \"ax-avatar\", inputs: [\"color\", \"size\", \"shape\", \"look\"], outputs: [\"sizeChange\"] }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: i6.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: i6.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i6.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i7.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"component\", type: i8.AXWysiwygContainerComponent, selector: \"ax-wysiwyg-container\", inputs: [\"look\", \"placeHolder\"], outputs: [\"onValueChanged\"] }, { kind: \"component\", type: i8.AXWysiwygViewComponent, selector: \"ax-wysiwyg-view\", inputs: [\"class\"] }, { kind: \"component\", type: i8.AXWysiwygAlignmentComponent, selector: \"ax-wysiwyg-alignment\" }, { kind: \"component\", type: i8.AXWysiwygColorsComponent, selector: \"ax-wysiwyg-colors\" }, { kind: \"component\", type: i8.AXWysiwygFontStyleComponent, selector: \"ax-wysiwyg-font-style\" }, { kind: \"component\", type: i8.AXWysiwygHistoryComponent, selector: \"ax-wysiwyg-history\" }, { kind: \"component\", type: i8.AXWysiwygListComponent, selector: \"ax-wysiwyg-list\" }, { kind: \"component\", type: i9.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i9.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"directive\", type: i9.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }, { kind: \"component\", type: i10.AXDropdownButtonComponent, selector: \"ax-dropdown-button\", inputs: [\"disabled\", \"size\", \"color\", \"look\", \"text\", \"type\", \"mode\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"lookChange\", \"colorChange\", \"disabledChange\"] }, { kind: \"component\", type: i11.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: i12.AXToolBarComponent, selector: \"ax-toolbar\" }, { kind: \"component\", type: i13.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"pipe\", type: i14.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i15.AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentListViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-comment-list-view', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"ax-mt-2\\\">\\n <ax-comment-container>\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item [id]=\\\"comment.id!\\\" [replyCount]=\\\"comment.replies?.length ?? 0\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (checkImageExists(comment.id!) && comment.author && extractInitials(comment.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(comment.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(comment.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(comment.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(comment.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"comment.isLiked!\\\">\\n {{ comment.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment)\\\"></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (reply && checkImageExists(reply.id!) && reply.author && extractInitials(reply.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(reply.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(reply.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(reply.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(reply.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteReply(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment, reply)\\\" [liked]=\\\"reply.isLiked!\\\">\\n {{ reply.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment, reply)\\\"></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? extractInitials(activeReplyComment()?.author) : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment(true)\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\"ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQWlCLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQW1CekUsTUFBTSxPQUFPLDJCQUEyQjtJQWpCeEM7UUFrQlksZ0JBQVcsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckMsbUJBQWMsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFcEMs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QyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3hELENBQUM7OEdBOWJVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLHFTQ2pDeEMsa3RhQTBPQTs7MkZEek1hLDJCQUEyQjtrQkFqQnZDLFNBQVM7K0JBRUUsdUJBQXVCLGNBQ3JCLEtBQUssbUJBWUEsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYV3lzaXd5Z0NvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy93eXNpd3lnJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIE9uSW5pdCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQVhTdHlsZUxvb2tUeXBlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhQb3B1cENvbmZpZywgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhUb2FzdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9hc3QnO1xuaW1wb3J0IHsgQVhQbGF0Zm9ybSB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBBWFBRdWVyeVJlcXVlc3QgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBWE1Db21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUNvbW1lbnRNZXNzYWdlIH0gZnJvbSAnLi9jb21tZW50LnR5cGUnO1xuXG5pbXBvcnQgeyBBWE1Db21tZW50TG9va3VwUG9wdXAgfSBmcm9tICcuL2NvbW1lbnQtbG9va3VwLXBvcHVwLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzZWxlY3RvcjogJ2F4bS1jb21tZW50LWxpc3QtdmlldycsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxuICBzdHlsZXM6IGBcbiAgICBheC13eXNpd3lnLWNvbnRhaW5lciB7XG4gICAgICAuYXgtZWRpdG9yLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC5heC1lcnJvci1tZXNzYWdlIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgICB9XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ29tbWVudExpc3RWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIGhhc0Nvb2xkb3duID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGNvbW1lbnRDb250ZW50ID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gIHByb3RlY3RlZCBpc1N1Ym1pdHRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNSZXBseWluZ01vZGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNFZGl0aW5nTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHJvdGVjdGVkIGZhaWxlZEltYWdlSWRzID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG4gIHByb3RlY3RlZCBhY3RpdmVSZXBseUNvbW1lbnQgPSBzaWduYWw8dW5kZWZpbmVkIHwgQVhNQ29tbWVudE1lc3NhZ2U+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBhY3RpdmVFZGl0Q29tbWVudCA9IHNpZ25hbDx1bmRlZmluZWQgfCBBWE1Db21tZW50TWVzc2FnZT4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHd5c2l3eWdFZGl0b3IgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8QVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50PigndycpO1xuXG4gIHByaXZhdGUgY29tbWVudFNlcnZpY2UgPSBpbmplY3QoQVhNQ29tbWVudFNlcnZpY2UpO1xuICBwcml2YXRlIHBsYXRmb3JtID0gaW5qZWN0KEFYUGxhdGZvcm0pO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0U2VydmljZSA9IGluamVjdChBWFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICBzYW5pdGl6ZSA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVQYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90O1xuICBwcml2YXRlIGdldFBheWxvYWQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHtcbiAgICAgICAgcGFyYW1zOiB0aGlzLnBheWxvYWQoKSxcbiAgICAgICAgc2tpcDogMCxcbiAgICAgICAgdGFrZTogMTAsXG4gICAgICB9KSBhcyBBWFBRdWVyeVJlcXVlc3QsXG4gICk7XG4gIHBheWxvYWQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIHJvb21UeXBlOiAnZGVmYXVsdCcsXG4gICAgZW50aXR5SWQ6IHRoaXMucm91dGVQYXJhbXMucGFyYW1zPy5bJ21vZHVsZSddICsgJy4nICsgdGhpcy5yb3V0ZVBhcmFtcy5wYXJhbXM/LlsnZW50aXR5J10sXG4gICAgaW5zdGFuY2VJZDogdGhpcy5yb3V0ZVBhcmFtcy5wYXJhbXM/LlsnaWQnXSxcbiAgfSkpO1xuXG4gIHByb3RlY3RlZCBjb21tZW50cyA9IHNpZ25hbDxBWE1Db21tZW50TWVzc2FnZVtdPihbXSk7XG4gIHByaXZhdGUgd3lzaXd5ZyA9IHZpZXdDaGlsZDxBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQ+KCd3Jyk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkQ29tbWVudHMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB3eXNpd3lnT3B0aW9ucyA9IHNpZ25hbDx7XG4gICAgbG9vazogQVhTdHlsZUxvb2tUeXBlO1xuICB9Pih7XG4gICAgbG9vazogJ3NvbGlkJyxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGF2YXRhckNvbmZpZyA9IHNpZ25hbDx7XG4gICAgY29sb3I6IHN0cmluZztcbiAgICBsb29rOiAnc2hhcnAnIHwgJ3NvZnQnIHwgJ3JvdW5kZWQnO1xuICAgIHR5cGU6IHN0cmluZztcbiAgfT4oe1xuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgbG9vazogJ3JvdW5kZWQnLFxuICAgIHR5cGU6ICdzb2xpZCcsIC8vICdpbWFnZScgfCAndGV4dCcgfCAnaWNvbicgfCAnZGVmYXVsdCdcbiAgfSk7XG5cbiAgdmFsaWRhdGVDb250ZW50ID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcblxuICAgIGlmICghY29udGVudCB8fCBjb250ZW50ID09PSAnPHA+PGJyPjwvcD4nKSB7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBydWxlOiAnY2FsbGJhY2snLFxuICAgICAgcmVzdWx0OiBpc1ZhbGlkLFxuICAgICAgbWVzc2FnZTogaXNWYWxpZCA/ICcnIDogJ1BsZWFzZSBmaWxsIHRoZSBjb250ZW50JyxcbiAgICAgIHZhbHVlOiBjb250ZW50LFxuICAgIH07XG4gIH07XG5cbiAgc2FuaXRpemVIdG1sKGh0bWxDb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWh0bWxDb250ZW50KSByZXR1cm4gdGhpcy5zYW5pdGl6ZS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCgnJyk7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemUuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaHRtbENvbnRlbnQpO1xuICB9XG5cbiAgaGFuZGxlSW1hZ2VFcnJvcihpbWFnZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWxlZEltYWdlSWRzLnVwZGF0ZSgoaWRzKSA9PiBbLi4uaWRzLCBpbWFnZUlkXSk7XG4gIH1cblxuICBjaGVja0ltYWdlRXhpc3RzKGltYWdlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5mYWlsZWRJbWFnZUlkcygpLmluY2x1ZGVzKGltYWdlSWQpO1xuICB9XG5cbiAgZXh0cmFjdEluaXRpYWxzKG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJz8nO1xuXG4gICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIG5hbWUgaXMgYW4gb2JqZWN0IHdpdGggZnVsbE5hbWUgcHJvcGVydHlcbiAgICBjb25zdCBuYW1lU3RyID0gdHlwZW9mIG5hbWUgPT09ICdvYmplY3QnICYmIG5hbWUuZnVsbE5hbWUgPyBuYW1lLmZ1bGxOYW1lIDogU3RyaW5nKG5hbWUpO1xuXG4gICAgY29uc3Qgd29yZHMgPSBuYW1lU3RyLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSB3b3Jkcy5tYXAoKHdvcmQ6IHN0cmluZykgPT4gd29yZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSk7XG4gICAgcmV0dXJuIGluaXRpYWxzLmpvaW4oJycpO1xuICB9XG5cbiAgYXN5bmMgbG9hZENvbW1lbnRzKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLnF1ZXJ5KHRoaXMuZ2V0UGF5bG9hZCgpKTtcbiAgICAgIHRoaXMuY29tbWVudHMuc2V0KHJlc3BvbnNlLml0ZW1zKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgY29tbWVudHM6JywgZXJyb3IpO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGNvbnRlbnQ6ICdGYWlsZWQgdG8gbG9hZCBjb21tZW50cy4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29tbWVudHMuc2V0KFtdKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LCAyNTApO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRNZXNzYWdlKGNvbW1lbnQ6IEFYTUNvbW1lbnRNZXNzYWdlLCByZXBseT86IEFYTUNvbW1lbnRNZXNzYWdlKSB7XG4gICAgdGhpcy5pc1JlcGx5aW5nTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuaXNFZGl0aW5nTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQoY29tbWVudCk7XG4gICAgY29uc3QgY29udGVudFRvRWRpdCA9IHJlcGx5ID8gcmVwbHkubWVzc2FnZT8uY29udGVudCA6IGNvbW1lbnQubWVzc2FnZT8uY29udGVudDtcbiAgICB0aGlzLmNvbW1lbnRDb250ZW50LnNldChjb250ZW50VG9FZGl0IHx8ICcnKTtcbiAgICB0aGlzLnd5c2l3eWdFZGl0b3IoKS5nZXRIb3N0RWxlbWVudCgpLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgfVxuXG4gIHJlcGx5TWVzc2FnZShjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSwgcmVwbHk/OiBBWE1Db21tZW50TWVzc2FnZSkge1xuICAgIHRoaXMuaXNFZGl0aW5nTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc1JlcGx5aW5nTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KGNvbW1lbnQpO1xuICAgIGlmIChyZXBseSkge1xuICAgICAgY29uc3QgYXV0aG9yID0gKHJlcGx5LmF1dGhvciBhcyBhbnkpLmZ1bGxOYW1lIHx8IHJlcGx5LmF1dGhvci5pZDtcbiAgICAgIGNvbnN0IG1lbnRpb24gPSBgPGEgZGF0YS1pZD1cIiR7cmVwbHkuaWR9XCI+QCR7YXV0aG9yfTwvYT4gYDtcbiAgICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KG1lbnRpb24pO1xuICAgICAgdGhpcy53eXNpd3lnKCk/LmZvY3VzKCk7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1lZGl0b3InKVswXS5pbm5lckhUTUwgPSBtZW50aW9uO1xuICAgIH1cbiAgICB0aGlzLnd5c2l3eWdFZGl0b3IoKS5nZXRIb3N0RWxlbWVudCgpLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUNvbW1lbnQoY29tbWVudDogQVhNQ29tbWVudE1lc3NhZ2UpIHtcbiAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbih7XG4gICAgICBpY29uOiAnZmEtcmVndWxhciBmYS13YXJuaW5nJyxcbiAgICAgIGNvbnRlbnQ6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29tbWVudD8nLFxuICAgICAgdGl0bGU6ICdEZWxldGUgQ29tbWVudCcsXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgb25DbGljazogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgZS5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLnRleHQgPSAnRGVsZXRpbmcuLi4nO1xuICAgICAgICAgICAgZS5zb3VyY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgZS5zb3VyY2UubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoY29tbWVudC5pZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZGVsZXRlT25lKGNvbW1lbnQuaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTWVzc2FnZUJ5SWQoY29tbWVudC5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAnQ29tbWVudCBkZWxldGVkIHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nTW9kZSgpICYmIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKT8uaWQgPT09IGNvbW1lbnQuaWQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRSZXBseUVkaXRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgY29udGVudDogdHlwZW9mIGVycm9yID09PSAnc3RyaW5nJyA/IGVycm9yIDogJ0ZhaWxlZCB0byBkZWxldGUgY29tbWVudCEnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0NhbmNlbCcsXG4gICAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgICBhdXRvZm9jdXM6IHRydWUsXG4gICAgICAgICAgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY2xvc2VCdXR0b246IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlUmVwbHkoY29tbWVudDogQVhNQ29tbWVudE1lc3NhZ2UsIHJlcGx5OiBBWE1Db21tZW50TWVzc2FnZSkge1xuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcbiAgICAgIGljb246ICdmYS1yZWd1bGFyIGZhLXdhcm5pbmcnLFxuICAgICAgY29udGVudDogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyByZXBseT8nLFxuICAgICAgdGl0bGU6ICdEZWxldGUgUmVwbHknLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXG4gICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGUuaGFuZGxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS50ZXh0ID0gJ0RlbGV0aW5nLi4uJztcbiAgICAgICAgICAgIGUuc291cmNlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKHJlcGx5LmlkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVPbmUocmVwbHkuaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTWVzc2FnZUJ5SWQoY29tbWVudC5pZCwgcmVwbHkuaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgICAgY29udGVudDogJ0NvbW1lbnQgZGVsZXRlZCBzdWNjZXNzZnVsbHkuJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICAgICAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gZXJyb3IgOiAnRmFpbGVkIHRvIGRlbGV0ZSBjb21tZW50IScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgIGF1dG9mb2N1czogdHJ1ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICByZXNldFJlcGx5RWRpdFN0YXRlKCkge1xuICAgIHRoaXMuaXNFZGl0aW5nTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc1JlcGx5aW5nTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KCcnKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1lZGl0b3InKVswXS5pbm5lckhUTUwgPSAnJztcbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZUxpa2UoY29tbWVudDogQVhNQ29tbWVudE1lc3NhZ2UsIHJlcGx5PzogQVhNQ29tbWVudE1lc3NhZ2UpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHJlcGx5KSB7XG4gICAgICAgIGlmIChyZXBseS5pZCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkLCByZXBseS5pZCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5saWtlKHJlcGx5LmlkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNvbW1lbnQuaWQpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxpa2VTdGF0dXMoY29tbWVudC5pZCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5saWtlKGNvbW1lbnQuaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byB0b2dnbGUgbGlrZTonLCBlcnJvcik7XG4gICAgICAvLyBSZXZlcnQgdGhlIG9wdGltaXN0aWMgdXBkYXRlIGlmIHRoZSBzZXJ2ZXIgY2FsbCBmYWlsc1xuICAgICAgaWYgKHJlcGx5ICYmIHJlcGx5LmlkKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkLCByZXBseS5pZCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbW1lbnQuaWQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTGlrZVN0YXR1cyhjb21tZW50SWQ6IHN0cmluZywgcmVwbHlJZD86IHN0cmluZykge1xuICAgIHRoaXMuY29tbWVudHMudXBkYXRlKChjb21tZW50c0xpc3QpID0+IHtcbiAgICAgIHJldHVybiBjb21tZW50c0xpc3QubWFwKChjb21tZW50KSA9PiB7XG4gICAgICAgIGlmIChjb21tZW50LmlkID09PSBjb21tZW50SWQpIHtcbiAgICAgICAgICBpZiAocmVwbHlJZCAmJiBjb21tZW50LnJlcGxpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRSZXBsaWVzID0gY29tbWVudC5yZXBsaWVzLm1hcCgocmVwbHkpID0+XG4gICAgICAgICAgICAgIHJlcGx5LmlkID09PSByZXBseUlkXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnJlcGx5LFxuICAgICAgICAgICAgICAgICAgICBpc0xpa2VkOiAhcmVwbHkuaXNMaWtlZCxcbiAgICAgICAgICAgICAgICAgICAgcmVhY3Rpb25zQ291bnQ6XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbHkuaXNMaWtlZCAmJiByZXBseS5yZWFjdGlvbnNDb3VudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJlcGx5LnJlYWN0aW9uc0NvdW50IC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAocmVwbHkucmVhY3Rpb25zQ291bnQgfHwgMCkgKyAxLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogcmVwbHksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICByZXBsaWVzOiB1cGRhdGVkUmVwbGllcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNvbW1lbnQsXG4gICAgICAgICAgICAgIGlzTGlrZWQ6ICFjb21tZW50LmlzTGlrZWQsXG4gICAgICAgICAgICAgIHJlYWN0aW9uc0NvdW50OlxuICAgICAgICAgICAgICAgIGNvbW1lbnQuaXNMaWtlZCAmJiBjb21tZW50LnJlYWN0aW9uc0NvdW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgID8gY29tbWVudC5yZWFjdGlvbnNDb3VudCAtIDFcbiAgICAgICAgICAgICAgICAgIDogKGNvbW1lbnQucmVhY3Rpb25zQ291bnQgfHwgMCkgKyAxLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbW1lbnQ7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTWVzc2FnZUJ5SWQoY29tbWVudElkOiBzdHJpbmcsIHJlcGx5SWQ/OiBzdHJpbmcpIHtcbiAgICBpZiAocmVwbHlJZCkge1xuICAgICAgLy8gUmVtb3ZlIGEgcmVwbHkgZnJvbSBhIGNvbW1lbnRcbiAgICAgIHRoaXMuY29tbWVudHMudXBkYXRlKChjb21tZW50c0xpc3QpID0+XG4gICAgICAgIGNvbW1lbnRzTGlzdC5tYXAoKGNvbW1lbnQpID0+IHtcbiAgICAgICAgICBpZiAoY29tbWVudC5pZCA9PT0gY29tbWVudElkICYmIGNvbW1lbnQucmVwbGllcykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY29tbWVudCxcbiAgICAgICAgICAgICAgcmVwbGllczogY29tbWVudC5yZXBsaWVzLmZpbHRlcigocmVwbHkpID0+IHJlcGx5LmlkICE9PSByZXBseUlkKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjb21tZW50O1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlbW92ZSBhIHdob2xlIGNvbW1lbnRcbiAgICAgIHRoaXMuY29tbWVudHMudXBkYXRlKChjb21tZW50c0xpc3QpID0+IGNvbW1lbnRzTGlzdC5maWx0ZXIoKGNvbW1lbnQpID0+IGNvbW1lbnQuaWQgIT09IGNvbW1lbnRJZCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzdWJtaXRDb21tZW50KGlzUHJpdmF0ZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlQ29udGVudCh0aGlzLmNvbW1lbnRDb250ZW50KCkpLnJlc3VsdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldCh0cnVlKTtcblxuICAgIGxldCBtZW1iZXJMb29rdXA7XG4gICAgaWYgKGlzUHJpdmF0ZSkge1xuICAgICAgY29uc3QgcG9wdXBDb25maWc6IEFYUG9wdXBDb25maWcgPSB7XG4gICAgICAgIGhlYWRlcjogdHJ1ZSxcbiAgICAgICAgc2l6ZTogJ21kJyxcbiAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIGNsb3NlT25CYWNrZHJvcENsaWNrOiBmYWxzZSxcbiAgICAgIH07XG4gICAgICBjb25zdCBwb3B1cCA9IGF3YWl0IHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oQVhNQ29tbWVudExvb2t1cFBvcHVwLCBwb3B1cENvbmZpZyk7XG4gICAgICBtZW1iZXJMb29rdXAgPSBwb3B1cC5kYXRhPy5kYXRhPy5sb29rdXA7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmlzRWRpdGluZ01vZGUoKSAmJiB0aGlzLmFjdGl2ZUVkaXRDb21tZW50KCk/LmlkKSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgY29udGVudDogdGhpcy5jb21tZW50Q29udGVudCgpLFxuICAgICAgICAgICAgY29udGVudFR5cGU6ICd0ZXh0JyBhcyBjb25zdCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UudXBkYXRlT25lKHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKSEuaWQsIHBheWxvYWQpO1xuICAgICAgICB0aGlzLmhhc0Nvb2xkb3duLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgIC4uLnRoaXMucGF5bG9hZCgpLFxuICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuY29tbWVudENvbnRlbnQoKSxcbiAgICAgICAgICBjb250ZW50VHlwZTogJ3RleHQnIGFzIGNvbnN0LFxuICAgICAgICAgIGlzUHJpdmF0ZTogaXNQcml2YXRlLFxuICAgICAgICAgIHJlcGx5SWQ6IHRoaXMuYWN0aXZlUmVwbHlDb21tZW50KCk/LmlkID8/IG51bGwsXG4gICAgICAgIH07XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5pbnNlcnRPbmUocGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuYWN0aXZlUmVwbHlDb21tZW50LnNldCh1bmRlZmluZWQpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZWxvYWQgY29tbWVudHMgdG8gZ2V0IHRoZSB1cGRhdGVkIGxpc3Qgd2l0aCBwcm9wZXIgaGllcmFyY2h5XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UucXVlcnkodGhpcy5nZXRQYXlsb2FkKCkpO1xuICAgICAgdGhpcy5jb21tZW50cy5zZXQocmVzcG9uc2UuaXRlbXMpO1xuXG4gICAgICB0aGlzLmNvbW1lbnRDb250ZW50LnNldCgnJyk7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbC1lZGl0b3InKVswXS5pbm5lckhUTUwgPSAnJztcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KGZhbHNlKTtcbiAgICAgIH0sIDEwMDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJtaXR0aW5nIGNvbW1lbnQ6JywgZXJyb3IpO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGNvbnRlbnQ6IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBlcnJvciA6ICdGYWlsZWQgdG8gc3VibWl0IGNvbW1lbnQuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsTWFpbigpIHtcbiAgICBjb25zdCBjb21tZW50ID0gdGhpcy5pc1JlcGx5aW5nTW9kZSgpID8gdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQoKSA6IHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKTtcbiAgICBpZiAoY29tbWVudCAmJiBjb21tZW50LmlkKSB7XG4gICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbW1lbnQuaWQpO1xuICAgICAgaWYgKGVsKSB7XG4gICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBlbD8uZmlyc3RFbGVtZW50Q2hpbGQ/LmNoaWxkcmVuWzFdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgIGNvbnN0IHByZXZCZyA9IGNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZDtcbiAgICAgICAgICBjb250ZW50LnN0eWxlLmJvcmRlclJhZGl1cyA9ICcwLjI1cmVtJztcbiAgICAgICAgICBjb250ZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnYmFja2dyb3VuZCAxcyBlYXNlLWluLW91dCc7XG4gICAgICAgICAgY29udGVudC5zdHlsZS5iYWNrZ3JvdW5kID0gYHJnYmEodmFyKC0tYXgtY29sb3Itb24tc3VyZmFjZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKWA7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb250ZW50LnN0eWxlLmJhY2tncm91bmQgPSBwcmV2QmcgfHwgJ3JnYmEoMCwgMCwgMCwgMCknO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2FsY0RlZnJlbmV0VGltZShkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRhdGUgPyBEYXRlLm5vdygpIC0gZGF0ZS5nZXRUaW1lKCkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1tdC0yXCI+XG4gIDxheC1jb21tZW50LWNvbnRhaW5lcj5cbiAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtcHktMTIgYXgtYmctbGlnaHRlc3QgYXgtcHgtNVwiPlxuICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC1taW4tdy0xNiBheC1oLTE2IGF4LXJvdW5kZWQtZnVsbCBheC1tZS00XCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdy1mdWxsXCI+XG4gICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtNiBheC1yb3VuZGVkXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0yIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctOC8xMiBheC1oLTIgYXgtcm91bmRlZC1mdWxsXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIGlmICghaXNMb2FkaW5nKCkgJiYgY29tbWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICA8YXgtY29tbWVudC12aWV3IGNsYXNzPVwiYXgtYmctbGlnaHRlc3RcIj5cbiAgICAgICAgQGZvciAoY29tbWVudCBvZiBjb21tZW50cygpOyB0cmFjayBjb21tZW50LmlkKSB7XG4gICAgICAgICAgPGF4LWNvbW1lbnQtaXRlbSBbaWRdPVwiY29tbWVudC5pZCFcIiBbcmVwbHlDb3VudF09XCJjb21tZW50LnJlcGxpZXM/Lmxlbmd0aCA/PyAwXCI+XG4gICAgICAgICAgICA8YXgtYXZhdGFyIFtjb2xvcl09XCJhdmF0YXJDb25maWcoKS5jb2xvclwiIFtzaGFwZV09XCJhdmF0YXJDb25maWcoKS5sb29rXCI+XG4gICAgICAgICAgICAgIEBpZiAoY2hlY2tJbWFnZUV4aXN0cyhjb21tZW50LmlkISkgJiYgY29tbWVudC5hdXRob3IgJiYgZXh0cmFjdEluaXRpYWxzKGNvbW1lbnQuYXV0aG9yKSAhPT0gJz8nKSB7XG4gICAgICAgICAgICAgICAgPGF4LWltYWdlIChvbkVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoY29tbWVudC5pZCEpXCIgW3NyY109XCInJ1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIDwvYXgtaW1hZ2U+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxheC10ZXh0PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LWJhc2UgYXgtb3ZlcmZsb3ctaGlkZGVuXCI+e3sgZXh0cmFjdEluaXRpYWxzKGNvbW1lbnQuYXV0aG9yKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXgtYXZhdGFyPlxuICAgICAgICAgICAgPGF4LXRpdGxlPnt7IGV4dHJhY3RJbml0aWFscyhjb21tZW50LmF1dGhvcikgfX08L2F4LXRpdGxlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtZGF0ZT57eyBjYWxjRGVmcmVuZXRUaW1lKGNvbW1lbnQuY3JlYXRlZEF0KSB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19IDwvYXgtY29tbWVudC1kYXRlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cIm5ldXRyYWxcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tbW9yZS1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkVkaXRcIiBjb2xvcj1cIm5ldXRyYWxcIiAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoY29tbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtZWRpdFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuXG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkRlbGV0ZVwiIGNvbG9yPVwiZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZUNvbW1lbnQoY29tbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgPC9heC1jb21tZW50LW1lbnUtb3B0aW9ucz5cbiAgICAgICAgICAgIDxheC1jb250ZW50IFtpbm5lckhUTUxdPVwic2FuaXRpemVIdG1sKGNvbW1lbnQubWVzc2FnZS5jb250ZW50KVwiPjwvYXgtY29udGVudD5cbiAgICAgICAgICAgIDxheC1jb21tZW50LWxpa2UgKGNsaWNrKT1cInRvZ2dsZUxpa2UoY29tbWVudClcIiBbbGlrZWRdPVwiY29tbWVudC5pc0xpa2VkIVwiPlxuICAgICAgICAgICAgICB7eyBjb21tZW50LnJlYWN0aW9uc0NvdW50IH19XG4gICAgICAgICAgICA8L2F4LWNvbW1lbnQtbGlrZT5cbiAgICAgICAgICAgIDxheC1jb21tZW50LXJlcGx5LXRleHQgKGNsaWNrKT1cInJlcGx5TWVzc2FnZShjb21tZW50KVwiPjwvYXgtY29tbWVudC1yZXBseS10ZXh0PlxuICAgICAgICAgICAgQGZvciAocmVwbHkgb2YgY29tbWVudC5yZXBsaWVzOyB0cmFjayByZXBseS5pZCkge1xuICAgICAgICAgICAgICA8YXgtY29tbWVudC1pdGVtIFtpZF09XCJyZXBseS5pZFwiPlxuICAgICAgICAgICAgICAgIDxheC1hdmF0YXIgW2NvbG9yXT1cImF2YXRhckNvbmZpZygpLmNvbG9yXCIgW3NoYXBlXT1cImF2YXRhckNvbmZpZygpLmxvb2tcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocmVwbHkgJiYgY2hlY2tJbWFnZUV4aXN0cyhyZXBseS5pZCEpICYmIHJlcGx5LmF1dGhvciAmJiBleHRyYWN0SW5pdGlhbHMocmVwbHkuYXV0aG9yKSAhPT0gJz8nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC1pbWFnZSAob25FcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKHJlcGx5LmlkISlcIiBbc3JjXT1cIicnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWltYWdlPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1iYXNlIGF4LW92ZXJmbG93LWhpZGRlblwiPnt7IGV4dHJhY3RJbml0aWFscyhyZXBseS5hdXRob3IpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9heC1hdmF0YXI+XG4gICAgICAgICAgICAgICAgPGF4LXRpdGxlPnt7IGV4dHJhY3RJbml0aWFscyhyZXBseS5hdXRob3IpIH19PC9heC10aXRsZT5cbiAgICAgICAgICAgICAgICA8YXgtY29tbWVudC1kYXRlPnt7IGNhbGNEZWZyZW5ldFRpbWUocmVwbHkuY3JlYXRlZEF0KSB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19IDwvYXgtY29tbWVudC1kYXRlPlxuICAgICAgICAgICAgICAgIDxheC1jb21tZW50LW1lbnUtb3B0aW9ucz5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIGxvb2s9XCJibGFua1wiIGNvbG9yPVwibmV1dHJhbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tbW9yZS1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJFZGl0XCIgY29sb3I9XCJuZXV0cmFsXCIgKGNsaWNrKT1cImVkaXRNZXNzYWdlKGNvbW1lbnQsIHJlcGx5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWVkaXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRGVsZXRlXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiZGVsZXRlUmVwbHkoY29tbWVudCwgcmVwbHkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICAgIDxheC1jb250ZW50IFtpbm5lckhUTUxdPVwic2FuaXRpemVIdG1sKHJlcGx5Lm1lc3NhZ2UuY29udGVudClcIj48L2F4LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShjb21tZW50LCByZXBseSlcIiBbbGlrZWRdPVwicmVwbHkuaXNMaWtlZCFcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHJlcGx5LnJlYWN0aW9uc0NvdW50IH19XG4gICAgICAgICAgICAgICAgPC9heC1jb21tZW50LWxpa2U+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtcmVwbHktdGV4dCAoY2xpY2spPVwicmVwbHlNZXNzYWdlKGNvbW1lbnQsIHJlcGx5KVwiPjwvYXgtY29tbWVudC1yZXBseS10ZXh0PlxuICAgICAgICAgICAgICA8L2F4LWNvbW1lbnQtaXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWNvbW1lbnQtaXRlbT5cbiAgICAgICAgfVxuICAgICAgPC9heC1jb21tZW50LXZpZXc+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1qdXN0aWZ5LWNlbnRlciBheC1pdGVtcy1jZW50ZXIgYXgtcC0xMFwiPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtbXgtYXV0b1wiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIHdpZHRoPVwiMTU0XCJcbiAgICAgICAgICAgIGhlaWdodD1cIjE2MVwiXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE1NCAxNjFcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMC4wNjE2NDU1IDg0LjQyNjhDMC4wNjE2NDU1IDQyLjAyMTMgMzQuNDM1IDcuODM3NjUgNzYuNjUwNyA3LjgzNzY1QzExOC44MDMgNy44Mzc2NSAxNTMuMjI0IDQyLjAwNTUgMTUzLjIyNCA4NC40MjY4QzE1My4yMjQgMTAyLjQyIDE0Ny4wMjYgMTE4Ljk3NCAxMzYuNjIyIDEzMi4wMzRDMTIyLjI4MiAxNTAuMTM4IDEwMC4zNjcgMTYxIDc2LjY1MDcgMTYxQzUyLjc3NTkgMTYxIDMwLjk4ODIgMTUwLjA1OSAxNi42NjMzIDEzMi4wMzRDNi4yNTk2MSAxMTguOTc0IDAuMDYxNjQ1NSAxMDIuNDIgMC4wNjE2NDU1IDg0LjQyNjhaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiNFRUYyRkZcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNOTYuODE4OSAwLjYzMjQ5OEw5Ni44MTg5IDAuNjMyMzg0TDk2LjgwODMgMC42MzA5NTRDOTYuMjAzNCAwLjU0OTU4MSA5NS41OTMxIDAuNSA5NC45Nzg3IDAuNUgyOS4zMzhDMjIuNzExMiAwLjUgMTcuMzM5NCA1Ljg0NDU1IDE3LjMzOTQgMTIuNDQ3M1YxNDIuNzE1QzE3LjMzOTQgMTQ5LjMxOCAyMi43MTEyIDE1NC42NjIgMjkuMzM4IDE1NC42NjJIMTIzLjk0OEMxMzAuNTkxIDE1NC42NjIgMTM1Ljk0NiAxNDkuMzE3IDEzNS45NDYgMTQyLjcxNVYzOC45MzA5QzEzNS45NDYgMzguMDI0NCAxMzUuODQ3IDM3LjEzMzQgMTM1LjY0OCAzNi4yNTg2TDEzNS42NDggMzYuMjU4NEMxMzUuMTE3IDMzLjkzMDkgMTMzLjg3NCAzMS43Njg2IDEzMi4wNjYgMzAuMTMzM0MxMzIuMDY2IDMwLjEzMzEgMTMyLjA2NSAzMC4xMzI5IDEzMi4wNjUgMzAuMTMyN0wxMDMuMDY4IDMuNjUyMDNDMTAzLjA2OCAzLjY1MTkgMTAzLjA2NyAzLjY1MTc3IDEwMy4wNjcgMy42NTE2NEMxMDEuMzExIDIuMDM1MjYgOTkuMTM5NiAwLjk5NTU1MiA5Ni44MTg5IDAuNjMyNDk4WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiNFNUU3RUJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxlbGxpcHNlIGN4PVwiODAuMDYxOFwiIGN5PVwiODFcIiByeD1cIjI4LjAzNDJcIiByeT1cIjI4LjAzNDJcIiBmaWxsPVwiI0VFRjJGRlwiIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTk5LjIzOTMgNjEuMzA2MUw5OS4yMzkxIDYxLjMwNThDODguNDk4IDUwLjU4MDggNzEuMTA5MiA1MC41ODA0IDYwLjM4MzUgNjEuMzA2MUM0OS42NDIzIDcyLjAzMTYgNDkuNjQyMiA4OS40MzYxIDYwLjM4MzIgMTAwLjE2MkM3MS4xMDkgMTEwLjkwMyA4OC40OTgyIDExMC45MDMgOTkuMjM5MyAxMDAuMTYyQzEwOS45NjUgODkuNDM2MyAxMDkuOTY1IDcyLjAzMTcgOTkuMjM5MyA2MS4zMDYxWk0xMDUuODYzIDU0LjY4MzJDMTIwLjI0OSA2OS4wNjk1IDEyMC4yNDkgOTIuMzk4NSAxMDUuODYzIDEwNi43ODVDOTEuNDYwNSAxMjEuMTcxIDY4LjE0NjggMTIxLjE3MSA1My43NDQ2IDEwNi43ODVDMzkuMzU4MiA5Mi4zOTg3IDM5LjM1ODIgNjkuMDY5MyA1My43NDQ2IDU0LjY4M0M2OC4xNDY4IDQwLjI5NjUgOTEuNDYwNSA0MC4yOTY2IDEwNS44NjMgNTQuNjgzMlpcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjRTVFN0VCXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTExMC43ODIgMTE5LjI2N0wxMDIuMDE2IDExMC40OTJDMTA0Ljg4OCAxMDguMjY3IDEwNy40NzYgMTA1LjY1MSAxMDkuNTY0IDEwMi45NTVMMTE4LjMyOSAxMTEuNzI5TDExMC43ODIgMTE5LjI2N1pcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjRTVFN0VCXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTEzOS4xMjIgMTI1Ljc4MUwxMzkuMTIyIDEyNS43OEwxMjMuMzEzIDEwOS45ODhDMTIzLjMxMyAxMDkuOTg3IDEyMy4zMTMgMTA5Ljk4NyAxMjMuMzEyIDEwOS45ODZDMTIxLjk5NiAxMDguNjUzIDExOS44NDkgMTA4LjY1NyAxMTguNTIxIDEwOS45ODVMMTE4Ljg3MSAxMTAuMzM1TDExOC41MjEgMTA5Ljk4NUwxMDkuMDQ3IDExOS40NTlDMTA3LjczMSAxMjAuNzc1IDEwNy43MzUgMTIyLjkxOCAxMDkuMDQ0IDEyNC4yNDdMMTA5LjA0NyAxMjQuMjQ5TDEyNC44NTggMTQwLjA2QzEyOC43ODkgMTQzLjk5MiAxMzUuMTkxIDE0My45OTIgMTM5LjEyMiAxNDAuMDZDMTQzLjA2OSAxMzYuMTEzIDE0My4wNjkgMTI5LjcyOCAxMzkuMTIyIDEyNS43ODFaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiNBNUI0RkNcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjODE4Q0Y4XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTgzLjE4NSA4Ny4yMjg1QzgyLjUzODcgODcuMjI4NSA4Mi4wMDI3IDg2LjY5MjYgODIuMDAyNyA4Ni4wMzA1QzgyLjAwMjcgODMuMzgyMSA3Ny45OTg3IDgzLjM4MjEgNzcuOTk4NyA4Ni4wMzA1Qzc3Ljk5ODcgODYuNjkyNiA3Ny40NjI3IDg3LjIyODUgNzYuODAwNiA4Ny4yMjg1Qzc2LjE1NDMgODcuMjI4NSA3NS42MTgzIDg2LjY5MjYgNzUuNjE4MyA4Ni4wMzA1Qzc1LjYxODMgODAuMjI5NCA4NC4zODMxIDgwLjI0NTEgODQuMzgzMSA4Ni4wMzA1Qzg0LjM4MzEgODYuNjkyNiA4My44NDcxIDg3LjIyODUgODMuMTg1IDg3LjIyODVaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNOTMuMzUyOCA3Ny4wOTI2SDg4LjQwM0M4Ny43NDA5IDc3LjA5MjYgODcuMjA0OSA3Ni41NTY3IDg3LjIwNDkgNzUuODk0NkM4Ny4yMDQ5IDc1LjI0ODMgODcuNzQwOSA3NC43MTIzIDg4LjQwMyA3NC43MTIzSDkzLjM1MjhDOTQuMDE0OSA3NC43MTIzIDk0LjU1MDkgNzUuMjQ4MyA5NC41NTA5IDc1Ljg5NDZDOTQuNTUwOSA3Ni41NTY3IDk0LjAxNDkgNzcuMDkyNiA5My4zNTI4IDc3LjA5MjZaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNNzEuNTk4NyA3Ny4wOTI1SDY2LjY0ODhDNjUuOTg2NyA3Ny4wOTI1IDY1LjQ1MDcgNzYuNTU2NSA2NS40NTA3IDc1Ljg5NDVDNjUuNDUwNyA3NS4yNDgxIDY1Ljk4NjcgNzQuNzEyMiA2Ni42NDg4IDc0LjcxMjJINzEuNTk4N0M3Mi4yNDUgNzQuNzEyMiA3Mi43ODEgNzUuMjQ4MSA3Mi43ODEgNzUuODk0NUM3Mi43ODEgNzYuNTU2NSA3Mi4yNDUgNzcuMDkyNSA3MS41OTg3IDc3LjA5MjVaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjIxLjUxMjhcIiB3aWR0aD1cIjQxLjAyNTZcIiBoZWlnaHQ9XCIyLjczNTA0XCIgcng9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjM4LjM1MjJcIiB5PVwiMTMzLjY1XCIgd2lkdGg9XCI1NC43MDA5XCIgaGVpZ2h0PVwiNS40NzAwOVwiIHJ4PVwiMi43MzUwNFwiIGZpbGw9XCIjQTVCNEZDXCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjI5LjcxNzlcIiB3aWR0aD1cIjEzLjY3NTJcIiBoZWlnaHQ9XCIyLjczNTA0XCIgcng9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjU2LjEzXCIgY3k9XCIzMS4wODU0XCIgcj1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNjEuNjAwMVwiIGN5PVwiMzEuMDg1NFwiIHI9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjY3LjA3MDJcIiBjeT1cIjMxLjA4NTRcIiByPVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtdGV4dC1uZXV0cmFsLTYwMCBheC1mb250LXNlbWlib2xkIGF4LWxlYWRpbmctbG9vc2UgYXgtcGItMlwiPlxuICAgICAgICAgICAgICBUaGVyZSBpcyBubyBDb21tZW50IVxuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvYXgtY29tbWVudC1jb250YWluZXI+XG4gIDxheC1mb3JtPlxuICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgPGRpdj5cbiAgICAgICAgQGlmIChpc1JlcGx5aW5nTW9kZSgpIHx8IGlzRWRpdGluZ01vZGUoKSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtcm91bmRlZC1iLW5vbmUgYXgtYm9yZGVyIGF4LWJvcmRlci1iLTAgYXgtcm91bmRlZC1sZyBheC1iZy1vbi1zdXJmYWNlIGF4LXB4LTYgYXgtcHktMyBheC13LWZ1bGwgYXgtaXRlbXMtY2VudGVyIGF4LW92ZXJmbG93LWhpZGRlbiBheC10ZXh0LXNtIGF4LWxlYWRpbmctbm9uZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2Nyb2xsTWFpbigpXCIgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktc3RhcnQgYXgtaXRlbXMtY2VudGVyIGF4LWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImlzUmVwbHlpbmdNb2RlKCkgPyAnZmEtcmVwbHknIDogJ2ZhLXBlbidcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgYXgtdGV4dC1wcmltYXJ5LTUwMCBkYXJrOmF4LXRleHQtcHJpbWFyeS0zMDAgYXgtdGV4dC0yeGwgYXgtbWUtNFwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWFsaWduLW1pZGRsZSBheC1sZWFkaW5nLTQgYXgtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1wcmltYXJ5LTUwMCBkYXJrOmF4LXRleHQtcHJpbWFyeS0zMDBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGlzUmVwbHlpbmdNb2RlKCkgPyAnUmVwbHkgdG8gJyA6ICdFZGl0IE1lc3NhZ2UnIH19XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpc1JlcGx5aW5nTW9kZSgpID8gZXh0cmFjdEluaXRpYWxzKGFjdGl2ZVJlcGx5Q29tbWVudCgpPy5hdXRob3IpIDogJycgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICBpc1JlcGx5aW5nTW9kZSgpXG4gICAgICAgICAgICAgICAgICAgICAgPyBzYW5pdGl6ZUh0bWwoYWN0aXZlUmVwbHlDb21tZW50KCk/Lm1lc3NhZ2U/LmNvbnRlbnQgPz8gJycpXG4gICAgICAgICAgICAgICAgICAgICAgOiBzYW5pdGl6ZUh0bWwoYWN0aXZlRWRpdENvbW1lbnQoKT8ubWVzc2FnZT8uY29udGVudCA/PyAnJylcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj48aSAoY2xpY2spPVwicmVzZXRSZXBseUVkaXRTdGF0ZSgpXCIgY2xhc3M9XCJmYS1zb2xpZCBheC10ZXh0LTJ4bCBmYS14bWFyayBheC1jdXJzb3ItcG9pbnRlclwiPjwvaT48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8YXgtd3lzaXd5Zy1jb250YWluZXIgI3cgW2xvb2tdPVwid3lzaXd5Z09wdGlvbnMoKS5sb29rXCIgWyhuZ01vZGVsKV09XCJjb21tZW50Q29udGVudFwiPlxuICAgICAgICAgIDxheC13eXNpd3lnLXZpZXcgY2xhc3M9XCJheC1taW4taC0yOFwiPjwvYXgtd3lzaXd5Zy12aWV3PlxuICAgICAgICAgIDxheC10b29sYmFyPlxuICAgICAgICAgICAgPGF4LWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWhpc3Rvcnk+PC9heC13eXNpd3lnLWhpc3Rvcnk+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWZvbnQtc3R5bGU+PC9heC13eXNpd3lnLWZvbnQtc3R5bGU+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWNvbG9ycz48L2F4LXd5c2l3eWctY29sb3JzPlxuICAgICAgICAgICAgICA8YXgtd3lzaXd5Zy1saXN0PjwvYXgtd3lzaXd5Zy1saXN0PlxuICAgICAgICAgICAgICA8YXgtd3lzaXd5Zy1hbGlnbm1lbnQ+PC9heC13eXNpd3lnLWFsaWdubWVudD5cbiAgICAgICAgICAgIDwvYXgtY29udGVudD5cbiAgICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICAgIDxheC1kcm9wZG93bi1idXR0b25cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaGFzQ29vbGRvd24oKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBtb2RlPVwic3BsaXRcIlxuICAgICAgICAgICAgICAgIHRleHQ9XCJTZW5kXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJzdWJtaXRDb21tZW50KClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChpc1N1Ym1pdHRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSAoY2xpY2spPVwic3VibWl0Q29tbWVudCh0cnVlKVwiIHRleHQ9XCJTZW5kIFByaXZhdGUgLi4uXCIgbmFtZT1cInByaXZhdGVcIiBkYXRhPVwicHJpdmF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1yZWd1bGFyIGZhLXVzZXItc2VjcmV0XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgICAgIDwvYXgtdG9vbGJhcj5cbiAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHJ1bGU9XCJjYWxsYmFja1wiIFtvcHRpb25zXT1cInsgdmFsaWRhdGU6IHZhbGlkYXRlQ29udGVudCB9XCI+PC9heC12YWxpZGF0aW9uLXJ1bGU+XG4gICAgICAgIDwvYXgtd3lzaXd5Zy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LWZvcm0tZmllbGQ+XG4gIDwvYXgtZm9ybT5cbjwvZGl2PlxuIl19","import { AXWysiwygContainerComponent, AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild } from '@angular/core';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXMCommentService } from '../../../comment/comment.service';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXMCommentLookupPopup } from '../../../comment/comment-lookup-popup.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/avatar\";\nimport * as i2 from \"@acorex/components/skeleton\";\nimport * as i3 from \"@acorex/components/comment\";\nimport * as i4 from \"@acorex/components/button\";\nimport * as i5 from \"@acorex/components/image\";\nimport * as i6 from \"@acorex/components/loading\";\nimport * as i7 from \"@acorex/components/dropdown\";\nimport * as i8 from \"@acorex/components/decorators\";\nimport * as i9 from \"@acorex/components/wysiwyg\";\nimport * as i10 from \"@acorex/components/toolbar\";\nimport * as i11 from \"@acorex/components/dropdown-button\";\nimport * as i12 from \"@acorex/components/form\";\nimport * as i13 from \"@angular/forms\";\nimport * as i14 from \"@acorex/core/format\";\nexport class AXMCommentWidgetViewComponent extends AXPLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hasCooldown = signal(false);\n this.commentContent = signal('');\n this.isSubmitting = signal(false);\n this.isReplyingMode = signal(false);\n this.isEditingMode = signal(false);\n this.isLoading = signal(true);\n this.failedImageIds = signal([]);\n this.activeReplyComment = signal(undefined);\n this.activeEditComment = signal(undefined);\n this.wysiwygEditor = viewChild.required('w');\n this.commentService = inject(AXMCommentService);\n this.platform = inject(AXPlatform);\n this.popupService = inject(AXPopupService);\n this.toastService = inject(AXToastService);\n this.dialogService = inject(AXDialogService);\n this.sanitize = inject(DomSanitizer);\n this.getPayload = computed(() => ({\n params: this.payload(),\n skip: 0,\n take: 10,\n }));\n this.payload = computed(() => ({\n roomType: 'default',\n entityId: this.options().entityId,\n instanceId: this.options().instanceId,\n }));\n this.comments = signal([]);\n this.wysiwyg = viewChild('w');\n this.wysiwygOptions = signal({\n look: 'solid',\n });\n this.avatarConfig = signal({\n color: 'primary',\n look: 'rounded',\n type: 'solid', // 'image' | 'text' | 'icon' | 'default'\n });\n this.validateContent = (content) => {\n let isValid = true;\n if (!content || content === '<p><br></p>') {\n isValid = false;\n }\n return {\n rule: 'callback',\n result: isValid,\n message: isValid ? '' : 'Please fill the content',\n value: content,\n };\n };\n }\n ngOnInit() {\n super.ngOnInit();\n this.loadComments();\n }\n sanitizeHtml(htmlContent) {\n if (!htmlContent)\n return this.sanitize.bypassSecurityTrustHtml('');\n return this.sanitize.bypassSecurityTrustHtml(htmlContent);\n }\n handleImageError(imageId) {\n this.failedImageIds.update((ids) => [...ids, imageId]);\n }\n checkImageExists(imageId) {\n return !this.failedImageIds().includes(imageId);\n }\n extractInitials(name) {\n if (!name)\n return '?';\n // Handle the case where name is an object with fullName property\n const nameStr = typeof name === 'object' && name.fullName ? name.fullName : String(name);\n const words = nameStr.split(' ');\n const initials = words.map((word) => word.charAt(0).toUpperCase());\n return initials.join('');\n }\n async loadComments() {\n this.isLoading.set(true);\n try {\n const response = await this.commentService.query(this.getPayload());\n this.comments.set(response.items);\n }\n catch (error) {\n console.error('Failed to load comments:', error);\n this.toastService.show({\n content: 'Failed to load comments. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.comments.set([]);\n }\n finally {\n setTimeout(() => {\n this.isLoading.set(false);\n }, 250);\n }\n }\n editMessage(comment, reply) {\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.isEditingMode.set(true);\n this.activeEditComment.set(comment);\n const contentToEdit = reply ? reply.message?.content : comment.message?.content;\n this.commentContent.set(contentToEdit || '');\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n replyMessage(comment, reply) {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(true);\n this.activeReplyComment.set(comment);\n if (reply) {\n const author = reply.author.fullName || reply.author.id;\n const mention = `<a data-id=\"${reply.id}\">@${author}</a> `;\n this.commentContent.set(mention);\n this.wysiwyg()?.focus();\n document.getElementsByClassName('ql-editor')[0].innerHTML = mention;\n }\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n async deleteComment(comment) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this comment?',\n title: 'Delete Comment',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n if (comment.id) {\n await this.commentService.deleteOne(comment.id);\n this.removeMessageById(comment.id);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n if (this.isEditingMode() && this.activeEditComment()?.id === comment.id) {\n this.resetReplyEditState();\n }\n dialog.close();\n }\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n async deleteReply(comment, reply) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this reply?',\n title: 'Delete Reply',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n if (reply.id) {\n await this.commentService.deleteOne(reply.id);\n this.removeMessageById(comment.id, reply.id);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n dialog.close();\n }\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n resetReplyEditState() {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n }\n async toggleLike(comment, reply) {\n try {\n if (reply) {\n if (reply.id) {\n this.updateLikeStatus(comment.id, reply.id);\n await this.commentService.like(reply.id);\n }\n }\n else {\n if (comment.id) {\n this.updateLikeStatus(comment.id);\n await this.commentService.like(comment.id);\n }\n }\n }\n catch (error) {\n console.error('Failed to toggle like:', error);\n // Revert the optimistic update if the server call fails\n if (reply && reply.id) {\n this.updateLikeStatus(comment.id, reply.id);\n }\n else if (comment.id) {\n this.updateLikeStatus(comment.id);\n }\n }\n }\n updateLikeStatus(commentId, replyId) {\n this.comments.update((commentsList) => {\n return commentsList.map((comment) => {\n if (comment.id === commentId) {\n if (replyId && comment.replies) {\n const updatedReplies = comment.replies.map((reply) => reply.id === replyId\n ? {\n ...reply,\n isLiked: !reply.isLiked,\n reactionsCount: reply.isLiked && reply.reactionsCount !== undefined\n ? reply.reactionsCount - 1\n : (reply.reactionsCount || 0) + 1,\n }\n : reply);\n return {\n ...comment,\n replies: updatedReplies,\n };\n }\n else {\n return {\n ...comment,\n isLiked: !comment.isLiked,\n reactionsCount: comment.isLiked && comment.reactionsCount !== undefined\n ? comment.reactionsCount - 1\n : (comment.reactionsCount || 0) + 1,\n };\n }\n }\n return comment;\n });\n });\n }\n removeMessageById(commentId, replyId) {\n if (replyId) {\n // Remove a reply from a comment\n this.comments.update((commentsList) => commentsList.map((comment) => {\n if (comment.id === commentId && comment.replies) {\n return {\n ...comment,\n replies: comment.replies.filter((reply) => reply.id !== replyId),\n };\n }\n return comment;\n }));\n }\n else {\n // Remove a whole comment\n this.comments.update((commentsList) => commentsList.filter((comment) => comment.id !== commentId));\n }\n }\n async submitComment(isPrivate = false) {\n if (!this.validateContent(this.commentContent()).result) {\n return;\n }\n this.isSubmitting.set(true);\n let memberLookup;\n if (isPrivate) {\n const popupConfig = {\n header: true,\n size: 'md',\n draggable: true,\n hasBackdrop: true,\n closeButton: true,\n closeOnBackdropClick: false,\n };\n const popup = await this.popupService.open(AXMCommentLookupPopup, popupConfig);\n memberLookup = popup.data?.data?.lookup;\n }\n try {\n if (this.isEditingMode() && this.activeEditComment()?.id) {\n const payload = {\n message: {\n content: this.commentContent(),\n contentType: 'text',\n },\n };\n await this.commentService.updateOne(this.activeEditComment().id, payload);\n this.hasCooldown.set(true);\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n }\n else {\n const payload = {\n ...this.payload(),\n content: this.commentContent(),\n contentType: 'text',\n isPrivate: isPrivate,\n replyId: this.activeReplyComment()?.id ?? null,\n };\n await this.commentService.insertOne(payload);\n this.hasCooldown.set(true);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n }\n // Reload comments to get the updated list with proper hierarchy\n const response = await this.commentService.query(this.getPayload());\n this.comments.set(response.items);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n setTimeout(() => {\n this.hasCooldown.set(false);\n }, 1000);\n }\n catch (error) {\n console.error('Error submitting comment:', error);\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to submit comment. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n scrollMain() {\n const comment = this.isReplyingMode() ? this.activeReplyComment() : this.activeEditComment();\n if (comment && comment.id) {\n const el = document.getElementById(comment.id);\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n const content = el?.firstElementChild?.children[1];\n if (content) {\n const prevBg = content.style.background;\n content.style.borderRadius = '0.25rem';\n content.style.transition = 'background 1s ease-in-out';\n content.style.background = `rgba(var(--ax-color-on-surface), var(--tw-bg-opacity))`;\n setTimeout(() => {\n content.style.background = prevBg || 'rgba(0, 0, 0, 0)';\n }, 1000);\n }\n }\n }\n }\n calcDefrenetTime(date) {\n return date ? Date.now() - date.getTime() : undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMCommentWidgetViewComponent, isStandalone: true, selector: \"axm-comment-widget-view\", viewQueries: [{ propertyName: \"wysiwygEditor\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }, { propertyName: \"wysiwyg\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-mt-2 ax-p-2\\\">\\n <ax-comment-container>\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item [id]=\\\"comment.id!\\\" [replyCount]=\\\"comment.replies?.length ?? 0\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (checkImageExists(comment.id!) && comment.author && extractInitials(comment.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(comment.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(comment.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(comment.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(comment.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"comment.isLiked!\\\">\\n {{ comment.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment)\\\"></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (reply && checkImageExists(reply.id!) && reply.author && extractInitials(reply.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(reply.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(reply.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(reply.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(reply.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteReply(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment, reply)\\\" [liked]=\\\"reply.isLiked!\\\">\\n {{ reply.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment, reply)\\\"></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? extractInitials(activeReplyComment()?.author) : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment(true)\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\"ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\\n\"], dependencies: [{ kind: \"component\", type: AXWysiwygContainerComponent, selector: \"ax-wysiwyg-container\", inputs: [\"look\", \"placeHolder\"], outputs: [\"onValueChanged\"] }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"component\", type: i1.AXAvatarComponent, selector: \"ax-avatar\", inputs: [\"color\", \"size\", \"shape\", \"look\"], outputs: [\"sizeChange\"] }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i2.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXCommentModule }, { kind: \"component\", type: i3.AXCommentViewComponent, selector: \"ax-comment-view\" }, { kind: \"component\", type: i3.AXCommentContainerComponent, selector: \"ax-comment-container\" }, { kind: \"component\", type: i3.AxCommentItemComponent, selector: \"ax-comment-item\", inputs: [\"replyCount\"] }, { kind: \"component\", type: i3.AXCommentLikeComponent, selector: \"ax-comment-like\", inputs: [\"liked\"], outputs: [\"likedChange\", \"onLiked\"] }, { kind: \"component\", type: i3.AXMenuOptionsComponent, selector: \"ax-comment-menu-options\" }, { kind: \"component\", type: i3.AXCommentReplyTextComponent, selector: \"ax-comment-reply-text\" }, { kind: \"component\", type: i3.AXCommentDateComponent, selector: \"ax-comment-date\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i4.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: i4.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i4.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXImageModule }, { kind: \"component\", type: i5.AXImageComponent, selector: \"ax-image\", inputs: [\"width\", \"height\", \"overlayMode\", \"src\", \"alt\", \"priority\", \"lazy\"], outputs: [\"onLoad\", \"onError\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i6.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i7.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i8.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i8.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXWysiwygModule }, { kind: \"component\", type: i9.AXWysiwygViewComponent, selector: \"ax-wysiwyg-view\", inputs: [\"class\"] }, { kind: \"component\", type: i9.AXWysiwygAlignmentComponent, selector: \"ax-wysiwyg-alignment\" }, { kind: \"component\", type: i9.AXWysiwygColorsComponent, selector: \"ax-wysiwyg-colors\" }, { kind: \"component\", type: i9.AXWysiwygFontStyleComponent, selector: \"ax-wysiwyg-font-style\" }, { kind: \"component\", type: i9.AXWysiwygHistoryComponent, selector: \"ax-wysiwyg-history\" }, { kind: \"component\", type: i9.AXWysiwygListComponent, selector: \"ax-wysiwyg-list\" }, { kind: \"ngmodule\", type: AXToolBarModule }, { kind: \"component\", type: i10.AXToolBarComponent, selector: \"ax-toolbar\" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"component\", type: i11.AXDropdownButtonComponent, selector: \"ax-dropdown-button\", inputs: [\"disabled\", \"size\", \"color\", \"look\", \"text\", \"type\", \"mode\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"lookChange\", \"colorChange\", \"disabledChange\"] }, { kind: \"ngmodule\", type: AXValidationModule }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i12.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i12.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"directive\", type: i12.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i13.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i13.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"pipe\", type: i14.AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-comment-widget-view', imports: [\n AXWysiwygContainerComponent,\n AXAvatarModule,\n AXConversationModule,\n AXSkeletonModule,\n AXCommentModule,\n AXButtonModule,\n AXImageModule,\n AXLoadingModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXWysiwygModule,\n AXToolBarModule,\n AXDropdownModule,\n AXDropdownButtonModule,\n AXValidationModule,\n AsyncPipe,\n AXFormModule,\n FormsModule,\n AXFormatModule,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"ax-mt-2 ax-p-2\\\">\\n <ax-comment-container>\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item [id]=\\\"comment.id!\\\" [replyCount]=\\\"comment.replies?.length ?? 0\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (checkImageExists(comment.id!) && comment.author && extractInitials(comment.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(comment.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(comment.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(comment.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(comment.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"comment.isLiked!\\\">\\n {{ comment.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment)\\\"></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (reply && checkImageExists(reply.id!) && reply.author && extractInitials(reply.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(reply.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(reply.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(reply.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(reply.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteReply(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment, reply)\\\" [liked]=\\\"reply.isLiked!\\\">\\n {{ reply.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment, reply)\\\"></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? extractInitials(activeReplyComment()?.author) : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment(true)\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\"ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvd2lkZ2V0L3NoYXJlL2NvbW1lbnQvY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvd2lkZ2V0L3NoYXJlL2NvbW1lbnQvY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENB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LHNCQUFzQiw2U0FDdEIsa0JBQWtCLDBCQUNsQixTQUFTLDZDQUNULFlBQVksb2NBQ1osV0FBVyxnV0FDWCxjQUFjOzsyRkFlTCw2QkFBNkI7a0JBckN6QyxTQUFTOytCQUVFLHlCQUF5QixXQUMxQjt3QkFDUCwyQkFBMkI7d0JBQzNCLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixTQUFTO3dCQUNULFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxjQUFjO3FCQUNmLG1CQVlnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50LCBBWFd5c2l3eWdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvd3lzaXd5Zyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBPbkluaXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYU3R5bGVMb29rVHlwZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYUG9wdXBDb25maWcsIEFYUG9wdXBTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcHVwJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhQUXVlcnlSZXF1ZXN0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQVhNQ29tbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb21tZW50L2NvbW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1Db21tZW50TWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1lbnQvY29tbWVudC50eXBlJztcblxuaW1wb3J0IHsgQVhBdmF0YXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWENvbW1lbnRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbWVudCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb252ZXJzYXRpb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvaW1hZ2UnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFRvb2xCYXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQVhQTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWE1Db21tZW50TG9va3VwUG9wdXAgfSBmcm9tICcuLi8uLi8uLi9jb21tZW50L2NvbW1lbnQtbG9va3VwLXBvcHVwLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHNlbGVjdG9yOiAnYXhtLWNvbW1lbnQtd2lkZ2V0LXZpZXcnLFxuICBpbXBvcnRzOiBbXG4gICAgQVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIEFYQXZhdGFyTW9kdWxlLFxuICAgIEFYQ29udmVyc2F0aW9uTW9kdWxlLFxuICAgIEFYU2tlbGV0b25Nb2R1bGUsXG4gICAgQVhDb21tZW50TW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYSW1hZ2VNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYRHJvcGRvd25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhXeXNpd3lnTW9kdWxlLFxuICAgIEFYVG9vbEJhck1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhWYWxpZGF0aW9uTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQVhGb3JtYXRNb2R1bGUsXG4gIF0sXG4gIHN0eWxlczogYFxuICAgIGF4LXd5c2l3eWctY29udGFpbmVyIHtcbiAgICAgIC5heC1lZGl0b3ItY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLmF4LWVycm9yLW1lc3NhZ2Uge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICAgIH1cbiAgICB9XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Db21tZW50V2lkZ2V0Vmlld0NvbXBvbmVudCBleHRlbmRzIEFYUExheW91dFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBoYXNDb29sZG93biA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBjb21tZW50Q29udGVudCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICBwcm90ZWN0ZWQgaXNTdWJtaXR0aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzUmVwbHlpbmdNb2RlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzRWRpdGluZ01vZGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gIHByb3RlY3RlZCBmYWlsZWRJbWFnZUlkcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICBwcm90ZWN0ZWQgYWN0aXZlUmVwbHlDb21tZW50ID0gc2lnbmFsPHVuZGVmaW5lZCB8IEFYTUNvbW1lbnRNZXNzYWdlPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgYWN0aXZlRWRpdENvbW1lbnQgPSBzaWduYWw8dW5kZWZpbmVkIHwgQVhNQ29tbWVudE1lc3NhZ2U+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCB3eXNpd3lnRWRpdG9yID0gdmlld0NoaWxkLnJlcXVpcmVkPEFYV3lzaXd5Z0NvbnRhaW5lckNvbXBvbmVudD4oJ3cnKTtcblxuICBwcml2YXRlIGNvbW1lbnRTZXJ2aWNlID0gaW5qZWN0KEFYTUNvbW1lbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybSA9IGluamVjdChBWFBsYXRmb3JtKTtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0U2VydmljZSA9IGluamVjdChBWFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICBzYW5pdGl6ZSA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuXG4gIHByaXZhdGUgZ2V0UGF5bG9hZCA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICAoe1xuICAgICAgICBwYXJhbXM6IHRoaXMucGF5bG9hZCgpLFxuICAgICAgICBza2lwOiAwLFxuICAgICAgICB0YWtlOiAxMCxcbiAgICAgIH0pIGFzIEFYUFF1ZXJ5UmVxdWVzdCxcbiAgKTtcbiAgcGF5bG9hZCA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgcm9vbVR5cGU6ICdkZWZhdWx0JyxcbiAgICBlbnRpdHlJZDogdGhpcy5vcHRpb25zKCkuZW50aXR5SWQsXG4gICAgaW5zdGFuY2VJZDogdGhpcy5vcHRpb25zKCkuaW5zdGFuY2VJZCxcbiAgfSkpO1xuXG4gIHByb3RlY3RlZCBjb21tZW50cyA9IHNpZ25hbDxBWE1Db21tZW50TWVzc2FnZVtdPihbXSk7XG4gIHByaXZhdGUgd3lzaXd5ZyA9IHZpZXdDaGlsZDxBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQ+KCd3Jyk7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmxvYWRDb21tZW50cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHd5c2l3eWdPcHRpb25zID0gc2lnbmFsPHtcbiAgICBsb29rOiBBWFN0eWxlTG9va1R5cGU7XG4gIH0+KHtcbiAgICBsb29rOiAnc29saWQnLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgYXZhdGFyQ29uZmlnID0gc2lnbmFsPHtcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIGxvb2s6ICdzaGFycCcgfCAnc29mdCcgfCAncm91bmRlZCc7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9Pih7XG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBsb29rOiAncm91bmRlZCcsXG4gICAgdHlwZTogJ3NvbGlkJywgLy8gJ2ltYWdlJyB8ICd0ZXh0JyB8ICdpY29uJyB8ICdkZWZhdWx0J1xuICB9KTtcblxuICB2YWxpZGF0ZUNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuXG4gICAgaWYgKCFjb250ZW50IHx8IGNvbnRlbnQgPT09ICc8cD48YnI+PC9wPicpIHtcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bGU6ICdjYWxsYmFjaycsXG4gICAgICByZXN1bHQ6IGlzVmFsaWQsXG4gICAgICBtZXNzYWdlOiBpc1ZhbGlkID8gJycgOiAnUGxlYXNlIGZpbGwgdGhlIGNvbnRlbnQnLFxuICAgICAgdmFsdWU6IGNvbnRlbnQsXG4gICAgfTtcbiAgfTtcblxuICBzYW5pdGl6ZUh0bWwoaHRtbENvbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghaHRtbENvbnRlbnQpIHJldHVybiB0aGlzLnNhbml0aXplLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKCcnKTtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sQ29udGVudCk7XG4gIH1cblxuICBoYW5kbGVJbWFnZUVycm9yKGltYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmFpbGVkSW1hZ2VJZHMudXBkYXRlKChpZHMpID0+IFsuLi5pZHMsIGltYWdlSWRdKTtcbiAgfVxuXG4gIGNoZWNrSW1hZ2VFeGlzdHMoaW1hZ2VJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmZhaWxlZEltYWdlSWRzKCkuaW5jbHVkZXMoaW1hZ2VJZCk7XG4gIH1cblxuICBleHRyYWN0SW5pdGlhbHMobmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7XG5cbiAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgbmFtZSBpcyBhbiBvYmplY3Qgd2l0aCBmdWxsTmFtZSBwcm9wZXJ0eVxuICAgIGNvbnN0IG5hbWVTdHIgPSB0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcgJiYgbmFtZS5mdWxsTmFtZSA/IG5hbWUuZnVsbE5hbWUgOiBTdHJpbmcobmFtZSk7XG5cbiAgICBjb25zdCB3b3JkcyA9IG5hbWVTdHIuc3BsaXQoJyAnKTtcbiAgICBjb25zdCBpbml0aWFscyA9IHdvcmRzLm1hcCgod29yZDogc3RyaW5nKSA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKTtcbiAgICByZXR1cm4gaW5pdGlhbHMuam9pbignJyk7XG4gIH1cblxuICBhc3luYyBsb2FkQ29tbWVudHMoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UucXVlcnkodGhpcy5nZXRQYXlsb2FkKCkpO1xuICAgICAgdGhpcy5jb21tZW50cy5zZXQocmVzcG9uc2UuaXRlbXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBjb21tZW50czonLCBlcnJvcik7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29udGVudDogJ0ZhaWxlZCB0byBsb2FkIGNvbW1lbnRzLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21tZW50cy5zZXQoW10pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sIDI1MCk7XG4gICAgfVxuICB9XG5cbiAgZWRpdE1lc3NhZ2UoY29tbWVudDogQVhNQ29tbWVudE1lc3NhZ2UsIHJlcGx5PzogQVhNQ29tbWVudE1lc3NhZ2UpIHtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldChjb21tZW50KTtcbiAgICBjb25zdCBjb250ZW50VG9FZGl0ID0gcmVwbHkgPyByZXBseS5tZXNzYWdlPy5jb250ZW50IDogY29tbWVudC5tZXNzYWdlPy5jb250ZW50O1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KGNvbnRlbnRUb0VkaXQgfHwgJycpO1xuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgcmVwbHlNZXNzYWdlKGNvbW1lbnQ6IEFYTUNvbW1lbnRNZXNzYWdlLCByZXBseT86IEFYTUNvbW1lbnRNZXNzYWdlKSB7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudC5zZXQoY29tbWVudCk7XG4gICAgaWYgKHJlcGx5KSB7XG4gICAgICBjb25zdCBhdXRob3IgPSAocmVwbHkuYXV0aG9yIGFzIGFueSkuZnVsbE5hbWUgfHwgcmVwbHkuYXV0aG9yLmlkO1xuICAgICAgY29uc3QgbWVudGlvbiA9IGA8YSBkYXRhLWlkPVwiJHtyZXBseS5pZH1cIj5AJHthdXRob3J9PC9hPiBgO1xuICAgICAgdGhpcy5jb21tZW50Q29udGVudC5zZXQobWVudGlvbik7XG4gICAgICB0aGlzLnd5c2l3eWcoKT8uZm9jdXMoKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9IG1lbnRpb247XG4gICAgfVxuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQ29tbWVudChjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSkge1xuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcbiAgICAgIGljb246ICdmYS1yZWd1bGFyIGZhLXdhcm5pbmcnLFxuICAgICAgY29udGVudDogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBjb21tZW50PycsXG4gICAgICB0aXRsZTogJ0RlbGV0ZSBDb21tZW50JyxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdEZWxldGUnLFxuICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICBvbkNsaWNrOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICBlLmhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgZS5zb3VyY2UudGV4dCA9ICdEZWxldGluZy4uLic7XG4gICAgICAgICAgICBlLnNvdXJjZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmIChjb21tZW50LmlkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVPbmUoY29tbWVudC5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdDb21tZW50IGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LicsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmdNb2RlKCkgJiYgdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpPy5pZCA9PT0gY29tbWVudC5pZCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldFJlcGx5RWRpdFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gZXJyb3IgOiAnRmFpbGVkIHRvIGRlbGV0ZSBjb21tZW50IScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgIGF1dG9mb2N1czogdHJ1ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVSZXBseShjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSwgcmVwbHk6IEFYTUNvbW1lbnRNZXNzYWdlKSB7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xuICAgICAgaWNvbjogJ2ZhLXJlZ3VsYXIgZmEtd2FybmluZycsXG4gICAgICBjb250ZW50OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJlcGx5PycsXG4gICAgICB0aXRsZTogJ0RlbGV0ZSBSZXBseScsXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgb25DbGljazogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgZS5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLnRleHQgPSAnRGVsZXRpbmcuLi4nO1xuICAgICAgICAgICAgZS5zb3VyY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgZS5zb3VyY2UubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAocmVwbHkuaWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZU9uZShyZXBseS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkLCByZXBseS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAnQ29tbWVudCBkZWxldGVkIHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBlcnJvciA6ICdGYWlsZWQgdG8gZGVsZXRlIGNvbW1lbnQhJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgICAgYXV0b2ZvY3VzOiB0cnVlLFxuICAgICAgICAgIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGNsb3NlQnV0dG9uOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0UmVwbHlFZGl0U3RhdGUoKSB7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jb21tZW50Q29udGVudC5zZXQoJycpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9ICcnO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlTGlrZShjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSwgcmVwbHk/OiBBWE1Db21tZW50TWVzc2FnZSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAocmVwbHkpIHtcbiAgICAgICAgaWYgKHJlcGx5LmlkKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQsIHJlcGx5LmlkKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmxpa2UocmVwbHkuaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY29tbWVudC5pZCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmxpa2UoY29tbWVudC5pZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHRvZ2dsZSBsaWtlOicsIGVycm9yKTtcbiAgICAgIC8vIFJldmVydCB0aGUgb3B0aW1pc3RpYyB1cGRhdGUgaWYgdGhlIHNlcnZlciBjYWxsIGZhaWxzXG4gICAgICBpZiAocmVwbHkgJiYgcmVwbHkuaWQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQsIHJlcGx5LmlkKTtcbiAgICAgIH0gZWxzZSBpZiAoY29tbWVudC5pZCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUxpa2VTdGF0dXMoY29tbWVudC5pZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnRJZDogc3RyaW5nLCByZXBseUlkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT4ge1xuICAgICAgcmV0dXJuIGNvbW1lbnRzTGlzdC5tYXAoKGNvbW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGNvbW1lbnQuaWQgPT09IGNvbW1lbnRJZCkge1xuICAgICAgICAgIGlmIChyZXBseUlkICYmIGNvbW1lbnQucmVwbGllcykge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFJlcGxpZXMgPSBjb21tZW50LnJlcGxpZXMubWFwKChyZXBseSkgPT5cbiAgICAgICAgICAgICAgcmVwbHkuaWQgPT09IHJlcGx5SWRcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVwbHksXG4gICAgICAgICAgICAgICAgICAgIGlzTGlrZWQ6ICFyZXBseS5pc0xpa2VkLFxuICAgICAgICAgICAgICAgICAgICByZWFjdGlvbnNDb3VudDpcbiAgICAgICAgICAgICAgICAgICAgICByZXBseS5pc0xpa2VkICYmIHJlcGx5LnJlYWN0aW9uc0NvdW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVwbHkucmVhY3Rpb25zQ291bnQgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChyZXBseS5yZWFjdGlvbnNDb3VudCB8fCAwKSArIDEsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiByZXBseSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNvbW1lbnQsXG4gICAgICAgICAgICAgIHJlcGxpZXM6IHVwZGF0ZWRSZXBsaWVzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY29tbWVudCxcbiAgICAgICAgICAgICAgaXNMaWtlZDogIWNvbW1lbnQuaXNMaWtlZCxcbiAgICAgICAgICAgICAgcmVhY3Rpb25zQ291bnQ6XG4gICAgICAgICAgICAgICAgY29tbWVudC5pc0xpa2VkICYmIGNvbW1lbnQucmVhY3Rpb25zQ291bnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgPyBjb21tZW50LnJlYWN0aW9uc0NvdW50IC0gMVxuICAgICAgICAgICAgICAgICAgOiAoY29tbWVudC5yZWFjdGlvbnNDb3VudCB8fCAwKSArIDEsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tbWVudDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNZXNzYWdlQnlJZChjb21tZW50SWQ6IHN0cmluZywgcmVwbHlJZD86IHN0cmluZykge1xuICAgIGlmIChyZXBseUlkKSB7XG4gICAgICAvLyBSZW1vdmUgYSByZXBseSBmcm9tIGEgY29tbWVudFxuICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT5cbiAgICAgICAgY29tbWVudHNMaXN0Lm1hcCgoY29tbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChjb21tZW50LmlkID09PSBjb21tZW50SWQgJiYgY29tbWVudC5yZXBsaWVzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICByZXBsaWVzOiBjb21tZW50LnJlcGxpZXMuZmlsdGVyKChyZXBseSkgPT4gcmVwbHkuaWQgIT09IHJlcGx5SWQpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbW1lbnQ7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVtb3ZlIGEgd2hvbGUgY29tbWVudFxuICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT4gY29tbWVudHNMaXN0LmZpbHRlcigoY29tbWVudCkgPT4gY29tbWVudC5pZCAhPT0gY29tbWVudElkKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHN1Ym1pdENvbW1lbnQoaXNQcml2YXRlOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVDb250ZW50KHRoaXMuY29tbWVudENvbnRlbnQoKSkucmVzdWx0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuXG4gICAgbGV0IG1lbWJlckxvb2t1cDtcbiAgICBpZiAoaXNQcml2YXRlKSB7XG4gICAgICBjb25zdCBwb3B1cENvbmZpZzogQVhQb3B1cENvbmZpZyA9IHtcbiAgICAgICAgaGVhZGVyOiB0cnVlLFxuICAgICAgICBzaXplOiAnbWQnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IGZhbHNlLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHBvcHVwID0gYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3BlbihBWE1Db21tZW50TG9va3VwUG9wdXAsIHBvcHVwQ29uZmlnKTtcbiAgICAgIG1lbWJlckxvb2t1cCA9IHBvcHVwLmRhdGE/LmRhdGE/Lmxvb2t1cDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nTW9kZSgpICYmIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKT8uaWQpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNvbW1lbnRDb250ZW50KCksXG4gICAgICAgICAgICBjb250ZW50VHlwZTogJ3RleHQnIGFzIGNvbnN0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51cGRhdGVPbmUodGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpIS5pZCwgcGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmlzRWRpdGluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgLi4udGhpcy5wYXlsb2FkKCksXG4gICAgICAgICAgY29udGVudDogdGhpcy5jb21tZW50Q29udGVudCgpLFxuICAgICAgICAgIGNvbnRlbnRUeXBlOiAndGV4dCcgYXMgY29uc3QsXG4gICAgICAgICAgaXNQcml2YXRlOiBpc1ByaXZhdGUsXG4gICAgICAgICAgcmVwbHlJZDogdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQoKT8uaWQgPz8gbnVsbCxcbiAgICAgICAgfTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmluc2VydE9uZShwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5oYXNDb29sZG93bi5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbG9hZCBjb21tZW50cyB0byBnZXQgdGhlIHVwZGF0ZWQgbGlzdCB3aXRoIHByb3BlciBoaWVyYXJjaHlcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5xdWVyeSh0aGlzLmdldFBheWxvYWQoKSk7XG4gICAgICB0aGlzLmNvbW1lbnRzLnNldChyZXNwb25zZS5pdGVtcyk7XG5cbiAgICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KCcnKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9ICcnO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5oYXNDb29sZG93bi5zZXQoZmFsc2UpO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgY29tbWVudDonLCBlcnJvcik7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29udGVudDogdHlwZW9mIGVycm9yID09PSAnc3RyaW5nJyA/IGVycm9yIDogJ0ZhaWxlZCB0byBzdWJtaXQgY29tbWVudC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxNYWluKCkge1xuICAgIGNvbnN0IGNvbW1lbnQgPSB0aGlzLmlzUmVwbHlpbmdNb2RlKCkgPyB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudCgpIDogdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpO1xuICAgIGlmIChjb21tZW50ICYmIGNvbW1lbnQuaWQpIHtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29tbWVudC5pZCk7XG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGVsPy5maXJzdEVsZW1lbnRDaGlsZD8uY2hpbGRyZW5bMV0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgY29uc3QgcHJldkJnID0gY29udGVudC5zdHlsZS5iYWNrZ3JvdW5kO1xuICAgICAgICAgIGNvbnRlbnQuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzAuMjVyZW0nO1xuICAgICAgICAgIGNvbnRlbnQuc3R5bGUudHJhbnNpdGlvbiA9ICdiYWNrZ3JvdW5kIDFzIGVhc2UtaW4tb3V0JztcbiAgICAgICAgICBjb250ZW50LnN0eWxlLmJhY2tncm91bmQgPSBgcmdiYSh2YXIoLS1heC1jb2xvci1vbi1zdXJmYWNlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpYDtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZCA9IHByZXZCZyB8fCAncmdiYSgwLCAwLCAwLCAwKSc7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYWxjRGVmcmVuZXRUaW1lKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZGF0ZSA/IERhdGUubm93KCkgLSBkYXRlLmdldFRpbWUoKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LW10LTIgYXgtcC0yXCI+XG4gIDxheC1jb21tZW50LWNvbnRhaW5lcj5cbiAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtcHktMTIgYXgtYmctbGlnaHRlc3QgYXgtcHgtNVwiPlxuICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC1taW4tdy0xNiBheC1oLTE2IGF4LXJvdW5kZWQtZnVsbCBheC1tZS00XCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdy1mdWxsXCI+XG4gICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtNiBheC1yb3VuZGVkXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0yIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctOC8xMiBheC1oLTIgYXgtcm91bmRlZC1mdWxsXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIGlmICghaXNMb2FkaW5nKCkgJiYgY29tbWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICA8YXgtY29tbWVudC12aWV3IGNsYXNzPVwiYXgtYmctbGlnaHRlc3RcIj5cbiAgICAgICAgQGZvciAoY29tbWVudCBvZiBjb21tZW50cygpOyB0cmFjayBjb21tZW50LmlkKSB7XG4gICAgICAgICAgPGF4LWNvbW1lbnQtaXRlbSBbaWRdPVwiY29tbWVudC5pZCFcIiBbcmVwbHlDb3VudF09XCJjb21tZW50LnJlcGxpZXM/Lmxlbmd0aCA/PyAwXCI+XG4gICAgICAgICAgICA8YXgtYXZhdGFyIFtjb2xvcl09XCJhdmF0YXJDb25maWcoKS5jb2xvclwiIFtzaGFwZV09XCJhdmF0YXJDb25maWcoKS5sb29rXCI+XG4gICAgICAgICAgICAgIEBpZiAoY2hlY2tJbWFnZUV4aXN0cyhjb21tZW50LmlkISkgJiYgY29tbWVudC5hdXRob3IgJiYgZXh0cmFjdEluaXRpYWxzKGNvbW1lbnQuYXV0aG9yKSAhPT0gJz8nKSB7XG4gICAgICAgICAgICAgICAgPGF4LWltYWdlIChvbkVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoY29tbWVudC5pZCEpXCIgW3NyY109XCInJ1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIDwvYXgtaW1hZ2U+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxheC10ZXh0PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LWJhc2UgYXgtb3ZlcmZsb3ctaGlkZGVuXCI+e3sgZXh0cmFjdEluaXRpYWxzKGNvbW1lbnQuYXV0aG9yKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXgtYXZhdGFyPlxuICAgICAgICAgICAgPGF4LXRpdGxlPnt7IGV4dHJhY3RJbml0aWFscyhjb21tZW50LmF1dGhvcikgfX08L2F4LXRpdGxlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtZGF0ZT57eyBjYWxjRGVmcmVuZXRUaW1lKGNvbW1lbnQuY3JlYXRlZEF0KSB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19IDwvYXgtY29tbWVudC1kYXRlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cIm5ldXRyYWxcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tbW9yZS1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkVkaXRcIiBjb2xvcj1cIm5ldXRyYWxcIiAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoY29tbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtZWRpdFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuXG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkRlbGV0ZVwiIGNvbG9yPVwiZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZUNvbW1lbnQoY29tbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgPC9heC1jb21tZW50LW1lbnUtb3B0aW9ucz5cbiAgICAgICAgICAgIDxheC1jb250ZW50IFtpbm5lckhUTUxdPVwic2FuaXRpemVIdG1sKGNvbW1lbnQubWVzc2FnZS5jb250ZW50KVwiPjwvYXgtY29udGVudD5cbiAgICAgICAgICAgIDxheC1jb21tZW50LWxpa2UgKGNsaWNrKT1cInRvZ2dsZUxpa2UoY29tbWVudClcIiBbbGlrZWRdPVwiY29tbWVudC5pc0xpa2VkIVwiPlxuICAgICAgICAgICAgICB7eyBjb21tZW50LnJlYWN0aW9uc0NvdW50IH19XG4gICAgICAgICAgICA8L2F4LWNvbW1lbnQtbGlrZT5cbiAgICAgICAgICAgIDxheC1jb21tZW50LXJlcGx5LXRleHQgKGNsaWNrKT1cInJlcGx5TWVzc2FnZShjb21tZW50KVwiPjwvYXgtY29tbWVudC1yZXBseS10ZXh0PlxuICAgICAgICAgICAgQGZvciAocmVwbHkgb2YgY29tbWVudC5yZXBsaWVzOyB0cmFjayByZXBseS5pZCkge1xuICAgICAgICAgICAgICA8YXgtY29tbWVudC1pdGVtIFtpZF09XCJyZXBseS5pZFwiPlxuICAgICAgICAgICAgICAgIDxheC1hdmF0YXIgW2NvbG9yXT1cImF2YXRhckNvbmZpZygpLmNvbG9yXCIgW3NoYXBlXT1cImF2YXRhckNvbmZpZygpLmxvb2tcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocmVwbHkgJiYgY2hlY2tJbWFnZUV4aXN0cyhyZXBseS5pZCEpICYmIHJlcGx5LmF1dGhvciAmJiBleHRyYWN0SW5pdGlhbHMocmVwbHkuYXV0aG9yKSAhPT0gJz8nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC1pbWFnZSAob25FcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKHJlcGx5LmlkISlcIiBbc3JjXT1cIicnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWltYWdlPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1iYXNlIGF4LW92ZXJmbG93LWhpZGRlblwiPnt7IGV4dHJhY3RJbml0aWFscyhyZXBseS5hdXRob3IpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9heC1hdmF0YXI+XG4gICAgICAgICAgICAgICAgPGF4LXRpdGxlPnt7IGV4dHJhY3RJbml0aWFscyhyZXBseS5hdXRob3IpIH19PC9heC10aXRsZT5cbiAgICAgICAgICAgICAgICA8YXgtY29tbWVudC1kYXRlPnt7IGNhbGNEZWZyZW5ldFRpbWUocmVwbHkuY3JlYXRlZEF0KSB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19IDwvYXgtY29tbWVudC1kYXRlPlxuICAgICAgICAgICAgICAgIDxheC1jb21tZW50LW1lbnUtb3B0aW9ucz5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIGxvb2s9XCJibGFua1wiIGNvbG9yPVwibmV1dHJhbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tbW9yZS1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJFZGl0XCIgY29sb3I9XCJuZXV0cmFsXCIgKGNsaWNrKT1cImVkaXRNZXNzYWdlKGNvbW1lbnQsIHJlcGx5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWVkaXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRGVsZXRlXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiZGVsZXRlUmVwbHkoY29tbWVudCwgcmVwbHkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICAgIDxheC1jb250ZW50IFtpbm5lckhUTUxdPVwic2FuaXRpemVIdG1sKHJlcGx5Lm1lc3NhZ2UuY29udGVudClcIj48L2F4LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShjb21tZW50LCByZXBseSlcIiBbbGlrZWRdPVwicmVwbHkuaXNMaWtlZCFcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHJlcGx5LnJlYWN0aW9uc0NvdW50IH19XG4gICAgICAgICAgICAgICAgPC9heC1jb21tZW50LWxpa2U+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtcmVwbHktdGV4dCAoY2xpY2spPVwicmVwbHlNZXNzYWdlKGNvbW1lbnQsIHJlcGx5KVwiPjwvYXgtY29tbWVudC1yZXBseS10ZXh0PlxuICAgICAgICAgICAgICA8L2F4LWNvbW1lbnQtaXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWNvbW1lbnQtaXRlbT5cbiAgICAgICAgfVxuICAgICAgPC9heC1jb21tZW50LXZpZXc+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1qdXN0aWZ5LWNlbnRlciBheC1pdGVtcy1jZW50ZXIgYXgtcC0xMFwiPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtbXgtYXV0b1wiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIHdpZHRoPVwiMTU0XCJcbiAgICAgICAgICAgIGhlaWdodD1cIjE2MVwiXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE1NCAxNjFcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMC4wNjE2NDU1IDg0LjQyNjhDMC4wNjE2NDU1IDQyLjAyMTMgMzQuNDM1IDcuODM3NjUgNzYuNjUwNyA3LjgzNzY1QzExOC44MDMgNy44Mzc2NSAxNTMuMjI0IDQyLjAwNTUgMTUzLjIyNCA4NC40MjY4QzE1My4yMjQgMTAyLjQyIDE0Ny4wMjYgMTE4Ljk3NCAxMzYuNjIyIDEzMi4wMzRDMTIyLjI4MiAxNTAuMTM4IDEwMC4zNjcgMTYxIDc2LjY1MDcgMTYxQzUyLjc3NTkgMTYxIDMwLjk4ODIgMTUwLjA1OSAxNi42NjMzIDEzMi4wMzRDNi4yNTk2MSAxMTguOTc0IDAuMDYxNjQ1NSAxMDIuNDIgMC4wNjE2NDU1IDg0LjQyNjhaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiNFRUYyRkZcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNOTYuODE4OSAwLjYzMjQ5OEw5Ni44MTg5IDAuNjMyMzg0TDk2LjgwODMgMC42MzA5NTRDOTYuMjAzNCAwLjU0OTU4MSA5NS41OTMxIDAuNSA5NC45Nzg3IDAuNUgyOS4zMzhDMjIuNzExMiAwLjUgMTcuMzM5NCA1Ljg0NDU1IDE3LjMzOTQgMTIuNDQ3M1YxNDIuNzE1QzE3LjMzOTQgMTQ5LjMxOCAyMi43MTEyIDE1NC42NjIgMjkuMzM4IDE1NC42NjJIMTIzLjk0OEMxMzAuNTkxIDE1NC42NjIgMTM1Ljk0NiAxNDkuMzE3IDEzNS45NDYgMTQyLjcxNVYzOC45MzA5QzEzNS45NDYgMzguMDI0NCAxMzUuODQ3IDM3LjEzMzQgMTM1LjY0OCAzNi4yNTg2TDEzNS42NDggMzYuMjU4NEMxMzUuMTE3IDMzLjkzMDkgMTMzLjg3NCAzMS43Njg2IDEzMi4wNjYgMzAuMTMzM0MxMzIuMDY2IDMwLjEzMzEgMTMyLjA2NSAzMC4xMzI5IDEzMi4wNjUgMzAuMTMyN0wxMDMuMDY4IDMuNjUyMDNDMTAzLjA2OCAzLjY1MTkgMTAzLjA2NyAzLjY1MTc3IDEwMy4wNjcgMy42NTE2NEMxMDEuMzExIDIuMDM1MjYgOTkuMTM5NiAwLjk5NTU1MiA5Ni44MTg5IDAuNjMyNDk4WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiNFNUU3RUJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxlbGxpcHNlIGN4PVwiODAuMDYxOFwiIGN5PVwiODFcIiByeD1cIjI4LjAzNDJcIiByeT1cIjI4LjAzNDJcIiBmaWxsPVwiI0VFRjJGRlwiIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTk5LjIzOTMgNjEuMzA2MUw5OS4yMzkxIDYxLjMwNThDODguNDk4IDUwLjU4MDggNzEuMTA5MiA1MC41ODA0IDYwLjM4MzUgNjEuMzA2MUM0OS42NDIzIDcyLjAzMTYgNDkuNjQyMiA4OS40MzYxIDYwLjM4MzIgMTAwLjE2MkM3MS4xMDkgMTEwLjkwMyA4OC40OTgyIDExMC45MDMgOTkuMjM5MyAxMDAuMTYyQzEwOS45NjUgODkuNDM2MyAxMDkuOTY1IDcyLjAzMTcgOTkuMjM5MyA2MS4zMDYxWk0xMDUuODYzIDU0LjY4MzJDMTIwLjI0OSA2OS4wNjk1IDEyMC4yNDkgOTIuMzk4NSAxMDUuODYzIDEwNi43ODVDOTEuNDYwNSAxMjEuMTcxIDY4LjE0NjggMTIxLjE3MSA1My43NDQ2IDEwNi43ODVDMzkuMzU4MiA5Mi4zOTg3IDM5LjM1ODIgNjkuMDY5MyA1My43NDQ2IDU0LjY4M0M2OC4xNDY4IDQwLjI5NjUgOTEuNDYwNSA0MC4yOTY2IDEwNS44NjMgNTQuNjgzMlpcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjRTVFN0VCXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTExMC43ODIgMTE5LjI2N0wxMDIuMDE2IDExMC40OTJDMTA0Ljg4OCAxMDguMjY3IDEwNy40NzYgMTA1LjY1MSAxMDkuNTY0IDEwMi45NTVMMTE4LjMyOSAxMTEuNzI5TDExMC43ODIgMTE5LjI2N1pcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjRTVFN0VCXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTEzOS4xMjIgMTI1Ljc4MUwxMzkuMTIyIDEyNS43OEwxMjMuMzEzIDEwOS45ODhDMTIzLjMxMyAxMDkuOTg3IDEyMy4zMTMgMTA5Ljk4NyAxMjMuMzEyIDEwOS45ODZDMTIxLjk5NiAxMDguNjUzIDExOS44NDkgMTA4LjY1NyAxMTguNTIxIDEwOS45ODVMMTE4Ljg3MSAxMTAuMzM1TDExOC41MjEgMTA5Ljk4NUwxMDkuMDQ3IDExOS40NTlDMTA3LjczMSAxMjAuNzc1IDEwNy43MzUgMTIyLjkxOCAxMDkuMDQ0IDEyNC4yNDdMMTA5LjA0NyAxMjQuMjQ5TDEyNC44NTggMTQwLjA2QzEyOC43ODkgMTQzLjk5MiAxMzUuMTkxIDE0My45OTIgMTM5LjEyMiAxNDAuMDZDMTQzLjA2OSAxMzYuMTEzIDE0My4wNjkgMTI5LjcyOCAxMzkuMTIyIDEyNS43ODFaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiNBNUI0RkNcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjODE4Q0Y4XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTgzLjE4NSA4Ny4yMjg1QzgyLjUzODcgODcuMjI4NSA4Mi4wMDI3IDg2LjY5MjYgODIuMDAyNyA4Ni4wMzA1QzgyLjAwMjcgODMuMzgyMSA3Ny45OTg3IDgzLjM4MjEgNzcuOTk4NyA4Ni4wMzA1Qzc3Ljk5ODcgODYuNjkyNiA3Ny40NjI3IDg3LjIyODUgNzYuODAwNiA4Ny4yMjg1Qzc2LjE1NDMgODcuMjI4NSA3NS42MTgzIDg2LjY5MjYgNzUuNjE4MyA4Ni4wMzA1Qzc1LjYxODMgODAuMjI5NCA4NC4zODMxIDgwLjI0NTEgODQuMzgzMSA4Ni4wMzA1Qzg0LjM4MzEgODYuNjkyNiA4My44NDcxIDg3LjIyODUgODMuMTg1IDg3LjIyODVaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNOTMuMzUyOCA3Ny4wOTI2SDg4LjQwM0M4Ny43NDA5IDc3LjA5MjYgODcuMjA0OSA3Ni41NTY3IDg3LjIwNDkgNzUuODk0NkM4Ny4yMDQ5IDc1LjI0ODMgODcuNzQwOSA3NC43MTIzIDg4LjQwMyA3NC43MTIzSDkzLjM1MjhDOTQuMDE0OSA3NC43MTIzIDk0LjU1MDkgNzUuMjQ4MyA5NC41NTA5IDc1Ljg5NDZDOTQuNTUwOSA3Ni41NTY3IDk0LjAxNDkgNzcuMDkyNiA5My4zNTI4IDc3LjA5MjZaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNNzEuNTk4NyA3Ny4wOTI1SDY2LjY0ODhDNjUuOTg2NyA3Ny4wOTI1IDY1LjQ1MDcgNzYuNTU2NSA2NS40NTA3IDc1Ljg5NDVDNjUuNDUwNyA3NS4yNDgxIDY1Ljk4NjcgNzQuNzEyMiA2Ni42NDg4IDc0LjcxMjJINzEuNTk4N0M3Mi4yNDUgNzQuNzEyMiA3Mi43ODEgNzUuMjQ4MSA3Mi43ODEgNzUuODk0NUM3Mi43ODEgNzYuNTU2NSA3Mi4yNDUgNzcuMDkyNSA3MS41OTg3IDc3LjA5MjVaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjIxLjUxMjhcIiB3aWR0aD1cIjQxLjAyNTZcIiBoZWlnaHQ9XCIyLjczNTA0XCIgcng9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjM4LjM1MjJcIiB5PVwiMTMzLjY1XCIgd2lkdGg9XCI1NC43MDA5XCIgaGVpZ2h0PVwiNS40NzAwOVwiIHJ4PVwiMi43MzUwNFwiIGZpbGw9XCIjQTVCNEZDXCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjI5LjcxNzlcIiB3aWR0aD1cIjEzLjY3NTJcIiBoZWlnaHQ9XCIyLjczNTA0XCIgcng9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjU2LjEzXCIgY3k9XCIzMS4wODU0XCIgcj1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNjEuNjAwMVwiIGN5PVwiMzEuMDg1NFwiIHI9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjY3LjA3MDJcIiBjeT1cIjMxLjA4NTRcIiByPVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtdGV4dC1uZXV0cmFsLTYwMCBheC1mb250LXNlbWlib2xkIGF4LWxlYWRpbmctbG9vc2UgYXgtcGItMlwiPlxuICAgICAgICAgICAgICBUaGVyZSBpcyBubyBDb21tZW50IVxuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvYXgtY29tbWVudC1jb250YWluZXI+XG4gIDxheC1mb3JtPlxuICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgPGRpdj5cbiAgICAgICAgQGlmIChpc1JlcGx5aW5nTW9kZSgpIHx8IGlzRWRpdGluZ01vZGUoKSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtcm91bmRlZC1iLW5vbmUgYXgtYm9yZGVyIGF4LWJvcmRlci1iLTAgYXgtcm91bmRlZC1sZyBheC1iZy1vbi1zdXJmYWNlIGF4LXB4LTYgYXgtcHktMyBheC13LWZ1bGwgYXgtaXRlbXMtY2VudGVyIGF4LW92ZXJmbG93LWhpZGRlbiBheC10ZXh0LXNtIGF4LWxlYWRpbmctbm9uZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2Nyb2xsTWFpbigpXCIgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktc3RhcnQgYXgtaXRlbXMtY2VudGVyIGF4LWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImlzUmVwbHlpbmdNb2RlKCkgPyAnZmEtcmVwbHknIDogJ2ZhLXBlbidcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgYXgtdGV4dC1wcmltYXJ5LTUwMCBkYXJrOmF4LXRleHQtcHJpbWFyeS0zMDAgYXgtdGV4dC0yeGwgYXgtbWUtNFwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWFsaWduLW1pZGRsZSBheC1sZWFkaW5nLTQgYXgtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1wcmltYXJ5LTUwMCBkYXJrOmF4LXRleHQtcHJpbWFyeS0zMDBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGlzUmVwbHlpbmdNb2RlKCkgPyAnUmVwbHkgdG8gJyA6ICdFZGl0IE1lc3NhZ2UnIH19XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpc1JlcGx5aW5nTW9kZSgpID8gZXh0cmFjdEluaXRpYWxzKGFjdGl2ZVJlcGx5Q29tbWVudCgpPy5hdXRob3IpIDogJycgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICBpc1JlcGx5aW5nTW9kZSgpXG4gICAgICAgICAgICAgICAgICAgICAgPyBzYW5pdGl6ZUh0bWwoYWN0aXZlUmVwbHlDb21tZW50KCk/Lm1lc3NhZ2U/LmNvbnRlbnQgPz8gJycpXG4gICAgICAgICAgICAgICAgICAgICAgOiBzYW5pdGl6ZUh0bWwoYWN0aXZlRWRpdENvbW1lbnQoKT8ubWVzc2FnZT8uY29udGVudCA/PyAnJylcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj48aSAoY2xpY2spPVwicmVzZXRSZXBseUVkaXRTdGF0ZSgpXCIgY2xhc3M9XCJmYS1zb2xpZCBheC10ZXh0LTJ4bCBmYS14bWFyayBheC1jdXJzb3ItcG9pbnRlclwiPjwvaT48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8YXgtd3lzaXd5Zy1jb250YWluZXIgI3cgW2xvb2tdPVwid3lzaXd5Z09wdGlvbnMoKS5sb29rXCIgWyhuZ01vZGVsKV09XCJjb21tZW50Q29udGVudFwiPlxuICAgICAgICAgIDxheC13eXNpd3lnLXZpZXcgY2xhc3M9XCJheC1taW4taC0yOFwiPjwvYXgtd3lzaXd5Zy12aWV3PlxuICAgICAgICAgIDxheC10b29sYmFyPlxuICAgICAgICAgICAgPGF4LWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWhpc3Rvcnk+PC9heC13eXNpd3lnLWhpc3Rvcnk+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWZvbnQtc3R5bGU+PC9heC13eXNpd3lnLWZvbnQtc3R5bGU+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWNvbG9ycz48L2F4LXd5c2l3eWctY29sb3JzPlxuICAgICAgICAgICAgICA8YXgtd3lzaXd5Zy1saXN0PjwvYXgtd3lzaXd5Zy1saXN0PlxuICAgICAgICAgICAgICA8YXgtd3lzaXd5Zy1hbGlnbm1lbnQ+PC9heC13eXNpd3lnLWFsaWdubWVudD5cbiAgICAgICAgICAgIDwvYXgtY29udGVudD5cbiAgICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICAgIDxheC1kcm9wZG93bi1idXR0b25cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaGFzQ29vbGRvd24oKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBtb2RlPVwic3BsaXRcIlxuICAgICAgICAgICAgICAgIHRleHQ9XCJTZW5kXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJzdWJtaXRDb21tZW50KClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChpc1N1Ym1pdHRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSAoY2xpY2spPVwic3VibWl0Q29tbWVudCh0cnVlKVwiIHRleHQ9XCJTZW5kIFByaXZhdGUgLi4uXCIgbmFtZT1cInByaXZhdGVcIiBkYXRhPVwicHJpdmF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1yZWd1bGFyIGZhLXVzZXItc2VjcmV0XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgICAgIDwvYXgtdG9vbGJhcj5cbiAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHJ1bGU9XCJjYWxsYmFja1wiIFtvcHRpb25zXT1cInsgdmFsaWRhdGU6IHZhbGlkYXRlQ29udGVudCB9XCI+PC9heC12YWxpZGF0aW9uLXJ1bGU+XG4gICAgICAgIDwvYXgtd3lzaXd5Zy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LWZvcm0tZmllbGQ+XG4gIDwvYXgtZm9ybT5cbjwvZGl2PlxuIl19","import { AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nexport const AXPCommentWidget = {\n name: 'comment',\n title: 'Comments',\n description: 'Display and manage comments for entities',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.FormElement],\n icon: 'fa-solid fa-comments',\n properties: [],\n components: {\n view: {\n component: () => import('./comment-widget-view.component').then((c) => c.AXMCommentWidgetViewComponent),\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC13aWRnZXQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL3dpZGdldC9zaGFyZS9jb21tZW50L2NvbW1lbnQtd2lkZ2V0LmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdEYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQW9CO0lBQy9DLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFVBQVU7SUFDakIsV0FBVyxFQUFFLDBDQUEwQztJQUN2RCxJQUFJLEVBQUUsTUFBTTtJQUNaLFVBQVUsRUFBRSxFQUFFO0lBQ2QsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDO0lBQ3hDLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsVUFBVSxFQUFFLEVBQUU7SUFDZCxVQUFVLEVBQUU7UUFDVixJQUFJLEVBQUU7WUFDSixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7U0FDeEc7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuXG5leHBvcnQgY29uc3QgQVhQQ29tbWVudFdpZGdldDogQVhQV2lkZ2V0Q29uZmlnID0ge1xuICBuYW1lOiAnY29tbWVudCcsXG4gIHRpdGxlOiAnQ29tbWVudHMnLFxuICBkZXNjcmlwdGlvbjogJ0Rpc3BsYXkgYW5kIG1hbmFnZSBjb21tZW50cyBmb3IgZW50aXRpZXMnLFxuICB0eXBlOiAndmlldycsXG4gIGNhdGVnb3JpZXM6IFtdLFxuICBncm91cHM6IFtBWFBXaWRnZXRHcm91cEVudW0uRm9ybUVsZW1lbnRdLFxuICBpY29uOiAnZmEtc29saWQgZmEtY29tbWVudHMnLFxuICBwcm9wZXJ0aWVzOiBbXSxcbiAgY29tcG9uZW50czoge1xuICAgIHZpZXc6IHtcbiAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2NvbW1lbnQtd2lkZ2V0LXZpZXcuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWE1Db21tZW50V2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=","import { AXResizableDirective } from '@acorex/cdk/resizable';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, } from '@acorex/platform/layout/components';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, importProvidersFrom } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { AXMRoomService } from './entities';\nimport { AXMMessageService, AXMMessageServiceImpl } from './entities/message/message.service';\nimport { AXMRoomServiceImpl } from './entities/room/room.service';\nimport { AXMConversationModuleEntityProvider } from './entity.provider';\nimport { AXMChatComponent, AXMChatItemComponent, AXMChatPreviewComponent, AXMChatService, AXMChatServiceImpl, AXMCommentListViewComponent, AXMCommentService, AXMCommentServiceImpl, } from './features';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nconst routes = [\n {\n path: 'platform',\n component: AXPRootLayoutComponent,\n children: [\n {\n path: 'chat',\n component: AXMChatComponent,\n children: [\n {\n path: ':id',\n component: AXMChatPreviewComponent,\n },\n ],\n },\n {\n path: 'comments/m/:module/e/:id',\n component: AXMCommentListViewComponent,\n },\n ],\n },\n];\nexport class AXMConversationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModule, declarations: [\n // Chat Components\n AXMChatComponent,\n AXMChatItemComponent,\n AXMChatPreviewComponent,\n // Comment Components\n AXMCommentListViewComponent], imports: [\n // Common Modules\n CommonModule,\n FormsModule, i1.RouterModule, \n // Acorex Core Modules\n AXFormatModule,\n AXConversationModule,\n AXCommentModule,\n AXTranslationModule,\n // Acorex Component Modules\n AXResizableDirective,\n AXImageModule,\n AXAvatarModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTextBoxModule,\n AXSearchBoxModule,\n AXTabsModule,\n AXButtonModule,\n AXLoadingModule,\n AXWysiwygModule,\n AXLabelModule,\n AXSelectBoxModule,\n AXFormModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXToolBarModule,\n AXSkeletonModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutToolbarComponent], exports: [\n // Chat Components\n AXMChatItemComponent,\n AXMChatPreviewComponent,\n // Comment Components\n AXMCommentListViewComponent,\n // Modules\n RouterModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModule, providers: [\n // Services\n {\n provide: AXMMessageService,\n useClass: AXMMessageServiceImpl,\n },\n {\n provide: AXMRoomService,\n useClass: AXMRoomServiceImpl,\n },\n // Chat and Comment Services\n {\n provide: AXMChatService,\n useClass: AXMChatServiceImpl,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentServiceImpl,\n },\n // Entity Provider\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMConversationModuleEntityProvider,\n multi: true,\n },\n // Menu Provider\n // {\n // provide: AXP_MENU_PROVIDER,\n // useClass: AXMConversationMenuProvider,\n // multi: true,\n // },\n // Conversation Module\n importProvidersFrom(AXConversationModule.forRoot()),\n ], imports: [\n // Common Modules\n CommonModule,\n FormsModule,\n RouterModule.forChild(routes),\n // Acorex Core Modules\n AXFormatModule,\n AXConversationModule,\n AXCommentModule,\n AXTranslationModule,\n AXImageModule,\n AXAvatarModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTextBoxModule,\n AXSearchBoxModule,\n AXTabsModule,\n AXButtonModule,\n AXLoadingModule,\n AXWysiwygModule,\n AXLabelModule,\n AXSelectBoxModule,\n AXFormModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXToolBarModule,\n AXSkeletonModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutToolbarComponent, \n // Modules\n RouterModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n // Chat Components\n AXMChatComponent,\n AXMChatItemComponent,\n AXMChatPreviewComponent,\n // Comment Components\n AXMCommentListViewComponent,\n // Layout Components\n ],\n imports: [\n // Common Modules\n CommonModule,\n FormsModule,\n RouterModule.forChild(routes),\n // Acorex Core Modules\n AXFormatModule,\n AXConversationModule,\n AXCommentModule,\n AXTranslationModule,\n // Acorex Component Modules\n AXResizableDirective,\n AXImageModule,\n AXAvatarModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTextBoxModule,\n AXSearchBoxModule,\n AXTabsModule,\n AXButtonModule,\n AXLoadingModule,\n AXWysiwygModule,\n AXLabelModule,\n AXSelectBoxModule,\n AXFormModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXToolBarModule,\n AXSkeletonModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutToolbarComponent,\n ],\n exports: [\n // Chat Components\n AXMChatItemComponent,\n AXMChatPreviewComponent,\n // Comment Components\n AXMCommentListViewComponent,\n // Modules\n RouterModule,\n ],\n providers: [\n // Services\n {\n provide: AXMMessageService,\n useClass: AXMMessageServiceImpl,\n },\n {\n provide: AXMRoomService,\n useClass: AXMRoomServiceImpl,\n },\n // Chat and Comment Services\n {\n provide: AXMChatService,\n useClass: AXMChatServiceImpl,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentServiceImpl,\n },\n // Entity Provider\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMConversationModuleEntityProvider,\n multi: true,\n },\n // Menu Provider\n // {\n // provide: AXP_MENU_PROVIDER,\n // useClass: AXMConversationMenuProvider,\n // multi: true,\n // },\n // Conversation Module\n importProvidersFrom(AXConversationModule.forRoot()),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFB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USxFQUFFLGtCQUFrQjt5QkFDN0I7d0JBQ0QsNEJBQTRCO3dCQUM1Qjs0QkFDRSxPQUFPLEVBQUUsY0FBYzs0QkFDdkIsUUFBUSxFQUFFLGtCQUFrQjt5QkFDN0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLHFCQUFxQjt5QkFDaEM7d0JBQ0Qsa0JBQWtCO3dCQUNsQjs0QkFDRSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxRQUFRLEVBQUUsbUNBQW1DOzRCQUM3QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxnQkFBZ0I7d0JBQ2hCLElBQUk7d0JBQ0osZ0NBQWdDO3dCQUNoQywyQ0FBMkM7d0JBQzNDLGlCQUFpQjt3QkFDakIsS0FBSzt3QkFDTCxzQkFBc0I7d0JBQ3RCLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO3FCQUNwRDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUmVzaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9jZGsvcmVzaXphYmxlJztcbmltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWENvbW1lbnRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbWVudCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb252ZXJzYXRpb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvaW1hZ2UnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFNlYXJjaEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWFyY2gtYm94JztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQVhUb29sQmFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2xiYXInO1xuaW1wb3J0IHsgQVhXeXNpd3lnTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3d5c2l3eWcnO1xuaW1wb3J0IHsgQVhGb3JtYXRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHtcbiAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRIZWFkZXJDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0U3RhcnRTaWRlQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dFRvb2xiYXJDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvdmlld3MnO1xuaW1wb3J0IHsgQVhQUm9vdExheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlLCBpbXBvcnRQcm92aWRlcnNGcm9tIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFYTVJvb21TZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdGllcyc7XG5pbXBvcnQgeyBBWE1NZXNzYWdlU2VydmljZSwgQVhNTWVzc2FnZVNlcnZpY2VJbXBsIH0gZnJvbSAnLi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1Sb29tU2VydmljZUltcGwgfSBmcm9tICcuL2VudGl0aWVzL3Jvb20vcm9vbS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUNvbnZlcnNhdGlvbk1vZHVsZUVudGl0eVByb3ZpZGVyIH0gZnJvbSAnLi9lbnRpdHkucHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgQVhNQ2hhdENvbXBvbmVudCxcbiAgQVhNQ2hhdEl0ZW1Db21wb25lbnQsXG4gIEFYTUNoYXRQcmV2aWV3Q29tcG9uZW50LFxuICBBWE1DaGF0U2VydmljZSxcbiAgQVhNQ2hhdFNlcnZpY2VJbXBsLFxuICBBWE1Db21tZW50TGlzdFZpZXdDb21wb25lbnQsXG4gIEFYTUNvbW1lbnRTZXJ2aWNlLFxuICBBWE1Db21tZW50U2VydmljZUltcGwsXG59IGZyb20gJy4vZmVhdHVyZXMnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICdwbGF0Zm9ybScsXG4gICAgY29tcG9uZW50OiBBWFBSb290TGF5b3V0Q29tcG9uZW50LFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdjaGF0JyxcbiAgICAgICAgY29tcG9uZW50OiBBWE1DaGF0Q29tcG9uZW50LFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhdGg6ICc6aWQnLFxuICAgICAgICAgICAgY29tcG9uZW50OiBBWE1DaGF0UHJldmlld0NvbXBvbmVudCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2NvbW1lbnRzL20vOm1vZHVsZS9lLzppZCcsXG4gICAgICAgIGNvbXBvbmVudDogQVhNQ29tbWVudExpc3RWaWV3Q29tcG9uZW50LFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgLy8gQ2hhdCBDb21wb25lbnRzXG4gICAgQVhNQ2hhdENvbXBvbmVudCxcbiAgICBBWE1DaGF0SXRlbUNvbXBvbmVudCxcbiAgICBBWE1DaGF0UHJldmlld0NvbXBvbmVudCxcbiAgICAvLyBDb21tZW50IENvbXBvbmVudHNcbiAgICBBWE1Db21tZW50TGlzdFZpZXdDb21wb25lbnQsXG4gICAgLy8gTGF5b3V0IENvbXBvbmVudHNcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIC8vIENvbW1vbiBNb2R1bGVzXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpLFxuICAgIC8vIEFjb3JleCBDb3JlIE1vZHVsZXNcbiAgICBBWEZvcm1hdE1vZHVsZSxcbiAgICBBWENvbnZlcnNhdGlvbk1vZHVsZSxcbiAgICBBWENvbW1lbnRNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAvLyBBY29yZXggQ29tcG9uZW50IE1vZHVsZXNcbiAgICBBWFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYQXZhdGFyTW9kdWxlLFxuICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhUZXh0Qm94TW9kdWxlLFxuICAgIEFYU2VhcmNoQm94TW9kdWxlLFxuICAgIEFYVGFic01vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhXeXNpd3lnTW9kdWxlLFxuICAgIEFYTGFiZWxNb2R1bGUsXG4gICAgQVhTZWxlY3RCb3hNb2R1bGUsXG4gICAgQVhGb3JtTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWFRvb2xCYXJNb2R1bGUsXG4gICAgQVhTa2VsZXRvbk1vZHVsZSxcbiAgICBBWFBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRTdGFydFNpZGVDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRIZWFkZXJDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRUb29sYmFyQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgLy8gQ2hhdCBDb21wb25lbnRzXG4gICAgQVhNQ2hhdEl0ZW1Db21wb25lbnQsXG4gICAgQVhNQ2hhdFByZXZpZXdDb21wb25lbnQsXG4gICAgLy8gQ29tbWVudCBDb21wb25lbnRzXG4gICAgQVhNQ29tbWVudExpc3RWaWV3Q29tcG9uZW50LFxuICAgIC8vIE1vZHVsZXNcbiAgICBSb3V0ZXJNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIC8vIFNlcnZpY2VzXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNTWVzc2FnZVNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhNTWVzc2FnZVNlcnZpY2VJbXBsLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNUm9vbVNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhNUm9vbVNlcnZpY2VJbXBsLFxuICAgIH0sXG4gICAgLy8gQ2hhdCBhbmQgQ29tbWVudCBTZXJ2aWNlc1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYTUNoYXRTZXJ2aWNlLFxuICAgICAgdXNlQ2xhc3M6IEFYTUNoYXRTZXJ2aWNlSW1wbCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYTUNvbW1lbnRTZXJ2aWNlLFxuICAgICAgdXNlQ2xhc3M6IEFYTUNvbW1lbnRTZXJ2aWNlSW1wbCxcbiAgICB9LFxuICAgIC8vIEVudGl0eSBQcm92aWRlclxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIsXG4gICAgICB1c2VDbGFzczogQVhNQ29udmVyc2F0aW9uTW9kdWxlRW50aXR5UHJvdmlkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIC8vIE1lbnUgUHJvdmlkZXJcbiAgICAvLyB7XG4gICAgLy8gICBwcm92aWRlOiBBWFBfTUVOVV9QUk9WSURFUixcbiAgICAvLyAgIHVzZUNsYXNzOiBBWE1Db252ZXJzYXRpb25NZW51UHJvdmlkZXIsXG4gICAgLy8gICBtdWx0aTogdHJ1ZSxcbiAgICAvLyB9LFxuICAgIC8vIENvbnZlcnNhdGlvbiBNb2R1bGVcbiAgICBpbXBvcnRQcm92aWRlcnNGcm9tKEFYQ29udmVyc2F0aW9uTW9kdWxlLmZvclJvb3QoKSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNvbnZlcnNhdGlvbk1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvYWNvcmV4LW1vZHVsZXMtY29udmVyc2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i4","i5","i1","i2","i3","i8","i9","i12.AXMChatItemComponent","i6","i7","i10","i11","i12","i13","i14"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-modules-conversation.mjs","sources":["../tmp-esm2022/conversation/lib/const.js","../tmp-esm2022/conversation/lib/entities/message/message.service.js","../tmp-esm2022/conversation/lib/entities/message/message.entity.js","../tmp-esm2022/conversation/lib/entities/message/message.types.js","../tmp-esm2022/conversation/lib/entities/room/room.service.js","../tmp-esm2022/conversation/lib/entities/room/room.entity.js","../tmp-esm2022/conversation/lib/entity.provider.js","../tmp-esm2022/conversation/lib/features/comment/comment.service.js","../tmp-esm2022/conversation/lib/features/comment/comment-lookup-popup.component.js","../tmp-esm2022/conversation/lib/features/comment/comment-list-view.component.js","../tmp-esm2022/conversation/lib/features/chat/chat.service.js","../tmp-esm2022/conversation/lib/features/chat/components/chat-item/chat-item.component.js","../tmp-esm2022/conversation/lib/features/chat/chat.component.js","../tmp-esm2022/conversation/lib/features/chat/chat-preview.helper.js","../tmp-esm2022/conversation/lib/features/chat/components/chat-preview/chat-preview.component.js","../tmp-esm2022/conversation/lib/features/widget/share/comment/comment-widget-view.component.js","../tmp-esm2022/conversation/lib/features/widget/share/comment/comment-widget.config.js","../tmp-esm2022/conversation/lib/conversation.module.js","../tmp-esm2022/conversation/acorex-modules-conversation.js"],"sourcesContent":["const config = {\n i18n: 'conversation',\n module: 'Conversation',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'conversation',\n name: config.module,\n title: `t('module-name', {scope:\"${config.i18n}\"})`,\n icon: 'fa-light fa-comments',\n },\n entities: {\n room: {\n name: 'room',\n title: `t(\"room.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Room`,\n icon: 'fa-light fa-comments',\n },\n message: {\n name: 'message',\n title: `t(\"message.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Message`,\n icon: 'fa-light fa-message',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxNQUFNLEdBQUc7SUFDYixJQUFJLEVBQUUsY0FBYztJQUNwQixNQUFNLEVBQUUsY0FBYztDQUN2QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLE1BQU07SUFDTixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsY0FBYztRQUNyQixJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDbkIsS0FBSyxFQUFFLDRCQUE0QixNQUFNLENBQUMsSUFBSSxLQUFLO1FBQ25ELElBQUksRUFBRSxzQkFBc0I7S0FDN0I7SUFDRCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxvQ0FBb0MsTUFBTSxDQUFDLElBQUksTUFBTTtZQUM1RCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxPQUFPO1lBQy9CLElBQUksRUFBRSxzQkFBc0I7U0FDN0I7UUFDRCxPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSx1Q0FBdUMsTUFBTSxDQUFDLElBQUksTUFBTTtZQUMvRCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxVQUFVO1lBQ2xDLElBQUksRUFBRSxxQkFBcUI7U0FDNUI7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb25maWcgPSB7XG4gIGkxOG46ICdjb252ZXJzYXRpb24nLFxuICBtb2R1bGU6ICdDb252ZXJzYXRpb24nLFxufTtcblxuZXhwb3J0IGNvbnN0IFJvb3RDb25maWcgPSB7XG4gIGNvbmZpZyxcbiAgbW9kdWxlOiB7XG4gICAgcm91dGU6ICdjb252ZXJzYXRpb24nLFxuICAgIG5hbWU6IGNvbmZpZy5tb2R1bGUsXG4gICAgdGl0bGU6IGB0KCdtb2R1bGUtbmFtZScsIHtzY29wZTpcIiR7Y29uZmlnLmkxOG59XCJ9KWAsXG4gICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNvbW1lbnRzJyxcbiAgfSxcbiAgZW50aXRpZXM6IHtcbiAgICByb29tOiB7XG4gICAgICBuYW1lOiAncm9vbScsXG4gICAgICB0aXRsZTogYHQoXCJyb29tLnBsdXJhbC10aXRsZVwiLCB7IHNjb3BlOiBcIiR7Y29uZmlnLmkxOG59XCIgfSlgLFxuICAgICAgc291cmNlOiBgJHtjb25maWcubW9kdWxlfS5Sb29tYCxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS1jb21tZW50cycsXG4gICAgfSxcbiAgICBtZXNzYWdlOiB7XG4gICAgICBuYW1lOiAnbWVzc2FnZScsXG4gICAgICB0aXRsZTogYHQoXCJtZXNzYWdlLnBsdXJhbC10aXRsZVwiLCB7IHNjb3BlOiBcIiR7Y29uZmlnLmkxOG59XCIgfSlgLFxuICAgICAgc291cmNlOiBgJHtjb25maWcubW9kdWxlfS5NZXNzYWdlYCxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS1tZXNzYWdlJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMMessageService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMMessageServiceImpl extends AXMMessageService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.message.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMMessageServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMMessageServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMMessageServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHekMsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSx3QkFBd0Q7Q0FBRztBQUczRyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsaUJBQWlCO0lBQzFEO1FBQ0UsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDOzhHQUhVLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Db252ZXJzYXRpb25NZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlLnR5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYTU1lc3NhZ2VTZXJ2aWNlIGV4dGVuZHMgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPHN0cmluZywgQVhNQ29udmVyc2F0aW9uTWVzc2FnZT4ge31cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTU1lc3NhZ2VTZXJ2aWNlSW1wbCBleHRlbmRzIEFYTU1lc3NhZ2VTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLm1lc3NhZ2UubmFtZX1gKTtcbiAgfVxufVxuIl19","import { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMMessageService } from './message.service';\nexport async function messageFactory(injector) {\n const dataService = injector.get(AXMMessageService);\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.message.name,\n source: '',\n title: RootConfig.entities.message.title,\n formats: {\n individual: RootConfig.entities.message.title,\n plural: RootConfig.entities.message.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.message.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLFFBQWtCO0lBQ3JELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUVwQyxNQUFNLFNBQVMsR0FBYztRQUMzQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQzlCLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1FBQ3RDLE1BQU0sRUFBRSxFQUFFO1FBQ1YsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7UUFDeEMsT0FBTyxFQUFFO1lBQ1AsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDN0MsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDekMsWUFBWSxFQUFFO2dCQUNaLEtBQUssRUFBRSxhQUFhO2dCQUNwQixXQUFXLEVBQUUsVUFBVSxDQUFD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T0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsTUFBTTs0QkFDWixLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLGtDQUFrQzs0QkFDekMsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7cUJBQ0Y7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMLGtCQUFrQixDQUFDOzRCQUNqQixLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO3lCQUN0QyxDQUFDO3FCQUNIO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRW50aXR5LCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVF1ZXJ5VHlwZSwgY3JlYXRlQWxsUXVlcnlWaWV3IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2Uuc2VydmljZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtZXNzYWdlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPEFYUEVudGl0eSB8IG51bGw+IHtcbiAgY29uc3QgZGF0YVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQVhNTWVzc2FnZVNlcnZpY2UpO1xuICBjb25zdCBpMThuID0gUm9vdENvbmZpZy5jb25maWcuaTE4bjtcblxuICBjb25zdCBlbnRpdHlEZWY6IEFYUEVudGl0eSA9IHtcbiAgICBtb2R1bGU6IFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gICAgbmFtZTogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLm5hbWUsXG4gICAgc291cmNlOiAnJyxcbiAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLnRpdGxlLFxuICAgIGZvcm1hdHM6IHtcbiAgICAgIGluZGl2aWR1YWw6IFJvb3RDb25maWcuZW50aXRpZXMubWVzc2FnZS50aXRsZSxcbiAgICAgIHBsdXJhbDogUm9vdENvbmZpZy5lbnRpdGllcy5tZXNzYWdlLnRpdGxlLFxuICAgICAgc2VhcmNoUmVzdWx0OiB7XG4gICAgICAgIHRpdGxlOiAne3sgdGl0bGUgfX0nLFxuICAgICAgICBkZXNjcmlwdGlvbjogUm9vdENvbmZpZy5tb2R1bGUudGl0bGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVsYXRlZEVudGl0aWVzOiBbXSxcbiAgICBncm91cHM6IFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgdGl0bGU6IFJvb3RDb25maWcuZW50aXRpZXMubWVzc2FnZS50aXRsZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgdGl0bGU6IGB0KFwibmFtZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdGl0bGU6IGB0KFwidGl0bGVcIiwgeyBzY29wZTogXCJjb21tb25cIiB9KWAsXG4gICAgICAgIGdyb3VwSWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGFkdmFuY2U6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmxpbmU6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW3sgbmFtZTogJ25hbWUnIH0sIHsgbmFtZTogJ3RpdGxlJyB9XSxcbiAgICBjb21tYW5kczoge1xuICAgICAgY3JlYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBkYXRhU2VydmljZS5pbnNlcnRPbmUoZGF0YSk7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlcyB9O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRlbGV0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5kZWxldGVPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHVwZGF0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZU9uZShkYXRhLmlkLCBkYXRhKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBxdWVyaWVzOiB7XG4gICAgICBieUtleToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5nZXRPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuU2luZ2xlLFxuICAgICAgfSxcbiAgICAgIGxpc3Q6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5xdWVyeSh7IHNraXA6IGUuc2tpcCwgdGFrZTogZS50YWtlLCBmaWx0ZXI6IGUuZmlsdGVyIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuTGlzdCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnRlcmZhY2VzOiB7XG4gICAgICBtYXN0ZXI6IHtcbiAgICAgICAgY3JlYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgc2luZ2xlOiB7XG4gICAgICAgICAgdGl0bGU6ICd7e3RpdGxlfX0nLFxuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnc2VjdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYWN0aW9uczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIGxpc3Q6IHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiBgdChcImNyZWF0ZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5UeXBlTGV2ZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ3QoXCJkZWxldGVJdGVtc1wiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRldGFpbFwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ29wZW4tZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdzZWNvbmRhcnknLFxuICAgICAgICAgICAgICB0eXBlOiAndmlldycsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRlbGV0ZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdmlld3M6IFtcbiAgICAgICAgICAgIGNyZWF0ZUFsbFF1ZXJ5Vmlldyh7XG4gICAgICAgICAgICAgIHNvcnRzOiBbeyBuYW1lOiAnbmFtZScsIGRpcjogJ2FzYycgfV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBlbnRpdHlEZWY7XG59XG4iXX0=","// === Shared Types ===\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2UudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gPT09IFNoYXJlZCBUeXBlcyA9PT1cblxuaW1wb3J0IHsgQVhQQ29udGVudCwgQVhQVXNlclJlZmVyZW5jZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5cbmV4cG9ydCB0eXBlIEFYTVNlZW5UeXBlID0gJ2RlbGl2ZXJlZCcgfCAncmVhZCc7XG5leHBvcnQgdHlwZSBBWE1SZWFjdGlvblR5cGUgPSAnbGlrZScgfCAnbG92ZScgfCAnbGF1Z2gnIHwgJ2FuZ3J5JyB8ICdzYWQnIHwgc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uIHtcbiAgYXV0aG9yOiBBWFBVc2VyUmVmZXJlbmNlO1xuICB0eXBlOiBBWE1SZWFjdGlvblR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhNQ29udmVyc2F0aW9uU2VlbiB7XG4gIGF1dGhvcjogQVhQVXNlclJlZmVyZW5jZTtcbiAgdHlwZTogQVhNU2VlblR5cGU7XG59XG5cbi8vID09PSBDb3JlIE1vZGVscyA9PT1cblxuZXhwb3J0IGludGVyZmFjZSBBWE1Db252ZXJzYXRpb25NZXNzYWdlIGV4dGVuZHMgQVhQRW50aXR5TW9kZWw8c3RyaW5nPiB7XG4gIHJvb21JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBBWFBDb250ZW50O1xuICBhdXRob3I6IEFYUFVzZXJSZWZlcmVuY2U7XG4gIHJlcGx5SWQ/OiBzdHJpbmcgfCBudWxsO1xuICByZWFjdGlvbnM6IEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uW107XG4gIHNlZW46IEFYTUNvbnZlcnNhdGlvblNlZW5bXTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xufVxuIl19","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMRoomService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMRoomServiceImpl extends AXMRoomService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.room.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMRoomServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMRoomServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMRoomServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0aWVzL3Jvb20vcm9vbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHekMsTUFBTSxPQUFnQixjQUFlLFNBQVEsd0JBQXFEO0NBQUc7QUFHckcsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFDcEQ7UUFDRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBSFUsa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTUNvbnZlcnNhdGlvblJvb20gfSBmcm9tICcuL3Jvb20udHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNUm9vbVNlcnZpY2UgZXh0ZW5kcyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGw8c3RyaW5nLCBBWE1Db252ZXJzYXRpb25Sb29tPiB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUm9vbVNlcnZpY2VJbXBsIGV4dGVuZHMgQVhNUm9vbVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMucm9vbS5uYW1lfWApO1xuICB9XG59XG4iXX0=","import { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMRoomService } from './room.service';\nexport async function roomFactory(injector) {\n const dataService = injector.get(AXMRoomService);\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.room.name,\n source: '',\n title: RootConfig.entities.room.title,\n formats: {\n individual: RootConfig.entities.room.title,\n plural: RootConfig.entities.room.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.room.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZW50aXRpZXMvcm9vbS9yb29tLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxRQUFrQjtJQUNsRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRXBDLE1BQU0sU0FBUyxHQUFjO1FBQzNCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUk7UUFDbkMsTUFBTSxFQUFFLEVBQUU7UUFDVixLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztRQUNyQyxPQUFPLEVBQUU7WUFDUCxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUMxQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN0QyxZQUFZLEVBQUU7Z0JBQ1osS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLFdBQVcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUs7YUFDckM7U0FDRjtRQUNELGVBQWUsRUFBRSxFQUFFO1FBQ25CLE1BQU0sRUFBRTtZQUNOO2dCQUNFLEVBQUUsRUFBRSxTQUFTO2dCQUNiLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLO2FBQ3RDO1NBQ0Y7UUFDRCxVQUFVLEVBQUU7WUFDVjtnQkFDRSxJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsZ0NBQWdDO2dCQUN2QyxPQUFPLEVBQUUsU0FBUztnQkFDbEIsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsSUFBSTtxQkFDZDtvQkFDRCxNQUFNLEVBQUU7d0JBQ04sT0FBTyxFQUFFOzRCQUNQLE9BQU8sRUFBRSxJQUFJO3lCQUNkO3dCQUNELE1BQU0sRUFBRTs0QkFDTixPQUFPLEVBQUUsS0FBSzt5QkFDZjtxQkFDRjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFNBQVMsRUFBRTt3QkFDVCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtxQkFDN0I7aUJBQ0Y7Z0JBQ0QsV0FBVyxFQUFFO29CQUNYO3dCQUNFLElBQUksRUFBRSxVQUFVO3FCQUNqQjtpQkFDRjthQUNGO1lBRUQ7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLGlDQUFpQztnQkFDeEMsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUU7d0JBQ0osT0FBTyxFQUFFLElBQUk7cUJBQ2Q7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOLE9BQU8sRUFBRTs0QkFDUCxPQUFPLEVBQUUsSUFBSTt5QkFDZDt3QkFDRCxNQUFNLEVBQUU7NEJBQ04sT0FBTyxFQUFFLEtBQUs7eUJBQ2Y7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxRQUFRO29CQUNsQixTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUk7cUJBQzdCO2lCQUNGO2dCQUNELFdBQVcsRUFBRTtvQkFDWDt3QkFDRSxJQUFJLEVBQUUsVUFBVTtxQkFDakI7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDOUMsUUFBUSxFQUFFO1lBQ1IsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBUyxFQUFFLEVBQUU7b0JBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDckIsQ0FBQzthQUNGO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBTyxFQUFFLEVBQUU7b0JBQ3pCLE9BQU8sTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO2FBQ0Y7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFTLEVBQUUsRUFBRTtvQkFDM0IsT0FBTyxNQUFNLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDcEQsQ0FBQzthQUNGO1NBQ0Y7UUFDRCxPQUFPLEVBQUU7WUFDUCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFVLEVBQUUsRUFBRTtvQkFDNUIsT0FBTyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7Z0JBQ0QsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE1BQU07YUFDaEM7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFNLEVBQUUsRUFBRTtvQkFDeEIsT0FBTyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ25GLENBQUM7Z0JBQ0QsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUk7YUFDOUI7U0FDRjtRQUNELFVBQVUsRUFBRTtZQUNWLE1BQU0sRUFBRTtnQkFDTixNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFO3dCQUNSOzRCQUNFLEVBQUUsRUFBRSxTQUFTO3lCQUNkO3FCQUNGO29CQUNELFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQzt3Q0FDVixLQUFLLEVBQUUsQ0FBQztxQ0FDVDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFFRDs0QkFDRSxJQUFJLEVBQUUsT0FBTzs0QkFDYixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQzt3Q0FDVixLQUFLLEVBQUUsQ0FBQztxQ0FDVDtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFO3dCQUNSOzRCQUNFLEVBQUUsRUFBRSxTQUFTO3lCQUNkO3FCQUNGO29CQUNELFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQzt3Q0FDVixLQUFLLEVBQUUsQ0FBQztxQ0FDVDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFFRDs0QkFDRSxJQUFJLEVBQUUsT0FBTzs0QkFDYixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQzt3Q0FDVixLQUFLLEVBQUUsQ0FBQztxQ0FDVDtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFLFdBQVc7b0JBQ2xCLFFBQVEsRUFBRTt3QkFDUjs0QkFDRSxFQUFFLEVBQUUsU0FBUzs0QkFDYixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsRUFBRTtxQ0FDWjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7d0NBQ1YsS0FBSyxFQUFFLENBQUM7cUNBQ1Q7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBRUQ7NEJBQ0UsSUFBSSxFQUFFLE9BQU87NEJBQ2IsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7d0NBQ1YsS0FBSyxFQUFFLENBQUM7cUNBQ1Q7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFLEVBQUU7aUJBQ1o7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxLQUFLLEVBQUUsa0NBQWtDOzRCQUN6QyxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFNBQVM7NEJBQ25CLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxTQUFTO3lCQUN2Qzt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsdUNBQXVDOzRCQUM5QyxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFNBQVM7NEJBQ25CLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxRQUFRO3lCQUN0Qzt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsa0NBQWtDOzRCQUN6QyxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsUUFBUSxFQUFFLFdBQVc7NEJBQ3JCLElBQUksRUFBRSxNQUFNOzRCQUNaLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO3lCQUN4Qzt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsa0NBQWtDOzRCQUN6QyxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFdBQVc7NEJBQ3JCLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO3lCQUN4QztxQkFDRjtvQkFDRCxLQUFLLEVBQUU7d0JBQ0wsa0JBQWtCLENBQUM7NEJBQ2pCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7eUJBQ3RDLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBFbnRpdHksIEFYUEVudGl0eUNvbW1hbmRTY29wZSwgQVhQRW50aXR5UXVlcnlUeXBlLCBjcmVhdGVBbGxRdWVyeVZpZXcgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Sb29tU2VydmljZSB9IGZyb20gJy4vcm9vbS5zZXJ2aWNlJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJvb21GYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdG9yLmdldChBWE1Sb29tU2VydmljZSk7XG4gIGNvbnN0IGkxOG4gPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuXG4gIGNvbnN0IGVudGl0eURlZjogQVhQRW50aXR5ID0ge1xuICAgIG1vZHVsZTogUm9vdENvbmZpZy5tb2R1bGUubmFtZSxcbiAgICBuYW1lOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20ubmFtZSxcbiAgICBzb3VyY2U6ICcnLFxuICAgIHRpdGxlOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20udGl0bGUsXG4gICAgZm9ybWF0czoge1xuICAgICAgaW5kaXZpZHVhbDogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLnRpdGxlLFxuICAgICAgcGx1cmFsOiBSb290Q29uZmlnLmVudGl0aWVzLnJvb20udGl0bGUsXG4gICAgICBzZWFyY2hSZXN1bHQ6IHtcbiAgICAgICAgdGl0bGU6ICd7eyB0aXRsZSB9fScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5yb29tLnRpdGxlLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHByb3BlcnRpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICB0aXRsZTogYHQoXCJuYW1lXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSlgLFxuICAgICAgICBncm91cElkOiAnc2VjdGlvbicsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBzb3J0OiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICBhZHZhbmNlOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5saW5lOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcnVsZTogJ3JlcXVpcmVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICB0aXRsZTogYHQoXCJ0aXRsZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjb2x1bW5zOiBbeyBuYW1lOiAnbmFtZScgfSwgeyBuYW1lOiAndGl0bGUnIH1dLFxuICAgIGNvbW1hbmRzOiB7XG4gICAgICBjcmVhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGRhdGFTZXJ2aWNlLmluc2VydE9uZShkYXRhKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogcmVzIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVsZXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmdldE9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5TaW5nbGUsXG4gICAgICB9LFxuICAgICAgbGlzdDoge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnF1ZXJ5KHsgc2tpcDogZS5za2lwLCB0YWtlOiBlLnRha2UsIGZpbHRlcjogZS5maWx0ZXIgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5MaXN0LFxuICAgICAgfSxcbiAgICB9LFxuICAgIGludGVyZmFjZXM6IHtcbiAgICAgIG1hc3Rlcjoge1xuICAgICAgICBjcmVhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBzaW5nbGU6IHtcbiAgICAgICAgICB0aXRsZTogJ3t7dGl0bGV9fScsXG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6IGB0KFwiY3JlYXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSlgLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnY3JlYXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRlbGV0ZUl0ZW1zXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGV0YWlsXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnb3Blbi1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICd2aWV3JyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGVsZXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB2aWV3czogW1xuICAgICAgICAgICAgY3JlYXRlQWxsUXVlcnlWaWV3KHtcbiAgICAgICAgICAgICAgc29ydHM6IFt7IG5hbWU6ICduYW1lJywgZGlyOiAnYXNjJyB9XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIGVudGl0eURlZjtcbn1cbiJdfQ==","import { Injectable, Injector } from '@angular/core';\nimport { RootConfig } from './const';\nimport { messageFactory, roomFactory } from './entities';\nimport * as i0 from \"@angular/core\";\nexport class AXMConversationModuleEntityProvider {\n constructor(injector) {\n this.injector = injector;\n }\n preload() {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity) => ({\n module: module,\n entity: entity.name,\n }));\n }\n async get(moduleName, entityName) {\n switch (entityName) {\n case 'room':\n return roomFactory(this.injector);\n case 'message':\n return messageFactory(this.injector);\n default:\n return null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModuleEntityProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModuleEntityProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModuleEntityProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2VudGl0eS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUd6RCxNQUFNLE9BQU8sbUNBQW1DO0lBQzlDLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRW5DLE9BQU87UUFDWixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUUsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7U0FDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO1FBQ3JELFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDbkIsS0FBSyxNQUFNO2dCQUNULE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDOzhHQXBCVSxtQ0FBbUM7a0hBQW5DLG1DQUFtQzs7MkZBQW5DLG1DQUFtQztrQkFEL0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEVudGl0eSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUEVudGl0eURlZmluaXRpb25Mb2FkZXIsIEFYUEVudGl0eVByZWxvYWRFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IG1lc3NhZ2VGYWN0b3J5LCByb29tRmFjdG9yeSB9IGZyb20gJy4vZW50aXRpZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNQ29udmVyc2F0aW9uTW9kdWxlRW50aXR5UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBFbnRpdHlEZWZpbml0aW9uTG9hZGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgcHVibGljIHByZWxvYWQoKTogQVhQRW50aXR5UHJlbG9hZEVudGl0eVtdIHtcbiAgICBjb25zdCBtb2R1bGUgPSBSb290Q29uZmlnLm1vZHVsZS5uYW1lO1xuICAgIHJldHVybiBBcnJheS5mcm9tKE9iamVjdC52YWx1ZXMoUm9vdENvbmZpZy5lbnRpdGllcykpLm1hcCgoZW50aXR5OiBhbnkpID0+ICh7XG4gICAgICBtb2R1bGU6IG1vZHVsZSxcbiAgICAgIGVudGl0eTogZW50aXR5Lm5hbWUsXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldChtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICAgIHN3aXRjaCAoZW50aXR5TmFtZSkge1xuICAgICAgY2FzZSAncm9vbSc6XG4gICAgICAgIHJldHVybiByb29tRmFjdG9yeSh0aGlzLmluamVjdG9yKTtcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICByZXR1cm4gbWVzc2FnZUZhY3RvcnkodGhpcy5pbmplY3Rvcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMMessageService } from '../../entities/message/message.service';\nimport { AXMRoomService } from '../../entities/room/room.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Abstract Comment Service defining the contract for comment functionality\n */\nexport class AXMCommentService {\n}\nexport class AXMCommentServiceImpl {\n constructor() {\n this.roomService = inject(AXMRoomService);\n this.messageService = inject(AXMMessageService);\n this.sessionService = inject(AXPSessionService);\n this.usersService = inject(AXMUsersEntityService);\n }\n // === Helper Methods ===\n getCurrentUser() {\n const user = this.sessionService.user;\n return {\n id: user?.id || 'guest-user',\n type: 'user',\n };\n }\n async getUserInfo(userId) {\n try {\n const user = await this.usersService.getOne(userId);\n return {\n id: user.id,\n userName: user.username || user.id,\n firstName: user.firstName || '',\n lastName: user.lastName || '',\n fullName: `${user.firstName || ''} ${user.lastName || ''}`.trim() || 'Unknown User',\n avatar: '',\n };\n }\n catch (error) {\n console.error(`Failed to get user info for ID: ${userId}`, error);\n return {\n id: userId,\n userName: userId,\n firstName: 'Unknown',\n lastName: 'User',\n fullName: 'Unknown User',\n avatar: '',\n };\n }\n }\n formatRoomId(entityId, instanceId, roomType = 'default') {\n return `${roomType}:${entityId}:${instanceId}`;\n }\n async formatComment(message) {\n const currentUserId = this.getCurrentUser().id;\n // Check if the current user has liked this message\n const isLiked = (message.reactions || []).some((reaction) => reaction.author.id === currentUserId && reaction.type === 'like');\n // Count total reactions\n const reactionsCount = (message.reactions || []).filter((r) => r.type === 'like').length;\n // Get the full user info for the author\n const userInfo = await this.getUserInfo(message.author.id);\n return {\n ...message,\n author: {\n ...message.author,\n ...userInfo,\n },\n isFromCurrentUser: message.author.id === currentUserId,\n formattedDate: new Date(message.createdAt || new Date()).toLocaleString(),\n isLiked,\n reactionsCount,\n replies: [],\n };\n }\n async buildCommentHierarchy(comments) {\n // Create a map for quick lookup of comments by ID\n const commentMap = new Map();\n const rootComments = [];\n // First pass: add all comments to the map\n for (const comment of comments) {\n commentMap.set(comment.id, comment);\n // Initialize the replies array if not already present\n if (!comment.replies) {\n comment.replies = [];\n }\n // If this is a root comment (no replyId), add it to the root comments array\n if (!comment.replyId) {\n rootComments.push(comment);\n }\n }\n // Second pass: build the hierarchy by adding replies to their parent comments\n for (const comment of comments) {\n if (comment.replyId) {\n const parentComment = commentMap.get(comment.replyId);\n if (parentComment && parentComment.replies) {\n parentComment.replies.push(comment);\n }\n else {\n // If parent not found (might be deleted), treat as a root comment\n rootComments.push(comment);\n }\n }\n }\n // Sort the root comments and their replies by creation date (newest first)\n const sortByDate = (a, b) => {\n const dateA = a.createdAt ? new Date(a.createdAt).getTime() : 0;\n const dateB = b.createdAt ? new Date(b.createdAt).getTime() : 0;\n return dateB - dateA;\n };\n rootComments.sort(sortByDate);\n // Sort the replies within each comment\n for (const comment of rootComments) {\n if (comment.replies && comment.replies.length > 0) {\n comment.replies.sort(sortByDate);\n }\n }\n return rootComments;\n }\n // === Room Operations ===\n async getRoomList(skip = 0, take = 100) {\n return this.roomService.query({ skip, take });\n }\n async getRoomDetails(roomId) {\n return this.roomService.getOne(roomId);\n }\n async createRoom(roomData) {\n return this.roomService.insertOne(roomData);\n }\n async ensureRoomExists(entityId, instanceId, roomType = 'default') {\n const roomId = this.formatRoomId(entityId, instanceId, roomType);\n try {\n // Check if room exists\n await this.getRoomDetails(roomId);\n return roomId;\n }\n catch (error) {\n // If room doesn't exist, create it\n const roomData = {\n id: roomId, // Provide the ID directly for comments\n title: `Comments for ${entityId}:${instanceId}`,\n members: [this.getCurrentUser()],\n };\n // Create a new room or return the ID if it already exists\n try {\n const result = await this.createRoom(roomData);\n return typeof result === 'string' ? result : roomId;\n }\n catch (e) {\n // If we get a duplicate error, the room was created by another request\n return roomId;\n }\n }\n }\n // === Comment Operations ===\n async query(queryRequest) {\n const { params, skip = 0, take = 20 } = queryRequest;\n const { entityId, instanceId, roomType = 'default' } = params || {};\n if (!entityId || !instanceId) {\n throw new Error('EntityId and InstanceId are required for querying comments');\n }\n const roomId = this.formatRoomId(entityId, instanceId, roomType);\n // Fetch messages for this room\n const result = await this.messageService.query({\n skip,\n take,\n filter: {\n field: 'roomId',\n value: roomId,\n operator: { type: 'equal' },\n },\n });\n // Transform messages to comments\n const comments = await Promise.all(result.items.map((message) => this.formatComment(message)));\n // Build comment hierarchy\n const hierarchicalComments = await this.buildCommentHierarchy(comments);\n return {\n items: hierarchicalComments,\n total: result.total,\n };\n }\n async getOne(id) {\n const message = await this.messageService.getOne(id);\n return this.formatComment(message);\n }\n async insertOne(commentData) {\n const { entityId, instanceId, roomType = 'default', content, contentType = 'text', replyId, isPrivate, } = commentData;\n // Ensure the room exists\n const roomId = await this.ensureRoomExists(entityId, instanceId, roomType);\n // Create the message content\n const messageContent = {\n content,\n contentType,\n };\n // Create the message object\n const message = {\n roomId,\n message: messageContent,\n author: this.getCurrentUser(),\n replyId: replyId || null,\n reactions: [],\n seen: [],\n };\n // Insert the message\n const messageId = await this.messageService.insertOne(message);\n // Fetch the full message to return as a comment entity\n const insertedMessage = await this.messageService.getOne(messageId);\n return this.formatComment(insertedMessage);\n }\n async updateOne(id, update) {\n // If content is being updated, format it correctly\n let messageUpdate = {};\n if (update.message?.content) {\n messageUpdate.message = {\n content: update.message.content,\n contentType: update.message.contentType || 'text',\n };\n }\n // Apply the update\n const result = await this.messageService.updateOne(id, messageUpdate);\n // Return as a comment entity\n return this.formatComment(result);\n }\n async deleteOne(id) {\n try {\n await this.messageService.deleteOne(id);\n return true;\n }\n catch (error) {\n console.error('Failed to delete comment:', error);\n return false;\n }\n }\n // === Comment-Specific Operations ===\n async like(messageId) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n // Check if the user has already liked this message\n const reactions = message.reactions || [];\n const existingReaction = reactions.find((r) => r.author.id === author.id && r.type === 'like');\n let updatedReactions;\n if (existingReaction) {\n // If the reaction exists, remove it (unlike)\n updatedReactions = reactions.filter((r) => !(r.author.id === author.id && r.type === 'like'));\n }\n else {\n // If the reaction doesn't exist, add it (like)\n updatedReactions = [...reactions, { author, type: 'like' }];\n }\n // Update the message with the new reactions\n const updatedMessage = await this.messageService.updateOne(messageId, { reactions: updatedReactions });\n // Return as a comment entity\n return this.formatComment(updatedMessage);\n }\n async getCommentCount(entityId, instanceId, roomType = 'default') {\n const roomId = this.formatRoomId(entityId, instanceId, roomType);\n try {\n const result = await this.messageService.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'roomId',\n value: roomId,\n operator: { type: 'equal' },\n },\n });\n return result.total;\n }\n catch (error) {\n console.error('Failed to get comment count:', error);\n return 0;\n }\n }\n async getAllCommentsWithReplies(entityId, instanceId, roomType = 'default', skip = 0, take = 100) {\n const queryRequest = {\n params: { entityId, instanceId, roomType },\n skip,\n take,\n };\n return this.query(queryRequest);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentServiceImpl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentServiceImpl, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFJbEU7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlCQUFpQjtDQThDdEM7QUFLRCxNQUFNLE9BQU8scUJBQXFCO0lBSGxDO1FBSW1CLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBeVUvRDtJQXZVQyx5QkFBeUI7SUFFakIsY0FBYztRQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUN0QyxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksWUFBWTtZQUM1QixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFjO1FBQ3RDLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFH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TUFBTSxZQUFZLEdBQW9CO1lBQ3BDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFO1lBQzFDLElBQUk7WUFDSixJQUFJO1NBQ0wsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsQyxDQUFDOzhHQTVVVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZwQixNQUFNOzsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNVXNlcnNFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3NlY3VyaXR5LW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHtcbiAgQVhQQ29udGVudCxcbiAgQVhQQ29udGVudFR5cGUsXG4gIEFYUFBhZ2VkTGlzdFJlc3VsdCxcbiAgQVhQUXVlcnlSZXF1ZXN0LFxuICBBWFBVc2VyUmVmZXJlbmNlLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWE1NZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2UsIEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLnR5cGVzJztcbmltcG9ydCB7IEFYTVJvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvcm9vbS9yb29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uUm9vbSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3Jvb20vcm9vbS50eXBlcyc7XG5pbXBvcnQgeyBBWE1Db21tZW50TWVzc2FnZSwgQVhNQ29tbWVudFVzZXIsIEFYTUNyZWF0ZUNvbW1lbnREdG8gfSBmcm9tICcuL2NvbW1lbnQudHlwZSc7XG5cbi8qKlxuICogQWJzdHJhY3QgQ29tbWVudCBTZXJ2aWNlIGRlZmluaW5nIHRoZSBjb250cmFjdCBmb3IgY29tbWVudCBmdW5jdGlvbmFsaXR5XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWE1Db21tZW50U2VydmljZSB7XG4gIC8qKlxuICAgKiBRdWVyaWVzIGNvbW1lbnRzIGJhc2VkIG9uIHByb3ZpZGVkIHJlcXVlc3QgcGFyYW1ldGVyc1xuICAgKi9cbiAgYWJzdHJhY3QgcXVlcnkocXVlcnlSZXF1ZXN0OiBBWFBRdWVyeVJlcXVlc3QpOiBQcm9taXNlPEFYUFBhZ2VkTGlzdFJlc3VsdDxBWE1Db21tZW50TWVzc2FnZT4+O1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgc2luZ2xlIGNvbW1lbnQgYnkgSURcbiAgICovXG4gIGFic3RyYWN0IGdldE9uZShpZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50TWVzc2FnZT47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29tbWVudFxuICAgKi9cbiAgYWJzdHJhY3QgaW5zZXJ0T25lKGNvbW1lbnREYXRhOiBBWE1DcmVhdGVDb21tZW50RHRvKTogUHJvbWlzZTxBWE1Db21tZW50TWVzc2FnZT47XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgY29tbWVudFxuICAgKi9cbiAgYWJzdHJhY3QgdXBkYXRlT25lKGlkOiBzdHJpbmcsIHVwZGF0ZTogUGFydGlhbDxBWE1Db21tZW50TWVzc2FnZT4pOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlPjtcblxuICAvKipcbiAgICogRGVsZXRlcyBhIGNvbW1lbnRcbiAgICovXG4gIGFic3RyYWN0IGRlbGV0ZU9uZShpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVG9nZ2xlcyBsaWtlIHN0YXR1cyBmb3IgYSBjb21tZW50XG4gICAqL1xuICBhYnN0cmFjdCBsaWtlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db21tZW50TWVzc2FnZT47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNvbW1lbnQgY291bnQgZm9yIGFuIGVudGl0eVxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0Q29tbWVudENvdW50KGVudGl0eUlkOiBzdHJpbmcsIGluc3RhbmNlSWQ6IHN0cmluZywgcm9vbVR5cGU/OiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGNvbW1lbnRzIHdpdGggdGhlaXIgcmVwbGllc1xuICAgKi9cbiAgYWJzdHJhY3QgZ2V0QWxsQ29tbWVudHNXaXRoUmVwbGllcyhcbiAgICBlbnRpdHlJZDogc3RyaW5nLFxuICAgIGluc3RhbmNlSWQ6IHN0cmluZyxcbiAgICByb29tVHlwZT86IHN0cmluZyxcbiAgICBza2lwPzogbnVtYmVyLFxuICAgIHRha2U/OiBudW1iZXIsXG4gICk6IFByb21pc2U8QVhQUGFnZWRMaXN0UmVzdWx0PEFYTUNvbW1lbnRNZXNzYWdlPj47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Db21tZW50U2VydmljZUltcGwgaW1wbGVtZW50cyBBWE1Db21tZW50U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm9vbVNlcnZpY2UgPSBpbmplY3QoQVhNUm9vbVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KEFYTU1lc3NhZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcnNTZXJ2aWNlID0gaW5qZWN0KEFYTVVzZXJzRW50aXR5U2VydmljZSk7XG5cbiAgLy8gPT09IEhlbHBlciBNZXRob2RzID09PVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogQVhQVXNlclJlZmVyZW5jZSB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcjtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHVzZXI/LmlkIHx8ICdndWVzdC11c2VyJyxcbiAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRVc2VySW5mbyh1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29tbWVudFVzZXI+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMudXNlcnNTZXJ2aWNlLmdldE9uZSh1c2VySWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHVzZXIuaWQsXG4gICAgICAgIHVzZXJOYW1lOiB1c2VyLnVzZXJuYW1lIHx8IHVzZXIuaWQsXG4gICAgICAgIGZpcnN0TmFtZTogdXNlci5maXJzdE5hbWUgfHwgJycsXG4gICAgICAgIGxhc3ROYW1lOiB1c2VyLmxhc3ROYW1lIHx8ICcnLFxuICAgICAgICBmdWxsTmFtZTogYCR7dXNlci5maXJzdE5hbWUgfHwgJyd9ICR7dXNlci5sYXN0TmFtZSB8fCAnJ31gLnRyaW0oKSB8fCAnVW5rbm93biBVc2VyJyxcbiAgICAgICAgYXZhdGFyOiAnJyxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBnZXQgdXNlciBpbmZvIGZvciBJRDogJHt1c2VySWR9YCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHVzZXJJZCxcbiAgICAgICAgdXNlck5hbWU6IHVzZXJJZCxcbiAgICAgICAgZmlyc3ROYW1lOiAnVW5rbm93bicsXG4gICAgICAgIGxhc3ROYW1lOiAnVXNlcicsXG4gICAgICAgIGZ1bGxOYW1lOiAnVW5rbm93biBVc2VyJyxcbiAgICAgICAgYXZhdGFyOiAnJyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRSb29tSWQoZW50aXR5SWQ6IHN0cmluZywgaW5zdGFuY2VJZDogc3RyaW5nLCByb29tVHlwZTogc3RyaW5nID0gJ2RlZmF1bHQnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cm9vbVR5cGV9OiR7ZW50aXR5SWR9OiR7aW5zdGFuY2VJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmb3JtYXRDb21tZW50KG1lc3NhZ2U6IEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2UpOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlPiB7XG4gICAgY29uc3QgY3VycmVudFVzZXJJZCA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZDtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIGxpa2VkIHRoaXMgbWVzc2FnZVxuICAgIGNvbnN0IGlzTGlrZWQgPSAobWVzc2FnZS5yZWFjdGlvbnMgfHwgW10pLnNvbWUoXG4gICAgICAocmVhY3Rpb24pID0+IHJlYWN0aW9uLmF1dGhvci5pZCA9PT0gY3VycmVudFVzZXJJZCAmJiByZWFjdGlvbi50eXBlID09PSAnbGlrZScsXG4gICAgKTtcblxuICAgIC8vIENvdW50IHRvdGFsIHJlYWN0aW9uc1xuICAgIGNvbnN0IHJlYWN0aW9uc0NvdW50ID0gKG1lc3NhZ2UucmVhY3Rpb25zIHx8IFtdKS5maWx0ZXIoKHIpID0+IHIudHlwZSA9PT0gJ2xpa2UnKS5sZW5ndGg7XG5cbiAgICAvLyBHZXQgdGhlIGZ1bGwgdXNlciBpbmZvIGZvciB0aGUgYXV0aG9yXG4gICAgY29uc3QgdXNlckluZm8gPSBhd2FpdCB0aGlzLmdldFVzZXJJbmZvKG1lc3NhZ2UuYXV0aG9yLmlkKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5tZXNzYWdlLFxuICAgICAgYXV0aG9yOiB7XG4gICAgICAgIC4uLm1lc3NhZ2UuYXV0aG9yLFxuICAgICAgICAuLi51c2VySW5mbyxcbiAgICAgIH0sXG4gICAgICBpc0Zyb21DdXJyZW50VXNlcjogbWVzc2FnZS5hdXRob3IuaWQgPT09IGN1cnJlbnRVc2VySWQsXG4gICAgICBmb3JtYXR0ZWREYXRlOiBuZXcgRGF0ZShtZXNzYWdlLmNyZWF0ZWRBdCB8fCBuZXcgRGF0ZSgpKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgaXNMaWtlZCxcbiAgICAgIHJlYWN0aW9uc0NvdW50LFxuICAgICAgcmVwbGllczogW10sXG4gICAgfSBhcyBBWE1Db21tZW50TWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRDb21tZW50SGllcmFyY2h5KGNvbW1lbnRzOiBBWE1Db21tZW50TWVzc2FnZVtdKTogUHJvbWlzZTxBWE1Db21tZW50TWVzc2FnZVtdPiB7XG4gICAgLy8gQ3JlYXRlIGEgbWFwIGZvciBxdWljayBsb29rdXAgb2YgY29tbWVudHMgYnkgSURcbiAgICBjb25zdCBjb21tZW50TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFYTUNvbW1lbnRNZXNzYWdlPigpO1xuICAgIGNvbnN0IHJvb3RDb21tZW50czogQVhNQ29tbWVudE1lc3NhZ2VbXSA9IFtdO1xuXG4gICAgLy8gRmlyc3QgcGFzczogYWRkIGFsbCBjb21tZW50cyB0byB0aGUgbWFwXG4gICAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgICBjb21tZW50TWFwLnNldChjb21tZW50LmlkLCBjb21tZW50KTtcblxuICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcmVwbGllcyBhcnJheSBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgICBpZiAoIWNvbW1lbnQucmVwbGllcykge1xuICAgICAgICBjb21tZW50LnJlcGxpZXMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhpcyBpcyBhIHJvb3QgY29tbWVudCAobm8gcmVwbHlJZCksIGFkZCBpdCB0byB0aGUgcm9vdCBjb21tZW50cyBhcnJheVxuICAgICAgaWYgKCFjb21tZW50LnJlcGx5SWQpIHtcbiAgICAgICAgcm9vdENvbW1lbnRzLnB1c2goY29tbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2Vjb25kIHBhc3M6IGJ1aWxkIHRoZSBoaWVyYXJjaHkgYnkgYWRkaW5nIHJlcGxpZXMgdG8gdGhlaXIgcGFyZW50IGNvbW1lbnRzXG4gICAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgICBpZiAoY29tbWVudC5yZXBseUlkKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudENvbW1lbnQgPSBjb21tZW50TWFwLmdldChjb21tZW50LnJlcGx5SWQpO1xuICAgICAgICBpZiAocGFyZW50Q29tbWVudCAmJiBwYXJlbnRDb21tZW50LnJlcGxpZXMpIHtcbiAgICAgICAgICBwYXJlbnRDb21tZW50LnJlcGxpZXMucHVzaChjb21tZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBwYXJlbnQgbm90IGZvdW5kIChtaWdodCBiZSBkZWxldGVkKSwgdHJlYXQgYXMgYSByb290IGNvbW1lbnRcbiAgICAgICAgICByb290Q29tbWVudHMucHVzaChjb21tZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNvcnQgdGhlIHJvb3QgY29tbWVudHMgYW5kIHRoZWlyIHJlcGxpZXMgYnkgY3JlYXRpb24gZGF0ZSAobmV3ZXN0IGZpcnN0KVxuICAgIGNvbnN0IHNvcnRCeURhdGUgPSAoYTogQVhNQ29tbWVudE1lc3NhZ2UsIGI6IEFYTUNvbW1lbnRNZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCBkYXRlQSA9IGEuY3JlYXRlZEF0ID8gbmV3IERhdGUoYS5jcmVhdGVkQXQpLmdldFRpbWUoKSA6IDA7XG4gICAgICBjb25zdCBkYXRlQiA9IGIuY3JlYXRlZEF0ID8gbmV3IERhdGUoYi5jcmVhdGVkQXQpLmdldFRpbWUoKSA6IDA7XG4gICAgICByZXR1cm4gZGF0ZUIgLSBkYXRlQTtcbiAgICB9O1xuXG4gICAgcm9vdENvbW1lbnRzLnNvcnQoc29ydEJ5RGF0ZSk7XG5cbiAgICAvLyBTb3J0IHRoZSByZXBsaWVzIHdpdGhpbiBlYWNoIGNvbW1lbnRcbiAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2Ygcm9vdENvbW1lbnRzKSB7XG4gICAgICBpZiAoY29tbWVudC5yZXBsaWVzICYmIGNvbW1lbnQucmVwbGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbW1lbnQucmVwbGllcy5zb3J0KHNvcnRCeURhdGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290Q29tbWVudHM7XG4gIH1cblxuICAvLyA9PT0gUm9vbSBPcGVyYXRpb25zID09PVxuXG4gIGFzeW5jIGdldFJvb21MaXN0KHNraXAgPSAwLCB0YWtlID0gMTAwKSB7XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UucXVlcnkoeyBza2lwLCB0YWtlIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0Um9vbURldGFpbHMocm9vbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yb29tU2VydmljZS5nZXRPbmUocm9vbUlkKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVJvb20ocm9vbURhdGE6IE9taXQ8QVhNQ29udmVyc2F0aW9uUm9vbSwgJ2lkJz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnJvb21TZXJ2aWNlLmluc2VydE9uZShyb29tRGF0YSk7XG4gIH1cblxuICBhc3luYyBlbnN1cmVSb29tRXhpc3RzKGVudGl0eUlkOiBzdHJpbmcsIGluc3RhbmNlSWQ6IHN0cmluZywgcm9vbVR5cGU6IHN0cmluZyA9ICdkZWZhdWx0Jyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgcm9vbUlkID0gdGhpcy5mb3JtYXRSb29tSWQoZW50aXR5SWQsIGluc3RhbmNlSWQsIHJvb21UeXBlKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBDaGVjayBpZiByb29tIGV4aXN0c1xuICAgICAgYXdhaXQgdGhpcy5nZXRSb29tRGV0YWlscyhyb29tSWQpO1xuICAgICAgcmV0dXJuIHJvb21JZDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWYgcm9vbSBkb2Vzbid0IGV4aXN0LCBjcmVhdGUgaXRcbiAgICAgIGNvbnN0IHJvb21EYXRhID0ge1xuICAgICAgICBpZDogcm9vbUlkLCAvLyBQcm92aWRlIHRoZSBJRCBkaXJlY3RseSBmb3IgY29tbWVudHNcbiAgICAgICAgdGl0bGU6IGBDb21tZW50cyBmb3IgJHtlbnRpdHlJZH06JHtpbnN0YW5jZUlkfWAsXG4gICAgICAgIG1lbWJlcnM6IFt0aGlzLmdldEN1cnJlbnRVc2VyKCldLFxuICAgICAgfTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IHJvb20gb3IgcmV0dXJuIHRoZSBJRCBpZiBpdCBhbHJlYWR5IGV4aXN0c1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jcmVhdGVSb29tKHJvb21EYXRhKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogcm9vbUlkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBJZiB3ZSBnZXQgYSBkdXBsaWNhdGUgZXJyb3IsIHRoZSByb29tIHdhcyBjcmVhdGVkIGJ5IGFub3RoZXIgcmVxdWVzdFxuICAgICAgICByZXR1cm4gcm9vbUlkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vID09PSBDb21tZW50IE9wZXJhdGlvbnMgPT09XG5cbiAgYXN5bmMgcXVlcnkocXVlcnlSZXF1ZXN0OiBBWFBRdWVyeVJlcXVlc3QpOiBQcm9taXNlPEFYUFBhZ2VkTGlzdFJlc3VsdDxBWE1Db21tZW50TWVzc2FnZT4+IHtcbiAgICBjb25zdCB7IHBhcmFtcywgc2tpcCA9IDAsIHRha2UgPSAyMCB9ID0gcXVlcnlSZXF1ZXN0O1xuICAgIGNvbnN0IHsgZW50aXR5SWQsIGluc3RhbmNlSWQsIHJvb21UeXBlID0gJ2RlZmF1bHQnIH0gPSBwYXJhbXMgfHwge307XG5cbiAgICBpZiAoIWVudGl0eUlkIHx8ICFpbnN0YW5jZUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eUlkIGFuZCBJbnN0YW5jZUlkIGFyZSByZXF1aXJlZCBmb3IgcXVlcnlpbmcgY29tbWVudHMnKTtcbiAgICB9XG5cbiAgICBjb25zdCByb29tSWQgPSB0aGlzLmZvcm1hdFJvb21JZChlbnRpdHlJZCwgaW5zdGFuY2VJZCwgcm9vbVR5cGUpO1xuXG4gICAgLy8gRmV0Y2ggbWVzc2FnZXMgZm9yIHRoaXMgcm9vbVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UucXVlcnkoe1xuICAgICAgc2tpcCxcbiAgICAgIHRha2UsXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgZmllbGQ6ICdyb29tSWQnLFxuICAgICAgICB2YWx1ZTogcm9vbUlkLFxuICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnZXF1YWwnIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIG1lc3NhZ2VzIHRvIGNvbW1lbnRzXG4gICAgY29uc3QgY29tbWVudHMgPSBhd2FpdCBQcm9taXNlLmFsbChyZXN1bHQuaXRlbXMubWFwKChtZXNzYWdlKSA9PiB0aGlzLmZvcm1hdENvbW1lbnQobWVzc2FnZSkpKTtcblxuICAgIC8vIEJ1aWxkIGNvbW1lbnQgaGllcmFyY2h5XG4gICAgY29uc3QgaGllcmFyY2hpY2FsQ29tbWVudHMgPSBhd2FpdCB0aGlzLmJ1aWxkQ29tbWVudEhpZXJhcmNoeShjb21tZW50cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbXM6IGhpZXJhcmNoaWNhbENvbW1lbnRzLFxuICAgICAgdG90YWw6IHJlc3VsdC50b3RhbCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ2V0T25lKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlPiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKGlkKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRDb21tZW50KG1lc3NhZ2UpO1xuICB9XG5cbiAgYXN5bmMgaW5zZXJ0T25lKGNvbW1lbnREYXRhOiBBWE1DcmVhdGVDb21tZW50RHRvKTogUHJvbWlzZTxBWE1Db21tZW50TWVzc2FnZT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGVudGl0eUlkLFxuICAgICAgaW5zdGFuY2VJZCxcbiAgICAgIHJvb21UeXBlID0gJ2RlZmF1bHQnLFxuICAgICAgY29udGVudCxcbiAgICAgIGNvbnRlbnRUeXBlID0gJ3RleHQnIGFzIEFYUENvbnRlbnRUeXBlLFxuICAgICAgcmVwbHlJZCxcbiAgICAgIGlzUHJpdmF0ZSxcbiAgICB9ID0gY29tbWVudERhdGE7XG5cbiAgICAvLyBFbnN1cmUgdGhlIHJvb20gZXhpc3RzXG4gICAgY29uc3Qgcm9vbUlkID0gYXdhaXQgdGhpcy5lbnN1cmVSb29tRXhpc3RzKGVudGl0eUlkLCBpbnN0YW5jZUlkLCByb29tVHlwZSk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIG1lc3NhZ2UgY29udGVudFxuICAgIGNvbnN0IG1lc3NhZ2VDb250ZW50OiBBWFBDb250ZW50ID0ge1xuICAgICAgY29udGVudCxcbiAgICAgIGNvbnRlbnRUeXBlLFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgdGhlIG1lc3NhZ2Ugb2JqZWN0XG4gICAgY29uc3QgbWVzc2FnZTogT21pdDxBWE1Db252ZXJzYXRpb25NZXNzYWdlLCAnaWQnPiA9IHtcbiAgICAgIHJvb21JZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VDb250ZW50LFxuICAgICAgYXV0aG9yOiB0aGlzLmdldEN1cnJlbnRVc2VyKCksXG4gICAgICByZXBseUlkOiByZXBseUlkIHx8IG51bGwsXG4gICAgICByZWFjdGlvbnM6IFtdLFxuICAgICAgc2VlbjogW10sXG4gICAgfTtcblxuICAgIC8vIEluc2VydCB0aGUgbWVzc2FnZVxuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuaW5zZXJ0T25lKG1lc3NhZ2UpO1xuXG4gICAgLy8gRmV0Y2ggdGhlIGZ1bGwgbWVzc2FnZSB0byByZXR1cm4gYXMgYSBjb21tZW50IGVudGl0eVxuICAgIGNvbnN0IGluc2VydGVkTWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0Q29tbWVudChpbnNlcnRlZE1lc3NhZ2UpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlT25lKGlkOiBzdHJpbmcsIHVwZGF0ZTogUGFydGlhbDxBWE1Db21tZW50TWVzc2FnZT4pOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlPiB7XG4gICAgLy8gSWYgY29udGVudCBpcyBiZWluZyB1cGRhdGVkLCBmb3JtYXQgaXQgY29ycmVjdGx5XG4gICAgbGV0IG1lc3NhZ2VVcGRhdGU6IFBhcnRpYWw8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT4gPSB7fTtcblxuICAgIGlmICh1cGRhdGUubWVzc2FnZT8uY29udGVudCkge1xuICAgICAgbWVzc2FnZVVwZGF0ZS5tZXNzYWdlID0ge1xuICAgICAgICBjb250ZW50OiB1cGRhdGUubWVzc2FnZS5jb250ZW50LFxuICAgICAgICBjb250ZW50VHlwZTogdXBkYXRlLm1lc3NhZ2UuY29udGVudFR5cGUgfHwgJ3RleHQnLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSB0aGUgdXBkYXRlXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUoaWQsIG1lc3NhZ2VVcGRhdGUpO1xuXG4gICAgLy8gUmV0dXJuIGFzIGEgY29tbWVudCBlbnRpdHlcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRDb21tZW50KHJlc3VsdCk7XG4gIH1cblxuICBhc3luYyBkZWxldGVPbmUoaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRlbGV0ZSBjb21tZW50OicsIGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT0gQ29tbWVudC1TcGVjaWZpYyBPcGVyYXRpb25zID09PVxuXG4gIGFzeW5jIGxpa2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbW1lbnRNZXNzYWdlPiB7XG4gICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHVzZXIgaGFzIGFscmVhZHkgbGlrZWQgdGhpcyBtZXNzYWdlXG4gICAgY29uc3QgcmVhY3Rpb25zID0gbWVzc2FnZS5yZWFjdGlvbnMgfHwgW107XG4gICAgY29uc3QgZXhpc3RpbmdSZWFjdGlvbiA9IHJlYWN0aW9ucy5maW5kKChyKSA9PiByLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkICYmIHIudHlwZSA9PT0gJ2xpa2UnKTtcblxuICAgIGxldCB1cGRhdGVkUmVhY3Rpb25zOiBBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdO1xuXG4gICAgaWYgKGV4aXN0aW5nUmVhY3Rpb24pIHtcbiAgICAgIC8vIElmIHRoZSByZWFjdGlvbiBleGlzdHMsIHJlbW92ZSBpdCAodW5saWtlKVxuICAgICAgdXBkYXRlZFJlYWN0aW9ucyA9IHJlYWN0aW9ucy5maWx0ZXIoKHIpID0+ICEoci5hdXRob3IuaWQgPT09IGF1dGhvci5pZCAmJiByLnR5cGUgPT09ICdsaWtlJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGUgcmVhY3Rpb24gZG9lc24ndCBleGlzdCwgYWRkIGl0IChsaWtlKVxuICAgICAgdXBkYXRlZFJlYWN0aW9ucyA9IFsuLi5yZWFjdGlvbnMsIHsgYXV0aG9yLCB0eXBlOiAnbGlrZScgfV07XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBtZXNzYWdlIHdpdGggdGhlIG5ldyByZWFjdGlvbnNcbiAgICBjb25zdCB1cGRhdGVkTWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKG1lc3NhZ2VJZCwgeyByZWFjdGlvbnM6IHVwZGF0ZWRSZWFjdGlvbnMgfSk7XG5cbiAgICAvLyBSZXR1cm4gYXMgYSBjb21tZW50IGVudGl0eVxuICAgIHJldHVybiB0aGlzLmZvcm1hdENvbW1lbnQodXBkYXRlZE1lc3NhZ2UpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29tbWVudENvdW50KGVudGl0eUlkOiBzdHJpbmcsIGluc3RhbmNlSWQ6IHN0cmluZywgcm9vbVR5cGU6IHN0cmluZyA9ICdkZWZhdWx0Jyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgcm9vbUlkID0gdGhpcy5mb3JtYXRSb29tSWQoZW50aXR5SWQsIGluc3RhbmNlSWQsIHJvb21UeXBlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgICAgc2tpcDogMCxcbiAgICAgICAgdGFrZTogMSxcbiAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgZmllbGQ6ICdyb29tSWQnLFxuICAgICAgICAgIHZhbHVlOiByb29tSWQsXG4gICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQudG90YWw7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBnZXQgY29tbWVudCBjb3VudDonLCBlcnJvcik7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRBbGxDb21tZW50c1dpdGhSZXBsaWVzKFxuICAgIGVudGl0eUlkOiBzdHJpbmcsXG4gICAgaW5zdGFuY2VJZDogc3RyaW5nLFxuICAgIHJvb21UeXBlOiBzdHJpbmcgPSAnZGVmYXVsdCcsXG4gICAgc2tpcCA9IDAsXG4gICAgdGFrZSA9IDEwMCxcbiAgKTogUHJvbWlzZTxBWFBQYWdlZExpc3RSZXN1bHQ8QVhNQ29tbWVudE1lc3NhZ2U+PiB7XG4gICAgY29uc3QgcXVlcnlSZXF1ZXN0OiBBWFBRdWVyeVJlcXVlc3QgPSB7XG4gICAgICBwYXJhbXM6IHsgZW50aXR5SWQsIGluc3RhbmNlSWQsIHJvb21UeXBlIH0sXG4gICAgICBza2lwLFxuICAgICAgdGFrZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucXVlcnkocXVlcnlSZXF1ZXN0KTtcbiAgfVxufVxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { Component, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/platform/layout/builder\";\nimport * as i3 from \"@acorex/components/button\";\nexport class AXMCommentLookupPopup extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.lookupNode = {\n name: 'form-field',\n path: 'form-field',\n type: 'form-field',\n children: [\n {\n name: 'lookup',\n path: 'lookup',\n type: 'lookup-editor',\n options: {\n entity: 'SecurityManagement.users',\n multiple: true,\n },\n },\n ],\n options: {\n label: 'Select users:',\n },\n };\n this.titleNode = {\n name: 'form-field',\n path: 'form-field',\n type: 'form-field',\n children: [\n {\n name: 'title',\n path: 'title',\n type: 'text-editor',\n options: {\n placeholder: 'Enter title',\n required: true,\n },\n },\n ],\n options: {\n label: 'Title:',\n },\n };\n this.context = signal({});\n }\n handleClose() {\n this.close({\n lookup: this.context()?.lookup,\n title: this.context()?.title,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentLookupPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMCommentLookupPopup, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: `<axp-widgets-container [context]=\"context()\" (onContextChanged)=\"context.set($event.data)\">\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-4\">\n <ng-container axp-widget-renderer [node]=\"lookupNode\" [mode]=\"'edit'\"> </ng-container>\n @if (context()?.lookup?.length > 1) {\n <ng-container axp-widget-renderer [node]=\"titleNode\" [mode]=\"'edit'\"> </ng-container>\n }\n </div>\n </axp-widgets-container>\n\n <ax-footer>\n <ax-suffix>\n <ax-button\n text=\"Accept & Send\"\n color=\"primary\"\n [disabled]=\"context()?.lookup?.length > 1 && !context()?.title\"\n (onClick)=\"handleClose()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i2.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i2.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentLookupPopup, decorators: [{\n type: Component,\n args: [{\n template: `<axp-widgets-container [context]=\"context()\" (onContextChanged)=\"context.set($event.data)\">\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-4\">\n <ng-container axp-widget-renderer [node]=\"lookupNode\" [mode]=\"'edit'\"> </ng-container>\n @if (context()?.lookup?.length > 1) {\n <ng-container axp-widget-renderer [node]=\"titleNode\" [mode]=\"'edit'\"> </ng-container>\n }\n </div>\n </axp-widgets-container>\n\n <ax-footer>\n <ax-suffix>\n <ax-button\n text=\"Accept & Send\"\n color=\"primary\"\n [disabled]=\"context()?.lookup?.length > 1 && !context()?.title\"\n (onClick)=\"handleClose()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>`,\n imports: [AXDecoratorModule, AXPLayoutBuilderModule, AXButtonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1sb29rdXAtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC1sb29rdXAtcG9wdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWlCLE1BQU0saUNBQWlDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBd0JsRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBdEI5RDs7UUF1QlksZUFBVSxHQUFrQjtZQUNwQyxJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsWUFBWTtZQUNsQixRQUFRLEVBQUU7Z0JBQ1I7b0JBQ0UsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsMEJBQTBCO3dCQUNsQyxRQUFRLEVBQUUsSUFBSTtxQkFDZjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxlQUFlO2FBQ3ZCO1NBQ0YsQ0FBQztRQUNRLGNBQVMsR0FBa0I7WUFDbkMsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLElBQUksRUFBRSxPQUFPO29CQUNiLElBQUksRUFBRSxhQUFhO29CQUNuQixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxFQUFFLGFBQWE7d0JBQzFCLFFBQVEsRUFBRSxJQUFJO3FCQUNmO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLFFBQVE7YUFDaEI7U0FDRixDQUFDO1FBRUYsWUFBTyxHQUFHLE1BQU0sQ0FBTSxFQUFFLENBQUMsQ0FBQztLQVEzQjtJQU5DLFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ1QsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNO1lBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSztTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQS9DVSxxQkFBcUI7a0dBQXJCLHFCQUFxQiwrRkFyQnRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBa0JLLDJEQUNMLGlCQUFpQixxUEFBRSxzQkFBc0IsOFpBQUUsY0FBYzs7MkZBRXhELHFCQUFxQjtrQkF0QmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBa0JLO29CQUNmLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsQ0FBQztpQkFDckUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEJhc2VQYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJjb250ZXh0KClcIiAob25Db250ZXh0Q2hhbmdlZCk9XCJjb250ZXh0LnNldCgkZXZlbnQuZGF0YSlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTQgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIGF4cC13aWRnZXQtcmVuZGVyZXIgW25vZGVdPVwibG9va3VwTm9kZVwiIFttb2RlXT1cIidlZGl0J1wiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgQGlmIChjb250ZXh0KCk/Lmxvb2t1cD8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgYXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJ0aXRsZU5vZGVcIiBbbW9kZV09XCInZWRpdCdcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuXG4gICAgPGF4LWZvb3Rlcj5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICB0ZXh0PVwiQWNjZXB0ICYgU2VuZFwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29udGV4dCgpPy5sb29rdXA/Lmxlbmd0aCA+IDEgJiYgIWNvbnRleHQoKT8udGl0bGVcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUNsb3NlKClcIlxuICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LWZvb3Rlcj5gLFxuICBpbXBvcnRzOiBbQVhEZWNvcmF0b3JNb2R1bGUsIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYQnV0dG9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ29tbWVudExvb2t1cFBvcHVwIGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBsb29rdXBOb2RlOiBBWFBXaWRnZXROb2RlID0ge1xuICAgIG5hbWU6ICdmb3JtLWZpZWxkJyxcbiAgICBwYXRoOiAnZm9ybS1maWVsZCcsXG4gICAgdHlwZTogJ2Zvcm0tZmllbGQnLFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdsb29rdXAnLFxuICAgICAgICBwYXRoOiAnbG9va3VwJyxcbiAgICAgICAgdHlwZTogJ2xvb2t1cC1lZGl0b3InLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZW50aXR5OiAnU2VjdXJpdHlNYW5hZ2VtZW50LnVzZXJzJyxcbiAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBsYWJlbDogJ1NlbGVjdCB1c2VyczonLFxuICAgIH0sXG4gIH07XG4gIHByb3RlY3RlZCB0aXRsZU5vZGU6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgbmFtZTogJ2Zvcm0tZmllbGQnLFxuICAgIHBhdGg6ICdmb3JtLWZpZWxkJyxcbiAgICB0eXBlOiAnZm9ybS1maWVsZCcsXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgcGF0aDogJ3RpdGxlJyxcbiAgICAgICAgdHlwZTogJ3RleHQtZWRpdG9yJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdGl0bGUnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGxhYmVsOiAnVGl0bGU6JyxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnRleHQgPSBzaWduYWw8YW55Pih7fSk7XG5cbiAgaGFuZGxlQ2xvc2UoKSB7XG4gICAgdGhpcy5jbG9zZSh7XG4gICAgICBsb29rdXA6IHRoaXMuY29udGV4dCgpPy5sb29rdXAsXG4gICAgICB0aXRsZTogdGhpcy5jb250ZXh0KCk/LnRpdGxlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXMCommentService } from './comment.service';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXMCommentLookupPopup } from './comment-lookup-popup.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/wysiwyg\";\nimport * as i2 from \"@acorex/components/skeleton\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/components/comment\";\nimport * as i5 from \"@acorex/components/button\";\nimport * as i6 from \"@acorex/components/avatar\";\nimport * as i7 from \"@acorex/components/image\";\nimport * as i8 from \"@acorex/components/loading\";\nimport * as i9 from \"@acorex/components/dropdown\";\nimport * as i10 from \"@acorex/core/format\";\nimport * as i11 from \"@acorex/components/form\";\nimport * as i12 from \"@acorex/components/toolbar\";\nimport * as i13 from \"@angular/forms\";\nimport * as i14 from \"@acorex/components/dropdown-button\";\nexport class AXMCommentListViewComponent {\n constructor() {\n this.hasCooldown = signal(false);\n this.commentContent = signal('');\n this.isSubmitting = signal(false);\n this.isReplyingMode = signal(false);\n this.isEditingMode = signal(false);\n this.isLoading = signal(true);\n this.failedImageIds = signal([]);\n this.activeReplyComment = signal(undefined);\n this.activeEditComment = signal(undefined);\n this.wysiwygEditor = viewChild.required('w');\n this.commentService = inject(AXMCommentService);\n this.platform = inject(AXPlatform);\n this.route = inject(ActivatedRoute);\n this.popupService = inject(AXPopupService);\n this.toastService = inject(AXToastService);\n this.dialogService = inject(AXDialogService);\n this.sanitize = inject(DomSanitizer);\n this.routeParams = this.route.snapshot;\n this.getPayload = computed(() => ({\n params: this.payload(),\n skip: 0,\n take: 10,\n }));\n this.payload = computed(() => ({\n roomType: 'default',\n entityId: this.routeParams.params?.['module'] + '.' + this.routeParams.params?.['entity'],\n instanceId: this.routeParams.params?.['id'],\n }));\n this.comments = signal([]);\n this.wysiwyg = viewChild('w');\n this.wysiwygOptions = signal({\n look: 'solid',\n });\n this.avatarConfig = signal({\n color: 'primary',\n look: 'rounded',\n type: 'solid', // 'image' | 'text' | 'icon' | 'default'\n });\n this.validateContent = (content) => {\n let isValid = true;\n if (!content || content === '<p><br></p>') {\n isValid = false;\n }\n return {\n rule: 'callback',\n result: isValid,\n message: isValid ? '' : 'Please fill the content',\n value: content,\n };\n };\n }\n ngOnInit() {\n this.loadComments();\n }\n sanitizeHtml(htmlContent) {\n if (!htmlContent)\n return this.sanitize.bypassSecurityTrustHtml('');\n return this.sanitize.bypassSecurityTrustHtml(htmlContent);\n }\n handleImageError(imageId) {\n this.failedImageIds.update((ids) => [...ids, imageId]);\n }\n checkImageExists(imageId) {\n return !this.failedImageIds().includes(imageId);\n }\n extractInitials(name) {\n if (!name)\n return '?';\n // Handle the case where name is an object with fullName property\n const nameStr = typeof name === 'object' && name.fullName ? name.fullName : String(name);\n const words = nameStr.split(' ');\n const initials = words.map((word) => word.charAt(0).toUpperCase());\n return initials.join('');\n }\n async loadComments() {\n this.isLoading.set(true);\n try {\n const response = await this.commentService.query(this.getPayload());\n this.comments.set(response.items);\n }\n catch (error) {\n console.error('Failed to load comments:', error);\n this.toastService.show({\n content: 'Failed to load comments. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.comments.set([]);\n }\n finally {\n setTimeout(() => {\n this.isLoading.set(false);\n }, 250);\n }\n }\n editMessage(comment, reply) {\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.isEditingMode.set(true);\n this.activeEditComment.set(comment);\n const contentToEdit = reply ? reply.message?.content : comment.message?.content;\n this.commentContent.set(contentToEdit || '');\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n replyMessage(comment, reply) {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(true);\n this.activeReplyComment.set(comment);\n if (reply) {\n const author = reply.author.fullName || reply.author.id;\n const mention = `<a data-id=\"${reply.id}\">@${author}</a> `;\n this.commentContent.set(mention);\n this.wysiwyg()?.focus();\n document.getElementsByClassName('ql-editor')[0].innerHTML = mention;\n }\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n async deleteComment(comment) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this comment?',\n title: 'Delete Comment',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n if (comment.id) {\n await this.commentService.deleteOne(comment.id);\n this.removeMessageById(comment.id);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n if (this.isEditingMode() && this.activeEditComment()?.id === comment.id) {\n this.resetReplyEditState();\n }\n dialog.close();\n }\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n async deleteReply(comment, reply) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this reply?',\n title: 'Delete Reply',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n if (reply.id) {\n await this.commentService.deleteOne(reply.id);\n this.removeMessageById(comment.id, reply.id);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n dialog.close();\n }\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n resetReplyEditState() {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n }\n async toggleLike(comment, reply) {\n try {\n if (reply) {\n if (reply.id) {\n this.updateLikeStatus(comment.id, reply.id);\n await this.commentService.like(reply.id);\n }\n }\n else {\n if (comment.id) {\n this.updateLikeStatus(comment.id);\n await this.commentService.like(comment.id);\n }\n }\n }\n catch (error) {\n console.error('Failed to toggle like:', error);\n // Revert the optimistic update if the server call fails\n if (reply && reply.id) {\n this.updateLikeStatus(comment.id, reply.id);\n }\n else if (comment.id) {\n this.updateLikeStatus(comment.id);\n }\n }\n }\n updateLikeStatus(commentId, replyId) {\n this.comments.update((commentsList) => {\n return commentsList.map((comment) => {\n if (comment.id === commentId) {\n if (replyId && comment.replies) {\n const updatedReplies = comment.replies.map((reply) => reply.id === replyId\n ? {\n ...reply,\n isLiked: !reply.isLiked,\n reactionsCount: reply.isLiked && reply.reactionsCount !== undefined\n ? reply.reactionsCount - 1\n : (reply.reactionsCount || 0) + 1,\n }\n : reply);\n return {\n ...comment,\n replies: updatedReplies,\n };\n }\n else {\n return {\n ...comment,\n isLiked: !comment.isLiked,\n reactionsCount: comment.isLiked && comment.reactionsCount !== undefined\n ? comment.reactionsCount - 1\n : (comment.reactionsCount || 0) + 1,\n };\n }\n }\n return comment;\n });\n });\n }\n removeMessageById(commentId, replyId) {\n if (replyId) {\n // Remove a reply from a comment\n this.comments.update((commentsList) => commentsList.map((comment) => {\n if (comment.id === commentId && comment.replies) {\n return {\n ...comment,\n replies: comment.replies.filter((reply) => reply.id !== replyId),\n };\n }\n return comment;\n }));\n }\n else {\n // Remove a whole comment\n this.comments.update((commentsList) => commentsList.filter((comment) => comment.id !== commentId));\n }\n }\n async submitComment(isPrivate = false) {\n if (!this.validateContent(this.commentContent()).result) {\n return;\n }\n this.isSubmitting.set(true);\n let memberLookup;\n if (isPrivate) {\n const popupConfig = {\n header: true,\n size: 'md',\n draggable: true,\n hasBackdrop: true,\n closeButton: true,\n closeOnBackdropClick: false,\n };\n const popup = await this.popupService.open(AXMCommentLookupPopup, popupConfig);\n memberLookup = popup.data?.lookup;\n }\n try {\n if (this.isEditingMode() && this.activeEditComment()?.id) {\n const payload = {\n message: {\n content: this.commentContent(),\n contentType: 'text',\n },\n };\n await this.commentService.updateOne(this.activeEditComment().id, payload);\n this.hasCooldown.set(true);\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n }\n else {\n const payload = {\n ...this.payload(),\n content: this.commentContent(),\n contentType: 'text',\n isPrivate: isPrivate,\n replyId: this.activeReplyComment()?.id ?? null,\n };\n await this.commentService.insertOne(payload);\n this.hasCooldown.set(true);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n }\n // Reload comments to get the updated list with proper hierarchy\n const response = await this.commentService.query(this.getPayload());\n this.comments.set(response.items);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n setTimeout(() => {\n this.hasCooldown.set(false);\n }, 1000);\n }\n catch (error) {\n console.error('Error submitting comment:', error);\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to submit comment. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n scrollMain() {\n const comment = this.isReplyingMode() ? this.activeReplyComment() : this.activeEditComment();\n if (comment && comment.id) {\n const el = document.getElementById(comment.id);\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n const content = el?.firstElementChild?.children[1];\n if (content) {\n const prevBg = content.style.background;\n content.style.borderRadius = '0.25rem';\n content.style.transition = 'background 1s ease-in-out';\n content.style.background = `rgba(var(--ax-color-on-surface), var(--tw-bg-opacity))`;\n setTimeout(() => {\n content.style.background = prevBg || 'rgba(0, 0, 0, 0)';\n }, 1000);\n }\n }\n }\n }\n calcDefrenetTime(date) {\n return date ? Date.now() - date.getTime() : undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMCommentListViewComponent, isStandalone: true, selector: \"axm-comment-list-view\", viewQueries: [{ propertyName: \"wysiwygEditor\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }, { propertyName: \"wysiwyg\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"ax-mt-2\\\">\\n <ax-comment-container>\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item [id]=\\\"comment.id!\\\" [replyCount]=\\\"comment.replies?.length ?? 0\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (checkImageExists(comment.id!) && comment.author && extractInitials(comment.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(comment.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(comment.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(comment.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(comment.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"comment.isLiked!\\\">\\n {{ comment.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment)\\\"></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (reply && checkImageExists(reply.id!) && reply.author && extractInitials(reply.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(reply.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(reply.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(reply.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(reply.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteReply(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment, reply)\\\" [liked]=\\\"reply.isLiked!\\\">\\n {{ reply.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment, reply)\\\"></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? extractInitials(activeReplyComment()?.author) : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment(true)\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\"ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXWysiwygModule }, { kind: \"component\", type: i1.AXWysiwygContainerComponent, selector: \"ax-wysiwyg-container\", inputs: [\"look\", \"placeHolder\"], outputs: [\"onValueChanged\"] }, { kind: \"component\", type: i1.AXWysiwygViewComponent, selector: \"ax-wysiwyg-view\", inputs: [\"class\"] }, { kind: \"component\", type: i1.AXWysiwygAlignmentComponent, selector: \"ax-wysiwyg-alignment\" }, { kind: \"component\", type: i1.AXWysiwygColorsComponent, selector: \"ax-wysiwyg-colors\" }, { kind: \"component\", type: i1.AXWysiwygFontStyleComponent, selector: \"ax-wysiwyg-font-style\" }, { kind: \"component\", type: i1.AXWysiwygHistoryComponent, selector: \"ax-wysiwyg-history\" }, { kind: \"component\", type: i1.AXWysiwygListComponent, selector: \"ax-wysiwyg-list\" }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i2.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXCommentModule }, { kind: \"component\", type: i4.AXCommentViewComponent, selector: \"ax-comment-view\" }, { kind: \"component\", type: i4.AXCommentContainerComponent, selector: \"ax-comment-container\" }, { kind: \"component\", type: i4.AxCommentItemComponent, selector: \"ax-comment-item\", inputs: [\"replyCount\"] }, { kind: \"component\", type: i4.AXCommentLikeComponent, selector: \"ax-comment-like\", inputs: [\"liked\"], outputs: [\"likedChange\", \"onLiked\"] }, { kind: \"component\", type: i4.AXMenuOptionsComponent, selector: \"ax-comment-menu-options\" }, { kind: \"component\", type: i4.AXCommentReplyTextComponent, selector: \"ax-comment-reply-text\" }, { kind: \"component\", type: i4.AXCommentDateComponent, selector: \"ax-comment-date\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i5.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i5.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i5.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"component\", type: i6.AXAvatarComponent, selector: \"ax-avatar\", inputs: [\"color\", \"size\", \"shape\", \"look\"], outputs: [\"sizeChange\"] }, { kind: \"ngmodule\", type: AXImageModule }, { kind: \"component\", type: i7.AXImageComponent, selector: \"ax-image\", inputs: [\"width\", \"height\", \"overlayMode\", \"src\", \"alt\", \"priority\", \"lazy\"], outputs: [\"onLoad\", \"onError\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i8.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i9.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"pipe\", type: i10.AXFormatPipe, name: \"format\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i11.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i11.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"directive\", type: i11.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }, { kind: \"ngmodule\", type: AXToolBarModule }, { kind: \"component\", type: i12.AXToolBarComponent, selector: \"ax-toolbar\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i13.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i13.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"component\", type: i14.AXDropdownButtonComponent, selector: \"ax-dropdown-button\", inputs: [\"disabled\", \"size\", \"color\", \"look\", \"text\", \"type\", \"mode\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"lookChange\", \"colorChange\", \"disabledChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentListViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-comment-list-view', imports: [\n AXWysiwygModule,\n AXConversationModule,\n AXSkeletonModule,\n AXDecoratorModule,\n AXCommentModule,\n AXButtonModule,\n AXAvatarModule,\n AXImageModule,\n AXLoadingModule,\n AXDropdownModule,\n AXFormatModule,\n AsyncPipe,\n AXFormModule,\n AXToolBarModule,\n FormsModule,\n AXDropdownButtonModule,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"ax-mt-2\\\">\\n <ax-comment-container>\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item [id]=\\\"comment.id!\\\" [replyCount]=\\\"comment.replies?.length ?? 0\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (checkImageExists(comment.id!) && comment.author && extractInitials(comment.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(comment.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(comment.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(comment.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(comment.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"comment.isLiked!\\\">\\n {{ comment.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment)\\\"></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (reply && checkImageExists(reply.id!) && reply.author && extractInitials(reply.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(reply.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(reply.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(reply.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(reply.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteReply(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment, reply)\\\" [liked]=\\\"reply.isLiked!\\\">\\n {{ reply.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment, reply)\\\"></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? extractInitials(activeReplyComment()?.author) : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment(true)\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\"ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NvbW1lbnQvY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBb0N6RSxNQUFNLE9BQU8sMkJBQTJCO0lBbEN4QztRQW1DWSxnQkFBVyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUVwQyxpQkFBWSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN0QyxtQkFBYyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4QyxrQkFBYSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN2QyxjQUFTLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRWxDLG1CQUFjLEdBQUcsTUFBTSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLHVCQUFrQixHQUFHLE1BQU0sQ0FBZ0MsU0FBUyxDQUFDLENBQUM7UUFDdEUsc0JBQWlCLEdBQUcsTUFBTSxDQUFnQyxTQUFTLENBQUMsQ0FBQztRQUNyRSxrQkFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQThCLEdBQUcsQ0FBQyxDQUFDO1FBRXZFLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hELGFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFZixnQkFBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQzNDLGVBQVUsR0FBRyxRQUFRLENBQzNCLEdBQUcsRUFBRSxDQUNILENBQUM7WUFDQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN0QixJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBb0IsQ0FDeEIsQ0FBQztRQUNGLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN4QixRQUFRLEVBQUUsU0FBUztZQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDekYsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRU0sYUFBUSxHQUFHLE1BQU0sQ0FBc0IsRUFBRSxDQUFDLENBQUM7UUFDN0MsWUFBTyxHQUFHLFNBQVMsQ0FBOEIsR0FBRyxDQUFDLENBQUM7UUFNcEQsbUJBQWMsR0FBRyxNQUFNLENBRTlCO1lBQ0QsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDLENBQUM7UUFFTyxpQkFBWSxHQUFHLE1BQU0sQ0FJNUI7WUFDRCxLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxPQUFPLEVBQUUsd0NBQXdDO1NBQ3hELENBQUMsQ0FBQztRQUVILG9CQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtZQUNwQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFbkIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDbEIsQ0FBQztZQUNELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE1BQU0sRUFBRSxPQUFPO2dCQUNmLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMseUJBQXlCO2dCQUNqRCxLQUFLLEVBQUUsT0FBTzthQUNmLENBQUM7UUFDSixDQUFDLENBQUM7S0F1WEg7SUF2WkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBZ0NELFlBQVksQ0FBQyxXQUErQjtRQUMxQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWU7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQThCO1FBQzVDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFFdEIsaUVBQWlFO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDM0UsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLE9BQU8sRUFBRSw0Q0FBNEM7Z0JBQ3JELEtBQUssRUFBRSxRQUFRO2dCQUNmLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixXQUFXLEVBQUUsSUFBSTtnQkFDakIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsZUFBZSxFQUFFLElBQUk7YUFDdEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUEwQixFQUFFLEtBQXlCO1FBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUNoRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUEwQixFQUFFLEtBQXlCO1FBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxNQUFNLEdBQUksS0FBSyxDQUFDLE1BQWMsQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDakUsTUFBTSxPQUFPLEdBQUcsZUFBZSxLQUFLLENBQUMsRUFBRSxNQUFNLE1BQU0sT0FBTyxDQUFDO1lBQzNELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUN4QixRQUFRLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBMEI7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDckMsSUFBSSxFQUFFLHVCQUF1QjtZQUM3QixPQUFPLEVBQUUsK0NBQStDO1lBQ3hELEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQUUsWUFBWTtZQUN6QixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFNLEVBQUUsRUFBRTt3QkFDeEIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ2pCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO3dCQUN6QixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ3hCLElBQUksQ0FBQzs0QkFDSCxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQ0FDZixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0NBQ3JCLE9BQU8sRUFBRSwrQkFBK0I7b0NBQ3hDLEtBQUssRUFBRSxTQUFTO29DQUNoQixRQUFRLEVBQUUsZUFBZTtvQ0FDekIsV0FBVyxFQUFFLElBQUk7b0NBQ2pCLE9BQU8sRUFBRSxJQUFJO29DQUNiLGVBQWUsRUFBRSxJQUFJO2lDQUN0QixDQUFDLENBQUM7Z0NBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQ0FDeEUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0NBQzdCLENBQUM7Z0NBQ0QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDOzRCQUNqQixDQUFDO3dCQUNILENBQUM7d0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzs0QkFDZixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQ0FDckIsT0FBTyxFQUFFLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywyQkFBMkI7Z0NBQ3hFLEtBQUssRUFBRSxRQUFRO2dDQUNmLFFBQVEsRUFBRSxlQUFlO2dDQUN6QixXQUFXLEVBQUUsSUFBSTtnQ0FDakIsT0FBTyxFQUFFLElBQUk7Z0NBQ2IsZUFBZSxFQUFFLElBQUk7NkJBQ3RCLENBQUMsQ0FBQzt3QkFDTCxDQUFDO29CQUNILENBQUM7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLFNBQVMsRUFBRSxJQUFJO29CQUNmLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUNiLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakIsQ0FBQztpQkFDRjthQUNGO1lBQ0QsV0FBVyxFQUFFLEtBQUs7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBMEIsRUFBRSxLQUF3QjtRQUNwRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUNyQyxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLE9BQU8sRUFBRSw2Q0FBNkM7WUFDdEQsS0FBSyxFQUFFLGNBQWM7WUFDckIsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQUUsWUFBWTtZQUN6QixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFNLEVBQUUsRUFBRTt3QkFDeEIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ2pCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO3dCQUN6QixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ3hCLElBQUksQ0FBQzs0QkFDSCxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQ0FDYixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQ0FDckIsT0FBTyxFQUFFLCtCQUErQjtvQ0FDeEMsS0FBSyxFQUFFLFNBQVM7b0NBQ2hCLFFBQVEsRUFBRSxlQUFlO29DQUN6QixXQUFXLEVBQUUsSUFBSTtvQ0FDakIsT0FBTyxFQUFFLElBQUk7b0NBQ2IsZUFBZSxFQUFFLElBQUk7aUNBQ3RCLENBQUMsQ0FBQztnQ0FDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7NEJBQ2pCLENBQUM7d0JBQ0gsQ0FBQzt3QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDOzRCQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dDQUNyQixPQUFPLEVBQUUsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtnQ0FDeEUsS0FBSyxFQUFFLFFBQVE7Z0NBQ2YsUUFBUSxFQUFFLGVBQWU7Z0NBQ3pCLFdBQVcsRUFBRSxJQUFJO2dDQUNqQixPQUFPLEVBQUUsSUFBSTtnQ0FDYixlQUFlLEVBQUUsSUFBSTs2QkFDdEIsQ0FBQyxDQUFDO3dCQUNMLENBQUM7b0JBQ0gsQ0FBQztpQkFDRjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsUUFBUTtvQkFDZCxLQUFLLEVBQUUsU0FBUztvQkFDaEIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ2IsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNqQixDQUFDO2lCQUNGO2FBQ0Y7WUFDRCxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixRQUFRLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUEwQixFQUFFLEtBQXlCO1FBQ3BFLElBQUksQ0FBQztZQUNILElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM1QyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNsQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0Msd0RBQXdEO1lBQ3hELElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLENBQUM7aUJBQU0sSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxPQUFnQjtRQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3BDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNsQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzdCLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDL0IsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNuRCxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQU87NEJBQ2xCLENBQUMsQ0FBQztnQ0FDRSxHQUFHLEtBQUs7Z0NBQ1IsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU87Z0NBQ3ZCLGNBQWMsRUFDWixLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxjQUFjLEtBQUssU0FBUztvQ0FDakQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQztvQ0FDMUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDOzZCQUN0Qzs0QkFDSCxDQUFDLENBQUMsS0FBSyxDQUNWLENBQUM7d0JBRUYsT0FBTzs0QkFDTCxHQUFHLE9BQU87NEJBQ1YsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCLENBQUM7b0JBQ0osQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU87NEJBQ0wsR0FBRyxPQUFPOzRCQUNWLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzRCQUN6QixjQUFjLEVBQ1osT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsY0FBYyxLQUFLLFNBQVM7Z0NBQ3JELENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLENBQUM7Z0NBQzVCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQzt5QkFDeEMsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxTQUFpQixFQUFFLE9BQWdCO1FBQzNELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixnQ0FBZ0M7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUNwQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzNCLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoRCxPQUFPO3dCQUNMLEdBQUcsT0FBTzt3QkFDVixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDO3FCQUNqRSxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04seUJBQXlCO1lBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDckcsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQXFCLEtBQUs7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixJQUFJLFlBQVksQ0FBQztRQUNqQixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxXQUFXLEdBQWtCO2dCQUNqQyxNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsSUFBSTtnQkFDVixTQUFTLEVBQUUsSUFBSTtnQkFDZixXQUFXLEVBQUUsSUFBSTtnQkFDakIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLG9CQUFvQixFQUFFLEtBQUs7YUFDNUIsQ0FBQztZQUNGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDL0UsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ3BDLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxPQUFPLEdBQUc7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO3dCQUM5QixXQUFXLEVBQUUsTUFBZTtxQkFDN0I7aUJBQ0YsQ0FBQztnQkFFRixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLE9BQU8sR0FBRztvQkFDZCxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUM5QixXQUFXLEVBQUUsTUFBZTtvQkFDNUIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSTtpQkFDL0MsQ0FBQztnQkFFRixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUVELGdFQUFnRTtZQUNoRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVsQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixRQUFRLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUUvRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsT0FBTyxFQUFFLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw2Q0FBNkM7Z0JBQzFGLEtBQUssRUFBRSxRQUFRO2dCQUNmLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixXQUFXLEVBQUUsSUFBSTtnQkFDakIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsZUFBZSxFQUFFLElBQUk7YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0YsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ1AsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzNELE1BQU0sT0FBTyxHQUFHLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFnQixDQUFDO2dCQUNsRSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO29CQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7b0JBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLDJCQUEyQixDQUFDO29CQUN2RCxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyx3REFBd0QsQ0FBQztvQkFDcEYsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxNQUFNLElBQUksa0JBQWtCLENBQUM7b0JBQzFELENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDWCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBc0I7UUFDckMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDOzhHQTliVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixvU0NqRXhDLGt0YUEwT0Esc09Edk1JLGVBQWUsMnVCQUNmLG9CQUFvQiw4QkFDcEIsZ0JBQWdCLGtJQUNoQixpQkFBaUIsc1ZBQ2pCLGVBQWUsOHRCQUNmLGNBQWMsb3VCQUNkLGNBQWMsNktBQ2QsYUFBYSxvTkFDYixlQUFlLDhLQUNmLGdCQUFnQixxUUFDaEIsY0FBYyxvRkFDZCxTQUFTLDZDQUNULFlBQVksb2NBQ1osZUFBZSwyR0FDZixXQUFXLGdXQUNYLHNCQUFzQjs7MkZBZWIsMkJBQTJCO2tCQWxDdkMsU0FBUzsrQkFFRSx1QkFBdUIsV0FDeEI7d0JBQ1AsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsc0JBQXNCO3FCQUN2QixtQkFZZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYV3lzaXd5Z0NvbnRhaW5lckNvbXBvbmVudCwgQVhXeXNpd3lnTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3d5c2l3eWcnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgT25Jbml0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBWFN0eWxlTG9va1R5cGUgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWFBvcHVwQ29uZmlnLCBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5pbXBvcnQgeyBBWFBsYXRmb3JtIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7IEFYUFF1ZXJ5UmVxdWVzdCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFYTUNvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb21tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29tbWVudE1lc3NhZ2UgfSBmcm9tICcuL2NvbW1lbnQudHlwZSc7XG5cbmltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDb21tZW50TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1lbnQnO1xuaW1wb3J0IHsgQVhDb252ZXJzYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29udmVyc2F0aW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWEltYWdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2ltYWdlJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQVhUb29sQmFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2xiYXInO1xuaW1wb3J0IHsgQVhGb3JtYXRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFYTUNvbW1lbnRMb29rdXBQb3B1cCB9IGZyb20gJy4vY29tbWVudC1sb29rdXAtcG9wdXAuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9jb21tZW50LWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHNlbGVjdG9yOiAnYXhtLWNvbW1lbnQtbGlzdC12aWV3JyxcbiAgaW1wb3J0czogW1xuICAgIEFYV3lzaXd5Z01vZHVsZSxcbiAgICBBWENvbnZlcnNhdGlvbk1vZHVsZSxcbiAgICBBWFNrZWxldG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYQ29tbWVudE1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRm9ybWF0TW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhUb29sQmFyTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gIF0sXG4gIHN0eWxlczogYFxuICAgIGF4LXd5c2l3eWctY29udGFpbmVyIHtcbiAgICAgIC5heC1lZGl0b3ItY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLmF4LWVycm9yLW1lc3NhZ2Uge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICAgIH1cbiAgICB9XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Db21tZW50TGlzdFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgaGFzQ29vbGRvd24gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgY29tbWVudENvbnRlbnQgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcHJvdGVjdGVkIGlzU3VibWl0dGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBpc1JlcGx5aW5nTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBpc0VkaXRpbmdNb2RlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICBwcm90ZWN0ZWQgZmFpbGVkSW1hZ2VJZHMgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgcHJvdGVjdGVkIGFjdGl2ZVJlcGx5Q29tbWVudCA9IHNpZ25hbDx1bmRlZmluZWQgfCBBWE1Db21tZW50TWVzc2FnZT4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGFjdGl2ZUVkaXRDb21tZW50ID0gc2lnbmFsPHVuZGVmaW5lZCB8IEFYTUNvbW1lbnRNZXNzYWdlPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgd3lzaXd5Z0VkaXRvciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQ+KCd3Jyk7XG5cbiAgcHJpdmF0ZSBjb21tZW50U2VydmljZSA9IGluamVjdChBWE1Db21tZW50U2VydmljZSk7XG4gIHByaXZhdGUgcGxhdGZvcm0gPSBpbmplY3QoQVhQbGF0Zm9ybSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHBvcHVwU2VydmljZSA9IGluamVjdChBWFBvcHVwU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFYRGlhbG9nU2VydmljZSk7XG4gIHNhbml0aXplID0gaW5qZWN0KERvbVNhbml0aXplcik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZVBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3Q7XG4gIHByaXZhdGUgZ2V0UGF5bG9hZCA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICAoe1xuICAgICAgICBwYXJhbXM6IHRoaXMucGF5bG9hZCgpLFxuICAgICAgICBza2lwOiAwLFxuICAgICAgICB0YWtlOiAxMCxcbiAgICAgIH0pIGFzIEFYUFF1ZXJ5UmVxdWVzdCxcbiAgKTtcbiAgcGF5bG9hZCA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgcm9vbVR5cGU6ICdkZWZhdWx0JyxcbiAgICBlbnRpdHlJZDogdGhpcy5yb3V0ZVBhcmFtcy5wYXJhbXM/LlsnbW9kdWxlJ10gKyAnLicgKyB0aGlzLnJvdXRlUGFyYW1zLnBhcmFtcz8uWydlbnRpdHknXSxcbiAgICBpbnN0YW5jZUlkOiB0aGlzLnJvdXRlUGFyYW1zLnBhcmFtcz8uWydpZCddLFxuICB9KSk7XG5cbiAgcHJvdGVjdGVkIGNvbW1lbnRzID0gc2lnbmFsPEFYTUNvbW1lbnRNZXNzYWdlW10+KFtdKTtcbiAgcHJpdmF0ZSB3eXNpd3lnID0gdmlld0NoaWxkPEFYV3lzaXd5Z0NvbnRhaW5lckNvbXBvbmVudD4oJ3cnKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRDb21tZW50cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHd5c2l3eWdPcHRpb25zID0gc2lnbmFsPHtcbiAgICBsb29rOiBBWFN0eWxlTG9va1R5cGU7XG4gIH0+KHtcbiAgICBsb29rOiAnc29saWQnLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgYXZhdGFyQ29uZmlnID0gc2lnbmFsPHtcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIGxvb2s6ICdzaGFycCcgfCAnc29mdCcgfCAncm91bmRlZCc7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9Pih7XG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBsb29rOiAncm91bmRlZCcsXG4gICAgdHlwZTogJ3NvbGlkJywgLy8gJ2ltYWdlJyB8ICd0ZXh0JyB8ICdpY29uJyB8ICdkZWZhdWx0J1xuICB9KTtcblxuICB2YWxpZGF0ZUNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuXG4gICAgaWYgKCFjb250ZW50IHx8IGNvbnRlbnQgPT09ICc8cD48YnI+PC9wPicpIHtcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bGU6ICdjYWxsYmFjaycsXG4gICAgICByZXN1bHQ6IGlzVmFsaWQsXG4gICAgICBtZXNzYWdlOiBpc1ZhbGlkID8gJycgOiAnUGxlYXNlIGZpbGwgdGhlIGNvbnRlbnQnLFxuICAgICAgdmFsdWU6IGNvbnRlbnQsXG4gICAgfTtcbiAgfTtcblxuICBzYW5pdGl6ZUh0bWwoaHRtbENvbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghaHRtbENvbnRlbnQpIHJldHVybiB0aGlzLnNhbml0aXplLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKCcnKTtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sQ29udGVudCk7XG4gIH1cblxuICBoYW5kbGVJbWFnZUVycm9yKGltYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmFpbGVkSW1hZ2VJZHMudXBkYXRlKChpZHMpID0+IFsuLi5pZHMsIGltYWdlSWRdKTtcbiAgfVxuXG4gIGNoZWNrSW1hZ2VFeGlzdHMoaW1hZ2VJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmZhaWxlZEltYWdlSWRzKCkuaW5jbHVkZXMoaW1hZ2VJZCk7XG4gIH1cblxuICBleHRyYWN0SW5pdGlhbHMobmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7XG5cbiAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgbmFtZSBpcyBhbiBvYmplY3Qgd2l0aCBmdWxsTmFtZSBwcm9wZXJ0eVxuICAgIGNvbnN0IG5hbWVTdHIgPSB0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcgJiYgbmFtZS5mdWxsTmFtZSA/IG5hbWUuZnVsbE5hbWUgOiBTdHJpbmcobmFtZSk7XG5cbiAgICBjb25zdCB3b3JkcyA9IG5hbWVTdHIuc3BsaXQoJyAnKTtcbiAgICBjb25zdCBpbml0aWFscyA9IHdvcmRzLm1hcCgod29yZDogc3RyaW5nKSA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKTtcbiAgICByZXR1cm4gaW5pdGlhbHMuam9pbignJyk7XG4gIH1cblxuICBhc3luYyBsb2FkQ29tbWVudHMoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UucXVlcnkodGhpcy5nZXRQYXlsb2FkKCkpO1xuICAgICAgdGhpcy5jb21tZW50cy5zZXQocmVzcG9uc2UuaXRlbXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBjb21tZW50czonLCBlcnJvcik7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29udGVudDogJ0ZhaWxlZCB0byBsb2FkIGNvbW1lbnRzLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21tZW50cy5zZXQoW10pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sIDI1MCk7XG4gICAgfVxuICB9XG5cbiAgZWRpdE1lc3NhZ2UoY29tbWVudDogQVhNQ29tbWVudE1lc3NhZ2UsIHJlcGx5PzogQVhNQ29tbWVudE1lc3NhZ2UpIHtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldChjb21tZW50KTtcbiAgICBjb25zdCBjb250ZW50VG9FZGl0ID0gcmVwbHkgPyByZXBseS5tZXNzYWdlPy5jb250ZW50IDogY29tbWVudC5tZXNzYWdlPy5jb250ZW50O1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KGNvbnRlbnRUb0VkaXQgfHwgJycpO1xuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgcmVwbHlNZXNzYWdlKGNvbW1lbnQ6IEFYTUNvbW1lbnRNZXNzYWdlLCByZXBseT86IEFYTUNvbW1lbnRNZXNzYWdlKSB7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudC5zZXQoY29tbWVudCk7XG4gICAgaWYgKHJlcGx5KSB7XG4gICAgICBjb25zdCBhdXRob3IgPSAocmVwbHkuYXV0aG9yIGFzIGFueSkuZnVsbE5hbWUgfHwgcmVwbHkuYXV0aG9yLmlkO1xuICAgICAgY29uc3QgbWVudGlvbiA9IGA8YSBkYXRhLWlkPVwiJHtyZXBseS5pZH1cIj5AJHthdXRob3J9PC9hPiBgO1xuICAgICAgdGhpcy5jb21tZW50Q29udGVudC5zZXQobWVudGlvbik7XG4gICAgICB0aGlzLnd5c2l3eWcoKT8uZm9jdXMoKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9IG1lbnRpb247XG4gICAgfVxuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQ29tbWVudChjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSkge1xuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcbiAgICAgIGljb246ICdmYS1yZWd1bGFyIGZhLXdhcm5pbmcnLFxuICAgICAgY29udGVudDogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBjb21tZW50PycsXG4gICAgICB0aXRsZTogJ0RlbGV0ZSBDb21tZW50JyxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdEZWxldGUnLFxuICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICBvbkNsaWNrOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICBlLmhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgZS5zb3VyY2UudGV4dCA9ICdEZWxldGluZy4uLic7XG4gICAgICAgICAgICBlLnNvdXJjZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmIChjb21tZW50LmlkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVPbmUoY29tbWVudC5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdDb21tZW50IGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LicsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmdNb2RlKCkgJiYgdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpPy5pZCA9PT0gY29tbWVudC5pZCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldFJlcGx5RWRpdFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gZXJyb3IgOiAnRmFpbGVkIHRvIGRlbGV0ZSBjb21tZW50IScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgIGF1dG9mb2N1czogdHJ1ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVSZXBseShjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSwgcmVwbHk6IEFYTUNvbW1lbnRNZXNzYWdlKSB7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xuICAgICAgaWNvbjogJ2ZhLXJlZ3VsYXIgZmEtd2FybmluZycsXG4gICAgICBjb250ZW50OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJlcGx5PycsXG4gICAgICB0aXRsZTogJ0RlbGV0ZSBSZXBseScsXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgb25DbGljazogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgZS5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLnRleHQgPSAnRGVsZXRpbmcuLi4nO1xuICAgICAgICAgICAgZS5zb3VyY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgZS5zb3VyY2UubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAocmVwbHkuaWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZU9uZShyZXBseS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkLCByZXBseS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAnQ29tbWVudCBkZWxldGVkIHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBlcnJvciA6ICdGYWlsZWQgdG8gZGVsZXRlIGNvbW1lbnQhJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgICAgYXV0b2ZvY3VzOiB0cnVlLFxuICAgICAgICAgIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGNsb3NlQnV0dG9uOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0UmVwbHlFZGl0U3RhdGUoKSB7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jb21tZW50Q29udGVudC5zZXQoJycpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9ICcnO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlTGlrZShjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSwgcmVwbHk/OiBBWE1Db21tZW50TWVzc2FnZSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAocmVwbHkpIHtcbiAgICAgICAgaWYgKHJlcGx5LmlkKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQsIHJlcGx5LmlkKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmxpa2UocmVwbHkuaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY29tbWVudC5pZCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmxpa2UoY29tbWVudC5pZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHRvZ2dsZSBsaWtlOicsIGVycm9yKTtcbiAgICAgIC8vIFJldmVydCB0aGUgb3B0aW1pc3RpYyB1cGRhdGUgaWYgdGhlIHNlcnZlciBjYWxsIGZhaWxzXG4gICAgICBpZiAocmVwbHkgJiYgcmVwbHkuaWQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQsIHJlcGx5LmlkKTtcbiAgICAgIH0gZWxzZSBpZiAoY29tbWVudC5pZCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUxpa2VTdGF0dXMoY29tbWVudC5pZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnRJZDogc3RyaW5nLCByZXBseUlkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT4ge1xuICAgICAgcmV0dXJuIGNvbW1lbnRzTGlzdC5tYXAoKGNvbW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGNvbW1lbnQuaWQgPT09IGNvbW1lbnRJZCkge1xuICAgICAgICAgIGlmIChyZXBseUlkICYmIGNvbW1lbnQucmVwbGllcykge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFJlcGxpZXMgPSBjb21tZW50LnJlcGxpZXMubWFwKChyZXBseSkgPT5cbiAgICAgICAgICAgICAgcmVwbHkuaWQgPT09IHJlcGx5SWRcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVwbHksXG4gICAgICAgICAgICAgICAgICAgIGlzTGlrZWQ6ICFyZXBseS5pc0xpa2VkLFxuICAgICAgICAgICAgICAgICAgICByZWFjdGlvbnNDb3VudDpcbiAgICAgICAgICAgICAgICAgICAgICByZXBseS5pc0xpa2VkICYmIHJlcGx5LnJlYWN0aW9uc0NvdW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVwbHkucmVhY3Rpb25zQ291bnQgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChyZXBseS5yZWFjdGlvbnNDb3VudCB8fCAwKSArIDEsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiByZXBseSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNvbW1lbnQsXG4gICAgICAgICAgICAgIHJlcGxpZXM6IHVwZGF0ZWRSZXBsaWVzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY29tbWVudCxcbiAgICAgICAgICAgICAgaXNMaWtlZDogIWNvbW1lbnQuaXNMaWtlZCxcbiAgICAgICAgICAgICAgcmVhY3Rpb25zQ291bnQ6XG4gICAgICAgICAgICAgICAgY29tbWVudC5pc0xpa2VkICYmIGNvbW1lbnQucmVhY3Rpb25zQ291bnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgPyBjb21tZW50LnJlYWN0aW9uc0NvdW50IC0gMVxuICAgICAgICAgICAgICAgICAgOiAoY29tbWVudC5yZWFjdGlvbnNDb3VudCB8fCAwKSArIDEsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tbWVudDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNZXNzYWdlQnlJZChjb21tZW50SWQ6IHN0cmluZywgcmVwbHlJZD86IHN0cmluZykge1xuICAgIGlmIChyZXBseUlkKSB7XG4gICAgICAvLyBSZW1vdmUgYSByZXBseSBmcm9tIGEgY29tbWVudFxuICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT5cbiAgICAgICAgY29tbWVudHNMaXN0Lm1hcCgoY29tbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChjb21tZW50LmlkID09PSBjb21tZW50SWQgJiYgY29tbWVudC5yZXBsaWVzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICByZXBsaWVzOiBjb21tZW50LnJlcGxpZXMuZmlsdGVyKChyZXBseSkgPT4gcmVwbHkuaWQgIT09IHJlcGx5SWQpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbW1lbnQ7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVtb3ZlIGEgd2hvbGUgY29tbWVudFxuICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT4gY29tbWVudHNMaXN0LmZpbHRlcigoY29tbWVudCkgPT4gY29tbWVudC5pZCAhPT0gY29tbWVudElkKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHN1Ym1pdENvbW1lbnQoaXNQcml2YXRlOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVDb250ZW50KHRoaXMuY29tbWVudENvbnRlbnQoKSkucmVzdWx0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuXG4gICAgbGV0IG1lbWJlckxvb2t1cDtcbiAgICBpZiAoaXNQcml2YXRlKSB7XG4gICAgICBjb25zdCBwb3B1cENvbmZpZzogQVhQb3B1cENvbmZpZyA9IHtcbiAgICAgICAgaGVhZGVyOiB0cnVlLFxuICAgICAgICBzaXplOiAnbWQnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IGZhbHNlLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHBvcHVwID0gYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3BlbihBWE1Db21tZW50TG9va3VwUG9wdXAsIHBvcHVwQ29uZmlnKTtcbiAgICAgIG1lbWJlckxvb2t1cCA9IHBvcHVwLmRhdGE/Lmxvb2t1cDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nTW9kZSgpICYmIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKT8uaWQpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNvbW1lbnRDb250ZW50KCksXG4gICAgICAgICAgICBjb250ZW50VHlwZTogJ3RleHQnIGFzIGNvbnN0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51cGRhdGVPbmUodGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpIS5pZCwgcGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmlzRWRpdGluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgLi4udGhpcy5wYXlsb2FkKCksXG4gICAgICAgICAgY29udGVudDogdGhpcy5jb21tZW50Q29udGVudCgpLFxuICAgICAgICAgIGNvbnRlbnRUeXBlOiAndGV4dCcgYXMgY29uc3QsXG4gICAgICAgICAgaXNQcml2YXRlOiBpc1ByaXZhdGUsXG4gICAgICAgICAgcmVwbHlJZDogdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQoKT8uaWQgPz8gbnVsbCxcbiAgICAgICAgfTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmluc2VydE9uZShwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5oYXNDb29sZG93bi5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbG9hZCBjb21tZW50cyB0byBnZXQgdGhlIHVwZGF0ZWQgbGlzdCB3aXRoIHByb3BlciBoaWVyYXJjaHlcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5xdWVyeSh0aGlzLmdldFBheWxvYWQoKSk7XG4gICAgICB0aGlzLmNvbW1lbnRzLnNldChyZXNwb25zZS5pdGVtcyk7XG5cbiAgICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KCcnKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9ICcnO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5oYXNDb29sZG93bi5zZXQoZmFsc2UpO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgY29tbWVudDonLCBlcnJvcik7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29udGVudDogdHlwZW9mIGVycm9yID09PSAnc3RyaW5nJyA/IGVycm9yIDogJ0ZhaWxlZCB0byBzdWJtaXQgY29tbWVudC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxNYWluKCkge1xuICAgIGNvbnN0IGNvbW1lbnQgPSB0aGlzLmlzUmVwbHlpbmdNb2RlKCkgPyB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudCgpIDogdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpO1xuICAgIGlmIChjb21tZW50ICYmIGNvbW1lbnQuaWQpIHtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29tbWVudC5pZCk7XG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGVsPy5maXJzdEVsZW1lbnRDaGlsZD8uY2hpbGRyZW5bMV0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgY29uc3QgcHJldkJnID0gY29udGVudC5zdHlsZS5iYWNrZ3JvdW5kO1xuICAgICAgICAgIGNvbnRlbnQuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzAuMjVyZW0nO1xuICAgICAgICAgIGNvbnRlbnQuc3R5bGUudHJhbnNpdGlvbiA9ICdiYWNrZ3JvdW5kIDFzIGVhc2UtaW4tb3V0JztcbiAgICAgICAgICBjb250ZW50LnN0eWxlLmJhY2tncm91bmQgPSBgcmdiYSh2YXIoLS1heC1jb2xvci1vbi1zdXJmYWNlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpYDtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZCA9IHByZXZCZyB8fCAncmdiYSgwLCAwLCAwLCAwKSc7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYWxjRGVmcmVuZXRUaW1lKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZGF0ZSA/IERhdGUubm93KCkgLSBkYXRlLmdldFRpbWUoKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LW10LTJcIj5cbiAgPGF4LWNvbW1lbnQtY29udGFpbmVyPlxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1weS0xMiBheC1iZy1saWdodGVzdCBheC1weC01XCI+XG4gICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LW1pbi13LTE2IGF4LWgtMTYgYXgtcm91bmRlZC1mdWxsIGF4LW1lLTRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC13LWZ1bGxcIj5cbiAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC02IGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctZnVsbCBheC1oLTIgYXgtcm91bmRlZC1mdWxsXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0yIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy04LzEyIGF4LWgtMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKCFpc0xvYWRpbmcoKSAmJiBjb21tZW50cygpLmxlbmd0aCA+IDApIHtcbiAgICAgIDxheC1jb21tZW50LXZpZXcgY2xhc3M9XCJheC1iZy1saWdodGVzdFwiPlxuICAgICAgICBAZm9yIChjb21tZW50IG9mIGNvbW1lbnRzKCk7IHRyYWNrIGNvbW1lbnQuaWQpIHtcbiAgICAgICAgICA8YXgtY29tbWVudC1pdGVtIFtpZF09XCJjb21tZW50LmlkIVwiIFtyZXBseUNvdW50XT1cImNvbW1lbnQucmVwbGllcz8ubGVuZ3RoID8/IDBcIj5cbiAgICAgICAgICAgIDxheC1hdmF0YXIgW2NvbG9yXT1cImF2YXRhckNvbmZpZygpLmNvbG9yXCIgW3NoYXBlXT1cImF2YXRhckNvbmZpZygpLmxvb2tcIj5cbiAgICAgICAgICAgICAgQGlmIChjaGVja0ltYWdlRXhpc3RzKGNvbW1lbnQuaWQhKSAmJiBjb21tZW50LmF1dGhvciAmJiBleHRyYWN0SW5pdGlhbHMoY29tbWVudC5hdXRob3IpICE9PSAnPycpIHtcbiAgICAgICAgICAgICAgICA8YXgtaW1hZ2UgKG9uRXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcihjb21tZW50LmlkISlcIiBbc3JjXT1cIicnXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICAgICAgPC9heC1pbWFnZT5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGF4LXRleHQ+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtYmFzZSBheC1vdmVyZmxvdy1oaWRkZW5cIj57eyBleHRyYWN0SW5pdGlhbHMoY29tbWVudC5hdXRob3IpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYXgtdGV4dD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1hdmF0YXI+XG4gICAgICAgICAgICA8YXgtdGl0bGU+e3sgZXh0cmFjdEluaXRpYWxzKGNvbW1lbnQuYXV0aG9yKSB9fTwvYXgtdGl0bGU+XG4gICAgICAgICAgICA8YXgtY29tbWVudC1kYXRlPnt7IGNhbGNEZWZyZW5ldFRpbWUoY29tbWVudC5jcmVhdGVkQXQpIHwgZm9ybWF0OiAndGltZWxlZnQnIHwgYXN5bmMgfX0gPC9heC1jb21tZW50LWRhdGU+XG4gICAgICAgICAgICA8YXgtY29tbWVudC1tZW51LW9wdGlvbnM+XG4gICAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIGxvb2s9XCJibGFua1wiIGNvbG9yPVwibmV1dHJhbFwiPlxuICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tc29saWQgYXgtaWNvbi1tb3JlLWhvcml6b250YWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRWRpdFwiIGNvbG9yPVwibmV1dHJhbFwiIChjbGljayk9XCJlZGl0TWVzc2FnZShjb21tZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS1lZGl0XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRGVsZXRlXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiZGVsZXRlQ29tbWVudChjb21tZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS10cmFzaC1jYW5cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgPGF4LWNvbnRlbnQgW2lubmVySFRNTF09XCJzYW5pdGl6ZUh0bWwoY29tbWVudC5tZXNzYWdlLmNvbnRlbnQpXCI+PC9heC1jb250ZW50PlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShjb21tZW50KVwiIFtsaWtlZF09XCJjb21tZW50LmlzTGlrZWQhXCI+XG4gICAgICAgICAgICAgIHt7IGNvbW1lbnQucmVhY3Rpb25zQ291bnQgfX1cbiAgICAgICAgICAgIDwvYXgtY29tbWVudC1saWtlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtcmVwbHktdGV4dCAoY2xpY2spPVwicmVwbHlNZXNzYWdlKGNvbW1lbnQpXCI+PC9heC1jb21tZW50LXJlcGx5LXRleHQ+XG4gICAgICAgICAgICBAZm9yIChyZXBseSBvZiBjb21tZW50LnJlcGxpZXM7IHRyYWNrIHJlcGx5LmlkKSB7XG4gICAgICAgICAgICAgIDxheC1jb21tZW50LWl0ZW0gW2lkXT1cInJlcGx5LmlkXCI+XG4gICAgICAgICAgICAgICAgPGF4LWF2YXRhciBbY29sb3JdPVwiYXZhdGFyQ29uZmlnKCkuY29sb3JcIiBbc2hhcGVdPVwiYXZhdGFyQ29uZmlnKCkubG9va1wiPlxuICAgICAgICAgICAgICAgICAgQGlmIChyZXBseSAmJiBjaGVja0ltYWdlRXhpc3RzKHJlcGx5LmlkISkgJiYgcmVwbHkuYXV0aG9yICYmIGV4dHJhY3RJbml0aWFscyhyZXBseS5hdXRob3IpICE9PSAnPycpIHtcbiAgICAgICAgICAgICAgICAgICAgPGF4LWltYWdlIChvbkVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IocmVwbHkuaWQhKVwiIFtzcmNdPVwiJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtaW1hZ2U+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGF4LXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LWJhc2UgYXgtb3ZlcmZsb3ctaGlkZGVuXCI+e3sgZXh0cmFjdEluaXRpYWxzKHJlcGx5LmF1dGhvcikgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtdGV4dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2F4LWF2YXRhcj5cbiAgICAgICAgICAgICAgICA8YXgtdGl0bGU+e3sgZXh0cmFjdEluaXRpYWxzKHJlcGx5LmF1dGhvcikgfX08L2F4LXRpdGxlPlxuICAgICAgICAgICAgICAgIDxheC1jb21tZW50LWRhdGU+e3sgY2FsY0RlZnJlbmV0VGltZShyZXBseS5jcmVhdGVkQXQpIHwgZm9ybWF0OiAndGltZWxlZnQnIHwgYXN5bmMgfX0gPC9heC1jb21tZW50LWRhdGU+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCIgbG9vaz1cImJsYW5rXCIgY29sb3I9XCJuZXV0cmFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tc29saWQgYXgtaWNvbi1tb3JlLWhvcml6b250YWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkVkaXRcIiBjb2xvcj1cIm5ldXRyYWxcIiAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoY29tbWVudCwgcmVwbHkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtZWRpdFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJEZWxldGVcIiBjb2xvcj1cImRhbmdlclwiIChjbGljayk9XCJkZWxldGVSZXBseShjb21tZW50LCByZXBseSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS10cmFzaC1jYW5cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgICAgIDwvYXgtY29tbWVudC1tZW51LW9wdGlvbnM+XG4gICAgICAgICAgICAgICAgPGF4LWNvbnRlbnQgW2lubmVySFRNTF09XCJzYW5pdGl6ZUh0bWwocmVwbHkubWVzc2FnZS5jb250ZW50KVwiPjwvYXgtY29udGVudD5cbiAgICAgICAgICAgICAgICA8YXgtY29tbWVudC1saWtlIChjbGljayk9XCJ0b2dnbGVMaWtlKGNvbW1lbnQsIHJlcGx5KVwiIFtsaWtlZF09XCJyZXBseS5pc0xpa2VkIVwiPlxuICAgICAgICAgICAgICAgICAge3sgcmVwbHkucmVhY3Rpb25zQ291bnQgfX1cbiAgICAgICAgICAgICAgICA8L2F4LWNvbW1lbnQtbGlrZT5cbiAgICAgICAgICAgICAgICA8YXgtY29tbWVudC1yZXBseS10ZXh0IChjbGljayk9XCJyZXBseU1lc3NhZ2UoY29tbWVudCwgcmVwbHkpXCI+PC9heC1jb21tZW50LXJlcGx5LXRleHQ+XG4gICAgICAgICAgICAgIDwvYXgtY29tbWVudC1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtY29tbWVudC1pdGVtPlxuICAgICAgICB9XG4gICAgICA8L2F4LWNvbW1lbnQtdmlldz5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00IGF4LWp1c3RpZnktY2VudGVyIGF4LWl0ZW1zLWNlbnRlciBheC1wLTEwXCI+XG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgY2xhc3M9XCJheC1teC1hdXRvXCJcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgd2lkdGg9XCIxNTRcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiMTYxXCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTU0IDE2MVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk0wLjA2MTY0NTUgODQuNDI2OEMwLjA2MTY0NTUgNDIuMDIxMyAzNC40MzUgNy44Mzc2NSA3Ni42NTA3IDcuODM3NjVDMTE4LjgwMyA3LjgzNzY1IDE1My4yMjQgNDIuMDA1NSAxNTMuMjI0IDg0LjQyNjhDMTUzLjIyNCAxMDIuNDIgMTQ3LjAyNiAxMTguOTc0IDEzNi42MjIgMTMyLjAzNEMxMjIuMjgyIDE1MC4xMzggMTAwLjM2NyAxNjEgNzYuNjUwNyAxNjFDNTIuNzc1OSAxNjEgMzAuOTg4MiAxNTAuMDU5IDE2LjY2MzMgMTMyLjAzNEM2LjI1OTYxIDExOC45NzQgMC4wNjE2NDU1IDEwMi40MiAwLjA2MTY0NTUgODQuNDI2OFpcIlxuICAgICAgICAgICAgICBmaWxsPVwiI0VFRjJGRlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk05Ni44MTg5IDAuNjMyNDk4TDk2LjgxODkgMC42MzIzODRMOTYuODA4MyAwLjYzMDk1NEM5Ni4yMDM0IDAuNTQ5NTgxIDk1LjU5MzEgMC41IDk0Ljk3ODcgMC41SDI5LjMzOEMyMi43MTEyIDAuNSAxNy4zMzk0IDUuODQ0NTUgMTcuMzM5NCAxMi40NDczVjE0Mi43MTVDMTcuMzM5NCAxNDkuMzE4IDIyLjcxMTIgMTU0LjY2MiAyOS4zMzggMTU0LjY2MkgxMjMuOTQ4QzEzMC41OTEgMTU0LjY2MiAxMzUuOTQ2IDE0OS4zMTcgMTM1Ljk0NiAxNDIuNzE1VjM4LjkzMDlDMTM1Ljk0NiAzOC4wMjQ0IDEzNS44NDcgMzcuMTMzNCAxMzUuNjQ4IDM2LjI1ODZMMTM1LjY0OCAzNi4yNTg0QzEzNS4xMTcgMzMuOTMwOSAxMzMuODc0IDMxLjc2ODYgMTMyLjA2NiAzMC4xMzMzQzEzMi4wNjYgMzAuMTMzMSAxMzIuMDY1IDMwLjEzMjkgMTMyLjA2NSAzMC4xMzI3TDEwMy4wNjggMy42NTIwM0MxMDMuMDY4IDMuNjUxOSAxMDMuMDY3IDMuNjUxNzcgMTAzLjA2NyAzLjY1MTY0QzEwMS4zMTEgMi4wMzUyNiA5OS4xMzk2IDAuOTk1NTUyIDk2LjgxODkgMC42MzI0OThaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiI0U1RTdFQlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGVsbGlwc2UgY3g9XCI4MC4wNjE4XCIgY3k9XCI4MVwiIHJ4PVwiMjguMDM0MlwiIHJ5PVwiMjguMDM0MlwiIGZpbGw9XCIjRUVGMkZGXCIgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNOTkuMjM5MyA2MS4zMDYxTDk5LjIzOTEgNjEuMzA1OEM4OC40OTggNTAuNTgwOCA3MS4xMDkyIDUwLjU4MDQgNjAuMzgzNSA2MS4zMDYxQzQ5LjY0MjMgNzIuMDMxNiA0OS42NDIyIDg5LjQzNjEgNjAuMzgzMiAxMDAuMTYyQzcxLjEwOSAxMTAuOTAzIDg4LjQ5ODIgMTEwLjkwMyA5OS4yMzkzIDEwMC4xNjJDMTA5Ljk2NSA4OS40MzYzIDEwOS45NjUgNzIuMDMxNyA5OS4yMzkzIDYxLjMwNjFaTTEwNS44NjMgNTQuNjgzMkMxMjAuMjQ5IDY5LjA2OTUgMTIwLjI0OSA5Mi4zOTg1IDEwNS44NjMgMTA2Ljc4NUM5MS40NjA1IDEyMS4xNzEgNjguMTQ2OCAxMjEuMTcxIDUzLjc0NDYgMTA2Ljc4NUMzOS4zNTgyIDkyLjM5ODcgMzkuMzU4MiA2OS4wNjkzIDUzLjc0NDYgNTQuNjgzQzY4LjE0NjggNDAuMjk2NSA5MS40NjA1IDQwLjI5NjYgMTA1Ljg2MyA1NC42ODMyWlwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiNFNUU3RUJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMTEwLjc4MiAxMTkuMjY3TDEwMi4wMTYgMTEwLjQ5MkMxMDQuODg4IDEwOC4yNjcgMTA3LjQ3NiAxMDUuNjUxIDEwOS41NjQgMTAyLjk1NUwxMTguMzI5IDExMS43MjlMMTEwLjc4MiAxMTkuMjY3WlwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiNFNUU3RUJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMTM5LjEyMiAxMjUuNzgxTDEzOS4xMjIgMTI1Ljc4TDEyMy4zMTMgMTA5Ljk4OEMxMjMuMzEzIDEwOS45ODcgMTIzLjMxMyAxMDkuOTg3IDEyMy4zMTIgMTA5Ljk4NkMxMjEuOTk2IDEwOC42NTMgMTE5Ljg0OSAxMDguNjU3IDExOC41MjEgMTA5Ljk4NUwxMTguODcxIDExMC4zMzVMMTE4LjUyMSAxMDkuOTg1TDEwOS4wNDcgMTE5LjQ1OUMxMDcuNzMxIDEyMC43NzUgMTA3LjczNSAxMjIuOTE4IDEwOS4wNDQgMTI0LjI0N0wxMDkuMDQ3IDEyNC4yNDlMMTI0Ljg1OCAxNDAuMDZDMTI4Ljc4OSAxNDMuOTkyIDEzNS4xOTEgMTQzLjk5MiAxMzkuMTIyIDE0MC4wNkMxNDMuMDY5IDEzNi4xMTMgMTQzLjA2OSAxMjkuNzI4IDEzOS4xMjIgMTI1Ljc4MVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiI0E1QjRGQ1wiXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiM4MThDRjhcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNODMuMTg1IDg3LjIyODVDODIuNTM4NyA4Ny4yMjg1IDgyLjAwMjcgODYuNjkyNiA4Mi4wMDI3IDg2LjAzMDVDODIuMDAyNyA4My4zODIxIDc3Ljk5ODcgODMuMzgyMSA3Ny45OTg3IDg2LjAzMDVDNzcuOTk4NyA4Ni42OTI2IDc3LjQ2MjcgODcuMjI4NSA3Ni44MDA2IDg3LjIyODVDNzYuMTU0MyA4Ny4yMjg1IDc1LjYxODMgODYuNjkyNiA3NS42MTgzIDg2LjAzMDVDNzUuNjE4MyA4MC4yMjk0IDg0LjM4MzEgODAuMjQ1MSA4NC4zODMxIDg2LjAzMDVDODQuMzgzMSA4Ni42OTI2IDgzLjg0NzEgODcuMjI4NSA4My4xODUgODcuMjI4NVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzRGNDZFNVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk05My4zNTI4IDc3LjA5MjZIODguNDAzQzg3Ljc0MDkgNzcuMDkyNiA4Ny4yMDQ5IDc2LjU1NjcgODcuMjA0OSA3NS44OTQ2Qzg3LjIwNDkgNzUuMjQ4MyA4Ny43NDA5IDc0LjcxMjMgODguNDAzIDc0LjcxMjNIOTMuMzUyOEM5NC4wMTQ5IDc0LjcxMjMgOTQuNTUwOSA3NS4yNDgzIDk0LjU1MDkgNzUuODk0NkM5NC41NTA5IDc2LjU1NjcgOTQuMDE0OSA3Ny4wOTI2IDkzLjM1MjggNzcuMDkyNlpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzRGNDZFNVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk03MS41OTg3IDc3LjA5MjVINjYuNjQ4OEM2NS45ODY3IDc3LjA5MjUgNjUuNDUwNyA3Ni41NTY1IDY1LjQ1MDcgNzUuODk0NUM2NS40NTA3IDc1LjI0ODEgNjUuOTg2NyA3NC43MTIyIDY2LjY0ODggNzQuNzEyMkg3MS41OTg3QzcyLjI0NSA3NC43MTIyIDcyLjc4MSA3NS4yNDgxIDcyLjc4MSA3NS44OTQ1QzcyLjc4MSA3Ni41NTY1IDcyLjI0NSA3Ny4wOTI1IDcxLjU5ODcgNzcuMDkyNVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzRGNDZFNVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjM4LjM1MjJcIiB5PVwiMjEuNTEyOFwiIHdpZHRoPVwiNDEuMDI1NlwiIGhlaWdodD1cIjIuNzM1MDRcIiByeD1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMzguMzUyMlwiIHk9XCIxMzMuNjVcIiB3aWR0aD1cIjU0LjcwMDlcIiBoZWlnaHQ9XCI1LjQ3MDA5XCIgcng9XCIyLjczNTA0XCIgZmlsbD1cIiNBNUI0RkNcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjM4LjM1MjJcIiB5PVwiMjkuNzE3OVwiIHdpZHRoPVwiMTMuNjc1MlwiIGhlaWdodD1cIjIuNzM1MDRcIiByeD1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNTYuMTNcIiBjeT1cIjMxLjA4NTRcIiByPVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI2MS42MDAxXCIgY3k9XCIzMS4wODU0XCIgcj1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNjcuMDcwMlwiIGN5PVwiMzEuMDg1NFwiIHI9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJheC10ZXh0LWNlbnRlciBheC10ZXh0LW5ldXRyYWwtNjAwIGF4LWZvbnQtc2VtaWJvbGQgYXgtbGVhZGluZy1sb29zZSBheC1wYi0yXCI+XG4gICAgICAgICAgICAgIFRoZXJlIGlzIG5vIENvbW1lbnQhXG4gICAgICAgICAgICA8L2gyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9heC1jb21tZW50LWNvbnRhaW5lcj5cbiAgPGF4LWZvcm0+XG4gICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICA8ZGl2PlxuICAgICAgICBAaWYgKGlzUmVwbHlpbmdNb2RlKCkgfHwgaXNFZGl0aW5nTW9kZSgpKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1yb3VuZGVkLWItbm9uZSBheC1ib3JkZXIgYXgtYm9yZGVyLWItMCBheC1yb3VuZGVkLWxnIGF4LWJnLW9uLXN1cmZhY2UgYXgtcHgtNiBheC1weS0zIGF4LXctZnVsbCBheC1pdGVtcy1jZW50ZXIgYXgtb3ZlcmZsb3ctaGlkZGVuIGF4LXRleHQtc20gYXgtbGVhZGluZy1ub25lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzY3JvbGxNYWluKClcIiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1zdGFydCBheC1pdGVtcy1jZW50ZXIgYXgtY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXNSZXBseWluZ01vZGUoKSA/ICdmYS1yZXBseScgOiAnZmEtcGVuJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYS1zb2xpZCBheC10ZXh0LXByaW1hcnktNTAwIGRhcms6YXgtdGV4dC1wcmltYXJ5LTMwMCBheC10ZXh0LTJ4bCBheC1tZS00XCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC1qdXN0aWZ5LWJldHdlZW4gYXgtYWxpZ24tbWlkZGxlIGF4LWxlYWRpbmctNCBheC1vdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LXByaW1hcnktNTAwIGRhcms6YXgtdGV4dC1wcmltYXJ5LTMwMFwiPlxuICAgICAgICAgICAgICAgICAge3sgaXNSZXBseWluZ01vZGUoKSA/ICdSZXBseSB0byAnIDogJ0VkaXQgTWVzc2FnZScgfX1cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGlzUmVwbHlpbmdNb2RlKCkgPyBleHRyYWN0SW5pdGlhbHMoYWN0aXZlUmVwbHlDb21tZW50KCk/LmF1dGhvcikgOiAnJyB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgIGlzUmVwbHlpbmdNb2RlKClcbiAgICAgICAgICAgICAgICAgICAgICA/IHNhbml0aXplSHRtbChhY3RpdmVSZXBseUNvbW1lbnQoKT8ubWVzc2FnZT8uY29udGVudCA/PyAnJylcbiAgICAgICAgICAgICAgICAgICAgICA6IHNhbml0aXplSHRtbChhY3RpdmVFZGl0Q29tbWVudCgpPy5tZXNzYWdlPy5jb250ZW50ID8/ICcnKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PjxpIChjbGljayk9XCJyZXNldFJlcGx5RWRpdFN0YXRlKClcIiBjbGFzcz1cImZhLXNvbGlkIGF4LXRleHQtMnhsIGZhLXhtYXJrIGF4LWN1cnNvci1wb2ludGVyXCI+PC9pPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxheC13eXNpd3lnLWNvbnRhaW5lciAjdyBbbG9va109XCJ3eXNpd3lnT3B0aW9ucygpLmxvb2tcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRDb250ZW50XCI+XG4gICAgICAgICAgPGF4LXd5c2l3eWctdmlldyBjbGFzcz1cImF4LW1pbi1oLTI4XCI+PC9heC13eXNpd3lnLXZpZXc+XG4gICAgICAgICAgPGF4LXRvb2xiYXI+XG4gICAgICAgICAgICA8YXgtY29udGVudD5cbiAgICAgICAgICAgICAgPGF4LXd5c2l3eWctaGlzdG9yeT48L2F4LXd5c2l3eWctaGlzdG9yeT5cbiAgICAgICAgICAgICAgPGF4LXd5c2l3eWctZm9udC1zdHlsZT48L2F4LXd5c2l3eWctZm9udC1zdHlsZT5cbiAgICAgICAgICAgICAgPGF4LXd5c2l3eWctY29sb3JzPjwvYXgtd3lzaXd5Zy1jb2xvcnM+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWxpc3Q+PC9heC13eXNpd3lnLWxpc3Q+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWFsaWdubWVudD48L2F4LXd5c2l3eWctYWxpZ25tZW50PlxuICAgICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgPGF4LWRyb3Bkb3duLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJoYXNDb29sZG93bigpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIG1vZGU9XCJzcGxpdFwiXG4gICAgICAgICAgICAgICAgdGV4dD1cIlNlbmRcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInN1Ym1pdENvbW1lbnQoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGlzU3VibWl0dGluZygpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIChjbGljayk9XCJzdWJtaXRDb21tZW50KHRydWUpXCIgdGV4dD1cIlNlbmQgUHJpdmF0ZSAuLi5cIiBuYW1lPVwicHJpdmF0ZVwiIGRhdGE9XCJwcml2YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXJlZ3VsYXIgZmEtdXNlci1zZWNyZXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgPC9heC10b29sYmFyPlxuICAgICAgICAgIDxheC12YWxpZGF0aW9uLXJ1bGUgcnVsZT1cImNhbGxiYWNrXCIgW29wdGlvbnNdPVwieyB2YWxpZGF0ZTogdmFsaWRhdGVDb250ZW50IH1cIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgICAgPC9heC13eXNpd3lnLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXgtZm9ybS1maWVsZD5cbiAgPC9heC1mb3JtPlxuPC9kaXY+XG4iXX0=","import { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXMMessageService } from '../../entities/message/message.service';\nimport { AXMRoomService } from '../../entities/room/room.service';\nimport * as i0 from \"@angular/core\";\n//#region ---- Abstract Chat Service ----\nexport class AXMChatService {\n}\n//#endregion\nexport class AXMChatServiceImpl {\n constructor() {\n this.roomService = inject(AXMRoomService);\n this.messageService = inject(AXMMessageService);\n this.sessionService = inject(AXPSessionService);\n this.usersService = inject(AXMUsersEntityService);\n this._messageSent$ = new Subject();\n this.messageSent$ = this._messageSent$.asObservable();\n }\n //#region ---- Helper Methods ----\n getCurrentUser() {\n const user = this.sessionService.user;\n return {\n id: user?.id || 'guest-user',\n type: 'user',\n };\n }\n async getUserInfo(userId) {\n try {\n const user = await this.usersService.getOne(userId);\n return {\n id: user.id,\n type: 'user',\n };\n }\n catch (error) {\n console.error(`Failed to get user info for ID: ${userId}`, error);\n return {\n id: userId,\n type: 'user',\n };\n }\n }\n formatMessage(message) {\n return message;\n }\n async getUnreadCount(roomId) {\n const { items } = await this.messageService.query({\n skip: 0,\n take: 99,\n filter: { field: 'roomId', value: roomId, operator: { type: 'equal' } },\n });\n const currentUserId = this.getCurrentUser().id;\n const unreadMessages = items.filter((message) => {\n const isFromCurrentUser = message.author.id === currentUserId;\n const isReadByCurrentUser = (message.seen || []).some((seen) => seen.author.id === currentUserId);\n return !isFromCurrentUser && !isReadByCurrentUser;\n });\n return unreadMessages.length;\n }\n //#endregion\n //#region ---- ChatRoomService Implementations ----\n async createRoom(memberIds, title) {\n if (memberIds.length === 0) {\n throw new Error('At least one member is required to create a room');\n }\n const currentUser = this.getCurrentUser();\n const allMemberIds = [...new Set([...memberIds, currentUser.id])];\n const memberReferences = await Promise.all(allMemberIds.map((id) => this.getUserInfo(id)));\n const userNames = await Promise.all(memberReferences.map(async (ref) => {\n const user = await this.usersService.getOne(ref.id);\n return `${user.firstName} ${user.lastName}`.trim();\n }));\n const room = {\n members: memberReferences,\n title: title,\n topic: memberIds.length > 2 ? 'group' : 'personal',\n createdAt: new Date(),\n updatedAt: new Date(),\n createdBy: this.getCurrentUser().id,\n updatedBy: this.getCurrentUser().id,\n };\n const roomId = await this.roomService.insertOne(room);\n return this.getRoom(roomId);\n }\n async getRoom(roomId) {\n const room = await this.roomService.getOne(roomId);\n if (!room) {\n throw new Error(`Room with ID ${roomId} not found.`);\n }\n const messages = await this.getMessages(roomId, 0, 1);\n const lastMessage = messages.items.length > 0 ? messages.items[0] : undefined;\n const unreadCount = await this.getUnreadCount(roomId);\n const currentUserId = this.getCurrentUser().id;\n return {\n ...room,\n lastMessage,\n unreadCount,\n members: room.members.filter((m) => m.id !== currentUserId),\n };\n }\n async listRooms(skip = 0, take = 100) {\n const { items, total } = await this.roomService.query({ skip, take });\n const settledRooms = await Promise.allSettled(items.map((room) => this.getRoom(room.id)));\n const chatRooms = settledRooms\n .filter((result) => {\n if (result.status === 'rejected') {\n console.error('Failed to fetch room details:', result.reason);\n return false;\n }\n return true;\n })\n .map((result) => result.value);\n return { items: chatRooms, total: chatRooms.length };\n }\n async updateRoom(roomId, data) {\n const update = { ...data, updatedAt: new Date(), updatedBy: this.getCurrentUser().id };\n return this.roomService.updateOne(roomId, update);\n }\n async deleteRoom(roomId) {\n try {\n await this.roomService.deleteOne(roomId);\n return true;\n }\n catch (error) {\n return false;\n }\n }\n async addParticipant(roomId, userId) {\n const room = await this.roomService.getOne(roomId);\n if (room.members.some((m) => m.id === userId))\n return room;\n const userRef = await this.getUserInfo(userId);\n const updatedMembers = [...room.members, userRef];\n return this.roomService.updateOne(roomId, {\n members: updatedMembers,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async removeParticipant(roomId, userId) {\n const room = await this.roomService.getOne(roomId);\n const updatedMembers = room.members.filter((member) => member.id !== userId);\n return this.roomService.updateOne(roomId, {\n members: updatedMembers,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n //#endregion\n //#region ---- ChatMessageService Implementations ----\n async sendMessage(roomId, content, contentType = 'text', replyId) {\n const author = this.getCurrentUser();\n const messageContent = { content, contentType };\n const message = {\n roomId,\n message: messageContent,\n author,\n replyId,\n createdAt: new Date(),\n updatedAt: new Date(),\n createdBy: this.getCurrentUser().id,\n updatedBy: this.getCurrentUser().id,\n reactions: [],\n seen: [],\n };\n const messageId = await this.messageService.insertOne({ ...message });\n const newMessage = await this.messageService.getOne(messageId);\n const formattedMessage = this.formatMessage(newMessage);\n this._messageSent$.next(formattedMessage);\n return formattedMessage;\n }\n async getMessages(roomId, skip = 0, take = 99) {\n const result = await this.messageService.query({\n skip,\n take,\n filter: { field: 'roomId', value: roomId, operator: { type: 'equal' } },\n sort: [{ field: 'createdAt', dir: 'desc' }],\n });\n const formattedMessages = result.items.map((m) => this.formatMessage(m));\n return { items: formattedMessages, total: result.total };\n }\n async getMessage(messageId) {\n const message = await this.messageService.getOne(messageId);\n return this.formatMessage(message);\n }\n async editMessage(messageId, content, contentType = 'text') {\n const messageContent = { content, contentType };\n return this.messageService.updateOne(messageId, {\n message: messageContent,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async deleteMessage(messageId) {\n try {\n await this.messageService.deleteOne(messageId);\n return true;\n }\n catch (error) {\n return false;\n }\n }\n async replyMessage(replyToMessageId, content, contentType = 'text') {\n const originalMessage = await this.messageService.getOne(replyToMessageId);\n return this.sendMessage(originalMessage.roomId, content, contentType, replyToMessageId);\n }\n async pinMessage(messageId) {\n return this.messageService.updateOne(messageId, {\n isPinned: true,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async unpinMessage(messageId) {\n return this.messageService.updateOne(messageId, {\n isPinned: false,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n //#endregion\n //#region ---- ChatReactionService Implementations ----\n async addReaction(messageId, type) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const reactions = message.reactions || [];\n if (reactions.some((r) => r.author.id === author.id && r.type === type)) {\n return message;\n }\n const updatedReactions = [...reactions, { author, type }];\n return this.messageService.updateOne(messageId, {\n reactions: updatedReactions,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async removeReaction(messageId, type) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const updatedReactions = (message.reactions || []).filter((r) => !(r.author.id === author.id && r.type === type));\n return this.messageService.updateOne(messageId, {\n reactions: updatedReactions,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async getReactions(messageId) {\n const message = await this.messageService.getOne(messageId);\n return message.reactions || [];\n }\n //#endregion\n //#region ---- ChatSeenService Implementations ----\n async markSeen(messageId) {\n const author = this.getCurrentUser();\n const message = await this.messageService.getOne(messageId);\n const seen = message.seen || [];\n if (seen.some((s) => s.author.id === author.id)) {\n return message;\n }\n const updatedSeen = [...seen, { author, type: 'read' }];\n return this.messageService.updateOne(messageId, {\n seen: updatedSeen,\n updatedAt: new Date(),\n updatedBy: this.getCurrentUser().id,\n });\n }\n async getSeenBy(messageId) {\n const message = await this.messageService.getOne(messageId);\n return message.seen || [];\n }\n async markRoomSeen(roomId) {\n try {\n if (!roomId) {\n return true;\n }\n const { items } = await this.getMessages(roomId, 0, 99);\n const currentUserId = this.getCurrentUser().id;\n const unreadMessages = items.filter((message) => message.author.id !== currentUserId && !message.seen?.some((s) => s.author.id === currentUserId));\n if (unreadMessages.length > 0) {\n await Promise.all(unreadMessages.map((message) => this.markSeen(message.id)));\n }\n return true;\n }\n catch (error) {\n console.error(`Error marking room ${roomId} as seen:`, error);\n return false;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatServiceImpl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatServiceImpl, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL2NoYXQvY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFRM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUlsRSw2Q0FBNkM7QUFFN0MsTUFBTSxPQUFnQixjQUFjO0NBZ0RuQztBQUVELFlBQVk7QUFLWixNQUFNLE9BQU8sa0JBQWtCO0lBSC9CO1FBSW1CLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTdDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDdEQsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0tBNFUzRDtJQTFVQyxzQ0FBc0M7SUFFOUIsY0FBYztRQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUN0QyxPQUFPO1lBQ0wsRUFBRSxFQUFF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QUksQ0FBQztZQUNkLENBQUM7WUFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUUvQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNqQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssYUFBYSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQyxDQUM5RyxDQUFDO1lBRUYsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsTUFBTSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzs4R0FoVlUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTVVzZXJzRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9zZWN1cml0eS1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUENvbnRlbnQsIEFYUENvbnRlbnRUeXBlLCBBWFBVc2VyUmVmZXJlbmNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhNTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBBWE1Db252ZXJzYXRpb25NZXNzYWdlLFxuICBBWE1Db252ZXJzYXRpb25SZWFjdGlvbixcbiAgQVhNQ29udmVyc2F0aW9uU2VlbixcbiAgQVhNUmVhY3Rpb25UeXBlLFxuICBBWE1TZWVuVHlwZSxcbn0gZnJvbSAnLi4vLi4vZW50aXRpZXMvbWVzc2FnZS9tZXNzYWdlLnR5cGVzJztcbmltcG9ydCB7IEFYTVJvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvcm9vbS9yb29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uUm9vbSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3Jvb20vcm9vbS50eXBlcyc7XG5pbXBvcnQgeyBBWE1DaGF0TWVzc2FnZSwgQVhNQ2hhdFJvb20gfSBmcm9tICcuL2NoYXQudHlwZSc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgQWJzdHJhY3QgQ2hhdCBTZXJ2aWNlICAgLS0tLVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNQ2hhdFNlcnZpY2Uge1xuICAvLyBDaGF0Um9vbVNlcnZpY2UgTWV0aG9kc1xuICBhYnN0cmFjdCBjcmVhdGVSb29tKG1lbWJlcklkczogc3RyaW5nW10sIHRpdGxlPzogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0Um9vbT47XG4gIGFic3RyYWN0IGdldFJvb20ocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRSb29tPjtcbiAgYWJzdHJhY3QgbGlzdFJvb21zKHNraXA/OiBudW1iZXIsIHRha2U/OiBudW1iZXIpOiBQcm9taXNlPHsgaXRlbXM6IEFYTUNoYXRSb29tW107IHRvdGFsOiBudW1iZXIgfT47XG4gIGFic3RyYWN0IHVwZGF0ZVJvb20ocm9vbUlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8QVhNQ29udmVyc2F0aW9uUm9vbT4pOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvblJvb20+O1xuICBhYnN0cmFjdCBkZWxldGVSb29tKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgYWRkUGFydGljaXBhbnQocm9vbUlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPjtcbiAgYWJzdHJhY3QgcmVtb3ZlUGFydGljaXBhbnQocm9vbUlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPjtcblxuICAvLyBDaGF0TWVzc2FnZVNlcnZpY2UgTWV0aG9kc1xuICBhYnN0cmFjdCBzZW5kTWVzc2FnZShcbiAgICByb29tSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU/OiBBWFBDb250ZW50VHlwZSxcbiAgICByZXBseUlkPzogc3RyaW5nLFxuICApOiBQcm9taXNlPEFYTUNoYXRNZXNzYWdlPjtcbiAgYWJzdHJhY3QgZ2V0TWVzc2FnZXMoXG4gICAgcm9vbUlkOiBzdHJpbmcsXG4gICAgc2tpcD86IG51bWJlcixcbiAgICB0YWtlPzogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgaXRlbXM6IEFYTUNoYXRNZXNzYWdlW107IHRvdGFsOiBudW1iZXIgfT47XG4gIGFic3RyYWN0IGdldE1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNoYXRNZXNzYWdlPjtcbiAgYWJzdHJhY3QgZWRpdE1lc3NhZ2UoXG4gICAgbWVzc2FnZUlkOiBzdHJpbmcsXG4gICAgY29udGVudDogc3RyaW5nLFxuICAgIGNvbnRlbnRUeXBlPzogQVhQQ29udGVudFR5cGUsXG4gICk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT47XG4gIGFic3RyYWN0IGRlbGV0ZU1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBhYnN0cmFjdCByZXBseU1lc3NhZ2UoXG4gICAgcmVwbHlUb01lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBjb250ZW50VHlwZT86IEFYUENvbnRlbnRUeXBlLFxuICApOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuICBhYnN0cmFjdCBwaW5NZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPjtcbiAgYWJzdHJhY3QgdW5waW5NZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPjtcblxuICAvLyBDaGF0UmVhY3Rpb25TZXJ2aWNlIE1ldGhvZHNcbiAgYWJzdHJhY3QgYWRkUmVhY3Rpb24obWVzc2FnZUlkOiBzdHJpbmcsIHR5cGU6IEFYTVJlYWN0aW9uVHlwZSk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT47XG4gIGFic3RyYWN0IHJlbW92ZVJlYWN0aW9uKG1lc3NhZ2VJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+O1xuICBhYnN0cmFjdCBnZXRSZWFjdGlvbnMobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvblJlYWN0aW9uW10+O1xuXG4gIC8vIENoYXRTZWVuU2VydmljZSBNZXRob2RzXG4gIGFic3RyYWN0IG1hcmtTZWVuKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPjtcbiAgYWJzdHJhY3QgZ2V0U2VlbkJ5KG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25TZWVuW10+O1xuICBhYnN0cmFjdCBtYXJrUm9vbVNlZW4ocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIGFic3RyYWN0IHJlYWRvbmx5IG1lc3NhZ2VTZW50JDogT2JzZXJ2YWJsZTxBWE1DaGF0TWVzc2FnZT47XG59XG5cbi8vI2VuZHJlZ2lvblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ2hhdFNlcnZpY2VJbXBsIGltcGxlbWVudHMgQVhNQ2hhdFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHJvb21TZXJ2aWNlID0gaW5qZWN0KEFYTVJvb21TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZSA9IGluamVjdChBWE1NZXNzYWdlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJzU2VydmljZSA9IGluamVjdChBWE1Vc2Vyc0VudGl0eVNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VTZW50JCA9IG5ldyBTdWJqZWN0PEFYTUNoYXRNZXNzYWdlPigpO1xuICByZWFkb25seSBtZXNzYWdlU2VudCQgPSB0aGlzLl9tZXNzYWdlU2VudCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBIZWxwZXIgTWV0aG9kcyAgIC0tLS1cblxuICBwcml2YXRlIGdldEN1cnJlbnRVc2VyKCk6IEFYUFVzZXJSZWZlcmVuY2Uge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB1c2VyPy5pZCB8fCAnZ3Vlc3QtdXNlcicsXG4gICAgICB0eXBlOiAndXNlcicsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VXNlckluZm8odXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFVzZXJSZWZlcmVuY2U+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMudXNlcnNTZXJ2aWNlLmdldE9uZSh1c2VySWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHVzZXIuaWQsXG4gICAgICAgIHR5cGU6ICd1c2VyJyxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBnZXQgdXNlciBpbmZvIGZvciBJRDogJHt1c2VySWR9YCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHVzZXJJZCxcbiAgICAgICAgdHlwZTogJ3VzZXInLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE1lc3NhZ2UobWVzc2FnZTogQVhNQ29udmVyc2F0aW9uTWVzc2FnZSk6IEFYTUNoYXRNZXNzYWdlIHtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VW5yZWFkQ291bnQocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHsgaXRlbXMgfSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UucXVlcnkoe1xuICAgICAgc2tpcDogMCxcbiAgICAgIHRha2U6IDk5LFxuICAgICAgZmlsdGVyOiB7IGZpZWxkOiAncm9vbUlkJywgdmFsdWU6IHJvb21JZCwgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9IH0sXG4gICAgfSk7XG4gICAgY29uc3QgY3VycmVudFVzZXJJZCA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZDtcblxuICAgIGNvbnN0IHVucmVhZE1lc3NhZ2VzID0gaXRlbXMuZmlsdGVyKChtZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCBpc0Zyb21DdXJyZW50VXNlciA9IG1lc3NhZ2UuYXV0aG9yLmlkID09PSBjdXJyZW50VXNlcklkO1xuICAgICAgY29uc3QgaXNSZWFkQnlDdXJyZW50VXNlciA9IChtZXNzYWdlLnNlZW4gfHwgW10pLnNvbWUoKHNlZW4pID0+IHNlZW4uYXV0aG9yLmlkID09PSBjdXJyZW50VXNlcklkKTtcbiAgICAgIHJldHVybiAhaXNGcm9tQ3VycmVudFVzZXIgJiYgIWlzUmVhZEJ5Q3VycmVudFVzZXI7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVucmVhZE1lc3NhZ2VzLmxlbmd0aDtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ2hhdFJvb21TZXJ2aWNlIEltcGxlbWVudGF0aW9ucyAgIC0tLS1cblxuICBhc3luYyBjcmVhdGVSb29tKG1lbWJlcklkczogc3RyaW5nW10sIHRpdGxlPzogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0Um9vbT4ge1xuICAgIGlmIChtZW1iZXJJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBtZW1iZXIgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgcm9vbScpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IGFsbE1lbWJlcklkcyA9IFsuLi5uZXcgU2V0KFsuLi5tZW1iZXJJZHMsIGN1cnJlbnRVc2VyLmlkXSldO1xuXG4gICAgY29uc3QgbWVtYmVyUmVmZXJlbmNlcyA9IGF3YWl0IFByb21pc2UuYWxsKGFsbE1lbWJlcklkcy5tYXAoKGlkKSA9PiB0aGlzLmdldFVzZXJJbmZvKGlkKSkpO1xuXG4gICAgY29uc3QgdXNlck5hbWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtZW1iZXJSZWZlcmVuY2VzLm1hcChhc3luYyAocmVmKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLnVzZXJzU2VydmljZS5nZXRPbmUocmVmLmlkKTtcbiAgICAgICAgcmV0dXJuIGAke3VzZXIuZmlyc3ROYW1lfSAke3VzZXIubGFzdE5hbWV9YC50cmltKCk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3Qgcm9vbTogT21pdDxBWE1Db252ZXJzYXRpb25Sb29tLCAnaWQnPiA9IHtcbiAgICAgIG1lbWJlcnM6IG1lbWJlclJlZmVyZW5jZXMsXG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICB0b3BpYzogbWVtYmVySWRzLmxlbmd0aCA+IDIgPyAnZ3JvdXAnIDogJ3BlcnNvbmFsJyxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIGNyZWF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfTtcbiAgICBjb25zdCByb29tSWQgPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmluc2VydE9uZShyb29tKTtcbiAgICByZXR1cm4gdGhpcy5nZXRSb29tKHJvb21JZCk7XG4gIH1cblxuICBhc3luYyBnZXRSb29tKHJvb21JZDogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0Um9vbT4ge1xuICAgIGNvbnN0IHJvb20gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmdldE9uZShyb29tSWQpO1xuICAgIGlmICghcm9vbSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb29tIHdpdGggSUQgJHtyb29tSWR9IG5vdCBmb3VuZC5gKTtcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLmdldE1lc3NhZ2VzKHJvb21JZCwgMCwgMSk7XG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlcy5pdGVtcy5sZW5ndGggPiAwID8gbWVzc2FnZXMuaXRlbXNbMF0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdW5yZWFkQ291bnQgPSBhd2FpdCB0aGlzLmdldFVucmVhZENvdW50KHJvb21JZCk7XG4gICAgY29uc3QgY3VycmVudFVzZXJJZCA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5yb29tLFxuICAgICAgbGFzdE1lc3NhZ2UsXG4gICAgICB1bnJlYWRDb3VudCxcbiAgICAgIG1lbWJlcnM6IHJvb20ubWVtYmVycy5maWx0ZXIoKG0pID0+IG0uaWQgIT09IGN1cnJlbnRVc2VySWQpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBsaXN0Um9vbXMoc2tpcCA9IDAsIHRha2UgPSAxMDApOiBQcm9taXNlPHsgaXRlbXM6IEFYTUNoYXRSb29tW107IHRvdGFsOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IHsgaXRlbXMsIHRvdGFsIH0gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLnF1ZXJ5KHsgc2tpcCwgdGFrZSB9KTtcblxuICAgIGNvbnN0IHNldHRsZWRSb29tcyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChpdGVtcy5tYXAoKHJvb20pID0+IHRoaXMuZ2V0Um9vbShyb29tLmlkKSkpO1xuXG4gICAgY29uc3QgY2hhdFJvb21zID0gc2V0dGxlZFJvb21zXG4gICAgICAuZmlsdGVyKChyZXN1bHQpOiByZXN1bHQgaXMgUHJvbWlzZUZ1bGZpbGxlZFJlc3VsdDxBWE1DaGF0Um9vbT4gPT4ge1xuICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCByb29tIGRldGFpbHM6JywgcmVzdWx0LnJlYXNvbik7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSlcbiAgICAgIC5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnZhbHVlKTtcblxuICAgIHJldHVybiB7IGl0ZW1zOiBjaGF0Um9vbXMsIHRvdGFsOiBjaGF0Um9vbXMubGVuZ3RoIH07XG4gIH1cblxuICBhc3luYyB1cGRhdGVSb29tKHJvb21JZDogc3RyaW5nLCBkYXRhOiBQYXJ0aWFsPEFYTUNvbnZlcnNhdGlvblJvb20+KTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPiB7XG4gICAgY29uc3QgdXBkYXRlID0geyAuLi5kYXRhLCB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkIH07XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHJvb21JZCwgdXBkYXRlKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVJvb20ocm9vbUlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5yb29tU2VydmljZS5kZWxldGVPbmUocm9vbUlkKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYWRkUGFydGljaXBhbnQocm9vbUlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25Sb29tPiB7XG4gICAgY29uc3Qgcm9vbSA9IGF3YWl0IHRoaXMucm9vbVNlcnZpY2UuZ2V0T25lKHJvb21JZCk7XG4gICAgaWYgKHJvb20ubWVtYmVycy5zb21lKChtKSA9PiBtLmlkID09PSB1c2VySWQpKSByZXR1cm4gcm9vbTtcbiAgICBjb25zdCB1c2VyUmVmID0gYXdhaXQgdGhpcy5nZXRVc2VySW5mbyh1c2VySWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRNZW1iZXJzID0gWy4uLnJvb20ubWVtYmVycywgdXNlclJlZl07XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHJvb21JZCwge1xuICAgICAgbWVtYmVyczogdXBkYXRlZE1lbWJlcnMsXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVBhcnRpY2lwYW50KHJvb21JZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uUm9vbT4ge1xuICAgIGNvbnN0IHJvb20gPSBhd2FpdCB0aGlzLnJvb21TZXJ2aWNlLmdldE9uZShyb29tSWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRNZW1iZXJzID0gcm9vbS5tZW1iZXJzLmZpbHRlcigobWVtYmVyKSA9PiBtZW1iZXIuaWQgIT09IHVzZXJJZCk7XG4gICAgcmV0dXJuIHRoaXMucm9vbVNlcnZpY2UudXBkYXRlT25lKHJvb21JZCwge1xuICAgICAgbWVtYmVyczogdXBkYXRlZE1lbWJlcnMsXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ2hhdE1lc3NhZ2VTZXJ2aWNlIEltcGxlbWVudGF0aW9ucyAgIC0tLS1cblxuICBhc3luYyBzZW5kTWVzc2FnZShcbiAgICByb29tSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU6IEFYUENvbnRlbnRUeXBlID0gJ3RleHQnLFxuICAgIHJlcGx5SWQ/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8QVhNQ2hhdE1lc3NhZ2U+IHtcbiAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgbWVzc2FnZUNvbnRlbnQ6IEFYUENvbnRlbnQgPSB7IGNvbnRlbnQsIGNvbnRlbnRUeXBlIH07XG4gICAgY29uc3QgbWVzc2FnZTogT21pdDxBWE1Db252ZXJzYXRpb25NZXNzYWdlLCAnaWQnPiA9IHtcbiAgICAgIHJvb21JZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VDb250ZW50LFxuICAgICAgYXV0aG9yLFxuICAgICAgcmVwbHlJZCxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIGNyZWF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgICByZWFjdGlvbnM6IFtdLFxuICAgICAgc2VlbjogW10sXG4gICAgfTtcbiAgICBjb25zdCBtZXNzYWdlSWQgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluc2VydE9uZSh7IC4uLm1lc3NhZ2UgfSk7XG4gICAgY29uc3QgbmV3TWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgY29uc3QgZm9ybWF0dGVkTWVzc2FnZSA9IHRoaXMuZm9ybWF0TWVzc2FnZShuZXdNZXNzYWdlKTtcblxuICAgIHRoaXMuX21lc3NhZ2VTZW50JC5uZXh0KGZvcm1hdHRlZE1lc3NhZ2UpO1xuXG4gICAgcmV0dXJuIGZvcm1hdHRlZE1lc3NhZ2U7XG4gIH1cblxuICBhc3luYyBnZXRNZXNzYWdlcyhyb29tSWQ6IHN0cmluZywgc2tpcCA9IDAsIHRha2UgPSA5OSk6IFByb21pc2U8eyBpdGVtczogQVhNQ2hhdE1lc3NhZ2VbXTsgdG90YWw6IG51bWJlciB9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tZXNzYWdlU2VydmljZS5xdWVyeSh7XG4gICAgICBza2lwLFxuICAgICAgdGFrZSxcbiAgICAgIGZpbHRlcjogeyBmaWVsZDogJ3Jvb21JZCcsIHZhbHVlOiByb29tSWQsIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSB9LFxuICAgICAgc29ydDogW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXI6ICdkZXNjJyB9XSxcbiAgICB9KTtcbiAgICBjb25zdCBmb3JtYXR0ZWRNZXNzYWdlcyA9IHJlc3VsdC5pdGVtcy5tYXAoKG0pID0+IHRoaXMuZm9ybWF0TWVzc2FnZShtKSk7XG4gICAgcmV0dXJuIHsgaXRlbXM6IGZvcm1hdHRlZE1lc3NhZ2VzLCB0b3RhbDogcmVzdWx0LnRvdGFsIH07XG4gIH1cblxuICBhc3luYyBnZXRNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1DaGF0TWVzc2FnZT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuICAgIHJldHVybiB0aGlzLmZvcm1hdE1lc3NhZ2UobWVzc2FnZSk7XG4gIH1cblxuICBhc3luYyBlZGl0TWVzc2FnZShcbiAgICBtZXNzYWdlSWQ6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU6IEFYUENvbnRlbnRUeXBlID0gJ3RleHQnLFxuICApOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+IHtcbiAgICBjb25zdCBtZXNzYWdlQ29udGVudDogQVhQQ29udGVudCA9IHsgY29udGVudCwgY29udGVudFR5cGUgfTtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUobWVzc2FnZUlkLCB7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlQ29udGVudCxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmRlbGV0ZU9uZShtZXNzYWdlSWQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXBseU1lc3NhZ2UoXG4gICAgcmVwbHlUb01lc3NhZ2VJZDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBjb250ZW50VHlwZTogQVhQQ29udGVudFR5cGUgPSAndGV4dCcsXG4gICk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uTWVzc2FnZT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsTWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKHJlcGx5VG9NZXNzYWdlSWQpO1xuICAgIHJldHVybiB0aGlzLnNlbmRNZXNzYWdlKG9yaWdpbmFsTWVzc2FnZS5yb29tSWQsIGNvbnRlbnQsIGNvbnRlbnRUeXBlLCByZXBseVRvTWVzc2FnZUlkKTtcbiAgfVxuXG4gIGFzeW5jIHBpbk1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VydmljZS51cGRhdGVPbmUobWVzc2FnZUlkLCB7XG4gICAgICBpc1Bpbm5lZDogdHJ1ZSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5waW5NZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKG1lc3NhZ2VJZCwge1xuICAgICAgaXNQaW5uZWQ6IGZhbHNlLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENoYXRSZWFjdGlvblNlcnZpY2UgSW1wbGVtZW50YXRpb25zICAgLS0tLVxuXG4gIGFzeW5jIGFkZFJlYWN0aW9uKG1lc3NhZ2VJZDogc3RyaW5nLCB0eXBlOiBBWE1SZWFjdGlvblR5cGUpOiBQcm9taXNlPEFYTUNvbnZlcnNhdGlvbk1lc3NhZ2U+IHtcbiAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgY29uc3QgcmVhY3Rpb25zID0gbWVzc2FnZS5yZWFjdGlvbnMgfHwgW107XG4gICAgaWYgKHJlYWN0aW9ucy5zb21lKChyKSA9PiByLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkICYmIHIudHlwZSA9PT0gdHlwZSkpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGVkUmVhY3Rpb25zOiBBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdID0gWy4uLnJlYWN0aW9ucywgeyBhdXRob3IsIHR5cGUgfV07XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKG1lc3NhZ2VJZCwge1xuICAgICAgcmVhY3Rpb25zOiB1cGRhdGVkUmVhY3Rpb25zLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLmdldEN1cnJlbnRVc2VyKCkuaWQsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZW1vdmVSZWFjdGlvbihtZXNzYWdlSWQ6IHN0cmluZywgdHlwZTogQVhNUmVhY3Rpb25UeXBlKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiB7XG4gICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRSZWFjdGlvbnMgPSAobWVzc2FnZS5yZWFjdGlvbnMgfHwgW10pLmZpbHRlcigocikgPT4gIShyLmF1dGhvci5pZCA9PT0gYXV0aG9yLmlkICYmIHIudHlwZSA9PT0gdHlwZSkpO1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnVwZGF0ZU9uZShtZXNzYWdlSWQsIHtcbiAgICAgIHJlYWN0aW9uczogdXBkYXRlZFJlYWN0aW9ucyxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIHVwZGF0ZWRCeTogdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmVhY3Rpb25zKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25SZWFjdGlvbltdPiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgcmV0dXJuIG1lc3NhZ2UucmVhY3Rpb25zIHx8IFtdO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDaGF0U2VlblNlcnZpY2UgSW1wbGVtZW50YXRpb25zICAgLS0tLVxuXG4gIGFzeW5jIG1hcmtTZWVuKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxBWE1Db252ZXJzYXRpb25NZXNzYWdlPiB7XG4gICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmdldE9uZShtZXNzYWdlSWQpO1xuICAgIGNvbnN0IHNlZW4gPSBtZXNzYWdlLnNlZW4gfHwgW107XG4gICAgaWYgKHNlZW4uc29tZSgocykgPT4gcy5hdXRob3IuaWQgPT09IGF1dGhvci5pZCkpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cbiAgICBjb25zdCB1cGRhdGVkU2VlbjogQVhNQ29udmVyc2F0aW9uU2VlbltdID0gWy4uLnNlZW4sIHsgYXV0aG9yLCB0eXBlOiAncmVhZCcgYXMgQVhNU2VlblR5cGUgfV07XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZVNlcnZpY2UudXBkYXRlT25lKG1lc3NhZ2VJZCwge1xuICAgICAgc2VlbjogdXBkYXRlZFNlZW4sXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkQnk6IHRoaXMuZ2V0Q3VycmVudFVzZXIoKS5pZCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldFNlZW5CeShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhNQ29udmVyc2F0aW9uU2VlbltdPiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZVNlcnZpY2UuZ2V0T25lKG1lc3NhZ2VJZCk7XG4gICAgcmV0dXJuIG1lc3NhZ2Uuc2VlbiB8fCBbXTtcbiAgfVxuXG4gIGFzeW5jIG1hcmtSb29tU2Vlbihyb29tSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXJvb21JZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgaXRlbXMgfSA9IGF3YWl0IHRoaXMuZ2V0TWVzc2FnZXMocm9vbUlkLCAwLCA5OSk7XG4gICAgICBjb25zdCBjdXJyZW50VXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcigpLmlkO1xuXG4gICAgICBjb25zdCB1bnJlYWRNZXNzYWdlcyA9IGl0ZW1zLmZpbHRlcihcbiAgICAgICAgKG1lc3NhZ2UpID0+IG1lc3NhZ2UuYXV0aG9yLmlkICE9PSBjdXJyZW50VXNlcklkICYmICFtZXNzYWdlLnNlZW4/LnNvbWUoKHMpID0+IHMuYXV0aG9yLmlkID09PSBjdXJyZW50VXNlcklkKSxcbiAgICAgICk7XG5cbiAgICAgIGlmICh1bnJlYWRNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHVucmVhZE1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4gdGhpcy5tYXJrU2VlbihtZXNzYWdlLmlkKSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIG1hcmtpbmcgcm9vbSAke3Jvb21JZH0gYXMgc2VlbjpgLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iXX0=","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/badge\";\nexport class AXMChatItemComponent {\n constructor() {\n // Input\n this.data = input.required();\n // Output\n this.pressChatItem = output();\n // Services\n this.sessionService = inject(AXPSessionService);\n this.userService = inject(AXMUsersEntityService);\n this.datePipe = inject(DatePipe);\n this.chatName = signal({ fullName: 'Loading...', id: '' });\n this.#chatInfoEffect = effect(async () => {\n const { members, title, id } = this.data();\n if (members.length > 1) {\n this.chatName.set({\n fullName: title || 'Group Chat',\n id,\n });\n return;\n }\n const member = members[0];\n if (!member) {\n this.chatName.set({ fullName: 'Unknown User', id: '' });\n return;\n }\n const data = await this.userService.getOne(member.id);\n this.chatName.set({\n fullName: `${data.firstName} ${data.lastName}`,\n id: member.id,\n });\n });\n this.formattedLastMessageDate = computed(() => {\n const lastMessage = this.data().lastMessage;\n if (!lastMessage?.createdAt) {\n return '';\n }\n const messageDate = new Date(lastMessage.createdAt);\n const today = new Date();\n const isToday = messageDate.getFullYear() === today.getFullYear() &&\n messageDate.getMonth() === today.getMonth() &&\n messageDate.getDate() === today.getDate();\n if (isToday) {\n return this.datePipe.transform(messageDate, 'shortTime');\n }\n else {\n return this.datePipe.transform(messageDate, 'mediumDate');\n }\n });\n this.lastMessage = computed(() => {\n const message = this.data().lastMessage?.message;\n if (!message)\n return { content: 'No messages yet', contentType: 'text' };\n return {\n content: message.contentType === 'text' ? message.content : message.contentType,\n contentType: message.contentType,\n };\n });\n this.hasUnread = computed(() => {\n return this.data().unreadCount > 0;\n });\n this.unreadCount = computed(() => {\n return this.data().unreadCount.toString();\n });\n }\n #chatInfoEffect;\n onPressChatItem(id) {\n this.pressChatItem.emit(id);\n }\n messageSeenStatus() {\n const lastMessage = this.data().lastMessage;\n if (!lastMessage)\n return '';\n // Check if current user is the author\n if (this.sessionService.user?.id === lastMessage.author?.id) {\n // Check if message has been seen by anyone\n return lastMessage.seen.length > 0 ? 'ax-icon-dobble-check' : 'ax-icon-check';\n }\n return '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMChatItemComponent, isStandalone: true, selector: \"axm-chat-item\", inputs: { data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { pressChatItem: \"pressChatItem\" }, ngImport: i0, template: \"<div\\n [id]=\\\"data().id\\\"\\n class=\\\"ax-cursor-pointer ax-p-4 ax-flex ax-items-center ax-justify-between ax-gap-4 ax-border-b ax-border-divider\\\"\\n (click)=\\\"onPressChatItem(data().id)\\\"\\n>\\n <!-- Avatar and User Info Section -->\\n <div class=\\\"ax-flex ax-min-w-0 ax-gap-4 ax-flex-1\\\">\\n <!-- Avatar with Online Status -->\\n <div class=\\\"ax-flex-shrink-0\\\">\\n <axp-user-avatar [size]=\\\"48\\\" [userId]=\\\"chatName().id\\\"></axp-user-avatar>\\n <!--Temp-->\\n </div>\\n\\n <!-- User Details and Last Message -->\\n <div class=\\\"ax-flex ax-flex-col ax-min-w-0 ax-flex-1 ax-gap-2\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2\\\">\\n <p class=\\\"ax-font-semibold ax-text-on-surface ax-truncate ax-pt-1\\\" [title]=\\\"chatName().fullName\\\">\\n {{ chatName().fullName }}\\n </p>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (messageSeenStatus()) {\\n <ax-icon class=\\\"ax-icon ax-text-success ax-size-5\\\" [class]=\\\"messageSeenStatus()\\\"></ax-icon>\\n }\\n @if (this.data().lastMessage) {\\n <span class=\\\"ax-text-xs ax-whitespace-nowrap\\\">\\n {{ formattedLastMessageDate() }}\\n </span>\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-mt-1 ax-overflow-hidden\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-sm ax-shrink ax-min-w-0\\\">\\n @switch (lastMessage().contentType) {\\n @case ('image') {\\n <i class=\\\"fa-regular fa-image\\\"></i>\\n }\\n @case ('video') {\\n <i class=\\\"fa-regular fa-video\\\"></i>\\n }\\n @case ('file') {\\n <i class=\\\"fa-regular fa-file\\\"></i>\\n }\\n @case ('audio') {\\n <i class=\\\"fa-regular fa-microphone\\\"></i>\\n }\\n @case ('link') {\\n <i class=\\\"fa-regular fa-link\\\"></i>\\n }\\n <!-- @default {\\n <i class=\\\"fa-regular fa-message\\\"></i>\\n } -->\\n }\\n <p class=\\\"ax-truncate ax-capitalize\\\">\\n {{ lastMessage().content }}\\n </p>\\n </div>\\n @if (hasUnread()) {\\n <ax-badge color=\\\"primary\\\" [text]=\\\"unreadCount()\\\" class=\\\"ax-flex-shrink-0 ax-ml-auto\\\"></ax-badge>\\n }\\n </div>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:block;width:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i2.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"component\", type: AXPUserAvatarComponent, selector: \"axp-user-avatar\", inputs: [\"size\", \"userId\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatItemComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXDecoratorModule, AXBadgeModule, AXPUserAvatarComponent], template: \"<div\\n [id]=\\\"data().id\\\"\\n class=\\\"ax-cursor-pointer ax-p-4 ax-flex ax-items-center ax-justify-between ax-gap-4 ax-border-b ax-border-divider\\\"\\n (click)=\\\"onPressChatItem(data().id)\\\"\\n>\\n <!-- Avatar and User Info Section -->\\n <div class=\\\"ax-flex ax-min-w-0 ax-gap-4 ax-flex-1\\\">\\n <!-- Avatar with Online Status -->\\n <div class=\\\"ax-flex-shrink-0\\\">\\n <axp-user-avatar [size]=\\\"48\\\" [userId]=\\\"chatName().id\\\"></axp-user-avatar>\\n <!--Temp-->\\n </div>\\n\\n <!-- User Details and Last Message -->\\n <div class=\\\"ax-flex ax-flex-col ax-min-w-0 ax-flex-1 ax-gap-2\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-gap-2\\\">\\n <p class=\\\"ax-font-semibold ax-text-on-surface ax-truncate ax-pt-1\\\" [title]=\\\"chatName().fullName\\\">\\n {{ chatName().fullName }}\\n </p>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (messageSeenStatus()) {\\n <ax-icon class=\\\"ax-icon ax-text-success ax-size-5\\\" [class]=\\\"messageSeenStatus()\\\"></ax-icon>\\n }\\n @if (this.data().lastMessage) {\\n <span class=\\\"ax-text-xs ax-whitespace-nowrap\\\">\\n {{ formattedLastMessageDate() }}\\n </span>\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-mt-1 ax-overflow-hidden\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-sm ax-shrink ax-min-w-0\\\">\\n @switch (lastMessage().contentType) {\\n @case ('image') {\\n <i class=\\\"fa-regular fa-image\\\"></i>\\n }\\n @case ('video') {\\n <i class=\\\"fa-regular fa-video\\\"></i>\\n }\\n @case ('file') {\\n <i class=\\\"fa-regular fa-file\\\"></i>\\n }\\n @case ('audio') {\\n <i class=\\\"fa-regular fa-microphone\\\"></i>\\n }\\n @case ('link') {\\n <i class=\\\"fa-regular fa-link\\\"></i>\\n }\\n <!-- @default {\\n <i class=\\\"fa-regular fa-message\\\"></i>\\n } -->\\n }\\n <p class=\\\"ax-truncate ax-capitalize\\\">\\n {{ lastMessage().content }}\\n </p>\\n </div>\\n @if (hasUnread()) {\\n <ax-badge color=\\\"primary\\\" [text]=\\\"unreadCount()\\\" class=\\\"ax-flex-shrink-0 ax-ml-auto\\\"></ax-badge>\\n }\\n </div>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:block;width:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NvbXBvbmVudHMvY2hhdC1pdGVtL2NoYXQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jb21wb25lbnRzL2NoYXQtaXRlbS9jaGF0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBVXBILE1BQU0sT0FBTyxvQkFBb0I7SUFQakM7UUFRRSxRQUFRO1FBQ1IsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWUsQ0FBQztRQUVyQyxTQUFTO1FBQ1Qsa0JBQWEsR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUVqQyxXQUFXO1FBQ0gsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FB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QkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhNVXNlcnNFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3NlY3VyaXR5LW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTUNoYXRSb29tIH0gZnJvbSAnLi4vLi4vY2hhdC50eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLWNoYXQtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGF0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGF0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtBWERlY29yYXRvck1vZHVsZSwgQVhCYWRnZU1vZHVsZSwgQVhQVXNlckF2YXRhckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNoYXRJdGVtQ29tcG9uZW50IHtcbiAgLy8gSW5wdXRcbiAgZGF0YSA9IGlucHV0LnJlcXVpcmVkPEFYTUNoYXRSb29tPigpO1xuXG4gIC8vIE91dHB1dFxuICBwcmVzc0NoYXRJdGVtID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICAvLyBTZXJ2aWNlc1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB1c2VyU2VydmljZSA9IGluamVjdChBWE1Vc2Vyc0VudGl0eVNlcnZpY2UpO1xuICBwcml2YXRlIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcblxuICBwcm90ZWN0ZWQgY2hhdE5hbWUgPSBzaWduYWw8eyBmdWxsTmFtZTogc3RyaW5nOyBpZDogc3RyaW5nIH0+KHsgZnVsbE5hbWU6ICdMb2FkaW5nLi4uJywgaWQ6ICcnIH0pO1xuXG4gICNjaGF0SW5mb0VmZmVjdCA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBtZW1iZXJzLCB0aXRsZSwgaWQgfSA9IHRoaXMuZGF0YSgpO1xuXG4gICAgaWYgKG1lbWJlcnMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5jaGF0TmFtZS5zZXQoe1xuICAgICAgICBmdWxsTmFtZTogdGl0bGUgfHwgJ0dyb3VwIENoYXQnLFxuICAgICAgICBpZCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lbWJlciA9IG1lbWJlcnNbMF07XG4gICAgaWYgKCFtZW1iZXIpIHtcbiAgICAgIHRoaXMuY2hhdE5hbWUuc2V0KHsgZnVsbE5hbWU6ICdVbmtub3duIFVzZXInLCBpZDogJycgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMudXNlclNlcnZpY2UuZ2V0T25lKG1lbWJlci5pZCk7XG4gICAgdGhpcy5jaGF0TmFtZS5zZXQoe1xuICAgICAgZnVsbE5hbWU6IGAke2RhdGEuZmlyc3ROYW1lfSAke2RhdGEubGFzdE5hbWV9YCxcbiAgICAgIGlkOiBtZW1iZXIuaWQsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBmb3JtYXR0ZWRMYXN0TWVzc2FnZURhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSB0aGlzLmRhdGEoKS5sYXN0TWVzc2FnZTtcbiAgICBpZiAoIWxhc3RNZXNzYWdlPy5jcmVhdGVkQXQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZURhdGUgPSBuZXcgRGF0ZShsYXN0TWVzc2FnZS5jcmVhdGVkQXQpO1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBpc1RvZGF5ID1cbiAgICAgIG1lc3NhZ2VEYXRlLmdldEZ1bGxZZWFyKCkgPT09IHRvZGF5LmdldEZ1bGxZZWFyKCkgJiZcbiAgICAgIG1lc3NhZ2VEYXRlLmdldE1vbnRoKCkgPT09IHRvZGF5LmdldE1vbnRoKCkgJiZcbiAgICAgIG1lc3NhZ2VEYXRlLmdldERhdGUoKSA9PT0gdG9kYXkuZ2V0RGF0ZSgpO1xuXG4gICAgaWYgKGlzVG9kYXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShtZXNzYWdlRGF0ZSwgJ3Nob3J0VGltZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obWVzc2FnZURhdGUsICdtZWRpdW1EYXRlJyk7XG4gICAgfVxuICB9KTtcblxuICBwcm90ZWN0ZWQgbGFzdE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZGF0YSgpLmxhc3RNZXNzYWdlPy5tZXNzYWdlO1xuICAgIGlmICghbWVzc2FnZSkgcmV0dXJuIHsgY29udGVudDogJ05vIG1lc3NhZ2VzIHlldCcsIGNvbnRlbnRUeXBlOiAndGV4dCcgfTtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogbWVzc2FnZS5jb250ZW50VHlwZSA9PT0gJ3RleHQnID8gbWVzc2FnZS5jb250ZW50IDogbWVzc2FnZS5jb250ZW50VHlwZSxcbiAgICAgIGNvbnRlbnRUeXBlOiBtZXNzYWdlLmNvbnRlbnRUeXBlLFxuICAgIH07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBoYXNVbnJlYWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSgpLnVucmVhZENvdW50ID4gMDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHVucmVhZENvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEoKS51bnJlYWRDb3VudC50b1N0cmluZygpO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgb25QcmVzc0NoYXRJdGVtKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByZXNzQ2hhdEl0ZW0uZW1pdChpZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWVzc2FnZVNlZW5TdGF0dXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IHRoaXMuZGF0YSgpLmxhc3RNZXNzYWdlO1xuICAgIGlmICghbGFzdE1lc3NhZ2UpIHJldHVybiAnJztcblxuICAgIC8vIENoZWNrIGlmIGN1cnJlbnQgdXNlciBpcyB0aGUgYXV0aG9yXG4gICAgaWYgKHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcj8uaWQgPT09IGxhc3RNZXNzYWdlLmF1dGhvcj8uaWQpIHtcbiAgICAgIC8vIENoZWNrIGlmIG1lc3NhZ2UgaGFzIGJlZW4gc2VlbiBieSBhbnlvbmVcbiAgICAgIHJldHVybiBsYXN0TWVzc2FnZS5zZWVuLmxlbmd0aCA+IDAgPyAnYXgtaWNvbi1kb2JibGUtY2hlY2snIDogJ2F4LWljb24tY2hlY2snO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuIiwiPGRpdlxuICBbaWRdPVwiZGF0YSgpLmlkXCJcbiAgY2xhc3M9XCJheC1jdXJzb3ItcG9pbnRlciBheC1wLTQgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWdhcC00IGF4LWJvcmRlci1iIGF4LWJvcmRlci1kaXZpZGVyXCJcbiAgKGNsaWNrKT1cIm9uUHJlc3NDaGF0SXRlbShkYXRhKCkuaWQpXCJcbj5cbiAgPCEtLSBBdmF0YXIgYW5kIFVzZXIgSW5mbyBTZWN0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1taW4tdy0wIGF4LWdhcC00IGF4LWZsZXgtMVwiPlxuICAgIDwhLS0gQXZhdGFyIHdpdGggT25saW5lIFN0YXR1cyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC1zaHJpbmstMFwiPlxuICAgICAgPGF4cC11c2VyLWF2YXRhciBbc2l6ZV09XCI0OFwiIFt1c2VySWRdPVwiY2hhdE5hbWUoKS5pZFwiPjwvYXhwLXVzZXItYXZhdGFyPlxuICAgICAgPCEtLVRlbXAtLT5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVXNlciBEZXRhaWxzIGFuZCBMYXN0IE1lc3NhZ2UgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWluLXctMCBheC1mbGV4LTEgYXgtZ2FwLTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTJcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtb24tc3VyZmFjZSBheC10cnVuY2F0ZSBheC1wdC0xXCIgW3RpdGxlXT1cImNoYXROYW1lKCkuZnVsbE5hbWVcIj5cbiAgICAgICAgICB7eyBjaGF0TmFtZSgpLmZ1bGxOYW1lIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0xXCI+XG4gICAgICAgICAgQGlmIChtZXNzYWdlU2VlblN0YXR1cygpKSB7XG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtdGV4dC1zdWNjZXNzIGF4LXNpemUtNVwiIFtjbGFzc109XCJtZXNzYWdlU2VlblN0YXR1cygpXCI+PC9heC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRoaXMuZGF0YSgpLmxhc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQteHMgYXgtd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFzdE1lc3NhZ2VEYXRlKCkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTIgYXgtbXQtMSBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yIGF4LXRleHQtc20gYXgtc2hyaW5rIGF4LW1pbi13LTBcIj5cbiAgICAgICAgICBAc3dpdGNoIChsYXN0TWVzc2FnZSgpLmNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICBAY2FzZSAoJ2ltYWdlJykge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtaW1hZ2VcIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ3ZpZGVvJykge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtdmlkZW9cIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtcmVndWxhciBmYS1maWxlXCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdhdWRpbycpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLW1pY3JvcGhvbmVcIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ2xpbmsnKSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtcmVndWxhciBmYS1saW5rXCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPCEtLSBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtcmVndWxhciBmYS1tZXNzYWdlXCI+PC9pPlxuICAgICAgICAgICAgfSAtLT5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHAgY2xhc3M9XCJheC10cnVuY2F0ZSBheC1jYXBpdGFsaXplXCI+XG4gICAgICAgICAgICB7eyBsYXN0TWVzc2FnZSgpLmNvbnRlbnQgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGhhc1VucmVhZCgpKSB7XG4gICAgICAgICAgPGF4LWJhZGdlIGNvbG9yPVwicHJpbWFyeVwiIFt0ZXh0XT1cInVucmVhZENvdW50KClcIiBjbGFzcz1cImF4LWZsZXgtc2hyaW5rLTAgYXgtbWwtYXV0b1wiPjwvYXgtYmFkZ2U+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19","import { AXResizableDirective } from '@acorex/cdk/resizable';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, inject, signal, viewChild, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, startWith } from 'rxjs';\nimport { AXMCommentLookupPopup } from '../comment';\nimport { AXMChatService } from './chat.service';\nimport { AXMChatItemComponent } from './components/chat-item/chat-item.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/router\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@acorex/components/badge\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/components/search-box\";\nimport * as i7 from \"@acorex/components/tabs\";\nimport * as i8 from \"@acorex/components/button\";\nimport * as i9 from \"@acorex/components/skeleton\";\nexport class AXMChatComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n this.activatedRoute = inject(ActivatedRoute);\n this.chatService = inject(AXMChatService);\n this.userService = inject(AXMUsersEntityService);\n this.popupService = inject(AXPopupService);\n this.router = inject(Router);\n this.unsubscribe = inject(AXUnsubscriber);\n // View Children\n this.tab = viewChild('tab');\n this.container = viewChild('container');\n // State signals\n this.rooms = signal([]);\n this.allRooms = signal([]);\n this.selectedRoom = signal(null);\n this.isLoading = signal(false);\n this.error = signal(null);\n this.activeTab = signal(0);\n this.isSearching = signal(false);\n this.searchQuery = signal('');\n this.showSearch = signal(true);\n this.placeholder = signal('Search chats...');\n // Computed signals\n // filteredRooms = computed(() => {\n // let chatRooms = this.rooms();\n // // Apply search filter\n // if (this.searchQuery()) {\n // const searchText = this.searchQuery().toLowerCase();\n // chatRooms = chatRooms.filter(async (room) => {\n // const user = await this.userService.getOne(room.members?.[0]?.id);\n // const roomName = `${user.firstName} ${user.lastName}` || '';\n // const lastMessage = room.lastMessage?.message?.content || '';\n // return roomName.toLowerCase().includes(searchText) || lastMessage.toLowerCase().includes(searchText);\n // });\n // }\n // // Apply tab filter\n // if (this.activeTab() === 1) {\n // return chatRooms.filter((room) => room.unreadCount > 0);\n // }\n // return chatRooms;\n // });\n this.filteredRooms = signal([]);\n this.searchEffect = effect(async () => {\n let chatRooms = this.allRooms();\n // Search filter\n const query = (this.searchQuery() || '').toLowerCase();\n if (query) {\n // Perform async enrichment for names\n const filtered = [];\n for (const room of chatRooms) {\n try {\n let roomName = '';\n // Handle group chats vs. single-user chats\n if (room.members && room.members.length > 1) {\n roomName = room.title || '';\n }\n else if (room.members && room.members.length === 1) {\n const memberId = room.members[0].id;\n if (memberId) {\n const user = await this.userService.getOne(memberId);\n roomName = `${user.firstName} ${user.lastName}` || '';\n }\n }\n const lastMessage = room.lastMessage?.message?.content || '';\n if (roomName.toLowerCase().includes(query) || lastMessage.toLowerCase().includes(query)) {\n filtered.push(room);\n }\n }\n catch (error) {\n console.error(`Failed to process search for room ${room.id}`, error);\n }\n }\n chatRooms = filtered;\n }\n // Tab filter\n if (this.activeTab() === 1) {\n chatRooms = chatRooms.filter((room) => room.unreadCount > 0);\n }\n this.filteredRooms.set(chatRooms);\n });\n this.unreadCount = computed(() => this.allRooms().filter((i) => i.unreadCount > 0).length);\n this.allCount = computed(() => this.allRooms().length);\n this.hasUnread = computed(() => this.allRooms().filter((i) => i.unreadCount > 0).length > 0);\n this.totalCount = computed(() => this.allRooms().length || 0);\n this.af = afterNextRender(() => {\n const tabComponent = this.tab();\n if (tabComponent) {\n tabComponent.onActiveTabChanged.subscribe((i) => {\n this.activeTab.set(i.index);\n });\n }\n //(window as any).a = this.container()?.startSideDrawer();\n });\n }\n onTabChange(event) {\n this.activeTab.set(event.index);\n }\n async ngOnInit() {\n super.ngOnInit();\n this.isLoading.set(true);\n this.error.set(null);\n await this.loadChats();\n this.isLoading.set(false);\n //\n this.router.events\n .pipe(this.unsubscribe.takeUntilDestroy, filter((event) => event instanceof NavigationEnd), startWith(null))\n .subscribe(async () => {\n await this.loadFromRoute();\n });\n //\n this.messageSentSubscription = this.chatService.messageSent$.subscribe(() => {\n this.refreshChat();\n });\n }\n async loadFromRoute() {\n const chatId = this.activatedRoute.snapshot.firstChild?.paramMap.get('id');\n if (chatId) {\n this.markChatAsRead(chatId);\n }\n else {\n this.selectedRoom.set(null);\n }\n }\n // Page Interface Implementation\n async getPageTitle() {\n const room = this.selectedRoom();\n if (!room) {\n return '';\n }\n const { members, title, id } = room;\n if (members.length > 1) {\n return title || 'Group Chat';\n }\n const member = members[0];\n if (!member) {\n return 'Unknown User';\n }\n const user = await this.userService.getOne(member.id);\n return `${user.firstName} ${user.lastName}` || 'Unknown User';\n }\n getPageDescription() {\n const room = this.selectedRoom();\n return room?.topic || '';\n }\n async getBackButton() {\n if (this.selectedRoom()) {\n return {\n title: await this.translateService.translateAsync('back-to-chat-list', { scope: 'conversation' }),\n };\n }\n else\n return null;\n }\n onBackButtonClick() {\n this.selectedRoom.set(null);\n this.router.navigate(['./'], { relativeTo: this.activatedRoute });\n }\n // Methods\n async loadChats() {\n try {\n // Use the updated service method to get rooms with last messages\n const response = await this.chatService.listRooms();\n // Sort rooms by last message createdAt timestamp in descending order\n const sortedRooms = response.items.sort((a, b) => {\n const dateA = a.lastMessage?.createdAt || a.createdAt || 0;\n const dateB = b.lastMessage?.createdAt || b.createdAt || 0;\n return new Date(dateB).getTime() - new Date(dateA).getTime();\n });\n this.allRooms.set(sortedRooms);\n this.rooms.set(sortedRooms);\n }\n catch (error) {\n this.error.set('Failed to load chats. Please try again.');\n console.error('Error loading chats:', error);\n }\n }\n async refreshChat() {\n await this.loadChats();\n }\n async markChatAsRead(chatId) {\n try {\n // Use the service method to mark chat as read\n await this.chatService.markRoomSeen(chatId);\n // Update local state without making another network request\n const currentRooms = this.allRooms();\n const updatedRooms = currentRooms.map((room) => {\n if (room.id === chatId) {\n // Reset unread count for the selected room\n return { ...room, unreadCount: 0 };\n }\n return room;\n });\n // Update the rooms signals\n this.allRooms.set(updatedRooms);\n this.rooms.set(updatedRooms);\n // Find the selected room\n const selectedRoom = updatedRooms.find((room) => room.id === chatId) || null;\n this.selectedRoom.set(selectedRoom);\n // Navigate to the chat details\n this.router.navigate([chatId], { relativeTo: this.activatedRoute });\n }\n catch (error) {\n console.error('Failed to mark chat as read:', error);\n }\n }\n searchChat(query) {\n this.searchQuery.set(query);\n this.isSearching.set(!!query);\n }\n // Header methods\n onSearch(query) {\n this.searchChat(query);\n }\n clearSearch() {\n this.searchQuery.set('');\n this.isSearching.set(false);\n }\n // Footer methods\n async onNewConversation() {\n const popupConfig = {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n closeButton: true,\n closeOnBackdropClick: false,\n };\n const popup = await this.popupService.open(AXMCommentLookupPopup, popupConfig);\n const members = popup.data?.lookup;\n try {\n if (members) {\n const res = await this.chatService.createRoom(members, popup.data?.title);\n await this.refreshChat();\n this.router.navigate([res.id], { relativeTo: this.activatedRoute });\n }\n }\n catch (error) {\n this.toastService.danger('Failed to create room');\n }\n }\n ngOnDestroy() {\n this.messageSentSubscription?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMChatComponent, isStandalone: true, selector: \"axm-chat\", providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMChatComponent,\n },\n AXUnsubscriber,\n ], viewQueries: [{ propertyName: \"tab\", first: true, predicate: [\"tab\"], descendants: true, isSignal: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout #container>\\n <axp-layout-start-side [axResizable]=\\\"true\\\" class=\\\"ax-border-e ax-lightest-surface ax-h-full\\\">\\n <axp-layout-header>\\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </axp-layout-toolbar>\\n </axp-layout-header>\\n <axp-layout-content class=\\\"ax-flex ax-flex-col ax-min-h-0\\\">\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n </axp-layout-content>\\n </axp-layout-start-side>\\n\\n <axp-page-content style=\\\"height: calc(100vh - 22rem)\\\">\\n @if (selectedRoom()) {\\n <router-outlet></router-outlet>\\n } @else if (layoutService.isMobileDevice()) {\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<ng-template #template>\\n <!-- Tabs -->\\n <div class=\\\"ax-px-4\\\">\\n @if (hasUnread()) {\\n <ax-tabs\\n #tab\\n class=\\\"ax-text-neutral-400\\\"\\n [look]=\\\"'with-line'\\\"\\n [location]=\\\"'bottom'\\\"\\n [fitParent]=\\\"true\\\"\\n (onActiveTabChanged)=\\\"onTabChange($event)\\\"\\n >\\n <ax-tab-item text=\\\"All\\\" [active]=\\\"activeTab() === 0\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"totalCount().toString()\\\"\\n [color]=\\\"activeTab() === 0 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n <ax-tab-item text=\\\"Unread\\\" [active]=\\\"activeTab() === 1\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"unreadCount().toString()\\\"\\n [color]=\\\"activeTab() === 1 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n </ax-tabs>\\n }\\n </div>\\n\\n <!-- Chat List Content -->\\n <div class=\\\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between\\\" [class.ax-border-t]=\\\"hasUnread()\\\">\\n <!-- Loading State -->\\n @if (isLoading()) {\\n <div class=\\\"ax-p-4 ax-space-y-4\\\">\\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\\n <div class=\\\"ax-flex ax-items-center ax-space-x-3\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-12 ax-h-12 ax-rounded-full\\\"></ax-skeleton>\\n <div class=\\\"ax-flex-1 ax-space-y-2\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-3/4 ax-h-4 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-1/2 ax-h-3 ax-rounded-md\\\"></ax-skeleton>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Error State -->\\n @if (error()) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\\\">\\n <ax-icon class=\\\"ax-text-danger ax-text-5xl ax-mb-3\\\">\\n <i class=\\\"fa-light fa-circle-exclamation\\\"></i>\\n </ax-icon>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-text-secondary ax-mb-4\\\">{{ error() }}</p>\\n <ax-button\\n [text]=\\\"'try-again' | translate: { scope: 'conversation' } | async\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"refreshChat()\\\"\\n ></ax-button>\\n </div>\\n }\\n\\n <!-- Chat List -->\\n @if (!isLoading() && !error()) {\\n <div class=\\\"ax-flex-1 ax-overflow-y-auto\\\">\\n @for (i of filteredRooms(); track i.id) {\\n <axm-chat-item\\n [data]=\\\"i\\\"\\n [attr.data-id]=\\\"i.id\\\"\\n (click)=\\\"markChatAsRead(i.id)\\\"\\n [class.ax-bg-dark]=\\\"selectedRoom()?.id === i.id\\\"\\n class=\\\"ax-transition-all ax-duration-100 hover:ax-bg-surface\\\"\\n ></axm-chat-item>\\n }\\n\\n <!-- Empty State -->\\n @empty {\\n <div class=\\\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\\\">\\n @if (isSearching()) {\\n No chats found matching your search\\n } @else {\\n No chats available\\n }\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Footer Content -->\\n <div class=\\\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\\\">\\n <ax-button class=\\\"ax-w-full\\\" color=\\\"primary\\\" text=\\\"New Conversation\\\" (onClick)=\\\"onNewConversation()\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-plus\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: AXMChatItemComponent, selector: \"axm-chat-item\", inputs: [\"data\"], outputs: [\"pressChatItem\"] }, { kind: \"ngmodule\", type: \n // Common Modules\n CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i2.RouterOutlet, selector: \"router-outlet\", inputs: [\"name\", \"routerOutletData\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }, { kind: \"ngmodule\", type: \n // Acorex Core Modules\n AXFormatModule }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"ngmodule\", type: AXCommentModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }, { kind: \"directive\", type: \n // Acorex Component Modules\n AXResizableDirective, selector: \"[axResizable]\", inputs: [\"axResizable\", \"minWidth\", \"maxWidth\", \"dblClickAction\", \"width\", \"defaultWidth\"], outputs: [\"axResizableChange\", \"minWidthChange\", \"maxWidthChange\", \"dblClickActionChange\", \"widthChange\", \"defaultWidthChange\", \"onResizingStarted\", \"onResizingEnded\", \"onResizingDblClick\"] }, { kind: \"ngmodule\", type: AXImageModule }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i4.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i6.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"component\", type: i7.AXTabsComponent, selector: \"ax-tabs\", inputs: [\"look\", \"location\", \"fitParent\", \"minWidth\", \"content\"], outputs: [\"onActiveTabChanged\"] }, { kind: \"component\", type: i7.AXTabItemComponent, selector: \"ax-tab-item\", inputs: [\"disabled\", \"text\", \"key\", \"headerTemplate\", \"active\"], outputs: [\"disabledChange\", \"onClick\", \"onBlur\", \"onFocus\", \"activeChange\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i8.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXWysiwygModule }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"ngmodule\", type: AXSelectBoxModule }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXToolBarModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i9.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPThemeLayoutStartSideComponent, selector: \"axp-layout-page-start-side, axp-layout-start-side\" }, { kind: \"component\", type: AXPThemeLayoutHeaderComponent, selector: \"axp-layout-header\" }, { kind: \"component\", type: AXPThemeLayoutToolbarComponent, selector: \"axp-layout-toolbar\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat', changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMChatComponent,\n },\n AXUnsubscriber,\n ], imports: [\n AXMChatItemComponent,\n // Common Modules\n CommonModule,\n FormsModule,\n RouterModule,\n // Acorex Core Modules\n AXFormatModule,\n AXConversationModule,\n AXCommentModule,\n AXTranslationModule,\n // Acorex Component Modules\n AXResizableDirective,\n AXImageModule,\n AXAvatarModule,\n AXBadgeModule,\n AXDecoratorModule,\n AXTextBoxModule,\n AXSearchBoxModule,\n AXTabsModule,\n AXButtonModule,\n AXLoadingModule,\n AXWysiwygModule,\n AXLabelModule,\n AXSelectBoxModule,\n AXFormModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXToolBarModule,\n AXSkeletonModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutToolbarComponent,\n ], template: \"<axp-page-layout #container>\\n <axp-layout-start-side [axResizable]=\\\"true\\\" class=\\\"ax-border-e ax-lightest-surface ax-h-full\\\">\\n <axp-layout-header>\\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\\n <axp-layout-toolbar>\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </axp-layout-toolbar>\\n </axp-layout-header>\\n <axp-layout-content class=\\\"ax-flex ax-flex-col ax-min-h-0\\\">\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n </axp-layout-content>\\n </axp-layout-start-side>\\n\\n <axp-page-content style=\\\"height: calc(100vh - 22rem)\\\">\\n @if (selectedRoom()) {\\n <router-outlet></router-outlet>\\n } @else if (layoutService.isMobileDevice()) {\\n <ax-search-box\\n #searchInput\\n look=\\\"solid\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [value]=\\\"searchQuery()\\\"\\n (onValueChanged)=\\\"onSearch($event.value)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-container [ngTemplateOutlet]=\\\"template\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<ng-template #template>\\n <!-- Tabs -->\\n <div class=\\\"ax-px-4\\\">\\n @if (hasUnread()) {\\n <ax-tabs\\n #tab\\n class=\\\"ax-text-neutral-400\\\"\\n [look]=\\\"'with-line'\\\"\\n [location]=\\\"'bottom'\\\"\\n [fitParent]=\\\"true\\\"\\n (onActiveTabChanged)=\\\"onTabChange($event)\\\"\\n >\\n <ax-tab-item text=\\\"All\\\" [active]=\\\"activeTab() === 0\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"totalCount().toString()\\\"\\n [color]=\\\"activeTab() === 0 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n <ax-tab-item text=\\\"Unread\\\" [active]=\\\"activeTab() === 1\\\">\\n <ax-suffix>\\n <ax-badge\\n [text]=\\\"unreadCount().toString()\\\"\\n [color]=\\\"activeTab() === 1 ? 'primary' : 'secondary'\\\"\\n class=\\\"ax-min-w-[1.5rem] ax-justify-center\\\"\\n ></ax-badge>\\n </ax-suffix>\\n </ax-tab-item>\\n </ax-tabs>\\n }\\n </div>\\n\\n <!-- Chat List Content -->\\n <div class=\\\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between\\\" [class.ax-border-t]=\\\"hasUnread()\\\">\\n <!-- Loading State -->\\n @if (isLoading()) {\\n <div class=\\\"ax-p-4 ax-space-y-4\\\">\\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\\n <div class=\\\"ax-flex ax-items-center ax-space-x-3\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-12 ax-h-12 ax-rounded-full\\\"></ax-skeleton>\\n <div class=\\\"ax-flex-1 ax-space-y-2\\\">\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-3/4 ax-h-4 ax-rounded-md\\\"></ax-skeleton>\\n <ax-skeleton [animated]=\\\"true\\\" class=\\\"ax-w-1/2 ax-h-3 ax-rounded-md\\\"></ax-skeleton>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Error State -->\\n @if (error()) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\\\">\\n <ax-icon class=\\\"ax-text-danger ax-text-5xl ax-mb-3\\\">\\n <i class=\\\"fa-light fa-circle-exclamation\\\"></i>\\n </ax-icon>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-font-semibold ax-text-lg\\\">\\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\\n </p>\\n <p class=\\\"ax-text-secondary ax-mb-4\\\">{{ error() }}</p>\\n <ax-button\\n [text]=\\\"'try-again' | translate: { scope: 'conversation' } | async\\\"\\n color=\\\"primary\\\"\\n (onClick)=\\\"refreshChat()\\\"\\n ></ax-button>\\n </div>\\n }\\n\\n <!-- Chat List -->\\n @if (!isLoading() && !error()) {\\n <div class=\\\"ax-flex-1 ax-overflow-y-auto\\\">\\n @for (i of filteredRooms(); track i.id) {\\n <axm-chat-item\\n [data]=\\\"i\\\"\\n [attr.data-id]=\\\"i.id\\\"\\n (click)=\\\"markChatAsRead(i.id)\\\"\\n [class.ax-bg-dark]=\\\"selectedRoom()?.id === i.id\\\"\\n class=\\\"ax-transition-all ax-duration-100 hover:ax-bg-surface\\\"\\n ></axm-chat-item>\\n }\\n\\n <!-- Empty State -->\\n @empty {\\n <div class=\\\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\\\">\\n @if (isSearching()) {\\n No chats found matching your search\\n } @else {\\n No chats available\\n }\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Footer Content -->\\n <div class=\\\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\\\">\\n <ax-button class=\\\"ax-w-full\\\" color=\\\"primary\\\" text=\\\"New Conversation\\\" (onClick)=\\\"onNewConversation()\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-plus\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n</ng-template>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jaGF0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NoYXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQWlCLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8s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Qiw4QkFDaEIsZUFBZSw4QkFDZixnQkFBZ0IsbUlBQ2hCLHNCQUFzQiw0REFDdEIsNEJBQTRCLGdpQkFDNUIsZ0NBQWdDLDhGQUNoQyw2QkFBNkIsOERBQzdCLDhCQUE4Qjs7MkZBR3JCLGdCQUFnQjtrQkFqRDVCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsa0JBQWtCO3lCQUM5Qjt3QkFDRCxjQUFjO3FCQUNmLFdBQ1E7d0JBQ1Asb0JBQW9CO3dCQUNwQixpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxZQUFZO3dCQUNaLHNCQUFzQjt3QkFDdEIsY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQiwyQkFBMkI7d0JBQzNCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1QixnQ0FBZ0M7d0JBQ2hDLDZCQUE2Qjt3QkFDN0IsOEJBQThCO3FCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUmVzaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9jZGsvcmVzaXphYmxlJztcbmltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWENvbW1lbnRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbWVudCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb252ZXJzYXRpb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvaW1hZ2UnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcHVwQ29uZmlnLCBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFNlYXJjaEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWFyY2gtYm94JztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFRhYnNDb21wb25lbnQsIEFYVGFic01vZHVsZSwgQVhUYWJTdHJpcENoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWFRvb2xCYXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBBWFd5c2l3eWdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvd3lzaXd5Zyc7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBWE1Vc2Vyc0VudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvc2VjdXJpdHktbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBBWFBCYWNrQnV0dG9uIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7XG4gIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0SGVhZGVyQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dFN0YXJ0U2lkZUNvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRUb29sYmFyQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFYUFBhZ2VMYXlvdXRCYXNlLCBBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudCwgQVhQUGFnZUxheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3ZpZXdzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTUNvbW1lbnRMb29rdXBQb3B1cCB9IGZyb20gJy4uL2NvbW1lbnQnO1xuaW1wb3J0IHsgQVhNQ2hhdFNlcnZpY2UgfSBmcm9tICcuL2NoYXQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1DaGF0Um9vbSB9IGZyb20gJy4vY2hhdC50eXBlJztcbmltcG9ydCB7IEFYTUNoYXRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoYXQtaXRlbS9jaGF0LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLWNoYXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUFBhZ2VMYXlvdXRCYXNlLFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYTUNoYXRDb21wb25lbnQsXG4gICAgfSxcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIEFYTUNoYXRJdGVtQ29tcG9uZW50LFxuICAgIC8vIENvbW1vbiBNb2R1bGVzXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICAvLyBBY29yZXggQ29yZSBNb2R1bGVzXG4gICAgQVhGb3JtYXRNb2R1bGUsXG4gICAgQVhDb252ZXJzYXRpb25Nb2R1bGUsXG4gICAgQVhDb21tZW50TW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgLy8gQWNvcmV4IENvbXBvbmVudCBNb2R1bGVzXG4gICAgQVhSZXNpemFibGVEaXJlY3RpdmUsXG4gICAgQVhJbWFnZU1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEJhZGdlTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVGV4dEJveE1vZHVsZSxcbiAgICBBWFNlYXJjaEJveE1vZHVsZSxcbiAgICBBWFRhYnNNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYV3lzaXd5Z01vZHVsZSxcbiAgICBBWExhYmVsTW9kdWxlLFxuICAgIEFYU2VsZWN0Qm94TW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICAgIEFYRHJvcGRvd25Nb2R1bGUsXG4gICAgQVhUb29sQmFyTW9kdWxlLFxuICAgIEFYU2tlbGV0b25Nb2R1bGUsXG4gICAgQVhQUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0U3RhcnRTaWRlQ29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0SGVhZGVyQ29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0VG9vbGJhckNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ2hhdENvbXBvbmVudCBleHRlbmRzIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBjaGF0U2VydmljZSA9IGluamVjdChBWE1DaGF0U2VydmljZSk7XG4gIHByaXZhdGUgdXNlclNlcnZpY2UgPSBpbmplY3QoQVhNVXNlcnNFbnRpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHVuc3Vic2NyaWJlID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSBtZXNzYWdlU2VudFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAvLyBWaWV3IENoaWxkcmVuXG4gIHRhYiA9IHZpZXdDaGlsZDxBWFRhYnNDb21wb25lbnQ+KCd0YWInKTtcbiAgY29udGFpbmVyID0gdmlld0NoaWxkPEFYUFBhZ2VMYXlvdXRDb21wb25lbnQ+KCdjb250YWluZXInKTtcblxuICAvLyBTdGF0ZSBzaWduYWxzXG4gIHJvb21zID0gc2lnbmFsPEFYTUNoYXRSb29tW10+KFtdKTtcbiAgYWxsUm9vbXMgPSBzaWduYWw8QVhNQ2hhdFJvb21bXT4oW10pO1xuICBzZWxlY3RlZFJvb20gPSBzaWduYWw8QVhNQ2hhdFJvb20gfCBudWxsPihudWxsKTtcbiAgaXNMb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBlcnJvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgYWN0aXZlVGFiID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIGlzU2VhcmNoaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgc2VhcmNoUXVlcnkgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHNob3dTZWFyY2ggPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHBsYWNlaG9sZGVyID0gc2lnbmFsPHN0cmluZz4oJ1NlYXJjaCBjaGF0cy4uLicpO1xuXG4gIC8vIENvbXB1dGVkIHNpZ25hbHNcbiAgLy8gZmlsdGVyZWRSb29tcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgLy8gICBsZXQgY2hhdFJvb21zID0gdGhpcy5yb29tcygpO1xuXG4gIC8vICAgLy8gQXBwbHkgc2VhcmNoIGZpbHRlclxuICAvLyAgIGlmICh0aGlzLnNlYXJjaFF1ZXJ5KCkpIHtcbiAgLy8gICAgIGNvbnN0IHNlYXJjaFRleHQgPSB0aGlzLnNlYXJjaFF1ZXJ5KCkudG9Mb3dlckNhc2UoKTtcbiAgLy8gICAgIGNoYXRSb29tcyA9IGNoYXRSb29tcy5maWx0ZXIoYXN5bmMgKHJvb20pID0+IHtcbiAgLy8gICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMudXNlclNlcnZpY2UuZ2V0T25lKHJvb20ubWVtYmVycz8uWzBdPy5pZCk7XG4gIC8vICAgICAgIGNvbnN0IHJvb21OYW1lID0gYCR7dXNlci5maXJzdE5hbWV9ICR7dXNlci5sYXN0TmFtZX1gIHx8ICcnO1xuICAvLyAgICAgICBjb25zdCBsYXN0TWVzc2FnZSA9IHJvb20ubGFzdE1lc3NhZ2U/Lm1lc3NhZ2U/LmNvbnRlbnQgfHwgJyc7XG4gIC8vICAgICAgIHJldHVybiByb29tTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQpIHx8IGxhc3RNZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dCk7XG4gIC8vICAgICB9KTtcbiAgLy8gICB9XG5cbiAgLy8gICAvLyBBcHBseSB0YWIgZmlsdGVyXG4gIC8vICAgaWYgKHRoaXMuYWN0aXZlVGFiKCkgPT09IDEpIHtcbiAgLy8gICAgIHJldHVybiBjaGF0Um9vbXMuZmlsdGVyKChyb29tKSA9PiByb29tLnVucmVhZENvdW50ID4gMCk7XG4gIC8vICAgfVxuXG4gIC8vICAgcmV0dXJuIGNoYXRSb29tcztcbiAgLy8gfSk7XG5cbiAgZmlsdGVyZWRSb29tcyA9IHNpZ25hbDxBWE1DaGF0Um9vbVtdPihbXSk7XG5cbiAgc2VhcmNoRWZmZWN0ID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBsZXQgY2hhdFJvb21zID0gdGhpcy5hbGxSb29tcygpO1xuXG4gICAgLy8gU2VhcmNoIGZpbHRlclxuICAgIGNvbnN0IHF1ZXJ5ID0gKHRoaXMuc2VhcmNoUXVlcnkoKSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIC8vIFBlcmZvcm0gYXN5bmMgZW5yaWNobWVudCBmb3IgbmFtZXNcbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gW107XG4gICAgICBmb3IgKGNvbnN0IHJvb20gb2YgY2hhdFJvb21zKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IHJvb21OYW1lID0gJyc7XG4gICAgICAgICAgLy8gSGFuZGxlIGdyb3VwIGNoYXRzIHZzLiBzaW5nbGUtdXNlciBjaGF0c1xuICAgICAgICAgIGlmIChyb29tLm1lbWJlcnMgJiYgcm9vbS5tZW1iZXJzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHJvb21OYW1lID0gcm9vbS50aXRsZSB8fCAnJztcbiAgICAgICAgICB9IGVsc2UgaWYgKHJvb20ubWVtYmVycyAmJiByb29tLm1lbWJlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBtZW1iZXJJZCA9IHJvb20ubWVtYmVyc1swXS5pZDtcbiAgICAgICAgICAgIGlmIChtZW1iZXJJZCkge1xuICAgICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5nZXRPbmUobWVtYmVySWQpO1xuICAgICAgICAgICAgICByb29tTmFtZSA9IGAke3VzZXIuZmlyc3ROYW1lfSAke3VzZXIubGFzdE5hbWV9YCB8fCAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBsYXN0TWVzc2FnZSA9IHJvb20ubGFzdE1lc3NhZ2U/Lm1lc3NhZ2U/LmNvbnRlbnQgfHwgJyc7XG4gICAgICAgICAgaWYgKHJvb21OYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpIHx8IGxhc3RNZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHJvb20pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcHJvY2VzcyBzZWFyY2ggZm9yIHJvb20gJHtyb29tLmlkfWAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2hhdFJvb21zID0gZmlsdGVyZWQ7XG4gICAgfVxuXG4gICAgLy8gVGFiIGZpbHRlclxuICAgIGlmICh0aGlzLmFjdGl2ZVRhYigpID09PSAxKSB7XG4gICAgICBjaGF0Um9vbXMgPSBjaGF0Um9vbXMuZmlsdGVyKChyb29tKSA9PiByb29tLnVucmVhZENvdW50ID4gMCk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZFJvb21zLnNldChjaGF0Um9vbXMpO1xuICB9KTtcblxuICB1bnJlYWRDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWxsUm9vbXMoKS5maWx0ZXIoKGkpID0+IGkudW5yZWFkQ291bnQgPiAwKS5sZW5ndGgpO1xuICBhbGxDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWxsUm9vbXMoKS5sZW5ndGgpO1xuICBoYXNVbnJlYWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFsbFJvb21zKCkuZmlsdGVyKChpKSA9PiBpLnVucmVhZENvdW50ID4gMCkubGVuZ3RoID4gMCk7XG4gIHRvdGFsQ291bnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFsbFJvb21zKCkubGVuZ3RoIHx8IDApO1xuXG4gIGFmID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICBjb25zdCB0YWJDb21wb25lbnQgPSB0aGlzLnRhYigpO1xuICAgIGlmICh0YWJDb21wb25lbnQpIHtcbiAgICAgIHRhYkNvbXBvbmVudC5vbkFjdGl2ZVRhYkNoYW5nZWQuc3Vic2NyaWJlKChpKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlVGFiLnNldChpLmluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyh3aW5kb3cgYXMgYW55KS5hID0gdGhpcy5jb250YWluZXIoKT8uc3RhcnRTaWRlRHJhd2VyKCk7XG4gIH0pO1xuXG4gIG9uVGFiQ2hhbmdlKGV2ZW50OiBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5hY3RpdmVUYWIuc2V0KGV2ZW50LmluZGV4KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZXJyb3Iuc2V0KG51bGwpO1xuICAgIGF3YWl0IHRoaXMubG9hZENoYXRzKCk7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAvL1xuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUudGFrZVVudGlsRGVzdHJveSxcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZEZyb21Sb3V0ZSgpO1xuICAgICAgfSk7XG4gICAgLy9cbiAgICB0aGlzLm1lc3NhZ2VTZW50U3Vic2NyaXB0aW9uID0gdGhpcy5jaGF0U2VydmljZS5tZXNzYWdlU2VudCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVmcmVzaENoYXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEZyb21Sb3V0ZSgpIHtcbiAgICBjb25zdCBjaGF0SWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmZpcnN0Q2hpbGQ/LnBhcmFtTWFwLmdldCgnaWQnKTtcbiAgICBpZiAoY2hhdElkKSB7XG4gICAgICB0aGlzLm1hcmtDaGF0QXNSZWFkKGNoYXRJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb29tLnNldChudWxsKTtcbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIEludGVyZmFjZSBJbXBsZW1lbnRhdGlvblxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlVGl0bGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByb29tID0gdGhpcy5zZWxlY3RlZFJvb20oKTtcbiAgICBpZiAoIXJvb20pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB7IG1lbWJlcnMsIHRpdGxlLCBpZCB9ID0gcm9vbTtcblxuICAgIGlmIChtZW1iZXJzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB0aXRsZSB8fCAnR3JvdXAgQ2hhdCc7XG4gICAgfVxuXG4gICAgY29uc3QgbWVtYmVyID0gbWVtYmVyc1swXTtcbiAgICBpZiAoIW1lbWJlcikge1xuICAgICAgcmV0dXJuICdVbmtub3duIFVzZXInO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmdldE9uZShtZW1iZXIuaWQpO1xuICAgIHJldHVybiBgJHt1c2VyLmZpcnN0TmFtZX0gJHt1c2VyLmxhc3ROYW1lfWAgfHwgJ1Vua25vd24gVXNlcic7XG4gIH1cblxuICBvdmVycmlkZSBnZXRQYWdlRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICBjb25zdCByb29tID0gdGhpcy5zZWxlY3RlZFJvb20oKTtcbiAgICByZXR1cm4gcm9vbT8udG9waWMgfHwgJyc7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRCYWNrQnV0dG9uKCk6IFByb21pc2U8QVhQQmFja0J1dHRvbiB8IG51bGw+IHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvb20oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnYmFjay10by1jaGF0LWxpc3QnLCB7IHNjb3BlOiAnY29udmVyc2F0aW9uJyB9KSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHJldHVybiBudWxsO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25CYWNrQnV0dG9uQ2xpY2soKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2VsZWN0ZWRSb29tLnNldChudWxsKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSB9KTtcbiAgfVxuXG4gIC8vIE1ldGhvZHNcbiAgYXN5bmMgbG9hZENoYXRzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgdGhlIHVwZGF0ZWQgc2VydmljZSBtZXRob2QgdG8gZ2V0IHJvb21zIHdpdGggbGFzdCBtZXNzYWdlc1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYXRTZXJ2aWNlLmxpc3RSb29tcygpO1xuICAgICAgLy8gU29ydCByb29tcyBieSBsYXN0IG1lc3NhZ2UgY3JlYXRlZEF0IHRpbWVzdGFtcCBpbiBkZXNjZW5kaW5nIG9yZGVyXG4gICAgICBjb25zdCBzb3J0ZWRSb29tcyA9IHJlc3BvbnNlLml0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgZGF0ZUEgPSBhLmxhc3RNZXNzYWdlPy5jcmVhdGVkQXQgfHwgYS5jcmVhdGVkQXQgfHwgMDtcbiAgICAgICAgY29uc3QgZGF0ZUIgPSBiLmxhc3RNZXNzYWdlPy5jcmVhdGVkQXQgfHwgYi5jcmVhdGVkQXQgfHwgMDtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGVCKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShkYXRlQSkuZ2V0VGltZSgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFsbFJvb21zLnNldChzb3J0ZWRSb29tcyk7XG4gICAgICB0aGlzLnJvb21zLnNldChzb3J0ZWRSb29tcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KCdGYWlsZWQgdG8gbG9hZCBjaGF0cy4gUGxlYXNlIHRyeSBhZ2Fpbi4nKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY2hhdHM6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hDaGF0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubG9hZENoYXRzKCk7XG4gIH1cblxuICBhc3luYyBtYXJrQ2hhdEFzUmVhZChjaGF0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgdGhlIHNlcnZpY2UgbWV0aG9kIHRvIG1hcmsgY2hhdCBhcyByZWFkXG4gICAgICBhd2FpdCB0aGlzLmNoYXRTZXJ2aWNlLm1hcmtSb29tU2VlbihjaGF0SWQpO1xuXG4gICAgICAvLyBVcGRhdGUgbG9jYWwgc3RhdGUgd2l0aG91dCBtYWtpbmcgYW5vdGhlciBuZXR3b3JrIHJlcXVlc3RcbiAgICAgIGNvbnN0IGN1cnJlbnRSb29tcyA9IHRoaXMuYWxsUm9vbXMoKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRSb29tcyA9IGN1cnJlbnRSb29tcy5tYXAoKHJvb20pID0+IHtcbiAgICAgICAgaWYgKHJvb20uaWQgPT09IGNoYXRJZCkge1xuICAgICAgICAgIC8vIFJlc2V0IHVucmVhZCBjb3VudCBmb3IgdGhlIHNlbGVjdGVkIHJvb21cbiAgICAgICAgICByZXR1cm4geyAuLi5yb29tLCB1bnJlYWRDb3VudDogMCB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb29tO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgcm9vbXMgc2lnbmFsc1xuICAgICAgdGhpcy5hbGxSb29tcy5zZXQodXBkYXRlZFJvb21zKTtcbiAgICAgIHRoaXMucm9vbXMuc2V0KHVwZGF0ZWRSb29tcyk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIHNlbGVjdGVkIHJvb21cbiAgICAgIGNvbnN0IHNlbGVjdGVkUm9vbSA9IHVwZGF0ZWRSb29tcy5maW5kKChyb29tKSA9PiByb29tLmlkID09PSBjaGF0SWQpIHx8IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkUm9vbS5zZXQoc2VsZWN0ZWRSb29tKTtcblxuICAgICAgLy8gTmF2aWdhdGUgdG8gdGhlIGNoYXQgZGV0YWlsc1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2NoYXRJZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIG1hcmsgY2hhdCBhcyByZWFkOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2hDaGF0KHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFF1ZXJ5LnNldChxdWVyeSk7XG4gICAgdGhpcy5pc1NlYXJjaGluZy5zZXQoISFxdWVyeSk7XG4gIH1cblxuICAvLyBIZWFkZXIgbWV0aG9kc1xuICBvblNlYXJjaChxdWVyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hDaGF0KHF1ZXJ5KTtcbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KCcnKTtcbiAgICB0aGlzLmlzU2VhcmNoaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICAvLyBGb290ZXIgbWV0aG9kc1xuICBhc3luYyBvbk5ld0NvbnZlcnNhdGlvbigpIHtcbiAgICBjb25zdCBwb3B1cENvbmZpZzogQVhQb3B1cENvbmZpZyA9IHtcbiAgICAgIGhlYWRlcjogdHJ1ZSxcbiAgICAgIHNpemU6ICdzbScsXG4gICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IGZhbHNlLFxuICAgIH07XG4gICAgY29uc3QgcG9wdXAgPSBhd2FpdCB0aGlzLnBvcHVwU2VydmljZS5vcGVuKEFYTUNvbW1lbnRMb29rdXBQb3B1cCwgcG9wdXBDb25maWcpO1xuICAgIGNvbnN0IG1lbWJlcnMgPSBwb3B1cC5kYXRhPy5sb29rdXAgYXMgc3RyaW5nW107XG4gICAgdHJ5IHtcbiAgICAgIGlmIChtZW1iZXJzKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY2hhdFNlcnZpY2UuY3JlYXRlUm9vbShtZW1iZXJzLCBwb3B1cC5kYXRhPy50aXRsZSk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaENoYXQoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3Jlcy5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKCdGYWlsZWQgdG8gY3JlYXRlIHJvb20nKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VTZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8YXhwLXBhZ2UtbGF5b3V0ICNjb250YWluZXI+XG4gIDxheHAtbGF5b3V0LXN0YXJ0LXNpZGUgW2F4UmVzaXphYmxlXT1cInRydWVcIiBjbGFzcz1cImF4LWJvcmRlci1lIGF4LWxpZ2h0ZXN0LXN1cmZhY2UgYXgtaC1mdWxsXCI+XG4gICAgPGF4cC1sYXlvdXQtaGVhZGVyPlxuICAgICAgPGF4cC1sYXlvdXQtdGl0bGU+e3sgJ21vZHVsZS1uYW1lJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2NvbnZlcnNhdGlvbicgfSB8IGFzeW5jIH19PC9heHAtbGF5b3V0LXRpdGxlPlxuICAgICAgPGF4cC1sYXlvdXQtdG9vbGJhcj5cbiAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoUXVlcnkoKVwiXG4gICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uU2VhcmNoKCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgIGNsYXNzPVwiYXgtdy1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b24+XG4gICAgICAgIDwvYXgtc2VhcmNoLWJveD5cbiAgICAgIDwvYXhwLWxheW91dC10b29sYmFyPlxuICAgIDwvYXhwLWxheW91dC1oZWFkZXI+XG4gICAgPGF4cC1sYXlvdXQtY29udGVudCBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWluLWgtMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvYXhwLWxheW91dC1jb250ZW50PlxuICA8L2F4cC1sYXlvdXQtc3RhcnQtc2lkZT5cblxuICA8YXhwLXBhZ2UtY29udGVudCBzdHlsZT1cImhlaWdodDogY2FsYygxMDB2aCAtIDIycmVtKVwiPlxuICAgIEBpZiAoc2VsZWN0ZWRSb29tKCkpIHtcbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICB9IEBlbHNlIGlmIChsYXlvdXRTZXJ2aWNlLmlzTW9iaWxlRGV2aWNlKCkpIHtcbiAgICAgIDxheC1zZWFyY2gtYm94XG4gICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICAgIFt2YWx1ZV09XCJzZWFyY2hRdWVyeSgpXCJcbiAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uU2VhcmNoKCRldmVudC52YWx1ZSlcIlxuICAgICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICA+XG4gICAgICAgIDxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b24+XG4gICAgICA8L2F4LXNlYXJjaC1ib3g+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICA8L2F4cC1wYWdlLWNvbnRlbnQ+XG48L2F4cC1wYWdlLWxheW91dD5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPCEtLSBUYWJzIC0tPlxuICA8ZGl2IGNsYXNzPVwiYXgtcHgtNFwiPlxuICAgIEBpZiAoaGFzVW5yZWFkKCkpIHtcbiAgICAgIDxheC10YWJzXG4gICAgICAgICN0YWJcbiAgICAgICAgY2xhc3M9XCJheC10ZXh0LW5ldXRyYWwtNDAwXCJcbiAgICAgICAgW2xvb2tdPVwiJ3dpdGgtbGluZSdcIlxuICAgICAgICBbbG9jYXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICBbZml0UGFyZW50XT1cInRydWVcIlxuICAgICAgICAob25BY3RpdmVUYWJDaGFuZ2VkKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8YXgtdGFiLWl0ZW0gdGV4dD1cIkFsbFwiIFthY3RpdmVdPVwiYWN0aXZlVGFiKCkgPT09IDBcIj5cbiAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgPGF4LWJhZGdlXG4gICAgICAgICAgICAgIFt0ZXh0XT1cInRvdGFsQ291bnQoKS50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cImFjdGl2ZVRhYigpID09PSAwID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LW1pbi13LVsxLjVyZW1dIGF4LWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgID48L2F4LWJhZGdlPlxuICAgICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgICA8L2F4LXRhYi1pdGVtPlxuICAgICAgICA8YXgtdGFiLWl0ZW0gdGV4dD1cIlVucmVhZFwiIFthY3RpdmVdPVwiYWN0aXZlVGFiKCkgPT09IDFcIj5cbiAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgPGF4LWJhZGdlXG4gICAgICAgICAgICAgIFt0ZXh0XT1cInVucmVhZENvdW50KCkudG9TdHJpbmcoKVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJhY3RpdmVUYWIoKSA9PT0gMSA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1taW4tdy1bMS41cmVtXSBheC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICA+PC9heC1iYWRnZT5cbiAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgPC9heC10YWItaXRlbT5cbiAgICAgIDwvYXgtdGFicz5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ2hhdCBMaXN0IENvbnRlbnQgLS0+XG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3ctaGlkZGVuIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtanVzdGlmeS1iZXR3ZWVuXCIgW2NsYXNzLmF4LWJvcmRlci10XT1cImhhc1VucmVhZCgpXCI+XG4gICAgPCEtLSBMb2FkaW5nIFN0YXRlIC0tPlxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTQgYXgtc3BhY2UteS00XCI+XG4gICAgICAgIEBmb3IgKF8gb2YgWzEsIDIsIDMsIDQsIDUsIDZdOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtc3BhY2UteC0zXCI+XG4gICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cInRydWVcIiBjbGFzcz1cImF4LXctMTIgYXgtaC0xMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXgtMSBheC1zcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJ0cnVlXCIgY2xhc3M9XCJheC13LTMvNCBheC1oLTQgYXgtcm91bmRlZC1tZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwidHJ1ZVwiIGNsYXNzPVwiYXgtdy0xLzIgYXgtaC0zIGF4LXJvdW5kZWQtbWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gICAgQGlmIChlcnJvcigpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtaC1mdWxsIGF4LXAtNCBheC10ZXh0LWNlbnRlclwiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LXRleHQtZGFuZ2VyIGF4LXRleHQtNXhsIGF4LW1iLTNcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWNpcmNsZS1leGNsYW1hdGlvblwiPjwvaT5cbiAgICAgICAgPC9heC1pY29uPlxuICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1sZ1wiPlxuICAgICAgICAgIHt7ICdjaGF0LWVycm9yJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2NvbnZlcnNhdGlvbicgfSB8IGFzeW5jIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtbGdcIj5cbiAgICAgICAgICB7eyAnY2hhdC10cnktYWdhaW4nIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnY29udmVyc2F0aW9uJyB9IHwgYXN5bmMgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cCBjbGFzcz1cImF4LXRleHQtc2Vjb25kYXJ5IGF4LW1iLTRcIj57eyBlcnJvcigpIH19PC9wPlxuICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgW3RleHRdPVwiJ3RyeS1hZ2FpbicgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdjb252ZXJzYXRpb24nIH0gfCBhc3luY1wiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAob25DbGljayk9XCJyZWZyZXNoQ2hhdCgpXCJcbiAgICAgICAgPjwvYXgtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPCEtLSBDaGF0IExpc3QgLS0+XG4gICAgQGlmICghaXNMb2FkaW5nKCkgJiYgIWVycm9yKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgIEBmb3IgKGkgb2YgZmlsdGVyZWRSb29tcygpOyB0cmFjayBpLmlkKSB7XG4gICAgICAgICAgPGF4bS1jaGF0LWl0ZW1cbiAgICAgICAgICAgIFtkYXRhXT1cImlcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1pZF09XCJpLmlkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJtYXJrQ2hhdEFzUmVhZChpLmlkKVwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtYmctZGFya109XCJzZWxlY3RlZFJvb20oKT8uaWQgPT09IGkuaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJheC10cmFuc2l0aW9uLWFsbCBheC1kdXJhdGlvbi0xMDAgaG92ZXI6YXgtYmctc3VyZmFjZVwiXG4gICAgICAgICAgPjwvYXhtLWNoYXQtaXRlbT5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gRW1wdHkgU3RhdGUgLS0+XG4gICAgICAgIEBlbXB0eSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1mb250LW1lZGl1bSBheC10ZXh0LWNlbnRlciBheC10ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgQGlmIChpc1NlYXJjaGluZygpKSB7XG4gICAgICAgICAgICAgIE5vIGNoYXRzIGZvdW5kIG1hdGNoaW5nIHlvdXIgc2VhcmNoXG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgTm8gY2hhdHMgYXZhaWxhYmxlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRm9vdGVyIENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWJvcmRlci10IGF4LWJvcmRlci1kaXZpZGVyIGF4LWJnLWxpZ2h0ZXN0IGF4LXAtNFwiPlxuICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXctZnVsbFwiIGNvbG9yPVwicHJpbWFyeVwiIHRleHQ9XCJOZXcgQ29udmVyc2F0aW9uXCIgKG9uQ2xpY2spPVwib25OZXdDb252ZXJzYXRpb24oKVwiPlxuICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgIDxheC1pY29uPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1wbHVzXCI+PC9pPlxuICAgICAgICAgIDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19","/**\n * Converts chat service response to chat preview format\n * @param chatResponse - The response from chat service containing items and total\n * @returns Array of formatted chat preview messages\n */\nexport function convertToChatPreview(currentUserId, chatResponse) {\n if (!chatResponse || !chatResponse.items?.length) {\n return [];\n }\n // Map from AXMChatMessage to ChatPreviewMessage\n return chatResponse.items.map((message) => {\n // Determine message type based on content type\n let messageType = 'text';\n // Map contentType to preview type\n if (message.message?.contentType) {\n switch (message.message.contentType) {\n case 'text':\n messageType = 'text';\n break;\n case 'file':\n messageType = 'file';\n break;\n case 'image':\n messageType = 'image';\n break;\n case 'video':\n messageType = 'video';\n break;\n case 'link':\n // Determine if link is for audio or other content\n const content = message.message.content || '';\n if (content.includes('.mp3') || content.includes('.ogg') || content.includes('audio')) {\n messageType = 'audio';\n }\n else {\n messageType = 'text';\n }\n break;\n default:\n messageType = 'text';\n }\n }\n // Extract author name if available\n const name = message.author ? message.author.id : 'Unknown';\n // Create the chat preview message\n const previewMessage = {\n id: message.id,\n sendTime: new Date(message.createdAt || new Date()),\n readTime: new Date(), // Assuming \"read\" when converted\n type: messageType,\n content: message.message?.content || '',\n name: name,\n };\n // Add fromId if the message is not from current user\n if (currentUserId !== message.author.id) {\n previewMessage.fromId = message.author?.id;\n }\n // Note: Reply information would need to be looked up from the actual messages\n // This would typically be done by the service that has access to all messages\n return previewMessage;\n });\n}\n/**\n * Creates a ChatPreviewMessage from reply information\n * @param message - The original message that is being referenced\n * @returns A ChatPreviewMessage formatted for use as a replyTo\n */\nexport function createReplyPreview(currentUserId, message) {\n if (!message)\n return undefined;\n return {\n id: message.id,\n sendTime: new Date(message.createdAt || new Date()),\n readTime: new Date(),\n type: message.message?.contentType === 'image'\n ? 'image'\n : message.message?.contentType === 'video'\n ? 'video'\n : message.message?.contentType === 'file'\n ? 'file'\n : 'text',\n content: message.message?.content || '',\n name: message.author?.id || 'Unknown',\n fromId: currentUserId !== message.author.id ? message.author?.id : undefined,\n };\n}\n/**\n * Generate demo chat preview data with a variety of message types\n * @returns Array of sample chat preview messages\n */\nexport function generateDemoChatPreview() {\n return [\n {\n id: '0',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n {\n id: '1',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Hello',\n name: 'test name',\n replyTo: {\n id: '0',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n },\n {\n id: '2',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'voice',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfoEF34fJ`,\n },\n {\n id: '3',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Can i have your address information?',\n name: 'test name',\n replyTo: {\n id: '1',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'text',\n content: 'Hello',\n name: 'test name',\n },\n },\n {\n id: '4',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'file',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfoEF34fJ`,\n },\n {\n id: '5',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/300/200`,\n },\n {\n id: '6',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'video',\n name: 'test name',\n content: `https://www.pexels.com/download/video/5495322/?fps=29.97&h=540&w=960`,\n },\n {\n id: '7',\n sendTime: new Date(),\n type: 'text',\n readTime: new Date(),\n content: 'Hello John, How are you?',\n name: 'test name',\n },\n {\n id: '8',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'audio',\n name: 'kids',\n content: `https://actions.google.com/sounds/v1/ambiences/kids_playing.ogg`,\n },\n {\n id: '9',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/300/200`,\n },\n {\n id: '10',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'image',\n name: 'test name',\n content: `https://picsum.photos/200/300`,\n },\n {\n id: '11',\n fromId: '10',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'video',\n name: 'test name',\n content: `https://www.pexels.com/download/video/5495322/?fps=29.97&h=540&w=960`,\n },\n {\n id: '12',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'file',\n name: 'test name',\n content: `data:audio/webm;codecs=opus;base64,GkXfo59ChoE+u5BxHVL7ZAS1EF34fJ`,\n },\n {\n id: '13',\n sendTime: new Date(),\n readTime: new Date(),\n type: 'audio',\n name: 'alarm',\n content: `https://actions.google.com/sounds/v1/alarms/digital_watch_alarm_long.ogg`,\n },\n ];\n}\n/**\n * Usage Examples:\n *\n * Example 1: Converting chat service response to chat preview format\n * ```typescript\n * import { AXMChatService } from '../chat.service';\n * import { convertToChatPreview } from './chat-preview.helper';\n *\n * export class ChatPreviewComponent {\n * constructor(private chatService: AXMChatService) {}\n *\n * async loadChatMessages(roomId: string) {\n * const response = await this.chatService.getChatMessages(roomId);\n *\n * // Convert to chat preview format\n * const previewMessages = convertToChatPreview(response);\n *\n * // Use the converted messages\n * this.conversationService.chats.set(previewMessages);\n * }\n * }\n * ```\n *\n * Example 2: Using demo data for development/testing\n * ```typescript\n * import { generateDemoChatPreview } from './chat-preview.helper';\n *\n * export class ChatPreviewDemoComponent {\n * ngOnInit() {\n * // Load demo messages\n * const demoMessages = generateDemoChatPreview();\n *\n * // Use the demo messages\n * this.conversationService.chats.set(demoMessages);\n * }\n * }\n */\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1wcmV2aWV3LmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NoYXQtcHJldmlldy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsYUFBcUIsRUFDckIsWUFBd0Q7SUFFeEQsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDakQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN4QywrQ0FBK0M7UUFDL0MsSUFBSSxXQUFXLEdBQStCLE1BQU0sQ0FBQztRQUVyRCxrQ0FBa0M7UUFDbEMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLFFBQVEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEMsS0FBSyxNQUFNO29CQUNULFdBQVcsR0FBRyxNQUFNLENBQUM7b0JBQ3JCLE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULFdBQVcsR0FBRyxNQUFNLENBQUM7b0JBQ3JCLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLFdBQVcsR0FBRyxPQUFPLENBQUM7b0JBQ3RCLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLFdBQVcsR0FBRyxPQUFPLENBQUM7b0JBQ3RCLE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULGtEQUFrRDtvQkFDbEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO29CQUM5QyxJQUFJLE9BQU8sQ0FB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QUFFLFdBQVc7WUFDakIsT0FBTyxFQUFFLCtCQUErQjtTQUN6QztRQUNEO1lBQ0UsRUFBRSxFQUFFLElBQUk7WUFDUixNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNwQixRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsV0FBVztZQUNqQixPQUFPLEVBQUUsK0JBQStCO1NBQ3pDO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsSUFBSTtZQUNSLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3BCLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxXQUFXO1lBQ2pCLE9BQU8sRUFBRSxzRUFBc0U7U0FDaEY7UUFDRDtZQUNFLEVBQUUsRUFBRSxJQUFJO1lBQ1IsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3BCLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxXQUFXO1lBQ2pCLE9BQU8sRUFBRSxtRUFBbUU7U0FDN0U7UUFDRDtZQUNFLEVBQUUsRUFBRSxJQUFJO1lBQ1IsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3BCLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLDBFQUEwRTtTQUNwRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTUNoYXRNZXNzYWdlIH0gZnJvbSAnLi9jaGF0LnR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRQcmV2aWV3TWVzc2FnZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGZyb21JZD86IHN0cmluZztcbiAgc2VuZFRpbWU6IERhdGU7XG4gIHJlYWRUaW1lOiBEYXRlO1xuICB0eXBlOiAndGV4dCcgfCAndm9pY2UnIHwgJ2ZpbGUnIHwgJ2ltYWdlJyB8ICd2aWRlbycgfCAnYXVkaW8nO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcmVwbHlUbz86IENoYXRQcmV2aWV3TWVzc2FnZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBjaGF0IHNlcnZpY2UgcmVzcG9uc2UgdG8gY2hhdCBwcmV2aWV3IGZvcm1hdFxuICogQHBhcmFtIGNoYXRSZXNwb25zZSAtIFRoZSByZXNwb25zZSBmcm9tIGNoYXQgc2VydmljZSBjb250YWluaW5nIGl0ZW1zIGFuZCB0b3RhbFxuICogQHJldHVybnMgQXJyYXkgb2YgZm9ybWF0dGVkIGNoYXQgcHJldmlldyBtZXNzYWdlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvQ2hhdFByZXZpZXcoXG4gIGN1cnJlbnRVc2VySWQ6IHN0cmluZyxcbiAgY2hhdFJlc3BvbnNlOiB7IGl0ZW1zOiBBWE1DaGF0TWVzc2FnZVtdOyB0b3RhbDogbnVtYmVyIH0sXG4pOiBDaGF0UHJldmlld01lc3NhZ2VbXSB7XG4gIGlmICghY2hhdFJlc3BvbnNlIHx8ICFjaGF0UmVzcG9uc2UuaXRlbXM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIE1hcCBmcm9tIEFYTUNoYXRNZXNzYWdlIHRvIENoYXRQcmV2aWV3TWVzc2FnZVxuICByZXR1cm4gY2hhdFJlc3BvbnNlLml0ZW1zLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgIC8vIERldGVybWluZSBtZXNzYWdlIHR5cGUgYmFzZWQgb24gY29udGVudCB0eXBlXG4gICAgbGV0IG1lc3NhZ2VUeXBlOiBDaGF0UHJldmlld01lc3NhZ2VbJ3R5cGUnXSA9ICd0ZXh0JztcblxuICAgIC8vIE1hcCBjb250ZW50VHlwZSB0byBwcmV2aWV3IHR5cGVcbiAgICBpZiAobWVzc2FnZS5tZXNzYWdlPy5jb250ZW50VHlwZSkge1xuICAgICAgc3dpdGNoIChtZXNzYWdlLm1lc3NhZ2UuY29udGVudFR5cGUpIHtcbiAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgbWVzc2FnZVR5cGUgPSAndGV4dCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ2ZpbGUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgICAgbWVzc2FnZVR5cGUgPSAnaW1hZ2UnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgICAgbWVzc2FnZVR5cGUgPSAndmlkZW8nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgICAvLyBEZXRlcm1pbmUgaWYgbGluayBpcyBmb3IgYXVkaW8gb3Igb3RoZXIgY29udGVudFxuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBtZXNzYWdlLm1lc3NhZ2UuY29udGVudCB8fCAnJztcbiAgICAgICAgICBpZiAoY29udGVudC5pbmNsdWRlcygnLm1wMycpIHx8IGNvbnRlbnQuaW5jbHVkZXMoJy5vZ2cnKSB8fCBjb250ZW50LmluY2x1ZGVzKCdhdWRpbycpKSB7XG4gICAgICAgICAgICBtZXNzYWdlVHlwZSA9ICdhdWRpbyc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1lc3NhZ2VUeXBlID0gJ3RleHQnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBtZXNzYWdlVHlwZSA9ICd0ZXh0JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IGF1dGhvciBuYW1lIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IG5hbWUgPSBtZXNzYWdlLmF1dGhvciA/IG1lc3NhZ2UuYXV0aG9yLmlkIDogJ1Vua25vd24nO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBjaGF0IHByZXZpZXcgbWVzc2FnZVxuICAgIGNvbnN0IHByZXZpZXdNZXNzYWdlOiBDaGF0UHJldmlld01lc3NhZ2UgPSB7XG4gICAgICBpZDogbWVzc2FnZS5pZCxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZShtZXNzYWdlLmNyZWF0ZWRBdCB8fCBuZXcgRGF0ZSgpKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLCAvLyBBc3N1bWluZyBcInJlYWRcIiB3aGVuIGNvbnZlcnRlZFxuICAgICAgdHlwZTogbWVzc2FnZVR5cGUsXG4gICAgICBjb250ZW50OiBtZXNzYWdlLm1lc3NhZ2U/LmNvbnRlbnQgfHwgJycsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgIH07XG5cbiAgICAvLyBBZGQgZnJvbUlkIGlmIHRoZSBtZXNzYWdlIGlzIG5vdCBmcm9tIGN1cnJlbnQgdXNlclxuICAgIGlmIChjdXJyZW50VXNlcklkICE9PSBtZXNzYWdlLmF1dGhvci5pZCkge1xuICAgICAgcHJldmlld01lc3NhZ2UuZnJvbUlkID0gbWVzc2FnZS5hdXRob3I/LmlkO1xuICAgIH1cblxuICAgIC8vIE5vdGU6IFJlcGx5IGluZm9ybWF0aW9uIHdvdWxkIG5lZWQgdG8gYmUgbG9va2VkIHVwIGZyb20gdGhlIGFjdHVhbCBtZXNzYWdlc1xuICAgIC8vIFRoaXMgd291bGQgdHlwaWNhbGx5IGJlIGRvbmUgYnkgdGhlIHNlcnZpY2UgdGhhdCBoYXMgYWNjZXNzIHRvIGFsbCBtZXNzYWdlc1xuXG4gICAgcmV0dXJuIHByZXZpZXdNZXNzYWdlO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgQ2hhdFByZXZpZXdNZXNzYWdlIGZyb20gcmVwbHkgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG9yaWdpbmFsIG1lc3NhZ2UgdGhhdCBpcyBiZWluZyByZWZlcmVuY2VkXG4gKiBAcmV0dXJucyBBIENoYXRQcmV2aWV3TWVzc2FnZSBmb3JtYXR0ZWQgZm9yIHVzZSBhcyBhIHJlcGx5VG9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlcGx5UHJldmlldyhjdXJyZW50VXNlcklkOiBzdHJpbmcsIG1lc3NhZ2U6IEFYTUNoYXRNZXNzYWdlKTogQ2hhdFByZXZpZXdNZXNzYWdlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgaWQ6IG1lc3NhZ2UuaWQsXG4gICAgc2VuZFRpbWU6IG5ldyBEYXRlKG1lc3NhZ2UuY3JlYXRlZEF0IHx8IG5ldyBEYXRlKCkpLFxuICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgIHR5cGU6XG4gICAgICBtZXNzYWdlLm1lc3NhZ2U/LmNvbnRlbnRUeXBlID09PSAnaW1hZ2UnXG4gICAgICAgID8gJ2ltYWdlJ1xuICAgICAgICA6IG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUgPT09ICd2aWRlbydcbiAgICAgICAgICA/ICd2aWRlbydcbiAgICAgICAgICA6IG1lc3NhZ2UubWVzc2FnZT8uY29udGVudFR5cGUgPT09ICdmaWxlJ1xuICAgICAgICAgICAgPyAnZmlsZSdcbiAgICAgICAgICAgIDogJ3RleHQnLFxuICAgIGNvbnRlbnQ6IG1lc3NhZ2UubWVzc2FnZT8uY29udGVudCB8fCAnJyxcbiAgICBuYW1lOiBtZXNzYWdlLmF1dGhvcj8uaWQgfHwgJ1Vua25vd24nLFxuICAgIGZyb21JZDogY3VycmVudFVzZXJJZCAhPT0gbWVzc2FnZS5hdXRob3IuaWQgPyBtZXNzYWdlLmF1dGhvcj8uaWQgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogR2VuZXJhdGUgZGVtbyBjaGF0IHByZXZpZXcgZGF0YSB3aXRoIGEgdmFyaWV0eSBvZiBtZXNzYWdlIHR5cGVzXG4gKiBAcmV0dXJucyBBcnJheSBvZiBzYW1wbGUgY2hhdCBwcmV2aWV3IG1lc3NhZ2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZURlbW9DaGF0UHJldmlldygpOiBDaGF0UHJldmlld01lc3NhZ2VbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgaWQ6ICcwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICBjb250ZW50OiAnSGVsbG8gSm9obiwgSG93IGFyZSB5b3U/JyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcxJyxcbiAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBjb250ZW50OiAnSGVsbG8nLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICByZXBseVRvOiB7XG4gICAgICAgIGlkOiAnMCcsXG4gICAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICBjb250ZW50OiAnSGVsbG8gSm9obiwgSG93IGFyZSB5b3U/JyxcbiAgICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcyJyxcbiAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAndm9pY2UnLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICBjb250ZW50OiBgZGF0YTphdWRpby93ZWJtO2NvZGVjcz1vcHVzO2Jhc2U2NCxHa1hmb0VGMzRmSmAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzMnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGNvbnRlbnQ6ICdDYW4gaSBoYXZlIHlvdXIgYWRkcmVzcyBpbmZvcm1hdGlvbj8nLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICByZXBseVRvOiB7XG4gICAgICAgIGlkOiAnMScsXG4gICAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgIGNvbnRlbnQ6ICdIZWxsbycsXG4gICAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnNCcsXG4gICAgICBmcm9tSWQ6ICcxMCcsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2ZpbGUnLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICBjb250ZW50OiBgZGF0YTphdWRpby93ZWJtO2NvZGVjcz1vcHVzO2Jhc2U2NCxHa1hmb0VGMzRmSmAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzUnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL3BpY3N1bS5waG90b3MvMzAwLzIwMGAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzYnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICd2aWRlbycsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL3d3dy5wZXhlbHMuY29tL2Rvd25sb2FkL3ZpZGVvLzU0OTUzMjIvP2Zwcz0yOS45NyZoPTU0MCZ3PTk2MGAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzcnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBKb2huLCBIb3cgYXJlIHlvdT8nLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzgnLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICdhdWRpbycsXG4gICAgICBuYW1lOiAna2lkcycsXG4gICAgICBjb250ZW50OiBgaHR0cHM6Ly9hY3Rpb25zLmdvb2dsZS5jb20vc291bmRzL3YxL2FtYmllbmNlcy9raWRzX3BsYXlpbmcub2dnYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnOScsXG4gICAgICBmcm9tSWQ6ICcxMCcsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgY29udGVudDogYGh0dHBzOi8vcGljc3VtLnBob3Rvcy8zMDAvMjAwYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnMTAnLFxuICAgICAgZnJvbUlkOiAnMTAnLFxuICAgICAgc2VuZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICByZWFkVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICBuYW1lOiAndGVzdCBuYW1lJyxcbiAgICAgIGNvbnRlbnQ6IGBodHRwczovL3BpY3N1bS5waG90b3MvMjAwLzMwMGAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJzExJyxcbiAgICAgIGZyb21JZDogJzEwJyxcbiAgICAgIHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICBjb250ZW50OiBgaHR0cHM6Ly93d3cucGV4ZWxzLmNvbS9kb3dubG9hZC92aWRlby81NDk1MzIyLz9mcHM9MjkuOTcmaD01NDAmdz05NjBgLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcxMicsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2ZpbGUnLFxuICAgICAgbmFtZTogJ3Rlc3QgbmFtZScsXG4gICAgICBjb250ZW50OiBgZGF0YTphdWRpby93ZWJtO2NvZGVjcz1vcHVzO2Jhc2U2NCxHa1hmbzU5Q2hvRSt1NUJ4SFZMN1pBUzFFRjM0ZkpgLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICcxMycsXG4gICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgIHJlYWRUaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZTogJ2F1ZGlvJyxcbiAgICAgIG5hbWU6ICdhbGFybScsXG4gICAgICBjb250ZW50OiBgaHR0cHM6Ly9hY3Rpb25zLmdvb2dsZS5jb20vc291bmRzL3YxL2FsYXJtcy9kaWdpdGFsX3dhdGNoX2FsYXJtX2xvbmcub2dnYCxcbiAgICB9LFxuICBdO1xufVxuXG4vKipcbiAqIFVzYWdlIEV4YW1wbGVzOlxuICpcbiAqIEV4YW1wbGUgMTogQ29udmVydGluZyBjaGF0IHNlcnZpY2UgcmVzcG9uc2UgdG8gY2hhdCBwcmV2aWV3IGZvcm1hdFxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQVhNQ2hhdFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LnNlcnZpY2UnO1xuICogaW1wb3J0IHsgY29udmVydFRvQ2hhdFByZXZpZXcgfSBmcm9tICcuL2NoYXQtcHJldmlldy5oZWxwZXInO1xuICpcbiAqIGV4cG9ydCBjbGFzcyBDaGF0UHJldmlld0NvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhdFNlcnZpY2U6IEFYTUNoYXRTZXJ2aWNlKSB7fVxuICpcbiAqICAgYXN5bmMgbG9hZENoYXRNZXNzYWdlcyhyb29tSWQ6IHN0cmluZykge1xuICogICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jaGF0U2VydmljZS5nZXRDaGF0TWVzc2FnZXMocm9vbUlkKTtcbiAqXG4gKiAgICAgLy8gQ29udmVydCB0byBjaGF0IHByZXZpZXcgZm9ybWF0XG4gKiAgICAgY29uc3QgcHJldmlld01lc3NhZ2VzID0gY29udmVydFRvQ2hhdFByZXZpZXcocmVzcG9uc2UpO1xuICpcbiAqICAgICAvLyBVc2UgdGhlIGNvbnZlcnRlZCBtZXNzYWdlc1xuICogICAgIHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5jaGF0cy5zZXQocHJldmlld01lc3NhZ2VzKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogRXhhbXBsZSAyOiBVc2luZyBkZW1vIGRhdGEgZm9yIGRldmVsb3BtZW50L3Rlc3RpbmdcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGdlbmVyYXRlRGVtb0NoYXRQcmV2aWV3IH0gZnJvbSAnLi9jaGF0LXByZXZpZXcuaGVscGVyJztcbiAqXG4gKiBleHBvcnQgY2xhc3MgQ2hhdFByZXZpZXdEZW1vQ29tcG9uZW50IHtcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgLy8gTG9hZCBkZW1vIG1lc3NhZ2VzXG4gKiAgICAgY29uc3QgZGVtb01lc3NhZ2VzID0gZ2VuZXJhdGVEZW1vQ2hhdFByZXZpZXcoKTtcbiAqXG4gKiAgICAgLy8gVXNlIHRoZSBkZW1vIG1lc3NhZ2VzXG4gKiAgICAgdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLmNoYXRzLnNldChkZW1vTWVzc2FnZXMpO1xuICogICB9XG4gKiB9XG4gKi9cbiJdfQ==","import { AXDomChangeDirective } from '@acorex/cdk/dom';\nimport { AXConversationModule, } from '@acorex/components/conversation';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXFileService } from '@acorex/core/file';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { convertToChatPreview } from '../../chat-preview.helper';\nimport { AXMChatService } from '../../chat.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/conversation\";\nimport * as i3 from \"@acorex/components/loading\";\nexport class AXMChatPreviewComponent {\n constructor() {\n this.activatedRoute = inject(ActivatedRoute);\n this.fileService = inject(AXFileService);\n this.chatService = inject(AXMChatService);\n this.sessionService = inject(AXPSessionService);\n this.toastService = inject(AXToastService);\n this.chatData = signal([]);\n this.isEditing = signal(false);\n this.editId = signal(null);\n this.height = signal(0);\n this.isLoading = signal(false);\n this.error = signal(null);\n this.options = signal({\n disabled: false,\n readonly: false,\n value: '',\n });\n this.roomId = '';\n }\n setHeight(height) {\n this.height.set(height);\n }\n ngOnInit() {\n this.activatedRoute.params.subscribe((params) => {\n this.roomId = params['id'];\n this.loadMessages(this.roomId);\n // setTimeout(() => {\n // this.scrollToEnd();\n // }, 1000);\n });\n }\n handleFileChange(event) {\n console.log('File Changed:', event);\n }\n handleCancelRecord(event) {\n console.log('Recording Cancelled:', event);\n }\n handleEndRecord(event) {\n this.fileService.blobToBase64(event.data.value).then((base64Content) => {\n // Create a properly formatted chat preview message for voice\n const newVoiceMessage = {\n id: `${Math.floor(Math.random() * 10000)}`,\n content: base64Content,\n sendTime: new Date(),\n readTime: new Date(),\n type: 'voice',\n name: 'test name',\n };\n this.chatData.update((values) => [...values, newVoiceMessage]);\n });\n }\n handleOnSend(e) {\n if (this.isEditing() && this.editId()) {\n this.chatService\n .editMessage(this.editId(), e.data.value, e.data.type || 'text')\n .then((newMessage) => {\n const convertedNewMessage = convertToChatPreview(this.sessionService.user?.id || '', {\n items: [newMessage],\n total: 1,\n })[0];\n this.chatData.update((values) => values.map((item) => (item.id === this.editId() ? { ...convertedNewMessage } : item)));\n this.editId.set(null);\n this.options.update((prev) => ({ ...prev, value: '' }));\n this.isEditing.set(false);\n })\n .catch((error) => {\n this.toastService.danger('Failed to edit message');\n });\n }\n else {\n if (e.data.value && this.roomId) {\n const replyId = e.data.replyChat?.id;\n this.chatService\n .sendMessage(this.roomId, e.data.value, e.data.type || 'text', replyId)\n .then((newMessage) => {\n const convertedNewMessage = convertToChatPreview(this.sessionService.user?.id || '', {\n items: [newMessage],\n total: 1,\n })[0];\n this.chatData.update((values) => [...values, { ...convertedNewMessage, replyTo: replyId }]);\n this.options.update((prev) => ({ ...prev, value: '' }));\n this.scrollToEnd();\n })\n .catch((error) => {\n this.toastService.danger('Failed to send message');\n });\n }\n }\n }\n handleOnAction(e) {\n console.log('Action Triggered:', e);\n }\n scrollToEnd() {\n const conversationView = document.querySelector('ax-conversation-view');\n if (conversationView) {\n conversationView.scrollTo({\n top: conversationView.scrollHeight,\n behavior: 'smooth',\n });\n }\n }\n async loadMessages(roomId) {\n this.isLoading.set(true);\n this.error.set(null);\n try {\n // Get messages from the chat service\n const messageResponse = await this.chatService.getMessages(roomId);\n // Convert to chat preview format\n const chatPreviewMessages = convertToChatPreview(this.sessionService.user?.id || '', messageResponse).sort((a, b) => {\n return new Date(a.sendTime).getTime() - new Date(b.sendTime).getTime();\n });\n // Set the messages in the conversation service\n this.chatData.set(chatPreviewMessages);\n }\n catch (error) {\n this.error.set('Failed to load messages. Please try again.');\n console.error('Failed to load messages:', error);\n }\n finally {\n this.isLoading.set(false);\n }\n }\n addItemHandler(e) {\n if (e.data.fromId) {\n e.canceled = true;\n return;\n }\n const userItem = [];\n if (e.data.type === 'text') {\n userItem.push({\n text: 'Edit',\n color: 'primary',\n icon: 'fa-solid fa-pencil',\n onClick: (id) => {\n try {\n this.isEditing.set(true);\n this.editId.set(e.data.id);\n this.options.update((prev) => ({ ...prev, value: e.data.content }));\n }\n catch (error) {\n this.toastService.danger('Failed to edit message');\n }\n },\n });\n }\n if (e.data.type === 'text') {\n userItem.push({\n text: 'Delete',\n color: 'danger',\n icon: 'fa-solid fa-trash-can',\n onClick: (id) => {\n try {\n this.chatService.deleteMessage(id).then((res) => {\n this.chatData.update((values) => values.filter((item) => item.id !== id));\n if (!res) {\n this.toastService.danger('Failed to delete message');\n }\n });\n }\n catch (error) {\n this.toastService.danger('Failed to delete message');\n }\n },\n });\n }\n e.items.push(...userItem);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMChatPreviewComponent, isStandalone: true, selector: \"axm-chat-preview\", ngImport: i0, template: \"@if (isLoading()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <ax-loading></ax-loading>\\n </div>\\n} @else if (error()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <div class=\\\"ax-text-center\\\">\\n <p class=\\\"ax-text-danger\\\">{{ error() }}</p>\\n <button (click)=\\\"loadMessages(roomId)\\\" class=\\\"ax-mt-2 ax-button ax-primary\\\">Retry</button>\\n </div>\\n </div>\\n} @else {\\n <div\\n axDomChange\\n (axResizeObserver)=\\\"setHeight($event[0].contentRect.height)\\\"\\n class=\\\"ax-bg-surface-container ax-h-full\\\"\\n >\\n <!-- Messages Container -->\\n <ax-conversation-container class=\\\"ax-overflow-hidden\\\" [chatData]=\\\"chatData()\\\">\\n <ax-conversation-view\\n (onActionMenuOpening)=\\\"addItemHandler($event)\\\"\\n (onAction)=\\\"handleOnAction($event)\\\"\\n [chatBoxHeight]=\\\"height() - 60 + 'px'\\\"\\n ></ax-conversation-view>\\n <ax-conversation-input\\n class=\\\"ax-p-1\\\"\\n placeholder=\\\"Type a message...\\\"\\n [(ngModel)]=\\\"options().value\\\"\\n (onSendClick)=\\\"handleOnSend($event)\\\"\\n (onFileChange)=\\\"handleFileChange($event)\\\"\\n (onStopRecording)=\\\"handleEndRecord($event)\\\"\\n (onCancelRecording)=\\\"handleCancelRecord($event)\\\"\\n ></ax-conversation-input>\\n </ax-conversation-container>\\n </div>\\n}\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: AXDomChangeDirective, selector: \"[axDomChange]\", outputs: [\"axMutationObserver\", \"axResizeObserver\"] }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"component\", type: i2.AXConversationViewComponent, selector: \"ax-conversation-view\", inputs: [\"chatBoxHeight\", \"isReplyArrowShown\"], outputs: [\"onScrollEnd\", \"onActionMenuOpening\", \"onAction\"] }, { kind: \"component\", type: i2.AXConversationInputComponent, selector: \"ax-conversation-input\", inputs: [\"look\", \"placeholder\", \"maxLength\", \"hasAttachment\", \"hasVoice\", \"hasEmoji\", \"isLoading\", \"acceptFileType\"], outputs: [\"onSendClick\", \"onStartRecording\", \"onCancelRecording\", \"onEnterPressed\"] }, { kind: \"component\", type: i2.AXConversationContainerComponent, selector: \"ax-conversation-container\", inputs: [\"chatData\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i3.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMChatPreviewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-chat-preview', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormsModule, AXDomChangeDirective, AXConversationModule, AXLoadingModule], template: \"@if (isLoading()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <ax-loading></ax-loading>\\n </div>\\n} @else if (error()) {\\n <div class=\\\"ax-h-full ax-w-full ax-flex ax-items-center ax-justify-center\\\">\\n <div class=\\\"ax-text-center\\\">\\n <p class=\\\"ax-text-danger\\\">{{ error() }}</p>\\n <button (click)=\\\"loadMessages(roomId)\\\" class=\\\"ax-mt-2 ax-button ax-primary\\\">Retry</button>\\n </div>\\n </div>\\n} @else {\\n <div\\n axDomChange\\n (axResizeObserver)=\\\"setHeight($event[0].contentRect.height)\\\"\\n class=\\\"ax-bg-surface-container ax-h-full\\\"\\n >\\n <!-- Messages Container -->\\n <ax-conversation-container class=\\\"ax-overflow-hidden\\\" [chatData]=\\\"chatData()\\\">\\n <ax-conversation-view\\n (onActionMenuOpening)=\\\"addItemHandler($event)\\\"\\n (onAction)=\\\"handleOnAction($event)\\\"\\n [chatBoxHeight]=\\\"height() - 60 + 'px'\\\"\\n ></ax-conversation-view>\\n <ax-conversation-input\\n class=\\\"ax-p-1\\\"\\n placeholder=\\\"Type a message...\\\"\\n [(ngModel)]=\\\"options().value\\\"\\n (onSendClick)=\\\"handleOnSend($event)\\\"\\n (onFileChange)=\\\"handleFileChange($event)\\\"\\n (onStopRecording)=\\\"handleEndRecord($event)\\\"\\n (onCancelRecording)=\\\"handleCancelRecord($event)\\\"\\n ></ax-conversation-input>\\n </ax-conversation-container>\\n </div>\\n}\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9mZWF0dXJlcy9jaGF0L2NvbXBvbmVudHMvY2hhdC1wcmV2aWV3L2NoYXQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvY2hhdC9jb21wb25lbnRzL2NoYXQtcHJldmlldy9jaGF0LXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUtMLG9CQUFvQixHQUNyQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1B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LCtWQUFFLG9CQUFvQiw4R0FBRSxvQkFBb0IscXBCQUFFLGVBQWU7OzJGQUVyRix1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERvbUNoYW5nZURpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvY2RrL2RvbSc7XG5pbXBvcnQge1xuICBBWENvbnZlcnNhdGlvbkFjdGlvbkV2ZW50LFxuICBBWENvbnZlcnNhdGlvbk1lbnVPcGVuaW5nRXZlbnQsXG4gIEFYQ29udmVyc2F0aW9uTWVzc2FnZSxcbiAgQVhDb252ZXJzYXRpb25NZXNzYWdlQWN0aW9uLFxuICBBWENvbnZlcnNhdGlvbk1vZHVsZSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbnZlcnNhdGlvbic7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5pbXBvcnQgeyBBWEZpbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2ZpbGUnO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbnZlcnRUb0NoYXRQcmV2aWV3IH0gZnJvbSAnLi4vLi4vY2hhdC1wcmV2aWV3LmhlbHBlcic7XG5pbXBvcnQgeyBBWE1DaGF0U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1jaGF0LXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQVhEb21DaGFuZ2VEaXJlY3RpdmUsIEFYQ29udmVyc2F0aW9uTW9kdWxlLCBBWExvYWRpbmdNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1DaGF0UHJldmlld0NvbXBvbmVudCB7XG4gIHByaXZhdGUgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIGZpbGVTZXJ2aWNlID0gaW5qZWN0KEFYRmlsZVNlcnZpY2UpO1xuICBwcml2YXRlIGNoYXRTZXJ2aWNlID0gaW5qZWN0KEFYTUNoYXRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgY2hhdERhdGEgPSBzaWduYWw8QVhDb252ZXJzYXRpb25NZXNzYWdlW10+KFtdKTtcbiAgcHJvdGVjdGVkIGlzRWRpdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBlZGl0SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBoZWlnaHQgPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgZXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIHNldEhlaWdodChoZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMuaGVpZ2h0LnNldChoZWlnaHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9wdGlvbnMgPSBzaWduYWwoe1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICByZWFkb25seTogZmFsc2UsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgcm9vbUlkOiBzdHJpbmcgPSAnJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgdGhpcy5yb29tSWQgPSBwYXJhbXNbJ2lkJ107XG4gICAgICB0aGlzLmxvYWRNZXNzYWdlcyh0aGlzLnJvb21JZCk7XG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vICAgdGhpcy5zY3JvbGxUb0VuZCgpO1xuICAgICAgLy8gfSwgMTAwMCk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVGaWxlQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnRmlsZSBDaGFuZ2VkOicsIGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUNhbmNlbFJlY29yZChldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1JlY29yZGluZyBDYW5jZWxsZWQ6JywgZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlRW5kUmVjb3JkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVTZXJ2aWNlLmJsb2JUb0Jhc2U2NChldmVudC5kYXRhLnZhbHVlKS50aGVuKChiYXNlNjRDb250ZW50KSA9PiB7XG4gICAgICAvLyBDcmVhdGUgYSBwcm9wZXJseSBmb3JtYXR0ZWQgY2hhdCBwcmV2aWV3IG1lc3NhZ2UgZm9yIHZvaWNlXG4gICAgICBjb25zdCBuZXdWb2ljZU1lc3NhZ2U6IEFYQ29udmVyc2F0aW9uTWVzc2FnZSA9IHtcbiAgICAgICAgaWQ6IGAke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwKX1gLFxuICAgICAgICBjb250ZW50OiBiYXNlNjRDb250ZW50LFxuICAgICAgICBzZW5kVGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgcmVhZFRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6ICd2b2ljZScsXG4gICAgICAgIG5hbWU6ICd0ZXN0IG5hbWUnLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5jaGF0RGF0YS51cGRhdGUoKHZhbHVlcykgPT4gWy4uLnZhbHVlcywgbmV3Vm9pY2VNZXNzYWdlXSk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVPblNlbmQoZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkgJiYgdGhpcy5lZGl0SWQoKSkge1xuICAgICAgdGhpcy5jaGF0U2VydmljZVxuICAgICAgICAuZWRpdE1lc3NhZ2UodGhpcy5lZGl0SWQoKSEsIGUuZGF0YS52YWx1ZSwgZS5kYXRhLnR5cGUgfHwgJ3RleHQnKVxuICAgICAgICAudGhlbigobmV3TWVzc2FnZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZE5ld01lc3NhZ2UgPSBjb252ZXJ0VG9DaGF0UHJldmlldyh0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI/LmlkIHx8ICcnLCB7XG4gICAgICAgICAgICBpdGVtczogW25ld01lc3NhZ2VdLFxuICAgICAgICAgICAgdG90YWw6IDEsXG4gICAgICAgICAgfSlbMF07XG4gICAgICAgICAgdGhpcy5jaGF0RGF0YS51cGRhdGUoKHZhbHVlcykgPT5cbiAgICAgICAgICAgIHZhbHVlcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSB0aGlzLmVkaXRJZCgpID8geyAuLi5jb252ZXJ0ZWROZXdNZXNzYWdlIH0gOiBpdGVtKSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmVkaXRJZC5zZXQobnVsbCk7XG4gICAgICAgICAgdGhpcy5vcHRpb25zLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgdmFsdWU6ICcnIH0pKTtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKCdGYWlsZWQgdG8gZWRpdCBtZXNzYWdlJyk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZS5kYXRhLnZhbHVlICYmIHRoaXMucm9vbUlkKSB7XG4gICAgICAgIGNvbnN0IHJlcGx5SWQgPSBlLmRhdGEucmVwbHlDaGF0Py5pZDtcbiAgICAgICAgdGhpcy5jaGF0U2VydmljZVxuICAgICAgICAgIC5zZW5kTWVzc2FnZSh0aGlzLnJvb21JZCwgZS5kYXRhLnZhbHVlLCBlLmRhdGEudHlwZSB8fCAndGV4dCcsIHJlcGx5SWQpXG4gICAgICAgICAgLnRoZW4oKG5ld01lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZE5ld01lc3NhZ2UgPSBjb252ZXJ0VG9DaGF0UHJldmlldyh0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI/LmlkIHx8ICcnLCB7XG4gICAgICAgICAgICAgIGl0ZW1zOiBbbmV3TWVzc2FnZV0sXG4gICAgICAgICAgICAgIHRvdGFsOiAxLFxuICAgICAgICAgICAgfSlbMF07XG4gICAgICAgICAgICB0aGlzLmNoYXREYXRhLnVwZGF0ZSgodmFsdWVzKSA9PiBbLi4udmFsdWVzLCB7IC4uLmNvbnZlcnRlZE5ld01lc3NhZ2UsIHJlcGx5VG86IHJlcGx5SWQgfV0pO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgdmFsdWU6ICcnIH0pKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcignRmFpbGVkIHRvIHNlbmQgbWVzc2FnZScpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9uQWN0aW9uKGU6IEFYQ29udmVyc2F0aW9uQWN0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnQWN0aW9uIFRyaWdnZXJlZDonLCBlKTtcbiAgfVxuXG4gIHNjcm9sbFRvRW5kKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnZlcnNhdGlvblZpZXcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdheC1jb252ZXJzYXRpb24tdmlldycpO1xuICAgIGlmIChjb252ZXJzYXRpb25WaWV3KSB7XG4gICAgICBjb252ZXJzYXRpb25WaWV3LnNjcm9sbFRvKHtcbiAgICAgICAgdG9wOiBjb252ZXJzYXRpb25WaWV3LnNjcm9sbEhlaWdodCxcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1lc3NhZ2VzKHJvb21JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZXJyb3Iuc2V0KG51bGwpO1xuICAgIHRyeSB7XG4gICAgICAvLyBHZXQgbWVzc2FnZXMgZnJvbSB0aGUgY2hhdCBzZXJ2aWNlXG4gICAgICBjb25zdCBtZXNzYWdlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYXRTZXJ2aWNlLmdldE1lc3NhZ2VzKHJvb21JZCk7XG5cbiAgICAgIC8vIENvbnZlcnQgdG8gY2hhdCBwcmV2aWV3IGZvcm1hdFxuICAgICAgY29uc3QgY2hhdFByZXZpZXdNZXNzYWdlcyA9IGNvbnZlcnRUb0NoYXRQcmV2aWV3KHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcj8uaWQgfHwgJycsIG1lc3NhZ2VSZXNwb25zZSkuc29ydChcbiAgICAgICAgKGEsIGIpID0+IHtcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYS5zZW5kVGltZSkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYi5zZW5kVGltZSkuZ2V0VGltZSgpO1xuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgLy8gU2V0IHRoZSBtZXNzYWdlcyBpbiB0aGUgY29udmVyc2F0aW9uIHNlcnZpY2VcbiAgICAgIHRoaXMuY2hhdERhdGEuc2V0KGNoYXRQcmV2aWV3TWVzc2FnZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yLnNldCgnRmFpbGVkIHRvIGxvYWQgbWVzc2FnZXMuIFBsZWFzZSB0cnkgYWdhaW4uJyk7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBtZXNzYWdlczonLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFkZEl0ZW1IYW5kbGVyKGU6IEFYQ29udmVyc2F0aW9uTWVudU9wZW5pbmdFdmVudCkge1xuICAgIGlmIChlLmRhdGEuZnJvbUlkKSB7XG4gICAgICBlLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdXNlckl0ZW06IEFYQ29udmVyc2F0aW9uTWVzc2FnZUFjdGlvbltdID0gW107XG4gICAgaWYgKGUuZGF0YS50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIHVzZXJJdGVtLnB1c2goe1xuICAgICAgICB0ZXh0OiAnRWRpdCcsXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIGljb246ICdmYS1zb2xpZCBmYS1wZW5jaWwnLFxuICAgICAgICBvbkNsaWNrOiAoaWQpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5lZGl0SWQuc2V0KGUuZGF0YS5pZCk7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCB2YWx1ZTogZS5kYXRhLmNvbnRlbnQgfSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0ZhaWxlZCB0byBlZGl0IG1lc3NhZ2UnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGUuZGF0YS50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIHVzZXJJdGVtLnB1c2goe1xuICAgICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtdHJhc2gtY2FuJyxcbiAgICAgICAgb25DbGljazogKGlkKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZGVsZXRlTWVzc2FnZShpZCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuY2hhdERhdGEudXBkYXRlKCh2YWx1ZXMpID0+IHZhbHVlcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgIT09IGlkKSk7XG4gICAgICAgICAgICAgIGlmICghcmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKCdGYWlsZWQgdG8gZGVsZXRlIG1lc3NhZ2UnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcignRmFpbGVkIHRvIGRlbGV0ZSBtZXNzYWdlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZS5pdGVtcy5wdXNoKC4uLnVzZXJJdGVtKTtcbiAgfVxufVxuIiwiQGlmIChpc0xvYWRpbmcoKSkge1xuICA8ZGl2IGNsYXNzPVwiYXgtaC1mdWxsIGF4LXctZnVsbCBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgPC9kaXY+XG59IEBlbHNlIGlmIChlcnJvcigpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1oLWZ1bGwgYXgtdy1mdWxsIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LXRleHQtY2VudGVyXCI+XG4gICAgICA8cCBjbGFzcz1cImF4LXRleHQtZGFuZ2VyXCI+e3sgZXJyb3IoKSB9fTwvcD5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNZXNzYWdlcyhyb29tSWQpXCIgY2xhc3M9XCJheC1tdC0yIGF4LWJ1dHRvbiBheC1wcmltYXJ5XCI+UmV0cnk8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdlxuICAgIGF4RG9tQ2hhbmdlXG4gICAgKGF4UmVzaXplT2JzZXJ2ZXIpPVwic2V0SGVpZ2h0KCRldmVudFswXS5jb250ZW50UmVjdC5oZWlnaHQpXCJcbiAgICBjbGFzcz1cImF4LWJnLXN1cmZhY2UtY29udGFpbmVyIGF4LWgtZnVsbFwiXG4gID5cbiAgICA8IS0tIE1lc3NhZ2VzIENvbnRhaW5lciAtLT5cbiAgICA8YXgtY29udmVyc2F0aW9uLWNvbnRhaW5lciBjbGFzcz1cImF4LW92ZXJmbG93LWhpZGRlblwiIFtjaGF0RGF0YV09XCJjaGF0RGF0YSgpXCI+XG4gICAgICA8YXgtY29udmVyc2F0aW9uLXZpZXdcbiAgICAgICAgKG9uQWN0aW9uTWVudU9wZW5pbmcpPVwiYWRkSXRlbUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgIChvbkFjdGlvbik9XCJoYW5kbGVPbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgW2NoYXRCb3hIZWlnaHRdPVwiaGVpZ2h0KCkgLSA2MCArICdweCdcIlxuICAgICAgPjwvYXgtY29udmVyc2F0aW9uLXZpZXc+XG4gICAgICA8YXgtY29udmVyc2F0aW9uLWlucHV0XG4gICAgICAgIGNsYXNzPVwiYXgtcC0xXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIGEgbWVzc2FnZS4uLlwiXG4gICAgICAgIFsobmdNb2RlbCldPVwib3B0aW9ucygpLnZhbHVlXCJcbiAgICAgICAgKG9uU2VuZENsaWNrKT1cImhhbmRsZU9uU2VuZCgkZXZlbnQpXCJcbiAgICAgICAgKG9uRmlsZUNoYW5nZSk9XCJoYW5kbGVGaWxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAob25TdG9wUmVjb3JkaW5nKT1cImhhbmRsZUVuZFJlY29yZCgkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2FuY2VsUmVjb3JkaW5nKT1cImhhbmRsZUNhbmNlbFJlY29yZCgkZXZlbnQpXCJcbiAgICAgID48L2F4LWNvbnZlcnNhdGlvbi1pbnB1dD5cbiAgICA8L2F4LWNvbnZlcnNhdGlvbi1jb250YWluZXI+XG4gIDwvZGl2PlxufVxuIl19","import { AXWysiwygContainerComponent, AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild } from '@angular/core';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXMCommentService } from '../../../comment/comment.service';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXMCommentLookupPopup } from '../../../comment/comment-lookup-popup.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/avatar\";\nimport * as i2 from \"@acorex/components/skeleton\";\nimport * as i3 from \"@acorex/components/comment\";\nimport * as i4 from \"@acorex/components/button\";\nimport * as i5 from \"@acorex/components/image\";\nimport * as i6 from \"@acorex/components/loading\";\nimport * as i7 from \"@acorex/components/dropdown\";\nimport * as i8 from \"@acorex/components/decorators\";\nimport * as i9 from \"@acorex/components/wysiwyg\";\nimport * as i10 from \"@acorex/components/toolbar\";\nimport * as i11 from \"@acorex/components/dropdown-button\";\nimport * as i12 from \"@acorex/components/form\";\nimport * as i13 from \"@angular/forms\";\nimport * as i14 from \"@acorex/core/format\";\nexport class AXMCommentWidgetViewComponent extends AXPLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hasCooldown = signal(false);\n this.commentContent = signal('');\n this.isSubmitting = signal(false);\n this.isReplyingMode = signal(false);\n this.isEditingMode = signal(false);\n this.isLoading = signal(true);\n this.failedImageIds = signal([]);\n this.activeReplyComment = signal(undefined);\n this.activeEditComment = signal(undefined);\n this.wysiwygEditor = viewChild.required('w');\n this.commentService = inject(AXMCommentService);\n this.platform = inject(AXPlatform);\n this.popupService = inject(AXPopupService);\n this.toastService = inject(AXToastService);\n this.dialogService = inject(AXDialogService);\n this.sanitize = inject(DomSanitizer);\n this.getPayload = computed(() => ({\n params: this.payload(),\n skip: 0,\n take: 10,\n }));\n this.payload = computed(() => ({\n roomType: 'default',\n entityId: this.options().entityId,\n instanceId: this.options().instanceId,\n }));\n this.comments = signal([]);\n this.wysiwyg = viewChild('w');\n this.wysiwygOptions = signal({\n look: 'solid',\n });\n this.avatarConfig = signal({\n color: 'primary',\n look: 'rounded',\n type: 'solid', // 'image' | 'text' | 'icon' | 'default'\n });\n this.validateContent = (content) => {\n let isValid = true;\n if (!content || content === '<p><br></p>') {\n isValid = false;\n }\n return {\n rule: 'callback',\n result: isValid,\n message: isValid ? '' : 'Please fill the content',\n value: content,\n };\n };\n }\n ngOnInit() {\n super.ngOnInit();\n this.loadComments();\n }\n sanitizeHtml(htmlContent) {\n if (!htmlContent)\n return this.sanitize.bypassSecurityTrustHtml('');\n return this.sanitize.bypassSecurityTrustHtml(htmlContent);\n }\n handleImageError(imageId) {\n this.failedImageIds.update((ids) => [...ids, imageId]);\n }\n checkImageExists(imageId) {\n return !this.failedImageIds().includes(imageId);\n }\n extractInitials(name) {\n if (!name)\n return '?';\n // Handle the case where name is an object with fullName property\n const nameStr = typeof name === 'object' && name.fullName ? name.fullName : String(name);\n const words = nameStr.split(' ');\n const initials = words.map((word) => word.charAt(0).toUpperCase());\n return initials.join('');\n }\n async loadComments() {\n this.isLoading.set(true);\n try {\n const response = await this.commentService.query(this.getPayload());\n this.comments.set(response.items);\n }\n catch (error) {\n console.error('Failed to load comments:', error);\n this.toastService.show({\n content: 'Failed to load comments. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.comments.set([]);\n }\n finally {\n setTimeout(() => {\n this.isLoading.set(false);\n }, 250);\n }\n }\n editMessage(comment, reply) {\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.isEditingMode.set(true);\n this.activeEditComment.set(comment);\n const contentToEdit = reply ? reply.message?.content : comment.message?.content;\n this.commentContent.set(contentToEdit || '');\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n replyMessage(comment, reply) {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(true);\n this.activeReplyComment.set(comment);\n if (reply) {\n const author = reply.author.fullName || reply.author.id;\n const mention = `<a data-id=\"${reply.id}\">@${author}</a> `;\n this.commentContent.set(mention);\n this.wysiwyg()?.focus();\n document.getElementsByClassName('ql-editor')[0].innerHTML = mention;\n }\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n async deleteComment(comment) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this comment?',\n title: 'Delete Comment',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n if (comment.id) {\n await this.commentService.deleteOne(comment.id);\n this.removeMessageById(comment.id);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n if (this.isEditingMode() && this.activeEditComment()?.id === comment.id) {\n this.resetReplyEditState();\n }\n dialog.close();\n }\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n async deleteReply(comment, reply) {\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: 'Are you sure you want to delete this reply?',\n title: 'Delete Reply',\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: 'Delete',\n color: 'danger',\n onClick: async (e) => {\n e.handled = true;\n e.source.text = 'Deleting...';\n e.source.disabled = true;\n e.source.loading = true;\n try {\n if (reply.id) {\n await this.commentService.deleteOne(reply.id);\n this.removeMessageById(comment.id, reply.id);\n this.toastService.show({\n content: 'Comment deleted successfully.',\n color: 'success',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n dialog.close();\n }\n }\n catch (error) {\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to delete comment!',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n },\n },\n {\n text: 'Cancel',\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n resetReplyEditState() {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n }\n async toggleLike(comment, reply) {\n try {\n if (reply) {\n if (reply.id) {\n this.updateLikeStatus(comment.id, reply.id);\n await this.commentService.like(reply.id);\n }\n }\n else {\n if (comment.id) {\n this.updateLikeStatus(comment.id);\n await this.commentService.like(comment.id);\n }\n }\n }\n catch (error) {\n console.error('Failed to toggle like:', error);\n // Revert the optimistic update if the server call fails\n if (reply && reply.id) {\n this.updateLikeStatus(comment.id, reply.id);\n }\n else if (comment.id) {\n this.updateLikeStatus(comment.id);\n }\n }\n }\n updateLikeStatus(commentId, replyId) {\n this.comments.update((commentsList) => {\n return commentsList.map((comment) => {\n if (comment.id === commentId) {\n if (replyId && comment.replies) {\n const updatedReplies = comment.replies.map((reply) => reply.id === replyId\n ? {\n ...reply,\n isLiked: !reply.isLiked,\n reactionsCount: reply.isLiked && reply.reactionsCount !== undefined\n ? reply.reactionsCount - 1\n : (reply.reactionsCount || 0) + 1,\n }\n : reply);\n return {\n ...comment,\n replies: updatedReplies,\n };\n }\n else {\n return {\n ...comment,\n isLiked: !comment.isLiked,\n reactionsCount: comment.isLiked && comment.reactionsCount !== undefined\n ? comment.reactionsCount - 1\n : (comment.reactionsCount || 0) + 1,\n };\n }\n }\n return comment;\n });\n });\n }\n removeMessageById(commentId, replyId) {\n if (replyId) {\n // Remove a reply from a comment\n this.comments.update((commentsList) => commentsList.map((comment) => {\n if (comment.id === commentId && comment.replies) {\n return {\n ...comment,\n replies: comment.replies.filter((reply) => reply.id !== replyId),\n };\n }\n return comment;\n }));\n }\n else {\n // Remove a whole comment\n this.comments.update((commentsList) => commentsList.filter((comment) => comment.id !== commentId));\n }\n }\n async submitComment(isPrivate = false) {\n if (!this.validateContent(this.commentContent()).result) {\n return;\n }\n this.isSubmitting.set(true);\n let memberLookup;\n if (isPrivate) {\n const popupConfig = {\n header: true,\n size: 'md',\n draggable: true,\n hasBackdrop: true,\n closeButton: true,\n closeOnBackdropClick: false,\n };\n const popup = await this.popupService.open(AXMCommentLookupPopup, popupConfig);\n memberLookup = popup.data?.data?.lookup;\n }\n try {\n if (this.isEditingMode() && this.activeEditComment()?.id) {\n const payload = {\n message: {\n content: this.commentContent(),\n contentType: 'text',\n },\n };\n await this.commentService.updateOne(this.activeEditComment().id, payload);\n this.hasCooldown.set(true);\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n }\n else {\n const payload = {\n ...this.payload(),\n content: this.commentContent(),\n contentType: 'text',\n isPrivate: isPrivate,\n replyId: this.activeReplyComment()?.id ?? null,\n };\n await this.commentService.insertOne(payload);\n this.hasCooldown.set(true);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n }\n // Reload comments to get the updated list with proper hierarchy\n const response = await this.commentService.query(this.getPayload());\n this.comments.set(response.items);\n this.commentContent.set('');\n document.getElementsByClassName('ql-editor')[0].innerHTML = '';\n setTimeout(() => {\n this.hasCooldown.set(false);\n }, 1000);\n }\n catch (error) {\n console.error('Error submitting comment:', error);\n this.toastService.show({\n content: typeof error === 'string' ? error : 'Failed to submit comment. Please try again.',\n color: 'danger',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n scrollMain() {\n const comment = this.isReplyingMode() ? this.activeReplyComment() : this.activeEditComment();\n if (comment && comment.id) {\n const el = document.getElementById(comment.id);\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n const content = el?.firstElementChild?.children[1];\n if (content) {\n const prevBg = content.style.background;\n content.style.borderRadius = '0.25rem';\n content.style.transition = 'background 1s ease-in-out';\n content.style.background = `rgba(var(--ax-color-on-surface), var(--tw-bg-opacity))`;\n setTimeout(() => {\n content.style.background = prevBg || 'rgba(0, 0, 0, 0)';\n }, 1000);\n }\n }\n }\n }\n calcDefrenetTime(date) {\n return date ? Date.now() - date.getTime() : undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMCommentWidgetViewComponent, isStandalone: true, selector: \"axm-comment-widget-view\", viewQueries: [{ propertyName: \"wysiwygEditor\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }, { propertyName: \"wysiwyg\", first: true, predicate: [\"w\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-mt-2 ax-p-2\\\">\\n <ax-comment-container>\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item [id]=\\\"comment.id!\\\" [replyCount]=\\\"comment.replies?.length ?? 0\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (checkImageExists(comment.id!) && comment.author && extractInitials(comment.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(comment.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(comment.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(comment.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(comment.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"comment.isLiked!\\\">\\n {{ comment.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment)\\\"></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (reply && checkImageExists(reply.id!) && reply.author && extractInitials(reply.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(reply.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(reply.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(reply.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(reply.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteReply(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment, reply)\\\" [liked]=\\\"reply.isLiked!\\\">\\n {{ reply.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment, reply)\\\"></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? extractInitials(activeReplyComment()?.author) : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment(true)\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\"ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\\n\"], dependencies: [{ kind: \"component\", type: AXWysiwygContainerComponent, selector: \"ax-wysiwyg-container\", inputs: [\"look\", \"placeHolder\"], outputs: [\"onValueChanged\"] }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"component\", type: i1.AXAvatarComponent, selector: \"ax-avatar\", inputs: [\"color\", \"size\", \"shape\", \"look\"], outputs: [\"sizeChange\"] }, { kind: \"ngmodule\", type: AXConversationModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i2.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXCommentModule }, { kind: \"component\", type: i3.AXCommentViewComponent, selector: \"ax-comment-view\" }, { kind: \"component\", type: i3.AXCommentContainerComponent, selector: \"ax-comment-container\" }, { kind: \"component\", type: i3.AxCommentItemComponent, selector: \"ax-comment-item\", inputs: [\"replyCount\"] }, { kind: \"component\", type: i3.AXCommentLikeComponent, selector: \"ax-comment-like\", inputs: [\"liked\"], outputs: [\"likedChange\", \"onLiked\"] }, { kind: \"component\", type: i3.AXMenuOptionsComponent, selector: \"ax-comment-menu-options\" }, { kind: \"component\", type: i3.AXCommentReplyTextComponent, selector: \"ax-comment-reply-text\" }, { kind: \"component\", type: i3.AXCommentDateComponent, selector: \"ax-comment-date\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i4.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: i4.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i4.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXImageModule }, { kind: \"component\", type: i5.AXImageComponent, selector: \"ax-image\", inputs: [\"width\", \"height\", \"overlayMode\", \"src\", \"alt\", \"priority\", \"lazy\"], outputs: [\"onLoad\", \"onError\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i6.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i7.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i8.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i8.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXWysiwygModule }, { kind: \"component\", type: i9.AXWysiwygViewComponent, selector: \"ax-wysiwyg-view\", inputs: [\"class\"] }, { kind: \"component\", type: i9.AXWysiwygAlignmentComponent, selector: \"ax-wysiwyg-alignment\" }, { kind: \"component\", type: i9.AXWysiwygColorsComponent, selector: \"ax-wysiwyg-colors\" }, { kind: \"component\", type: i9.AXWysiwygFontStyleComponent, selector: \"ax-wysiwyg-font-style\" }, { kind: \"component\", type: i9.AXWysiwygHistoryComponent, selector: \"ax-wysiwyg-history\" }, { kind: \"component\", type: i9.AXWysiwygListComponent, selector: \"ax-wysiwyg-list\" }, { kind: \"ngmodule\", type: AXToolBarModule }, { kind: \"component\", type: i10.AXToolBarComponent, selector: \"ax-toolbar\" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"component\", type: i11.AXDropdownButtonComponent, selector: \"ax-dropdown-button\", inputs: [\"disabled\", \"size\", \"color\", \"look\", \"text\", \"type\", \"mode\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"lookChange\", \"colorChange\", \"disabledChange\"] }, { kind: \"ngmodule\", type: AXValidationModule }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i12.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i12.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"directive\", type: i12.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i13.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i13.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"pipe\", type: i14.AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMCommentWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-comment-widget-view', imports: [\n AXWysiwygContainerComponent,\n AXAvatarModule,\n AXConversationModule,\n AXSkeletonModule,\n AXCommentModule,\n AXButtonModule,\n AXImageModule,\n AXLoadingModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXWysiwygModule,\n AXToolBarModule,\n AXDropdownModule,\n AXDropdownButtonModule,\n AXValidationModule,\n AsyncPipe,\n AXFormModule,\n FormsModule,\n AXFormatModule,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"ax-mt-2 ax-p-2\\\">\\n <ax-comment-container>\\n @if (isLoading()) {\\n <div class=\\\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\\\">\\n <ax-skeleton class=\\\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\\\"></ax-skeleton>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full\\\">\\n <ax-skeleton class=\\\"ax-w-full ax-h-6 ax-rounded\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-full ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n <ax-skeleton class=\\\"ax-w-8/12 ax-h-2 ax-rounded-full\\\"></ax-skeleton>\\n </div>\\n </div>\\n } @else if (!isLoading() && comments().length > 0) {\\n <ax-comment-view class=\\\"ax-bg-lightest\\\">\\n @for (comment of comments(); track comment.id) {\\n <ax-comment-item [id]=\\\"comment.id!\\\" [replyCount]=\\\"comment.replies?.length ?? 0\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (checkImageExists(comment.id!) && comment.author && extractInitials(comment.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(comment.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(comment.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(comment.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(comment.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteComment(comment)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(comment.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment)\\\" [liked]=\\\"comment.isLiked!\\\">\\n {{ comment.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment)\\\"></ax-comment-reply-text>\\n @for (reply of comment.replies; track reply.id) {\\n <ax-comment-item [id]=\\\"reply.id\\\">\\n <ax-avatar [color]=\\\"avatarConfig().color\\\" [shape]=\\\"avatarConfig().look\\\">\\n @if (reply && checkImageExists(reply.id!) && reply.author && extractInitials(reply.author) !== '?') {\\n <ax-image (onError)=\\\"handleImageError(reply.id!)\\\" [src]=\\\"''\\\">\\n <ax-loading></ax-loading>\\n </ax-image>\\n } @else {\\n <ax-text>\\n <span class=\\\"ax-text-base ax-overflow-hidden\\\">{{ extractInitials(reply.author) }}</span>\\n </ax-text>\\n }\\n </ax-avatar>\\n <ax-title>{{ extractInitials(reply.author) }}</ax-title>\\n <ax-comment-date>{{ calcDefrenetTime(reply.createdAt) | format: 'timeleft' | async }} </ax-comment-date>\\n <ax-comment-menu-options>\\n <ax-button class=\\\"ax-sm\\\" look=\\\"blank\\\" color=\\\"neutral\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-solid ax-icon-more-horizontal\\\"></ax-icon>\\n </ax-button>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Edit\\\" color=\\\"neutral\\\" (click)=\\\"editMessage(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-edit\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item text=\\\"Delete\\\" color=\\\"danger\\\" (click)=\\\"deleteReply(comment, reply)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-comment-menu-options>\\n <ax-content [innerHTML]=\\\"sanitizeHtml(reply.message.content)\\\"></ax-content>\\n <ax-comment-like (click)=\\\"toggleLike(comment, reply)\\\" [liked]=\\\"reply.isLiked!\\\">\\n {{ reply.reactionsCount }}\\n </ax-comment-like>\\n <ax-comment-reply-text (click)=\\\"replyMessage(comment, reply)\\\"></ax-comment-reply-text>\\n </ax-comment-item>\\n }\\n </ax-comment-item>\\n }\\n </ax-comment-view>\\n } @else {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\\\">\\n <svg\\n class=\\\"ax-mx-auto\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"154\\\"\\n height=\\\"161\\\"\\n viewBox=\\\"0 0 154 161\\\"\\n fill=\\\"none\\\"\\n >\\n <path\\n d=\\\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\\\"\\n fill=\\\"#EEF2FF\\\"\\n />\\n <path\\n d=\\\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\\\"\\n fill=\\\"white\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <ellipse cx=\\\"80.0618\\\" cy=\\\"81\\\" rx=\\\"28.0342\\\" ry=\\\"28.0342\\\" fill=\\\"#EEF2FF\\\" />\\n <path\\n d=\\\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\\\"\\n stroke=\\\"#E5E7EB\\\"\\n />\\n <path\\n d=\\\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\\\"\\n fill=\\\"#A5B4FC\\\"\\n stroke=\\\"#818CF8\\\"\\n />\\n <path\\n d=\\\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <path\\n d=\\\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\\\"\\n fill=\\\"#4F46E5\\\"\\n />\\n <rect x=\\\"38.3522\\\" y=\\\"21.5128\\\" width=\\\"41.0256\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"133.65\\\" width=\\\"54.7009\\\" height=\\\"5.47009\\\" rx=\\\"2.73504\\\" fill=\\\"#A5B4FC\\\" />\\n <rect x=\\\"38.3522\\\" y=\\\"29.7179\\\" width=\\\"13.6752\\\" height=\\\"2.73504\\\" rx=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"56.13\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"61.6001\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n <circle cx=\\\"67.0702\\\" cy=\\\"31.0854\\\" r=\\\"1.36752\\\" fill=\\\"#4F46E5\\\" />\\n </svg>\\n <div>\\n <h2 class=\\\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\\\">\\n There is no Comment!\\n </h2>\\n </div>\\n </div>\\n </div>\\n }\\n </ax-comment-container>\\n <ax-form>\\n <ax-form-field>\\n <div>\\n @if (isReplyingMode() || isEditingMode()) {\\n <div\\n class=\\\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\\\"\\n >\\n <div (click)=\\\"scrollMain()\\\" class=\\\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\\\">\\n <i\\n [class]=\\\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\\\"\\n class=\\\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\\\"\\n ></i>\\n <div\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\\\"\\n >\\n <p class=\\\"ax-text-primary-500 dark:ax-text-primary-300\\\">\\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\\n <span class=\\\"ax-font-bold\\\">\\n {{ isReplyingMode() ? extractInitials(activeReplyComment()?.author) : '' }}\\n </span>\\n </p>\\n <div\\n class=\\\"ax-truncate\\\"\\n [innerHTML]=\\\"\\n isReplyingMode()\\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\\n \\\"\\n ></div>\\n </div>\\n </div>\\n <div><i (click)=\\\"resetReplyEditState()\\\" class=\\\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\\\"></i></div>\\n </div>\\n }\\n <ax-wysiwyg-container #w [look]=\\\"wysiwygOptions().look\\\" [(ngModel)]=\\\"commentContent\\\">\\n <ax-wysiwyg-view class=\\\"ax-min-h-28\\\"></ax-wysiwyg-view>\\n <ax-toolbar>\\n <ax-content>\\n <ax-wysiwyg-history></ax-wysiwyg-history>\\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\\n <ax-wysiwyg-list></ax-wysiwyg-list>\\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\\n </ax-content>\\n <ax-suffix>\\n <ax-dropdown-button\\n [disabled]=\\\"hasCooldown()\\\"\\n type=\\\"submit\\\"\\n color=\\\"primary\\\"\\n mode=\\\"split\\\"\\n text=\\\"Send\\\"\\n (onClick)=\\\"submitComment()\\\"\\n >\\n @if (isSubmitting()) {\\n <ax-loading></ax-loading>\\n }\\n <ax-button-item-list>\\n <ax-button-item (click)=\\\"submitComment(true)\\\" text=\\\"Send Private ...\\\" name=\\\"private\\\" data=\\\"private\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-user-secret\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </ax-suffix>\\n </ax-toolbar>\\n <ax-validation-rule rule=\\\"callback\\\" [options]=\\\"{ validate: validateContent }\\\"></ax-validation-rule>\\n </ax-wysiwyg-container>\\n </div>\\n </ax-form-field>\\n </ax-form>\\n</div>\\n\", styles: [\"ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvd2lkZ2V0L3NoYXJlL2NvbW1lbnQvY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvY29udmVyc2F0aW9uL3NyYy9saWIvZmVhdHVyZXMvd2lkZ2V0L3NoYXJlL2NvbW1lbnQvY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBdUN4RixNQUFNLE9BQU8sNkJBQThCLFNBQVEsd0JBQXdCO0lBckMzRTs7UUFzQ1ksZ0JBQVcsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckMsbUJBQWMsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFcEMsaUJBQVksR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDeEMsa0JBQWEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdkMsY0FBUyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUVsQyxtQkFBYyxHQUFHLE1BQU0sQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBRyxNQUFNLENBQWdDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RFLHNCQUFpQixHQUFHLE1BQU0sQ0FBZ0MsU0FBUyxDQUFDLENBQUM7UUFDckUsa0JBQWEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUE4QixHQUFHLENBQUMsQ0FBQztRQUV2RSxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLGFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUIsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV4QixlQUFVLEdBQUcsUUFBUSxDQUMzQixHQUFHLEVBQUUsQ0FDSCxDQUFDO1lBQ0MsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDdEIsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsRUFBRTtTQUNULENBQW9CLENBQ3hCLENBQUM7UUFDRixZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDeEIsUUFBUSxFQUFFLFNBQVM7WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRO1lBQ2pDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVTtTQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVNLGFBQVEsR0FBRyxNQUFNLENBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLFlBQU8sR0FBRyxTQUFTLENBQThCLEdBQUcsQ0FBQyxDQUFDO1FBT3BELG1CQUFjLEdBQUcsTUFBTSxDQUU5QjtZQUNELElBQUksRUFBRSxPQUFPO1NBQ2QsQ0FBQyxDQUFDO1FBRU8saUJBQVksR0FBRyxNQUFNLENBSTVCO1lBQ0QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsT0FBTyxFQUFFLHdDQUF3QztTQUN4RCxDQUFDLENBQUM7UUFFSCxvQkFBZSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7WUFDcEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBRW5CLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxLQUFLLGFBQWEsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPO2dCQUNMLElBQUksRUFBRSxVQUFVO2dCQUNoQixNQUFNLEVBQUUsT0FBTztnQkFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtnQkFDakQsS0FBSyxFQUFFLE9BQU87YUFDZixDQUFDO1FBQ0osQ0FBQyxDQUFDO0tBdVhIO0lBeFpVLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFnQ0QsWUFBWSxDQUFDLFdBQStCO1FBQzFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFlO1FBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxlQUFlLENBQUMsSUFBOEI7UUFDNUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUV0QixpRUFBaUU7UUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMzRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsT0FBTyxFQUFFLDRDQUE0QztnQkFDckQsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixPQUFPLEVBQUUsSUFBSTtnQkFDYixlQUFlLEVBQUUsSUFBSTthQUN0QixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixDQUFDO2dCQUFTLENBQUM7WUFDVCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQTBCLEVBQUUsS0FBeUI7UUFDL0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQTBCLEVBQUUsS0FBeUI7UUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLE1BQU0sR0FBSSxLQUFLLENBQUMsTUFBYyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxNQUFNLE9BQU8sR0FBRyxlQUFlLEtBQUssQ0FBQyxFQUFFLE1BQU0sTUFBTSxPQUFPLENBQUM7WUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3hCLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUEwQjtRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUNyQyxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLE9BQU8sRUFBRSwrQ0FBK0M7WUFDeEQsS0FBSyxFQUFFLGdCQUFnQjtZQUN2QixJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsUUFBUTtvQkFDZCxLQUFLLEVBQUUsUUFBUTtvQkFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFO3dCQUN4QixDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDakIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO3dCQUM5QixDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7d0JBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsSUFBSSxDQUFDOzRCQUNILElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dDQUNmLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUNoRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQ0FDckIsT0FBTyxFQUFFLCtCQUErQjtvQ0FDeEMsS0FBSyxFQUFFLFNBQVM7b0NBQ2hCLFFBQVEsRUFBRSxlQUFlO29DQUN6QixXQUFXLEVBQUUsSUFBSTtvQ0FDakIsT0FBTyxFQUFFLElBQUk7b0NBQ2IsZUFBZSxFQUFFLElBQUk7aUNBQ3RCLENBQUMsQ0FBQztnQ0FDSCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO29DQUN4RSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQ0FDN0IsQ0FBQztnQ0FDRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7NEJBQ2pCLENBQUM7d0JBQ0gsQ0FBQzt3QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDOzRCQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dDQUNyQixPQUFPLEVBQUUsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtnQ0FDeEUsS0FBSyxFQUFFLFFBQVE7Z0NBQ2YsUUFBUSxFQUFFLGVBQWU7Z0NBQ3pCLFdBQVcsRUFBRSxJQUFJO2dDQUNqQixPQUFPLEVBQUUsSUFBSTtnQ0FDYixlQUFlLEVBQUUsSUFBSTs2QkFDdEIsQ0FBQyxDQUFDO3dCQUNMLENBQUM7b0JBQ0gsQ0FBQztpQkFDRjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsUUFBUTtvQkFDZCxLQUFLLEVBQUUsU0FBUztvQkFDaEIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ2IsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNqQixDQUFDO2lCQUNGO2FBQ0Y7WUFDRCxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUEwQixFQUFFLEtBQXdCO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3JDLElBQUksRUFBRSx1QkFBdUI7WUFDN0IsT0FBTyxFQUFFLDZDQUE2QztZQUN0RCxLQUFLLEVBQUUsY0FBYztZQUNyQixJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsUUFBUTtvQkFDZCxLQUFLLEVBQUUsUUFBUTtvQkFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFO3dCQUN4QixDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDakIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO3dCQUM5QixDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7d0JBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsSUFBSSxDQUFDOzRCQUNILElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dDQUNiLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0NBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29DQUNyQixPQUFPLEVBQUUsK0JBQStCO29DQUN4QyxLQUFLLEVBQUUsU0FBUztvQ0FDaEIsUUFBUSxFQUFFLGVBQWU7b0NBQ3pCLFdBQVcsRUFBRSxJQUFJO29DQUNqQixPQUFPLEVBQUUsSUFBSTtvQ0FDYixlQUFlLEVBQUUsSUFBSTtpQ0FDdEIsQ0FBQyxDQUFDO2dDQUNILE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzs0QkFDakIsQ0FBQzt3QkFDSCxDQUFDO3dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7NEJBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0NBQ3JCLE9BQU8sRUFBRSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsMkJBQTJCO2dDQUN4RSxLQUFLLEVBQUUsUUFBUTtnQ0FDZixRQUFRLEVBQUUsZUFBZTtnQ0FDekIsV0FBVyxFQUFFLElBQUk7Z0NBQ2pCLE9BQU8sRUFBRSxJQUFJO2dDQUNiLGVBQWUsRUFBRSxJQUFJOzZCQUN0QixDQUFDLENBQUM7d0JBQ0wsQ0FBQztvQkFDSCxDQUFDO2lCQUNGO2dCQUNEO29CQUNFLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxTQUFTO29CQUNoQixTQUFTLEVBQUUsSUFBSTtvQkFDZixPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDYixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7aUJBQ0Y7YUFDRjtZQUNELFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQTBCLEVBQUUsS0FBeUI7UUFDcEUsSUFBSSxDQUFDO1lBQ0gsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzVDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNmLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2xDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvQyx3REFBd0Q7WUFDeEQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLE9BQWdCO1FBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDcEMsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUMvQixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ25ELEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBTzs0QkFDbEIsQ0FBQyxDQUFDO2dDQUNFLEdBQUcsS0FBSztnQ0FDUixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTztnQ0FDdkIsY0FBYyxFQUNaLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLGNBQWMsS0FBSyxTQUFTO29DQUNqRCxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDO29DQUMxQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7NkJBQ3RDOzRCQUNILENBQUMsQ0FBQyxLQUFLLENBQ1YsQ0FBQzt3QkFFRixPQUFPOzRCQUNMLEdBQUcsT0FBTzs0QkFDVixPQUFPLEVBQUUsY0FBYzt5QkFDeEIsQ0FBQztvQkFDSixDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTzs0QkFDTCxHQUFHLE9BQU87NEJBQ1YsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU87NEJBQ3pCLGNBQWMsRUFDWixPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEtBQUssU0FBUztnQ0FDckQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsQ0FBQztnQ0FDNUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO3lCQUN4QyxDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFNBQWlCLEVBQUUsT0FBZ0I7UUFDM0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQ3BDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxPQUFPLENBQUMsRUFBRSxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2hELE9BQU87d0JBQ0wsR0FBRyxPQUFPO3dCQUNWLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUM7cUJBQ2pFLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTix5QkFBeUI7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyRyxDQUFDO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBcUIsS0FBSztRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLElBQUksWUFBWSxDQUFDO1FBQ2pCLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxNQUFNLFdBQVcsR0FBa0I7Z0JBQ2pDLE1BQU0sRUFBRSxJQUFJO2dCQUNaLElBQUksRUFBRSxJQUFJO2dCQUNWLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixXQUFXLEVBQUUsSUFBSTtnQkFDakIsb0JBQW9CLEVBQUUsS0FBSzthQUM1QixDQUFDO1lBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMvRSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQzFDLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxPQUFPLEdBQUc7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO3dCQUM5QixXQUFXLEVBQUUsTUFBZTtxQkFDN0I7aUJBQ0YsQ0FBQztnQkFFRixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLE9BQU8sR0FBRztvQkFDZCxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUM5QixXQUFXLEVBQUUsTUFBZTtvQkFDNUIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSTtpQkFDL0MsQ0FBQztnQkFFRixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUVELGdFQUFnRTtZQUNoRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVsQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixRQUFRLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUUvRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsT0FBTyxFQUFFLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw2Q0FBNkM7Z0JBQzFGLEtBQUssRUFBRSxRQUFRO2dCQUNmLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixXQUFXLEVBQUUsSUFBSTtnQkFDakIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsZUFBZSxFQUFFLElBQUk7YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0YsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ1AsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzNELE1BQU0sT0FBTyxHQUFHLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFnQixDQUFDO2dCQUNsRSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO29CQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7b0JBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLDJCQUEyQixDQUFDO29CQUN2RCxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyx3REFBd0QsQ0FBQztvQkFDcEYsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxNQUFNLElBQUksa0JBQWtCLENBQUM7b0JBQzFELENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDWCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBc0I7UUFDckMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDOzhHQTdiVSw2QkFBNkI7a0dBQTdCLDZCQUE2Qiw2VENyRTFDLHl0YUEwT0EsdU9EdE1JLDJCQUEyQiw4SEFDM0IsY0FBYyw2S0FDZCxvQkFBb0IsOEJBQ3BCLGdCQUFnQixrSUFDaEIsZUFBZSw4dEJBQ2YsY0FBYyxvdUJBQ2QsYUFBYSxvTkFDYixlQUFlLDhLQUNmLGdCQUFnQixxUUFDaEIsaUJBQWlCLHNWQUNqQixlQUFlLDhrQkFDZixlQUFlLDJHQUVmLHNCQUFzQiw2U0FDdEIsa0JBQWtCLDBCQUNsQixTQUFTLDZDQUNULFlBQVksb2NBQ1osV0FBVyxnV0FDWCxjQUFjOzsyRkFlTCw2QkFBNkI7a0JBckN6QyxTQUFTOytCQUVFLHlCQUF5QixXQUMxQjt3QkFDUCwyQkFBMkI7d0JBQzNCLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixTQUFTO3dCQUNULFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxjQUFjO3FCQUNmLG1CQVlnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50LCBBWFd5c2l3eWdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvd3lzaXd5Zyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBPbkluaXQsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYU3R5bGVMb29rVHlwZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYUG9wdXBDb25maWcsIEFYUG9wdXBTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcHVwJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhQUXVlcnlSZXF1ZXN0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQVhNQ29tbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb21tZW50L2NvbW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1Db21tZW50TWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1lbnQvY29tbWVudC50eXBlJztcblxuaW1wb3J0IHsgQVhBdmF0YXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWENvbW1lbnRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbWVudCc7XG5pbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb252ZXJzYXRpb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvaW1hZ2UnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFRvb2xCYXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQVhQTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWE1Db21tZW50TG9va3VwUG9wdXAgfSBmcm9tICcuLi8uLi8uLi9jb21tZW50L2NvbW1lbnQtbG9va3VwLXBvcHVwLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC13aWRnZXQtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHNlbGVjdG9yOiAnYXhtLWNvbW1lbnQtd2lkZ2V0LXZpZXcnLFxuICBpbXBvcnRzOiBbXG4gICAgQVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIEFYQXZhdGFyTW9kdWxlLFxuICAgIEFYQ29udmVyc2F0aW9uTW9kdWxlLFxuICAgIEFYU2tlbGV0b25Nb2R1bGUsXG4gICAgQVhDb21tZW50TW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYSW1hZ2VNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYRHJvcGRvd25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhXeXNpd3lnTW9kdWxlLFxuICAgIEFYVG9vbEJhck1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhWYWxpZGF0aW9uTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQVhGb3JtYXRNb2R1bGUsXG4gIF0sXG4gIHN0eWxlczogYFxuICAgIGF4LXd5c2l3eWctY29udGFpbmVyIHtcbiAgICAgIC5heC1lZGl0b3ItY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLmF4LWVycm9yLW1lc3NhZ2Uge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICAgIH1cbiAgICB9XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Db21tZW50V2lkZ2V0Vmlld0NvbXBvbmVudCBleHRlbmRzIEFYUExheW91dFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBoYXNDb29sZG93biA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBjb21tZW50Q29udGVudCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICBwcm90ZWN0ZWQgaXNTdWJtaXR0aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzUmVwbHlpbmdNb2RlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzRWRpdGluZ01vZGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gIHByb3RlY3RlZCBmYWlsZWRJbWFnZUlkcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICBwcm90ZWN0ZWQgYWN0aXZlUmVwbHlDb21tZW50ID0gc2lnbmFsPHVuZGVmaW5lZCB8IEFYTUNvbW1lbnRNZXNzYWdlPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgYWN0aXZlRWRpdENvbW1lbnQgPSBzaWduYWw8dW5kZWZpbmVkIHwgQVhNQ29tbWVudE1lc3NhZ2U+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCB3eXNpd3lnRWRpdG9yID0gdmlld0NoaWxkLnJlcXVpcmVkPEFYV3lzaXd5Z0NvbnRhaW5lckNvbXBvbmVudD4oJ3cnKTtcblxuICBwcml2YXRlIGNvbW1lbnRTZXJ2aWNlID0gaW5qZWN0KEFYTUNvbW1lbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybSA9IGluamVjdChBWFBsYXRmb3JtKTtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0U2VydmljZSA9IGluamVjdChBWFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICBzYW5pdGl6ZSA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuXG4gIHByaXZhdGUgZ2V0UGF5bG9hZCA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICAoe1xuICAgICAgICBwYXJhbXM6IHRoaXMucGF5bG9hZCgpLFxuICAgICAgICBza2lwOiAwLFxuICAgICAgICB0YWtlOiAxMCxcbiAgICAgIH0pIGFzIEFYUFF1ZXJ5UmVxdWVzdCxcbiAgKTtcbiAgcGF5bG9hZCA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgcm9vbVR5cGU6ICdkZWZhdWx0JyxcbiAgICBlbnRpdHlJZDogdGhpcy5vcHRpb25zKCkuZW50aXR5SWQsXG4gICAgaW5zdGFuY2VJZDogdGhpcy5vcHRpb25zKCkuaW5zdGFuY2VJZCxcbiAgfSkpO1xuXG4gIHByb3RlY3RlZCBjb21tZW50cyA9IHNpZ25hbDxBWE1Db21tZW50TWVzc2FnZVtdPihbXSk7XG4gIHByaXZhdGUgd3lzaXd5ZyA9IHZpZXdDaGlsZDxBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQ+KCd3Jyk7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmxvYWRDb21tZW50cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHd5c2l3eWdPcHRpb25zID0gc2lnbmFsPHtcbiAgICBsb29rOiBBWFN0eWxlTG9va1R5cGU7XG4gIH0+KHtcbiAgICBsb29rOiAnc29saWQnLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgYXZhdGFyQ29uZmlnID0gc2lnbmFsPHtcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIGxvb2s6ICdzaGFycCcgfCAnc29mdCcgfCAncm91bmRlZCc7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9Pih7XG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBsb29rOiAncm91bmRlZCcsXG4gICAgdHlwZTogJ3NvbGlkJywgLy8gJ2ltYWdlJyB8ICd0ZXh0JyB8ICdpY29uJyB8ICdkZWZhdWx0J1xuICB9KTtcblxuICB2YWxpZGF0ZUNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuXG4gICAgaWYgKCFjb250ZW50IHx8IGNvbnRlbnQgPT09ICc8cD48YnI+PC9wPicpIHtcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bGU6ICdjYWxsYmFjaycsXG4gICAgICByZXN1bHQ6IGlzVmFsaWQsXG4gICAgICBtZXNzYWdlOiBpc1ZhbGlkID8gJycgOiAnUGxlYXNlIGZpbGwgdGhlIGNvbnRlbnQnLFxuICAgICAgdmFsdWU6IGNvbnRlbnQsXG4gICAgfTtcbiAgfTtcblxuICBzYW5pdGl6ZUh0bWwoaHRtbENvbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghaHRtbENvbnRlbnQpIHJldHVybiB0aGlzLnNhbml0aXplLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKCcnKTtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sQ29udGVudCk7XG4gIH1cblxuICBoYW5kbGVJbWFnZUVycm9yKGltYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmFpbGVkSW1hZ2VJZHMudXBkYXRlKChpZHMpID0+IFsuLi5pZHMsIGltYWdlSWRdKTtcbiAgfVxuXG4gIGNoZWNrSW1hZ2VFeGlzdHMoaW1hZ2VJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmZhaWxlZEltYWdlSWRzKCkuaW5jbHVkZXMoaW1hZ2VJZCk7XG4gIH1cblxuICBleHRyYWN0SW5pdGlhbHMobmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7XG5cbiAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgbmFtZSBpcyBhbiBvYmplY3Qgd2l0aCBmdWxsTmFtZSBwcm9wZXJ0eVxuICAgIGNvbnN0IG5hbWVTdHIgPSB0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcgJiYgbmFtZS5mdWxsTmFtZSA/IG5hbWUuZnVsbE5hbWUgOiBTdHJpbmcobmFtZSk7XG5cbiAgICBjb25zdCB3b3JkcyA9IG5hbWVTdHIuc3BsaXQoJyAnKTtcbiAgICBjb25zdCBpbml0aWFscyA9IHdvcmRzLm1hcCgod29yZDogc3RyaW5nKSA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKTtcbiAgICByZXR1cm4gaW5pdGlhbHMuam9pbignJyk7XG4gIH1cblxuICBhc3luYyBsb2FkQ29tbWVudHMoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UucXVlcnkodGhpcy5nZXRQYXlsb2FkKCkpO1xuICAgICAgdGhpcy5jb21tZW50cy5zZXQocmVzcG9uc2UuaXRlbXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBjb21tZW50czonLCBlcnJvcik7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29udGVudDogJ0ZhaWxlZCB0byBsb2FkIGNvbW1lbnRzLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21tZW50cy5zZXQoW10pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sIDI1MCk7XG4gICAgfVxuICB9XG5cbiAgZWRpdE1lc3NhZ2UoY29tbWVudDogQVhNQ29tbWVudE1lc3NhZ2UsIHJlcGx5PzogQVhNQ29tbWVudE1lc3NhZ2UpIHtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZUVkaXRDb21tZW50LnNldChjb21tZW50KTtcbiAgICBjb25zdCBjb250ZW50VG9FZGl0ID0gcmVwbHkgPyByZXBseS5tZXNzYWdlPy5jb250ZW50IDogY29tbWVudC5tZXNzYWdlPy5jb250ZW50O1xuICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KGNvbnRlbnRUb0VkaXQgfHwgJycpO1xuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgcmVwbHlNZXNzYWdlKGNvbW1lbnQ6IEFYTUNvbW1lbnRNZXNzYWdlLCByZXBseT86IEFYTUNvbW1lbnRNZXNzYWdlKSB7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldCh0cnVlKTtcbiAgICB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudC5zZXQoY29tbWVudCk7XG4gICAgaWYgKHJlcGx5KSB7XG4gICAgICBjb25zdCBhdXRob3IgPSAocmVwbHkuYXV0aG9yIGFzIGFueSkuZnVsbE5hbWUgfHwgcmVwbHkuYXV0aG9yLmlkO1xuICAgICAgY29uc3QgbWVudGlvbiA9IGA8YSBkYXRhLWlkPVwiJHtyZXBseS5pZH1cIj5AJHthdXRob3J9PC9hPiBgO1xuICAgICAgdGhpcy5jb21tZW50Q29udGVudC5zZXQobWVudGlvbik7XG4gICAgICB0aGlzLnd5c2l3eWcoKT8uZm9jdXMoKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9IG1lbnRpb247XG4gICAgfVxuICAgIHRoaXMud3lzaXd5Z0VkaXRvcigpLmdldEhvc3RFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQ29tbWVudChjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSkge1xuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHtcbiAgICAgIGljb246ICdmYS1yZWd1bGFyIGZhLXdhcm5pbmcnLFxuICAgICAgY29udGVudDogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBjb21tZW50PycsXG4gICAgICB0aXRsZTogJ0RlbGV0ZSBDb21tZW50JyxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdEZWxldGUnLFxuICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICBvbkNsaWNrOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICBlLmhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgZS5zb3VyY2UudGV4dCA9ICdEZWxldGluZy4uLic7XG4gICAgICAgICAgICBlLnNvdXJjZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICBlLnNvdXJjZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmIChjb21tZW50LmlkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVPbmUoY29tbWVudC5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdDb21tZW50IGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LicsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmdNb2RlKCkgJiYgdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpPy5pZCA9PT0gY29tbWVudC5pZCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldFJlcGx5RWRpdFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gZXJyb3IgOiAnRmFpbGVkIHRvIGRlbGV0ZSBjb21tZW50IScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJyxcbiAgICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgIGF1dG9mb2N1czogdHJ1ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVSZXBseShjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSwgcmVwbHk6IEFYTUNvbW1lbnRNZXNzYWdlKSB7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oe1xuICAgICAgaWNvbjogJ2ZhLXJlZ3VsYXIgZmEtd2FybmluZycsXG4gICAgICBjb250ZW50OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJlcGx5PycsXG4gICAgICB0aXRsZTogJ0RlbGV0ZSBSZXBseScsXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgb25DbGljazogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgZS5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGUuc291cmNlLnRleHQgPSAnRGVsZXRpbmcuLi4nO1xuICAgICAgICAgICAgZS5zb3VyY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgZS5zb3VyY2UubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAocmVwbHkuaWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZU9uZShyZXBseS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlQnlJZChjb21tZW50LmlkLCByZXBseS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAnQ29tbWVudCBkZWxldGVkIHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBlcnJvciA6ICdGYWlsZWQgdG8gZGVsZXRlIGNvbW1lbnQhJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICAgICAgICAgIHRpbWVPdXRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgICAgYXV0b2ZvY3VzOiB0cnVlLFxuICAgICAgICAgIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGNsb3NlQnV0dG9uOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0UmVwbHlFZGl0U3RhdGUoKSB7XG4gICAgdGhpcy5pc0VkaXRpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmlzUmVwbHlpbmdNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jb21tZW50Q29udGVudC5zZXQoJycpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9ICcnO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlTGlrZShjb21tZW50OiBBWE1Db21tZW50TWVzc2FnZSwgcmVwbHk/OiBBWE1Db21tZW50TWVzc2FnZSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAocmVwbHkpIHtcbiAgICAgICAgaWYgKHJlcGx5LmlkKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQsIHJlcGx5LmlkKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmxpa2UocmVwbHkuaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY29tbWVudC5pZCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlTGlrZVN0YXR1cyhjb21tZW50LmlkKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmxpa2UoY29tbWVudC5pZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHRvZ2dsZSBsaWtlOicsIGVycm9yKTtcbiAgICAgIC8vIFJldmVydCB0aGUgb3B0aW1pc3RpYyB1cGRhdGUgaWYgdGhlIHNlcnZlciBjYWxsIGZhaWxzXG4gICAgICBpZiAocmVwbHkgJiYgcmVwbHkuaWQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnQuaWQsIHJlcGx5LmlkKTtcbiAgICAgIH0gZWxzZSBpZiAoY29tbWVudC5pZCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUxpa2VTdGF0dXMoY29tbWVudC5pZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVMaWtlU3RhdHVzKGNvbW1lbnRJZDogc3RyaW5nLCByZXBseUlkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT4ge1xuICAgICAgcmV0dXJuIGNvbW1lbnRzTGlzdC5tYXAoKGNvbW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGNvbW1lbnQuaWQgPT09IGNvbW1lbnRJZCkge1xuICAgICAgICAgIGlmIChyZXBseUlkICYmIGNvbW1lbnQucmVwbGllcykge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFJlcGxpZXMgPSBjb21tZW50LnJlcGxpZXMubWFwKChyZXBseSkgPT5cbiAgICAgICAgICAgICAgcmVwbHkuaWQgPT09IHJlcGx5SWRcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVwbHksXG4gICAgICAgICAgICAgICAgICAgIGlzTGlrZWQ6ICFyZXBseS5pc0xpa2VkLFxuICAgICAgICAgICAgICAgICAgICByZWFjdGlvbnNDb3VudDpcbiAgICAgICAgICAgICAgICAgICAgICByZXBseS5pc0xpa2VkICYmIHJlcGx5LnJlYWN0aW9uc0NvdW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVwbHkucmVhY3Rpb25zQ291bnQgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChyZXBseS5yZWFjdGlvbnNDb3VudCB8fCAwKSArIDEsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiByZXBseSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNvbW1lbnQsXG4gICAgICAgICAgICAgIHJlcGxpZXM6IHVwZGF0ZWRSZXBsaWVzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY29tbWVudCxcbiAgICAgICAgICAgICAgaXNMaWtlZDogIWNvbW1lbnQuaXNMaWtlZCxcbiAgICAgICAgICAgICAgcmVhY3Rpb25zQ291bnQ6XG4gICAgICAgICAgICAgICAgY29tbWVudC5pc0xpa2VkICYmIGNvbW1lbnQucmVhY3Rpb25zQ291bnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgPyBjb21tZW50LnJlYWN0aW9uc0NvdW50IC0gMVxuICAgICAgICAgICAgICAgICAgOiAoY29tbWVudC5yZWFjdGlvbnNDb3VudCB8fCAwKSArIDEsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tbWVudDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNZXNzYWdlQnlJZChjb21tZW50SWQ6IHN0cmluZywgcmVwbHlJZD86IHN0cmluZykge1xuICAgIGlmIChyZXBseUlkKSB7XG4gICAgICAvLyBSZW1vdmUgYSByZXBseSBmcm9tIGEgY29tbWVudFxuICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT5cbiAgICAgICAgY29tbWVudHNMaXN0Lm1hcCgoY29tbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChjb21tZW50LmlkID09PSBjb21tZW50SWQgJiYgY29tbWVudC5yZXBsaWVzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jb21tZW50LFxuICAgICAgICAgICAgICByZXBsaWVzOiBjb21tZW50LnJlcGxpZXMuZmlsdGVyKChyZXBseSkgPT4gcmVwbHkuaWQgIT09IHJlcGx5SWQpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbW1lbnQ7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVtb3ZlIGEgd2hvbGUgY29tbWVudFxuICAgICAgdGhpcy5jb21tZW50cy51cGRhdGUoKGNvbW1lbnRzTGlzdCkgPT4gY29tbWVudHNMaXN0LmZpbHRlcigoY29tbWVudCkgPT4gY29tbWVudC5pZCAhPT0gY29tbWVudElkKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHN1Ym1pdENvbW1lbnQoaXNQcml2YXRlOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVDb250ZW50KHRoaXMuY29tbWVudENvbnRlbnQoKSkucmVzdWx0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuXG4gICAgbGV0IG1lbWJlckxvb2t1cDtcbiAgICBpZiAoaXNQcml2YXRlKSB7XG4gICAgICBjb25zdCBwb3B1cENvbmZpZzogQVhQb3B1cENvbmZpZyA9IHtcbiAgICAgICAgaGVhZGVyOiB0cnVlLFxuICAgICAgICBzaXplOiAnbWQnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IGZhbHNlLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHBvcHVwID0gYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3BlbihBWE1Db21tZW50TG9va3VwUG9wdXAsIHBvcHVwQ29uZmlnKTtcbiAgICAgIG1lbWJlckxvb2t1cCA9IHBvcHVwLmRhdGE/LmRhdGE/Lmxvb2t1cDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nTW9kZSgpICYmIHRoaXMuYWN0aXZlRWRpdENvbW1lbnQoKT8uaWQpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNvbW1lbnRDb250ZW50KCksXG4gICAgICAgICAgICBjb250ZW50VHlwZTogJ3RleHQnIGFzIGNvbnN0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51cGRhdGVPbmUodGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpIS5pZCwgcGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFzQ29vbGRvd24uc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmlzRWRpdGluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVFZGl0Q29tbWVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgLi4udGhpcy5wYXlsb2FkKCksXG4gICAgICAgICAgY29udGVudDogdGhpcy5jb21tZW50Q29udGVudCgpLFxuICAgICAgICAgIGNvbnRlbnRUeXBlOiAndGV4dCcgYXMgY29uc3QsXG4gICAgICAgICAgaXNQcml2YXRlOiBpc1ByaXZhdGUsXG4gICAgICAgICAgcmVwbHlJZDogdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQoKT8uaWQgPz8gbnVsbCxcbiAgICAgICAgfTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmluc2VydE9uZShwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5oYXNDb29sZG93bi5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNSZXBseWluZ01vZGUuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVSZXBseUNvbW1lbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbG9hZCBjb21tZW50cyB0byBnZXQgdGhlIHVwZGF0ZWQgbGlzdCB3aXRoIHByb3BlciBoaWVyYXJjaHlcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5xdWVyeSh0aGlzLmdldFBheWxvYWQoKSk7XG4gICAgICB0aGlzLmNvbW1lbnRzLnNldChyZXNwb25zZS5pdGVtcyk7XG5cbiAgICAgIHRoaXMuY29tbWVudENvbnRlbnQuc2V0KCcnKTtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3FsLWVkaXRvcicpWzBdLmlubmVySFRNTCA9ICcnO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5oYXNDb29sZG93bi5zZXQoZmFsc2UpO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgY29tbWVudDonLCBlcnJvcik7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29udGVudDogdHlwZW9mIGVycm9yID09PSAnc3RyaW5nJyA/IGVycm9yIDogJ0ZhaWxlZCB0byBzdWJtaXQgY29tbWVudC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgIGxvY2F0aW9uOiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICB0aW1lT3V0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxNYWluKCkge1xuICAgIGNvbnN0IGNvbW1lbnQgPSB0aGlzLmlzUmVwbHlpbmdNb2RlKCkgPyB0aGlzLmFjdGl2ZVJlcGx5Q29tbWVudCgpIDogdGhpcy5hY3RpdmVFZGl0Q29tbWVudCgpO1xuICAgIGlmIChjb21tZW50ICYmIGNvbW1lbnQuaWQpIHtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29tbWVudC5pZCk7XG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGVsPy5maXJzdEVsZW1lbnRDaGlsZD8uY2hpbGRyZW5bMV0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgY29uc3QgcHJldkJnID0gY29udGVudC5zdHlsZS5iYWNrZ3JvdW5kO1xuICAgICAgICAgIGNvbnRlbnQuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzAuMjVyZW0nO1xuICAgICAgICAgIGNvbnRlbnQuc3R5bGUudHJhbnNpdGlvbiA9ICdiYWNrZ3JvdW5kIDFzIGVhc2UtaW4tb3V0JztcbiAgICAgICAgICBjb250ZW50LnN0eWxlLmJhY2tncm91bmQgPSBgcmdiYSh2YXIoLS1heC1jb2xvci1vbi1zdXJmYWNlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpYDtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZCA9IHByZXZCZyB8fCAncmdiYSgwLCAwLCAwLCAwKSc7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYWxjRGVmcmVuZXRUaW1lKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZGF0ZSA/IERhdGUubm93KCkgLSBkYXRlLmdldFRpbWUoKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LW10LTIgYXgtcC0yXCI+XG4gIDxheC1jb21tZW50LWNvbnRhaW5lcj5cbiAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtcHktMTIgYXgtYmctbGlnaHRlc3QgYXgtcHgtNVwiPlxuICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC1taW4tdy0xNiBheC1oLTE2IGF4LXJvdW5kZWQtZnVsbCBheC1tZS00XCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdy1mdWxsXCI+XG4gICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtNiBheC1yb3VuZGVkXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0yIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWgtMiBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctOC8xMiBheC1oLTIgYXgtcm91bmRlZC1mdWxsXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIGlmICghaXNMb2FkaW5nKCkgJiYgY29tbWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICA8YXgtY29tbWVudC12aWV3IGNsYXNzPVwiYXgtYmctbGlnaHRlc3RcIj5cbiAgICAgICAgQGZvciAoY29tbWVudCBvZiBjb21tZW50cygpOyB0cmFjayBjb21tZW50LmlkKSB7XG4gICAgICAgICAgPGF4LWNvbW1lbnQtaXRlbSBbaWRdPVwiY29tbWVudC5pZCFcIiBbcmVwbHlDb3VudF09XCJjb21tZW50LnJlcGxpZXM/Lmxlbmd0aCA/PyAwXCI+XG4gICAgICAgICAgICA8YXgtYXZhdGFyIFtjb2xvcl09XCJhdmF0YXJDb25maWcoKS5jb2xvclwiIFtzaGFwZV09XCJhdmF0YXJDb25maWcoKS5sb29rXCI+XG4gICAgICAgICAgICAgIEBpZiAoY2hlY2tJbWFnZUV4aXN0cyhjb21tZW50LmlkISkgJiYgY29tbWVudC5hdXRob3IgJiYgZXh0cmFjdEluaXRpYWxzKGNvbW1lbnQuYXV0aG9yKSAhPT0gJz8nKSB7XG4gICAgICAgICAgICAgICAgPGF4LWltYWdlIChvbkVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoY29tbWVudC5pZCEpXCIgW3NyY109XCInJ1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIDwvYXgtaW1hZ2U+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxheC10ZXh0PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LWJhc2UgYXgtb3ZlcmZsb3ctaGlkZGVuXCI+e3sgZXh0cmFjdEluaXRpYWxzKGNvbW1lbnQuYXV0aG9yKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXgtYXZhdGFyPlxuICAgICAgICAgICAgPGF4LXRpdGxlPnt7IGV4dHJhY3RJbml0aWFscyhjb21tZW50LmF1dGhvcikgfX08L2F4LXRpdGxlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtZGF0ZT57eyBjYWxjRGVmcmVuZXRUaW1lKGNvbW1lbnQuY3JlYXRlZEF0KSB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19IDwvYXgtY29tbWVudC1kYXRlPlxuICAgICAgICAgICAgPGF4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cIm5ldXRyYWxcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tbW9yZS1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkVkaXRcIiBjb2xvcj1cIm5ldXRyYWxcIiAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoY29tbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtZWRpdFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuXG4gICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gdGV4dD1cIkRlbGV0ZVwiIGNvbG9yPVwiZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZUNvbW1lbnQoY29tbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgPC9heC1jb21tZW50LW1lbnUtb3B0aW9ucz5cbiAgICAgICAgICAgIDxheC1jb250ZW50IFtpbm5lckhUTUxdPVwic2FuaXRpemVIdG1sKGNvbW1lbnQubWVzc2FnZS5jb250ZW50KVwiPjwvYXgtY29udGVudD5cbiAgICAgICAgICAgIDxheC1jb21tZW50LWxpa2UgKGNsaWNrKT1cInRvZ2dsZUxpa2UoY29tbWVudClcIiBbbGlrZWRdPVwiY29tbWVudC5pc0xpa2VkIVwiPlxuICAgICAgICAgICAgICB7eyBjb21tZW50LnJlYWN0aW9uc0NvdW50IH19XG4gICAgICAgICAgICA8L2F4LWNvbW1lbnQtbGlrZT5cbiAgICAgICAgICAgIDxheC1jb21tZW50LXJlcGx5LXRleHQgKGNsaWNrKT1cInJlcGx5TWVzc2FnZShjb21tZW50KVwiPjwvYXgtY29tbWVudC1yZXBseS10ZXh0PlxuICAgICAgICAgICAgQGZvciAocmVwbHkgb2YgY29tbWVudC5yZXBsaWVzOyB0cmFjayByZXBseS5pZCkge1xuICAgICAgICAgICAgICA8YXgtY29tbWVudC1pdGVtIFtpZF09XCJyZXBseS5pZFwiPlxuICAgICAgICAgICAgICAgIDxheC1hdmF0YXIgW2NvbG9yXT1cImF2YXRhckNvbmZpZygpLmNvbG9yXCIgW3NoYXBlXT1cImF2YXRhckNvbmZpZygpLmxvb2tcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocmVwbHkgJiYgY2hlY2tJbWFnZUV4aXN0cyhyZXBseS5pZCEpICYmIHJlcGx5LmF1dGhvciAmJiBleHRyYWN0SW5pdGlhbHMocmVwbHkuYXV0aG9yKSAhPT0gJz8nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC1pbWFnZSAob25FcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKHJlcGx5LmlkISlcIiBbc3JjXT1cIicnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWltYWdlPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1iYXNlIGF4LW92ZXJmbG93LWhpZGRlblwiPnt7IGV4dHJhY3RJbml0aWFscyhyZXBseS5hdXRob3IpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXRleHQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9heC1hdmF0YXI+XG4gICAgICAgICAgICAgICAgPGF4LXRpdGxlPnt7IGV4dHJhY3RJbml0aWFscyhyZXBseS5hdXRob3IpIH19PC9heC10aXRsZT5cbiAgICAgICAgICAgICAgICA8YXgtY29tbWVudC1kYXRlPnt7IGNhbGNEZWZyZW5ldFRpbWUocmVwbHkuY3JlYXRlZEF0KSB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19IDwvYXgtY29tbWVudC1kYXRlPlxuICAgICAgICAgICAgICAgIDxheC1jb21tZW50LW1lbnUtb3B0aW9ucz5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIGxvb2s9XCJibGFua1wiIGNvbG9yPVwibmV1dHJhbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tbW9yZS1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJFZGl0XCIgY29sb3I9XCJuZXV0cmFsXCIgKGNsaWNrKT1cImVkaXRNZXNzYWdlKGNvbW1lbnQsIHJlcGx5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWVkaXRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiRGVsZXRlXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiZGVsZXRlUmVwbHkoY29tbWVudCwgcmVwbHkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgICA8L2F4LWNvbW1lbnQtbWVudS1vcHRpb25zPlxuICAgICAgICAgICAgICAgIDxheC1jb250ZW50IFtpbm5lckhUTUxdPVwic2FuaXRpemVIdG1sKHJlcGx5Lm1lc3NhZ2UuY29udGVudClcIj48L2F4LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSAoY2xpY2spPVwidG9nZ2xlTGlrZShjb21tZW50LCByZXBseSlcIiBbbGlrZWRdPVwicmVwbHkuaXNMaWtlZCFcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHJlcGx5LnJlYWN0aW9uc0NvdW50IH19XG4gICAgICAgICAgICAgICAgPC9heC1jb21tZW50LWxpa2U+XG4gICAgICAgICAgICAgICAgPGF4LWNvbW1lbnQtcmVwbHktdGV4dCAoY2xpY2spPVwicmVwbHlNZXNzYWdlKGNvbW1lbnQsIHJlcGx5KVwiPjwvYXgtY29tbWVudC1yZXBseS10ZXh0PlxuICAgICAgICAgICAgICA8L2F4LWNvbW1lbnQtaXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWNvbW1lbnQtaXRlbT5cbiAgICAgICAgfVxuICAgICAgPC9heC1jb21tZW50LXZpZXc+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1qdXN0aWZ5LWNlbnRlciBheC1pdGVtcy1jZW50ZXIgYXgtcC0xMFwiPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtbXgtYXV0b1wiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIHdpZHRoPVwiMTU0XCJcbiAgICAgICAgICAgIGhlaWdodD1cIjE2MVwiXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE1NCAxNjFcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMC4wNjE2NDU1IDg0LjQyNjhDMC4wNjE2NDU1IDQyLjAyMTMgMzQuNDM1IDcuODM3NjUgNzYuNjUwNyA3LjgzNzY1QzExOC44MDMgNy44Mzc2NSAxNTMuMjI0IDQyLjAwNTUgMTUzLjIyNCA4NC40MjY4QzE1My4yMjQgMTAyLjQyIDE0Ny4wMjYgMTE4Ljk3NCAxMzYuNjIyIDEzMi4wMzRDMTIyLjI4MiAxNTAuMTM4IDEwMC4zNjcgMTYxIDc2LjY1MDcgMTYxQzUyLjc3NTkgMTYxIDMwLjk4ODIgMTUwLjA1OSAxNi42NjMzIDEzMi4wMzRDNi4yNTk2MSAxMTguOTc0IDAuMDYxNjQ1NSAxMDIuNDIgMC4wNjE2NDU1IDg0LjQyNjhaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiNFRUYyRkZcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNOTYuODE4OSAwLjYzMjQ5OEw5Ni44MTg5IDAuNjMyMzg0TDk2LjgwODMgMC42MzA5NTRDOTYuMjAzNCAwLjU0OTU4MSA5NS41OTMxIDAuNSA5NC45Nzg3IDAuNUgyOS4zMzhDMjIuNzExMiAwLjUgMTcuMzM5NCA1Ljg0NDU1IDE3LjMzOTQgMTIuNDQ3M1YxNDIuNzE1QzE3LjMzOTQgMTQ5LjMxOCAyMi43MTEyIDE1NC42NjIgMjkuMzM4IDE1NC42NjJIMTIzLjk0OEMxMzAuNTkxIDE1NC42NjIgMTM1Ljk0NiAxNDkuMzE3IDEzNS45NDYgMTQyLjcxNVYzOC45MzA5QzEzNS45NDYgMzguMDI0NCAxMzUuODQ3IDM3LjEzMzQgMTM1LjY0OCAzNi4yNTg2TDEzNS42NDggMzYuMjU4NEMxMzUuMTE3IDMzLjkzMDkgMTMzLjg3NCAzMS43Njg2IDEzMi4wNjYgMzAuMTMzM0MxMzIuMDY2IDMwLjEzMzEgMTMyLjA2NSAzMC4xMzI5IDEzMi4wNjUgMzAuMTMyN0wxMDMuMDY4IDMuNjUyMDNDMTAzLjA2OCAzLjY1MTkgMTAzLjA2NyAzLjY1MTc3IDEwMy4wNjcgMy42NTE2NEMxMDEuMzExIDIuMDM1MjYgOTkuMTM5NiAwLjk5NTU1MiA5Ni44MTg5IDAuNjMyNDk4WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiNFNUU3RUJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxlbGxpcHNlIGN4PVwiODAuMDYxOFwiIGN5PVwiODFcIiByeD1cIjI4LjAzNDJcIiByeT1cIjI4LjAzNDJcIiBmaWxsPVwiI0VFRjJGRlwiIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTk5LjIzOTMgNjEuMzA2MUw5OS4yMzkxIDYxLjMwNThDODguNDk4IDUwLjU4MDggNzEuMTA5MiA1MC41ODA0IDYwLjM4MzUgNjEuMzA2MUM0OS42NDIzIDcyLjAzMTYgNDkuNjQyMiA4OS40MzYxIDYwLjM4MzIgMTAwLjE2MkM3MS4xMDkgMTEwLjkwMyA4OC40OTgyIDExMC45MDMgOTkuMjM5MyAxMDAuMTYyQzEwOS45NjUgODkuNDM2MyAxMDkuOTY1IDcyLjAzMTcgOTkuMjM5MyA2MS4zMDYxWk0xMDUuODYzIDU0LjY4MzJDMTIwLjI0OSA2OS4wNjk1IDEyMC4yNDkgOTIuMzk4NSAxMDUuODYzIDEwNi43ODVDOTEuNDYwNSAxMjEuMTcxIDY4LjE0NjggMTIxLjE3MSA1My43NDQ2IDEwNi43ODVDMzkuMzU4MiA5Mi4zOTg3IDM5LjM1ODIgNjkuMDY5MyA1My43NDQ2IDU0LjY4M0M2OC4xNDY4IDQwLjI5NjUgOTEuNDYwNSA0MC4yOTY2IDEwNS44NjMgNTQuNjgzMlpcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjRTVFN0VCXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTExMC43ODIgMTE5LjI2N0wxMDIuMDE2IDExMC40OTJDMTA0Ljg4OCAxMDguMjY3IDEwNy40NzYgMTA1LjY1MSAxMDkuNTY0IDEwMi45NTVMMTE4LjMyOSAxMTEuNzI5TDExMC43ODIgMTE5LjI2N1pcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjRTVFN0VCXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTEzOS4xMjIgMTI1Ljc4MUwxMzkuMTIyIDEyNS43OEwxMjMuMzEzIDEwOS45ODhDMTIzLjMxMyAxMDkuOTg3IDEyMy4zMTMgMTA5Ljk4NyAxMjMuMzEyIDEwOS45ODZDMTIxLjk5NiAxMDguNjUzIDExOS44NDkgMTA4LjY1NyAxMTguNTIxIDEwOS45ODVMMTE4Ljg3MSAxMTAuMzM1TDExOC41MjEgMTA5Ljk4NUwxMDkuMDQ3IDExOS40NTlDMTA3LjczMSAxMjAuNzc1IDEwNy43MzUgMTIyLjkxOCAxMDkuMDQ0IDEyNC4yNDdMMTA5LjA0NyAxMjQuMjQ5TDEyNC44NTggMTQwLjA2QzEyOC43ODkgMTQzLjk5MiAxMzUuMTkxIDE0My45OTIgMTM5LjEyMiAxNDAuMDZDMTQzLjA2OSAxMzYuMTEzIDE0My4wNjkgMTI5LjcyOCAxMzkuMTIyIDEyNS43ODFaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiNBNUI0RkNcIlxuICAgICAgICAgICAgICBzdHJva2U9XCIjODE4Q0Y4XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTgzLjE4NSA4Ny4yMjg1QzgyLjUzODcgODcuMjI4NSA4Mi4wMDI3IDg2LjY5MjYgODIuMDAyNyA4Ni4wMzA1QzgyLjAwMjcgODMuMzgyMSA3Ny45OTg3IDgzLjM4MjEgNzcuOTk4NyA4Ni4wMzA1Qzc3Ljk5ODcgODYuNjkyNiA3Ny40NjI3IDg3LjIyODUgNzYuODAwNiA4Ny4yMjg1Qzc2LjE1NDMgODcuMjI4NSA3NS42MTgzIDg2LjY5MjYgNzUuNjE4MyA4Ni4wMzA1Qzc1LjYxODMgODAuMjI5NCA4NC4zODMxIDgwLjI0NTEgODQuMzgzMSA4Ni4wMzA1Qzg0LjM4MzEgODYuNjkyNiA4My44NDcxIDg3LjIyODUgODMuMTg1IDg3LjIyODVaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNOTMuMzUyOCA3Ny4wOTI2SDg4LjQwM0M4Ny43NDA5IDc3LjA5MjYgODcuMjA0OSA3Ni41NTY3IDg3LjIwNDkgNzUuODk0NkM4Ny4yMDQ5IDc1LjI0ODMgODcuNzQwOSA3NC43MTIzIDg4LjQwMyA3NC43MTIzSDkzLjM1MjhDOTQuMDE0OSA3NC43MTIzIDk0LjU1MDkgNzUuMjQ4MyA5NC41NTA5IDc1Ljg5NDZDOTQuNTUwOSA3Ni41NTY3IDk0LjAxNDkgNzcuMDkyNiA5My4zNTI4IDc3LjA5MjZaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNNzEuNTk4NyA3Ny4wOTI1SDY2LjY0ODhDNjUuOTg2NyA3Ny4wOTI1IDY1LjQ1MDcgNzYuNTU2NSA2NS40NTA3IDc1Ljg5NDVDNjUuNDUwNyA3NS4yNDgxIDY1Ljk4NjcgNzQuNzEyMiA2Ni42NDg4IDc0LjcxMjJINzEuNTk4N0M3Mi4yNDUgNzQuNzEyMiA3Mi43ODEgNzUuMjQ4MSA3Mi43ODEgNzUuODk0NUM3Mi43ODEgNzYuNTU2NSA3Mi4yNDUgNzcuMDkyNSA3MS41OTg3IDc3LjA5MjVaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM0RjQ2RTVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjIxLjUxMjhcIiB3aWR0aD1cIjQxLjAyNTZcIiBoZWlnaHQ9XCIyLjczNTA0XCIgcng9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjM4LjM1MjJcIiB5PVwiMTMzLjY1XCIgd2lkdGg9XCI1NC43MDA5XCIgaGVpZ2h0PVwiNS40NzAwOVwiIHJ4PVwiMi43MzUwNFwiIGZpbGw9XCIjQTVCNEZDXCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIzOC4zNTIyXCIgeT1cIjI5LjcxNzlcIiB3aWR0aD1cIjEzLjY3NTJcIiBoZWlnaHQ9XCIyLjczNTA0XCIgcng9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjU2LjEzXCIgY3k9XCIzMS4wODU0XCIgcj1cIjEuMzY3NTJcIiBmaWxsPVwiIzRGNDZFNVwiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNjEuNjAwMVwiIGN5PVwiMzEuMDg1NFwiIHI9XCIxLjM2NzUyXCIgZmlsbD1cIiM0RjQ2RTVcIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjY3LjA3MDJcIiBjeT1cIjMxLjA4NTRcIiByPVwiMS4zNjc1MlwiIGZpbGw9XCIjNEY0NkU1XCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtdGV4dC1uZXV0cmFsLTYwMCBheC1mb250LXNlbWlib2xkIGF4LWxlYWRpbmctbG9vc2UgYXgtcGItMlwiPlxuICAgICAgICAgICAgICBUaGVyZSBpcyBubyBDb21tZW50IVxuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvYXgtY29tbWVudC1jb250YWluZXI+XG4gIDxheC1mb3JtPlxuICAgIDxheC1mb3JtLWZpZWxkPlxuICAgICAgPGRpdj5cbiAgICAgICAgQGlmIChpc1JlcGx5aW5nTW9kZSgpIHx8IGlzRWRpdGluZ01vZGUoKSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtcm91bmRlZC1iLW5vbmUgYXgtYm9yZGVyIGF4LWJvcmRlci1iLTAgYXgtcm91bmRlZC1sZyBheC1iZy1vbi1zdXJmYWNlIGF4LXB4LTYgYXgtcHktMyBheC13LWZ1bGwgYXgtaXRlbXMtY2VudGVyIGF4LW92ZXJmbG93LWhpZGRlbiBheC10ZXh0LXNtIGF4LWxlYWRpbmctbm9uZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2Nyb2xsTWFpbigpXCIgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktc3RhcnQgYXgtaXRlbXMtY2VudGVyIGF4LWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImlzUmVwbHlpbmdNb2RlKCkgPyAnZmEtcmVwbHknIDogJ2ZhLXBlbidcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgYXgtdGV4dC1wcmltYXJ5LTUwMCBkYXJrOmF4LXRleHQtcHJpbWFyeS0zMDAgYXgtdGV4dC0yeGwgYXgtbWUtNFwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWFsaWduLW1pZGRsZSBheC1sZWFkaW5nLTQgYXgtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1wcmltYXJ5LTUwMCBkYXJrOmF4LXRleHQtcHJpbWFyeS0zMDBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGlzUmVwbHlpbmdNb2RlKCkgPyAnUmVwbHkgdG8gJyA6ICdFZGl0IE1lc3NhZ2UnIH19XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpc1JlcGx5aW5nTW9kZSgpID8gZXh0cmFjdEluaXRpYWxzKGFjdGl2ZVJlcGx5Q29tbWVudCgpPy5hdXRob3IpIDogJycgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICBpc1JlcGx5aW5nTW9kZSgpXG4gICAgICAgICAgICAgICAgICAgICAgPyBzYW5pdGl6ZUh0bWwoYWN0aXZlUmVwbHlDb21tZW50KCk/Lm1lc3NhZ2U/LmNvbnRlbnQgPz8gJycpXG4gICAgICAgICAgICAgICAgICAgICAgOiBzYW5pdGl6ZUh0bWwoYWN0aXZlRWRpdENvbW1lbnQoKT8ubWVzc2FnZT8uY29udGVudCA/PyAnJylcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj48aSAoY2xpY2spPVwicmVzZXRSZXBseUVkaXRTdGF0ZSgpXCIgY2xhc3M9XCJmYS1zb2xpZCBheC10ZXh0LTJ4bCBmYS14bWFyayBheC1jdXJzb3ItcG9pbnRlclwiPjwvaT48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8YXgtd3lzaXd5Zy1jb250YWluZXIgI3cgW2xvb2tdPVwid3lzaXd5Z09wdGlvbnMoKS5sb29rXCIgWyhuZ01vZGVsKV09XCJjb21tZW50Q29udGVudFwiPlxuICAgICAgICAgIDxheC13eXNpd3lnLXZpZXcgY2xhc3M9XCJheC1taW4taC0yOFwiPjwvYXgtd3lzaXd5Zy12aWV3PlxuICAgICAgICAgIDxheC10b29sYmFyPlxuICAgICAgICAgICAgPGF4LWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWhpc3Rvcnk+PC9heC13eXNpd3lnLWhpc3Rvcnk+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWZvbnQtc3R5bGU+PC9heC13eXNpd3lnLWZvbnQtc3R5bGU+XG4gICAgICAgICAgICAgIDxheC13eXNpd3lnLWNvbG9ycz48L2F4LXd5c2l3eWctY29sb3JzPlxuICAgICAgICAgICAgICA8YXgtd3lzaXd5Zy1saXN0PjwvYXgtd3lzaXd5Zy1saXN0PlxuICAgICAgICAgICAgICA8YXgtd3lzaXd5Zy1hbGlnbm1lbnQ+PC9heC13eXNpd3lnLWFsaWdubWVudD5cbiAgICAgICAgICAgIDwvYXgtY29udGVudD5cbiAgICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICAgIDxheC1kcm9wZG93bi1idXR0b25cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaGFzQ29vbGRvd24oKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBtb2RlPVwic3BsaXRcIlxuICAgICAgICAgICAgICAgIHRleHQ9XCJTZW5kXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJzdWJtaXRDb21tZW50KClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChpc1N1Ym1pdHRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSAoY2xpY2spPVwic3VibWl0Q29tbWVudCh0cnVlKVwiIHRleHQ9XCJTZW5kIFByaXZhdGUgLi4uXCIgbmFtZT1cInByaXZhdGVcIiBkYXRhPVwicHJpdmF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1yZWd1bGFyIGZhLXVzZXItc2VjcmV0XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgICAgIDwvYXgtdG9vbGJhcj5cbiAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHJ1bGU9XCJjYWxsYmFja1wiIFtvcHRpb25zXT1cInsgdmFsaWRhdGU6IHZhbGlkYXRlQ29udGVudCB9XCI+PC9heC12YWxpZGF0aW9uLXJ1bGU+XG4gICAgICAgIDwvYXgtd3lzaXd5Zy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LWZvcm0tZmllbGQ+XG4gIDwvYXgtZm9ybT5cbjwvZGl2PlxuIl19","import { AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nexport const AXPCommentWidget = {\n name: 'comment',\n title: 'Comments',\n description: 'Display and manage comments for entities',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.FormElement],\n icon: 'fa-solid fa-comments',\n properties: [],\n components: {\n view: {\n component: () => import('./comment-widget-view.component').then((c) => c.AXMCommentWidgetViewComponent),\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC13aWRnZXQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvbGliL2ZlYXR1cmVzL3dpZGdldC9zaGFyZS9jb21tZW50L2NvbW1lbnQtd2lkZ2V0LmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdEYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQW9CO0lBQy9DLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFVBQVU7SUFDakIsV0FBVyxFQUFFLDBDQUEwQztJQUN2RCxJQUFJLEVBQUUsTUFBTTtJQUNaLFVBQVUsRUFBRSxFQUFFO0lBQ2QsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDO0lBQ3hDLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsVUFBVSxFQUFFLEVBQUU7SUFDZCxVQUFVLEVBQUU7UUFDVixJQUFJLEVBQUU7WUFDSixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7U0FDeEc7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuXG5leHBvcnQgY29uc3QgQVhQQ29tbWVudFdpZGdldDogQVhQV2lkZ2V0Q29uZmlnID0ge1xuICBuYW1lOiAnY29tbWVudCcsXG4gIHRpdGxlOiAnQ29tbWVudHMnLFxuICBkZXNjcmlwdGlvbjogJ0Rpc3BsYXkgYW5kIG1hbmFnZSBjb21tZW50cyBmb3IgZW50aXRpZXMnLFxuICB0eXBlOiAndmlldycsXG4gIGNhdGVnb3JpZXM6IFtdLFxuICBncm91cHM6IFtBWFBXaWRnZXRHcm91cEVudW0uRm9ybUVsZW1lbnRdLFxuICBpY29uOiAnZmEtc29saWQgZmEtY29tbWVudHMnLFxuICBwcm9wZXJ0aWVzOiBbXSxcbiAgY29tcG9uZW50czoge1xuICAgIHZpZXc6IHtcbiAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2NvbW1lbnQtd2lkZ2V0LXZpZXcuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWE1Db21tZW50V2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=","import { AXConversationModule } from '@acorex/components/conversation';\nimport { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { DatePipe } from '@angular/common';\nimport { importProvidersFrom, NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { AXMRoomService } from './entities';\nimport { AXMMessageService, AXMMessageServiceImpl } from './entities/message/message.service';\nimport { AXMRoomServiceImpl } from './entities/room/room.service';\nimport { AXMConversationModuleEntityProvider } from './entity.provider';\nimport { AXMChatService, AXMChatServiceImpl, AXMCommentListViewComponent, AXMCommentService, AXMCommentServiceImpl, } from './features';\nimport * as i0 from \"@angular/core\";\nfunction routesFactory() {\n const routes = [\n {\n path: ':app/chat',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '',\n loadComponent: () => import('./features/chat/chat.component').then((c) => c.AXMChatComponent),\n data: { reuse: true },\n children: [\n {\n path: ':id',\n loadComponent: () => import('./features/chat/components/chat-preview/chat-preview.component').then((c) => c.AXMChatPreviewComponent),\n },\n ],\n },\n ],\n },\n {\n path: ':app/comments/m/:module/e/:id',\n component: AXMCommentListViewComponent,\n },\n ];\n return routes;\n}\nexport class AXMConversationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModule, exports: [\n // Modules\n RouterModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModule, providers: [\n // Services\n {\n provide: AXMMessageService,\n useClass: AXMMessageServiceImpl,\n },\n {\n provide: AXMRoomService,\n useClass: AXMRoomServiceImpl,\n },\n // Chat and Comment Services\n {\n provide: AXMChatService,\n useClass: AXMChatServiceImpl,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentServiceImpl,\n },\n // Entity Provider\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMConversationModuleEntityProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Menu Provider\n // {\n // provide: AXP_MENU_PROVIDER,\n // useClass: AXMConversationMenuProvider,\n // multi: true,\n // },\n // Conversation Module\n importProvidersFrom(AXConversationModule.forRoot()),\n DatePipe,\n ], imports: [\n // Modules\n RouterModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConversationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [],\n exports: [\n // Modules\n RouterModule,\n ],\n providers: [\n // Services\n {\n provide: AXMMessageService,\n useClass: AXMMessageServiceImpl,\n },\n {\n provide: AXMRoomService,\n useClass: AXMRoomServiceImpl,\n },\n // Chat and Comment Services\n {\n provide: AXMChatService,\n useClass: AXMChatServiceImpl,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentServiceImpl,\n },\n // Entity Provider\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMConversationModuleEntityProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Menu Provider\n // {\n // provide: AXP_MENU_PROVIDER,\n // useClass: AXMConversationMenuProvider,\n // multi: true,\n // },\n // Conversation Module\n importProvidersFrom(AXConversationModule.forRoot()),\n DatePipe,\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9jb252ZXJzYXRpb24vc3JjL2xpYi9jb252ZXJzYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUNMLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixxQkFBcUIsR0FDdEIsTUFBTSxZQUFZLENBQUM7O0FBRXBCLFNBQVMsYUFBYTtJQUNwQixNQUFNLE1BQU0sR0FBVztRQUNyQjtZQUNFLElBQUksRUFBRSxXQUFXO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLFlBQVksQ0FBQztZQUMzQixhQUFhLEVBQUUsR0FBRyxFQUFF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Q0FBZ0M7d0JBQ2hDLDJDQUEyQzt3QkFDM0MsaUJBQWlCO3dCQUNqQixLQUFLO3dCQUNMLHNCQUFzQjt3QkFDdEIsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ25ELFFBQVE7cUJBQ1Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbnZlcnNhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb252ZXJzYXRpb24nO1xuaW1wb3J0IHsgQVhQQXV0aEd1YXJkIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQUm9vdExheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW1wb3J0UHJvdmlkZXJzRnJvbSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhNUm9vbVNlcnZpY2UgfSBmcm9tICcuL2VudGl0aWVzJztcbmltcG9ydCB7IEFYTU1lc3NhZ2VTZXJ2aWNlLCBBWE1NZXNzYWdlU2VydmljZUltcGwgfSBmcm9tICcuL2VudGl0aWVzL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTVJvb21TZXJ2aWNlSW1wbCB9IGZyb20gJy4vZW50aXRpZXMvcm9vbS9yb29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNQ29udmVyc2F0aW9uTW9kdWxlRW50aXR5UHJvdmlkZXIgfSBmcm9tICcuL2VudGl0eS5wcm92aWRlcic7XG5pbXBvcnQge1xuICBBWE1DaGF0U2VydmljZSxcbiAgQVhNQ2hhdFNlcnZpY2VJbXBsLFxuICBBWE1Db21tZW50TGlzdFZpZXdDb21wb25lbnQsXG4gIEFYTUNvbW1lbnRTZXJ2aWNlLFxuICBBWE1Db21tZW50U2VydmljZUltcGwsXG59IGZyb20gJy4vZmVhdHVyZXMnO1xuXG5mdW5jdGlvbiByb3V0ZXNGYWN0b3J5KCk6IFJvdXRlcyB7XG4gIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICAgIHtcbiAgICAgIHBhdGg6ICc6YXBwL2NoYXQnLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gQVhQUm9vdExheW91dENvbXBvbmVudDtcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2ZlYXR1cmVzL2NoYXQvY2hhdC5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYTUNoYXRDb21wb25lbnQpLFxuICAgICAgICAgIGRhdGE6IHsgcmV1c2U6IHRydWUgfSxcbiAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYXRoOiAnOmlkJyxcbiAgICAgICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvY2hhdC9jb21wb25lbnRzL2NoYXQtcHJldmlldy9jaGF0LXByZXZpZXcuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgICAgIChjKSA9PiBjLkFYTUNoYXRQcmV2aWV3Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcGF0aDogJzphcHAvY29tbWVudHMvbS86bW9kdWxlL2UvOmlkJyxcbiAgICAgIGNvbXBvbmVudDogQVhNQ29tbWVudExpc3RWaWV3Q29tcG9uZW50LFxuICAgIH0sXG4gIF07XG4gIHJldHVybiByb3V0ZXM7XG59XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtdLFxuICBleHBvcnRzOiBbXG4gICAgLy8gTW9kdWxlc1xuICAgIFJvdXRlck1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gU2VydmljZXNcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWE1NZXNzYWdlU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBWE1NZXNzYWdlU2VydmljZUltcGwsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWE1Sb29tU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBWE1Sb29tU2VydmljZUltcGwsXG4gICAgfSxcbiAgICAvLyBDaGF0IGFuZCBDb21tZW50IFNlcnZpY2VzXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNQ2hhdFNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhNQ2hhdFNlcnZpY2VJbXBsLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNQ29tbWVudFNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhNQ29tbWVudFNlcnZpY2VJbXBsLFxuICAgIH0sXG4gICAgLy8gRW50aXR5IFByb3ZpZGVyXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1Db252ZXJzYXRpb25Nb2R1bGVFbnRpdHlQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogUk9VVEVTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VGYWN0b3J5OiByb3V0ZXNGYWN0b3J5LFxuICAgIH0sXG4gICAgLy8gTWVudSBQcm92aWRlclxuICAgIC8vIHtcbiAgICAvLyAgIHByb3ZpZGU6IEFYUF9NRU5VX1BST1ZJREVSLFxuICAgIC8vICAgdXNlQ2xhc3M6IEFYTUNvbnZlcnNhdGlvbk1lbnVQcm92aWRlcixcbiAgICAvLyAgIG11bHRpOiB0cnVlLFxuICAgIC8vIH0sXG4gICAgLy8gQ29udmVyc2F0aW9uIE1vZHVsZVxuICAgIGltcG9ydFByb3ZpZGVyc0Zyb20oQVhDb252ZXJzYXRpb25Nb2R1bGUuZm9yUm9vdCgpKSxcbiAgICBEYXRlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQ29udmVyc2F0aW9uTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2NvbnZlcnNhdGlvbi9zcmMvYWNvcmV4LW1vZHVsZXMtY29udmVyc2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i3","i2","i5","i4","i6","i7","i8","i9","i10","i11","i12","i14"],"mappings":"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"}
|